[
  {
    "path": ".gitignore",
    "content": "*~\n*.a\naclocal.m4\nautom4te.cache\nbuild/\ncompile\nconfig.guess\nconfig.h\nconfig.h.in\nconfig.log\nconfig.status\nconfig.sub\nconfigure\ncscope.*\ndepcomp\n.deps\ndoc/advancedusage.html\ndoc/configuration.html\ndoc/gettingstarted.html\ndoc/.*.html\ndoc/index.html\ndoc/instdoc\ndoc/instdoc.sh\ndoc/intro.html\ndoc/makedoc\ndoc/manual.aux\ndoc/manual.html\ndoc/manual.log\ndoc/manual.out\ndoc/manual.pdf\ndoc/manual.tex\ndoc/manual.txt\ndoc/manual.xml\ndoc/mimesupport.html\ndoc/miscellany.html\ndoc/mutt.1\ndoc/Muttrc\ndoc/muttrc.man\ndoc/optionalfeatures.html\ndoc/reference.html\ndoc/security.html\ndoc/smime_keys.1\ndoc/stamp-\ndoc/stamp-doc-chunked\ndoc/stamp-doc-xml\ndoc/tuning.html\nflea\n.gdb_history\n*.gmo\nhcachever.sh\nhcversion.h\ninstall-sh\nkeymap_defs.h\nMakefile\nMakefile.in\nmissing\nmutt\nmuttbug.sh\nmutt_dotlock\nmutt_dotlock.c\nmutt_md5\n*.o\n*.orig\npatchlist.c\npgpewrap\npgpring\npo/mutt.pot\npo/POTFILES\n*.rej\nreldate.h\n^.settings/\nsmime_keys\nstamp-doc-rc\nstamp-h1\n*.swp\nTAGS\nID\ntags\n.xcodeproj/*\nkeymap_alldefs.h\npo/mutt-kz.pot\ntxt2c\nconststrings.c\ndoc/pgpewrap.1\ndoc/pgpring.1\nmutt-kz-*.tar.*\n\n"
  },
  {
    "path": ".hgignore",
    "content": "# autoconf products\n^aclocal\\.m4$\n^autom4te\\.cache\n^compile$\n^(contrib/|doc/|imap/|m4/|po/)?Makefile\\.in$\n^config\\.h(\\.in~?)?$\n^config\\.(log|status)$\n^configure$\n^hcachever.sh$\n^muttbug\\.sh$\n^stamp-h1$\n^doc/Muttrc$\n^doc/instdoc\\.sh$\n^po/POTFILES$\n^config.guess$\n^config.sub$\n^depcomp$\n^install-sh$\n^missing$\n^mkinstalldirs$\n\n# built objects\n^flea$\n^hcversion\\.h$\n^keymap_(all)?defs\\.h$\n^doc/makedoc$\n^mutt$\n^mutt_dotlock(\\.c)?$\n^mutt_md5$\n^patchlist\\.c$\n^conststrings\\.c$\n^pgpewrap|pgpring$\n^reldate\\.h$\n^smime_keys$\n^txt2c$\n^stamp-doc-rc$\n^doc/instdoc$\n^doc/manual\\.(txt|xml|aux|log|out|tex|pdf)$\n^doc/mutt\\.1$\n^doc/muttrc\\.man$\n^doc/pgpewrap\\.1$\n^doc/pgpring\\.1$\n^doc/.*\\.html$\n^doc/stamp-\n^doc/smime_keys\\.1$\n^po/mutt\\.pot$\n\n# xcode droppings\n^build/\n\\.xcodeproj/\n\n# eclipse\n^\\.c?project$\n^\\.settings/\n\nsyntax: glob\n.deps\nMakefile\nGPATH\nGRTAGS\nGTAGS\nTAGS\ncscope.*\n*.swp\n*.o\n*.gmo\n*.orig\n*.rej\n*.a\n.gdb_history\n*~\n"
  },
  {
    "path": ".hgsigs",
    "content": "5ecc29447bbb79c9a5d665021746448cd7655e0d 0 iD8DBQBGFrOsIigsijWFMDIRAhJiAJ9q6xMm7T/y1Brh2bXGm6Rza4mIrgCg2fE+dUddKGoHSrnIF4nCLjHsk5k=\nbee166a61a5a9523531d7c3ca8c7f8d37ae0ca8d 0 iD8DBQBGa3gAIigsijWFMDIRAtSNAJ4sV9l/77Ao6wf5DcX4AfeH+gDyAQCgsyLb0kYyO8YjJ/rOLDrLLvhixbY=\nca8a3f81b413c31b159518e8cec2b49a649287de 0 iD8DBQBHKkDJIigsijWFMDIRAgHSAKCZmT+s2sadQHV5p7scKAFnTr4SdQCgyxvTICr5rjDL7nOJGdwl7I2kN4Y=\n133f3cc9250945091fd438363f47e73766c2e355 0 iEYEABECAAYFAkgvNE8ACgkQIigsijWFMDKHVwCg6D5jmG3YQNUCCRQtat59mL5R7N0AniUhTmfUWK+2ObKYRML38gXO6u76\na4b47ac32d32678c5c2d149d8770c97fbbf9aafb 0 iEYEABECAAYFAkliqKcACgkQIigsijWFMDK7ZgCglDuJdAIZ9o4alPTxbLnWJObXVcoAoLjNtqSLiK5hQ5zhciH/Q3kWjQZ7\nf399371bb9b0176c35adc9ca3b88ce1d0bc9667b 0 iEYEABECAAYFAko1TMMACgkQIigsijWFMDI7CQCfZm4chcPLu5RVgsNG1TWFVdoL8NMAoLCeGF/Lvct99CBZC9pIdJq7KDqL\n25a7f8f7d50dbd2f301417fcb1c9d1337a8268bd 0 iEYEABECAAYFAkyRAHwACgkQIigsijWFMDIWjQCg/pnBwlQFykA00IAaf6TX236jILEAnjRjPytge6U6aI2gX7jm6uNTV8WC\n8c5ea668e7e072cfd7161023553b68072545f2d1 0 iEYEABECAAYFAlJgzU8ACgkQIigsijWFMDIuigCfVBvMqZv1zgSknLjMdTLse7pIH5AAnRSGGzu58aQ7YoJU15bevmWA91/H\nb8a63730c8489a0dff577da8f1c8e31219a179e8 0 iQIcBAABAgAGBQJTII72AAoJEFHk0k89vdxov4gP/0nART9SNLs70qa1k+bNsMz5U+SFmqNwjnznmVgkF+tlXFav+zPsYOiS7XNVmk9YdJkogwfEuAerf2mIL7HoTkZ0fg77gvyzfOXPEYxBhu5I4YlNUjObLRarDwHMo5hAud67ZNxvd8QMnappGc1sicutXTkDDXCwE6cLDClSRSIOtKH8qfPOdhQxwhahbWji8xrTUjqi8PReLmDit8KGmcsrFnXgfBKsnMu9NinKujNDdjRqTOvBr9OSa79qnfiholPESpAP5u+g/vTCE12o3OPzyZhgpYhzLoFHL5NSMNM+6jaOhYlamVrYyDGb9G9nLnsWkejleoGgob1aXN5fTpUm2NYJMoTqCOYLk0lfE4UTbnZMBT3hKWvpNjjcIONsmofqMwQ3ObcWUZ2S/DahXwBuVU9Hl9ZiTu6y6xGAuaq7Qc+vDDmzmS7RVE+bPBG+mkHtjN92tD66fCmK8/kzrS9Y0/0mkOqkYdgP5EiTD/BwWpEit2abB2pifajVq3k6JytLBglXP4YGjPGVE0f7lOLJjJZSP1r7NqmSAp1VOcyhg8xe2WwZHbg0R7Gsi1uJFvX6r1lr3XZ867bOTgblVRZyOqMorGQ1lwXqHZCRxkQBjY8geTmZCJf+u5bMpKZBrg6mzwiS7VdjMn174LFhltqXfe8aAl1liVD9rY+Vox7Q\n08e81162482fb7b1680efa20b1740f693a8a35de 0 iQIcBAABCgAGBQJV4zztAAoJEK3vdoSAMWva7nMP/046RRvjWEVcIIJjWBejsB6gpOW0ZaHD54F8GGzQLQVN6F4RCuU24cPxyWB04vS0SrQAmANLQ8lGwYjtotztyTs4CnfsvRSEXUFBtyBj5u2ZUHlsA4s/UTPRiuUmen4Dx4nRzXs8XQowTaPdUnncHGxfYLaVznkcUGgVMPhh9RpN8LcJgu11ntYvSdoDWdblF4dGEINlQ7K0u7kqeFNd1EhP0llpAMyCzRvY/zBriYRZn1Jfhn/tuHb4AuiNB7FPEhloBlz3J8PWqqMHannfIVtQYhz6B4b5d6Kd/CJytoExiaEbZI710hEkwjYJVtvnQCRiz50Fu/C4rXHrkRF77Y7wYHBSyEZ0KXkAO9cNvB7Tmypfxyj/kupFFtMTDyaie4kNV+FZxtfSA4Jh99sItcyUEvs0OacogCwz558FDtCdoKyGJuhgn6xZ5O4PVGtPEWPy9G4txwGvOdaIbaal2e8kuBpP+803lKhP7Rlhn1rISSUEQUciqF+bALwEhyiH9b7IVEC2Z4qQBpJIO6jZMo+qVRBY/46FsZQLWF2naIg5tuyjRxkAO5w1aeZmns7rmFgKhsQmkIc4UQNcb7okEwEltm5DtMTJa7bMkdqJdBdCwEvWTMEkjdjY57V7lapwKIXijq8SW966upMhzdg3fwtETjWDLlz4E9xjHiJwqfKA\nbe82a2fde82fdd9057641e39e4df853d7ae4d4f2 0 iQIcBAABCgAGBQJXABWxAAoJEK3vdoSAMWvaM7IQAMFkG8/bpUY8X4tKaoFwLXNqqVh3BaHgsmx0pDpm753wR+kDkUFu8yw05Rp9fVRNIq2D5r49vvyHP64xSAmIbPaXa3nUWWIEXK8NFvf8NHxgmwNxcowtP9xHqkja3TZnzc8b9ZhyujWW/CEvnLjGsSWbJiCqFIVZjPXlf83wGpCeLHc3/xO1Yo1FKEnpKSfR53yfs+sRtlJCAoSSdCv0C97ylAVnU2UoiXBnuCOLE4lMnCSfM+bHjFxPPMmA4sP+pUfDW3RwVvxji8lmwlGghckBcucD76j/4LoGUNoXkNmy9+DOM19Qw1YzrkehejcC/Ycqcri4jGUItU/lyDL9ghWa2bXzZGjFYvXcaUoi/nXD95UyVwKoEz67zgaepdQENMupuC2V99k0v7kaWA0Gi/Knl+COvFghHfHj3B2mdbiCujBZ5Y7/LQLoDcMQVb2K+hSUIyel5fUIM2BvlPddSJHy2Dc9do1H40GGznb6usODYeh/Sk2o0Nucum0pFbvz3m60j9CV6BZVeHyk7HoEbAi9RhP6/3qRJGWrG3vEvKQmPTXrgqidszNx+arTxvozd1TxaHgSOP+7c7NyDZ3vZoHYy7CwN5j695+pNA27Wab+LvYbYQtEy8eIgVLFHGR1QOD5D1E7y5e1IOBZUS9Z5mbPCYtMsCkXbuaO32GRakpO\n"
  },
  {
    "path": ".hgtags",
    "content": "0063f043f11aba7b89d63808e6bc67bbb0051c4c mutt-1-1-4-rel\n0366855cb4ce645e8547eb371a635a84e2c453d7 mutt-1-3-25-rel\n08a17d4cdcbd3fb24bd2ebe83828008f325ae8d8 mutt-1-3-rel\n0cb4e2f662903f5ee2972596fb8ebcafe33e733d mutt-1-5-13-rel\n0e88fc30c91332187463ee85768805e454140c05 mutt-0-94-13-rel\n0e9b6a89555a5ee8bca9fa1f67091618597ec29c mutt-1-3-27-rel\n0f24cff519c8501727bc6010ad74556ee0efd198 mutt-1-5-7-rel\n0f707f13b76347df80d4d1adbf8dfbb1339dbced mutt-1-3-19-rel\n10ae194ea7325c563bc52d803502eff439d369ce mutt-1-3-15-rel\n135c43b8d6be6795f7218148e7c142d1b9288105 mutt-1-3-1-rel\n15f26edcfd19941bb88e62b034b9fb25f51bb3e7 mutt-1-3-2-rel\n178d20efae6a4df9fb12575d30a471c65f64d0d9 mutt-1-3-20-rel\n19732d3a1566d2faf5b354af86534cd131852b76 mutt-1-1-11-rel\n1b4bbd36bc50f6d482dc800866ed8b0c01b3e71d mutt-1-1-3-rel\n1ce6e68d8685ddd721b0698b9692bbad17b22889 mutt-1-1-1-2-rel\n232d922da63bcac37f998e8902c27718bdf42aa0 mutt-0-94-9i-rel\n23adf861cac46e447b56d34a744c13e7059aa129 mutt-1-3-22-1-rel\n23d559ebe55476cdcba916b762ad90fa81912b21 mutt-0-94-18-rel\n255a71b1c8a9ed099bdb4b0cf3c8b3a6551bdc80 mutt-1-5-8-rel\n2b1e65821a2e4b4d8219e0ff78e87c12fe589d6f mutt-0-94-9i-p1\n2b76fdbd3b6803a61cab9438751b9e7aef599370 mutt-1-3-10-rel\n30ce625d20ce34aeaac8774955eedd6bdf706fe7 mutt-1-5-1-rel\n376a352c9a21c9439c6dd183a6f2f32c0a8f32f2 mutt-1-3-11-rel\n3837061be530b4a6f11dfaa1d9a0f539bc9c1aed mutt-1-5-5-rel\n3a4ef6600c0afc731e87caeb45ca1d8ef068e96d mutt-0-94-10i-rel\n3bef047dbad46fff9ef6abf17dad2decae2bf53f mutt-0-96-7-rel\n3d107f9ee4cb8a8d9bbfaba86ccbb0e53c1dffb6 mutt-0-96-8-rel\n412f762bc7b8dbce9daa80d544115ffb07cc6f29 mutt-1-3-5-rel\n41a18a584dce7c7884da210a277527fb67278093 mutt-1-3-3-rel\n42564cca29c857148c7658531eabcd8bc3bedaae mutt-0-96-2-slightly-post-release\n42b65d47a6e204f3fb83a9ff57375a3ad2150627 mutt-1-3-23-1-rel\n4d0fb523422de134302bcac198a08ecbd8643a9b mutt-1-5-9-rel\n4e510c27c6a70589dfe9eacabb3c447ea631d837 mutt-1-3-14-rel\n512d53e287cf5fb305f0505e5adaaba1d131d12e mutt-1-3-23-rel\n526b2eeec601de50702a882e0893be50b9eb7307 mutt-1-3-21-rel\n52f9e92eb4a467024c8f462852037ab2f0280672 mutt-1-1-9-rel\n553abc0b5e26ff58fe7130676382ed6da861f61d mutt-1-5-11-rel\n559940f0b3d09d49803f654df317f2abaa74310e mutt-1-1-8-rel\n5a932e25364f4ef011e0b853916b0b357c77f19c mutt-1-1-1-1-rel\n5b22bc9a8a42f6431189f6cda5292f5a9eb726b7 mutt-1-1-rel\n5e1d3e482d95b0312ec42efb24b4378cd5e12d00 mutt-0-92-10i\n5e807fff2594f1b158534d71bbc0b27f8f864046 mutt-0-96-3-rel\n61276da736e2ed1ec31179b0572278be0c341620 mutt-0-94-16i-rel\n63f2be9404d6525b8ae23285ad0a0b7a3a748fef mutt-1-5-12-rel\n68579cbc7ed88cfafd9a2d6dac5ab3a603f41dce mutt-0-94-7i-rel\n6942ab68847a59051565dcab63d7a09900aeb6cd mutt-0-94-6i-rel\n699400638f26483ab1c3579c1b237623a58bedc9 mutt-1-3-8-rel\n6dbb1acec0cd8be743af82af5809e3df07a4d5f2 mutt-1-3-26-rel\n735e30fb79fcbb7fa4e68b86901b7a99523a4375 mutt-1-1-6-rel\n7cac3901adf75c84e3327108777164d6a40d43ea mutt-1-3-16-rel\n7d765ac7e43412bc71e8f7cb8481a87b80c3e623 mutt-1-3-6-rel\n7eba110382a2571b8ce0fee872e47a861aadfbc9 mutt-1-5-4-rel\n7f9c706e7ce30b93019a7dbcef2d21ceab61a385 mutt-1-1-14-rel\n80cf2a37f4165a48c4b2cb0d5aad6306beb4a90f mutt-1-5-10-rel\n83c2dc9cd313db1cd7e12477f5b9bcf2d78bffa4 mutt-1-1-5-rel\n85f1ca7436ce7379c42280678ecc9620d2c5ab24 mutt-0-94-8i-rel\n87f8bb39638a08795a1e43b69375abcb28d43b94 mutt-1-3-23-2-rel\n886d18caed45ebfb9ad62db9725f84db3b07c0ae mutt-1-1-13-rel\n8a011a27b0043ab1a825a7cfbfe1eebac89afa76 mutt-1-3-17-rel\n8c1927ba5f289bad1a4043234a1bcef82d2d0f38 mutt-0-92-9i\n8e42575552e3ed1bfc67a52a9f10c90529c99a85 mutt-1-1-10-rel\n96edded07c4641899ff69cc62e46bc8e5ab8b13b mutt-0-94-14-rel\n995102535833f5912fb0c9d3858cd048c666c43d mutt-1-5-14-rel\n9a8b4255f458d2af4f665d0d64781c6cb2d0681d mutt-1-3-24-rel\na684efc6d536467eb7ba33e6268de798f1223131 mutt-0-96-rel\nab1f203d271069af6e4774728c728185518fb31d mutt-1-1-7-rel\nac336c06ca452931a24d98a654a486dbf4cc1af2 pre-type-punning-patch\nad283a95bec4f80f0bc61001eac6123a036683f7 mutt-1-1-1-rel\nb63bc0436b20c5620e2c6c987e2c04e92df2704a mutt-1-5-3-rel\nb672da4797c198a4984a094e4eebd72fead1ca99 mutt-1-1-2-rel\nb8c1fed48659a6cc448e53d6d0fbff55ef420cc7 mutt-1-1-12-rel\nbc468641da8db476cff61735cf3ff1162d875c65 mutt-0-92-11i\nbd885c27161a41e57dad92d78eaea71c16bfa97d post-type-punning-patch\nc0b703bc239548ba27819486f67bf26c5be5255d mutt-1-5-5-1-rel\nc33914e03fb3639902ee76d8a2ccf70c3987437e mutt-1-5-6-rel\nc53fa2f08a9d182f5017674acfcbce0f9118e031 mutt-1-3-12-rel\nc664b1ec55f11e304f389f7c95715764e95a11ad mutt-1-3-9-rel\ncc5ad5889f910f032d0bfbfe25f353d5215d04a1 mutt-0-96-6-rel\nce7b07242251c761743495eb0ac0556ff6422676 mutt-0-94-17i-rel\nd08fade289715dbb1b87b4505340d49485b25e8b mutt-1-3-4-rel\nd771b5f2e030654157a8bcbd280cf71aa4f6bec2 mutt-0-93-unstable\nd8c3cd0d1fcd2155bb100f9d97d2b52fa1fb7bed mutt-0-96-1-rel\nd8ea531a046abb33fe0a838f950b6103db11830f mutt-0-94-5i-rel\ndab525e08e137b6f82b66747d63ae40c4af72dc4 mutt-1-3-7-rel\ndb2f73a42a8b57e3b4db93a452c7641477e6e270 mutt-0-94-15-rel\ndd09c1f43b4500d761cfdc048a7ada820b1674cc mutt-1-3-13-rel\ne2831ecde740d3812ed02ed35b1e5bd939d6898a mutt-0-96-5-rel\ne9693de14eadb39bcc9e4f3c39a4cfa93c57996b mutt-0-96-4-rel\necdf72ecedea71eb345b501af1b4f860d1bf5e24 mutt-0-95-rel\nf059fe2b44f3e355e855eb22a647ea3c47849e8e mutt-1-3-22-rel\nf7de2cde03d3881f1850adc062b5353f0275a118 mutt-1-3-18-rel\nf9953cbe632630f409f92f8a8d27a916c39af6a9 mutt-1-5-2-rel\n4fd2d768fe5cfc83d97b04f938a65ceadbdceba9 mutt-1-5-15-rel\naaf805734d242992724d5d87e9de9e7f10a4fa85 mutt-1-5-16-rel\ncd03dff9b5764b22831df1a1468b0cba227b912c mutt-1-5-17-rel\nff9e4d0464b1181f0ba5495d7de56fcf5c911d41 mutt-1-5-18-rel\na4b47ac32d32678c5c2d149d8770c97fbbf9aafb mutt-1-5-19-rel\nf399371bb9b0176c35adc9ca3b88ce1d0bc9667b mutt-1-5-20-rel\n25a7f8f7d50dbd2f301417fcb1c9d1337a8268bd mutt-1-5-21-rel\n8c5ea668e7e072cfd7161023553b68072545f2d1 mutt-1-5-22-rel\nb8a63730c8489a0dff577da8f1c8e31219a179e8 mutt-1-5-23-rel\n08e81162482fb7b1680efa20b1740f693a8a35de mutt-1-5-24-rel\nbe82a2fde82fdd9057641e39e4df853d7ae4d4f2 mutt-1-6-rel\n"
  },
  {
    "path": "ABOUT-NLS",
    "content": "Notes on the Free Translation Project\n*************************************\n\n   Free software is going international!  The Free Translation Project\nis a way to get maintainers of free software, translators, and users all\ntogether, so that will gradually become able to speak many languages.\nA few packages already provide translations for their messages.\n\n   If you found this `ABOUT-NLS' file inside a distribution, you may\nassume that the distributed package does use GNU `gettext' internally,\nitself available at your nearest GNU archive site.  But you do _not_\nneed to install GNU `gettext' prior to configuring, installing or using\nthis package with messages translated.\n\n   Installers will find here some useful hints.  These notes also\nexplain how users should proceed for getting the programs to use the\navailable translations.  They tell how people wanting to contribute and\nwork at translations should contact the appropriate team.\n\n   When reporting bugs in the `intl/' directory or bugs which may be\nrelated to internationalization, you should tell about the version of\n`gettext' which is used.  The information can be found in the\n`intl/VERSION' file, in internationalized packages.\n\nQuick configuration advice\n==========================\n\n   If you want to exploit the full power of internationalization, you\nshould configure it using\n\n     ./configure --with-included-gettext\n\nto force usage of internationalizing routines provided within this\npackage, despite the existence of internationalizing capabilities in the\noperating system where this package is being installed.  So far, only\nthe `gettext' implementation in the GNU C library version 2 provides as\nmany features (such as locale alias, message inheritance, automatic\ncharset conversion or plural form handling) as the implementation here.\nIt is also not possible to offer this additional functionality on top\nof a `catgets' implementation.  Future versions of GNU `gettext' will\nvery likely convey even more functionality.  So it might be a good idea\nto change to GNU `gettext' as soon as possible.\n\n   So you need _not_ provide this option if you are using GNU libc 2 or\nyou have installed a recent copy of the GNU gettext package with the\nincluded `libintl'.\n\nINSTALL Matters\n===============\n\n   Some packages are \"localizable\" when properly installed; the\nprograms they contain can be made to speak your own native language.\nMost such packages use GNU `gettext'.  Other packages have their own\nways to internationalization, predating GNU `gettext'.\n\n   By default, this package will be installed to allow translation of\nmessages.  It will automatically detect whether the system already\nprovides the GNU `gettext' functions.  If not, the GNU `gettext' own\nlibrary will be used.  This library is wholly contained within this\npackage, usually in the `intl/' subdirectory, so prior installation of\nthe GNU `gettext' package is _not_ required.  Installers may use\nspecial options at configuration time for changing the default\nbehaviour.  The commands:\n\n     ./configure --with-included-gettext\n     ./configure --disable-nls\n\nwill respectively bypass any pre-existing `gettext' to use the\ninternationalizing routines provided within this package, or else,\n_totally_ disable translation of messages.\n\n   When you already have GNU `gettext' installed on your system and run\nconfigure without an option for your new package, `configure' will\nprobably detect the previously built and installed `libintl.a' file and\nwill decide to use this.  This might be not what is desirable.  You\nshould use the more recent version of the GNU `gettext' library.  I.e.\nif the file `intl/VERSION' shows that the library which comes with this\npackage is more recent, you should use\n\n     ./configure --with-included-gettext\n\nto prevent auto-detection.\n\n   The configuration process will not test for the `catgets' function\nand therefore it will not be used.  The reason is that even an\nemulation of `gettext' on top of `catgets' could not provide all the\nextensions of the GNU `gettext' library.\n\n   Internationalized packages have usually many `po/LL.po' files, where\nLL gives an ISO 639 two-letter code identifying the language.  Unless\ntranslations have been forbidden at `configure' time by using the\n`--disable-nls' switch, all available translations are installed\ntogether with the package.  However, the environment variable `LINGUAS'\nmay be set, prior to configuration, to limit the installed set.\n`LINGUAS' should then contain a space separated list of two-letter\ncodes, stating which languages are allowed.\n\nUsing This Package\n==================\n\n   As a user, if your language has been installed for this package, you\nonly have to set the `LANG' environment variable to the appropriate\n`LL_CC' combination.  Here `LL' is an ISO 639 two-letter language code,\nand `CC' is an ISO 3166 two-letter country code.  For example, let's\nsuppose that you speak German and live in Germany.  At the shell\nprompt, merely execute `setenv LANG de_DE' (in `csh'),\n`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').\nThis can be done from your `.login' or `.profile' file, once and for\nall.\n\n   You might think that the country code specification is redundant.\nBut in fact, some languages have dialects in different countries.  For\nexample, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The\ncountry code serves to distinguish the dialects.\n\n   Not all programs have translations for all languages.  By default, an\nEnglish message is shown in place of a nonexistent translation.  If you\nunderstand other languages, you can set up a priority list of languages.\nThis is done through a different environment variable, called\n`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'\nfor the purpose of message handling, but you still need to have `LANG'\nset to the primary language; this is required by other parts of the\nsystem libraries.  For example, some Swedish users who would rather\nread translations in German than English for when Swedish is not\navailable, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.\n\n   In the `LANGUAGE' environment variable, but not in the `LANG'\nenvironment variable, `LL_CC' combinations can be abbreviated as `LL'\nto denote the language's main dialect.  For example, `de' is equivalent\nto `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'\n(Portuguese as spoken in Portugal) in this context.\n\nTranslating Teams\n=================\n\n   For the Free Translation Project to be a success, we need interested\npeople who like their own language and write it well, and who are also\nable to synergize with other translators speaking the same language.\nEach translation team has its own mailing list.  The up-to-date list of\nteams can be found at the Free Translation Project's homepage,\n`http://www.iro.umontreal.ca/contrib/po/HTML/', in the \"National teams\"\narea.\n\n   If you'd like to volunteer to _work_ at translating messages, you\nshould become a member of the translating team for your own language.\nThe subscribing address is _not_ the same as the list itself, it has\n`-request' appended.  For example, speakers of Swedish can send a\nmessage to `sv-request@li.org', having this message body:\n\n     subscribe\n\n   Keep in mind that team members are expected to participate\n_actively_ in translations, or at solving translational difficulties,\nrather than merely lurking around.  If your team does not exist yet and\nyou want to start one, or if you are unsure about what to do or how to\nget started, please write to `translation@iro.umontreal.ca' to reach the\ncoordinator for all translator teams.\n\n   The English team is special.  It works at improving and uniformizing\nthe terminology in use.  Proven linguistic skill are praised more than\nprogramming skill, here.\n\nAvailable Packages\n==================\n\n   Languages are not equally supported in all packages.  The following\nmatrix shows the current state of internationalization, as of September\n2001.  The matrix shows, in regard of each package, for which languages\nPO files have been submitted to translation coordination, with a\ntranslation percentage of at least 50%.\n\n     Ready PO files    bg cs da de el en eo es et fi fr gl he hr id it ja\n                     +----------------------------------------------------+\n     a2ps            |          []             []    []                   |\n     bash            |          []       [] []       []                   |\n     bfd             |                                                    |\n     binutils        |                               []                   |\n     bison           |          []          [] []    []                [] |\n     clisp           |          []    []    []       []                   |\n     cpio            |       [] []          []       [] []                |\n     diffutils       |       [] []       [] []       [] []       []       |\n     enscript        |          []                   []                   |\n     error           |                      []       []                   |\n     fetchmail       |                                                    |\n     fileutils       |    [] [] [] []       []       [] []             [] |\n     findutils       |       [] []          [] []    [] []       [] []    |\n     flex            |       []             []       []                   |\n     freetype        |                                                    |\n     gas             |                                                    |\n     gawk            |                               []    []             |\n     gcal            |                                                    |\n     gcc             |                                                    |\n     gettext         |    [] [] [] []       []       [] []       [] [] [] |\n     gnupg           |          []       []    []    [] []          [] [] |\n     gprof           |                                                    |\n     grep            |    []    []       [] [] []    [] []          []    |\n     hello           |       [] [] []    [] [] [] [] [] []          [] [] |\n     id-utils        |       [] []                   []                   |\n     indent          |       [] []             []    [] []                |\n     jpilot          |                               []                   |\n     kbd             |                                                    |\n     ld              |                               []                   |\n     libc            |    [] [] [] []       []       [] []             [] |\n     lilypond        |                                                 [] |\n     lynx            |    [] [] []                                     [] |\n     m4              |    [] [] [] []                [] []       []    [] |\n     make            |       [] []          []       [] []             [] |\n     mysecretdiary   |          []                                        |\n     nano            |                      []          []       []       |\n     opcodes         |                                                    |\n     parted          |          []                      []             [] |\n     ptx             |       [] []          [] []    [] []       []       |\n     python          |                                                    |\n     recode          |       [] [] []    [] []       [] [] []       []    |\n     sed             |    [] [] [] []    []    []    [] [] []    [] [] [] |\n     sh-utils        |    [] [] [] []       [] []    [] []          [] [] |\n     sharutils       |    [] [] [] []       []       [] []             [] |\n     sketch          |                                                    |\n     soundtracker    |          []          []          []                |\n     sp              |                                                    |\n     tar             |    [] [] []          [] []    []             [] [] |\n     texinfo         |    [] [] []       []          []                [] |\n     textutils       |    [] [] [] []       []       [] []             [] |\n     util-linux      |    [] []                                           |\n     wdiff           |       [] []             []                         |\n     wget            |    [] [] [] []       [] []    [] [] []          [] |\n                     +----------------------------------------------------+\n                       bg cs da de el en eo es et fi fr gl he hr id it ja\n                        0 14 24 32 11  1  8 23 13  1 33 22  4  0  7  9 18\n     \n                       ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh\n                     +----------------------------------------------------+\n     a2ps            |          []                   []    []             |  6\n     bash            |                                                    |  4\n     bfd             |                                                    |  0\n     binutils        |                                                    |  1\n     bison           |                               []                   |  6\n     clisp           |          []                                        |  5\n     cpio            | []       []       []     []   []                   | 10\n     diffutils       |                   []          []       [] []       | 11\n     enscript        |          []              []   []                   |  5\n     error           |                                  []       []       |  4\n     fetchmail       |                                                    |  0\n     fileutils       | []       []       []     []   [] [] [] [] []       | 17\n     findutils       | []       []       []     []   []    [] [] []       | 16\n     flex            | []                            []       []          |  6\n     freetype        |                                                    |  0\n     gas             |                                                    |  0\n     gawk            |                                           []       |  3\n     gcal            |                                                    |  0\n     gcc             |                                                    |  0\n     gettext         | []                []     []   []    [] [] []    [] | 18\n     gnupg           |                   []                   [] []       | 10\n     gprof           |                                                    |  0\n     grep            |                   []                [] [] []       | 12\n     hello           | [] [] [] []    [] []          [] []    [] [] []    | 22\n     id-utils        |          []                   []       []          |  6\n     indent          | []       []       []          [] []    [] []       | 12\n     jpilot          |                                                    |  1\n     kbd             |                                           []       |  1\n     ld              |                                                    |  1\n     libc            | []    []       [] []     []      []    [] []       | 16\n     lilypond        |          []                            []          |  3\n     lynx            |          []              []   []       []          |  8\n     m4              |          []       []          []       []          | 12\n     make            | []       []       []     []   []          []       | 12\n     mysecretdiary   |                                                    |  1\n     nano            |                                        []          |  4\n     opcodes         |                                           []       |  1\n     parted          |          []                   []                   |  5\n     ptx             |       [] []    [] [] []       []       [] []       | 15\n     python          |                                                    |  0\n     recode          |                   []          []    [] []          | 13\n     sed             |          []              []   [] [] [] [] []       | 19\n     sh-utils        |       [] []    [] []     []   [] [] [] [] []    [] | 21\n     sharutils       |          []                   []       []          | 11\n     sketch          |                                                    |  0\n     soundtracker    |                                                    |  3\n     sp              |                                                    |  0\n     tar             |       []       [] []     []         [] [] []       | 15\n     texinfo         |                               []                   |  7\n     textutils       |       [] []    [] []     []   [] [] []             | 16\n     util-linux      |                          []               []       |  4\n     wdiff           |                               [] []    [] []       |  7\n     wget            |          []                   [] [] [] [] [] []    | 17\n                     +----------------------------------------------------+\n       33 teams        ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh\n       53 domains       9  1  6 20  0  6 17  1  13   25 10 11 23 21  2  2  387\n\n   Some counters in the preceding matrix are higher than the number of\nvisible blocks let us expect.  This is because a few extra PO files are\nused for implementing regional variants of languages, or language\ndialects.\n\n   For a PO file in the matrix above to be effective, the package to\nwhich it applies should also have been internationalized and\ndistributed as such by its maintainer.  There might be an observable\nlag between the mere existence a PO file and its wide availability in a\ndistribution.\n\n   If September 2001 seems to be old, you may fetch a more recent copy\nof this `ABOUT-NLS' file on most GNU archive sites.  The most\nup-to-date matrix with full percentage details can be found at\n`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.\n\nUsing `gettext' in new packages\n===============================\n\n   If you are writing a freely available program and want to\ninternationalize it you are welcome to use GNU `gettext' in your\npackage.  Of course you have to respect the GNU Library General Public\nLicense which covers the use of the GNU `gettext' library.  This means\nin particular that even non-free programs can use `libintl' as a shared\nlibrary, whereas only free software can use `libintl' as a static\nlibrary or use modified versions of `libintl'.\n\n   Once the sources are changed appropriately and the setup can handle\nto use of `gettext' the only thing missing are the translations.  The\nFree Translation Project is also available for packages which are not\ndeveloped inside the GNU project.  Therefore the information given above\napplies also for every other Free Software Project.  Contact\n`translation@iro.umontreal.ca' to make the `.pot' files available to\nthe translation teams.\n\n"
  },
  {
    "path": "BEWARE",
    "content": "MUTT HACKERS BEWARE\n\nA word of warning about string comparisons: Since mutt may run in a\nhuge variety of locales, case-insensitive string comparisons and\ncase conversions may be dangerous.  For instance, in iso-8859-9,\ntolower('I') is DIFFERENT from 'i' - it's indeed the Turkish dotless\nlowercase i.\n\nFor this reason, always use the ascii_* functions defined in ascii.h\nand implemented in ascii.c when comparing or handling strings which\nare defined as us-ascii.  This concerns lots of text-based\nprotocols, message header tags, character set names, domain names,\ne-mail addresses, etc.\n\nThu Apr 26 15:40:11 CEST 2001, <roessler@does-not-exist.org>\n"
  },
  {
    "path": "COPYRIGHT",
    "content": "The following copyright notices apply to most of the program.  Some\nmodules are under different licenses, or in the public domain.\n\nPlease note that this is by no means an exhaustive list of all the\npersons who have been contributing to this program.  Please see the\nmanual for a (probably still non complete) list of the persons who\nhave been helpful with the development of this program.  Please also\nsee our source code repository at http://dev.mutt.org/hg/mutt/ for\nthe full history of commits.\n\nCopyright (C) 1996-2014 Michael R. Elkins <me@cs.hmc.edu>\nCopyright (C) 1996-2002 Brandon Long <blong@fiction.net>\nCopyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\nCopyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\nCopyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\nCopyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\nCopyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\nCopyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\nCopyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program; if not, write to the Free Software\n    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n\n"
  },
  {
    "path": "ChangeLog",
    "content": "2016-04-01 09:38 -0700  Kevin McCarthy  <kevin@8t8.us>  (503bd3a3c818)\n\n\t* Makefile.am: Fix hcversion.h generation error when using included\n\tgettext.\n\n\tWhen configuring mutt with --enable-hcache and\n\t--with-included-gettext, there is an automake ordering issue:\n\tBUILT_SOURCES are processed before SUBDIRS. Therefore, the\n\t'hcversion.h' target is run before the included gettext (intl) is\n\tbuilt.\n\n\tThe hcversion.h target runs the cpp over config.h and mutt.h, but\n\tmutt.h includes lib.h which tries to #include <libintl.h>.\n\tUnfortunately, libintl.h (in this configuration) is generated by the\n\tintl subdir build and so doesn't exist yet.\n\n\tWhile the build doesn't completely fail, the resulting hcversion.h\n\tis incorrect: it's just the md5sum of the initial value of\n\tBASEVERSION.\n\n\tThis fix is somewhat of a hack but is cleaner than trying to change\n\tautomake's behavior. It inserts a '#undef ENABLE_NLS' in between the\n\tconfig.h and mutt.h sent to the cpp. Since hcachever.sh is just\n\tscanning the data structures used by mutt, this shouldn't affect the\n\thash generated.\n\n\tThanks to Will Yardley for reporting this issue.\n\n2016-03-30 13:16 -0700  Kevin McCarthy  <kevin@8t8.us>  (6e0aca94cdb0)\n\n\t* mbyte.c: Filter out bidi marks in rfc2047 and rfc2231 encoding. (see\n\t#3827)\n\n\tFilter out U+200F RIGHT-TO-LEFT MARK and U+200E LEFT-TO-RIGHT MARK\n\tin rfc2047 and 2231 encoded fields. GNU Screen has a bug that\n\tcorrupts the display, and can cause the wrong email to appear to be\n\tselected in the index. Until screen fixes the issue, filter it out\n\tin mutt.\n\n2016-03-29 14:07 -0700  Kevin McCarthy  <kevin@8t8.us>  (96b7714fef87)\n\n\t* doc/manual.xml.head: Fix documentation: mime_lookup (not mime-\n\tlookup).\n\n2016-03-29 15:06 +0200  Vincent Lefevre  <vincent@vinc17.net>  (47aeb87ce9cd)\n\n\t* doc/manual.xml.head: Fix typo.\n\n2016-03-26 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (62e478a3f1c8)\n\n\t* imap/imap.c: Fix error handling in sync_helper() and\n\timap_sync_mailbox(). (closes #3817)\n\n\tThis patch is based on the one Richard Russon found in the Fedora\n\tpackage.\n\n\tIf an error occurs during one of the imap_exec() calls in\n\timap_sync_mailbox(), the mailbox could end up being closed. This\n\twould cause idata->ctx to be NULL. Add a check in sync_helper() for\n\tthe case where idata->ctx == NULL.\n\n\tIn imap_sync_mailbox(), check the return value of sync_helper(). To\n\tkeep the code simple, change rc from being the sum of the calls to\n\tthe bitwise-OR of the calls. (We only need to know if a single flag\n\tneeds to be updated, and bitwise-OR will detect negatives.)\n\n\tBelow the calls to sync_helper(), if the call to imap_exec() fails,\n\tmake sure rc is set to -1.\n\n2016-03-26 13:30 -0700  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (0b1f1daba437)\n\n\t* po/ja.po: Updated Japanese translation.\n\n2016-03-24 12:07 -0700  Benno Schulenberg  <i18n@benno.vertaalt.nl>  (484b34e23f2a)\n\n\t* po/eo.po: Updated Esperanto translation.\n\n2016-03-23 15:28 -0700  Kevin McCarthy  <kevin@8t8.us>  (55a389b96d0b)\n\n\t* imap/browse.c: Prevent renaming root folder in imap.\n\n\tThe root folder results in mx.mbox being NULL, which causes a\n\tsegfault. This can be triggered by entering a subfolder and trying\n\tto rename the \"..\" entry.\n\n\tDue to the translation string freeze, no visible error message is\n\tdisplayed. Add a TODO note about this for post-1.6 release.\n\n2016-03-23 14:20 -0700  Kevin McCarthy  <kevin@8t8.us>  (27cde0a2fe32)\n\n\t* imap/browse.c: Fix uninitialized prompt buffer in\n\timap_mailbox_rename(). (closes #3819)\n\n\tThis is a patch from OpenBSD to initialize the newname buffer in\n\timap_mailbox_rename(). Previously it would generate random garbage\n\tin the prompt.\n\n\tThis version of the patch initializes the prompt to the old mailbox\n\tname.\n\n\tThanks to TAKAHASHI Tamotsu for finding this patch.\n\n2016-03-23 13:17 -0700  Kevin McCarthy  <kevin@8t8.us>  (789500dae762)\n\n\t* doc/manual.xml.head: Add \"-d\" command-line option to manual. (closes\n\t#3816)\n\n\tThanks to Richard Russon for finding this patch in the Fedora\n\tpackage.\n\n2016-03-23 13:06 -0700  Ivan Vilata i Balaguer  <ivan@selidor.net>  (180380cd9119)\n\n\t* po/ca.po: Updated Catalan translation.\n\n2016-03-22 18:00 -0700  Kevin McCarthy  <kevin@8t8.us>  (a3450fd50d11)\n\n\t* curs_lib.c, protos.h: Clean up mutt_wstr_trunc() some more.\n\n\t* Change return type to size_t. The return value is the cumulation\n\tof values from mbrtowc(), which returns size_t. All callers already\n\tassign the return value to a size_t, requiring no external changes.\n\n\t* Change the local variables n, w, l, and cl to size_t. n is the\n\tstrlen of the src parameter. l and cl are used for the return value.\n\tw is assigned to the *width parameter, which is size_t.\n\n\t cw is kept as an int, because wcwidth returns type int.\n\n\t* Change error handling of mbrtowc to be the same as other functions\n\tin mutt: only reset mbstate when the retval==-1. When retvat==-2,\n\tset cl=n to break out of the loop. Also, set wc to replacement_char\n\tand allow the logic below to determine the width instead of\n\thardcoding to 1.\n\n2016-03-20 17:06 -0700  Karel Zak  <kzak@redhat.com>  (c8c76a6a1e61)\n\n\t* curs_lib.c: Improve error handling in mutt_wstr_trunc().\n\n\tThis is Karel Zak's patch to fix handling of (illegal) multi-byte\n\tchars.\n\n\t * mutt_wstr_trunc(): Reset mbstate after error in mbrtowc(). Set\n\twc=0 if wcwidth returns < 0.\n\n\tAddresses: https://github.com/karelzak/mutt-kz/issues/58\n\n\tThanks to Richard Russon for bringing this patch to our attention.\n\n2016-03-22 12:35 -0700  Benno Schulenberg  <i18n@benno.vertaalt.nl>  (b302f9868d78)\n\n\t* po/nl.po: Updated Dutch translation.\n\n2016-03-21 01:31 +0100  Vincent Lefevre  <vincent@vinc17.net>  (b3703e907d83)\n\n\t* po/fr.po: Updated French translation.\n\n2016-03-20 15:38 -0700  Vsevolod Volkov  <vvv@mutt.org.ua>  (2a73a6e7c6e7)\n\n\t* po/ru.po: Updated Russian translation.\n\n2016-03-20 15:36 -0700  Vsevolod Volkov  <vvv@mutt.org.ua>  (b3504a7b6cc2)\n\n\t* po/uk.po: Updated Ukrainian translation.\n\n2016-03-20 15:30 -0700  Morten Bo Johansen  <mbj@spamcop.net>  (1f8e728ac6af)\n\n\t* po/da.po: Updated Danish translation.\n\n2016-03-19 17:25 -0700  Kevin McCarthy  <kevin@8t8.us>  (7992020e522d)\n\n\t* sendlib.c: Turn off asserts in sendlib.c.\n\n\tThe Doctor reported triggering an assertion in convert_file_to(),\n\tdue to an unexpected errno from iconv(). According to the comments,\n\tthe assertions were only enabled for debugging and should have been\n\tturned off. We certainly don't want to abort mutt for this case, so\n\tjust disable them as the comment indicates.\n\n2016-03-19 16:19 -0700  Petr Pisar  <petr.pisar@atlas.cz>  (36bf3b7ebd2c)\n\n\t* po/cs.po: Updated Czech translation.\n\n2016-03-19 06:08 -0700  Kevin McCarthy  <kevin@8t8.us>  (36f855a4a2cc)\n\n\t* crypt-gpgme.c, init.c, mutt_ssl.c, pgp.c: Fix a few typos in\n\ttranslation messages.\n\n\tThanks to Moritz Barsnick for reporting these.\n\n2016-03-18 12:12 +0100  Vincent Lefevre  <vincent@vinc17.net>  (fb13f458ad16)\n\n\t* po/fr.po: Updated French translation.\n\n2016-03-18 10:15 +0100  Vincent Lefevre  <vincent@vinc17.net>  (6630c196ecd8)\n\n\t* mutt_ssl.c: Fix typo in debug message.\n\n2016-03-17 17:33 -0700  Richard Russon  <rich@flatcap.org>  (cbf073e5e0d7)\n\n\t* recvattach.c: Fix typo picked up by Debian's QA.\n\n\tThis was allegedly fixed 5 years ago (see #3493).\n\n2016-03-17 17:22 -0700  Richard Russon  <rich@flatcap.org>  (1fb2a924a7c0)\n\n\t* Makefile.am: Use '$(PACKAGE).pot' instead of 'mutt.pot' in\n\tMakefile.am\n\n2016-03-17 17:12 -0700  Richard Russon  <rich@flatcap.org>  (80926cec6d41)\n\n\t* hcache.c, imap/auth_gss.c: Fix three build warnings when DEBUG isn't\n\tdefined.\n\n2016-03-16 14:15 -0700  Kevin McCarthy  <kevin@8t8.us>  (cc1af19c0763)\n\n\t* hcache.c: Fix tcbdb error reporting to use ecode, not errno.\n\n\tAfter committing aff8d62ebddb and taking a closer look at the tcbdb\n\tdocumentation, I realized those functions don't set errno.\n\n\tChange the error handling messages to instead get the ecode and\n\tmessage using tcbdbecode() and tcbdberrmsg().\n\n2016-03-16 13:33 -0700  Kevin McCarthy  <kevin@8t8.us>  (aff8d62ebddb)\n\n\t* hcache.c: Fix crash in hcache_open_tc() when open fails and debug is\n\ton. (closes #3813)\n\n\tWhen the hcache open fails, it was trying to dprint. The dprint had\n\ta %s where it was passing errno, leading to a crash in strlen.\n\n\tUnify the dprint messages for tcdbopen and tcdbclose to report the\n\tpath, strerror, and errno.\n\n\tThanks to Will Yardley for capturing the stack trace!\n\n2016-03-15 18:04 -0700  Kevin McCarthy  <kevin@8t8.us>  (29b254ac7c12)\n\n\t* mbox.c: Prevent ctx->fp from being closed twice in the event of an\n\terror.\n\n\tThe previous patch from Vincent exposed a crash if ftruncate() fails\n\tin mbox_sync_mailbox(). Change fclose() to safe_fclose(), to avoid\n\tit being called twice.\n\n2016-03-15 18:01 -0700  Vincent Lefevre  <vincent@vinc17.org>  (2a152212cd9a)\n\n\t* mbox.c: Check return value of ftruncate() in mbox_sync_mailbox().\n\n\tGenerate an error in the event that ftruncate() fails.\n\n2016-03-13 19:04 -0700  Kevin McCarthy  <kevin@8t8.us>  (73c8c033e184)\n\n\t* init.h: Update the $hostname documentation.\n\n\tChange to reflect the updates in changeset ce71d168c819.\n\n2016-03-13 18:18 -0700  Kevin McCarthy  <kevin@8t8.us>  (ad14066bf6c1)\n\n\t* UPDATING: Update the UPDATING file for 1.6.0\n\n2016-03-13 11:19 -0700  Kevin McCarthy  <kevin@8t8.us>  (90d0935c3142)\n\n\t* rfc2231.c: Fix RFC2231 continuation join order. (closes #3811)\n\t(closes #3741)\n\n\tThe function generating a list of parts to join had incorrect\n\tsorting logic. It was comparing values, not attributes.\n\tAdditionally, the order logic wasn't correct.\n\n\tThanks to TAKAHASHI Tamotsu for pointing out the value vs attribute\n\tcomparison bug.\n\n2016-03-11 13:47 +0100  Vincent Lefevre  <vincent@vinc17.net>  (bd0e695f627e)\n\n\t* po/fr.po: Updated French translation.\n\n2016-03-10 15:52 -0800  Kevin McCarthy  <kevin@8t8.us>  (b5f170446e14)\n\n\t* doc/manual.xml.head: Improve the mailto_allow documentation.\n\n\tAdd to the commands list. Document unmailto_allow. Mention the new\n\tbehavior in the Security Considerations section about mailto: links.\n\n2016-03-10 14:59 -0800  Michael Elkins  <me@sigpipe.org>  (ad94dd58966b)\n\n\t* doc/manual.xml.head, doc/muttrc.man.head, globals.h, init.c, init.h,\n\turl.c: Restrict mailto header fields using mailto_allow.\n\n\tBy default, only the body and subject fields are allowed. These can\n\tbe changed with the mailto_allow and unmailto_allow commands.\n\n2016-03-10 14:20 -0800  Kevin McCarthy  <kevin@8t8.us>  (b46ee6523400)\n\n\t* configure.ac: Check stat return value in configure.ac. (closes\n\t#3810)\n\n2016-03-08 15:57 -0800  Kevin McCarthy  <kevin@8t8.us>  (d07d2e9f1e34)\n\n\t* init.h, main.c, mutt.h: Add $resume_edited_draft_files option.\n\n\tThis adds an extra header when saving edited draft files (-E -H on\n\tthe command line). With this header, the next time they are edited,\n\tthey are automatically \"resumed\" (by setting $resume_draft_files).\n\n\tThe idea is to prevent multiple user-defined headers and signatures\n\tfrom being added to the draft message by avoiding processing it as a\n\tbrand new message after the first time.\n\n2016-03-08 15:57 -0800  Kevin McCarthy  <kevin@8t8.us>  (24b4f14e9538)\n\n\t* init.h, mutt.h, send.c: Add $resume_draft_files option.\n\n\tWhen set, draft files are processed the same as when resuming\n\tpostponed messages. One use of this option is to avoid multiple\n\tuser-defined headers and signatures being added to the message.\n\t(e.g. when -E is used repeatedly on the draft files).\n\n2016-03-08 13:12 -0800  Derek Martin  <code@pizzashack.org>  (ce71d168c819)\n\n\t* getdomain.c, init.c: Improve method of determining FQDN. (closes\n\t#3298)\n\n\tRather than reading /etc/resolv.conf, use gethostname() and\n\tgetaddrinfo() to get the canonical domain.\n\n\tThanks to Vincent Lefèvre for the memory leak fix.\n\n2016-03-02 15:08 -0800  Kevin McCarthy  <kevin@8t8.us>  (8e77637a1a69)\n\n\t* init.h: Document that GPGME doesn't support creating inline PGP\n\tmessages.\n\n2016-03-02 15:08 -0800  Kevin McCarthy  <kevin@8t8.us>  (6034900d1636)\n\n\t* crypt-gpgme.c: Add hard redraw for the gpgme application/pgp\n\thandler.\n\n\tWill Yardley reported display artifacts and keyboard issues after\n\tdecrypting a traditional pgp message using gpgme. It turns out the\n\tgpgpme code path was missing a hard_redraw() to repaint the screen\n\tafter pinentry.\n\n2016-02-28 19:42 -0800  Kevin McCarthy  <kevin@8t8.us>  (d11b6776532f)\n\n\t* main.c, mutt.h, send.c: Draft file tweeks: rename flag, don't auto-\n\tabort on no change.\n\n\tRename the flag to SENDDRAFTFILE since it will be used in contexts\n\tother than the body allocation.\n\n\tDon't automatically abort if the message was unchanged; it seems\n\tpossible the draft files could be used as the entire message reply.\n\n2016-02-15 19:44 -0800  Kevin McCarthy  <kevin@8t8.us>  (909cf6dd067c)\n\n\t* contrib/gpg.rc, crypt-gpgme.c, globals.h, init.h, pgp.c: Add\n\t$pgp_decryption_okay to verify multipart/encrypted are actually\n\tencrypted. (closes #3770)\n\n\tIn pgp classic mode, if the $pgp_decrypt_command generated output,\n\tit assumed the content was encrypted. However, gpg will generate\n\toutput even if the block is simply signed and armored text. The\n\tproblem is that mutt was then printing mime headers labelling the\n\toutput as encrypted text in the ui.\n\n\tAdd a new option, and suggested value of: set\n\tpgp_decryption_okay=\"^\\\\[GNUPG:\\\\] DECRYPTION_OKAY\" If set, the\n\toutput from the decrypt command will be scanned for this regexp to\n\tconfirm an actual decryption occurred.\n\n\tNote that gpgme already correctly rejects this form of spoofed\n\tmessage.\n\n2016-02-11 15:12 -0800  Kevin McCarthy  <kevin@8t8.us>  (b55c6a64a07b)\n\n\t* crypt-gpgme.c: Update the status message after decryption using\n\tgpgpme.\n\n\tChange gpgme to behave the same as classic pgp mode: after a\n\tdecryption, update the status message to overwrite the initial\n\t\"Invoking PGP...\" message.\n\n2016-02-11 02:15 +0100  Vincent Lefevre  <vincent@vinc17.net>  (3b59ef2bf032)\n\n\t* po/fr.po: Updated French translation.\n\n2016-02-07 10:15 -0800  Kevin McCarthy  <kevin@8t8.us>  (87c46e1f6f8c)\n\n\t* postpone.c: Fix pgp and smime decryption in mutt_prepare_template().\n\n\tChange the \"combined\" multipart decryption block to only work for\n\tpgp, since mutt_is_multipart_encrypted() currently only checks for\n\tpgp headers and it therefore only worked for pgp in the first place.\n\n\tFix the newhdr->security to be based on what that function returns,\n\tinstead of the \"context\" hdr passed in.\n\n\tAdd a smime decryption block below when iterating through the\n\tcontent.\n\n\tFix the application/pgp decryption block to assign to hdr->security\n\tusing the type of the app/pgp part instead of hdr->content.\n\n2016-02-07 10:15 -0800  Kevin McCarthy  <kevin@8t8.us>  (a4d885bb36ab)\n\n\t* compose.c, doc/manual.xml.head, doc/mutt.man, main.c, mutt.h,\n\tprotos.h, send.c: Add new flag -E to modify draft/include file.\n\t(closes #3799)\n\n\tSpecifying -E with -i will cause mutt to directly edit the include\n\tfile.\n\n\tSpecifying -E with -H will cause the draft file to be regenerated\n\tfrom the latest version of the email on exit.\n\n\tImprove -H so that it will read (and write) multipart messages.\n\n2016-01-26 13:46 -0800  Kevin McCarthy  <kevin@8t8.us>  (e8f7a08cb7ac)\n\n\t* doc/manual.xml.head: Mention <what-key> under the key bindings\n\tdocumentation.\n\n2016-01-23 12:30 -0800  Kevin McCarthy  <kevin@8t8.us>  (df42596d08fe)\n\n\t* lib.h: Increase HUGE_STRING size to 8192. (see #3804)\n\n\tThe interface for editing a large number of recipients is poor and\n\tperhaps shouldn't be using a fixed buffer size. Until a redesign can\n\tbe thought about, this will help.\n\n2016-01-19 14:05 -0800  Kevin McCarthy  <kevin@8t8.us>  (b315c4d4ede7)\n\n\t* imap/auth_sasl.c, pop_auth.c, smtp.c: Make sasl authentication\n\tbuffers dynamically sized. (see #3804)\n\n\tThe reporter found that the current buffer of HUGE_STRING was\n\tinsufficient in his case to encode the clientout response back to\n\tthe server in imap_auth_sasl().\n\n\tSince sasl gives us the size of \"clientout\", we can dynamically\n\tmalloc and resize the buffer as needed. This patch uses\n\tmax(LONG_STRING, (clientoutlen*2)). This is sufficient to hold the\n\tbase64 encoded value plus additional prefix/suffix needed in each\n\tprotocol.\n\n\tThe size is rechecked after each sasl_client_step() and resized as\n\tneeded.\n\n\tSimilar code is in pop_auth_sasl() and smtp_auth_sasl(), so convert\n\tall three to use a dynamic buffer.\n\n2016-01-05 18:08 -0800  Kevin McCarthy  <kevin@8t8.us>  (7c0bd34546f4)\n\n\t* smime.c: Allow tab as a delimiter in smime .index files. (closes\n\t#3802)\n\n\tThe old parsing code used fscanf, and so happened to allow a tab as\n\ta delimiter. Even though smime_keys.pl uses a space, some users\n\tmaintain their own .index files by hand (using tab delimiters), so\n\tcontinue to allow that delimiter.\n\n\tThanks to Andre for the bug report and patch.\n\n2016-01-04 16:28 -0800  Kevin McCarthy  <kevin@8t8.us>  (cf4c1c21e58d)\n\n\t* compose.c: Add a couple missing ATTACHPTR->tree frees.\n\n\tWhile working on ticket 3800, I noticed the tree wasn't being freed\n\tinside OP_COMPOSE_EDIT_HEADERS. Add a free there, and in the cleanup\n\tat the end of mutt_compose_menu().\n\n\tA few other sections in mutt_compose_menu() are performing a free-\n\ton-error where the tree isn't allocated yet, so skip it for those.\n\n\tI believe this is actually not fixing a memory leak: all attachments\n\tare always at level 0 in the compose menu (as far as I know); so\n\tnothing is ever allocated in the tree pointer. However since other\n\tparts of the code in compose.c clean this up, it make sense to add\n\tthem here too.\n\n2016-01-04 13:57 -0800  S. Gilles  <sgilles@math.umd.edu>  (960017a249f7)\n\n\t* color.c: Prefer bright versions (8-15) of colors for brightXXX\n\tbackgrounds.\n\n\tWhen a bright color is specified as a background, try to use the\n\tbright version of that color, falling back to the A_BLINK method\n\tonly on terms which do not support enough colors.\n\n2016-01-01 12:24 -0800  Kevin McCarthy  <kevin@8t8.us>  (d3f31cf9239e)\n\n\t* parse.c: Use strrchr to search for Received date separator. (closes\n\t#3798)\n\n\tSample email provided by the submitter showed a Received header with\n\ta \";\" at the end of each line, instead of a single \";\" in front of\n\tthe date. The emails are obviously not RFC compliant, but the fix is\n\tsimple enough: find the last \";\" using strrchr instead of the first.\n\n2016-01-01 12:16 -0800  Kevin McCarthy  <kevin@8t8.us>  (cec45c0a405e)\n\n\t* doc/manual.xml.head: Update manual copyright too.\n\n2016-01-01 12:07 -0800  Kevin McCarthy  <kevin@8t8.us>  (b74ce90c7ba1)\n\n\t* account.c, account.h, ascii.h, bcache.c, bcache.h, commands.c,\n\tcrypt-gpgme.c, crypt.c, cryptglue.c, curs_lib.c, curs_main.c,\n\tenter.c, globals.h, imap/auth.c, imap/auth.h, imap/auth_sasl.c,\n\timap/browse.c, imap/command.c, imap/imap.c, imap/imap.h,\n\timap/imap_private.h, imap/message.c, imap/message.h, imap/util.c,\n\tinit.h, keymap.c, lib.c, mutt_idna.c, mutt_sasl.c, mutt_sasl.h,\n\tpager.c, parse.c, pattern.c, pgp.c, pgp.h, pgpkey.c, pgplib.h,\n\tpgppacket.c, pop.c, postpone.c, rfc3676.c, rfc822.c, send.c,\n\tsmime.c, smime.h, smime_keys.pl, smtp.c, url.c: Convert copyright\n\tyears to all use 4 digit years.\n\n\tVincent Lefèvre pointed out the common shortcut, e.g 1996-9, is\n\tactually not allowed for copyright years. Convert all the copyright\n\tyears (for mutt files) to use 4 digits.\n\n2016-01-01 12:07 -0800  Kevin McCarthy  <kevin@8t8.us>  (fdd3fdd6f708)\n\n\t* COPYRIGHT, account.h, attach.c, bcache.c, browser.c, buffy.c,\n\tbuffy.h, color.c, compose.c, copy.c, crypt-gpgme.c, curs_lib.c,\n\tcurs_main.c, enter.c, from.c, handler.c, headers.c,\n\timap/auth_login.c, imap/command.c, imap/imap.c, imap/imap_private.h,\n\timap/util.c, init.c, init.h, keymap.c, keymap.h, lib.c, lib.h,\n\tmain.c, mbox.c, mh.c, mime.h, mutt.h, mutt_curses.h, mutt_idna.c,\n\tmutt_sasl.c, muttlib.c, mx.c, mx.h, pager.c, parse.c, pattern.c,\n\tpgp.c, pop.c, postpone.c, protos.h, query.c, recvattach.c,\n\trfc1524.c, rfc2047.c, rfc822.c, send.c, sendlib.c, signal.c,\n\tsmime_keys.pl, system.c: Update copyright notices.\n\n\tThis patch only updates existing copyright notices in the source\n\tfiles, using commit dates since the last copyright update in commits\n\te3af935cdb1a and f8fd60d8d3f2.\n\n\tAdd a notice to the COPYRIGHT file to refer to our mercurial\n\trepository for the full commit history.\n\n\tAdd myself to the COPYRIGHT file and smime_keys.pl file.\n\n2016-01-01 09:52 -0800  Kevin McCarthy  <kevin@8t8.us>  (c6471322c68f)\n\n\t* compose.c: merge stable\n\n2016-01-01 09:48 -0800  Kevin McCarthy  <kevin@8t8.us>  (f99561e22a99)\n\n\t* compose.c: Fix segfault when deleting and reusing attachment slots.\n\t(closes #3800)\n\n\tWhen attachments are deleted, delete_attachment() slides the entries\n\tdown in the idx array, but forgets to NULL out the last vacated\n\tslot.\n\n\tIf more attachments are added later on via OP_COMPOSE_EDIT_HEADERS\n\tand the Attach: pseudo-header, mutt_gen_attach_list() will attempt\n\tto re-use the ATTACHPTR in that last slot because it wasn't set to\n\tNULL. This will be pointing to freed memory and likely segfault (at\n\tbest).\n\n2015-12-17 12:25 -0800  Kevin McCarthy  <kevin@8t8.us>  (9480a363a68a)\n\n\t* init.h: Add missing \"yes\" to $recall option documentation.\n\n\tAlso add a blurb about the <recall-message> function.\n\n2015-12-17 07:37 -0800  Kevin McCarthy  <kevin@8t8.us>  (52df4013b0b7)\n\n\t* doc/manual.xml.head: Reword new f=f documentation.\n\n\tReword a couple parts, as Oswald Buddenhagen suggested the original\n\twording was somewhat confusing.\n\n2015-12-15 15:29 -0800  Kevin McCarthy  <kevin@8t8.us>  (e52d3e9c83d8)\n\n\t* doc/manual.xml.head, init.h, mutt.h, rfc3676.c: Add\n\t$reflow_space_quotes option. (closes #3309)\n\n\tWhen viewing and replying to a flowed email, add spacing between the\n\tquotes to improve readability and interoperability with non-flowed\n\treplies.\n\n\tAdd a section to the documentation discussing support for viewing\n\tand non-flowed replies to flowed emails.\n\n2015-12-08 09:12 -0800  Kevin McCarthy  <kevin@8t8.us>  (02bc14ed1569)\n\n\t* merge stable\n\n2015-12-08 09:11 -0800  Kevin McCarthy  <kevin@8t8.us>  (f542783e257d)\n\n\t* mh.c: Fix hash table key \"use after free\" in mh_check_mailbox().\n\t(closes #3797)\n\n\tThe fnames hash uses the maildir->header->path as the key. As\n\tmatches are found, the headers are freed. This inadvertantly also\n\tfreed the key to the hashtable entry; the next hash_find() going to\n\tthe same bucket might end up comparing keys with a freed string.\n\n\tThis patch stores the path in the struct maildir canon_fname field\n\t(just as maildir_check_mailbox() does) and uses that as the hash key\n\tinstead. This field isn't used outside of maildir_check_mailbox(),\n\tand is automatically freed for us in the maildir_move_to_context()\n\tcall at the bottom of both functions.\n\n\tNote there are other ways to fix this problem:\n\t- Add a new mode to the hash table, causing it to strdup the keys and\n\tfree them itself.\n\t- Delete the entries in the fnames hash, rather leaving them there.\n\tThe first seems the cleanest, but would end up touching much more\n\tcode. The second is also clean, but might have a negative\n\tperformance impact.\n\n\tAdditionally, peeking back in history to changeset 1d45a50b6f9b, it\n\tlooks like the canon_fname used to be used by mh too, so perhaps\n\tremoving the strdup may have been a mistake during refactoring at\n\tsome point.\n\n2015-12-07 12:22 +0100  Vincent Lefevre  <vincent@vinc17.net>  (72fbf15cd9a1)\n\n\t* po/fr.po: Updated French translation.\n\n2015-12-03 15:23 -0800  Kevin McCarthy  <kevin@8t8.us>  (bce2a0e71bf6)\n\n\t* crypt.c: Provide a better prompt and error for inline PGP with\n\tattachments. (closes #3738)\n\n\tChange mutt_protect() to check for text/plain before trying to\n\tinvoke crypt_pgp_traditional_encryptsign(). This way, mutt can\n\tprovide a bit more specific prompt and error message.\n\n\tSince pgp_mime_auto says it will prompt in the event of any failure,\n\tkeep the more generic prompt after the encryptsign call too.\n\n2015-12-01 18:20 -0800  Kevin McCarthy  <kevin@8t8.us>  (5e5aff1782dc)\n\n\t* crypt.c: Loosen mutt_signed_handler() protocol value consistency\n\tcheck. (closes #3639)\n\n\tApparently, for S/MIME, some MUAs mismatch the protocol value of the\n\tmultipart/signed and the content-type of the signature: putting\n\t\"pkcs7-signature\" in one and \"x-pkcs7-signature\" in the other.\n\n\tChange mutt_signed_handler() to independently verify the values of\n\tthe protocol and the content-type. This still checks for correct\n\tvalues but doesn't ensure they match between the two (for S/MIME).\n\n2015-11-30 15:52 -0800  Kevin McCarthy  <kevin@8t8.us>  (428a92464d5b)\n\n\t* contrib/smime.rc, globals.h, init.h, smime.c: smime: allow signing\n\tmessage digest algorithm to be specified.\n\n\tCurrently, Mutt hardcodes micalg=sha1 for signed messages.\n\tUnfortunately, the actual message digest algorithm used defaults to\n\tthe value in the \"Signature Algorithm\" field in the signing key's\n\tcertificate.\n\n\tAdd a new configuration option $smime_sign_digest_alg, defaulting to\n\tsha256. Add a new printf format string, %d, to be used in the\n\tsigning command to specify the digest algorithm. Modify the sample\n\t$smime_sign_command to include \"-md %d\".\n\n\tNote: This solution requires using the modified $smime_sign_command,\n\tor else the micalg parameter again may not match the algorithm used.\n\tAn alternative solution would be to query the certificate \"Signature\n\tAlgorithm\" field and try to change the micalg to match it, but this\n\tmethod is easier to implement and provides better control for the\n\tuser to configure, in any case.\n\n2015-11-26 11:01 -0800  Kevin McCarthy  <kevin@8t8.us>  (ff560d1f3f7a)\n\n\t* smtp.c: Clean up address_uses_unicode() (closes #3794)\n\n\tPull the null check out of the loop. Use a bit comparison to detect\n\tif the high bit is set: this avoids a warning for platforms where\n\tchar is implicitly signed (where comparing < 128 is always true).\n\n2015-11-24 21:45 -0800  Kevin McCarthy  <kevin@8t8.us>  (94186a96ca17)\n\n\t* mutt_idna.c: Fix bad idn error on local mailboxes. (closes #3795)\n\n\tCommit 831abf39d53a pulled the mbox_to_udomain() call inside the\n\tconversion functions. Unfortunately, this causes local (user only)\n\tmailboxes to be considered conversion errors instead of just\n\tskipping them.\n\n\tRevert mbox_to_udomain() back to using a static buffer and pull back\n\tinto the mutt_addrlist_to_local/intl() functions.\n\n\tPass the user and domain into the conversion functions instead of\n\tthe address.\n\n2015-11-24 15:49 -0800  Kevin McCarthy  <kevin@8t8.us>  (0d7ce56bbafd)\n\n\t* mutt_idna.c: Add user reversibility check in intl_to_local.\n\n\tThis ensures we don't lose information by converting to the local\n\tcharset.\n\n2015-11-24 15:49 -0800  Kevin McCarthy  <kevin@8t8.us>  (935c779db0ea)\n\n\t* smtp.c: Implement SMTPUTF8 capability support in smtp.c\n\n\tThis is patch 4 of 4 implementing support for SMTPUTF8 (RFC 6531).\n\n\tRFC6532 support already worked: rfc822*.c already parsed messages in\n\texactly the way RFC6532 wants.\n\n\tThanks for Arnt Gulbrandsen for the original patch.\n\n2015-11-24 15:49 -0800  Kevin McCarthy  <kevin@8t8.us>  (151ff413e21a)\n\n\t* init.h, mutt.h, mutt_idna.c: Add option 'idn_encode'; rename option\n\t'use_idn' to 'idn_decode'.\n\n\tThis is patch 3 of 4 implementing support for SMTPUTF8 (RFC 6531).\n\n\tAdd an option to control whether international domains are encoded\n\twith IDN or not. This defaults to set, for backward compatibility.\n\n\tRename the use_idn option to idn_decode, since that more properly\n\treflects its purpose.\n\n2015-11-24 15:49 -0800  Kevin McCarthy  <kevin@8t8.us>  (831abf39d53a)\n\n\t* mutt_idna.c: Rewrite address local-to-intl conversion functions.\n\n\tThis is patch 2 of 4 implementing support for SMTPUTF8 (RFC 6531).\n\n\tPerform charset conversion from local to UTF-8 for both the user and\n\tdomain parts of the address.\n\n\tIf IDN is enabled and the options (added in the next patch) are\n\tturned on, encode/decode the domain part.\n\n\tUse the intl_checked and is_intl status bits to record the\n\tintl/local status of the ADDRESS mailbox part.\n\n2015-11-24 15:49 -0800  Kevin McCarthy  <kevin@8t8.us>  (814ece9689cc)\n\n\t* Makefile.am, alias.c, commands.c, compose.c, configure.ac, edit.c,\n\tinit.c, main.c, mutt_idna.c, mutt_idna.h, query.c, recvcmd.c,\n\trfc822.c, rfc822.h, send.c, sendlib.c: Rename idna functions and\n\tbits for smtputf8 changes.\n\n\tThis is patch 1 of 4 implementing support for SMTPUTF8 (RFC 6531).\n\n\tChange mutt_idna.c to be always compiled. Remove the stub functions\n\tin mutt_idna.h. Instead, put #ifdefs around the idna function calls.\n\tThe conversion functions will be fixed up in the next patch.\n\n\tRename the conversion functions to mutt_addrlist_to_intl() and\n\tmutt_env_to_intl(). Rename the ADDRESS idna status bits to \"intl\"\n\tstatus bits.\n\n2015-11-21 15:28 -0800  Kevin McCarthy  <kevin@8t8.us>  (e635ce43b001)\n\n\t* imap/browse.c: Remove redundant mbox delimiter check in\n\timap_browse(). (closes #3646)\n\n\timap_fix_path() removes duplicate and trailing delimiters, so the\n\tcheck below it was redundant. This also made it appear list.delim\n\tcould be used uninitialized.\n\n\tRemove the check, but add a check to make sure the \"fixed\" path has\n\tlen>0, to prevent oob accesses of mbox[n-1] below.\n\n\tLastly, remove a redundant n=strlen(mbox) inside the initial LIST\n\tprocessing loop. The mbox isn't changed from above, so there is no\n\tneed to rerun strlen.\n\n2015-11-18 16:14 -0800  Kevin McCarthy  <kevin@8t8.us>  (444f1f013f1b)\n\n\t* enter.c: Fix memcpy buf=NULL/len=0 issue in replace_part(). (closes\n\t#3790)\n\n\tCalling memcpy with src or dest=NULL is technically illegal, even if\n\tlen=0. Recent compilers seem to now be generating warnings/errors\n\twith this.\n\n\treplace_part() is currently the only place we are getting bug\n\treports, so for now just fix the problem in this one place.\n\n2015-11-09 18:53 -0800  Kevin McCarthy  <kevin@8t8.us>  (c799162691b2)\n\n\t* pattern.c: Improve error messages for eat_date() and eat_regexp().\n\n\tAfter calling mutt_extract_token(), s->dptr will typically be at the\n\tend of the string if an error occurred. Save a pointer to the\n\tbeginning of the expression, so it can be properly displayed in the\n\terror message.\n\n\tConvert eat_date() and eat_regexp() to use the same iconv strings\n\tfor the error message.\n\n2015-11-09 15:40 -0800  Kevin McCarthy  <kevin@8t8.us>  (1c151d8800de)\n\n\t* curs_lib.c, lib.h, pattern.c, rfc2047.c, rfc822.c: Fix possible\n\tunintentional '\\0' strchr matches.\n\n\tAfter fixing the ticket 3787 strchr issue, this patch cleans up\n\tother potentially incorrect uses of strchr for the '\\0' case.\n\n\tIn mutt_multi_choice(), mutt_getch() can technically return 0.\n\tAlthough it seems the user would have to try quite hard to do this,\n\tit's incorrect to return that index into letters. Change \"ch.ch==0\"\n\tto be considered the same as an abort.\n\n\tis_email_wsp() is used in a couple places where it wasn't obvious\n\twhether '\\0' was being accounted for, so add an explicit check to\n\tthe function.\n\n\tInside eat_date(), if mutt_extract_token() had no input and returned\n\t\"\", the strchr (\"<>=\", buffer.data[0]) below would return a pointer.\n\tIn actuality, this is prevented by an empty parameter check inside\n\tmutt_pattern_comp(), but it doesn't hurt to make it the same as\n\teat_regexp() and have the check explicitly done here too.\n\n\trfc2047_encode() was another borderline case for adding a check. The\n\tconvert_string() sets a length, so it seems highly unlikely that *t\n\tcould be 0, but doesn't hurt to add the check.\n\n\tThe find_encoded_word() fix looks necessary. If the passed in s was\n\tsomething like \"=?charset?\" (followed by EOS, '\\0'), the\n\tstrchr(\"BbQq\", q[1]) would in fact return a pointer and the\n\tfollowing q[2] would read past the end of string. If q[2] happened\n\tto be '?', it might even continue reading in the for loop below.\n\n\tLastly, in parse_mailboxdomain(), the potential overread was already\n\tfixed in changeset:a6919571eb59, but although the nonspecial and\n\tspecial strchr() line happens to \"work\" for the case of '\\0', it's\n\tpretty fragile to leave as is. It's better to be explicit and just\n\treturn if we hit EOS without calling next_token().\n\n2015-10-20 17:59 +0200  Vincent Lefevre  <vincent@vinc17.net>  (17991330c086)\n\n\t* po/fr.po: Updated French translation.\n\n2015-10-18 20:05 +0800  Kevin McCarthy  <kevin@8t8.us>  (41af5a753d6f)\n\n\t* merge stable\n\n2015-10-18 19:45 +0800  Kevin McCarthy  <kevin@8t8.us>  (a6919571eb59)\n\n\t* rfc822.c: Fix next_token() oob read. (closes #3787)\n\n\tWith specially crafted input to 'mutt -H', the line \"Return-Path:<()\n\t\" is read and passed to mutt_parse_rfc822_line(). \"<() \" is then\n\tpassed through to rfc822_parse_adrlist().\n\n\tEventually, inside next_token(), is_special(*s) is called when s\n\tpoints to the end of the string ('\\0'). This macro calls strchr,\n\twhich will actually match and return a pointer to the trailing '\\0'\n\tin RFC822Specials! This causes \"s + 1\" to be returned, skipping past\n\tthe end of string inside parse_mailboxdomain().\n\n\tThis patch adds a check to make sure *s is non-null before calling\n\tis_special(*s).\n\n2015-10-17 11:15 +0800  Kevin McCarthy  <kevin@8t8.us>  (19c3406fbad9)\n\n\t* compose.c: Fix error message for attach-message. (closes #3785)\n\n\tCurrently if mx_open_mailbox() fails when trying to attach a\n\tmessage, mutt_perror() is called. Change this to call mutt_error()\n\tinstead, since errno isn't set for all failure cases.\n\n2015-10-08 13:17 +0200  Vincent Lefevre  <vincent@vinc17.net>  (7aa4e6fc6884)\n\n\t* po/fr.po: Updated French translation.\n\n2015-10-04 10:08 +0800  Kevin McCarthy  <kevin@8t8.us>  (a07e8215a0ef)\n\n\t* browser.c, commands.c, curs_lib.c, curs_main.c, keymap.c, menu.c,\n\tmutt.h, mutt_curses.h, mutt_ssl.c, mutt_ssl_gnutls.c: Create a\n\tseparate macro/push/exec event buffer. (closes #3779)\n\n\tCurrently, the SSL and TLS certficate prompts turn on\n\tOPTUNBUFFEREDINPUT, (to prevent macros and such from running right\n\tthrough the dialog). Unfortunately, the menu dialog processing in\n\tmenu_dialog_dokey() is using mutt_ungetch() to forward non-dialog\n\tkeys on to standard menu processing. With OPTUNBUFFEREDINPUT set,\n\tthose keys never make it to the menu and are buffered until after\n\tthe menu dialog.\n\n\tThis patch creates a new event buffer, separate from the standard\n\t\"unget\" buffer, for use by macros, exec, and push events. These\n\tevents can be temporarily ignored by setting OPTIGNOREMACROEVENTS\n\t(renamed from OPTUNBUFFEREDINPUT), while continuing to allow unget\n\tevents to be processed.\n\n\tSince the \"push\" and \"unget\" functions now go to different buffers,\n\tfunction names were slightly renamed, to make it less easy to\n\tunintentionally use the wrong function at the wrong time.\n\n2015-10-04 10:08 +0800  Kevin McCarthy  <kevin@8t8.us>  (ac156dcc2c54)\n\n\t* menu.c, mutt_ssl.c, mutt_ssl_gnutls.c: Fix menu type in certificate\n\tprompt. (see #3779)\n\n\tThe menu type is used in several places as a direct index into\n\tKeymaps[], so passing in -1 to mutt_new_menu() was leading to\n\tillegal memory accesses later on.\n\n\tAdd a range check in mutt_new_menu(), defaulting to MENU_GENERIC, to\n\tprevent this problem in the future.\n\n2015-10-01 15:38 +0800  Kevin McCarthy  <kevin@8t8.us>  (9de2f1c6da87)\n\n\t* compose.c: Improve prompt when switching between PGP and S/MIME.\n\t(closes #3777)\n\n\tOnly prompt when encrypt or sign is enabled.\n\n\tAlso, improve oppenc to run and refresh the status when switching.\n\n2015-09-30 11:25 +0800  Kevin McCarthy  <kevin@8t8.us>  (909dfe9878ff)\n\n\t* smime.c: Fix chomp in smime_handle_cert_email.\n\n\tDuring a review of the previous patch, Oswald Buddenhagen noticed\n\ttwo of the fixed oob reads had another problem: they were \"chomping\"\n\t(the newline) without verifying there actually was a newline at the\n\tend of the string.\n\n2015-09-30 11:25 +0800  Kevin McCarthy  <kevin@8t8.us>  (d9142ca37afb)\n\n\t* smime.c: merge stable\n\n2015-09-30 11:21 +0800  Kevin McCarthy  <kevin@8t8.us>  (590ff6eebe1a)\n\n\t* parse.c, smime.c, smtp.c: Fix oob reads when fgets returns \"\\0\".\n\t(closes #3776)\n\n\tThe ticket reported an out of bounds read in mutt_read_rfc822_line()\n\twhen a '\\0' was embedded on its own line in the headers. The\n\tfunction assumed if fgets() didn't return NULL, then the string\n\twould have at least one character.\n\n\tI scanned the rest of the code and found three other places making\n\tthe same assumption for fgets.\n\n\tThanks to hanno for finding this with the \"american fuzzy lop\" tool.\n\n2015-09-20 20:37 -0400  Derek Schrock  <dereks@lifeofadishwasher.com>  (aec82c4dd826)\n\n\t* UPDATING, hdrline.c, init.h, send.c: Add new optional index_format\n\texpandos %r and %R.\n\n\tThese generate a comma separated list of all the To and Cc\n\trecipients.\n\n\tAlso, increase the attribution buffer size to accommodate these new\n\texpandos.\n\n2015-09-21 10:28 +0800  bat guano  <bat.guano@don.blech.e4ward.com>  (93c6ae1ef01b)\n\n\t* po/de.po: German translation fix. (closes #3701)\n\n2015-09-20 19:05 +0800  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (2fdec286cfb7)\n\n\t* po/ja.po: Updated Japanese translation.\n\n2015-09-20 18:58 +0800  Kevin McCarthy  <kevin@8t8.us>  (61c754a8effd)\n\n\t* pager.c: Translation improvements.\n\n\tThanks to TAKAHASHI Tamotsu for pointing out these ones I missed.\n\n2015-09-13 14:41 +0800  Kevin McCarthy  <kevin@8t8.us>  (e85eda4ee425)\n\n\t* po/Makefile.in.in, po/bg.po, po/hu.po, po/ko.po, po/pt_BR.po,\n\tpo/uk.po: Enable msgfmt translation check flag -c.\n\n\tFix discovered translation format string errors.\n\n2015-09-13 11:47 +0800  Kevin McCarthy  <kevin@8t8.us>  (6eb6b41f5d45)\n\n\t* compose.c, crypt-gpgme.c, curs_main.c, edit.c, editmsg.c,\n\timap/message.c, mutt_ssl.c, muttlib.c, pgp.c, send.c, smime.c: Add\n\ttranslation comments and improvements.\n\n\tThese were suggested by TAKAHASHI Tamotsu.\n\n2015-09-12 11:25 +0800  Kevin McCarthy  <kevin@8t8.us>  (1a281a527cb7)\n\n\t* crypt-gpgme.c: Improve translation string in crypt-gpgme.c\n\n\tCombine into a single buffer to make the translation easier. Also,\n\tmark a couple todos for alignment problems.\n\n2015-09-06 16:31 -0700  Kevin McCarthy  <kevin@8t8.us>  (2dac9fa02842)\n\n\t* imap/browse.c: Fix double-decode during IMAP browse.\n\n\tcmd_parse_list() already calls imap_unmunge_mbox_name() on the\n\tmailbox names returned from the server. However,\n\tbrowse_add_list_result() was taking those mailbox names and passing\n\tthem to imap_add_folder(), which was calling\n\timap_unmunge_mbox_name() yet again.\n\n\tThe reason is that imap_browse() was directly calling\n\timap_add_folder() too, passing in a previously encoded \"mbox\" name.\n\tAfter looking carefully at the code, I could find no reason that\n\tmbox needed to be encoded outside of the LIST commands.. Therefore I\n\tchanged imap_browse() to call imap_munge_mbox_name() on mbox for the\n\ttwo LIST commands generated from it instead, and removed the\n\timap_unmunge_mbox_name() call inside imap_add_folder().\n\n2015-09-06 07:41 -0700  Kevin McCarthy  <kevin@8t8.us>  (c6a6b7d3b83d)\n\n\t* merge stable\n\n2015-09-06 07:40 -0700  Kevin McCarthy  <kevin@8t8.us>  (40c47fcc9d17)\n\n\t* mx.c: Fix use after free of ctx->last_tag. (closes #3775)\n\n\tWhen using imap to access gmail, tagging and saving messages to \"all\n\tmail\" and pressing <sync-mailbox> can result in the call path:\n\tmx_check_mailbox() imap_check_mailbox() imap_cmd_finish()\n\timap_expunge_mailbox() mx_update_tables() followed by:\n\tmx_sync_mailbox()\n\n\tThe HEADER pointed to by ctx->last_tag will be removed and FREE'ed\n\tin mx_update_tables(), but will subsequently be accessed in\n\tmx_sync_mailbox().\n\n\tThis patch simply sets ctx->last_tag=NULL if it is freed inside\n\tmx_update_tables().\n\n\tThanks to Peter Lekensteyn for the bug report and ASAN report.\n\n2015-09-05 19:55 -0700  Morten Bo Johansen  <mbj@spamcop.net>  (58cbc3235db6)\n\n\t* po/da.po: Updated Danish translation.\n\n2014-07-17 16:05 +0200  Kevin McCarthy  <kevin@8t8.us>  (bd2c2a6058a7)\n\n\t* imap/browse.c, imap/command.c, imap/imap.c, imap/imap_private.h,\n\timap/message.c, imap/utf7.c, imap/util.c: Add support for utf-8\n\tmailboxes in imap.\n\n\tThis adds support for RFC6855 to imap/*.c.\n\n\tThanks to Arnt Gulbrandsen for the original patch.\n\n2015-09-02 18:14 -0700  Kevin McCarthy  <kevin@8t8.us>  (5700b43f1e5b)\n\n\t* crypt-gpgme.c: merge stable\n\n2015-09-02 18:11 -0700  Kevin McCarthy  <kevin@8t8.us>  (f675e853af12)\n\n\t* crypt-gpgme.c: Add time_t conversion to fix gpgme segfault on\n\tOpenBSD.\n\n\ttime_t isn't the same size as gpgme_subkey_t->timestamp on OpenBSD.\n\tPassing &subkey->timestamp to localtime was therefore passing an\n\taddress to the wrong size int and was causing a segfault.\n\n\tThanks to Hannes Wenzel for reporting the bug and providing a patch.\n\n2015-09-02 15:02 -0700  Kevin McCarthy  <kevin@8t8.us>  (8bbcfa2af7b6)\n\n\t* crypt-gpgme.c, pgp.c, smime.c: Add L10N messages for the pgp/smime\n\tsend menus.\n\n\tThis documents the 'f' \"forget it\" choice for translators.\n\n\tThanks to Benno Schulenberg for pointing this out and for the\n\toriginal patch.\n\n2015-09-02 14:43 -0700  Kevin McCarthy  <kevin@8t8.us>  (f7859d96006c)\n\n\t* alias.c, curs_main.c, doc/devel-notes.txt, po/Makefile.in.in: Flag\n\ttranslator comments using L10N.\n\n\tAdd comment to devel-notes.txt documentation.\n\n2015-08-31 09:32 -0700  Kevin McCarthy  <kevin@8t8.us>  (62730ecbc17d)\n\n\t* mkinstalldirs: merge default into stable\n\n2015-08-30 10:27 -0700  Kevin McCarthy  <kevin@8t8.us>  (2f0d516fc638)\n\n\t* .hgsigs: mutt-1.5.24 signed\n\n2015-08-30 10:26 -0700  Kevin McCarthy  <kevin@8t8.us>  (a494c8f932fa)\n\n\t* .hgtags: Added tag mutt-1-5-24-rel for changeset 08e81162482f\n\n2015-08-30 10:26 -0700  Kevin McCarthy  <kevin@8t8.us>  (08e81162482f)\n\n\t* ChangeLog, VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po,\n\tpo/de.po, po/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po,\n\tpo/fr.po, po/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po,\n\tpo/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po: automatic post-release commit for mutt-1.5.24\n\n2015-08-30 10:21 -0700  Benno Schulenberg  <i18n@benno.vertaalt.nl>  (d9b1c4b6662f)\n\n\t* po/eo.po: Partially updated Esperanto translation.\n\n2015-08-30 10:18 -0700  Benno Schulenberg  <i18n@benno.vertaalt.nl>  (b9864644b6a2)\n\n\t* commands.c: Minor translation fixes.\n\n\tThis makes two equivalent translation messages the exact same so\n\tthey only need to be translated once.\n\n\tIt also adds a missing translation marker (for the same string).\n\n\tThis same string is used in recvcmd.c so does not generate a new\n\ttranslation string.\n\n2015-08-30 10:08 -0700  Kevin McCarthy  <kevin@8t8.us>  (934fbd272ce6)\n\n\t* UPDATING: Set release date. Minor fixes to release notes.\n\n2015-08-29 12:51 -0700  Ivan Vilata i Balaguer  <ivan@selidor.net>  (faa85ed8a7c9)\n\n\t* po/ca.po: Updated Catalan translation.\n\n2015-08-29 12:40 -0700  Benno Schulenberg  <i18n@benno.vertaalt.nl>  (14a2ad40e954)\n\n\t* po/nl.po: Updated Dutch translation.\n\n2015-08-29 07:40 -0700  Benno Schulenberg  <i18n@benno.vertaalt.nl>  (0d346dc8dccb)\n\n\t* smime.c: Minor translation fix.\n\n\tThis makes two equivalent translation messages the exact same so\n\tthey only need to be translated once.\n\n2015-08-28 07:35 -0700  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (e33ba8f72a40)\n\n\t* po/ja.po: Updated Japanese translation.\n\n2015-08-20 11:18 -0700  Vsevolod Volkov  <vvv@mutt.org.ua>  (b3c095648df6)\n\n\t* po/ru.po: Updated Russian translation.\n\n2015-08-19 09:41 -0700  Petr Pisar  <petr.pisar@atlas.cz>  (83760f05bb46)\n\n\t* po/cs.po: Updated Czech translation\n\n2015-08-17 14:51 -0700  Kevin McCarthy  <kevin@8t8.us>  (c0180991c352)\n\n\t* configure.ac: Add idn to MUTTLIBS instead of LIBS (see #3638)\n\n\tCurrently, -lidn is included while linking all the mutt binaries.\n\tAdd it to MUTTLIBS instead so it's only used for the mutt linking.\n\n\tAlso, add $LIBICONV to $LIBS before checking for some of the idna\n\tfunctions. On some sytems, there are apparently issues when using\n\tstatic linking. (Thanks to grarpamp for reporting).\n\n2015-08-17 12:31 -0700  Kevin McCarthy  <kevin@8t8.us>  (356443232291)\n\n\t* muttlib.c, protos.h: Change mutt_adv_mktemp to call mutt_mktemp\n\tinstead of mktemp. (see #3638).\n\n\tmutt_mktemp is currently called in 95% of the cases in mutt, and is\n\talready our \"own rolled\" version of mktemp. The \"insecure mktemp\n\twarning\" discussion keeps coming up, so instead add prefix and\n\tsuffix functionality to mutt_mktemp() and call that.\n\n\tAll other uses of Tempdir in the mutt source did not call\n\tmutt_expand_path() first, so remove that from mutt_adv_mktemp().\n\n2015-08-17 12:26 -0700  Kevin McCarthy  <kevin@8t8.us>  (8b2fe6a4db79)\n\n\t* configure.ac: Enable C99 mode for compiler. (See #3638).\n\n\tThis is already the default for clang (FreeBSD) so shouldn't cause\n\tany issues.\n\n\tEnabling this will increase the allowed static string length and\n\tremove the Copyright length warning.\n\n2015-08-11 11:20 -0700  Kevin McCarthy  <kevin@8t8.us>  (55ea6e829b46)\n\n\t* Makefile.am: Compile txt2c using automake rules.\n\n\tThe compilation rule used $< which isn't portable for ordinary make\n\trules.\n\n2015-08-11 11:20 -0700  David Champion  <dgc@bikeshed.us>  (eb4aaf4581ac)\n\n\t* txt2c.sh: Fix txt2c.sh sed invocations to use posix syntax.\n\n2015-08-07 03:38 +0200  Vincent Lefevre  <vincent@vinc17.net>  (711708700602)\n\n\t* po/fr.po: Updated French translation.\n\n2015-07-29 09:26 -0700  Kevin McCarthy  <kevin@8t8.us>  (34ca1c5fdd45)\n\n\t* doc/manual.xml.head: Minor documentation fix.\n\n\tIn one place, the documentation mentioned 'alternative-order'\n\tinstead of 'alternative_order'.\n\n2015-07-29 09:07 -0700  Kevin McCarthy  <kevin@8t8.us>  (75e398daa94c)\n\n\t* doc/manual.xml.head, hook.c: Add error handling for ^ and other\n\tempty mailbox shortcuts.\n\n\t(closes #2402) (closes #3735)\n\n\tExplicitly mention the ^ example in the documentation added in\n\t6d733cab6b45.\n\n\tAdd an error message for ^ when CurrentFolder is not set. Add checks\n\tfor other mailbox shortcuts that expand to the empty string. This\n\tcould happen if the @alias shortcut was accidentally used, or the\n\tvalue referenced by a shortcut isn't set yet.\n\n2015-07-27 14:09 -0700  Kevin McCarthy  <kevin@8t8.us>  (6d733cab6b45)\n\n\t* doc/manual.xml.head: Add \"Mailbox Matching in Hooks\" section to\n\tmanual.\n\n\tFolder-hook and mbox-hook perform mailbox shortcut expansion on the\n\tregexp parameter. Add a section to the manual to give examples and\n\tmake the behavior clearer.\n\n2015-07-26 14:48 -0700  Kevin McCarthy  <kevin@8t8.us>  (21a08f9abc80)\n\n\t* crypt-gpgme.c, crypt.c, handler.c, mutt_crypt.h, pgp.c,\n\trecvattach.c: Handle malformed ms-exchange pgp-encrypted block.\n\t(closes #3742)\n\n\tIn certain circumstances, Exchange corrupts a multipart/encrypted\n\tblock into: <multipart/mixed> <text/plain> <application /pgp-\n\tencrypted> [BASE64-encoded] <application/octet-stream>\n\t[BASE64-encoded]\n\n\tThis patch pulls the full detection of valid/invalid multiparts into\n\tmutt_body_handler(). It extracts a run_decode_and_handler()\n\tfunction, which is reused by new intermediate handlers to decode the\n\tapplication/octet-stream part before passing it directly to\n\tcrypt_pgp_encrypted_handler. These intermediate handlers then check\n\tand set any GOODSIG flags back into the parent part.\n\n\tThis change may result in less error messages for invalid\n\tmultipart/encrypted parts. Instead, mutt will default to the\n\tmultipart_handler if it isn't fully \"correct\".\n\n\tViewing attachments uses crypt_pgp_decrypt_mime() which bypasses the\n\thandler mechanism. Add decoding to the decrypt_mime() functions for\n\tpgp and gpgme.\n\n\tThanks to Vincent Brillault for his analysis and initial patch.\n\n2015-07-18 18:40 +0200  Martin Sandsmark  <martin@sandsmark.ninja>  (e40e3e0391ea)\n\n\t* UPDATING, buffy.c, init.h, mutt.h: Add support for checking cur/ in\n\tMaildir for unread mails in buffy.\n\n\tAlso skip messages with the S flag when checking for unread mails.\n\n2015-07-24 13:36 -0700  Kevin McCarthy  <kevin@8t8.us>  (fdafc56a854f)\n\n\t* doc/Makefile.am: Set AUTOMAKE_OPTIONS in doc/Makefile.am. (closes\n\t#3766)\n\n\tAdd the \"foreign\" option to silence warnings generated by\n\tflymake.am.\n\n2015-07-24 13:15 -0700  Kevin McCarthy  <kevin@8t8.us>  (cbae8642cb3d)\n\n\t* UPDATING: Update the UPDATING file with changes since 1.5.23.\n\n2015-07-23 14:57 -0700  Kevin McCarthy  <kevin@8t8.us>  (8c16206f50a1)\n\n\t* hcache.c, help.c, imap/util.c, protos.h, sendlib.c: Fix compiler\n\ttype warnings. (closes #3765)\n\n\tThe output of mutt_local_tz() was being passed to abs(). Technically\n\tthe return type is time_t, but it represents a small value: the\n\ttimezone offset in seconds. Add a safe explicit cast to int.\n\n\tChange the txt parameter of mutt_make_help() to type const char *.\n\tTypically all calls run the txt parameter through _(), which accepts\n\tconst char * and returns a char *. However, if NLS is not enabled,\n\t_() is a noop, simply returning the parameter itself. In\n\tmutt_compile_help(), items[i].name is const char *, so it will\n\tgenerate a warning when passed as the txt parameter of\n\tmutt_make_help().\n\n\tOn some systems, e.g. OS X, snprintf is defined as a macro. One call\n\tin hcache.c was embedding directives inside the snprintf call. This\n\tis apparently undefined behavior, so duplicate the call instead.\n\n2015-07-22 19:23 -0700  Kevin McCarthy  <kevin@8t8.us>  (c60fed102d79)\n\n\t* imap/message.c, keymap.c, pop_lib.c: Fix a few small compiler\n\twarnings. (See #3638)\n\n\tIn certain configurations, unused variables and labels were causing\n\twarnings.\n\n\tAdd a missing \"#include <netinet/in.h>\" to pop_lib.c.\n\n2015-07-21 12:41 -0700  Kevin McCarthy  <kevin@8t8.us>  (704e0622cc67)\n\n\t* imap/imap.c: merge stable\n\n2015-07-21 12:34 -0700  Kevin McCarthy  <kevin@8t8.us>  (e5fe2f80e797)\n\n\t* imap/imap.c: Imap: Fix flag caching after sync.\n\n\tThe flags cached in IMAP_HEADER_DATA were not updated to match the\n\tHEADER flags after a sync. This means if a flag were toggled and\n\tsynced twice, the second sync was not sending the flag update.\n\n\tThanks to Noah Misch for the patch.\n\n2015-07-19 15:55 -0700  Kevin McCarthy  <kevin@8t8.us>  (100835c4a8ac)\n\n\t* init.h: Add note about gpg fixed-list-mode. (closes #3763).\n\n\tThanks to Gregor Zattler for the original patch.\n\n2015-07-11 14:36 -0700  Kevin McCarthy  <kevin@8t8.us>  (2ca89bed6448)\n\n\t* main.c: Fix batch mode lockup. (closes #3761) (closes #3760)\n\n\tThe new TS capability check was also running when curses wasn't\n\tinitialized. Move check inside the !OPTNOCURSES block.\n\n2015-07-09 14:50 -0700  Kevin McCarthy  <kevin@8t8.us>  (7e91a8855dc3)\n\n\t* Makefile.am, doc/Makefile.am, imap/Makefile.am: Use $(VAR) instead\n\tof @VAR@ in Makefile.am files. (closes #3664)\n\n\tThe @VAR@ form is not overridable, such as the case for #3664 where\n\tthe reporter wanted to override DOTLOCK_GROUP.\n\n\tIt's doubtful targets need to be overriden, but it makes sense to be\n\tconsistent in the usage of automake substituted variables unless\n\tthere is a particular reason/bug to work around.\n\n2015-07-05 13:38 -0700  Kevin McCarthy  <kevin@8t8.us>  (79cd2f34961d)\n\n\t* crypt-gpgme.c: Remove 'hit enter' prompt for GPGME initialization\n\terrors.\n\n\tOlder GPGMEs are missing CMS (S/MIME) support. Don't force the poor\n\tusers to hit enter every time they start mutt.\n\n2015-07-02 11:21 -0700  Kevin McCarthy  <kevin@8t8.us>  (39422ec14f60)\n\n\t* .hgignore, mkinstalldirs: Remove the automake mkinstalldirs script.\n\n\tAdd to .hgignore so it doesn't accidentally get added again.\n\n2015-07-02 11:21 -0700  Kevin McCarthy  <kevin@8t8.us>  (97ef326274e7)\n\n\t* Makefile.am, configure.ac, contrib/Makefile.am, doc/Makefile.am,\n\tintl/Makefile.in, m4/gettext.m4, po/Makefile.in.in: Convert from\n\tusing mkinstalldirs to $(MKDIR_P).\n\n\tThe automake mkinstalldirs script is now deprecated. \"install-sh -d\"\n\tcan be used in place. Configure.ac already includes AC_PROG_INSTALL,\n\twhich will ensure install-sh is bundled. Add AC_PROG_MKDIR_P, which\n\twill set $(MKDIR_P) to either a thread-safe \"mkdir -p\" or will fall\n\tback to using install-sh.\n\n2015-07-02 11:18 -0700  Kevin McCarthy  <kevin@8t8.us>  (67d945e38074)\n\n\t* build-release: Fix build-release to always update automake tools.\n\t(closes #3671)\n\n\t1.5.22 and 1.5.23 include a version of \"missing\" older than the\n\tversion of automake/aclocal used to generate configure.\n\n\tFix the build-release script to always copy and force update of the\n\tautomake tools.\n\n2015-06-29 14:35 -0700  Kevin McCarthy  <kevin@8t8.us>  (9802a6172edf)\n\n\t* doc/manual.xml.head: Add note to manual clarifying push/exec and\n\tfolder-hook order.\n\n\tFolder-hooks are executed in the order declared. However, push/exec\n\tcommands will simply prepend to the keyboard buffer. If there are\n\tmultiple push/exec commands, each will prepend to the earlier one.\n\tThe result is that they will end up being \"run\" in reverse order\n\tonce keyboard buffer processing starts.\n\n2015-06-26 12:23 -0700  Kevin McCarthy  <kevin@8t8.us>  (3bbb1f569eb1)\n\n\t* imap/auth_sasl.c, imap/imap.c: Fix IMAP segfault due to NULL capstr.\n\n\tAfter a failed login, the connection is left open but capstr is\n\tfreed. If a second login attempt is made, imap_auth_sasl was trying\n\tto strstr using the NULL capstr.\n\n\tAdd a NONULL around the capstr parameter to strstr. Change\n\timap_conn_find() to keep the capstr around until a successful\n\tauthentication occurs.\n\n2015-06-26 11:38 -0700  Kevin McCarthy  <kevin@8t8.us>  (b4be5796a458)\n\n\t* crypt-gpgme.c, pgp.c, smime.c: Add comment about \"(f)orget it\"\n\tchoice in pgp/smime send menus.\n\n2015-06-26 12:28 +0200  Vincent Lefevre  <vincent@vinc17.net>  (b640b23e64a8)\n\n\t* po/fr.po: Updated French translation.\n\n2015-06-07 13:59 -0700  Kevin McCarthy  <kevin@8t8.us>  (17a4f92e4a95)\n\n\t* smime.c, smime.h: Rewrite S/MIME key searching. Add purpose\n\tchecking.\n\n\tModel the smime.c searching off of classic pgp searching. Create\n\tsmime_get_key_by_hash()/addr()/str() functions that use a single\n\tsmime_get_candidates() function to search the index.\n\n\tUse the new smime_keys generated purpose flag in the index to filter\n\tby KEYFLAG_CANENCRYPT and KEYFLAG_CANSIGN. Old style indices fall\n\tback to all-inclusive behavior.\n\n2015-06-07 13:59 -0700  Kevin McCarthy  <kevin@8t8.us>  (106914bc9406)\n\n\t* smime_keys.pl: smime_keys: Add refresh command.\n\n\tRefresh verifies the trust of each certificate and adds the purpose\n\tflag if it is missing. It pushes those values to the private keys'\n\tindex file too.\n\n2015-06-07 13:59 -0700  Kevin McCarthy  <kevin@8t8.us>  (aabd030b25cb)\n\n\t* smime_keys.pl: smime_keys: Add purpose flag to index.\n\n\tA subsequent patch will change smime.c to use the purpose to filter\n\tcerts and keys that can't be used for signing or encryption.\n\n\tIssuer, trust, and purpose flags were also added to the keys index\n\tfile, to keep parsing simpler in smime_keys as well as smime.c. The\n\ttrust and purpose are derived from the cert. Issuer is set to '?' as\n\tthis should never be needed for keys.\n\n2015-05-25 10:59 -0700  Kevin McCarthy  <kevin@8t8.us>  (0255b37be491)\n\n\t* smime_keys.pl: smime_keys: Handle certificate chains in add_cert.\n\t(closes #3339) (closes #3559)\n\n\tFind all chains in the certificate provided. For each chain create a\n\tseparate leaf and intermediate certificate file. Because Mutt\n\tcontrols the label prompt, use a single label for all chains.\n\n\tAlso, loosen up cert file parsing to allow attributes even if they\n\taren't delimited by a \"Bag Attributes\" header.\n\n\tThanks to David J. Weller-Fahy for his testing and feedback!\n\n2015-05-18 13:27 -0700  Kevin McCarthy  <kevin@8t8.us>  (577987ca2d02)\n\n\t* smime_keys.pl: smime_keys: Convert openssl execution to use\n\topen(\"-|\",...). (see #3575) (see #2456)\n\n\tThis does a fork/exec, bypassing the shell, and so handles spaces,\n\tquotes, and other shell-characters problems better than the simple\n\tfix in changeset:c66a6bd5d0d5\n\n\tThis also fixes the \"verify with crl\" bug in #2456: the grep is now\n\tdone in perl.\n\n\tThank you Vincent Lefevre for your review and feedback!\n\n2015-05-18 03:25 +0200  Vincent Lefevre  <vincent@vinc17.net>  (82d43abf2a37)\n\n\t* po/fr.po: Updated French translation (related to PGP & S/MIME, with\n\tcorrections).\n\n2015-05-15 14:09 -0700  Kevin McCarthy  <kevin@8t8.us>  (c66a6bd5d0d5)\n\n\t* smime_keys.pl: smime_keys: quote filenames. (closes #3575) (see\n\t#2456)\n\n\tWrap the various filename parameters in single quotes in case there\n\tare spaces in the filename.\n\n2015-05-15 10:47 -0700  Kevin McCarthy  <kevin@8t8.us>  (babc30377614)\n\n\t* smime_keys.pl: Start cleaning up and fixing smime_keys.pl (closes\n\t#3324) (see #2456)\n\n\t* Convert to using File::Temp (#3324). This was also suggested at\n\thttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=775199\n\n\t* Use File::Temp for add_p12 temp file. (#2456)\n\n\t* Make the query_label() method a bit more robust with empty\n\tstrings, ctrl-d, and leading spaces.\n\n\t* Clean up openssl_do_verify() logic. Mark cert as invalid rather\n\tthat die'ing if an openssl verify command fails.\n\n\t* General cleanup:\n\t  - Clearly separate op handler, certificate management, and helper\n\tfunctions by section and using prefixes.\n\t  - Create openssl helper functions to reduce copy/paste invocations and\n\tmake the code clearer.\n\t  - Make indentation consistent at 2 spaces.\n\t  - Change handle_add_pem() to re-use handle_add_chain() once the\n\tcorrect files are identified.\n\t  - Change openssl_parse_pem() to return a single array of data\n\tstructures representing the parsed certs/keys.\n\n2015-05-03 16:25 -0700  Kevin McCarthy  <kevin@8t8.us>  (c46dfbdb5eff)\n\n\t* globals.h, init.h, mutt_ssl.c, mutt_ssl_gnutls.c: Provide SSL cipher\n\tselection option. (closes #3167)\n\n\tCreates a $ssl_ciphers option that allows direct selection of the\n\tciphers for OpenSSL (via SSL_CTX_set_cipher_list) and GnuTLS (via\n\tgnutls_priority_set_direct).\n\n\tThank you Sergio Gelato for the patch.\n\n2015-04-25 19:00 -0700  Seth Forshee  <seth@forshee.me>  (755a18da99bc)\n\n\t* handler.c: Fix performance regression for ~b/~B searching. (closes\n\t#3743)\n\n\tIn mutt_is_autoview(), changeset b58cdfacfb89 introduced a call to\n\trfc1524_mailcap_lookup() before checking if the MIME type should be\n\tautoviewed based on the user's preferences. This caused a major\n\tperformance regression for ~b/~B searching.\n\n\tRearrange mutt_is_autoview() to check the user preferences first,\n\tthen search for a mailcap entry only if the MIME type should be\n\tautoviewed.\n\n\tIn order to preserve correct mime_lookup behavior, re-add a call to\n\tmutt_check_lookup_list() before scanning the AutoViewList.\n\n2015-04-19 13:15 -0700  Kevin McCarthy  <kevin@8t8.us>  (067a3ac42c3b)\n\n\t* crypt-gpgme.c, doc/manual.xml.head, init.h, mutt.h, pgp.c: Add\n\t$crypt_confirmhook option. (see #3727)\n\n\tAllow the confirmation prompt for crypt-hooks to be disabled. This\n\tis useful for multiple crypt-hook users (e.g. encrypted mailing\n\tlists), or just for people who are certain of their crypt-hooks and\n\tdon't want to be prompted every time.\n\n\tThanks to Dale Woolridge for the original patch.\n\n2015-04-19 13:15 -0700  Kevin McCarthy  <kevin@8t8.us>  (b4c57d3fd7e8)\n\n\t* crypt-gpgme.c, doc/manual.xml.head, doc/muttrc.man.head, hook.c,\n\tpgp.c, protos.h: Allow multiple crypt-hooks with the same regexp.\n\t(closes #3727).\n\n\tChanges the crypt-hook to accumulate a LIST of hooks with the same\n\tregexp, as opposed to replacing the hook data. This is useful for\n\tthe case of encrypted mailing lists.\n\n\tUpdate pgp classic and gpgme to process a LIST of crypt-hook values\n\tinstead of just one.\n\n\tThis version of the patch creates a new _mutt_list_hook() function\n\tthat (in theory) other hooks could use if they were changed to\n\treturn a list. It also changes the behavior when a crypt-hook is\n\tdeclined: previously it would immediately use the original recipient\n\tfor key selection. Now it will only do that if all crypt-hooks for a\n\trecipient are declined. This allows all, a subset, or none of the\n\thooks to be used.\n\n\tThanks to Rejo Zenger, Remco Rijnders, and Dale Woolridge for their\n\twork on various versions of this patch.\n\n2015-04-15 19:25 -0700  Kevin McCarthy  <kevin@8t8.us>  (1e26a962ab7a)\n\n\t* doc/manual.xml.head: Fix a few more incorrect documentation lines\n\tfor hooks.\n\n\tHopefully this finishes up aac979f8b529 and ca5aff2a4b6e.\n\n2015-04-15 18:57 -0700  Kevin McCarthy  <kevin@8t8.us>  (d12cb775b779)\n\n\t* crypt-gpgme.c, doc/manual.xml.head, init.h, pgp.c, pgp.h, pgpkey.c:\n\tUse fingerprints instead of keyIDs internally. (see #3695)\n\n\tAdd a helper function, pgp_fpr_or_lkeyid(), that returns the\n\tfingerprint if available, otherwise falls back to the long key id.\n\tConvert Mutt to use that value for pgp command invocation.\n\n\tChange gpgme to use an equivalent crypt_fpr_or_lkeyid() function in\n\ta couple places too (for keylist generation and sign-as key\n\tselection).\n\n\tUpdate documentation to mention fingerprints and the --with-\n\tfingerprint option for gpg invocation.\n\n\tChange pgp_long_ids to default: yes, but add a note mentioning it's\n\tonly used for the display of key IDs in a few places.\n\n2015-03-12 14:48 -0700  Kevin McCarthy  <kevin@8t8.us>  (bd21cff208c4)\n\n\t* recvattach.c: Allow attachments from unencrypted emails to be\n\tdeleted.\n\n\tPrint a warning if the message is signed or partly signed.\n\n\tThanks to David Haguenauer for the original patch!\n\n2015-04-06 18:39 -0700  Kevin McCarthy  <kevin@8t8.us>  (ca5aff2a4b6e)\n\n\t* doc/muttrc.man.head: Clarify hook pattern vs regexp in muttrc.man\n\tpage.\n\n\tUpdates to the muttrc.man page were inadvertently not included in\n\tchangeset:aac979f8b529. Fix mbox-hook and crypt-hook to show they\n\taccept a regexp, not a pattern.\n\n2015-04-05 13:52 -0700  Kevin McCarthy  <kevin@8t8.us>  (e3e6febd8240)\n\n\t* contrib/smime.rc: Fix smime.rc typos and spacing issues. (closes\n\t#3745)\n\n\tThanks to David J. Weller-Fahy for that patch.\n\n2015-03-30 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (1bd26d871d76)\n\n\t* crypt-gpgme.c: Fix const errors caused by find_keys() changes.\n\n\tPart 4 of the oppenc series changed the keyID type to const as part\n\tof some cleanup changes. At the time, that only propagated to\n\tcrypt_getkeybystr(), but with the fingerprint changes, this is\n\tstarting to propagate too far.\n\n\tCreate a separate non-const variable to deal with the crypt hook\n\tvalue and revert crypt_getkeybystr()'s parameter to non-const.\n\n2015-03-30 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (b8ead28d8e84)\n\n\t* compose.c, crypt-gpgme.c, pgp.c, smime.c: Add ui elements for oppenc\n\tmode.\n\n\tAdd a status message to the Security line when oppenc is enabled.\n\n\tFor each send menu, add the ability to toggle it on or off. When\n\tenabled, the menus won't show the (e)ncrypt or (b)oth options, and\n\tthe (c)lear function only clears the SIGN bit when it is active.\n\n\tChange the gpgme_send_menu() to directly use the ENCRYPT and SIGN\n\tflags instead of the PGPENCRYPT/SIGN and SMIMEENCRYPT/SMIME flags.\n\tUsing the latter sometimes resulted in the APPLICATION bit unset,\n\twhich made oppenc unhappy.\n\n\tThe send_menus previously used a switch statement using choice\n\tnumbers. Since the menus now vary based on the oppenc option and\n\tmessage bit being set, these were all changed to convert the numbers\n\tback to a choice letter.\n\n2015-03-30 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (2ec6a8d91de4)\n\n\t* crypt.c, mutt.h, mutt_crypt.h, postpone.c, send.c, sendlib.c: Add a\n\tsecurity bit to the message for oppenc mode.\n\n\tThis allows oppenc to be enabled/disabled on a message level. If\n\tsomething initially enables encryption, such as crypt_autoencrypt or\n\tcrypt_replyencrypt, oppenc is turned off for the message.\n\n\tChange the postpone/resume code to persist the oppenc bit.\n\n\tAlso change resend message to enable and invoke oppenc if the option\n\tis set.\n\n2015-03-30 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (b38c4838976f)\n\n\t* compose.c, crypt.c, init.h, mutt.h, send.c: Add the\n\tcrypt_opportunistic_encrypt option and calls.\n\n\tThis patch creates the OPTCRYPTOPPORTUNISTICENCRYPT option and\n\tdocumentation.\n\n\tIt also adds calls to crypt_opportunistic_encrypt() during initial\n\tmessage composition, after updating to, cc, or bcc, and after\n\tediting the message (if edit_headers is enabled).\n\n2015-03-30 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (b10d0a945623)\n\n\t* crypt.c, mutt_crypt.h, send.c: Implement\n\tcrypt_opportunistic_encrypt().\n\n\tThis function will be called to flip encryption on and off based on\n\tmessage recipients.\n\n2015-03-30 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (db2abe57adb5)\n\n\t* crypt-gpgme.c, pgp.c, pgp.h, pgpkey.c, smime.c: Implement\n\toppenc_mode in the find_keys methods.\n\n\toppenc_mode is used by crypt_opportunistic_encrypt to determine\n\twhether there are valid keys for all recipients of a message,\n\twithout prompting the user.\n\n\tThe patch wraps around prompts, and makes getkeybyaddr methods\n\treturn a valid address-matching key without prompting.\n\n\tThe patch also fixes a small problem with gpgme's getkeybyaddr. When\n\tdetermining if there were multiple strong matches, it was comparing\n\tthe crypt_key_t instead of its kobj member (gpgme_key_t).\n\n\tThe patch also enables a call to crypt_is_numerical_keyid() in\n\tfind_keys(), so that crypt-hooks can actually be checked without\n\tprompting when gpgme is enabled. (The addition was patterned off of\n\tthe pgp_findKeys() function).\n\n2015-03-30 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (80b963ff82d3)\n\n\t* crypt.c, mutt_crypt.h, pgp.c: Pull is_numerical_keyid() into\n\tcrypt.c.\n\n\tA subsequent patch (re?)-introduces a call to is_numerical_keyid\n\tinside find_keys(). Rather than duplicate the function, this patch\n\tpulls it into crypt.c, where find_keys() and pgp_findKeys() can both\n\tcall it.\n\n2015-03-30 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (04eb395d80a7)\n\n\t* crypt-gpgme.c, crypt-gpgme.h, crypt-mod-pgp-classic.c, crypt-mod-\n\tpgp-gpgme.c, crypt-mod-smime-classic.c, crypt-mod-smime-gpgme.c,\n\tcrypt-mod.h, crypt.c, cryptglue.c, mutt_crypt.h, pgp.c, pgp.h,\n\tsmime.c, smime.h: Introduce an oppenc_mode parameter\n\n\tIt's added to the parameter lists through the call stack down to the\n\tfind_keys calls.\n\n\tNo functionality is implemented yet. This patch is separated just to\n\tkeep other patches more readable.\n\n2015-03-30 15:45 -0700  Kevin McCarthy  <kevin@8t8.us>  (5b443e7da81b)\n\n\t* crypt-gpgme.c, crypt-gpgme.h, crypt-mod-pgp-classic.c, crypt-mod-\n\tpgp-gpgme.c, crypt-mod-smime-classic.c, crypt-mod-smime-gpgme.c,\n\tcrypt-mod.h, crypt.c, cryptglue.c, mutt_crypt.h, pgp.c, pgp.h,\n\tsmime.c, smime.h: Refactor the address list generation out of the\n\tfind_keys routines.\n\n\tAll four find_keys routines have a similar set up code for\n\tgenerating a single address list out of the to, cc, bcc lists. This\n\tpatch pulls all the code into crypt_get_keys.\n\n\tThis is done to simplify the functions before later patches make\n\tthem more complicated (with the oppenc_mode parameter).\n\n2015-03-17 16:28 -0700  Kevin McCarthy  <kevin@8t8.us>  (59bd9030e898)\n\n\t* doc/manual.xml.head: Document limitation of color index and server-\n\tside searches. (see #3723)\n\n2015-03-17 16:28 -0700  Kevin McCarthy  <kevin@8t8.us>  (ab101844dc07)\n\n\t* doc/manual.xml.head: Add entries for =B and =h in pattern modifier\n\ttable.\n\n\tSince these operate differently for IMAP, it's worth adding explicit\n\tentries to the table for these two.\n\n2015-03-17 16:28 -0700  Kevin McCarthy  <kevin@8t8.us>  (aac979f8b529)\n\n\t* doc/manual.xml.head: Clarify hook documentation to specify regexp\n\tinstead of pattern.\n\n\tAccount-hook, crypt-hook, and mbox-hook accept a regexp parameter,\n\tnot a pattern.\n\n2015-03-04 19:24 -0800  Kevin McCarthy  <kevin@8t8.us>  (09be71b645a7)\n\n\t* pgp.c: Fix pgp_application_pgp_handler to remove all tempfiles.\n\n\tIf multiple PGP blocks are present in an email, Mutt only cleans up\n\tthe tempfiles for the last block. Thanks to Dennis Preiser for the\n\tpatch and sample mbox file demonstrating the problem.\n\n\tThis patch also fixes the argument to mutt_perror for the pgpout\n\ttempfile.\n\n2015-02-19 11:00 -0800  Kevin McCarthy  <kevin@8t8.us>  (71f12fef8c6f)\n\n\t* sendlib.c: merge stable\n\n2015-02-10 18:29 +0100  Peter Wu  <peter@lekensteyn.nl>  (70b85d8b232b)\n\n\t* sendlib.c: Fix buffer underread for empty header values. (closes\n\t#3736)\n\n\tWhen a header has no value (*p == '\\0' so l == 0), do not read\n\toutside the buffer but print the newline anyway when a tag is\n\talready printed (col != 0).\n\n\tCaught by ASAN while opening a draft with no Subject.\n\n2015-02-11 21:38 +0100  Eike Rathke  <erack@erack.de>  (f5b1b75c5958)\n\n\t* crypt-gpgme.c, crypt.c, mutt_crypt.h, pgpkey.c: Allow fingerprint\n\tuser input for key selection. (see #3695)\n\n\tAccept and check input of a fingerprint and find the matching key.\n\n\tNote that for both to work, match against and display of\n\tfingerprint, the pgp_list_pubring_command and\n\tpgp_list_secring_command need to contain the\n\t--with-fingerprint option, or have with-fingerprint in\n\t~/.gnupg/gpg.conf.\n\n2015-02-15 10:09 -0800  Kevin McCarthy  <kevin@8t8.us>  (af5951f5d81c)\n\n\t* contrib/gpg.rc, gnupgparse.c: Add fingerprint record parsing for pgp\n\tlist keys. (see #3695)\n\n\tModify parse_pub_line to parse fpr records and add the fingerprint\n\tto the pgp_key_t's fingerprint field.\n\n\tAdd \"--with-fingerprint --with-fingerprint\" to the\n\tpgp_list_pubring_command and pgp_list_secring_command commands in\n\tcontrib/gpg.rc. The second invocation generates fpr records for\n\tsubkeys too.\n\n2015-02-15 10:08 -0800  Kevin McCarthy  <kevin@8t8.us>  (47b4e57b2f1c)\n\n\t* pgplib.c, pgplib.h, pgppubring.c: Convert pgp_key_t fingerprint to a\n\tchar* (see #3695)\n\n\tCurrently only pgppubring.c is using the fingerprint field, and is\n\tusing it to store a binary version of the fingerprint.\n\n\tConvert the field to store a null-terminated string. Modify\n\tpgppubring.c to use to use the new field.\n\n2015-02-10 12:14 -0800  Kevin McCarthy  <kevin@8t8.us>  (385d7434c9d6)\n\n\t* pgpkey.c: Protect addr with NONULL in pgp_getkeybyaddr.\n\n\tThis was introduced by bb3b01f41ed2, but wasn't included in the\n\tNONULL checks added in 9a75aa4bd69e.\n\n2015-02-08 14:19 -0800  Kevin McCarthy  <kevin@8t8.us>  (addd7cea01d4)\n\n\t* crypt-gpgme.c: Cache uid validity in crypt_key_t.\n\n\tIn order to find the validity for a crypt_key_t, the code has to\n\tloop through the key->kobj->uids list up to the correct index. This\n\tis a bit silly since the uid is available when the crypt_key_t is\n\tcreated in get_candidates().\n\n\tThis patch adds a validity field, and changes the various places to\n\tuse that instead of looping.\n\n\tAlso fix a bug in _crypt_compare_trust(): it was using the validity\n\tof the first uid instead of the corresponding uid's validity.\n\n2015-02-08 13:44 -0800  Kevin McCarthy  <kevin@8t8.us>  (7162033d1fb8)\n\n\t* crypt-gpgme.c: Fix pgp-gpgme to set revoke/expired/disabled flags.\n\n\tThe code wasn't settings those flags in get_candidates(). This patch\n\tadds it to the pgp path. I don't know if these flags apply to SMIME\n\tso am leaving them out for the smime branch.\n\n\tFix up crypt_select_key() to follow the same logic as\n\tpgp_select_key().\n\n2015-02-03 15:39 -0800  Kevin McCarthy  <kevin@8t8.us>  (2fd1b9f17b80)\n\n\t* contrib/smime.rc, init.h: Change the smime_encrypt_with default to\n\taes256.\n\n\tOpenssl supports -aes256 at least since 2004, and it's a stronger\n\talgorithm than des3.\n\n\tAlso:\n\t- Remove the incorrect documentation comment about defaulting to 3des\n\tif unset.\n\t- Change the default set in contrib/smime.rc.\n\n2015-02-04 11:04 -0800  Kevin McCarthy  <kevin@8t8.us>  (d2f5832a9e68)\n\n\t* send.c: Protect SmimeDefaultKey for postpone/resume.\n\n\tPgpSignAs is saved and restored in ci_send_message(), but\n\tSmimeDefaultKey was not.\n\n\tAlso, fix a bug where an empty PgpSignAs was not restored back to\n\tempty if the postponed email contained a SignAs value.\n\n2015-02-02 13:25 -0800  Kevin McCarthy  <kevin@8t8.us>  (3f4dc0ce66ae)\n\n\t* postpone.c: Fix mutt_parse_crypt_hdr() sign_as behavior.\n\n\tCurrently, if a message is postponed with only the E encryption\n\tflag, when it is resumed, pgp_sign_as will be overwritten (with an\n\tempty string).\n\n\tThis intention of the behavior was probably to restore the exact\n\tstate of pgp_sign_as upon resuming. However, if the message wasn't\n\tmarked for signing, the state of pgp_sign_as is not known. This\n\tpatch changes the mutt_parse_crypt_hdr() to only set an empty\n\tpgp_sign_as if there is an S flag (and if set_empty_signas is true).\n\n\tmutt_edit_headers() also uses the function, but it doesn't want to\n\toverwrite pgp_sign_as with just an S flag. The set_signas parameter\n\tis renamed to (a hopefully clearer) \"set_empty_signas\".\n\n2015-01-31 20:05 -0800  Kevin McCarthy  <kevin@8t8.us>  (1235dd48ef3f)\n\n\t* contrib/smime.rc, init.h: Update smime_encrypt_with documentation to\n\tlist all algorithms.\n\n\tThanks to Michael Schwipps for the patch!\n\n2015-01-15 14:18 -0800  Kevin McCarthy  <kevin@8t8.us>  (688d66ae6014)\n\n\t* imap/message.c, mailbox.h, mx.c, sendlib.c: Send the IMAP \\Draft\n\tflag when postponing a message.\n\n\tThis patch adds a mx_open_new_message() flag, M_SET_DRAFT. It also\n\tadds a MESSAGE->flags.draft flag.\n\n\tmutt_write_fcc() passes the M_SET_DRAFT flag to\n\tmx_open_new_message(), which then sets MESSAGE->flags.draft. Then,\n\timap_append_message() is able to see this flag and so adds the\n\t\\Draft flag.\n\n\tThe imap_append_message() function started to have a bit too many\n\tflags, so this version of the patch separates out the flag\n\tgenerating code into a simpler version.\n\n2015-01-31 11:53 -0800  Brendan Cully  <brendan@kublai.com>  (200185ed86bc)\n\n\t* crypt-mod-pgp-gpgme.c: gpgme: typo in previous commit\n\n2015-01-31 11:21 -0800  Brendan Cully  <brendan@kublai.com>  (20e46d7bc453)\n\n\t* configure.ac, crypt-gpgme.c, crypt-mod-pgp-gpgme.c: gpgme: guard\n\tmail-key on presence of gpgme_op_export_keys\n\n\tThis function is too new to be assumed present.\n\n2015-01-30 14:17 +0100  Vincent Lefevre  <vincent@vinc17.net>  (b804f2daca31)\n\n\t* po/fr.po: Updated French translation.\n\n2015-01-29 15:40 -0800  Kevin McCarthy  <kevin@8t8.us>  (282832c0329a)\n\n\t* mutt_sasl.c: Clean up sasl warnings.\n\n\tThese were caused by assigning callback functions to the\n\tsasl_callback_t.proc member. The callback type doesn't list any\n\tparameters, because parameters vary by callback. The fix was simply\n\tassigning a cast.\n\n\tCyrus-sasl2 has a sasl_callback_ft typedef that their sample code\n\tuses for this purpose, but it is in a different header, saslplug.h,\n\tand isn't in their 1.5 tree. Since this is probably not portable to\n\tother implementations, I just added an equivalent cast.\n\n2015-01-27 16:15 -0800  Kevin McCarthy  <kevin@8t8.us>  (73b97b986e0d)\n\n\t* configure.ac, mutt_ssl_gnutls.c: Clean up gnutls warnings.\n\n\tMost of the warning were caused by deprecated types:\n\tgnutls_certificate_credentials gnutls_certificate_status\n\tgnutls_datum gnutls_digest_algorithm gnutls_session\n\tgnutls_transport_ptr gnutls_x509_crt Even though I believe the\n\treplacements have been around for a while, the patch adds autoconf\n\tchecks and fallback typedefs.\n\n\tOne warning was caused by casting an int to a pointer for the second\n\tparameter to gnutls_transport_set_ptr(). Recent gnutls has a\n\treplacement gnutls_transport_set_int() macro, but this macro simply\n\t(eventually) casts the parameter using\n\t\"(gnutls_transport_ptr_t)(long)\". So this patch just does the same.\n\n2015-01-25 18:09 -0800  Kevin McCarthy  <kevin@8t8.us>  (df55f14f4585)\n\n\t* crypt-gpgme.c, init.h, pgp.c: Remove GPG_AGENT_INFO check for GnuPG\n\t2.1 compatibility. (closes #3715)\n\n\tGnuPG version 2.1 stops exporting the GPG_AGENT_INFO environment\n\tvariable, so mutt can't check for the presence of that to ensure the\n\tagent is running.\n\n\tFor GPGME, we can check for the OpenPGP protocol being present. For\n\tclassic pgp, we have to trust the user setting.\n\n\tThis patch is based on the patches sent by CustaiCo and muffins.\n\tThank you both for reporting the problem and creating a patch.\n\n2015-01-27 00:52 +0100  Vincent Lefevre  <vincent@vinc17.net>  (a0a5e505463e)\n\n\t* po/fr.po: Updated French translation.\n\n2015-01-26 13:07 +0100  Vincent Lefevre  <vincent@vinc17.net>  (aa67709a73ce)\n\n\t* INSTALL, README.SECURITY, README.SSL, TODO, configure.ac,\n\tcurs_lib.c, help.c, imap/message.c, lib.c, mh.c: Corrected various\n\tspelling mistakes (most of them reported by codespell).\n\n2015-01-23 10:33 -0800  Kevin McCarthy  <kevin@8t8.us>  (ec93761e3e12)\n\n\t* crypt-gpgme.c, crypt-mod-pgp-gpgme.c: Implement mail-key, Esc-K, for\n\tgpgme. (closes #3488)\n\n\tThis patch implements the make-key-attachment function for gpgme,\n\tmodeled after the pgp version.\n\n\tIt also adds an optional tempf parameter to\n\tdata_object_to_tempfile() so the function can be reused for make-\n\tkey-attachment.\n\n2015-01-19 15:58 -0800  Kevin McCarthy  <kevin@8t8.us>  (b39219ffe75b)\n\n\t* pgpkey.c: pgp_getkeybystr: Pull key matching out of the address\n\tmatch loop.\n\n\tSince the key is invariant inside the address loop, there is no need\n\tto match against it with each address.\n\n\tAll the keys should have at least one address record (see\n\tbb3b01f41ed2), but in case a record was malformed, add a check for\n\tthat to keep the same logic.\n\n2015-01-21 10:14 +0100  Eike Rathke  <erack@erack.de>  (5d7345b4c516)\n\n\t* doc/devel-notes.txt: HEAD is dead, remove wrong instruction from doc\n\t/devel-notes.txt\n\n\tBranch HEAD was closed over a year ago. If one was following the\n\tinstruction to update -C HEAD you'd end up with an empty source tree\n\tand had to checkout the default branch again.\n\n2015-01-18 17:50 +0100  Eike Rathke  <erack@erack.de>  (6e5a62946141)\n\n\t* crypt-gpgme.c: Allow short and long key ID user input in\n\tcrypt_getkeybystr()\n\n\tThe following did not work, e.g. when leaving a key list, and at the\n\t\"Sign as\" or \"Encrypt to\" prompt attempting to enter a key ID:\n\t* set pgp_long_ids=no\n\t  * enter a long key ID, with or without leading 0x\n\t* set pgp_long_ids=yes\n\t  * enter a short key ID without leading 0x\n\n\tSpecifically entering a long key ID should always be possible as\n\tevil32.com has shown.\n\n\tThis also cleans up the logic used to determine the matching\n\tcondition, which was quite convoluted.. it even slightly speeds up\n\tthe loop as less string operations are involved in the inner\n\tcondition.\n\n\tThis only changes how the result obtained from the crypt_* gpgme\n\tinterface is filtered.\n\n2015-01-18 17:45 +0100  Eike Rathke  <erack@erack.de>  (63ad7cf0d0de)\n\n\t* pgp.c, pgp.h, pgpkey.c: Allow short and long key ID user input in\n\tpgp_getkeybystr()\n\n\tThe following did not work, e.g. when leaving a key list, and at the\n\t\"Sign as\" or \"Encrypt to\" prompt attempting to enter a key ID:\n\t* set pgp_long_ids=no\n\t  * enter a long key ID, with or without leading 0x\n\t* set pgp_long_ids=yes\n\t  * enter a short key ID without leading 0x\n\n\tSpecifically entering a long key ID should always be possible as\n\tevil32.com has shown.\n\n\tThis also cleans up the logic used to determine the matching\n\tcondition, which was quite convoluted.. it even slightly speeds up\n\tthe loop as less string operations are involved in the inner\n\tcondition.\n\n\tThis only changes how the result obtained from the pgp_* command\n\tline interface is filtered.\n\n2015-01-17 14:34 -0800  Kevin McCarthy  <kevin@8t8.us>  (58a9dbfd0d25)\n\n\t* crypt-gpgme.c: Fix some context, data, and key memory leaks in\n\tgpgme.\n\n\tThe context and data cleanup just involved adding missing\n\tgpgme_release() and gpgme_data_release() calls in a few places.\n\n\tThe key usage was a little more involved:\n\t  * Fix crypt_free_key(). It wasn't freeing the key passed in, and\n\tdidn't work properly if multiple keys were passed in. It also was\n\tmissing a call to gpgme_key_unref().\n\n\t * Add free_recipient_set() to properly unref all the keys before\n\tfreeing the array.\n\n\t * Fix get_candidates() to ref keys added to the crypt_key_t list,\n\tand unref the keys returned by gpgme_op_keylist_next().\n\n\t * Change usages of gpgme_key_release() to gpgme_key_unref(). The\n\tformer was deprecated in gpgme version 0.4.1 (2003-06-06).\n\n2015-01-17 14:42 -0800  Kevin McCarthy  <kevin@8t8.us>  (cc7903944687)\n\n\t* hcache.c: Fix the hcache type punning warning.\n\n\tThis patch fixes the type punning warning by switching from (safe\n\tbut perhaps not elegant) casting to using a union.\n\n\tThanks to Vincent Lefevre for his input and suggestion to use the\n\tunion as a better solution to the problem!\n\n2015-01-15 13:19 +0100  Vincent Lefevre  <vincent@vinc17.net>  (d732298789f2)\n\n\t* curs_lib.c: Also colorize the initial mutt_enter_fname prompt.\n\n\tNote: the new prompt obtained after a key is typed was already\n\tcolorized.\n\n2014-08-12 14:04 -0700  Kevin McCarthy  <kevin@8t8.us>  (4ba366bc7c45)\n\n\t* doc/manual.xml.head, enter.c, history.c, history.h: Add a scratch\n\tbuffer to the history ring. (closes #3082)\n\n\tThis patch creates an extra slot in the history ring for a scratch\n\tbuffer (at h->last). If you are editing inside that buffer, it is\n\tpreserved when you scroll up/down through the history. Editing while\n\tin other places in history are *not* preserved with this patch.\n\n\tAnother behavior change worth noting with this patch: the position\n\tin history is now reset to the scratch buffer after each input\n\tentry. Before, the position would be stay wherever it was - you\n\tdidn't restart at the \"bottom\" each time.\n\n2013-11-06 13:07 -0800  Kevin McCarthy  <kevin@8t8.us>  (8a2d9d352e2c)\n\n\t* globals.h, init.h, mutt.h, send.c: Add option to encrypt postponed\n\tmessages. (closes #3665)\n\n\tThis patch is based on Christian Brabandt's patch sent to mutt-\n\tusers.\n\n\tAdd two new configuration variables: $postpone_encrypt and\n\t$postpone_encrypt_as. When $postpone_encrypt is set and a message is\n\tmarked for encryption, the message will be encrypted using the key\n\tspecified in $postpone_encrypt_as before saving the message.\n\n\tIn this patch, $postpone_encrypt_as must be specified. I\n\texperimented with passing safe_strdup( NONULL (PostponeEncryptAs))\n\twhen unspecified, but although gpg.conf has a default-key setting, I\n\tcould not get it to work properly. (pgpclassic gave an error message\n\tand gpgme sefaulted.)\n\n\tAlthough not necessary, this patch turns off signing during\n\tencryption of the postponed message (and turns it back on before\n\tsaving), since there is no need to sign the message yet.\n\n2015-01-09 14:22 -0800  Kevin McCarthy  <kevin@8t8.us>  (25430a489665)\n\n\t* color.c, contrib/colors.default, contrib/colors.linux, curs_lib.c,\n\tdoc/manual.xml.head, doc/muttrc.man.head, mutt_curses.h: Add color\n\ttype for prompts.\n\n\tThis adds a new color type, MT_COLOR_PROMPT, that can be used to\n\tcolorize prompts (fields, yes/no, multi_choice).\n\n\tThanks to Ben Boeckel for the patch!\n\n2013-10-29 18:25 -0700  Kevin McCarthy  <kevin@8t8.us>  (789501922727)\n\n\t* crypt-gpgme.c, pgp.c: Add gpg signature name. (closes #3478)\n\n\tSome mail clients display \"noname\" for the gpg signature attachment.\n\tThis patch sets the mime name to \"signature.asc\".\n\n\tThe patch is based on http://dev.mutt.org/trac/attachment/ticket/347\n\t8/gpg_signature_name.patch with the changes:\n\t  - removes the configuration options\n\t  - removes mime description\n\n2015-01-06 14:38 -0800  Kevin McCarthy  <kevin@8t8.us>  (cd57f8893b43)\n\n\t* configure.ac, globals.h: merge stable\n\n2014-12-31 20:35 -0800  Kevin McCarthy  <kevin@8t8.us>  (31ce789af3df)\n\n\t* crypt-gpgme.c: Fix segfault of extract-keys (^K) under gpgme.\n\t(closes #3698)\n\n\tThis patch is based on the patch by Ben Price, which relocated the\n\tsafe_fclose (&in) after its use by keydata in\n\tpgp_gpgme_extract_keys. Thank you for the patch!\n\n\tIn addition, this patch:\n\t  * removes spurious (debug?) output when the extract keys is finished.\n\t  * adds a gpgme_data_release() call to free the keydata.\n\n2014-10-10 14:17 +0800  Kevin McCarthy  <kevin@8t8.us>  (e7a77a6bfb84)\n\n\t* query.c: Fix a memory leak in mutt_query_complete.\n\n\tWhen a single result was returned, it was written to the buffer and\n\treturned, but the query result was never freed.\n\n\tThis patch creates a free_query function and changes the code to use\n\tthat everywhere.\n\n2014-08-14 20:12 -0700  Kevin McCarthy  <kevin@8t8.us>  (c7f116b6dc20)\n\n\t* configure.ac: Fix variable name in configure.ac.\n\n\t$ac_cv_search_STRINGPREP_CHECK_VERSION should be\n\t$ac_cv_search_stringprep_check_version, to match the first parameter\n\tof the AC_SEARCH_LIBS([stringprep_check_version] above.\n\n\tRunning configure was giving a \"test: =: unary operator expected\"\n\terror.\n\n2014-12-28 09:41 -0800  Kevin McCarthy  <kevin@8t8.us>  (8a981dce369e)\n\n\t* globals.h: Remove duplicate SmimeCryptAlg declaration in globals.h\n\n\tThank you Elias Diem for the patch.\n\n2015-01-06 14:31 -0800  Kevin McCarthy  <kevin@8t8.us>  (59c2c4be08a7)\n\n\t* pgpkey.c: merge stable\n\n2014-12-01 14:19 -0800  Kevin McCarthy  <kevin@8t8.us>  (0aebf1df4359)\n\n\t* sendlib.c: Revert write_one_header() to skip space and tab. (closes\n\t#3716)\n\n\tThis patch fixes CVE-2014-9116 in the stable branch. It reverts\n\twrite_one_header() to the pre [f251d523ca5a] code for skipping\n\twhitespace.\n\n\tThanks to Antonio Radici and Tomas Hoger for their analysis and\n\tpatches to mutt, which this patch is based off of.\n\n2015-01-05 18:28 -0800  Kevin McCarthy  <kevin@8t8.us>  (5a86319adad0)\n\n\t* pgpkey.c: Fix segv in pgp_getkeybystr(). (closes #3725)\n\n\tWhen searching for keys, and the user supplies \"\" to match against,\n\tpgp_getkeybystr will have values: p = \"\"; l = 0; After returning\n\tfrom pgp_select_key(), it will try to assign to p[l-1].\n\n\t(As a note, the function is chopping off and restoring the trailing\n\t\"!\" character because of ticket #1928.)\n\n2015-01-03 11:33 -0800  Kevin McCarthy  <kevin@8t8.us>  (79ea10b2d81c)\n\n\t* commands.c: Change bounce to use mutt_parse_adrlist() for address\n\tparsing.\n\n\tWhen prompting for recipients, forwarding, replying, and mailing all\n\tuse mutt_parse_adrlist() to parse the addresses. This allows for\n\taddresses to be separated by spaces.\n\n\tBounce message currently uses rfc822_parse_adrlist(), which doesn't\n\tallow the spaces. This one-line patch simply changes bounce to\n\tbehave the same as mail, reply, and forwarding for the address\n\tprompt.\n\n\tThanks to Roger Cornelius for the patch!\n\n2014-12-31 20:35 -0800  Kevin McCarthy  <kevin@8t8.us>  (5530e9fb17d9)\n\n\t* crypt-gpgme.c: Fix segfault of extract-keys (^K) under gpgme.\n\t(closes #3698)\n\n\tThis patch is based on the patch by Ben Price, which relocated the\n\tsafe_fclose (&in) after its use by keydata in\n\tpgp_gpgme_extract_keys. Thank you for the patch!\n\n\tIn addition, this patch:\n\t  * removes spurious (debug?) output when the extract keys is finished.\n\t  * adds a gpgme_data_release() call to free the keydata.\n\n2014-08-12 14:33 -0700  Kevin McCarthy  <kevin@8t8.us>  (9a75aa4bd69e)\n\n\t* gnupgparse.c, pgpkey.c: Wrap pgp_uid_t->addr in NONULL(). (closes\n\t#3564)\n\n\tThe previous patch introduced the possibility for addr to be null.\n\tMutt is surprisingly robust against null strings, but there are a\n\tfew places that should be wrapped in NONULL().\n\n2014-08-12 14:33 -0700  Kevin McCarthy  <kevin@8t8.us>  (bb3b01f41ed2)\n\n\t* gnupgparse.c: Fix parse_pub_line to allow an empty User-ID field for\n\ta pub record. (see #3564)\n\n\tA key whose primary uid record has an empty User-ID will result in\n\tthe user being unable to use the key to encrypt an email in mutt.\n\tThis is because the mutt functions for key selection iterate through\n\tthe address fields of a key for matching against and for displaying\n\tto the user.\n\n\tThis change allows a pgp_uid_t record to be created for a pub record\n\twhose User-ID field is blank. So the key will have one address\n\trecord, albeit with a null addr field.\n\n2013-11-02 20:12 -0700  Kevin McCarthy  <kevin@8t8.us>  (4909bd9c9149)\n\n\t* main.c: Override draft headers with arguments. (closes #3580)\n\n\tCurrently, if the -H option is used, it is not possible to redefine\n\tthe recipient addresses with positional argument. This patch fixes\n\tit as well as CC, Bcc, and Subject headers.\n\n\tThis patch is based on the patch by Petr Písař at http://dev.mutt.or\n\tg/trac/attachment/ticket/3580/override_draft_headers_with_arguments.\n\tpatch\n\n\tThis version of the patch merges the To, Cc, and Bcc commandline\n\targuments into the template, and fixes a few small problems with the\n\tprevious patch.\n\n\tThis patch also moves the fin close outside the \"if (tempfile)\"\n\tblock, since it is opened outside that block.\n\n2014-06-21 13:51 -0700  Kevin McCarthy  <kevin@8t8.us>  (daf61444d454)\n\n\t* pgpinvoke.c: Enable %a format string for all pgp command configs.\n\t(closes #3699)\n\n\tCurrently, the documentation states that, with the exception of\n\tpgp_getkeys_command, all the PGP format commands should be available\n\tto the pgp_*_command configuration variables.\n\n\tHowever, the %a format is actually only enabled for\n\tpgp_clearsign_command, pgp_encrypt_sign_command, and\n\tpgp_sign_command.\n\n\tPhilip Rinn discovered this problem when he was trying to add a\n\t\"--encrypt-to %a\" to pgp_encrypt_only_command. Rather than just fix\n\tthe one configuration he was having the problem with, this patch\n\tenables %a usage for all of them. (With the exception of the\n\tdocumented pgp_getkeys_command.)\n\n2013-12-18 19:19 -0800  Kevin McCarthy  <kevin@8t8.us>  (630bbc147022)\n\n\t* doc/manual.xml.head: Note correct usage of $edit_headers. (closes\n\t#3673)\n\n\tTicket 3673 shows that it isn't necessarily obvious a blank line is\n\tneeded between the headers and body of a message when using\n\t$edit_headers. This patch adds a small note to the documentation,\n\tindicating the blank line should be preserved between the headers\n\tand body.\n\n\tThank you Sinan Kaan Yerli for the patch.\n\n2014-08-13 13:46 -0700  Kevin McCarthy  <kevin@8t8.us>  (89b17d3cd510)\n\n\t* doc/mutt.man, doc/pgpring.man: Clarify PGPPATH usage in manpages.\n\n\tMake more clear that, when used with the original PGP program, mutt\n\tand pgpring rely on this being set.\n\n2014-10-10 14:17 +0800  Kevin McCarthy  <kevin@8t8.us>  (45fbc40193aa)\n\n\t* query.c: Fix a memory leak in mutt_query_complete.\n\n\tWhen a single result was returned, it was written to the buffer and\n\treturned, but the query result was never freed.\n\n\tThis patch creates a free_query function and changes the code to use\n\tthat everywhere.\n\n2014-08-21 18:41 -0700  Kevin McCarthy  <kevin@8t8.us>  (b1ef16f25425)\n\n\t* init.c: Remove unused variable t in start_debug().\n\n\tt was set but never used. This was generating a compiler warning.\n\n2014-08-14 20:12 -0700  Kevin McCarthy  <kevin@8t8.us>  (80186ee6eb57)\n\n\t* configure.ac: Fix variable name in configure.ac.\n\n\t$ac_cv_search_STRINGPREP_CHECK_VERSION should be\n\t$ac_cv_search_stringprep_check_version, to match the first parameter\n\tof the AC_SEARCH_LIBS([stringprep_check_version] above.\n\n\tRunning configure was giving a \"test: =: unary operator expected\"\n\terror.\n\n2014-12-28 09:41 -0800  Kevin McCarthy  <kevin@8t8.us>  (1630cee66057)\n\n\t* globals.h: Remove duplicate SmimeCryptAlg declaration in globals.h\n\n\tThank you Elias Diem for the patch.\n\n2014-11-04 23:40 -0600  David Champion  <dgc@uchicago.edu>  (39d3ddb56d34)\n\n\t* init.h: Disable SSLv3 by default.\n\n\tSince Oct. 14 2014 SSLv3 is no longer considered safe. See POODLE:\n\thttps://en.wikipedia.org/wiki/Transport_Layer_Security#POODLE_attack\n\n2014-10-11 13:20 -0700  Brendan Cully  <brendan@kublai.com>  (3a46874d5845)\n\n\t* hcache.c: hcache tcdb debug logging\n\n2014-10-11 11:05 -0700  Brendan Cully  <brendan@kublai.com>  (85393e522337)\n\n\t* Makefile.am, doc/Makefile.am, flymake.am, imap/Makefile.am: add\n\tcheck-syntax target for flymake\n\n2014-10-11 10:59 -0700  Brendan Cully  <brendan@kublai.com>  (bb7f59864d47)\n\n\t* .hgignore: ignore generated pgpewrap/pgpring man pages\n\n2014-10-11 10:58 -0700  Brendan Cully  <brendan@kublai.com>  (0dc2dafab53a)\n\n\t* .hgignore: ignore gnu global tags\n\n2014-09-07 12:00 -0700  Brendan Cully  <brendan@kublai.com>  (4a814b05874f)\n\n\t* merge stable\n\n2014-09-07 11:04 -0700  Brendan Cully  <brendan@kublai.com>  (1b583341d5ad)\n\n\t* mutt_sasl.c: mutt_sasl: fix double negative in iptostring result\n\tcheck (fixes #3705)\n\n2014-09-07 10:52 -0700  Brendan Cully  <brendan@kublai.com>  (769905e66205)\n\n\t* mutt_sasl.c: mutt_sasl: whitespace only\n\n2014-09-07 10:36 -0700  Brendan Cully  <brendan@kublai.com>  (c81c93e64af8)\n\n\t* UPDATING, po/nl.po: merge stable\n\n2014-07-25 20:43 +0200  Vincent Lefevre  <vincent@vinc17.net>  (b8bebc2f9a55)\n\n\t* po/fr.po: Updated French translation.\n\n2014-03-13 23:37 +0000  Ivan Vilata i Balaguer  <ivan@selidor.net>  (375ba5ce358c)\n\n\t* po/ca.po: Updated Catalan translation.\n\n2014-03-13 17:41 +0000  Vsevolod Volkov  <vvv@mutt.org.ua>  (99dda89b7685)\n\n\t* po/uk.po: Updated Ukrainian translation.\n\n2014-03-13 17:41 +0000  Vsevolod Volkov  <vvv@mutt.org.ua>  (061217dd31ef)\n\n\t* po/ru.po: Updated Russian translation.\n\n2014-03-13 17:36 +0000  Jonathan Wakely  <bugs@kayari.org>  (fd531fc9188c)\n\n\t* doc/mutt.man: fix typo in man page.\n\n2014-03-13 03:56 +0000  Petr Pisar  <petr.pisar@atlas.cz>  (67673770fb96)\n\n\t* po/cs.po: Updated Czech translation\n\n2014-03-12 09:44 -0700  Brendan Cully  <brendan@kublai.com>  (d9f45fa9458c)\n\n\t* .hgsigs: mutt-1.5.23 signed\n\n2014-03-12 09:28 -0700  Brendan Cully  <brendan@kublai.com>  (4790aa52f0f2)\n\n\t* .hgtags: Added tag mutt-1-5-23-rel for changeset b8a63730c848\n\n2014-03-12 09:28 -0700  Brendan Cully  <brendan@kublai.com>  (b8a63730c848)\n\n\t* ChangeLog, VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po,\n\tpo/de.po, po/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po,\n\tpo/fr.po, po/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po,\n\tpo/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po: automatic post-release commit for mutt-1.5.23\n\n2014-03-12 09:25 -0700  Brendan Cully  <brendan@kublai.com>  (07556816c588)\n\n\t* build-release: build-release: make sure version is picked up by\n\tautoconf\n\n\t* mkchangelog.sh: mkchangelog: only show log entries on current branch\n\n\t* build-release: No more devel\n\n2014-03-11 10:04 -0700  Michael Elkins  <me@sigpipe.org>  (3c13c4188912)\n\n\t* UPDATING: add user visible changes since 1.5.22 release.\n\n\t* copy.c: Fix buffer overrun caused by not updating a string length\n\tafter address expansion.\n\n2013-10-24 09:55 -0700  Michael Elkins  <me@sigpipe.org>  (3d5e23a66a1a)\n\n\t* init.h: remove trailing period from documentation for\n\t$pgp_list_secring_command\n\n\t* init.h: remove trailing period from documentation for\n\t$pgp_list_pubring_command\n\n2013-04-26 12:10 -0700  Kevin McCarthy  <kevin@8t8.us>  (914e13a3694d)\n\n\t* postpone.c: Fix postpone/resume to not remove a Mail-Followup-To\n\theader (closes #3070)\n\n\tThis solution changes mutt_prepare_template() to check whether the\n\tmessage_id field is NULL to decide whether to wipe the message-id\n\tand mail-followup-to headers when instantiating the message.\n\n\tIf we are resending a message, we don't want the previous message-id\n\tand mail-followup-to headers. If we are resuming a postponed\n\tmessage, however, we want to keep the mail-followup-to header if any\n\twas set before the postpone. (grafted from\n\td7d83298011a6e7aa31bde49e0b6b21209a85fd2)\n\n2013-10-22 15:12 -0500  Aaron Schrab  <aaron@schrab.com>  (4a24e6233a5f)\n\n\t* version.sh: version.sh: step back from $() to ``. closes #3661\n\t(grafted from 01cf5814dfe5e79b65b1d950aab1276d19a9f031)\n\n2013-07-14 19:48 -0700  Kevin McCarthy  <kevin@8t8.us>  (b5c894182719)\n\n\t* muttlib.c: Allow filename prompt when saving multiple attachments to\n\ta directory. (closes #3083)\n\n\tCurrently, if you specify a directory when saving multiple\n\tattachments and choose (a)ll, the first attachment is saved without\n\tconfirming the filename. Subsequent attachments prompt for the\n\tfilename.\n\n2013-10-04 18:22 +0000  Michael Elkins  <me@sigpipe.org>  (95a2230ef889)\n\n\t* mutt.h, postpone.c, send.c: When recalling a postponed message that\n\tdoes not have a x-mutt-fcc header field, generate a default FCC just\n\tas we do for new messages. If x-mutt-fcc is present but empty, we\n\tassume that means the user does not want a copy.\n\n\tcloses #3653\n\n2013-10-23 11:11 -0700  Michael Elkins  <me@sigpipe.org>  (331d48da153b)\n\n\t* crypt-gpgme.c: Ensure that at least one signature was generated to\n\tcatch the case where $pgp_sign_as is unset and no default key is\n\tspecified in ~/.gnupg/gpg.conf\n\n\tcloses #3658\n\n2013-10-06 09:15 -0700  Michael Elkins  <me@sigpipe.org>  (99d913f46eb9)\n\n\t* handler.c, smime.c: use LOFF_T as the type for variables used in\n\tfseeko()\n\n\tcloses #3487\n\n2013-10-04 18:04 +0000  Michael Elkins  <me@sigpipe.org>  (dd67e8649ea4)\n\n\t* crypt-gpgme.c: Display the KeyID when the pubkey is not found in the\n\tuser's keyring during signature verification.\n\n\tcloses #3654\n\n2013-10-23 11:11 -0700  Michael Elkins  <me@sigpipe.org>  (db3028e34ce0)\n\n\t* mutt_ssl_gnutls.c: return 0 if import of cert failed to match other\n\terror conditions.\n\n2013-10-23 11:11 -0700  Michael Elkins  <me@sigpipe.org>  (4dde4bcda519)\n\n\t* mutt_ssl_gnutls.c: only terminate the write-half of the TLS\n\tconnection to avoid hanging if the remote doesn't respond.\n\n\tRFC5246 section 7.2.4 states that the initiator of the closure need\n\tnot wait for the remote to response before closing the read-half.\n\n\tcloses #3633\n\n2013-10-22 21:11 -0700  Brendan Cully  <brendan@kublai.com>  (2ab618f4f6b0)\n\n\t* create stable branch\n\n2013-10-21 11:58 -0700  Michael Elkins  <me@sigpipe.org>  (0d9d7c486331)\n\n\t* doc/manual.xml.head: add note about use of ! ~Q in send-hook when\n\tpaired with reply-hook.\n\n2013-10-19 11:23 -0700  Michael Elkins  <me@sigpipe.org>  (84acf5f0ce92)\n\n\t* crypt-gpgme.c: remove <stdbool.h> and use \"1\" instead of \"true\".\n\tcloses #3657\n\n\tsee #3642 for the change that caused this bug.\n\n2013-10-18 14:12 -0700  Michael Elkins  <me@sigpipe.org>  (b9693e10f431)\n\n\t* UPDATING: update UPDATING with 1.5.22 release date\n\n2013-10-17 22:55 -0700  Brendan Cully  <brendan@kublai.com>  (6f5fe49fdf64)\n\n\t* .hgsigs: mutt-1.5.22 signed\n\n2013-10-17 22:43 -0700  Brendan Cully  <brendan@kublai.com>  (941ba77040a8)\n\n\t* .hgtags: Added tag mutt-1-5-22-rel for changeset 8c5ea668e7e0\n\n2013-10-17 22:43 -0700  Brendan Cully  <brendan@kublai.com>  (8c5ea668e7e0)\n\n\t* ChangeLog, VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po,\n\tpo/de.po, po/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po,\n\tpo/fr.po, po/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po,\n\tpo/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po: automatic post-release commit for mutt-1.5.22\n\n2013-10-16 16:04 +0000  Michael Elkins  <me@sigpipe.org>  (5648f4b2ed44)\n\n\t* rfc822.c: Rework logic to avoid advancing list pointer inside the\n\tfor loop.\n\n\tcloses #3531\n\n2013-10-15 15:41 +0000  Ivan Vilata i Balaguer  <ivan@selidor.net>  (20954d6af1b1)\n\n\t* po/ca.po: updated Catalan translation\n\n2013-10-11 15:51 +0000  Vsevolod Volkov  <vvv@mutt.org.ua>  (d60465c5ee6a)\n\n\t* po/uk.po: updated Ukranian translation\n\n2013-10-11 15:49 +0000  Tamotsu TAKAHASHI  <ttakah@lapis.plala.or.jp>  (b9ba481ed72a)\n\n\t* po/ja.po: updated Japanese translation\n\n2013-10-07 17:32 +0000  Michael Elkins  <me@sigpipe.org>  (804e46bc366e)\n\n\t* doc/pgpewrap.man, doc/pgpring.man: add missing files that were\n\tsupposed to be included with\n\t[76f8df0ac80396559aa80e7f145be6f235a6db51]\n\n2013-10-07 17:21 +0000  hhorak  <hhorak@redhat.com>  (76f8df0ac803)\n\n\t* doc/Makefile.am, doc/PGP-Notes.txt: adds some missing options in doc\n\tand adds man pages for binaries pgpewrap and pgpring.\n\n\tcloses #3643\n\n2013-10-07 17:09 +0000  esr  <esr@thyrsus.com>  (8d888e4d4f0b)\n\n\t* doc/makedoc.c, doc/muttrc.man.head: Problems with muttrc.5:\n\n\tAmbiguous or invalid backslash. This doesn't cause groff a problem.\n\tbut it confuses doclifter and may confuse older troff\n\timplementations.\n\n\tUnknown or invalid macro. That is, one that does not fit in the\n\tmacro set that the man page seems to be using. This is a serious\n\terror; it often means part of your text is being lost or rendered\n\tincorrectly.\n\n\tUse local definitions of .EX/.EE or .DS/.DE to avoid low-level troff\n\trequests in the page body. There are plans to add these to groff\n\tman; in the interim, this patch adds a compatible definition to your\n\tpage.\n\n2013-10-07 16:10 +0000  esr  <esr@thyrsus.com>  (02234de89d2a)\n\n\t* doc/mutt.man: Problems with mutt.1:\n\n\tAmbiguous or invalid backslash. This doesn't cause groff a problem.\n\tbut it confuses doclifter and may confuse older troff\n\timplementations.\n\n\tSpelling error or typo.\n\n2013-10-06 09:31 -0700  nihilhill  <nihilhill@gmail.com>  (24bb691dcde7)\n\n\t* crypt-gpgme.c: include <stdbool.h> for definition 'true'\n\n\tcloses #3642\n\n2013-10-05 15:57 +0800  Kevin McCarthy  <kevin@8t8.us>  (035306822940)\n\n\t* attach.c: Fix segfault when viewing text attachments in compose\n\tmenu. (closes #3644)\n\n\tThe segfault was introduced in changeset b9f9e3147eb4. Since\n\tdecoding and charset conversion aren't needed for attachments when\n\tcomposing a message, this patch reverts to just using\n\tmutt_save_attachment() to view \"raw data\" for text attachments in\n\tthe compose/send case.\n\n\tThis patch is based on Michael Elkins' patch at http://dev.mutt.org/\n\ttrac/attachment/ticket/3644/view_attach_compose_segfault with just a\n\tmissing return value check added.\n\n2013-10-06 14:32 +0000  Aaron Schrab  <aaron+mutt@schrab.com>  (6bcde5f1c7a7)\n\n\t* commands.c, hook.c, imap/command.c, imap/imap.c: Ensure that BUFFER\n\tvariables are initialized to prevent later attempts to traverse an\n\tuninitialized pointer.\n\n2013-10-05 19:25 +0000  Aaron Schrab  <aaron+mutt@schrab.com>  (132861c8b4e9)\n\n\t* commands.c, hook.c, imap/command.c, imap/imap.c, imap/message.c,\n\tinit.c, keymap.c, pattern.c, score.c: Consistently use\n\tmutt_buffer_init function\n\n\tDespite the existence of the mutt_buffer_init function, most\n\tinitializations were instead done with memset. Use the specific\n\tfunction instead to make it easier if later changes are made to how\n\tthe initialization should be done.\n\n2013-10-04 16:47 +0000  Michael Elkins  <me@sigpipe.org>  (0beba37c336b)\n\n\t* crypt-gpgme.c, handler.c, init.c, pop_auth.c: fix more comment typos\n\n2013-07-23 14:07 +0200  Ondřej Bílka  <neleai@seznam.cz>  (bc7e7cf0fed3)\n\n\t* compose.c, crypt-gpgme.c, crypt-mod.h, curs_lib.c, date.c,\n\tdoc/makedoc.c, editmsg.c, handler.c, imap/util.c, init.c,\n\tintl/gettextP.h, intl/plural.c, keymap.c, lib.c, mbox.c, mkdtemp.c,\n\tmutt.h, mutt_menu.h, mutt_ssl.c, mutt_ssl_gnutls.c, muttlib.c, mx.c,\n\tparse.c, pattern.c, pop.c, pop_auth.c, pop_lib.c, recvcmd.c,\n\tregex.c, send.c, signal.c, smime.c, snprintf.c, sort.h, thread.c:\n\tfix typos in comments\n\n2013-04-16 20:12 -0700  Kevin McCarthy  <kevin@8t8.us>  (d3096e8796e7)\n\n\t* pager.c: Don't exit pager if quit=ask is answered \"no\".\n\n\tThis patch addresses ticket 2788.\n\n\tCurrently if you quit ('Q') from inside the pager, with quit=ask-yes\n\tor quit=ask-no, and you respond \"no\", mutt leaves you back in the\n\tindex menu.\n\n\tThis patch changes it so that mutt does not exit the pager.\n\n2013-04-11 02:17 +0000  Michael Elkins  <me@sigpipe.org>  (4c5163272b9c)\n\n\t* browser.c, enter.c, imap/message.c, init.c, mbox.c, muttlib.c, mx.c,\n\tpop.c, query.c, smime.c, system.c: backout c1371176ea45\n\n2013-04-11 01:59 +0000  Michael Elkins  <me@sigpipe.org>  (f99e91980f0f)\n\n\t* getdomain.c, init.c: Backed out changeset 1142ed8974fa\n\n2013-04-10 23:40 +0000  Michael Elkins  <me@sigpipe.org>  (1142ed8974fa)\n\n\t* getdomain.c, init.c: use gethostname() to determine the system host\n\tname\n\n\tuse getaddrinfo() to look up canonical DNS name, and fall back to\n\thinting from /etc/resolv.conf\n\n\tsee #3298\n\n2013-04-10 22:38 +0000  Michael Elkins  <me@sigpipe.org>  (c1371176ea45)\n\n\t* browser.c, enter.c, imap/message.c, init.c, mbox.c, muttlib.c, mx.c,\n\tpop.c, query.c, smime.c, system.c: fix various compiler warnings;\n\tmost were due to unchecked return values from system calls.\n\n2013-03-04 04:14 +0000  is  <is@netbsd.org>  (d498f0e91914)\n\n\t* lib.c: use mkdtemp() to create temporary directory rather than\n\tmktemp() followed by mkdir()\n\n\tcloses #3637\n\n2013-02-23 03:12 +0000  Michael Elkins  <me@sigpipe.org>  (4c16c0d1ba9e)\n\n\t* pop.c, pop_lib.c: use of sscanf() had undefined behavior, replace\n\twith simple parsing instead\n\n\tsee #3636\n\n2013-02-22 18:31 +0000  Michael Elkins  <me@sigpipe.org>  (c7eff98bb299)\n\n\t* smime.c: increase string size by one byte to accomodate the\n\tterminating null character in fscanf() since the maximum field width\n\tdoes not include it\n\n\tcloses #3636\n\n\that tip: Will Fiveash\n\n2013-02-22 16:30 +0000  john beck  <john.beck@oracle.com>  (14596ac2b323)\n\n\t* rfc1524.c, sendlib.c: fix potential buffer overflow in off-by-one\n\tbounds checking error\n\n\tcloses #3635\n\n2013-02-08 17:06 +0000  Michael Elkins  <me@sigpipe.org>  (302044b4ed3f)\n\n\t* curs_lib.c: explicitly call mutt_refresh() prior to endwin() to\n\tforce a screen redraw.\n\n\t[4903e80356d3] removed the call, but some environments (screen+xterm\n\tunder SuSE11/12) don't properly flush without it prior to the\n\tendwin() call\n\n2013-01-31 05:06 +0000  Michael Elkins  <me@sigpipe.org>  (2a1c5d3dd72e)\n\n\t* curs_lib.c: do not use mutt_message() to display prompt in\n\tmutt_yesorno().\n\n\tproperly calculate screen width of prompt string by using\n\tmutt_strwidth() rather than strlen()\n\n\tuse safe_asprintf() return the formatted yes/no string since\n\tspecifying COLS+1 is wrong when dealing with multibyte characters\n\n\tcloses #3412 closes #3352\n\n2013-01-23 21:52 +0000  Michael Elkins  <me@sigpipe.org>  (b86b154f3988)\n\n\t* buffy.c, buffy.h, mh.c, mx.h: add support for $mail_check_recent to\n\tmh mailbox driver\n\n\tcloses #3629\n\n2013-01-23 19:52 +0000  Michael Elkins  <me@sigpipe.org>  (4903e80356d3)\n\n\t* curs_lib.c: do not explicitly reset the terminal attributes and move\n\tthe cursor in mutt_endwin(). endwin() itself should handle this.\n\n\tcloses #3627\n\n2013-01-22 02:02 +0000  Michael Elkins  <me@sigpipe.org>  (acc8b2afdf29)\n\n\t* configure.ac: remove PKG_CHECK_MODULE() check and always use\n\tAC_CHECK_HEADERS()\n\n\tonly check for <idn/idna.h> when <idna.h> isn't found\n\n\tcloses #3626\n\n2013-01-20 21:45 +0000  Michael Elkins  <me@sigpipe.org>  (98e031cd81d4)\n\n\t* configure.ac, main.c, mutt_idna.h: use pkg-config to look for libidn\n\tif available.\n\n\tchecking <idn/idna.h> rather than including -I/usr/include/idn for\n\tSolaris 11.\n\n\tcloses #3624\n\n2013-01-17 23:04 +0000  Michael Elkins  <me@sigpipe.org>  (7fcc0049f250)\n\n\t* attach.c: backout [392e945dfba7]\n\n\tcloses #3293 see #3234\n\n2013-01-17 23:03 +0000  Michael Elkins  <me@sigpipe.org>  (b9f9e3147eb4)\n\n\t* attach.c: when falling back to viewing an attachment as text in the\n\tinternal pager, perform charset conversion\n\n\tthis change is meant to replace [392e945dfba7]\n\n\tsee #3234 see #3293\n\n2013-01-17 02:43 +0000  Michael Elkins  <me@sigpipe.org>  (571e945d6544)\n\n\t* hcache.c, hcache.h, imap/util.c, mh.c, pop.c: use a separate flag\n\tfor mutt_hcache_store() to signal that the gettimeofday() value\n\tshould be substituted, so that a 0 uidvalidity can be used by the\n\timap driver.\n\n\tcloses #3501\n\n2013-01-17 02:10 +0000  Michael Elkins  <me@sigpipe.org>  (b58cdfacfb89)\n\n\t* attach.c, handler.c, protos.h: change semantics of\n\tmutt_is_autoview() to return 1 if there is a matching mailcap entry\n\tand either $implicit_autoview is set or the MIME type matches the\n\tuser's auto_view list.\n\n\tcloses #3496 closes #3426\n\n2013-01-14 20:39 -0800  Michael Elkins  <me@mutt.org>  (1a75c9e477b4)\n\n\t* from.c: detect pipermail-style obscured return path in mbox From\n\tlines\n\n\tsee #1200\n\n2013-01-14 19:23 -0800  Michael Elkins  <me@mutt.org>  (8c75478735a3)\n\n\t* curs_main.c: allow use of sync-mailbox when the current limit has no\n\tvisible messages\n\n\tcloses #3538\n\n2013-01-14 08:50 -0800  Michael Elkins  <me@sigpipe.org>  (05cd8d0d1450)\n\n\t* handler.c: avoid debug warning about trailing whitespace in a base64\n\tencoded attachment\n\n\tcloses #3558\n\n2013-01-04 04:05 +0000  Michael Elkins  <me@sigpipe.org>  (90f7869decec)\n\n\t* Makefile.am: When \"make install\" fails to chgrp or chmod the\n\tmutt_dotlock binary, add the reason why we are doing this so the\n\tuser knows what to look for.\n\n2013-01-03 16:12 -0800  Michael Elkins  <me@sigpipe.org>  (d7d26c40e1e5)\n\n\t* pager.c: Fix regression introduced by [10cc06eff52b] where the\n\tCLEARLINE() removal was not replaced by a move() to position the\n\tcursor at the correct location to draw the status bar.\n\n\tcloses #3619\n\n2013-01-03 19:04 +0000  Michael Elkins  <me@sigpipe.org>  (7fe92ce1cfc1)\n\n\t* parse.c: Remove unused variable `matched'.\n\n2013-01-03 19:04 +0000  Michael Elkins  <me@sigpipe.org>  (6f4ce8ce80a7)\n\n\t* parse.c: Fix memory leak when multiple x-label or supersedes header\n\tfields exist in the header.\n\n\tIn order to keep the current behavior where the value of the last\n\theader field present is the one used, free any previous value.\n\n2013-01-03 08:03 -0800  Michael Elkins  <me@sigpipe.org>  (21457574a9b6)\n\n\t* main.c: Backed out changeset bf84f24e512d\n\n2013-01-02 23:43 +0000  Michael Elkins  <me@sigpipe.org>  (bf84f24e512d)\n\n\t* main.c: display +/-NCURSES_WIDECHAR when displaying ncurses version\n\tto show whether we are linked against -lncurses or -lncursesw\n\n2013-01-01 21:39 +0100  Matthias Andree  <matthias.andree@gmx.de>  (ea52317444ef)\n\n\t* hcache.c: Drop unneeded variable HEADER_CACHE that causes clang\n\twarnings.\n\n\tThe variable was unused and clang warned that it was not emitted to\n\tthe .o file.\n\n2012-12-31 23:29 +0000  Michael Elkins  <me@sigpipe.org>  (32ec63debe52)\n\n\t* init.h: fix xml validation error in manual.xml in auto-generated\n\tcontent due to missing paragraph mark in the $editor docstring\n\n2012-12-31 15:03 -0800  guns  <self@sungpae.com>  (474e9e809054)\n\n\t* rfc822.c: Fix accidental var redeclation with --enable-exact-address\n\n\tcloses #3615\n\n2012-12-31 14:54 -0800  Michael Elkins  <me@sigpipe.org>  (bf6bf2a80c35)\n\n\t* merge\n\n2012-12-31 14:52 -0800  Michael Elkins  <me@sigpipe.org>  (5196c3d6c5d0)\n\n\t* curs_lib.c: reset to color normal before clearing to end of line\n\twhen printing a message/error string\n\n\tcloses #3617\n\n2012-12-31 19:06 +0000  Michael Elkins  <me@sigpipe.org>  (ca67a3dad949)\n\n\t* doc/gen-map-doc: update regexp to include const keyword. The auto\n\tgenerated documentation of functions was failing due to a change in\n\tthe source code format.\n\n2012-12-30 19:48 -0800  Antonio Radici  <antonio@dyne.org>  (b1b49019fec0)\n\n\t* headers.c: Ensure that the in-reply-to header field was actually\n\tpresent before deciding it was removed.\n\n\tcloses #3378\n\n2012-12-30 19:17 -0800  Michael Elkins  <me@sigpipe.org>  (a90f57e0adbd)\n\n\t* ChangeLog: update ChangeLog\n\n2012-12-30 19:14 -0800  Michael Elkins  <me@sigpipe.org>  (c03ba94d8750)\n\n\t* imap/message.c: add __FREE_CHECKED__\n\n2012-12-30 19:12 -0800  Michael Elkins  <me@sigpipe.org>  (f7247ad288e7)\n\n\t* UPDATING: document the TLS changes since 1.5.21\n\n2012-12-30 18:49 -0800  Michael Elkins  <me@sigpipe.org>  (10cc06eff52b)\n\n\t* color.c, compose.c, curs_lib.c, curs_main.c, menu.c, mutt_curses.h,\n\tpager.c, remailer.c: make the SETCOLOR() macro use bkgdset() on\n\tsystems which have it, and attrset() when we don't.\n\n\tcloses #3005\n\n2012-12-30 09:26 -0800  Michael Elkins  <me@sigpipe.org>  (8c0b9ddee11f)\n\n\t* configure.ac: remove m4_translit because it generates a warning with\n\tnewer versions of autoconf when used in AC_INIT. Instead, use tr -d\n\tto output the version string without a trailing newline.\n\n2012-12-27 21:04 -0800  Michael Elkins  <me@mutt.org>  (b0265d385207)\n\n\t* version.sh: restore ability for version.sh to cope with a repository\n\tdirectory with a space in it.\n\n2012-12-27 20:33 -0800  Aaron Schrab  <aaron@schrab.com>  (13c9a5d820f2)\n\n\t* configure.ac, version.sh: Use the directory where the version.sh\n\tscript is located as the directory where it is run. Since this will\n\tbe run in a separate shell anyway, there's no need to worry about\n\tchanging current directory.\n\n\tThis eliminates the need for the caller to specify where the source\n\tdirectory is located, and doesn't require that the code take special\n\tcare to use the appropriate directory. The fallback method of using\n\t`cat VERSION` was broken in this respect, it would not work when run\n\tfrom a different directory.\n\t--- configure.ac | 2 +- version.sh | 7 ++++--- 2 files\n\tchanged, 5 insertions(+), 4 deletions(-)\n\n2012-12-27 17:37 -0800  Michael Elkins  <me@sigpipe.org>  (0f281c548d69)\n\n\t* configure.ac: use [] around body of AC_CHECK_HEADER to avoid\n\tproblems with older versions of autoconf\n\n2012-12-27 18:56 -0800  Michael Elkins  <me@mutt.org>  (8728418605fd)\n\n\t* configure.ac: avoid using m4_esyscmd_s() since it is not available\n\tin older versions of autoconf. use m4_esyscmd() and m4_translit()\n\tto whack the newline instead.\n\n\tsee #3613\n\n2012-12-22 18:00 -0800  Michael Elkins  <me@sigpipe.org>  (de974f67eba3)\n\n\t* configure.ac, init.h, mutt_ssl.c: Uses SSLv23_client_method() in\n\tmutt_ssl_starttls() because TLSv1_2_client_method() does not honor\n\tthe SSL_OP_NO_TLS* flags.\n\n\tcloses #3612\n\n2012-12-22 15:04 -0800  Michael Elkins  <me@sigpipe.org>  (d07c9ee9a92b)\n\n\t* configure.ac: If neither --with-idn nor --without-idn are given, use\n\t-I/usr/include/idn when checking for the libidn header files, if\n\tpresent (needed for Solaris 11).\n\n\tDon't bother checking for the idna_* functions if we didn't find\n\t-lidn\n\n2012-12-21 11:17 +0100  Matthias Andree  <matthias.andree@gmx.de>  (7d55bad3b11f)\n\n\t* patchlist.sh: Fix VPATH-based generation of non-hg-mq based\n\tpatchlists.\n\n\tNote: Makefile.am runs patchlist.sh with $(srcdir)/PATCHES provided\n\ton stdin.\n\n2012-12-21 11:07 +0100  Matthias Andree  <matthias.andree@gmx.de>  (759dd53302a0)\n\n\t* version.sh: Fix VPATH build outside Mercurial repositories.\n\n2012-12-21 12:37 -0800  Michael Elkins  <me@sigpipe.org>  (494af2a964cb)\n\n\t* Makefile.am: add version.sh and check_sec.sh to EXTRA_DIST so they\n\tare including in the \"make dist\" output.\n\n2012-12-20 21:13 -0800  Michael Elkins  <me@mutt.org>  (5554d811eb99)\n\n\t* imap/util.c: fix forgotten RETSIGTYPE change id [18a724e9eba0]\n\n2012-12-20 20:49 -0800  Michael Elkins  <me@mutt.org>  (18a724e9eba0)\n\n\t* configure.ac, sendlib.c, signal.c: remove deprecated check for\n\tsignal() return type\n\n2012-12-20 20:45 -0800  Michael Elkins  <me@mutt.org>  (6de2578088ab)\n\n\t* configure.ac: update configure.ac with autoupdate\n\n2012-12-20 20:34 -0800  Michael Elkins  <me@mutt.org>  (fe28a8bdd598)\n\n\t* configure.ac: change AM_CONFIG_HEADER to AC_CONFIG_HEADERS and move\n\tit after the AM_INIT_AUTOMAKE. config.h was not being generated\n\tfrom the dist package.\n\n2012-12-20 17:09 -0800  Michael Elkins  <me@sigpipe.org>  (21c085ae6e8f)\n\n\t* configure.ac: modernize intialization of configure.ac\n\n2012-12-21 00:38 +0100  Matthias Andree  <matthias.andree@gmx.de>  (0703095bf52d)\n\n\t* Makefile.am: Fix 'make distcheck': missing txt2c* and po/mutt.pot\n\tcleanup\n\n2012-12-20 14:44 -0800  Michael Elkins  <me@sigpipe.org>  (f8774119c433)\n\n\t* menu.c: remove redundant #include statements\n\n2012-12-20 14:40 -0800  Michael Elkins  <me@sigpipe.org>  (489031af8fdd)\n\n\t* menu.c: remove extern decl for Charset_is_utf8 since menu.c includes\n\tmbyte.h which has the same decl.\n\n2012-12-20 11:20 -0800  Michael Elkins  <me@mutt.org>  (6674c087fd4f)\n\n\t* configure.ac: backout out changeset 36b0cc717ecc\n\n2012-12-19 15:26 -0800  Michael Elkins  <me@sigpipe.org>  (879c9516154c)\n\n\t* crypt-gpgme.c: allow for CRLF line endings when comparing for the\n\tOpenPGP block identifiers\n\n\tadapted from http://svnweb.freebsd.org/ports/head/mail/mutt/files\n\t/patch-pgp?revision=301308&view=markup\n\n2012-12-19 14:52 -0800  Michael Elkins  <me@sigpipe.org>  (41089c2982e3)\n\n\t* pager.c: support nbsp in the pager.\n\n\timported from http://svnweb.freebsd.org/ports/head/mail/mutt/files\n\t/patch-nbsp?revision=301308&view=markup\n\n2012-12-19 14:40 -0800  Michael Elkins  <me@sigpipe.org>  (fd2d94a0eb20)\n\n\t* configure.ac: detect newer BDB versions up to 5.2\n\n\timported from http://svnweb.freebsd.org/ports/head/mail/mutt/files\n\t/patch-bdb?revision=301308&view=markup\n\n2010-07-22 20:06 +0200  Fabian Groffen  <grobian@gentoo.org>  (bc39bac75ea8)\n\n\t* regex.c: http://thread.gmane.org/gmane.mail.mutt.devel/15710\n\n\tInterix doesn't have btowc, but it does have mbtowc. Linux manpage\n\talso discourages the use of btowc.\n\n2012-12-19 13:29 -0800  Petr Pisar  <petr.pisar@atlas.cz>  (f7bd9642217f)\n\n\t* po/cs.po: updated cs.po\n\n2012-12-19 11:56 -0800  Michael Elkins  <me@sigpipe.org>  (73900ca5db9a)\n\n\t* menu.c: use WACS_* macros for printing wide versions of the line\n\tdrawing characters when linking against ncursesw.\n\n\tThis patch is based on http://prefix.gentooexperimental.org:8000\n\t/mutt-patches/file/fea851a2808f/solaris-ncurses-chars.patch\n\n2012-12-19 11:08 -0800  Michael Elkins  <me@sigpipe.org>  (36b0cc717ecc)\n\n\t* configure.ac: make configure define _POSIX_C_SOURCE, _XOPEN_SOURCE\n\tand _XOPEN_SOURCE_EXTENDED to comply with POSIX.1-2008 and XSI\n\tconforming applications.\n\n2012-12-19 06:57 -0800  Vsevolod Volkov  <vvv@mutt.org.ua>  (52219fecdac8)\n\n\t* po/ru.po: update ru.po\n\n2012-12-19 06:55 -0800  Vincent Lefevre  <vincent@vinc17.org>  (caf64f14142d)\n\n\t* charset.c: remove duplicate const keyword\n\n2012-12-18 20:46 -0800  Michael Elkins  <me@mutt.org>  (940e528ef852)\n\n\t* mutt_ssl.c: disable tls v1.1/1.2 in mutt_ssl_starttls() based on\n\t$ssl_use_tlsv1_*\n\n\tsee #3571\n\n2012-12-18 20:38 -0800  Michael Elkins  <me@mutt.org>  (6bdd35fb3378)\n\n\t* mutt_ssl_gnutls.c: add support for TLSv1.1/1.2 when using GNUTLS.\n\n\tsee #3571\n\n2012-12-18 19:44 -0800  hncaldwell  <hncaldwell>  (fab920f01ca7)\n\n\t* init.h, mutt.h, mutt_ssl.c: add variables for disabling TLSv1.1/1.2\n\twhen compiled against OpenSSL 1.0.1\n\n\tsee #3571\n\n2012-12-18 13:50 -0800  Michael Elkins  <me@mutt.org>  (f251d523ca5a)\n\n\t* headers.c, lib.h, mutt_crypt.h, parse.c, pop_lib.c, postpone.c,\n\trfc1524.c, rfc822.c, send.c, sendlib.c, url.c: rename iswsp() to\n\tis_email_wsp()\n\n\tadd new inline funtion skip_email_wsp() to be used in lieu of\n\tSKIPWS() when parsing ASCII protocols rather than user input.\n\n\tchange use of SKIPWS() to skip_email_wsp() in places where it is\n\tlikely to be a problem.\n\n2012-12-18 02:21 -0800  Michael Elkins  <me@mutt.org>  (897dcc62e4aa)\n\n\t* sendlib.c: fix problem where mutt_substrdup() was called with the\n\tstart pointer > end pointer, as a result of using SKIPWS(). This\n\toccurred because the header field had an empty body, so the trailing\n\tnewline was skipped over. The fix is to just skip over ascii space\n\tand htab.\n\n\tcloses #3609\n\n2012-12-18 01:53 -0800  Honza Horak  <hhorak@redhat.com>  (d7f4b2e2b09a)\n\n\t* mutt_ssl_gnutls.c: if the peer's x.509 cert is not valid, we need to\n\tallow the user to inspect it even if the digital signatures are\n\tvalid\n\n\tcloses #3506\n\n2012-12-17 20:42 -0800  Vincent Lefevre  <vincent@vinc17.org>  (722c47f6ede9)\n\n\t* po/fr.po: updated fr.po\n\n2012-12-17 17:09 -0800  Honza Horak  <hhorak@redhat.com>  (ca4747442189)\n\n\t* pop.c: fix segfault in pop driver. when rereading the message\n\theader, the ENVELOPE* struct is freed, but ctx->subj_hash retains a\n\tpointer to env->real_subj, so the hash table entry must be deleted\n\tprior to calling mutt_free_envelope()\n\n\thttp://pkgs.fedoraproject.org/cgit/mutt.git/tree/mutt-1.5.21-pophash\n\t.patch?h=f18\n\n2012-12-17 16:47 -0800  Petr Pisar  <petr.pisar@atlas.cz>  (9f8e41dd4e1d)\n\n\t* crypt-gpgme.c: Fix NULL pointer dereference in notation name\n\n\tcloses #3574\n\n2012-12-17 10:39 -0800  Michael Elkins  <me@sigpipe.org>  (e6b271ed1d7f)\n\n\t* configure.ac, mutt_ssl.c: use TLSv1.2 if available in the system\n\tOpenSSL when using starttls\n\n2012-12-17 10:09 -0800  Michael Elkins  <me@sigpipe.org>  (d77d81a69999)\n\n\t* mutt_ssl.c: use SSL_get_version() to display the actual SSL protocol\n\tused rather than the fixed string SSL.\n\n2012-12-16 20:23 -0800  Andrew Gaul  <andrew@gaul.org>  (ed06326ae8a8)\n\n\t* doc/dotlock.man, doc/makedoc.c, doc/smime_keys.man, po/bg.po,\n\tpo/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po,\n\tpo/es.po, po/et.po, po/eu.po, po/fr.po, po/ga.po, po/gl.po,\n\tpo/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, po/lt.po,\n\tpo/nl.po, po/pl.po, po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po,\n\tpo/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po, rfc1524.c: Correct\n\ttypos\n\n2012-12-16 19:33 -0800  Michael Elkins  <me@mutt.org>  (5e745e37fe6e)\n\n\t* init.h: update documentation for $pgp_getkeys_command to note that\n\t%r is replaced with the email address, not the public key ID\n\n\tcloses #1208\n\n2012-12-16 13:28 -0800  Michael Elkins  <me@mutt.org>  (1cc05de753c2)\n\n\t* rfc822.c, rfc822.h: use new function iswsp() in place of isspace()\n\twhen testing for whitespace.\n\n\tcloses #3608 closes #2956\n\n2012-12-15 07:48 -0800  Michael Elkins  <me@mutt.org>  (8aee8497cc2b)\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h, imap/message.c,\n\timap/util.c: make imap_private.h include message.h for\n\tIMAP_HEADER_DATA definition\n\n\tcast &ctx->data to IMAP_HEADER_DATA** to fix compiler warning\n\n\timap_free_header_data should check for *data being NULL, rather than\n\t\"data\"\n\n2012-09-09 19:54 -0700  Andrew Gaul  <andrew@gaul.org>  (d39813193f27)\n\n\t* imap/imap_private.h, imap/message.c: Make imap_free_header_data\n\ttype-safe\n\n\tAlso push conditional into function for safety and consistency with\n\tother free functions.\n\n2012-12-08 12:31 +0100  Matthias Andree  <matthias.andree@gmx.de>  (c4c65eadeb71)\n\n\t* Makefile.am: Fix VPATH build by running txt2c.sh from ${srcdir}\n\trather than \".\".\n\n2012-12-07 09:51 -0800  Michael Elkins  <me@sigpipe.org>  (d626fb87c489)\n\n\t* crypt-gpgme.c: invoke gpgme_check_version() as required to\n\tinitialize the library.\n\n\tmove locale code to initialization function.\n\n\tcloses #3300\n\n2012-12-06 07:56 -0800  Michael Elkins  <me@mutt.org>  (ed5ad234aeed)\n\n\t* init.h: additional documentation for $editor. closes #3602\n\n2012-12-01 14:48 -0800  Michael Elkins  <me@mutt.org>  (dace74dd904a)\n\n\t* doc/manual.xml.head: list-reply documentation should mention its\n\tbehavior wrt the List-Post header field.\n\n\tcloses #3599\n\n2012-12-01 14:32 -0800  Michael Elkins  <me@mutt.org>  (109ebf6d4e53)\n\n\t* send.c: don't perform rfc3676 space stuffing when recalling a\n\tpostponed message where it has already been done.\n\n\tcloses #3600\n\n2012-12-01 14:31 -0800  Michael Elkins  <me@mutt.org>  (2bf065dd23d6)\n\n\t* ascii.c: make ascii_strcasecmp properly handle unequal length\n\tstrings with the same prefix\n\n\tcloses #3601\n\n2012-10-16 18:13 -0500  David Champion  <dgc@uchicago.edu>  (d414971f0c48)\n\n\t* .hgignore, Makefile.am, main.c, muttbug.sh.in, txt2c.c, txt2c.sh:\n\tAdd compiler and configure info to mutt -v output (closes #3537)\n\n\tMakefile(.am) updated to produce conststrings.c, which contains C\n\tstrings representing:\n\n\t* the compiler's own version information;\n\t* the CFLAGS value from the Make environment\n\t* the ./configure options\n\n\tmain.c is updated to print them when running 'mutt -v'.\n\n\ttxt2c.sh is added to produce conststrings.c. txt2c.sh uses a\n\tcompiled txt2c binary if possible, for complete fidelity to the\n\tsource strings in whatever encoding they may use. If txt2c is not\n\tavailable (could not be compiled, or was not compiled natively) it\n\tfalls back on a shell function to approximate the output using sed\n\tand tr.\n\n2012-07-22 11:15 -0700  Brendan Cully  <brendan@kublai.com>  (70810a88ce9f)\n\n\t* muttlib.c: mutt_buffer_init: just memset the buffer (closes #3588)\n\n\tThis was meant to be part of the previous commit.\n\n2012-07-21 19:51 -0700  Brendan Cully  <brendan@kublai.com>  (99dbd23ce78f)\n\n\t* imap/imap.c, imap/util.c, mbyte.c, muttlib.c, parse.c, protos.h:\n\tSplit mutt_buffer_new out of mutt_buffer_init.\n\n\tCurrently, no callers were providing a non-NULL buffer to\n\tmutt_buffer_init, and splitting it will allow more sane semantics\n\tfor buffer allocation, initialization, and destruction in a later\n\tpatch.\n\n2012-07-20 12:32 -0700  Brendan Cully  <brendan@kublai.com>  (6d6df167185c)\n\n\t* commands.c, hook.c, init.c, pattern.c: Do not use stack-allocated\n\tspace for BUFFERs\n\n\tIt will cause mutt_buffer_* to segfault if it needs to grow the\n\tspace. Thanks to Steve Losh for discovering the issue. I have done\n\tsome simple grepping to find other cases, but some may remain.\n\n2012-07-08 22:40 -0700  Dan Fandrich  <dan@coneharvesters.com>  (2f2ebc24920d)\n\n\t* send.c: Set text_flowed after send-hook has been applied (closes\n\t#3550)\n\n2012-07-08 22:27 -0700  Brendan Cully  <brendan@kublai.com>  (5bf02605d988)\n\n\t* mutt_ssl_gnutls.c: silence some style warnings\n\n2012-07-08 17:34 -0700  Antonio Radici  <antonio@dyne.org>  (33415ca7d976)\n\n\t* copy.c, crypt.c, edit.c, enter.c, init.c: Fix some spelling errors\n\t(closes #3493)\n\n2012-07-08 17:25 -0700  Brendan Cully  <brendan@kublai.com>  (243710db60e0)\n\n\t* mutt_ssl_gnutls.c: gnutls:tls_compare_certificates: check strstr for\n\tfailure (closes #3547)\n\n\tA malformed certificate file could cause strstr to return an\n\tunhandled NULL. Thanks to hhorak for the proposed patch. This one is\n\tsimilar but avoids using memmem for the first time (I am not sure\n\tabout its portability).\n\n2012-07-07 21:57 -0700  Antonio Radici  <antonio@dyne.org>  (8fabaffc2c00)\n\n\t* init.c: check_charset: check for NULL before calling strtok_r\n\t(closes #3326)\n\n\tOtherwise, if strtok_r cannot handle NULL an empty *charset setting\n\twill segfault\n\n2012-07-07 15:50 -0700  Brendan Cully  <brendan@kublai.com>  (c6a44f4f6a99)\n\n\t* imap/auth_sasl.c: Do not use SASL for login unless AUTH=LOGIN is\n\tadvertised (closes #3556)\n\n2012-05-25 22:30 +0200  Marco Paolone  <marcopaolone@gmail.com>  (e452440f92a4)\n\n\t* po/it.po: Update Italian translation\n\n2012-05-24 22:02 -0700  Brendan Cully  <brendan@kublai.com>  (0488deb39a35)\n\n\t* configure.ac: Remove AM_C_PROTOTYPES from configure.ac (closes\n\t#3579)\n\n\tI doubt we have any users of that macro nowadays. It will be\n\tinteresting to hear about it if we do.\n\n2012-05-23 23:29 -0400  Brendan Cully  <brendan@kublai.com>  (0fb6d7579fd1)\n\n\t* account.h: Support passwords of up to 127 characters.\n\n\tI received a report on IRC of a failure due to a 64-byte password.\n\n2012-04-29 22:15 -0700  Brendan Cully  <brendan@kublai.com>  (41a8d7dceb6c)\n\n\t* mutt_ssl_gnutls.c: gnutls: catch gnutls_init failures\n\n\tI haven't actually experienced these, but it seems like a good idea.\n\n2012-04-29 22:14 -0700  Brendan Cully  <brendan@kublai.com>  (aadaeb69cbd0)\n\n\t* mutt_sasl.c: give user time to read SASL init error message\n\n2011-12-20 22:24 -0800  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (c26dbc7021f4)\n\n\t* po/ja.po: Updated Japanese translation\n\n2011-12-03 11:13 -0800  Dan Fandrich  <dan@coneharvesters.com>  (9e756d1adb76)\n\n\t* addrbook.c, browser.c, charset.c, color.c, compose.c, crypt-gpgme.c,\n\tcurs_lib.c, curs_main.c, date.c, enter.c, functions.h, globals.h,\n\thandler.c, help.c, imap/auth.c, imap/command.c, imap/message.c,\n\timap/utf7.c, imap/util.c, init.c, init.h, keymap.c, keymap.h, lib.c,\n\tmapping.h, mime.h, mutt_ssl.c, pager.c, parse.c, pattern.c,\n\tpgpkey.c, pgpmicalg.c, pop_auth.c, postpone.c, protos.h, query.c,\n\trecvattach.c, remailer.c, rfc2047.c, rfc822.c, rfc822.h, sendlib.c,\n\turl.c: Declare many structures const (closes #3552)\n\n\tMany structs used in mutt are actually constant but are defined\n\twithout the 'const' keyword. This can slow initialization (slightly)\n\tin some environments due to extra copying and increases the amount\n\tof writable RAM required at run-time, which can be significant on\n\tnon-MMU systems. Using const can also increase the opportunities for\n\tcompiler optimization.\n\n\tThe attached patch marks many such structures as const. On my test\n\tx86 build, this reduces the size of .data by over 50%.\n\n2011-12-03 11:07 -0800  Dan Fandrich  <dan@coneharvesters.com>  (1ed2657f6e24)\n\n\t* ascii.c: Inline some small, often-used functions (closes #3551)\n\n\tWhen I first sent this patch to the mailing list in 2008, my\n\tbenchmarking found a reduction in startup time of 15%.\n\n2011-11-26 20:41 -0800  Vincent Lefevre  <vincent@vinc17.net>  (d7b14ea9f708)\n\n\t* po/fr.po: Updated French translation\n\n2011-11-28 09:46 -0800  Michael Elkins  <me@mutt.org>  (6f65f6d7d4c9)\n\n\t* enter.c: make kill-eow and kill-word consistent in considering words\n\tto consist only of alphanumeric characters. closes #3549.\n\n2011-11-25 12:52 -0800  Michael Elkins  <me@mutt.org>  (ab1b84289213)\n\n\t* sendlib.c: Check that $sendmail is set to avoid potential segfault.\n\tCloses #3548.\n\n2011-07-13 11:05 -0500  David Champion  <dgc@uchicago.edu>  (b01d63af6fea)\n\n\t* hcache.c: Invalidate header caches when spam rules change. closes\n\t#3473\n\n\tUser 'exg' on #mutt reported a problem when using header cache with\n\tIMAP and spam rules. Spam tags are retrieved from cache and not\n\tupdated when spam rules change.\n\n\t1. Enable header caching in muttrc 2. Set spam rules in muttrc 3.\n\tUse IMAP (or POP or Maildir). Your spam rules store spam tags into\n\tyour message headers, and these get cached. 4. Quit mutt 5. Change\n\tyour spam rules in muttrc 6. Relaunch mutt 7. Because of header\n\tcaching, the rfc822 headers are not reparsed, and spam rules are\n\tnot reapplied. User has outdated spam tags.\n\n\tSpam rules are applied during rfc822 header parsing because it's the\n\tonly time we get a full and unadulterated view of all headers. Once\n\theader parse is done we have only processed headers and 'user\n\theaders' (X-headers). We might do spam rule matching against the\n\tstruct HEADER copy of headers, except that:\n\n\ta. the header might not be in HEADER if it's non-standard and not an\n\tX-header; b. spam rules are regular expressions matching any\n\tarbitrary header line, and we would need to map these regexps to\n\tthe header used to create the HEADER fields. This would change\n\tthe syntax and behavior of spam rules dramatically.\n\n\tOne solution, perhaps stopgap, is to invalidate the header cache\n\twhen spam rules change. That's what this patch does. It alters the\n\thcache versioning algorithm so that in addition to using the\n\tcompiled-in checksum of mutt's structures definitions, we also mix\n\tin the user's runtime spam rules. Any time spam rules change the\n\thcachever hash value changes, causing the hcache to be rewritten.\n\n2011-07-01 18:21 -0700  Brendan Cully  <brendan@kublai.com>  (54a454492bd0)\n\n\t* ChangeLog: Update ChangeLog\n\n2011-07-01 17:23 -0700  Brendan Cully  <brendan@kublai.com>  (94eee9410f7a)\n\n\t* version.sh: version.sh: fix(?) failure due to bizarre sh quoting\n\trules\n\n\tI have not checked POSIX, and sh quoting always makes my head hurt,\n\tbut this seems to suffice for my sh (actually bash in sh mode) when\n\tHGROOT contains a space.\n\n2011-05-23 13:22 +0200  Olaf Hering  <olaf@aepfle.de>  (81a7c41040bf)\n\n\t* browser.c, browser.h: folder_file: change type of new from short to\n\tint\n\n\tAs requested by Rocco Rutte in bug #2421 increase the type to int.\n\n\tSigned-off-by: Olaf Hering <olaf@aepfle.de>\n\n\t* pgppubring.c: fix gcc 4.6 warning -Wunused-but-set-variable in\n\tpgppubring.c\n\n\tpgppubring.c: In function 'pgp_parse_pgp3_sig': pgppubring.c:424:17:\n\twarning: variable 'hashalg' set but not used [-Wunused-but-set-\n\tvariable] pgppubring.c:423:17: warning: variable 'pkalg' set but not\n\tused [-Wunused-but-set-variable]\n\n\tSigned-off-by: Olaf Hering <olaf@aepfle.de>\n\n2011-06-29 12:01 -0500  David Champion  <dgc@uchicago.edu>  (8b5e41c6a517)\n\n\t* version.sh: version.sh: 1003.1 \"-k\" instead of obsolete \"+\" syntax\n\t(closes: #3528)\n\n\t* configure.ac, version.sh: version.sh: support building outside of\n\tsource directory\n\n\tReported by Emanuele Giaquinta <e.giaquinta@glauco.it>. Thanks also\n\tto Michael Elkins <me@sigpipe.org>.\n\n2011-06-25 20:07 -0700  Brendan Cully  <brendan@kublai.com>  (b477d7c5733e)\n\n\t* imap/command.c: Parentheses suggested\n\n\t* imap/command.c: Do not subscribe to \\noselect mailboxes. Closes\n\t#3445\n\n2011-06-25 15:42 -0700  Honza Horak  <hhorak@redhat.com>  (0e4f1782ea2e)\n\n\t* imap/message.c: Avoid creating sparse ctx array when fetch responses\n\tare ignored. Closes #3288.\n\n2011-06-25 15:23 -0700  Brendan Cully  <brendan@kublai.com>  (53dcb3a21da4)\n\n\t* compose.c, muttlib.c: Silence some eclipse warnings\n\n2011-06-20 16:39 -0700  Michael Elkins  <me@mutt.org>  (b574d6f9f532)\n\n\t* sendlib.c: rfc2047 encode recipient list in resent-to header field.\n\tcloses #3512\n\n\t* rfc822.c: copy idn status when duplicating address object\n\n2011-06-20 16:07 -0700  antonio  <antonio@dyne.org>  (1bb9002567c4)\n\n\t* doc/manual.xml.head: fix regexp example in documentation\n\n2011-06-18 21:29 -0700  antonio  <antonio@dyne.org>  (b9856206eee4)\n\n\t* mutt_ssl_gnutls.c: Remove the deprecated\n\tgnutls_certificate_verify_peers() in favour of the new\n\tgnutls_certificate_veirfy_peers2()\n\n\tReported on http://bugs.debian.org/624085\n\n\tcloses #3516\n\n2011-06-18 21:07 -0700  Michael Elkins  <me@mutt.org>  (beebe6a4d25d)\n\n\t* imap/auth_login.c: clear logging in message when login succeeded.\n\tcloses #3524\n\n2011-05-23 12:59 +0200  Olaf Hering  <olaf@aepfle.de>  (8570f8a10572)\n\n\t* smime.c: fix gcc 4.6 warning -Wunused-but-set-variable in smime.c\n\n\tsmime.c: In function 'smime_handle_entity': smime.c:1663:8: warning:\n\tvariable 'last_pos' set but not used [-Wunused-but-set-variable]\n\n\tSigned-off-by: Olaf Hering <olaf@aepfle.de>\n\n\t* pgp.c: fix gcc 4.6 warning -Wunused-but-set-variable in pgp.c\n\n\tpgp.c: In function 'pgp_application_pgp_handler': pgp.c:254:8:\n\twarning: variable 'start_pos' set but not used [-Wunused-but-set-\n\tvariable]\n\n\tSigned-off-by: Olaf Hering <olaf@aepfle.de>\n\n\t* crypt-gpgme.c: fix gcc 4.6 warning -Wunused-but-set-variable in\n\tcrypt-gpgme.c\n\n\tcrypt-gpgme.c: In function 'show_one_sig_status': crypt-\n\tgpgme.c:1311:21: warning: variable 'uid' set but not used [-Wunused-\n\tbut-set-variable] crypt-gpgme.c: In function\n\t'pgp_gpgme_application_handler': crypt-gpgme.c:2285:27: warning:\n\tvariable 'anywarn' set but not used [-Wunused-but-set-variable]\n\tcrypt-gpgme.c:2159:8: warning: variable 'start_pos' set but not used\n\t[-Wunused-but-set-variable] crypt-gpgme.c: In function\n\t'crypt_getkeybystr': crypt-gpgme.c:4094:7: warning: variable 'match'\n\tset but not used [-Wunused-but-set-variable]\n\n\tSigned-off-by: Olaf Hering <olaf@aepfle.de>\n\n\t* rfc1524.c: fix gcc 4.6 warning -Wunused-but-set-variable in\n\trfc1524.c\n\n\trfc1524.c: In function 'rfc1524_expand_filename': rfc1524.c:453:20:\n\twarning: variable 'r' set but not used [-Wunused-but-set-variable]\n\n\tSigned-off-by: Olaf Hering <olaf@aepfle.de>\n\n\t* compose.c: fix gcc 4.6 warning -Wunused-but-set-variable in\n\tcompose.c\n\n\tcompose.c: In function 'redraw_crypt_lines': compose.c:113:7:\n\twarning: variable 'off' set but not used [-Wunused-but-set-variable]\n\n\tSigned-off-by: Olaf Hering <olaf@aepfle.de>\n\n\t* imap/imap.c: fix gcc 4.6 warning -Wunused-but-set-variable in imap.c\n\n\timap.c: In function 'imap_open_mailbox': imap.c:558:15: warning:\n\tvariable 'conn' set but not used [-Wunused-but-set-variable] imap.c:\n\tIn function 'imap_open_mailbox_append': imap.c:777:15: warning:\n\tvariable 'conn' set but not used [-Wunused-but-set-variable] imap.c:\n\tIn function 'imap_subscribe': imap.c:1816:15: warning: variable\n\t'conn' set but not used [-Wunused-but-set-variable] imap.c: In\n\tfunction 'imap_complete': imap.c:1944:15: warning: variable 'conn'\n\tset but not used [-Wunused-but-set-variable]\n\n\tSigned-off-by: Olaf Hering <olaf@aepfle.de>\n\n2011-05-22 22:13 -0700  Brendan Cully  <brendan@kublai.com>  (1fc2afbf9e3a)\n\n\t* keymap.c, mbox.c: Fix some minor warnings\n\n2011-03-30 07:52 -0700  Michael Elkins  <me@mutt.org>  (f7160c94ff70)\n\n\t* keymap.c: fix bug where SIGWICH is ignored when $imap_keepalive <\n\t$timeout\n\n\tcloses #3507\n\n2011-03-07 10:17 -0600  David Champion  <dgc@uchicago.edu>  (8d0281f79b21)\n\n\t* configure.ac, dotlock.c, mutt.h, version.sh: Extra information in\n\tmutt version string, redux.\n\n\tRestores [f1b4d1d17200] functionality with a slight change to keep\n\t'make dist' working (see backout in [6b38124a5b81]).\n\n\tAutomake is too much voodoo for me at this time, so I let it keep\n\tVERSION. mutt.h defined MUTT_VERSION as VERSION and the code used\n\tthat, so I removed MUTT_VERSION from mutt.h and put it into config.h\n\tvia configure.ac. A couple of tweaks were needed elsewhere. This\n\trestores the fancy-versioning feature within mutt and keeps 'make\n\tdist' happy.\n\n2011-03-06 07:31 -0800  Brendan Cully  <brendan@kublai.com>  (6b38124a5b81)\n\n\t* configure.ac, version.sh: Back out f1b4d1d17200. It is nice, but it\n\tbreaks make dist.\n\n2011-01-03 13:19 -0600  David Champion  <dgc@uchicago.edu>  (b107737c415c)\n\n\t* patchlist.sh: Include mq-based patches in the mutt patch list.\n\n\tThis augments the contents of the PATCHES file, so that mq-based\n\tbuilds do not need to maintain that file.\n\n\t* configure.ac, version.sh: Include extra information in mutt version\n\tstring for developer builds.\n\n\tWhen a build is based on an hg clone, include extra information\n\tabout the changeset node, distance from a tagged release, and mq\n\tapplied patch count.\n\n\tFor example, after this patch is applied my mutt build identifies\n\titself (in mutt -v and in <show-version>) as:\n\n\tMutt 1.5.21+26,mq+22 (7edc2073390d) (2010-09-15)\n\n\tI have applied 26 changesets applied since 1.5.21 was tagged, 22 of\n\twhich are in my mq patch series. A 1.5.21 release build that is not\n\tmercurial-based would still appear simply as \"1.5.21\".\n\n2011-02-21 23:12 -0800  Brendan Cully  <brendan@kublai.com>  (047bd501d6db)\n\n\t* UPDATING, init.h: Lower $imap_keepalive default to 300\n\tseconds\n\n2010-12-30 10:09 -0800  Brendan Cully  <brendan@kublai.com>  (f01b306ebe0e)\n\n\t* sendlib.c: Handle missing : in write_one_header debug statement.\n\tCloses #3483\n\n2010-10-13 07:38 -0700  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (57568da7d9aa)\n\n\t* thread.c: fix a minor logic error in thread.c, and a dead code line\n\n2010-10-11 07:56 -0700  Michael Elkins  <me@mutt.org>  (033acdc0a947)\n\n\t* pager.c: Backed out changeset 11399121296a\n\n2010-10-07 14:43 -0700  Michael Elkins  <me@mutt.org>  (11399121296a)\n\n\t* pager.c: support non-breakable space character in the pager\n\n2010-10-01 07:14 -0700  Michael Elkins  <me@mutt.org>  (1a4c43138685)\n\n\t* muttlib.c: fix segfault when $message_cachedir is set and opening a\n\tPOP3 mailbox.\n\n\tfixes #3457\n\n2010-09-30 18:11 -0700  Roman Kagan  <rkagan@mail.ru>  (c10f8863e979)\n\n\t* crypt-gpgme.c: use gpgme_strerror() in lieu of gpg_strerror()\n\n2010-09-29 14:17 -0700  Michael Elkins  <me@mutt.org>  (a23835db228d)\n\n\t* globals.h, handler.c, init.h, mutt.h, rfc3676.c: Add $reflow_text\n\tboolean, and $reflow_wrap variables to control display of\n\tformat=flowed text parts.\n\n\t* rfc3676.c: fix typoh in comment\n\n\t* rfc3676.c: fix handling of format=flowed when $wrap is 0.\n\n2010-09-23 11:06 -0700  Michael Elkins  <me@mutt.org>  (f2452f1f1fef)\n\n\t* rfc2047.c: RFC2047 encode/decode the group name in an address list.\n\tcloses #3317\n\n2010-09-23 06:56 -0700  Ivan Vilata i Balaguer  <ivan@selidor.net>  (51ee8e8a56bb)\n\n\t* po/ca.po: updated Catalan translation\n\n2010-09-20 14:04 +0100  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (d2f10c550d90)\n\n\t* mbox.c: Fix typo\n\n2010-09-16 07:19 -0700  Vsevolod Volkov  <vvv@mutt.org.ua>  (0ca7ed91fe7f)\n\n\t* po/ru.po: update ru.po for 1.5.21\n\n2010-09-15 11:47 -0700  me  <me@sigpipe.org>  (59aad6c21703)\n\n\t* regex.c: fix compile error with --with-regex and --without-wc-funcs\n\n2010-09-15 10:53 -0700  Brendan Cully  <brendan@kublai.com>  (bd0afbb35c65)\n\n\t* UPDATING: Belatedly update UPDATING\n\n2010-09-15 10:21 -0700  Brendan Cully  <brendan@kublai.com>  (b42be44bb41a)\n\n\t* .hgsigs: mutt-1.5.21 signed\n\n2010-09-15 10:10 -0700  Brendan Cully  <brendan@kublai.com>  (9c7bd63635de)\n\n\t* .hgtags: Added tag mutt-1-5-21-rel for changeset 25a7f8f7d50d\n\n2010-09-15 10:10 -0700  Brendan Cully  <brendan@kublai.com>  (25a7f8f7d50d)\n\n\t* VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po,\n\tpo/de.po, po/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po,\n\tpo/fr.po, po/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po,\n\tpo/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po: automatic post-release commit for mutt-1.5.21\n\n2010-09-15 10:05 -0700  Michael Elkins  <me@mutt.org>  (54e3139a0362)\n\n\t* safe_asprintf.c: suppress check_sec errors\n\n2010-09-13 17:25 -0700  Michael Elkins  <me@mutt.org>  (20b2d496349f)\n\n\t* init.h: make $mail_check_recent set by default\n\n2010-09-13 19:00 +0100  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (fea3860ff672)\n\n\t* imap/command.c: Restore the previous behaviour of checking for new\n\tmessages in imap folders when mail_check_recent is set.\n\n2010-09-12 19:54 -0700  Michael Elkins  <me@mutt.org>  (a51df78218e8)\n\n\t* buffy.c, buffy.h, imap/command.c, init.h, mbox.c, mutt.h: add\n\t$mail_check_recent boolean to control whether Mutt will notify about\n\tall new mail, or just new mail received since the last visit to a\n\tmailbox\n\n\tcloses #3271\n\n\tpartly addresses #3310\n\n\t* smime.c: fix crash when index contains 0 keys\n\n2010-09-11 07:34 -0700  Michael Elkins  <me@mutt.org>  (0f962f1a6bbb)\n\n\t* send.c: Allow setting message security in send2-hook\n\n\tThis patch delays checking the message security options until after\n\tthe user has an initial chance to edit the message. This allows the\n\tsecurity options to be set in a send2-hook when using $edit_headers.\n\tWithout this patch, the user has no way of automatically setting\n\tsecurity based on recipients since the to/cc prompts are bypassed.\n\n\tThe other change in behavior is if the user happened to use a\n\tsend2-hook to see if the message had security applied *prior* to\n\tediting the message, that no longer works.\n\n\t* keymap.c, keymap.h, main.c: support for ncurses extension allowing\n\tbinding to function keys with modifiers\n\n\t* keymap.c: allow octal codes with more than three digits\n\n\t* crypt-gpgme.c, mime.h, pgp.c, recvattach.c, sendlib.c: add DISPNONE\n\tto mean no preferred Content-Disposition; make pgp-signature parts\n\tDISPNONE for multipart/signed\n\n\t* recvcmd.c: fix problem with reply-hook not working when a\n\tmessage/rfc822 attachment is selected\n\n\t* rfc2047.c: more lenient RFC2047 decoding: accept illegal spaces and\n\tbare question marks in encoded words\n\n\t* curs_main.c, mx.c: fix crash when new mail is received during IMAP\n\tIDLE\n\n\tcloses #3335\n\n2010-08-25 00:30 +0100  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (5302767aa6aa)\n\n\t* rfc2047.c: Use mutt_substrdup in rfc2047_decode_word\n\n2010-08-24 16:40 -0700  Michael Elkins  <me@mutt.org>  (92b02f77e780)\n\n\t* rfc2047.c: detect failure to decode word and copy raw string\n\tinstead; avoids calling strlen() on uninitialized memory\n\n\tcloses #2923\n\n2010-08-24 18:39 +0100  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (ebd4beafe5eb)\n\n\t* mutt_ssl.c: Fix typo.\n\n\t* browser.c, hook.c, init.c, menu.c, mutt_ssl_gnutls.c, pager.c: Do\n\tnot call regfree if regcomp fails. The content of the regex_t\n\tstructure is undefined in this case.\n\n\t* curs_lib.c, mutt_ssl_gnutls.c: use REGCOMP() macro\n\n2010-08-24 10:03 -0700  Michael Elkins  <me@mutt.org>  (5d59c8b737ba)\n\n\t* init.c: add REG_ICASE accidentally removed in changeset 1a35f096c8cb\n\n\t* muttlib.c: do not print debug message on ENOENT\n\n2010-08-14 09:18 -0700  Michael Elkins  <me@mutt.org>  (04fd8ddea579)\n\n\t* url.c: avoid c99 syntax for backwards compat\n\n2010-08-06 21:52 +0200  Matthias Andree  <matthias.andree@gmx.de>  (24a7b1aa2e55)\n\n\t* buffy.c: Fix comparison signedness warnings.\n\n2010-08-12 16:04 -0700  Michael Elkins  <me@mutt.org>  (ced5d3dca974)\n\n\t* imap/util.c: Fix bug in imap_keepalive() which erroneously free\n\tContext when the IMAP connection is shut down by the server.\n\n\tCloses #3410\n\n\t* url.c: url_parse_mailto should return 0 on success\n\n\tfix memory leak errors when unable to parse mailto: URL\n\n\tcloses #3441\n\n\t* mh.c: always update message body size when parsing a maildir message\n\n\t* safe_asprintf.c: call va_end() even when vasprintf returns <0\n\n2010-08-09 20:48 -0700  Michael Elkins  <me@mutt.org>  (6572e8bcd723)\n\n\t* Makefile.am, imap/message.c, lib.c, lib.h, safe_asprintf.c: rename\n\tmutt_sprintf() to safe_asprintf() to match the GNU extension that\n\tperforms a similar task\n\n2010-08-09 10:27 -0700  Vincent Lefevre  <vincent@vinc17.org>  (e86ee9991dc3)\n\n\t* postpone.c: In postpone.c, function mutt_num_postponed, the old\n\t{{{OldPostponed}}} is never freed.\n\n\tcloses #3442\n\n2010-08-09 09:38 -0700  Michael Elkins  <me@mutt.org>  (8051fc8b631c)\n\n\t* send.c: clear the real name when $reverse_realname is unset and a\n\tmatch is hit so that $realname can be set in a reply- or send-hook\n\n\tcloses #3427\n\n\t* doc/manual.xml.head: fix example of mailto: use on the command line\n\n\t* pager.c: fix buffer underrun when processing ANSI escape sequences\n\n\tcloses #3371\n\n2010-08-08 12:29 -0700  Michael Elkins  <me@mutt.org>  (4dcf19c58139)\n\n\t* doc/manual.xml.head, doc/mutt.man: document support for mailto: URLs\n\ton the command line\n\n\tcloses #3400\n\n\t* imap/message.c: avoid error when the user has requested many extra\n\theaders via IMAP\n\n\tcloses #3435\n\n\t* lib.c, lib.h: add a malloc+sprintf combo function\n\n2010-08-08 10:21 -0700  Fabian Groffen  <grobian@gentoo.org>  (d4d703e21cdd)\n\n\t* pattern.c: fix crash in limit when user enters invalid regexp\n\n\tcloses #3417\n\n2010-08-07 06:44 -0700  Michael Elkins  <me@mutt.org>  (cc881d855f05)\n\n\t* mutt_ssl.c: Fix comparison signedness warnings\n\n\t* pop_lib.c: add comment about safety of cast\n\n2010-08-06 21:58 +0200  Matthias Andree  <matthias.andree@gmx.de>  (55f50b2db1f8)\n\n\t* pop_lib.c: Fix comparison signedness warning.\n\n\t* status.c: Fix signedness warning.\n\n\t* .hgignore: Ignore backup files ending in a tilde character.\n\n\t* url.c: Fix comparison signedness warnings.\n\n\t* gnupgparse.c, pop_auth.c: Fix comparison signedness warnings.\n\n\t* lib.h: Resolve if/else empty body ambiguity/warnings when compiling\n\twithout DEBUG.\n\n2010-08-06 17:08 -0700  Michael Elkins  <me@mutt.org>  (5b15d4d96277)\n\n\t* configure.ac, init.c, protos.h: detect availablity of 'long long'\n\n\tcast time_t to 'long long' prior to bitshifting since it can be a\n\tfloat value according to POSIX.1-2008\n\n\tcloses #3439\n\n2010-08-06 21:22 +0200  Matthias Andree  <matthias.andree@gmx.de>  (bf13863e682e)\n\n\t* md5.c: Drop declaration for unused argv/argc parameters.\n\n\tFixes GCC warning with -Wextra.\n\n2010-08-06 13:11 -0700  Michael Elkins  <me@mutt.org>  (998ca956b41b)\n\n\t* init.c, muttlib.c: use a 64-bit random value in temporary filenames.\n\n\tcloses #3158\n\n\t* browser.c: avoid using C99 bool\n\n\t* browser.c, init.h: add %D format string to $folder_format to expand\n\tthe time based on $date_format.\n\n\tproperly set the locale for LC_TIME prior to calling strftime()\n\tcloses #1734 closes #3406\n\n\t* mutt_ssl.c: fix compiler warning about wrong type for\n\tSslSessionCerts\n\n2010-08-06 09:58 +0200  Matthias Andree  <matthias.andree@gmx.de>  (473fbe29f626)\n\n\t* mutt_ssl.c: Unbreak X.509 SubjAltName checks,\n\n\tregression in 6016:dc09812e63a3 that calls strlen on an SSL sk\n\trather than its string payload.\n\n\tcloses #3426\n\n2010-08-06 07:12 -0700  Michael Elkins  <me@mutt.org>  (4ae33a8a1391)\n\n\t* configure.ac: properly set _XOPEN_SOURCE to 600 (POSIX.1-2004) when\n\tdetecting th wc*() functions\n\n\tcloses #3341\n\n2010-08-05 21:57 -0700  Michael Elkins  <me@mutt.org>  (bc5fb152e2ba)\n\n\t* mbox.c: when parsing From_ lines in mmdf/mbox, the TZ should be\n\tcomputed based on the time in the string rather than the current\n\ttime, otherwise DST issues cause the computed time to be wrong.\n\n\tcloses #2177\n\n\t* thread.c: explanatory comments\n\n2010-08-05 17:03 -0700  andreas  <andreas.amann@tyndall.ie>  (0666d9588eac)\n\n\t* curs_main.c, functions.h: do not leave pager when changing sort\n\torder.\n\n\tcloses #2143\n\n2010-08-05 16:47 -0700  Michael Elkins  <me@mutt.org>  (57d4b3839172)\n\n\t* curs_main.c: do not leave pager when using read-thread and read-\n\tsubthread\n\n\tcloses #2137\n\n2010-08-04 17:04 -0700  Petr Písař  <petr.pisar@atlas.cz>  (59ca5d7b1656)\n\n\t* ChangeLog, po/cs.po: Updated Czech translation\n\n2010-08-04 06:37 -0700  Vincent Lefevre  <vincent@vinc17.org>  (a7f05f29d9bc)\n\n\t* po/fr.po: updated French translation\n\n2010-08-03 10:10 -0700  Michael Elkins  <me@mutt.org>  (2c42f4760c8f)\n\n\t* browser.c: add locale.h for compililng with -std=c99\n\n\t* main.c: adjust help for -a to make it clearer that -- is required\n\tterminator\n\n2010-07-31 08:21 -0700  Michael Elkins  <me@mutt.org>  (7cd85c18bfaf)\n\n\t* muttlib.c: Fix buffer underflow in expansion of format pipes. Add\n\tbetter error detection.\n\n\tCloses #3432.\n\n2010-07-18 14:24 -0700  Michael Elkins  <me@mutt.org>  (1a35f096c8cb)\n\n\t* init.c: use REGCOMP() macro\n\n2010-07-18 22:09 +0100  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (d0e0d174d620)\n\n\t* init.c: Skip 'attachments' directive if minor type is not a valid\n\tregexp\n\n2010-07-09 11:07 -0700  Joel Dahl  <joel@FreeBSD.org>  (6b13e8319c1f)\n\n\t* po/sv.po: fix misspelling in Swedish translation\n\n2010-05-18 08:39 -0700  Michael Elkins  <me@sigpipe.org>  (29e37994a536)\n\n\t* send.c: Consider any negative return value from send_message() to be\n\tan error and allow the user to resend.\n\n\tCloses #3411.\n\n2010-04-24 16:10 -0700  Brendan Cully  <brendan@kublai.com>  (4cd2daafd03b)\n\n\t* mutt_ssl.c: openssl: only call SSL_shutdown during clean\n\tshutdown (closes #3407)\n\n2010-04-22 09:14 -0700  Vincent Lefevre  <vincent@vinc17.net>  (6ebdfd09abc1)\n\n\t* po/fr.po: updated French translation\n\n2010-04-14 15:47 -0700  Michael Elkins  <me@mutt.org>  (15b9d6f3284f)\n\n\t* pgp.c: remove toggle and replace with format in pgp-menu\n\n2010-04-12 15:13 -0500  David Champion  <dgc@uchicago.edu>  (41a46373ddd9)\n\n\t* compose.c: Improve clarity/uniformity in compose menu's crypto\n\tdisplay\n\n\tIncorporates feedback on \"Security: None\" key hints.\n\n2010-04-13 06:49 -0700  Michael Elkins  <me@mutt.org>  (4d798ee2898e)\n\n\t* muttlib.c: fix bug handling wide pad char in soft-fill mode\n\n2010-04-11 20:00 -0700  Michael Elkins  <me@mutt.org>  (2cd62f40d840)\n\n\t* compose.c: increase size of buffer used for displaying addresses in\n\tthe compose menu to avoid truncating on widescreen displays\n\n\t* curs_lib.c: clear prompt when user cancels with ^G from a yes/no\n\tprompt\n\n\t* muttlib.c: Fix bug in soft-fill (%*) in $index_format not accounting\n\tfor 'set arrow_cursor'\n\n\t* pgp.c: Remove the (i) option from the PGP-menu when encryption or\n\tsigning is not yet selected. The toggle between PGP/MIME and\n\tTraditional doesn't make sense unless some type of security has been\n\trequested.\n\n\tCloses #3402.\n\n2010-04-06 09:47 -0700  Michael Elkins  <me@mutt.org>  (889aa698cc49)\n\n\t* configure.ac, muttlib.c: fix for compiling Mutt with clang: check\n\tfor wchar_h prior to wctype_h in check for wc funcs\n\n2010-04-05 11:12 -0700  Michael Elkins  <me@mutt.org>  (844174efa648)\n\n\t* doc/manual.xml.head: [doc] Remove bogus -group parameter from\n\tunlists and unsubscribe commands; add links to address group section\n\tfor context.\n\n2010-04-03 20:34 -0700  Michael Elkins  <me@mutt.org>  (cf97505addf8)\n\n\t* init.c: prevent user from setting $charset to an empty string since\n\tother code requires it to be set to a valid string\n\n\tcloses #3326\n\n\t* pager.c: allow regexps to match on continuation header lines in\n\t'color header' commands.\n\n\tcloses #3373\n\n\t* pattern.c: Fix crash on invalid regexp in search string due to\n\tuninitialized BUFFER variable.\n\n\tCloses #3401\n\n2010-04-01 10:10 -0700  Simon Ruderich  <simon@ruderich.org>  (b9baa0234846)\n\n\t* attach.c, commands.c, filter.c, muttlib.c, send.c: fix comment typos\n\n2010-04-01 09:59 -0700  Michael Elkins  <me@mutt.org>  (96ed7cdacdc6)\n\n\t* init.h: Improve documentation for $query_command to note that Mutt\n\tautomatically adds quotes according to shell quoting rules (thx:\n\tSimon Ruderich).\n\n\t* doc/manual.xml.head: Clarify the documentation on what the line-\n\teditor is (thx: Simon Ruderich)\n\n2010-03-31 08:50 -0700  Michael Elkins  <me@mutt.org>  (7e9e31b1bd7b)\n\n\t* muttlib.c: avoid buffer overflow when expanding the format string\n\tassociated with a 'spam' command.\n\n\tcloses #3397\n\n2010-03-23 16:03 -0700  Michael Elkins  <me@mutt.org>  (fe29d691deff)\n\n\t* doc/muttrc.man.head: remove errant commands in secton on setting\n\talternates\n\n2010-03-22 22:16 -0700  Brendan Cully  <brendan@kublai.com>  (69e9a1a0ba2f)\n\n\t* sendlib.c: Fix a format string warning\n\n2010-03-22 20:02 -0700  Marcel Telka  <marcel@telka.sk>  (f544730656c1)\n\n\t* compose.c: redraw entire screen when exiting editor after re-editing\n\tthe message body in the send menu.\n\n\tcloses #3393.\n\n2010-03-21 09:52 -0700  Michael Elkins  <me@mutt.org>  (0a29e3f4f4b9)\n\n\t* sendlib.c: Do not assume whitespace follows the colon in a header\n\tfield.\n\n\tCloses #3385.\n\n2010-03-08 15:13 -0800  Brendan Cully  <brendan@kublai.com>  (ad6d799951cb)\n\n\t* configure.ac: Comment about search libsasl for sasl2 functions\n\n2010-03-08 14:04 -0600  Will Fiveash  <Will.Fiveash@Sun.COM>  (b92b9c6a1c85)\n\n\t* configure.ac: OpenSolaris sasl fix for configure.ac\n\n2010-03-08 15:00 -0800  Brendan Cully  <brendan@kublai.com>  (05cec973f0d9)\n\n\t* pattern.c: When regexp compilation fails, report actual pattern\n\talong with error.\n\n\t* muttlib.c: mutt_buffer_printf: NULL dptr means use data\n\n\t* pattern.c: If regcomp fails, assume rx has not been allocated. Fixes\n\ta core dump for save-hook '~f foo\\.bar@(something|other)\\.com' =foo.\n\n2010-03-02 11:31 -0800  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (fec2720ff6ef)\n\n\t* rfc822.c: Fix #2014. Thanks to Vincent Lefevre for help\n\twith this one.\n\n2010-03-02 11:16 -0800  Brendan Cully  <brendan@kublai.com>  (41cf44ddbb4c)\n\n\t* copy.c: Fix thinko in [cc02f079b1b9]\n\n2010-03-01 22:40 -0800  Brendan Cully  <brendan@kublai.com>  (cc02f079b1b9)\n\n\t* copy.c: Guard dequote with NULL check on personal field\n\n\t* copy.c, rfc822.c, rfc822.h: Another attempt to dequote\n\tRFC2047-encoded address comments (see #2014)\n\n\t* rfc822.c: Backed out changeset 2a4ca6917fd0. It is incompatible with\n\t$assumed_charset (see #2014).\n\n2010-02-28 23:03 -0800  Brendan Cully  <brendan@kublai.com>  (2a4ca6917fd0)\n\n\t* rfc822.c: RFC-2047 decode address text before dequoting it (see\n\t#2014)\n\n\t* doc/manual.xml.head: Fix next-unread-mailbox name in\n\tdocumentation. Closes #3319.\n\n2010-02-28 17:23 -0800  Antonio Radici  <antonio@dyne.org>  (25459cbb132a)\n\n\t* po/de.po: Fix German translation of \"No undeleted messages.\" (closes\n\t#3372)\n\n\t* pop_lib.c: pop: allow user-specified port to override\n\tdefault in URL. Closes #3322.\n\n2010-02-28 17:00 -0800  ludwig  <ludwig@fh-worms.de>  (2c78b28027cc)\n\n\t* crypt-gpgme.c: GPGME: Sender verification should be canse-\n\tinsensitive for domain names. Closes #2180\n\n2010-02-26 18:18 -0800  Brendan Cully  <brendan@kublai.com>  (40eca68c394a)\n\n\t* UPDATING, init.h: Make $thorough_search default to yes\n\t(closes #3386)\n\n2010-02-23 12:42 -0800  Brendan Cully  <brendan@kublai.com>  (57124ea5592e)\n\n\t* commands.c: Don't use freed ctx.path when updating utime of target\n\tmailbox in save-message. Thanks to Sean Boudreau for the bug report.\n\n2010-02-22 23:01 -0800  Vincent Lefevre  <vincent@vinc17.net>  (f17302c10229)\n\n\t* po/fr.po: Updated French translation.\n\n2010-02-21 13:16 -0800  Brendan Cully  <brendan@kublai.com>  (a6fddecdc5f5)\n\n\t* curs_lib.c: Make mutt_yesorno use mutt_message to print query.\n\tCloses #3352.\n\n2010-02-20 21:56 -0800  Gregory Shapiro  <dev.mutt.org@g.gshapiro.net>  (f723e07c8e6d)\n\n\t* OPS, UPDATING, curs_main.c, functions.h: Add imap-logout-\n\tall to log out of all IMAP connections. Closes #2880.\n\n2010-02-17 00:47 -0800  Simon Ruderich  <simon@ruderich.org>  (260d39279161)\n\n\t* doc/manual.xml.head: Document 'n' and 'o' flags in index\n\n\t* doc/devel-notes.txt, doc/muttrc.man.head, init.h,\n\trfc1524.c: Spelling fixes\n\n2010-02-10 23:29 -0800  Brendan Cully  <brendan@kublai.com>  (b7ec848af36b)\n\n\t* doc/manual.xml.head: Fix a typo (closes #3379)\n\n2010-02-01 23:40 -0800  Antonio Radici  <antonio@dyne.org>  (e9965b78e92d)\n\n\t* po/sv.po: The Swedish translation has a suboptimal\n\ttranslation of the word \"Bad\" in several places. The proposed patch\n\tsubstitutes Dålig (which implies bad \"as in quality\", and not bad\n\t\"as in error\") for Felaktig (erroneous).\n\n\tCloses #3370.\n\n\t* init.h: Small fix to the muttrc manpage. Closes #3374\n\n2010-01-13 19:12 +0100  Matthias Andree  <matthias.andree@gmx.de>  (e2c60de29015)\n\n\t* configure.ac: Fix hcache build on systems with $(EXEEXT), include it\n\tin mutt_md5.\n\n2009-12-29 00:33 -0500  Brendan Cully  <brendan@kublai.com>  (31881f38ca1e)\n\n\t* curs_lib.c: Hack mutt_wstr_trunc to treat M_TREE characters as 1\n\tcell. Closes #3364.\n\n2009-12-28 22:13 -0500  Brendan Cully  <brendan@kublai.com>  (359de549b2d1)\n\n\t* doc/manual.xml.head: Remove spurious quotes from query_command\n\texample. Closes #3365.\n\n2009-12-14 10:24 -0800  Brendan Cully  <brendan@kublai.com>  (736b6af3c5f1)\n\n\t* rfc1524.c: Fix off-by-one errors in mailcap parser.\n\tCloses #3362\n\n2009-12-10 22:52 -0800  Daniel Jacobowitz  <dan@debian.org>  (b7d2cb7c7ce1)\n\n\t* hcache.c: Do not store header color in hcache. If the color\n\tdirective is removed from muttrc, the cached value from the last\n\tdirective would otherwise still be in effect.\n\n2009-12-07 23:08 -0800  Patrick Welche  <prlw1@cam.ac.uk>  (1cf34ea1f128)\n\n\t* mutt_ssl.c: STACK* is not defined with newer SSL, use\n\tSTACK_OF instead. Closes #3356.\n\n2009-12-07 22:46 -0800  Peter Rosin  <peda@lysator.liu.se>  (fc9563de3dcb)\n\n\t* snprintf.c: Output %p as unsigned in the bundled snprintf\n\n2009-11-14 14:31 -0800  Brendan Cully  <brendan@kublai.com>  (6928f522ac48)\n\n\t* curs_main.c: Back out e67f4c347bb4.\n\n\tI could not reproduce the problem, and the change makes it\n\timpossible to change to a real folder when no folder is currently\n\topen.\n\n2009-10-28 23:03 -0700  Brendan Cully  <brendan@kublai.com>  (89fb586edda2)\n\n\t* sendlib.c: Unfold headers to wrap length in pager, when weed is set.\n\n\tFrom Rocco's patch queue.\n\n2009-09-22 23:29 -0700  Antonio Radici  <antonio@dyne.org>  (5037c59a589e)\n\n\t* po/it.po: Correct Italian translation of y/n/a prompt.\n\tCloses #3336\n\n2009-08-27 22:10 -0700  Petr Písař  <petr.pisar@atlas.cz>  (605559e4f88f)\n\n\t* po/cs.po: Updated Czech translation.\n\n2009-08-20 11:34 +0200  René Clerc  <rene@clerc.nl>  (6b48ff4e69a3)\n\n\t* doc/manual.xml.head: No-brain documentation typo fix\n\n2009-08-20 11:33 +0200  Rocco Rutte  <pdmef@gmx.net>  (e196cfc00105)\n\n\t* doc/manual.xml.head: Backed out changeset c9dd93b09ce7\n\n2009-08-20 11:25 +0200  René Clerc  <rene@clerc.nl>  (c9dd93b09ce7)\n\n\t* doc/manual.xml.head: No-brain documentation typo fix Hi Rocco,\n\n\tAttached a patch for the documentation that fixes a small typo I\n\tstumbled upon. If you'd rather have me opening a trac ticket,\n\tplease say so; since this is such a no-brainer I figured I'd e-mail\n\tyou directly.\n\n2009-08-17 17:07 +0200  Rocco Rutte  <pdmef@gmx.net>  (d0fce0eec0b3)\n\n\t* doc/manual.xml.head, doc/muttrc.man.head, init.h: Doc: fix more\n\ttypos\n\n\t* doc/Makefile.am, doc/mutt.pwl: Doc: fix aspell calls, add\n\tcustom mutt-only wordlist\n\n\t* curs_main.c: Require already opened folder when using templates for\n\tchange-folder.\n\n\tFor example, start with -y and type a wrong IMAP password so that no\n\tmailbox is open. Trying to change folders resulted in a crash.\n\n2009-08-14 21:29 +0200  Rocco Rutte  <pdmef@gmx.net>  (6a08a5244d60)\n\n\t* pattern.c: Clear last search pattern if it's invalid.\n\tCloses #3315.\n\n\tWe keep both, the string version and compiled version around for\n\tsearch-next; however, in case of parsing errors we dropped only the\n\tcompiled version and not the string one making the code attempting\n\tto perform a search using a NULL pattern.\n\n\t* pattern.c: Bail on missing pattern modifiers at end of pattern.\n\tCloses #3314.\n\n2009-08-13 23:49 +0200  Rocco Rutte  <pdmef@gmx.net>  (f8d50e968853)\n\n\t* doc/Muttrc.head, doc/manual.xml.head, init.h: Docs: fix\n\ttypos/style\n\n2009-08-11 12:22 -0700  Tomas Hoger  <thoger@redhat.com>  (dc09812e63a3)\n\n\t* mutt_ssl.c: Catch SSL null prefix attach (openssl)\n\n2009-08-09 14:45 -0700  Brendan Cully  <brendan@kublai.com>  (002b4676d502)\n\n\t* buffy.c: Add buffy_new and buffy_free abstractions.\n\n2009-08-09 14:53 +0200  Christian Ebert  <blacktrash@gmx.net>  (0153dbc12dc4)\n\n\t* doc/manual.xml.head: manual: fix wrong spell checker assumptions\n\n2009-08-09 14:35 +0200  Rocco Rutte  <pdmef@gmx.net>  (59b4c73e7254)\n\n\t* doc/manual.xml.head: Manual: Fix typos, consequently use\n\ten_US spelling\n\n2009-08-08 22:50 -0700  Brendan Cully  <brendan@kublai.com>  (d4ea7f571f10)\n\n\t* buffy.c: Split out mailbox-specific code in mutt_buffy_check\n\n\t* buffy.c, muttlib.c, mx.c, mx.h, status.c: Unconditionally define\n\tM_IMAP, M_POP. These aren't bloat, and not having them creates a lot\n\tof #ifdef clutter.\n\n\t* curs_lib.c: Abort prompt on ^C, as was the case prior to\n\t12a6de725483\n\n2009-08-04 10:47 -0700  Vincent Lefevre  <vincent@vinc17.org>  (15a695678b7b)\n\n\t* po/fr.po: Updated French translation.\n\n2009-08-04 12:34 +0200  Rocco Rutte  <pdmef@gmx.net>  (25c2d70f2f00)\n\n\t* doc/manual.xml.head: Manual: Add some words of warning to really\n\tremove IRT header when intended\n\n\t* doc/manual.xml.head: Manual: Put mailbox shortcuts into\n\ttable for readability\n\n\t* doc/manual.xml.head: Manual: Fix docs for push/exec\n\n2009-08-04 12:08 +0200  Johan D  <djo33@free.fr>  (14bb498c6a1c)\n\n\t* mh.c: Fix MH parsing, fixes [0698e8195545]. Closes #3312\n\n2009-08-01 15:16 +0200  Rocco Rutte  <pdmef@gmx.net>  (29727d19634a)\n\n\t* doc/manual.xml.head: Manual: use full names for &eacute; and\n\t&egrave; entities. Closes #3286.\n\n\tThis is necessary because we want to install a us-ascii manual.txt\n\tthat would contain only \"e\" instead of accented characters.\n\n2009-07-30 17:56 +0200  Rocco Rutte  <pdmef@gmx.net>  (4a572310c3b5)\n\n\t* main.c: Fix mutt -h output for -a/-- options\n\n2009-07-29 13:26 -0700  Brendan Cully  <brendan@kublai.com>  (a2a4286491b4)\n\n\t* hcache.c, hcache.h, imap/util.c: Harmonize hcache uidvalidity size\n\tto unsigned int (per IMAP RFC). Closes #3296.\n\n2009-07-28 23:16 +0200  Rocco Rutte  <pdmef@gmx.net>  (153eac9e03e7)\n\n\t* Makefile.am: Add group.h to distribution\n\n\t* group.c, group.h, init.c, rfc822.c: Fix some issues with\n\tungroup [...] *\n\n2009-07-27 21:14 -0700  Kees Cook  <kees@outflux.net>  (2fc9348684fe)\n\n\t* mh.c: Properly propagate mh_read_sequences result. Closes #3308.\n\n2009-07-27 20:49 -0700  Brendan Cully  <brendan@kublai.com>  (5c076ed18883)\n\n\t* configure.ac: Do not overwrite docdir unless --with-\n\tdocdir was explicitly given. This allows --docdir from autoconf\n\t2.60+ to work, though if given --with-docdir will silently override\n\t--docdir. Closes #3282.\n\n2009-07-24 14:30 +0200  Rocco Rutte  <pdmef@gmx.net>  (86e066a206ac)\n\n\t* po/de.po: Update German translation\n\n\t* init.c: Fix check_sec.sh warning\n\n2009-07-23 23:36 -0400  Aron Griffis  <agriffis@n01se.net>  (0ee27568ad09)\n\n\t* init.c: fix :reset to work with empty strings\n\n\tSigned-off-by: Aron Griffis <agriffis@n01se.net>\n\n2009-07-23 23:32 -0700  Vincent Lefevre  <vincent@vinc17.org>  (223020f50cb7)\n\n\t* po/fr.po: Updated French translation.\n\n2009-07-23 23:51 +0200  Matthias Andree  <matthias.andree@gmx.de>  (1e77b368ef55)\n\n\t* charset.h, rfc2047.c: Use proper prototype for\n\tmutt_get_default_charset(), fix fallout.\n\n\t* bcache.c, charset.c: Fix two warnings \"the address of 'foo' will\n\talways evaluate as 'true'\".\n\n2009-07-23 17:28 +0200  Rocco Rutte  <pdmef@gmx.net>  (1597c2074a52)\n\n\t* doc/manual.xml.head: Manual: better document what address\n\tgroups are (for)\n\n\t* group.c, group.h, init.c, init.h, pattern.c, protos.h, rfc822.c,\n\trfc822.h: Implement ungroup command. Closes #3304.\n\n\t* init.c, mutt.h, muttlib.c: Move remove_from_rx_list() to muttlib.c,\n\tname it mutt_remove_from_rx_list()\n\n2009-07-22 15:25 +0200  Fabian Groffen  <grobian@gentoo.org>  (d41e043fa775)\n\n\t* keymap.c: Use CRYPT_BACKEND_GPGME instead of non-existent\n\tHAVE_GPGME\n\n2009-07-22 14:43 +0200  kees  <kees@outflux.net>  (848f08512bf3)\n\n\t* hcache.c, rfc822.h: Properly restore addresses from hcache using\n\trfc822_new_address(). Closes #3302.\n\n\t* mh.c: Don't leak mhs flags in mh_buffy(). Closes #3303.\n\n2009-07-17 17:57 -0400  Aron Griffis  <agriffis@n01se.net>  (a3c4b605cfad)\n\n\t* UPDATING: add batch mode send-hooks note to UPDATING\n\n2009-07-14 20:25 -0700  Aron Griffis  <agriffis@n01se.net>  (084fb086a0e7)\n\n\t* send.c: Make send-hooks work for batch mode. Closes\n\t#3219.\n\n\tHandle SENDBATCH inline with the normal sending code, instead of\n\thandling it separately. This allows send-hooks to run, along with\n\tremoving a number of unnecessarily lines of code.\n\n2009-07-11 14:52 +0200  Rocco Rutte  <pdmef@gmx.net>  (6f942afe60b5)\n\n\t* charset.c, mbyte.c: Recognize charset extensions, see #3150.\n\n\tWith utf-8//TRANSLIT, we internally didn't recognize it as utf-8.\n\tThis leads to badly broken behaviour if --without-wc-funcs is used\n\tfor some reason. In that case, if we have utf-8 as charset, we\n\timplement our own wide char functions; for all other charsets, we\n\tuse the system single-byte locale functions. And using these with\n\tutf-8 is broken.\n\n\t* curs_lib.c: Render blanks to spaces in index, fixes\n\t[298194c414f0]\n\n\twcwidth(<tab>) returns -1 so 'foo<tab>bar' was rendered to 'foobar',\n\tand now to 'foo bar'. Closes #3270 again.\n\n2009-07-08 13:37 +0200  Rocco Rutte  <pdmef@gmx.net>  (f22b71d8005a)\n\n\t* mbyte.c: Fix compiler warning\n\n2009-07-07 15:03 +0200  Rocco Rutte  <pdmef@gmx.net>  (d5e03a46518c)\n\n\t* TODO: Update TODO\n\n2009-07-07 10:49 +0200  Matthias Andree  <matthias.andree@gmx.de>  (cc4d6044b31e)\n\n\t* INSTALL: GNU-make based VPATH builds work.\n\n2009-07-07 13:16 +0200  Rocco Rutte  <pdmef@gmx.net>  (f161c2f00d84)\n\n\t* UPDATING, bcache.c, doc/manual.xml.head, hcache.c,\n\tmuttlib.c, protos.h: Make hcache+bcache paths always UTF-8. Closes\n\t#3284.\n\n\t* UPDATING, globals.h, init.h, sendlib.c: Add $wrap_headers. Closes\n\t#3135\n\n\t* doc/manual.xml.head: Manual: mention terminal setup for\n\tcharsets, more unicode pros.\n\n\tCloses #3292.\n\n2009-07-06 15:28 +0200  Rocco Rutte  <pdmef@gmx.net>  (ccab6c56b557)\n\n\t* doc/manual.xml.head: Manual: Add a note about when/why to use utf-8\n\n2009-07-05 18:36 -0700  Brendan Cully  <brendan@kublai.com>  (118b8fef8aae)\n\n\t* buffy.c, buffy.h, mx.c: Suppress new mail notification\n\tfrom mailbox just left. Closes #3290.\n\n2009-07-02 20:42 +0200  Rocco Rutte  <pdmef@gmx.net>  (042f2ce0b870)\n\n\t* doc/manual.xml.head: Manual: minor fixes\n\n\t* doc/manual.xml.head, doc/mutt.css: Manual: Render\n\tcomments in examples a lighter for readability\n\n\t* doc/manual.xml.head, doc/manual.xml.tail: Manual: Reformat\n\tparagraphs, fix &tilde; -> ~ breakage\n\n\t* doc/manual.xml.head: Manual: rework MIME chapter a bit\n\n\t* doc/gen-map-doc, doc/manual.xml.tail, functions.h: Manual: Generate\n\tmore pretty titles/ids for key binding tables\n\n\t* doc/manual.xml.head: Manual: fix supported version\n\tnumbers for mixmaster\n\n2009-07-02 00:06 -0700  Brendan Cully  <brendan@kublai.com>  (029ba140fb48)\n\n\t* curs_main.c: Handle keepalive failure when changing folders. There\n\tare probably many other places where this kind of thing could happen\n\tthough. See #3028.\n\n2009-07-01 18:13 -0700  Rocco Rutte  <pdmef@gmx.net>  (f6c6066a5925)\n\n\t* account.c, mutt_sasl.c, smtp.c: Make getuser/pass abort\n\tif input is required in batch mode. Replaces [0a3de4d9a009]. See\n\t#3289.\n\n\t* doc/manual.xml.head: Manual: Add detailed section on charset\n\thandling\n\n\t* smtp.c: SMTP: use $smtp_pass in batch mode. Closes #3289.\n\n\tmutt_account_getpass() copying the password from $smtp_pass into the\n\taccount structure is only called from the SASL callback we only use\n\tif we're sure we don't need curses (i.e. have the pass already).\n\n2009-06-30 17:32 +0200  Rocco Rutte  <pdmef@gmx.net>  (f4baa2f1251a)\n\n\t* pgpewrap.c: Add missing config.h include to pgpewrap.c\n\n\tIt technically doesn't need it, but pgpewrap should be rebuilt after\n\tconfigure ran, too.\n\n\t* doc/Makefile.am: Manual: Run lynx with --display_charset\n\t=us-ascii, see #3286.\n\n2009-06-29 18:20 +0000  Rocco Rutte  <pdmef@gmx.net>  (03c65df651e0)\n\n\t* UPDATING, doc/manual.xml.head: Manual: Move new mail detection into\n\tits own section\n\n\tThis also updates some parts of docs and adds missing ones. It also\n\tadds a note about the recent changes, also to UPDATING.\n\n2009-06-29 18:03 +0200  Rocco Rutte  <pdmef@gmx.net>  (d3a7e0334e5d)\n\n\t* url.c, url.h: Revert URL path encoding for now\n\n\tIt breaks gmail url display and makes bcache use different paths.\n\tStill we need to think about whether we want to allow any character\n\tin bcache paths (possibly multibyte, possibly depending on\n\t$charset).\n\n2009-06-28 20:49 -0700  Brendan Cully  <brendan@kublai.com>  (298194c414f0)\n\n\t* configure.ac, curs_lib.c: Allow tabs in index subject. Closes #3270.\n\n\t* imap/util.c: Allow ImapDelimChars to be unset\n\n\t* mutt.h: Rename struct thread to struct mutt_thread. Closes #3279.\n\n\t* imap/command.c: Not being able to start an IMAP command\n\tis a fatal error. Closes #3155.\n\n\t* imap/auth_login.c: IMAP LOGIN does not support separate user and\n\tlogin accounts. Use the user account for both. Closes #3240.\n\n2009-06-28 22:40 +0200  Rocco Rutte  <pdmef@gmx.net>  (71a84cf22c42)\n\n\t* url.c, url.h: Fix URL parser to encode paths\n\n2009-06-28 15:42 +0200  Deng Xiyue  <manphiz@gmail.com>  (fe688db8099a)\n\n\t* po/zh_CN.po: Update Simplified Chinese translation. Closes #3281.\n\n2009-06-27 17:07 +0200  Rocco Rutte  <pdmef@gmx.net>  (7ca8d09f7d2c)\n\n\t* hg-commit: hg-commit: drop changelog entries from hg log\n\n\t* doc/makedoc.c, doc/manual.xml.head: Manual: stop using DocBook\n\tentities mapping to ascii chars\n\n\tThere's no real benefit, it only makes reading/writing the manual\n\tharder. All entities that potentially map to non-ascii characters\n\t(&mdash, &auml, etc.) are left so that manual.xml remains pure\n\tascii.\n\n2009-06-26 21:47 -0700  Brendan Cully  <brendan@kublai.com>  (b2b97c7a2ae6)\n\n\t* imap/imap_private.h, imap/message.c, imap/util.c: Set\n\tinternaldate of messages appended to IMAP mailboxes\n\n2009-06-26 20:27 +0200  Rocco Rutte  <pdmef@gmx.net>  (156e6d6e34fc)\n\n\t* doc/manual.xml.head: Manual: try to explain that and why\n\tcopiousoutput should come last\n\n\t* po/de.po: Update German translation\n\n2009-06-25 21:46 +0200  Rocco Rutte  <pdmef@gmx.net>  (c5d0252e8f72)\n\n\t* rfc3676.c: Fix f=f corner case with DelSp=yes abuse\n\n\t* sendlib.c: header folding: treat From_ specially, never wrap on\n\tsending side\n\n\t* sendlib.c: Add Date: header to postponed messages\n\n\t* sendlib.c: Only add Status: header (fcc/postpone) when\n\tsaving to mbox/mmdf\n\n\t* compose.c: Treat messages written with <write-fcc> as fcc, not\n\tpostponed.\n\n2009-06-23 10:13 -0700  Vincent Lefevre  <vincent@vinc17.org>  (bc2463863c15)\n\n\t* po/fr.po: Updated French translation.\n\n2009-06-23 16:56 +0200  Rocco Rutte  <pdmef@gmx.net>  (d152033cf967)\n\n\t* doc/manual.xml.head: Manual: Simply type conversion section wording.\n\n\t* Makefile.am, configure.ac: Don't build hcversion.h and mutt_md5\n\twithout hcache\n\n\t* handler.c, mutt.h, muttlib.c: Implement state_putws() and\n\tstate_putwc(), see #3148.\n\n\tThis is needed to unbreak text/enriched rendering on Linux.\n\n\t* commands.c: Only use keypad() when curses is running\n\n2009-06-23 00:28 -0700  Vincent Lefevre  <vincent@vinc17.org>  (642987450d83)\n\n\t* curs_lib.c: Only beep when displaying error messages (unbreaks\n\t[54bc1ef602e7])\n\n2009-06-23 00:20 -0700  Brendan Cully  <brendan@kublai.com>  (f5849c72a274)\n\n\t* crypt-gpgme.c: Update crypt-gpgme for mutt_mktemp change\n\tin [ed7eb5de7536]\n\n2009-06-22 17:36 +0200  Rocco Rutte  <pdmef@gmx.net>  (54bc1ef602e7)\n\n\t* curs_lib.c: Make mutt_curses_(error|message) format message to COLS\n\tchars. Closes #3278.\n\n\tWhile I'm at it, fold both functions into one.\n\n2009-06-22 17:21 +0200  Alexey Tourbin  <at@altlinux.org>  (e378bbdc3f0f)\n\n\t* smime_keys.pl: smime_keys: use Time::Local module. Closes #3277.\n\n2009-06-22 17:17 +0200  Rocco Rutte  <pdmef@gmx.net>  (4899f140ec25)\n\n\t* mbyte.c: Fix included iswupper(). Closes #3276.\n\n\t* lib.c: Catch range errors when converting to long.\n\n2009-06-21 21:57 +0200  Rocco Rutte  <pdmef@gmx.net>  (ed7eb5de7536)\n\n\t* attach.c, commands.c, crypt.c, editmsg.c, handler.c, headers.c,\n\thelp.c, history.c, imap/message.c, main.c, mbox.c, muttlib.c, mx.c,\n\tpattern.c, pgp.c, pgpkey.c, pgpmicalg.c, pop.c, protos.h,\n\trecvattach.c, recvcmd.c, rfc3676.c, send.c, sendlib.c, smime.c: Pass\n\tbuffer size to mutt_mktemp()\n\n\t* handler.c, rfc3676.c: Port f=f and text/plain handlers to\n\tmutt_read_line()\n\n\t* lib.c: mutt_read_line(): make line counting ptr optional\n\n\t* sendlib.c: Silently drop headers not in \"key: value\"\n\tformat. Fixes out-of-memory exits.\n\n2009-06-20 23:09 +0200  Rocco Rutte  <pdmef@gmx.net>  (6447ebe80797)\n\n\t* handler.c: f=f: Don't kill signature separator when stripping\n\ttrailing spaces. Closes #3275.\n\n\t* curs_main.c: Disallow breaking threads for messages not part of\n\ta thread\n\n2009-06-20 15:22 +0200  Rocco Rutte  <pdmef@gmx.net>  (580ab0256c49)\n\n\t* doc/manual.xml.head: Manual: Clarify and extend variable type\n\tconversion section\n\n2009-06-19 19:56 -0400  Aron Griffis  <agriffis@n01se.net>  (ee3d174297bb)\n\n\t* rfc822.c: remove bogus FREE\n\n\tIt's impossible for cur->personal to be non-NULL at this point,\n\tsince cur was calloc'd just a couple lines prior.\n\n\tSigned-off-by: Aron Griffis <agriffis@n01se.net>\n\n2009-06-19 22:49 +0200  Rocco Rutte  <pdmef@gmx.net>  (9ae13dedb5ed)\n\n\t* mbox.c, mx.c, mx.h: Fixup atime for mbox/mmdf also when mailbox is\n\tunchanged but has new mail. See #1362.\n\n\t* mbox.c: Don't mangle atime/mtime for mbox folders without new\n\tmail upon sync. Closes #1362, #3271.\n\n\t* doc/manual.xml.head: Manual: Add note and example for type\n\tconversions with my_vars\n\n\t* sendlib.c: Enforce 998 char length limit on header lines when\n\tsending.\n\n2009-06-18 15:06 +0200  Antonio Radici  <antonio@dyne.org>  (c6fe0bb8cf11)\n\n\t* doc/Makefile.am, doc/smime_keys.man: Provide\n\tsmime_keys(1). Closes #3272.\n\n2009-06-18 14:56 +0200  Rocco Rutte  <pdmef@gmx.net>  (508bfe4a2e23)\n\n\t* mbox.c: Backout experimental patch\n\n\t* UPDATING, mbox.c: UPDATING: add note about -a and --\n\n2009-06-17 16:19 -0700  Antonio Radici  <antonio@dyne.org>  (25e46aad362b)\n\n\t* buffy.c: Do not free statically-allocated buffy buffer. Unbreaks\n\tunmailboxes, closes #3273.\n\n2009-06-17 15:23 -0700  Petr Písař  <petr.pisar@atlas.cz>  (fe94f01b369a)\n\n\t* ChangeLog, po/cs.po: Updated Czech translation.\n\n2009-06-17 13:58 -0700  Ivan Vilata i Balaguer  <ivan@selidor.net>  (ef9b67c7ebc4)\n\n\t* po/ca.po: Updated Catalan translation.\n\n2009-06-17 13:57 -0700  Vincent Lefevre  <vincent@vinc17.org>  (62471a5d3186)\n\n\t* po/fr.po: Updated French translation.\n\n2009-06-17 20:42 +0200  Rocco Rutte  <pdmef@gmx.net>  (33376ae23d8f)\n\n\t* doc/devel-notes.txt: Mention check_sec.sh in doc/devel-notes.txt\n\n2009-06-17 11:09 -0700  Brendan Cully  <brendan@kublai.com>  (7f37d0a57d83)\n\n\t* crypt-gpgme.c, pgp.c: Display unsigned part of traditional PGP\n\tmessages. Unbreaks [e2780a423d96], closes #3269\n\n2009-06-17 19:29 +0200  Antonio Radici  <antonio@dyne.org>  (a2a868fc40ea)\n\n\t* mx.c: Leave error handling of mx_get_magic() up to the\n\tcaller. Closes #3268.\n\n2009-06-17 18:02 +0200  Rocco Rutte  <pdmef@gmx.net>  (4b5326d8d2ee)\n\n\t* UPDATING, muttlib.c: Always display text/* parts inline,\n\toverrideable by auto_view. Closes #3246.\n\n2009-06-15 22:05 +0200  Rocco Rutte  <pdmef@gmx.net>  (f40de578e8ed)\n\n\t* handler.c: Unbreak header weeding for message/rfc822\n\tparts. Closes #3265.\n\n\t* init.c, lib.c, lib.h: Print timestamps in debug files. Closes #3263.\n\n\t* doc/manual.xml.head, doc/muttrc.man.head: bind: Clarify function\n\targument usage\n\n\t* doc/manual.xml.head, init.h, url.c: Fixup URL parser\n\n\tThe fixes are: 1) allow / in usernames for IMAP (by %-encoding /, :\n\tand % when pretty-printing urls), 2) for POP/SMTP the trailing / is\n\tno longer mandatory, 3) more strict %-decoding to avoid unexpected\n\tresults\n\n2009-06-15 17:49 +0200  Bertrand Janin  <tamentis@neopulsar.org>  (abc8fa0abeee)\n\n\t* UPDATING: Fix UPDATING\n\n2009-06-15 17:06 +0200  Rocco Rutte  <pdmef@gmx.net>  (d6f88fbf8387)\n\n\t* url.c: Don't parse URL port as signed short, but to int and cast to\n\tunsigned short. Closes #3264.\n\n\t* doc/manual.xml.head: Manual: Add a short note about new header\n\tfolding\n\n\t...so we don't get bug reports for tab folding.\n\n\t* init.h: Clarify what $wrap=0 does\n\n\t* doc/mutt.css: CSS update for newer docbook xslt versions\n\n\t* pager.c: pager: intermediate fix for wrapping long header lines with\n\t$smart_wrap set\n\n\tThe header folding algorithm outputs a word without spaces and\n\tlonger than $wrap as-is. The pager however tries to break it. With\n\t$smart_wrap unset, it simply breaks at $wrap regardless if there's a\n\tspace or not. With $smart_wrap set it tried to find a space and\n\tbreak if the next word is too long. This logic doesn't work for\n\tfolded header lines which always start with space. Thus, the output\n\twould always contain the folding whitespace on a line by itself\n\tdetaching the header value from the header name.\n\n\tAs an intermediate fix we don't try to be smart if the line begins\n\twith space or tab.\n\n\t* pager.c, sendlib.c: pager: Ignore $wrap for attachment markers\n\n2009-06-14 20:57 -0700  Brendan Cully  <brendan@kublai.com>  (d2e0b495b148)\n\n\t* build-release: Remove duplicate update-changelog call.\n\n2009-06-14 20:51 -0700  Antonio Radici  <antonio@dyne.org>  (fef17099376d)\n\n\t* doc/mutt.man: Escape hyphens in man page. Closes #1937 again.\n\n2009-06-14 12:29 -0700  Brendan Cully  <brendan@kublai.com>  (7f8a2ba64516)\n\n\t* UPDATING: Update UPDATING\n\n\t* VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po, po/de.po,\n\tpo/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po, po/fr.po,\n\tpo/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po, po/ja.po,\n\tpo/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po, po/ru.po,\n\tpo/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po:\n\tautomatic post-release commit for mutt-1.5.20\n\n\t* imap/imap.c: Save a dereference, and close #3226 with voodoo.\n\n\t* sendlib.c: Initialize pointer before use under -d4\n\n2009-06-13 19:52 -0700  Brendan Cully  <brendan@kublai.com>  (83ffb5593bc6)\n\n\t* curs_main.c: Adjust menu position after sync more\n\tcarefully. Closes #3092.\n\n\t* init.h: Force status to redraw when $postponed changes.\n\n\t* postpone.c: Fix check for changed $postponed. The pointer-based\n\tcheck fails when the new $postponed string is stored in the same\n\tlocation.\n\n2009-06-13 01:08 +0200  Rocco Rutte  <pdmef@gmx.net>  (536771b4e085)\n\n\t* commands.c, copy.c, copy.h, handler.c, protos.h, send.c, sendlib.c:\n\tRewrite header folding\n\n\tWe now distinct between sending and display case. For display, we\n\talways use tabs for folding for readability; for sending we now\n\tcorrectly fold using whitespace found in the header.\n\n\tCloses #2995. Closes #3080.\n\n2009-06-12 23:10 +0200  Rocco Rutte  <pdmef@gmx.net>  (23de0e3c81f8)\n\n\t* UPDATING, init.h, mutt.h, send.c: Turn $fcc_attach into a\n\tquadoption. Closes #2528.\n\n\t* handler.c: Don't insert Content-Description/form name into reply.\n\tCloses #3164.\n\n\t* pgpkey.c: Allow ! suffix for pgp keys via $pgp_sign_as and\n\tprompt. Closes #1928.\n\n\t* commands.c, recvcmd.c: Warn before bouncing messages without\n\tFrom: header. Closes #3180.\n\n\t* smtp.c: SMTP: don't block but print CRLF for last line if it's\n\tnot terminated\n\n2009-06-11 18:34 +0200  Rocco Rutte  <pdmef@gmx.net>  (f60eb41ef63c)\n\n\t* UPDATING: Mention maildir mtime use in browser\n\n\t* send.c: Don't allow setting Return-Path: header via my_hdr\n\n\tMutt has use_envelope_from/envelope_from_address for that purpose.\n\tCloses #1840.\n\n\t* browser.c: Use only latest mtime of new/cur for browser, not whole\n\tstat() info\n\n\t* copy.c: Don't reformat Return-Path (angle brackets are not\n\toptional). Closes #1702.\n\n2009-06-10 17:44 +0200  Rocco Rutte  <pdmef@gmx.net>  (0721c3f6320d)\n\n\t* mbox.c, mx.c: Only print messages about CONTEXT when quiet flag not\n\tset\n\n2009-06-09 22:09 -0700  Brendan Cully  <brendan@kublai.com>  (dc9ec900c657)\n\n\t* mutt_ssl.c: Improve host checking for SSL with intermediate\n\tcertificates.\n\n\t* mutt_ssl.c: Whitespace.\n\n\t* imap/imap.c: Skip comparison against current mailbox for idle\n\tconnections. Closes #3216.\n\n\t* imap/util.c: Revert accidental change\n\n\t* imap/util.c: Remove trailing whitespace.\n\n2009-06-08 23:55 -0700  Brendan Cully  <brendan@kublai.com>  (15c662a95b91)\n\n\t* configure.ac, m4/libgnutls.m4: Test for libgnutls by hand rather\n\tthan relying on deprecated libgnutls-config script. Closes #3239.\n\n2009-06-07 10:55 -0700  Brendan Cully  <brendan@kublai.com>  (9831d4c2c3f9)\n\n\t* imap/message.c: Do not display error message when user declines\n\tto create target mailbox.\n\n\t* imap/message.c: Minor cleanup in imap_copy_messages.\n\n2009-06-07 08:14 +0200  Miroslav Lichvar  <mlichvar@redhat.com>  (16592f0dfdaf)\n\n\t* configure.ac, mutt_ssl_gnutls.c: Disable checking certificate\n\tactivation/expiration times in gnutls as we do the checks ourselves.\n\n2009-06-06 22:31 -0700  Brendan Cully  <brendan@kublai.com>  (e5c2befbf0f5)\n\n\t* imap/message.c: Do not treat already-seen headers as if they are\n\tnew. See #2935.\n\n2009-06-07 02:09 +0200  Rocco Rutte  <pdmef@gmx.net>  (a786b0e8627c)\n\n\t* doc/dotlock.man, doc/makedoc.c, doc/mbox.man, doc/mmdf.man,\n\tdoc/mutt.man, init.h: Fix hyphens in manpages. Closes #1937\n\n2009-06-04 17:07 +0200  Rocco Rutte  <pdmef@gmx.net>  (4f1ceaae93dc)\n\n\t* rfc3676.c: Fix pretty quoting for f=f by resetting space count when\n\tflushing paragraph\n\n2009-06-03 22:35 +0200  Rocco Rutte  <pdmef@gmx.net>  (386f2ce6b872)\n\n\t* rfc3676.c: Fix several f=f bugs\n\n\tIt fixes problems with space-handling in general (trailing spaces\n\tfor display, un-space-stuffing), fixes quote prefix for replies and\n\tlowers FLOWED_MAX so we don't run into line length trouble too\n\tearly.\n\n\t* UPDATING, globals.h, init.h, pager.c: Don't abuse $pager_context for\n\tsearches, add $search_context. See #976.\n\n\t* pattern.c: Fix compiler warning\n\n2009-06-02 20:25 +0200  Miroslav Lichvar  <mlichvar@redhat.com>  (d1d0481d1ca1)\n\n\t* mutt_ssl_gnutls.c: Add support for GNUTLS_CERT_INSECURE_ALGORITHM\n\terror code\n\n\t* mutt_ssl_gnutls.c: Don't ignore certificate verification errors on\n\tsaved signer certs\n\n2009-06-02 10:18 -0700  René Clerc  <rene@clerc.nl>  (761bc678b23e)\n\n\t* po/nl.po: Updated Dutch translation.\n\n2009-06-02 17:24 +0200  Rocco Rutte  <pdmef@gmx.net>  (8b2af5b64981)\n\n\t* buffy.c: Fix duplicate mailbox detection for remote\n\tfolders\n\n\t* smtp.c: Fix array size\n\n\t* buffy.c: Thoroughly check for duplicates when parsing\n\t'mailboxes' command. Closes #1428.\n\n2009-06-01 14:50 +0200  Rocco Rutte  <pdmef@gmx.net>  (7a277ba306c9)\n\n\t* gnupgparse.c: Use mutt_atoi() when parsing GnuPG output. Closes\n\t#3145\n\n\t* hcache.c, mh.c: More atoi() fixes\n\n\t* smtp.c: SMTP: Use mutt_atoi() to parse server responses\n\n\t* curs_main.c, edit.c, init.c, main.c, menu.c, mh.c, parse.c,\n\tresize.c, score.c, url.c: Use strtol() wrappers for most atoi()\n\tcalls\n\n\t* lib.c, lib.h: Add mutt_atos(), mutt_atoi() and\n\tmutt_atol() (strtol() wrappers)\n\n\t* send.c: Treat address groups as no recipients\n\n\tWhen sending with Sendmail or SMTP we exclude address groups anyway,\n\tso treat these addresses as not present when checking for valid\n\trecipients before sending in the compose menu.\n\n\t* smtp.c: Weed out address groups for SMTP the same way we\n\tdo for sendmail\n\n2009-05-31 19:19 -0700  Brendan Cully  <brendan@kublai.com>  (0024860ab03e)\n\n\t* doc/Makefile.am: Allow chunked and unchunked manuals to build in\n\tparallel.\n\n\t* mutt_ssl_gnutls.c: Remove trailing whitespace\n\n2009-05-31 14:46 +0200  Rocco Rutte  <pdmef@gmx.net>  (8e591e80cd48)\n\n\t* smtp.c: SMTP: Don't send \"undisclosed-recipients\" in RCPT TO\n\n\tThis happened for Bcc only messages. \"undisclosed-recipients\" is\n\tadded in To: as guard against MTAs that leak BCCs if no To:/Cc:\n\theader is given. See Debian #529090.\n\n\t* init.h: Document that $pager_context affects searching, too\n\n\t* UPDATING: Update UPDATING\n\n\t* handler.c: Turn trailing \\r\\n to \\n for qp-encoded messages.\n\n\tRFC2045 (sect. 6.7, (1) general 8bit representation) states that\n\tneither CR nor LF of the trailing CRLF may be qp-encoded. So we\n\tignore trailing qp-encoded CRs.\n\n\tSee #2898 though this is a partial fix only.\n\n\t* pager.c: Give $pager_context lines of context when searching\n\tpage-based menus. Closes #976.\n\n\t* handler.c, init.h, rfc3676.c: f=f: Strip trailing spaces for\n\tinteroperability. Closes #3001.\n\n\tIf we make a fixed reply to a flowed message we remove trailing\n\tspaces and can now safely allow $indent_string to be used which is\n\twhat users expect.\n\n\tSecond, if we make a flowed reply to a fixed message we also strip\n\ttrailing spaces since from format=fixed we assume all lines are\n\tfixed (i.e. we don't want to errorneously make fixed lines flowed).\n\n\t* handler.c, init.h, mutt.h: Add $honor_disposition to not display\n\tattachments inline. Closes #3170.\n\n\tPreviously all MIME parts were displayed inline regardless of the\n\tContent-Disposition header (if present). With $honor_disposition\n\tset, only inline parts are displayed inline, attachments can only be\n\tviewed from the attachments menu.\n\n2009-04-25 01:56 -0400  Dan Loewenherz  <daniel.loewenherz@yale.edu>  (c1b947f60ea6)\n\n\t* init.h: Disables the insecure SSLv2 protocol. Closes #3192.\n\n2009-05-30 19:37 +0200  Rocco Rutte  <pdmef@gmx.net>  (b080ae086a62)\n\n\t* ChangeLog, mbox.c: Keep new mail flag for mbox/mmdf folders after\n\tclosing. Closes #1362.\n\n2009-05-30 10:23 -0700  Vincent Lefevre  <vincent@vinc17.org>  (be7b3d349725)\n\n\t* po/fr.po: Updated French translation.\n\n2009-05-30 00:24 +0200  Rocco Rutte  <pdmef@gmx.net>  (f65a1eb8abce)\n\n\t* smtp.c: Fix logic in f260f5836284\n\n2009-05-29 21:33 +0200  Rocco Rutte  <pdmef@gmx.net>  (c4d86d4ea260)\n\n\t* pager.c: Drop modified version of and use mutt_read_line() in pager,\n\ttoo\n\n\t* history.c, init.c, lib.c, lib.h, mh.c, mutt_ssl_gnutls.c, pgp.c,\n\tquery.c, rfc1524.c, smime.c: Add flags to mutt_read_line() for\n\tEOL-stripping and continuation support\n\n\tWe use these to stop supporting EOL-escaping with \\ which was wrong\n\tin most cases (e.g. $history_file), support is kept for reading\n\tconfig and mailcap files.\n\n\tLeaving CRLF in will be used for the pager.\n\n\t* menu.c, pager.c, pattern.c: Fall back to search if no query exists\n\tfor search-(next|opposite)\n\n\tThe pager had the fall-through to search, so for consistency do that\n\tin other menues as well.\n\n\t* pager.c: Fix pager search prompt for reverse search\n\n\tWhen doing a reverse search for the first time after switching to\n\tthe pager, SearchBack is always 0 and thus gave the wrong prompt,\n\tchange to using op directly. While I'm at it, unify search prompts.\n\n\t* doc/manual.xml.head: Manual: Fix markup of environment variables\n\n2009-05-28 16:37 +0200  Rocco Rutte  <pdmef@gmx.net>  (f260f5836284)\n\n\t* smtp.c: SMTP: don't interactively authenticate without a\n\tpassword in batch/mailx mode\n\n\tOtherwise, if we don't have a password and curses is not running,\n\tthe SASL authentication callback will crash mutt. We now abort if\n\tthe password wasn't given in $smtp_url.\n\n\t* doc/mutt.css: Manual: vertical-align table cells at the top\n\n\t* doc/manual.xml.head, doc/mutt.css: Manual: Wrap muttrc commands\n\tin <command/>\n\n2009-05-27 23:14 -0700  Brendan Cully  <brendan@kublai.com>  (5502fb790bab)\n\n\t* mutt_ssl_gnutls.c: gnutls: do not ignore certificate problems.\n\tSpecifically, do not allow revoked certificates or those signed by\n\tnon-CAs unless they have been explicitly stored in the trusted\n\tcertificate file. Thanks to Miroslav Lichvar.\n\n2009-05-27 22:55 -0700  Miroslav Lichvar  <mlichvar@redhat.com>  (85f41efec6bf)\n\n\t* ChangeLog, mutt_ssl_gnutls.c: Don't prompt to save certificates that\n\tare already saved but invalid.\n\n2009-05-27 22:52 -0700  Brendan Cully  <brendan@kublai.com>  (90ef283c103e)\n\n\t* mutt_ssl_gnutls.c: Don't leak gnutls certs on preauth validation\n\tfailure. Thanks to Miroslav Lichvar.\n\n\t* mutt_ssl.c: Fix TLS certificate chain validation for\n\topenssl.\n\n2009-05-25 17:31 -0700  Brendan Cully  <brendan@kublai.com>  (8f11dd00c770)\n\n\t* mutt_ssl_gnutls.c: Fix a serious oversight validating TLS\n\tcertificates. If any certificate in a chain presented by a server\n\twas accepted, the connection was allowed without verifying that the\n\tpresented certificate was actually signed by the certificate in the\n\tchain.\n\n2009-05-27 22:13 -0700  Petr Písař  <petr.pisar@atlas.cz>  (05bc65d6ae70)\n\n\t* po/cs.po: Updated Czech translation.\n\n2009-05-27 10:13 +0200  Rocco Rutte  <pdmef@gmx.net>  (97305eeb91ce)\n\n\t* doc/manual.xml.head, doc/mutt.man: Document that -- is always\n\tmandatory after -a. Closes #3235.\n\n\t* init.h: Mention account-hook in the docs for $tunnel.  Closes\n\t#3237.\n\n2009-05-26 17:57 +0200  Rocco Rutte  <pdmef@gmx.net>  (392e945dfba7)\n\n\t* attach.c: Use charset parameter to view text attachments using\n\t<view-attach>. Closes #3234.\n\n2009-05-25 15:57 +0200  Rocco Rutte  <pdmef@gmx.net>  (3f0963dd9257)\n\n\t* pager.c: pager: print progress percentage for attachments, too\n\n\t* attach.c: Mark strings for translation\n\n2009-05-18 20:48 -0700  Vincent Lefevre  <vincent@vinc17.org>  (6d810c5cf4fc)\n\n\t* po/fr.po: Updated French translation.\n\n2009-05-15 15:03 +0200  Takahashi Tamotsu  <ttakah@lapis.plala.or.jp>  (c665bdf5ff5f)\n\n\t* pop.c: POP: Notify user when messages are lost. Closes #2226.\n\n\t* pop.c: POP: Ignore already-deleted messages while\n\tsyncing. Closes #2225.\n\n2009-05-13 18:03 +0200  Rocco Rutte  <pdmef@gmx.net>  (0563c88ad6f0)\n\n\t* attach.c, recvattach.c: Don't loose error message when attachment\n\tsaving fails. Closes #3156.\n\n2009-05-15 12:46 +0200  Seth Arnold  <seth.arnold@suse.de>  (1cea1ecf9f79)\n\n\t* UPDATING, color.c, doc/manual.xml.head: Make \"uncolor\" also work\n\theader and body objects. Closes #1046.\n\n2009-05-13 14:20 +0200  Rocco Rutte  <pdmef@gmx.net>  (f96a176bb14c)\n\n\t* send.c: Don't set 'replied' flag if user changes\n\tReferences/IRT. Closes #2044.\n\n\t* mutt.h, muttlib.c: Add mutt_find_list() to lookup data in lists\n\n\t* alias.c, crypt-gpgme.c, group.c, mbox.c, pgp.c, query.c,\n\trfc822.c, rfc822.h, send.c, smime.c: Prune empty address groups\n\twhen preparing replies. Closes #2875.\n\n\t* mbox.c: Actually reopen mbox/mmdf files in case we find\n\tmodifications. Closes #2725.\n\n\tSince the file is changed while we have it open in ctx->fp, we\n\tlikely get wrong information when parsing the mailbox. Now we\n\texplicitely close and (re)open it.\n\n2009-05-12 16:26 +0200  Rocco Rutte  <pdmef@gmx.net>  (06e318bfe8f2)\n\n\t* mbox.c: Backout errorneously commited mbox atime fix\n\n\t* OPS, mbox.c: Fix description for <save-message>\n\n2009-04-29 14:49 +0200  Rocco Rutte  <pdmef@gmx.net>  (335e6f782862)\n\n\t* browser.c: Fix maildir times in mailboxes browser. Closes #626.\n\n\tInstead of using the (pointless) mtime of the top-level maildir\n\tfolder, use the latest mtime of the \"new\" and \"cur\" subdirectories.\n\tMaildir folders in the mailboxes list can now be properly sorted by\n\tdate. This does not affect the directory browser. Also see #2421.\n\n\t* mailbox.h, mh.c, mx.c: Move Maildir/MH folder detection from\n\tmx.c to mh.c\n\n2009-04-28 15:12 +0200  Rocco Rutte  <pdmef@gmx.net>  (4d9685be5987)\n\n\t* sendlib.c: Fold References: header so we never run into line length\n\tproblems\n\n\t* headers.c: Fix comment typo\n\n2009-04-28 14:18 +0200  Bertram Felgenhauer  <int-e@gmx.de>  (6b20a3545f03)\n\n\t* doc/manual.xml.head, headers.c: Drop References header if In-Reply-\n\tTo is modified by user. Closes #3221.\n\n2009-04-28 13:05 +0200  Rocco Rutte  <pdmef@gmx.net>  (a13d8fd40094)\n\n\t* send.c: Don't generate References: for reply to multiple\n\tmessages\n\n\tAll parent Message-Ids are present in In-Reply-To already. Also,\n\tRfC2822, section 3.6.4 discourages its generation.\n\n\t* sendlib.c: Don't trim In-Reply-To with $edit_headers set\n\n\tIn case of a tagged reply to several messages, we want In-Reply-To\n\tto contain all parent Message-Ids.\n\n\t* imap/imap.c: Only sync changed messages back to hcache on\n\tmailbox sync\n\n\t* doc/manual.xml.head: For spam detection, mention $imap_headers.\n\tCloses #3223.\n\n\t* doc/manual.xml.head: Manual: Fix typo and reword paragraph\n\n2009-04-26 21:09 +0200  Rocco Rutte  <pdmef@gmx.net>  (9fa4a3e74355)\n\n\t* UPDATING, doc/manual.xml.head, pop.c: POP: Support hcache updating,\n\ttoo.\n\n\tThis also allows us to use hcache to manage \"flagged\" and \"replied\"\n\tmessage flags.\n\n\t* imap/imap.c, mh.c: Sync header to hcache when synching\n\tMH/Maildir/IMAP folders. Closes #2942.\n\n\t* pager.c: Use dynamic buffer for displaying pager lines. Closes\n\t#3162.\n\n\tWith too small fixed-size buffers we can't color/find certain words\n\tthat span buffers. This needs to duplicate mutt_read_line with the\n\tadjustment to leave line termination in and not support breaking\n\tlong lines using \\ at EOL. Other callers may want to use this one\n\tinstead, too as we support \\-escaping in too many places.\n\n\t* init.h: Document suffixes for %f in $folder_format\n\n2009-04-22 23:29 +0200  Bertram Felgenhauer  <int-e@gmx.de>  (0aa313a3bf20)\n\n\t* headers.c: Fix memory leak in mutt_edit_headers(). Closes #3220.\n\n2009-04-25 10:51 +0200  Thomas Wiegner  <wiegner@gmx.de>  (8da22400a48d)\n\n\t* configure.ac, mkdtemp.c, protos.h: Add mkdtemp() from xfce to\n\tunbreak gpgme build on Solaris. Closes #3217.\n\n2009-04-25 10:35 +0200  Rocco Rutte  <pdmef@gmx.net>  (c6de4f51b8c7)\n\n\t* ChangeLog, configure.ac, protos.h, strcasestr.c: Add strcasestr()\n\tfrom uclibc to unbreak (Open)Solaris build. Closes #3222.\n\n2009-04-21 15:10 -0400  Aron Griffis  <agriffis@n01se.net>  (3d89eddb2d9a)\n\n\t* buffy.c: Equivalent mutt_buffy, but readable code\n\n\t* buffy.c, buffy.h: Call mutt_expand_path() from mutt_buffy to fix\n\timap separator. Closes #3208 and #3218\n\n\t* buffy.c: Use slen instead of assuming _POSIX_PATH_MAX\n\n2009-04-23 12:51 -0700  Vincent Lefevre  <vincent@vinc17.org>  (b5b4e652e4b1)\n\n\t* ChangeLog, po/fr.po: Updated French translation.\n\n2009-04-20 18:36 +0200  Christoph Berg  <cb@df7cb.de>  (39fee3a9d034)\n\n\t* doc/manual.xml.head, init.h: Better document that some send-hooks\n\tcan't work with $autoedit. Closes #1834.\n\n2009-04-20 18:26 +0200  Rocco Rutte  <pdmef@gmx.net>  (6cc887ccd229)\n\n\t* init.h: Fix typo for $imap_pass\n\n2009-04-17 18:05 +0200  Rocco Rutte  <pdmef@gmx.net>  (7d44a83efcc6)\n\n\t* pgp.c: Support the Charset: armor header for inline PGP. Closes\n\t#3039.\n\n\tThe header is defined as optional by RfC4880.\n\n\tThis is based on patch-1.5.9.tamo.pgp_charsetchack.1. We only\n\tsupport reading this header and, if present, recode the PGP output\n\tfrom the given charset to $charset if we find it valid; otherwise\n\tfall back to UTF-8. Certain clients make use of the header when\n\tsending mail, so mutt should respect it because some messages are\n\totherwise unreadable.\n\n\tThe sending side is not touched, we unconditionally send UTF-8.\n\n2009-04-17 15:45 +0200  Michael Elkins  <me@mutt.org>  (61a0c67ed727)\n\n\t* sendlib.c: Make sure Recent-From: consults $realname.  Closes\n\t#1721.\n\n2009-04-17 15:37 +0200  Rocco Rutte  <pdmef@gmx.net>  (3a7ecc3f8aeb)\n\n\t* UPDATING, functions.h, pager.c: Make <set-flag> and <clear-flag>\n\twork in the pager, too. Closes #3212.\n\n\t* pager.c: Don't consider \\n part of a line for body\n\tcoloring. Closes #2363.\n\n\t* attach.c: Enlarge buffer size for parsing mailcap files\n\n\tWe really need code for dynamic buffers which would solve a few\n\tother bugs, too. Closes #2205.\n\n2009-04-16 19:23 +0200  Rocco Rutte  <pdmef@gmx.net>  (a4f66ae72dc5)\n\n\t* ChangeLog, pop_lib.c: POP: Default to using getservbyname() as we do\n\tfor IMAP and SMTP\n\n\t* doc/manual.xml.head: Manual: Improve docs on URL syntax, add\n\texamples\n\n\t* doc/manual.xml.head: Manual: Add user-defined variables to variable\n\ttypes\n\n2009-04-11 10:35 +0200  Rocco Rutte  <pdmef@gmx.net>  (7d7976cd4fc4)\n\n\t* ChangeLog, buffy.c, buffy.h, commands.c, sendlib.c: Don't raise new\n\tmail flag on mbox/mmdf Fcc mailboxes. Closes #1896.\n\n2009-04-08 16:25 +0200  Rocco Rutte  <pdmef@gmx.net>  (5b631ee33281)\n\n\t* hdrline.c: For %F, display Bcc recipient if no other recipients\n\tfound. Closes #3157.\n\n\t* UPDATING, doc/manual.xml.head, doc/muttrc.man.head, pattern.c:\n\tMake ~x match In-Reply-To, too. Closes #771.\n\n2009-04-07 19:57 +0200  Rocco Rutte  <pdmef@gmx.net>  (667b0006b586)\n\n\t* sendlib.c: Fix b5cbd0dab863, closes #3215.\n\n\tStill valgrind reports 'fromcode' as leaking.\n\n2009-04-07 11:32 +0200  Erik Hovland  <erik@hovland.org>  (d344c6429a48)\n\n\t* sendlib.c: Try to correct usage of tempfile and *tempfile\n\n\tSince tempfile is a double pointer checking for tempfile and then\n\tdereferencing with *tempfile is not correct.\n\n2009-04-06 22:05 +0200  Rocco Rutte  <pdmef@gmx.net>  (d639baaf57fb)\n\n\t* doc/manual.xml.head: Manual: Fix typo\n\n2009-04-06 19:10 +0200  Erik Hovland  <erik@hovland.org>  (4fe35e9984ba)\n\n\t* sendlib.c: mutt_message_to_7bit(): Only close file\n\tpointer if we opened it\n\n\tThe pointer is to be managed outside the function and provided. Only\n\tclose it we opened it ourself using fopen().\n\n2009-04-06 19:07 +0200  Erik Hovland  <erik@hovland.org>  (b5cbd0dab863)\n\n\t* sendlib.c: Plug memory leaks in sendlib.c\n\n2009-04-05 13:41 +0200  Rocco Rutte  <pdmef@gmx.net>  (5d393e716c51)\n\n\t* init.h, sendlib.c: Backed out changeset 23c7b469ff20\n\n\tThis requires more thought: if the user has -- in $sendmail, we need\n\tto add our arguments for 8BITMIME/DSN/etc. before it and not after.\n\tSee #3168.\n\n\t* doc/manual.xml.head: Manual: Make sure every rc command has a\n\tsynopsis in its describing section\n\n\t* doc/manual.xml.head: Manual: Fold consecutive <cmdsynopsis/>\n\tinto just one\n\n\tThis make it visually easier to spot what belongs together.\n\n\t* doc/manual.xml.head: Manual: More entities and <quotes/> as\n\tappropriate\n\n2009-04-04 16:23 +0200  Rocco Rutte  <pdmef@gmx.net>  (a4b635e96b30)\n\n\t* doc/Makefile.am: Manual: Improve 'sortcheck' target\n\n\tDon't call up diff+pager if all is sorted and remove the temp files\n\tfor diffing we created.\n\n\t* doc/gen-map-doc, doc/manual.xml.head, doc/manual.xml.tail: Manual:\n\tCapitalize headlines\n\n\t* doc/manual.xml.head: Manual: Move section on mixmaster support to\n\tOptional Features\n\n\t* doc/manual.xml.head: Manual: Remove duplicate section on mailcap use\n\tfrom security chapter\n\n\tWe already have a more detailed section on secure mailcap usage, so\n\tlink to it.\n\n\t* doc/manual.xml.head: Manual: Minor improvements and fixes\n\n\t* doc/Makefile.am, doc/manual.xml.head: Manual: Add a short chapter\n\tsummarizing security considerations\n\n\t* doc/manual.xml.head: Manual: Use &mdash; in text rather than --\n\n\t* doc/manual.xml.head: Manual: Add section on padding for format\n\tstrings\n\n\t* doc/manual.xml.head: Manual: Mention reply types in \"Sending Mail\"\n\tsection\n\n\t* doc/manual.xml.head: Manual: Add table with navigation keys for\n\tpage-based menus\n\n\t* doc/mutt.css: mutt.css: Add left+right margins to screen, note and\n\texamples\n\n\t* doc/manual.xml.head: Manual: Add section on screens and menus with\n\tshort descriptions.\n\n\tMostly stolen from old mutt-ng docs with adjustments.\n\n2009-04-02 13:11 +0200  Steve Kemp  <skx@debian.org>  (23c7b469ff20)\n\n\t* init.h, sendlib.c: Only append -- to $sendmail if not\n\tpresent. Closes #3168.\n\n\tThis allows users to add custom recipients via $sendmail.\n\n2009-04-02 12:57 +0200  Rocco Rutte  <pdmef@gmx.net>  (bfb12cf02417)\n\n\t* init.h: Clarify what $attach_charset does, closes #3165.\n\n\t* doc/Makefile.am: Add 'sortcheck' target to doc/Makefile.am\n\n\tThis should be used from time to time to check if vars are sorted.\n\n\tCloses #3191.\n\n\t* init.h: Sort $pgp_* and $crypt_* vars, see #3191.\n\n\t* init.h: Sort $smime_* vars, see #3191.\n\n2009-04-01 14:33 +0200  Miroslav Lichvar  <mlichvar@redhat.com>  (8205a12329d3)\n\n\t* hcache.c, muttlib.c: Use PATH_MAX for buffers passed to realpath(3)\n\tas we're supposed to\n\n2009-04-01 13:16 +0200  Rocco Rutte  <pdmef@gmx.net>  (47c64fd9ac70)\n\n\t* doc/gen-map-doc, doc/manual.xml.head: Manual: Fix openjade\n\twarnings\n\n\t* doc/makedoc.c, doc/mutt.css: makedoc: Render description lists as\n\t<informaltable/>\n\n\tThis looks better and is more compact (except missing column\n\theaders.)\n\n2009-03-31 16:03 +0200  Rocco Rutte  <pdmef@gmx.net>  (22f21b558f57)\n\n\t* doc/manual.xml.head: Manual: Add an example of how to manage\n\tmultiple accounts using folder-hook\n\n\t* UPDATING, doc/manual.xml.head, mutt.h, pattern.c: Perform case\n\tinsensitive string search if pattern is lower case\n\n\t...since we do that for regex patterns already. It doesn't work for\n\tIMAP server-side searches.\n\n\t* doc/manual.xml.head: Manual: Fix markup of \".muttrc\"\n\n\t* doc/manual.xml.head: Manual: Always spell mutt as \"Mutt\"\n\n\t* doc/manual.xml.head: Manual: Replace netscape with firefox\n\n\t* doc/manual.xml.head: Manual: use <quote/> instead of \" quotes\n\n\t* doc/manual.xml.head: Manual: Lots of minor improvements\n\t(markup consistency, wording)\n\n2009-03-30 14:58 +0200  Rocco Rutte  <pdmef@gmx.net>  (318748f3962b)\n\n\t* doc/manual.xml.head: For mailbox formats, add some more verbose pros\n\tand cons\n\n\t* doc/manual.xml.head: Manual: Add section about zeroprinting format\n\tstrings to format string section\n\n2009-03-28 22:37 +0100  Thomas Roessler  <roessler@does-not-exist.org>  (be9fb07730c6)\n\n\t* mutt_idna.c: Make IDNA code more readable\n\n2009-03-28 16:11 +0100  Rocco Rutte  <pdmef@gmx.net>  (77cfe8016930)\n\n\t* doc/manual.xml.head: Manual: Add section roughly explaining config\n\toption types\n\n\t* doc/makedoc.c: makedoc: make output slightly more readable\n\n\tAdd <?dhtml... processing instructions to render <variablelist/>\n\tusing HTML <table/> which save lots of vertical space. Also, drop\n\tthe newline before </screen> to save some space.\n\n2009-03-27 18:02 +0100  Rocco Rutte  <pdmef@gmx.net>  (a06a2a4c5ebc)\n\n\t* rfc3676.c: f=f: Fix debug messages\n\n2009-03-19 17:19 +0100  Rocco Rutte  <pdmef@gmx.net>  (754ea0f091fc)\n\n\t* doc/manual.xml.head: Improve section on patterns\n\n\t* curs_lib.c: Fix progress update debug message\n\n\t* doc/manual.xml.head, doc/muttrc.man.head: Document kilo and mega\n\tsuffixes for range patterns\n\n\tDocument it only for ~z (message size) as they don't make much sense\n\tfor other patterns like message score or number of attachments.\n\n2009-03-18 17:40 +0100  Rocco Rutte  <pdmef@gmx.net>  (8528b8e715da)\n\n\t* init.h: Properly initialize more structs\n\n2009-03-19 13:38 +0100  Erik Hovland  <erik@hovland.org>  (a802b5127f09)\n\n\t* pgp.c: Remove unused variable\n\n2009-03-19 10:36 +0100  Roman Kraevskiy  <rkraevskiy@gmail.com>  (6fac57b97bf1)\n\n\t* mutt_sasl.c: Restore connection polling callback when\n\tclosing SASL connection. Closes #3206.\n\n2009-03-18 14:48 +0100  Erik Hovland  <erik@hovland.org>  (17d770ae41e4)\n\n\t* smime.c: S/MIME: Don't leak intermediate cert key\n\n\t* buffy.c: Properly initialize struct stats in buffy check\n\n2009-03-17 20:04 +0100  Rocco Rutte  <pdmef@gmx.net>  (903b3cee5485)\n\n\t* addrbook.c, browser.c, compose.c, curs_main.c, imap/auth.c, mx.c,\n\tpattern.c, pop_auth.c, postpone.c, query.c, recvattach.c,\n\tremailer.c: Fix some warnings with -W about missing initializers in\n\tstructs\n\n2009-03-17 16:44 +0100  Todd Zullinger  <tmz@pobox.com>  (bb9b845800f6)\n\n\t* pgp.c: Ensure display is redrawn for application/pgp\n\n\tWhen using gpg-agent, a hard redraw is needed after the pinentry\n\tprogram is called. Otherwise, the screen is garbled and key\n\tbindings are screwed up.\n\n\tCloses #3196.\n\n2009-03-15 16:44 +0100  Rocco Rutte  <pdmef@gmx.net>  (bc7c64ff3e48)\n\n\t* configure.ac, protos.h, wcscasecmp.c: Add wcscasecmp() compatibility\n\tfunction (for OS X)\n\n\t* doc/mutt.man: mutt.1: Mention that -a should be last in option\n\tlist. Closes #3202\n\n\t* alias.c: Only define min() if not present. Closes #3199\n\n2009-03-15 14:25 +0100  Erik Hovland  <erik@hovland.org>  (3c154fcdad4c)\n\n\t* rfc822.c: The assigned value of dom is never used. Remove\n\tassignment\n\n\t* alias.c: The file handle will leak if fread fails\n\n2009-03-12 15:16 -0700  Erik Hovland  <erik@hovland.org>  (53bea026a2a2)\n\n\t* curs_main.c: resort_index will use menu->current as a index into an\n\tarray. If menu->current is negative, bad things can happen. So check\n\tit before calling resort_index\n\n\t* recvcmd.c: 'last' is assigned but never used. Remove assignment.\n\n2009-03-15 13:46 +0100  Rocco Rutte  <pdmef@gmx.net>  (1238dff54a15)\n\n\t* alias.c, attach.c, buffy.c, check_sec.sh, commands.c, compose.c,\n\tcopy.c, crypt-gpgme.c, crypt.c, edit.c, editmsg.c, gnupgparse.c,\n\thandler.c, headers.c, help.c, history.c, imap/message.c, init.c,\n\tlib.c, main.c, mbox.c, mh.c, mutt_ssl.c, mutt_ssl_gnutls.c,\n\tmuttlib.c, pager.c, pattern.c, pgp.c, pgpkey.c, pgppubring.c,\n\tpop.c, postpone.c, query.c, recvattach.c, recvcmd.c, rfc1524.c,\n\trfc3676.c, send.c, sendlib.c, smime.c, smtp.c: Use safe_fclose()\n\tinstead of fclose(), add fclose() to check_sec.sh\n\n2009-03-10 18:39 +0100  NONAKA Kimihiro  <nonakap@gmail.com>  (cc6fede605d4)\n\n\t* mh.c: Fix crashes with 64bit time_t. Closes #3184.\n\n2009-03-09 12:04 +0100  Vincent Lefevre  <vincent@vinc17.org>  (4ce562b7f5d7)\n\n\t* mbyte.h: Unbreak compilation on OS X with --with-regex/--without-wc-\n\tfuncs. Closes #3149.\n\n2009-03-09 11:58 +0100  Rocco Rutte  <pdmef@gmx.net>  (f3a33b77dc90)\n\n\t* mutt.h, regex.c: Unbreak compilation with --without-wc- funcs on\n\tOS X 10.5.*, see #3149.\n\n\t* init.h: Fix 11cd72da743a\n\n\t* init.h: Sort SSL-related variables, see #3191.\n\n\t* hash.c, hash.h, init.c, mh.c, thread.c: Restore $reverse_alias\n\tfeature by using case-insensitive hash keys\n\n\tThe fix is implemented as callbacks in the hash table so we can\n\tavoid working with copies of the mailbox keys but work on the\n\toriginals instead and don't pollute the code with lower-case\n\tconversions all over the place.\n\n\tWhile I'm at it, turn int hashes into unsigned values since the hash\n\tfunction returns unsigned values now, too.\n\n\tCloses #3185.\n\n2009-03-07 13:49 +0100  Rocco Rutte  <pdmef@gmx.net>  (ff1906f70b1b)\n\n\t* init.h: Sort most variables (except crypto), see #3191.\n\n\t* doc/manual.xml.head: Fix typo, see #2430.\n\n2009-02-20 22:14 +0100  Rocco Rutte  <pdmef@gmx.net>  (35fbea209c6e)\n\n\t* doc/manual.xml.head: Manual: verbosely document how the\n\tinitial folder is determined, see #3189.\n\n\t* doc/manual.xml.head: Document address normalization. Closes #2430.\n\n\t* headers.c: Simplify and fix Attach: header parsing\n\n\tWith ee5e696a9d08 we would skip beyond the filename to look for a\n\tdescription. This changeset fixes it.\n\n\t* main.c: Set magic from -m before processing queries (-Q) or dumping\n\tvariables (-D)\n\n\t* doc/mutt.man, init.h: Better document how the initial folder is\n\tdetermined. Closes #3189.\n\n2009-02-15 16:09 +0100  Rocco Rutte  <pdmef@gmx.net>  (ee5e696a9d08)\n\n\t* doc/manual.xml.head, headers.c: Support spaces in Attach:\n\tpseudoheader. Closes #3179.\n\n2009-02-10 13:05 +0100  Rocco Rutte  <pdmef@gmx.net>  (a21f8bf84149)\n\n\t* init.h: Fix documentation typos. Closes #3178.\n\n2009-01-27 12:58 -0800  Brendan Cully  <brendan@kublai.com>  (7ddf1d1cc490)\n\n\t* imap/imap.c: Move socket close into imap_logout from imap_logout_all\n\n\t* imap/imap.c: IMAP: only close socket when not already\n\tdisconnected.\n\n2009-01-27 18:48 +0100  Rocco Rutte  <pdmef@gmx.net>  (d7e44862a08a)\n\n\t* help.c, main.c, mh.c: Update copyright years\n\n\t* help.c: Fix help alignment for escape sequences at screen\n\tboundary. Closes #3146.\n\n\t* mh.c: Unconditionally inode-sort Maildir and MH folders. Closes\n\t#3166.\n\n2009-01-26 12:32 -0800  Brendan Cully  <brendan@kublai.com>  (da94a92c3ba0)\n\n\t* bcache.c: Remove old bcache tmpfile before trying to create new\n\tone. Closes #3163.\n\n2009-01-20 12:34 -0800  René Clerc  <rene@clerc.nl>  (2006526d1d26)\n\n\t* po/nl.po: Updated Dutch translation\n\n2009-01-19 20:39 -0800  Ivan Vilata i Balaguer  <ivan@selidor.net>  (038f1e5cdaea)\n\n\t* po/ca.po: Updated Catalan translation\n\n2009-01-14 20:04 +0000  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (ddf48761aacf)\n\n\t* imap/browse.c: Use imap_utf7_encode instead of\n\timap_munge_mbox_name+imap_unquote_string.\n\n2009-01-14 11:45 -0800  Brendan Cully  <brendan@kublai.com>  (cd0b17c80372)\n\n\t* doc/manual.xml.head: Add missing hooks to manual section 4\n\n2009-01-13 06:51 -0800  Brendan Cully  <brendan@kublai.com>  (10e224e86f0b)\n\n\t* hook.c: Do not allow a command in an account-hook to trigger another\n\taccount-hook. Recent changes in the IMAP path canonifier mean that\n\taccount-hooks that set variables to URLs (eg folder, spoolfile) can\n\ttrigger a recursive account-hook. Now we just bail out of account-\n\thook early if we are called recursively, but perhaps we should warn\n\tthe user to use a folder-hook instead. Thanks to Kyle Wheeler for\n\tfinding this one.\n\n2009-01-12 10:27 -0800  Brendan Cully  <brendan@kublai.com>  (6976aca75d04)\n\n\t* init.h: Correct defaults for new ssl options (fixes manual\n\tgeneration)\n\n2009-01-11 21:47 -0800  Brendan Cully  <brendan@kublai.com>  (ff74e612f790)\n\n\t* mutt_ssl_gnutls.c: GNUTLS: check all available certs\n\tnoninteractively before presenting any menus\n\n\t* UPDATING, init.h, mutt.h, mutt_ssl.c, mutt_ssl_gnutls.c: Add\n\t$ssl_verify_dates option to relax certificate date validation\n\n\t* UPDATING, init.h, mutt.h, mutt_ssl.c, mutt_ssl_gnutls.c: Add\n\t$ssl_verify_host to allow skipping host name validation\n\n2009-01-10 22:09 -0800  Brendan Cully  <brendan@kublai.com>  (db3a61fcde35)\n\n\t* imap/util.c: Assume INBOX for \"\"/NULL in imap_mxcmp\n\n\t* imap/util.c: Use known connection delimiter in imap_expand_path\n\n\t* imap/util.c: Guard against NULL pointers in imap_mxcmp\n\n\t* imap/imap_private.h, imap/util.c: Canonicalize IMAP mailboxes before\n\tcomparing them.\n\n\t* imap/util.c: Fix last commit\n\n\t* imap/util.c: Prioritize the entered IMAP folder delimiter. First\n\tpriority is the connection delimiter. Second priority is the user's\n\tdelimiter if it is in imap_delim_chars. We no longer use the first\n\tcharacter in imap_delim_chars.\n\n2009-01-06 18:34 -0800  Vsevolod Volkov  <vvv@mutt.org.ua>  (4032dfd52118)\n\n\t* po/ru.po: Updated Russian translation\n\n2009-01-05 16:43 -0800  Brendan Cully  <brendan@kublai.com>  (0d81ef9d40fd)\n\n\t* build-release: Sign tagged revision, not the one after\n\n\t* .hgsigs: mutt-1.5.19 signed\n\n\t* .hgtags: Added tag mutt-1-5-19-rel for changeset a4b47ac32d32\n\n\t* VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po, po/de.po,\n\tpo/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po, po/fr.po,\n\tpo/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po, po/ja.po,\n\tpo/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po, po/ru.po,\n\tpo/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po:\n\tautomatic post-release commit for mutt-1.5.19\n\n\t* build-release: Fall back to vi if VISUAL is unset in\n\tbuild-release\n\n\t* UPDATING: Update UPDATING\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h: Report CREATE\n\tfailures\n\n\t* browser.c: Style fixes\n\n\t* browser.c: Leave error message on screen if imap_mailbox_create\n\tfails\n\n\t* doc/mutt.man: Add pointer to the full manual to the front of mutt.1\n\n2009-01-05 09:16 -0800  Petr Písař  <petr.pisar@atlas.cz>  (990f1e841dd4)\n\n\t* po/cs.po: Updated Czech translation\n\n2009-01-04 22:36 -0800  Vincent Lefevre  <vincent@vinc17.org>  (9af288ee9e91)\n\n\t* po/fr.po: Updated French translation\n\n2009-01-04 18:32 -0800  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (e47d05dc2633)\n\n\t* imap/util.c: Indentation fix\n\n2009-01-04 18:12 -0800  Brendan Cully  <brendan@kublai.com>  (1947c370fcd9)\n\n\t* Makefile.am: Remove obsolete make target\n\n\t* doc/manual.xml.head: Update copyright in manual\n\n2009-01-04 17:07 -0800  Vincent Lefevre  <vincent@vinc17.org>  (bbe8694acc33)\n\n\t* po/fr.po: Updated French translation\n\n2009-01-04 17:04 -0800  Brendan Cully  <brendan@kublai.com>  (d98ab9a591e5)\n\n\t* pgpkey.c: Remove dead code. Thanks to Ingo Schwarze.\n\n\t* COPYRIGHT: Update copyrights\n\n\t* addrbook.c, ascii.h, attach.c, bcache.c, bcache.h, browser.c,\n\tbrowser.h, charset.c, charset.h, commands.c, complete.c,\n\tcompose.c, crypt-gpgme.c, crypt.c, curs_main.c, dotlock.c,\n\teditmsg.c, enter.c, functions.h, gnupgparse.c, handler.c,\n\thdrline.c, hook.c, init.h, lib.c, lib.h, menu.c, mh.c,\n\tmutt_idna.c, mutt_idna.h, mutt_sasl.h, mutt_socket.c, muttlib.c,\n\tmx.c, pager.c, pattern.c, pgp.c, pgp.h, pgpinvoke.c, pgpkey.c,\n\tpgplib.c, pgplib.h, pgppacket.c, pgppubring.c, pop.c, postpone.c,\n\tprotos.h, query.c, recvattach.c, recvcmd.c, remailer.c, rfc1524.c,\n\trfc2047.c, rfc2231.c, rfc3676.h, send.c, setenv.c, status.c,\n\turl.c: Update copyrights. Closes #3016. I went through the logs of\n\teach file with a copyright header and updated the years for the\n\tauthors in the headers for any non-comment changes they\n\tintroduced. What a pain!\n\n\t* imap/auth_anon.c, imap/auth_cram.c, imap/auth_login.c,\n\timap/auth_sasl.c, imap/browse.c, imap/imap.h, imap/message.h,\n\timap/utf7.c: IMAP copyright header updates\n\n\t* imap/auth_gss.c, imap/command.c, imap/imap.c, imap/message.c:\n\tUpdated copyrights\n\n\t* smtp.c: SMTP: complain when authentication fails. Closes\n\t#2117. Now each failed attempt emits an error before mutt tries\n\tthe next method. Possibly we should just fail immediately?\n\n\t* parse.c, snprintf.c: Use ! instead of testing pointers against 0.\n\tCloses #3125.\n\n2009-01-04 20:12 +0100  Rocco Rutte  <pdmef@gmx.net>  (33fa1ca4b6af)\n\n\t* doc/gen-map-doc, init.h: Documentation: Minor fixes and\n\timprovements\n\n2009-01-03 21:02 -0800  Brendan Cully  <brendan@kublai.com>  (5a80ee54a05f)\n\n\t* imap/command.c, imap/imap.c, init.c, muttlib.c, postpone.c: Raise\n\tdebug level for several messages\n\n\t* imap/auth_gss.c: Guard against unused variable warning.  Thanks\n\tto Ingo Schwarze.\n\n\t* doc/Makefile.am: Remove obsolete reference to ChangeLog.old. Thanks\n\tto Ingo Schwarze.\n\n\t* imap/message.c: Ignore unexpected FETCH responses during\n\timap_read_headers. Thanks to Chris Li for the excellent bug report\n\tin #3041. See #2902, #2935, #2985, #3028, #3041, #3143. With luck,\n\tthis may close them. In truth, imap_read_headers is still a horrible\n\tkludge of duct tape and chicken wire.\n\n\t* hash.c, hash.h: Make hash_string work in unsigned domain\n\n\t* main.c: Another copyright update\n\n\t* main.c, smtp.c: Update some copyrights\n\n2009-01-02 23:13 -0800  Brendan Cully  <brendan@kublai.com>  (87ef3e3550e4)\n\n\t* smtp.c: SMTP: Use Hostname if Fqdn is bogus. Closes #3142.\n\n\t* init.h: More tyops\n\n\t* doc/manual.xml.head: Tyops\n\n\t* mutt_ssl_gnutls.c: Add SSL intermediate certificate support for\n\tgnutls\n\n\t* mutt_ssl.c: Simplify intermediate certificate handling.  Return\n\timmediately if a certificate is interactively accepted.  Display\n\tindex of current certificate in chain in menu title.\n\n2009-01-02 12:46 -0800  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (5db868a874b6)\n\n\t* globals.h, mutt_ssl.c: Add support for intermediate certificates to\n\topenssl code. Gnutls support is not included in this patch.\n\n2009-01-01 17:02 -0800  Marcel Telka  <marcel@telka.sk>  (532f695b4352)\n\n\t* smtp.c: SMTP: Require SP after AUTH response (strict RFC\n\tconformance). Closes #3141.\n\n2009-01-01 16:55 -0800  Brendan Cully  <brendan@kublai.com>  (859009a507d8)\n\n\t* smtp.c: SMTP: guard against short server responses\n\n2008-12-30 00:58 +0100  Rocco Rutte  <pdmef@gmx.net>  (ac870203179d)\n\n\t* doc/manual.xml.head: Manual: Add missing maps to bind command docs\n\n\t* doc/TODO: Documentation: Update TODO\n\n2008-12-26 14:36 +0100  Rocco Rutte  <pdmef@gmx.net>  (4917897ac9b1)\n\n\t* init.c: Ignore NULL/empty lines in rc parser, fixes mutt -e ''\n\tcrashing\n\n2008-12-20 15:33 -0800  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (349986b1af09)\n\n\t* po/ja.po: Updated Japanese translation.\n\n2008-12-20 15:31 -0800  Brendan Cully  <brendan@kublai.com>  (a715dca3610c)\n\n\t* main.c: Cosmetics for mutt -v\n\n2008-11-26 01:15 +0000  Peter Collingbourne  <peter@pcc.me.uk>  (2fefd56f440c)\n\n\t* sendlib.c: Disable line wrapping for Message-ID header\n\n2008-12-16 20:19 -0800  Erik Hovland  <erik@hovland.org>  (f6ae8dc70850)\n\n\t* imap/util.c: Remove unused #include directives\n\n\t* crypt.c, curs_main.c, flags.c, group.c, hcache.c, mh.c, pager.c,\n\tpgpmicalg.c, pgppacket.c, postpone.c, query.c, recvattach.c,\n\trecvcmd.c, send.c: Remove unused #include directives\n\n\t* sendlib.c: mutt_gen_msgid() allocates the msgid off of the heap.\n\n\tSince mutt_gen_msgid() allocates the msgid string with strdup, it is\n\tgetting it off of the heap.\n\n\tWhen the fprintf writes the msgid, the string is no longer tracked\n\tand that string is leaked.\n\n\t* parse.c: Match variable type to getch return type\n\n\t* alias.c: Fix fread rc check\n\n\t* hash.c: Remove redundant int clamping\n\n\t* smime.c: Remove check that always succeeds\n\n\t* pattern.c: fclose correct fp\n\n\t* rfc822.c: buflen cannot be 0 here\n\n2008-12-16 12:36 -0800  Brendan Cully  <brendan@kublai.com>  (bbf4dfc2aa41)\n\n\t* ChangeLog.old, Makefile.am: Remove ChangeLog.old\n\n\t* imap/Makefile.am: Remove imap/BUGS from Makefile.am\n\n2008-12-15 23:45 -0800  Erik Hovland  <erik@hovland.org>  (adaf24e4117d)\n\n\t* mh.c: Fix bad parentheses in stat rc\n\n\t* bcache.c: snprintf returns int, not size_t\n\n\t* muttlib.c: Always va_end(ap_retry) in mutt_buffer_printf\n\n2008-12-15 23:11 -0800  Brendan Cully  <brendan@kublai.com>  (101a8bcba613)\n\n\t* imap/BUGS: imap/BUGS is superseded by the BTS\n\n2008-12-10 20:00 +0100  Rocco Rutte  <pdmef@gmx.net>  (817e5987633b)\n\n\t* doc/manual.xml.head: Manual: Fix typos found by by Vincent Lefevre,\n\tsee #3109.\n\n\t* doc/manual.xml.head: Manual: trim into chapter, add notes about\n\tcontributing\n\n\t* doc/mutt.css: Make mutt.css apply for all media types\n\n\t* doc/manual.xml.head, doc/mutt.css: Manual: Wrap important notes\n\tin <note/>\n\n\t* doc/Makefile.am, doc/chunk.xsl, doc/html.xsl, doc/mutt.xsl: Move\n\tcommon XSLT params to mutt.xsl imported into (chunk|html).xsl\n\n\t* doc/gen-map-doc, doc/makedoc.c, doc/manual.xml.head,\n\tdoc/manual.xml.tail, init.h: Manual: Only wrap real text\n\tparagraphs in <para/>\n\n\tElements such as lists, tables, synopsis don't need it and produce\n\thundreds of warnings in tidy because of empty paragraphs.\n\n\tWith this change, the manual should be fully XHTML 1.0 Transitional\n\tand validate without warnings and errors.\n\n\t* hg-commit: hg-commit: Work even in subdirectories\n\n\t* doc/chunk.xsl, doc/html.xsl: Manual: Use right XSLT-way to embed\n\tCSS to avoid invalid xmlns=\"\" attributes on <style/>\n\n\t* doc/devel-notes.txt: devel-notes.txt: add some words about preparing\n\t& contributing patches\n\n\t* doc/manual.xml.head: Manual: Add section about typographical\n\tconventions, see #3109.\n\n\t* doc/manual.xml.head, doc/mutt.css: Manual: Wrap important examples\n\tin <example/>\n\n2008-12-06 15:06 +0100  Rocco Rutte  <pdmef@gmx.net>  (e13e903af3bf)\n\n\t* doc/manual.xml.head, doc/mutt.css: Manual: Fixup configuration\n\tcommand synopsis and switch to <cmdsynopsis/>\n\n\t* doc/makedoc.c: makedoc: use <quote/> and <literal/> in string\n\tdefault values\n\n\tThe goal is to improve readability of settings where spaces are\n\trelevant.\n\n\t* doc/Makefile.am, doc/chunk.xsl, doc/html.xsl, doc/mutt.css:\n\tManual: Add simple and clean stylesheet, see #3109.\n\n2008-12-02 16:10 +0100  Rocco Rutte  <pdmef@gmx.net>  (3a8e5756613c)\n\n\t* init.c: Include mutt_menu.h in init.c for mutt_menu_init() prototype\n\n2008-12-01 21:27 +0100  Rocco Rutte  <pdmef@gmx.net>  (1e8252a9e92f)\n\n\t* ChangeLog, charset.c, history.c, init.c, init.h, pattern.c: Fix some\n\ttypos to silence compiler warnings\n\n2008-11-30 20:28 +0100  Rocco Rutte  <pdmef@gmx.net>  (cb251bde7fc1)\n\n\t* addrbook.c, browser.c, compose.c, crypt-gpgme.c, curs_main.c,\n\tinit.c, menu.c, mutt_menu.h, mutt_ssl.c, mutt_ssl_gnutls.c, pager.c,\n\tpgpkey.c, postpone.c, query.c, recvattach.c, remailer.c, smime.c:\n\tManage last search pattern outside of menu lifecycle\n\n\tPreviously, the pattern was thrown away during menu destruction. For\n\tthe next search, mutt then can't provide a good suggestion. The new\n\tbehaviour is to manage the pattern outside the lifecyle to always\n\tprovide the last pattern as suggestion.\n\n\t* query.c: Start numbering query results with 1 instead of 0\n\n2008-11-24 11:44 -0800  Brendan Cully  <brendan@kublai.com>  (fd555f9fcb03)\n\n\t* doc/manual.xml.tail, main.c: Belatedtly acknowledge Rocco's\n\tsignificant contributions to mutt\n\n2008-11-24 12:41 +0100  Rocco Rutte  <pdmef@gmx.net>  (dc62594cc9e9)\n\n\t* doc/Makefile.am: Manual: Fix lynx call for html to text\n\tconversion, strip \\001 when dumping with elinks\n\n\t* doc/manual.xml.head: Manual: Fix/Improve quoting\n\n\t* hg-commit: hg-commit: Exit if manual validation fails\n\n\t* doc/manual.xml.head, doc/muttrc.man.head: Documentation:\n\tConsistently use \"backtick\" for `\n\n\t* doc/Makefile.am, doc/manual.xml.head, doc/muttrc.man.head:\n\tManual: Add 'spellcheck' target for aspell and fix typos (closes\n\t#3137)\n\n2008-11-23 18:46 +0100  Rocco Rutte  <pdmef@gmx.net>  (82b4664129cd)\n\n\t* doc/Makefile.am: Complete e1304a641938 commit\n\n\t* doc/Makefile.am, doc/db-cleanup.xsl: Manual: Convert manual.html\n\tto manual.txt under C locale\n\n\tThis ensures manual.txt is always pure ASCII and removes the\n\thorrible XSLT-based and incomplete hack.\n\n\t* doc/manual.xml.head: Manual: Fix wording for simple search\n\n2008-11-22 18:09 +0100  Rocco Rutte  <pdmef@gmx.net>  (0837f7b13990)\n\n\t* po/de.po: Fix German translation for what-key\n\n\t* UPDATING, functions.h, keymap.c, pager.c: Make what-key function\n\tavailable in pager-based menus, too\n\n2008-11-21 11:34 -0800  Petr Písař  <petr.pisar@atlas.cz>  (870b7dfb89ef)\n\n\t* po/cs.po: Updated Czech translation.\n\n2008-11-21 11:19 -0800  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (34315aab7401)\n\n\t* ChangeLog, mbyte.c: Initialize mbstate in mutt_filter_unprintable.\n\tCloses #3134\n\n2008-11-16 21:01 -0800  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (8199185fa595)\n\n\t* snprintf.c: Add support for %ll to the bundled snprintf\n\treplacement.\n\n\t* configure.ac, doc/makedoc-defs.h: Add --disable-full-doc flag to\n\tonly build documentation for enabled features\n\n2008-11-15 20:24 -0800  Brendan Cully  <brendan@kublai.com>  (8087be7178cd)\n\n\t* configure.ac: Use with_tokyocabinet exclusively (with_tc is\n\tundefined). Closes #3131.\n\n2008-11-15 19:51 -0800  Alexey I. Froloff  <raorn@altlinux.org>  (af87aa1846be)\n\n\t* md5.c, md5.h: md5.h, md5.c: updated to latest version from gnulib.\n\tBuggy old md5.h causes problems with gcc 4.3 compiler. In md5.h\n\t__attribute__ is #define'd to no-op and causes mutt_md5 to enter\n\tinifinite loop while calling memcpy().\n\n2008-11-15 19:36 -0800  Gary Johnson  <garyjohn@spk.agilent.com>  (01e4deee6827)\n\n\t* curs_lib.c, mutt_socket.c, mutt_ssl_gnutls.c, smtp.c: Suppress\n\tseveral progress messages in batch mode\n\n2008-11-11 11:41 -0800  Kyle Wheeler  <kyle-mutt-dev@memoryhole.net>  (53ffd34f4de3)\n\n\t* smtp.c: Use envfrom instead of recomputing it in mutt_smtp_send.\n\n2008-10-29 20:49 -0700  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (c2439fc68cd6)\n\n\t* pager.c: Restart pager search from top if called twice.  Do not\n\tloop infinitely. Closes #3127.\n\n2008-10-30 01:02 +0100  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (6c58b678d360)\n\n\t* account.c: Remove unused variable in mutt_account_match and fix\n\tcomment.\n\n\t* imap/command.c, imap/imap.h, imap/util.c: Add imap_account_match\n\twrapper over mutt_account_match that canonicalizes accounts with\n\timap_conn_find so that username comparison always work as expected.\n\n2008-10-28 22:20 +0000  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (caa738600644)\n\n\t* enter.c, group.c, handler.c, init.c, lib.c, menu.c, mh.c,\n\tmutt_idna.c, mutt_ssl.c, mx.c, parse.c, recvattach.c, rfc822.c,\n\tsignal.c, sort.c, thread.c: Make some functions static.\n\n2008-10-20 11:50 -0700  Brendan Cully  <brendan@kublai.com>  (5ea9f336dd60)\n\n\t* imap/util.c: Accidentally dropped from d4a9c0a68f2b prior to commit\n\n\t* imap/imap.c, imap/message.c: Hack around INBOX.INBOX breakage\n\tfrom [5d1cc2f0c1c4]\n\n2008-10-20 18:00 +0100  Vincent Lefevre  <vincent@vinc17.org>  (11d2c6712c88)\n\n\t* pattern.c: Make eat_regexp static.\n\n2008-10-20 09:55 -0700  Kyle Wheeler  <kyle@memoryhole.net>  (361b298c9fe2)\n\n\t* imap/util.c: Fix #3129\n\n2008-10-20 09:48 -0700  Brendan Cully  <brendan@kublai.com>  (f119005f8169)\n\n\t* imap/imap.c, imap/imap_private.h: Call imap_free_idata instead of\n\tfreeing directly in imap_logout\n\n\t* imap/browse.c: Fix memory leak in imap_mailbox_state\n\n2008-10-19 16:26 -0700  TAKAHASHI Tamotsu  <tamo@momonga-linux.org>  (e1fc907b2968)\n\n\t* imap/browse.c: Fix up destination path when renaming mailbox. Closes\n\t#2090.\n\n2008-10-19 16:14 -0700  Brendan Cully  <brendan@kublai.com>  (5d1cc2f0c1c4)\n\n\t* imap/util.c: Normalize path component of IMAP URLs in\n\timap_expand_path (see #2897).\n\n\t* mutt_socket.c: Fix buglet in logging from previous commit\n\n\t* mutt_socket.c: Handle short writes in mutt_socket_write_d. See\n\t#3000. Apparently even blocking I/O with signals masked can\n\tsometimes return early. Based on a patch by Patrick Welche.\n\n2008-10-19 15:14 +0200  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (2f04a811db3f)\n\n\t* pattern.c, sendlib.c: Remove unused functions.\n\n\t* curs_main.c, init.c, pattern.c, score.c: Make some variables static.\n\n\t* configure.ac: Fix logic in [13a831a945be].\n\n2008-10-07 19:22 -0700  Brendan Cully  <brendan@kublai.com>  (10a1f06bc8aa)\n\n\t* Makefile.am, configure.ac, mutt_idna.c, mutt_idna.h: Clean up with\n\t/without-idn handling\n\n2008-10-07 15:58 -0700  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (cd3bd3858c6c)\n\n\t* mutt_socket.c: Minor simplification in mutt_socket_readln_d\n\n2008-10-07 15:27 -0700  Brendan Cully  <brendan@kublai.com>  (d13106731007)\n\n\t* mutt_idna.c, mutt_idna.h: Build no-op versions of new IDN functions\n\tif IDN is unavailable. Closes #3122, #3123.\n\n2008-10-01 09:33 -0700  Brendan Cully  <brendan@kublai.com>  (13a831a945be)\n\n\t* configure.ac: Clean up autoconf header cache engine selection.\n\n\tAny explicit --with-$engine will force that engine to be used or\n\tmake configure fail if the engine is unavailable.\n\n2008-09-29 14:31 -0700  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (ec96c56be182)\n\n\t* mutt_socket.c: Simplify host resolution code slightly.\n\n2008-09-26 08:55 +0200  Rocco Rutte  <pdmef@gmx.net>  (9e569296190b)\n\n\t* UPDATING, doc/manual.xml.head, init.h: Mention tokyocabinet in\n\tUPDATING and docs\n\n2008-09-25 15:07 -0700  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (2050b44407bf)\n\n\t* configure.ac, hcache.c, init.h, mutt.h: Support tokyocabinet\n\t(successor to qdbm). Closes #3112\n\n2008-09-24 15:58 +0200  Matthias Andree  <matthias.andree@gmx.de>  (2c8bf79d99b7)\n\n\t* ChangeLog, pager.c: Fix compiler warning in dprint() (closes #3120)\n\n2008-09-24 15:53 +0200  Rocco Rutte  <pdmef@gmx.net>  (c842922bea10)\n\n\t* doc/manual.xml.head: Manual: Fix typo\n\n\t* mbyte.c: Provide legacy implementations for iswalpha() and\n\tiswupper()\n\n\tIn mbyte.h and without using wc functions, only the prototypes were\n\tdefined but implementations were missing resulting in build errors.\n\tThese new functions are derived from the iswalnum() and towupper()\n\troutines which don't provide full unicode coverage.\n\n\t* imap/imap.c: Fix an infinite loop for imap searches\n\n\tReported by Emanuele Giaquinta on #mutt.\n\n2008-09-18 08:28 +0200  Rocco Rutte  <pdmef@gmx.net>  (ffefb446142c)\n\n\t* alias.c, init.c, muttlib.c, protos.h: Fix compiler warnings\n\n2008-09-17 22:27 +0200  Thomas Roessler  <roessler@does-not-exist.org>  (77e25415a08a)\n\n\t* alias.c, globals.h, init.c, mutt_idna.c, muttlib.c, rfc822.h,\n\tsort.c: sorting efficiency\n\n2008-09-16 17:20 +0200  Rocco Rutte  <pdmef@gmx.net>  (1cb0a127eb3d)\n\n\t* UPDATING: UPDATING: $move now defaults to \"no\"\n\n2008-09-11 09:28 +0200  Rocco Rutte  <pdmef@gmx.net>  (1a6842983357)\n\n\t* ChangeLog, keymap.c: Fix IMAP keepalive if $imap_keepalive >=\n\t$timeout\n\n2008-09-01 18:23 +0200  Rocco Rutte  <pdmef@gmx.net>  (17adea9cdff6)\n\n\t* UPDATING: Add note about locale-safe hcaches to UPDATING as it's a\n\tuser-visible change\n\n2008-08-31 23:36 +0200  Rocco Rutte  <pdmef@gmx.net>  (b6d07a662c7f)\n\n\t* ChangeLog, init.h, pager.c: Fix pager to respect $wrap_search\n\n2008-08-31 23:28 +0200  Rocco Rutte  <pdmef@gmx.net>  (f4b10e6b415c)\n\n\t* doc/chunk.xsl, doc/html.xsl: Backout [e5610347fb3f] for further\n\tdiscussion\n\n2008-08-31 21:13 +0200  Rocco Rutte  <pdmef@gmx.net>  (581037c15012)\n\n\t* init.h: Manual: Fix trailing \\ for $preconnect\n\n2008-08-31 21:12 +0200  Rocco Rutte  <pdmef@gmx.net>  (6d80c3d5b7aa)\n\n\t* doc/makedoc.c: makedoc: Fix fall-through in [c11ce7feaa3e]\n\n2008-08-31 20:56 +0200  Rocco Rutte  <pdmef@gmx.net>  (03d1344f7ea2)\n\n\t* doc/gen-map-doc: Manual: Harmonize generated function mappings with\n\tthe rest of the manual. This includes named keys such as \"<Return>\",\n\tattempts to use CamelCase and leaves the key column for unbound\n\tfunctions empty so they're visually easier to spot.\n\n2008-08-31 20:12 +0200  Rocco Rutte  <pdmef@gmx.net>  (937c3976df5a)\n\n\t* doc/manual.xml.head, init.h: Manual: Many content+markup\n\timprovements for option documentation\n\n2008-08-31 19:30 +0200  Rocco Rutte  <pdmef@gmx.net>  (df555876d480)\n\n\t* doc/makedoc.c: makedoc: Also replace | and ^ by entities in XML\n\toutput\n\n2008-08-31 18:25 +0200  Rocco Rutte  <pdmef@gmx.net>  (c11ce7feaa3e)\n\n\t* doc/makedoc.c: makedoc: Escape <>& in <screen/> environments\n\n2008-08-31 15:27 +0200  Rocco Rutte  <pdmef@gmx.net>  (4cc92c30543b)\n\n\t* doc/makedoc.c, doc/manual.xml.head, doc/manual.xml.tail, init.h:\n\tManual: Use <quote/> quoting for DocBook rather than ``''. All\n\tquotes characters are now rendered to Unicode quote chars in the\n\tHTML output (as <xref/> does, too) but still \" for manual.txt.\n\n2008-08-31 14:31 +0200  Rocco Rutte  <pdmef@gmx.net>  (e5610347fb3f)\n\n\t* doc/chunk.xsl, doc/html.xsl: Manual: Limit toc section depth to 1\n\tThis only lists sect1 items and prevents variables from being shown\n\tmaking it unusable.\n\n2008-08-31 14:25 +0200  Rocco Rutte  <pdmef@gmx.net>  (15a831b84d46)\n\n\t* doc/manual.xml.tail: Manual: use itemizedlist for acknowledgements\n\tDocBook XSL renders simplelist to a html table which is\n\tinappropriate.\n\n2008-08-30 20:21 -0700  Brendan Cully  <brendan@kublai.com>  (c2af57b1e7ee)\n\n\t* ChangeLog, mutt_ssl_gnutls.c: Make gnutls read function more robust\n\tagainst interruptions. Signals should be masked off anyway, but see\n\t#3074.\n\n2008-08-30 23:19 +0200  Rocco Rutte  <pdmef@gmx.net>  (996e4e2d2855)\n\n\t* doc/manual.xml.head, init.h: Manual: use $variable syntax, only\n\tquote non-variable links\n\n\t* doc/manual.xml.head: Manual: Various fixes+improvements in chapters\n\t1+2\n\n\t* doc/gen-map-doc, doc/makedoc.c, doc/manual.xml.head, init.h: Manual:\n\tLayout functions as <function-name>, s/ESC/Esc/ for consistency\n\n\t* doc/devel-notes.txt, doc/makedoc.c: makedoc: Add support for\n\tmonospace fonts with \\fC...\\fP\n\n\t* doc/manual.xml.head: Manual: trim trailing whitespace\n\n\t* doc/manual.xml.head: Manual: Fix processing warnings by manually\n\tassigning missing id attributes\n\n\t* doc/manual.xml.head: Manual: Add a section on mutt core concepts as\n\tintroduction\n\n2008-08-30 19:59 -0700  Brendan Cully  <brendan@kublai.com>  (12a6de725483)\n\n\t* curs_lib.c, enter.c, flags.c, keymap.c, menu.c: Rework timeout\n\thandling to support keepalive in the line editor. Also allow\n\tkeepalives of less than $timeout without returning before $timeout,\n\tso people who don't want to be notified of new mail don't have to\n\tbe.\n\n2008-08-29 23:10 -0700  Rado Smiljanic  <regrado@web.de>  (4f67fc336986)\n\n\t* curs_main.c, keymap.c, menu.c, pager.c: Make curses timeout the\n\tminimum of $timeout and $imap_keepalive. Do keepalive in km_dokey\n\tinstead of directly in menu. Closes #2747.\n\n2008-08-29 22:40 -0700  Brendan Cully  <brendan@kublai.com>  (e37ae3f79ec0)\n\n\t* imap/imap_private.h: Dead code\n\n\t* imap/imap.c: Remove redundant code\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h, imap/message.c:\n\tUse sorted headers in imap_exec_msgset. Fixes [e68f79fef249]. Closes\n\t#3000 again.\n\n2008-08-29 10:23 +0200  YONETANI Tomokazu  <qhwt+mutt@les.ath.cx>  (78aab353e217)\n\n\t* buffy.c: Only consider empty files non-existent for buffy's\n\tpurpose.\n\n\tAccording to SUS, the st_size member of struct stat is undefined for\n\tdirectories. In case a system reports 0, the newly_created flag will\n\tbe set for a directory and the magic will be cleared.\n\n\tIf the folder type is cleared, mutt won't check the folder for new\n\tmail and thus will ignore MH and Maildir type folders on such a fs\n\tcompletely (e.g. the HAMMER fs on DragonFly BSD).\n\n2008-08-28 11:19 -0700  Brendan Cully  <brendan@kublai.com>  (1d94905ad00b)\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h, imap/message.c:\n\tThe msgset changes seem buggy. Reverting pending further testing.\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h, imap/message.c:\n\tSplit long IMAP commands for the benefit of lazy servers (closes\n\t#3000). Also touches lots of old, hairy code. Likely to wake\n\tsleeping dogs.\n\n2008-08-26 23:09 -0700  Brendan Cully  <brendan@kublai.com>  (2731e5174c5a)\n\n\t* imap/util.c, mutt_sasl.c, mutt_ssl.c, mutt_ssl_gnutls.c:\n\tProperly set the SASL external auth name when using SSL client\n\tcerts. Also zero out the account structure before filling it with\n\tavailable data. Client certificates + SASL EXTERNAL were only\n\tworking by luck.\n\n\t* imap/imap.c: Remove leftover IMAP IDLE handling from before\n\t[53d9210aa4ee].\n\n2008-08-25 00:52 -0700  Brendan Cully  <brendan@kublai.com>  (36aa1130091a)\n\n\t* UPDATING, globals.h, imap/command.c, imap/imap.c,\n\timap/imap_private.h, imap/util.c, init.c, init.h: Introduce\n\t$imap_pipeline_depth. This lets users control the number of\n\tcommands that mutt will queue up before sending them to the\n\tserver. Setting this to 0 disables pipelining, which should close\n\t#2892.\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h, imap/message.c:\n\tRework IMAP command queueing to allow pipelining to be disabled.\n\tIDLE handling has been better abstracted, and there are fewer entry\n\tpoints to the IMAP command issuing machinery. Any commands that are\n\tsimply queued may be executed whenever the pipeline fills, instead\n\tof requiring explicit handling in the caller.\n\n\tTested on my Cyrus server, but I wouldn't be surprise if this causes\n\tnew problems.\n\n2008-08-24 20:01 +0200  Rocco Rutte  <pdmef@gmx.net>  (045c5942e1ad)\n\n\t* doc/manual.xml.head: Manual: Fix DTD validation error and\n\tmessage header display section\n\n\t* doc/manual.xml.head: Manual: Fix typo\n\n\t* doc/manual.xml.head: Manual: Fix style and typos. Noted by\n\tVincent Lefevre, see #3109.\n\n2008-08-23 15:25 -0700  Brendan Cully  <brendan@kublai.com>  (1f9849496bc2)\n\n\t* main.c: Whitespace cleanup\n\n\t* main.c: Fix infinite loop with \"mutt -\", introduced in\n\t[31c9e9727d42]. Treats - as a non-option argument. It would be\n\treasonable to treat it as an error instead.\n\n2008-08-19 16:44 -0400  Aron Griffis  <agriffis@n01se.net>  (31c9e9727d42)\n\n\t* main.c: Handle -- correctly with or without -a, closes #3097\n\n\tPrefix optstring with \"+\" to force POSIX behavior on GNU getopt, and\n\tthereby prevent reordering argv. This allows us to correctly handle\n\tmixed addresses, attachments, options and the double-dash to signal\n\tend-of-options.\n\n\tSigned-off-by: Aron Griffis <agriffis@n01se.net>\n\n2008-08-22 17:49 +0200  Rocco Rutte  <pdmef@gmx.net>  (6fd1fa2d98bc)\n\n\t* doc/manual.xml.head: Manual: fix/improve markup/content, see\n\t#3109\n\n2008-08-21 10:42 +0200  Rocco Rutte  <pdmef@gmx.net>  (15d93fe50e62)\n\n\t* init.h: Clarify documentation for $config_charset. Closes #2021.\n\n\t* doc/manual.xml.head: Improve color/mono command synopsis.\n\tCloses #2630.\n\n\t* init.h: Better document the effect of $thorough_search being unset.\n\tCloses #3104.\n\n\t* mutt_ssl.c: Port certificate host checking from msmtp to\n\tmutt. It supports IDN, wildcards and extracting the hostname from\n\tsubject alternative field as well as common name which should be\n\tthe same gnutls supports. Closes #3087.\n\n2008-08-19 13:17 -0700  Brendan Cully  <brendan@kublai.com>  (573d1aab3c89)\n\n\t* init.c: Silence an incorrect uninitialized variable warning.\n\n\t* init.h: Better documentation for how quote_regexp determines\n\tquote level. Closes #1463.\n\n2008-08-19 09:39 +0200  Rocco Rutte  <pdmef@gmx.net>  (3e850c6e43fd)\n\n\t* handler.c, mutt.h: Make text/enriched handler multibyte aware.\n\tCloses #3033.\n\n2008-08-18 13:08 -0700  Vincent Lefevre  <vincent@vinc17.org>  (95a11c7f677d)\n\n\t* po/fr.po: Updated French translation.\n\n2008-08-18 10:24 +0200  Rocco Rutte  <pdmef@gmx.net>  (51bd7a47d552)\n\n\t* pager.c: Ignore zero width characters U+200B/U+FEFF which may garble\n\tthe display. Closes #3061, #3048.\n\n\t* charset.c, charset.h, init.c: Validate charset names for all\n\tcharset options. Validation is either done against mutt's table of\n\tIANA assigned names or local iconv implementation (based on the\n\tassumption that iconv_open(charset,charset) fails if charset is\n\tunknown to the implementation). Closes #1668.\n\n2008-08-15 11:53 -0700  Brendan Cully  <brendan@kublai.com>  (ff3fbb6a92a8)\n\n\t* mutt_sasl.c: Fix type-punning warning in sasl_getprop usage\n\n\t* parse.c: Fix a couple of compiler warnings introduced in\n\t[00ce81d778bf]. Make the style of mutt_parse_references more\n\tpleasing to me.\n\n2008-07-10 09:38 -0400  Aron Griffis  <agriffis@n01se.net>  (d3ee9644765f)\n\n\t* copy.c: Fix three bugs handling flags in mutt_copy_header\n\n\t1. mutt_copy_header incorrectly tests CH_UPDATE to determine whether\n\tto write the In-Reply-To and References headers. CH_UPDATE\n\trefers only to Status: and X-Status:\n\n\t2. mutt_copy_header ignores CH_NOSTATUS which is supposed to\n\tindicate that the mailbox type doesn't use those headers.\n\n\t3. mutt_copy_header tests h->env->irt_changed and\n\th->env->refs_changed when it should be testing CH_UPDATE_IRT and\n\tCH_UPDATE_REFS, respectively. Early in the function this\n\thappens:\n\n\t if (h->env) flags |= (h->env->irt_changed ? CH_UPDATE_IRT\n\t: 0) | (h->env->refs_changed ? CH_UPDATE_REFS : 0);\n\n\t This means that for most callers, the result is the same, but\n\tmutt_copy_header should be testing the flags because the caller\n\tmight have set them explicitly without setting\n\tirt_changed/refs_changed.\n\n\t* parse.c, protos.h, send.c: Unify parser for message-ids\n\n\tRewrite mutt_extract_message_id and change mutt_parse_references to\n\tus it. The parser in mutt_extract_message_id is looser than the old\n\tone in mutt_parse_references; it just looks for <[^\\s>]+> and\n\tdoesn't worry about @-signs. Additionally it doesn't use strtok, so\n\tthe input string can be const.\n\n\tCloses #3090, #1935, #1116 (both the stated bug and the conversation\n\tfollowing).\n\n2008-08-11 16:42 +0200  Rocco Rutte  <pdmef@gmx.net>  (508ffc26dad2)\n\n\t* alias.c, doc/manual.xml.head, init.c: Prefer \"backtick\" over\n\t\"backtic\" on comments and docs as it's more common, closes #3101.\n\n2008-07-27 10:48 -0400  Aron Griffis  <agriffis@n01se.net>  (3f595d14a285)\n\n\t* doc/manual.xml.head: doc: semi-colon needs quoting too\n\n\tIf semi-colon is bound or macro'd, it needs to be quoted like space,\n\totherwise mutt thinks it's separating commands.\n\n\tSigned-off-by: Aron Griffis <agriffis@n01se.net>\n\n2008-07-21 10:24 -0400  Aron Griffis  <agriffis@n01se.net>  (96b0dd25a550)\n\n\t* copy.h, mutt.h: noop cleanup: move mutt_copy_header flags to copy.h\n\n\tNoticed while reading that these flags are better defined in copy.h\n\tthan mutt.h. Builds without warnings.\n\n\tSigned-off-by: Aron Griffis <agriffis@n01se.net>\n\n2008-07-24 16:19 -0400  Brendan Cully  <brendan@kublai.com>  (0e2f9189a1dd)\n\n\t* m4/codeset.m4, m4/iconv.m4: Fix m4 serial numbers to avoid\n\taclocal 1.10 warnings\n\n2008-07-21 11:42 +0200  Rocco Rutte  <pdmef@gmx.net>  (7e6d98886cce)\n\n\t* doc/makedoc.c: makedoc: Add \".ie\" and \".il\" to support itemized\n\tlists.\n\n\tSome settings docs use verbatim screen environments to print lists\n\twhile support for real lists will make it look nicer: for docbook\n\tuse <itemizedlist/>, \\(hy for roff and '-' for text.\n\n\t* doc/manual.xml.head: Document that account-hook is intended for\n\tconnection-related settings only\n\n\t* doc/manual.xml.head: Manual: Use tables for message flags as it's\n\tmore compact\n\n\t* doc/manual.xml.head: Manual: minor formatting tweaks\n\n\t* alias.c, init.h: Encode lines written to $alias_file in\n\t$config_charset if set. Closes #3095\n\n2008-07-10 09:38 -0400  Aron Griffis  <agriffis@n01se.net>  (7729b1ad530c)\n\n\t* copy.c, protos.h, sendlib.c: Unify mutt_write_references\n\n\tcopy.c and sendlib.c have independent and different implementations\n\tof writing references to a file. Choose the one in sendlib since\n\tit's conservative with mallocs and supports trimming the list.\n\n\tSigned-off-by: Aron Griffis <agriffis@n01se.net>\n\n\t* copy.c: Clean up error handling in mutt_copy_header\n\n\tmutt_copy_header unnecessarily tests the result of each fputc/fputs\n\t(well, most of them anyway, it's not consistent). This obfuscates\n\tthe code and hides bugs. Remove these extraneous checks since\n\tferror/feof are checked at the bottom of the function, and get rid\n\tof all the early returns.\n\n\tSigned-off-by: Aron Griffis <agriffis@n01se.net>\n\n2008-07-17 19:48 +0200  Rocco Rutte  <pdmef@gmx.net>  (f135d64e0082)\n\n\t* query.c: Cleanup unused vars changeset ba0d96408425 didn't\n\tremove\n\n2008-07-11 11:34 +0200  Rocco Rutte  <pdmef@gmx.net>  (cc67b008038c)\n\n\t* doc/manual.xml.head: Mention that @ can be used in usernames in URLs\n\n\t* charset.c: Allow UTF-8 charset to be misspelled as \"utf8\"\n\n\t* mutt_ssl.c: Verify hostname in (Open)SSL certificate validation\n\n\tThis is based on the patch by gkloepfer attached to #3087 but passes\n\tthe proper connection as argument (avoiding adding hostname to\n\tstruct sslsockdata) and validates the hostname even in case OpenSSL\n\tcannot find the local issuer certificate. GnuTLS already supports\n\thostname checking. Closes #3087.\n\n2008-07-10 22:02 +0200  Rocco Rutte  <pdmef@gmx.net>  (b9ac445b035b)\n\n\t* hcache.c: Prevent some pointers of 'struct body' being saved to\n\thcache\n\n\tThis addresses the hcache safety issue but maybe doesn't fix it\n\tcompletely, see #2942. This also prevents mutt from crashing when\n\tusing a hcache that was synced when syncing the mailbox (updating\n\tchanged and fully-parsed messages).\n\n2008-07-10 21:46 +0200  Aron Griffis  <agriffis@n01se.net>  (6244eefaea64)\n\n\t* headers.c: Remove completely wrong comment regarding in-reply-to and\n\treferences\n\n\t...plus fix one other comment and some whitespace.\n\n2008-07-09 09:14 +0000  Rocco Rutte  <pdmef@gmx.net>  (2a9e9c487bad)\n\n\t* doc/mutt.man, main.c: Document redirection to trigger batch send\n\tmode in mutt(1) and mutt -h. Closes #2070.\n\n2008-07-04 09:09 +0200  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (74b54f11c919)\n\n\t* protos.h: Fix syntax error for strtok_r compatitility prototype\n\n2008-07-02 18:26 +0200  Vladimir Marek  <Vladimir.Marek@Sun.COM>  (f72fce68ca19)\n\n\t* lib.c: Use stat() instead of dirent->d_type to test for\n\tdirectory. Closes #3089.\n\n2008-07-02 18:23 +0200  Rocco Rutte  <pdmef@gmx.net>  (7783502a04c7)\n\n\t* curs_main.c: Calculate menu->max after a possible resort in index\n\t(maybe changing number of messages). Closes #3088.\n\n\t* curs_lib.c: Fix casts for progress update to prevent -ftrapv\n\taborts to trigger. Closes #3018.\n\n2008-07-02 08:56 -0700  Brendan Cully  <brendan@kublai.com>  (c51c16db46cc)\n\n\t* crypt-gpgme.c: Only make LC_MESSAGES conditional on NLS in GPGME\n\tlocale support.\n\n2008-07-02 11:19 +0200  Rocco Rutte  <pdmef@gmx.net>  (8b783c916893)\n\n\t* browser.c, buffy.c, commands.c, compose.c, curs_main.c, enter.c,\n\theaders.c, hook.c, imap/imap.c, init.c, mbox.c, muttlib.c,\n\tpostpone.c, protos.h, recvattach.c, send.c, status.c: Use\n\trealpath() in mutt_pretty_mailbox() for paths that may need\n\tit. This requires to add the buffer size as parameter since the\n\tresult may be longer than the original but still fit in the\n\tbuffer. Closes #2948.\n\n\t* hash.c: Use casts to avoid triggering integer overflow detection in\n\thash function\n\n2008-07-01 20:06 -0700  Vincent Lefevre  <vincent@vinc17.org>  (fb0df4ae0836)\n\n\t* ChangeLog, curs_lib.c: Clamp timeval math to unsigned int to match\n\tprogress timestamps. This is fine since only relative differences\n\tmatter. Closes #3018.\n\n2008-07-01 18:29 -0700  Brendan Cully  <brendan@kublai.com>  (f9af0501d2dd)\n\n\t* crypt-gpgme.c: Set GPGME locale on first attempt to create context.\n\tCloses #2913.\n\n\t* crypt-gpgme.c, crypt-gpgme.h, crypt-mod-pgp-gpgme.c: Stub in a\n\tgpgme version of extract-keys. It doesn't currently work right\n\tbecause apparently while gpg on the command line can parse a whole\n\tmessage, we'll have to do it for gpgme. I really wonder about the\n\t'ME' part of GPGME sometimes.\n\n\t* crypt-gpgme.c, lib.c, lib.h: Support displaying application/pgp-keys\n\twith GPGME. This was pretty convoluted because GPGME provides no way\n\tto examine a key block without importing it. This code creates a\n\ttemporary GPG home in which to import the key in order to display\n\tit.\n\n\t* crypt-gpgme.c, handler.c, pgp.c: Handle DONTHANDLEPGPKEYS in\n\thandler instead of crypto modules. This lets gpgme and classic pgp\n\tshare a bit of logic, and unbreaks key extraction at least for\n\tclassic PGP.\n\n\t* copy.c: Bail out of copy if decryption is requested but the desired\n\tengine is missing. This closes #2684, but handling of mixed crypto\n\tin a single message needs more investigation.\n\n2008-07-01 01:10 -0700  rtc  <rtc@gmx.de>  (49fe0292b503)\n\n\t* copy.c: When deleting attachments, always print newline\n\tseparating header from body. Closes #3085.\n\n2008-06-29 01:09 -0700  Brendan Cully  <brendan@kublai.com>  (677e7712d735)\n\n\t* crypt-gpgme.c: Improve gpgme SMIME uid display: align each line by\n\tthe length of the first.\n\n\t* crypt-gpgme.c: Show more information about problematic SMIME\n\tsignatures under gpgme. Also warn if the key is not known to be\n\tgood. For some reason expired keys in my environment are not\n\tflagged as expired in sig->status or sig->summary.\n\n2008-06-28 20:33 -0700  Brendan Cully  <brendan@kublai.com>  (1492c24f2a4e)\n\n\t* mutt_ssl_gnutls.c: Extract CN from client certificate in gnutls.\n\tNothing currently uses it, but I suspect we should be using it as\n\tthe external auth name in mutt_sasl_client_new.\n\n\t* UPDATING, globals.h, init.h, mutt_sasl.c, mutt_ssl_gnutls.c:\n\tBasic support for $ssl_client_cert when compiled with\n\tgnutls. The key must not be encrypted. Closes #2911.\n\n2008-06-27 12:04 -0700  Petr Písař  <petr.pisar@atlas.cz>  (40c6e851bf76)\n\n\t* po/cs.po: Updated Czech translation.\n\n2008-06-26 12:52 -0700  Brendan Cully  <brendan@kublai.com>  (c5256c65eedb)\n\n\t* handler.c: Mark new error message for translation.\n\n\t* curs_lib.c: Force a resize event after calling an external editor.\n\tCloses #2207\n\n\t* lib.c, lib.h, mh.c: fflush before fsync and close. Closes #2962\n\tagain.\n\n\t* mh.c: fsync maildir/mh messages on commit. Closes #2962.\n\n2008-06-25 23:40 -0700  Brendan Cully  <brendan@kublai.com>  (32374c911c6c)\n\n\t* smime.c: Check S/MIME signing ID exists before attempting to use\n\tit. Closes #3069. Also make (s)ign automatically ask for a key if\n\tno default is defined.\n\n\t* init.h: Make $move default to no instead of ask-no. Closes #2945.\n\n\t* doc/manual.xml.head: Document difference between index and pager\n\tsearch. Closes #2886.\n\n\t* commands.c, copy.c, crypt-gpgme.c, handler.c, mbox.c, pgp.c: Make\n\tmutt_copy_message distinguish between fatal and non-fatal errors.\n\tNon-fatal errors should prevent moving messages, since they indicate\n\tdata loss. But mutt should still attempt to display them, since\n\tbeing able to see some attachments is better than nothing. Also stop\n\tprinting out non-PGP material in application/pgp attachments. Closes\n\t#2545, #2912.\n\n2008-06-24 23:12 -0700  Brendan Cully  <brendan@kublai.com>  (f5fe657f0633)\n\n\t* handler.c: Make multipart decoding a little more\n\tforgiving. First, ignore bad content-transfer-encoding in\n\tmultipart sections. Second, if an attachment fails to decode,\n\tprint a warning and continue instead of giving up on the entire\n\tmessage.\n\n1970-01-01 00:00 +0000  Brendan Cully  <brendan@kublai.com>  (a2e8f6fab8d3)\n\n\t* smtp.c: Test that envelope from or from is set before attempting\n\tSMTP delivery. Closes #3079.\n\n2008-06-14 18:23 -0700  Christoph Berg  <cb@df7cb.de>  (4b790909a037)\n\n\t* doc/mbox.man: Document that From_ lines use asctime-style dates,\n\tnot RFC2822 dates. Closes #3077.\n\n2008-06-11 22:45 -0700  Alexey I. Froloff  <raorn@altlinux.org>  (1e8ca708a52f)\n\n\t* attach.c: Do not attempt to close invalid descriptors. Closes #3075\n\n2008-06-05 13:06 +0200  Vladimir Marek  <Vladimir.Marek@Sun.COM>  (5ab92dd44ce2)\n\n\t* alias.c: Wrap Fqdn in NONULL() to prevent crash with -d5 if Fqdn\n\tis NULL\n\n2008-06-02 09:45 +0200  Rocco Rutte  <pdmef@gmx.net>  (d6d04a7f5aea)\n\n\t* init.c: Allow for printing variable values longer than 256\n\tcharacters\n\n\t* rfc822.c: Allow for mail addresses longer than 256\n\tcharacters (closes #3066).\n\n2008-05-30 16:14 +0200  Rocco Rutte  <pdmef@gmx.net>  (2f59be26ad22)\n\n\t* protos.h: Define prototypes for compatibility functions in protos.h\n\tto silence compiler warnings\n\n2008-05-29 14:18 +0200  Rocco Rutte  <pdmef@gmx.net>  (bf74c85070c4)\n\n\t* menu.c: Respect $wrap_search in generic menu search (e.g.  for\n\tbrowser)\n\n\t* doc/Makefile.am: Only install mutt_dotlock(1) if binary is\n\tinstalled, too (closes #1601).\n\n2008-05-28 22:22 -0700  Paul Walker  <paul@black-sun.demon.co.uk>  (f4259a92dab6)\n\n\t* doc/Muttrc.head: Make default muttrc header weeding\n\ttidier. Closes #286.\n\n2008-05-23 01:40 -0400  Todd Zullinger  <tmz@pobox.com>  (73a180edce53)\n\n\t* pgp.c: Call mutt_need_hard_redraw() in pgp_decrypt_part().\n\n\tThis change ensures that the screen is redrawn when using gpg-agent.\n\tWithout this, mutt's navigation keybindings are lost after pinentry\n\tcurses prompts for a passphrase to descrypt a message.\n\n2008-05-28 22:16 -0700  Moritz Schulte  <moritz@g10code.com>  (7fd74c40eced)\n\n\t* curs_lib.c: Make sure that the redrawing/reinitializing is done\n\talways, not only when the environment variable DISPLAY is not set.\n\n2008-05-28 22:05 -0700  Vladimir Marek  <Vladimir.Marek@Sun.COM>  (9d0509641865)\n\n\t* configure.ac, m4/iconv.m4: Cosmetic fix to configure\n\t--help. Closes #3060.\n\n2008-05-28 21:44 -0700  Vincent Lefevre  <vincent@vinc17.org>  (7b8ef3b8ff5a)\n\n\t* po/fr.po: Updated French translation\n\n2008-05-23 18:39 +0200  Rocco Rutte  <pdmef@gmx.net>  (8a3a037ec6b3)\n\n\t* UPDATING: UPDATING: fix 1.5.18 line as noted by Kyle Wheeler\n\n2008-05-22 20:22 -0700  Brendan Cully  <brendan@kublai.com>  (96a01436f88b)\n\n\t* imap/command.c: Escape LSUB mailbox names given to\n\tmutt_parse_rc_line. Handle literals in STATUS responses for Notes\n\tcompatibility.\n\n2008-05-22 17:01 +0200  Rocco Rutte  <pdmef@gmx.net>  (d612ef757ee9)\n\n\t* configure.ac, m4/types.m4: Use C99 macros \"PRId64\"/\"PRId32\" to\n\tformat file sizes/offsets if available. This fixes warning about\n\tmismatching int argument sizes on amd64.\n\n\t* init.h: Document that $check_mbox_size should be set before\n\tmailboxes commands\n\n\t* UPDATING: Mention requirement to encode X-Label: headers in\n\tUPDATING\n\n2008-05-21 23:20 -0700  Rocco Rutte  <pdmef@gmx.net>  (bba92e401440)\n\n\t* imap/browse.c: Guard idata->mailbox read in imap_mailbox_state.\n\tCloses #3057.\n\n2008-05-21 22:59 -0700  Piarres Beobide Egaña  <pi@beobide.net>  (51c494a2e735)\n\n\t* po/eu.po: Updated Basque translation.\n\n2008-05-21 22:55 -0700  René Clerc  <rene@clerc.nl>  (e95a579cf5e4)\n\n\t* po/nl.po: Updated Dutch translation\n\n2008-05-21 20:36 +0200  Rocco Rutte  <pdmef@gmx.net>  (1bdb7a7c3c8f)\n\n\t* buffy.c, buffy.h: Fix new mail detection for >2 GB mboxes with\n\t$check_mbox_size set\n\n\t* mbox.c, sendlib.c: Use ftello() instead of ftell() in more places\n\tthat need it (fixes progress updates for >2 GB mbox files)\n\n\t* doc/manual.xml.head, init.h: Improve documentation for handling\n\tmultiple folders and new mail detection\n\n2008-05-20 17:08 +0200  Paul Walker  <paul@black-sun.demon.co.uk>  (a4d423798321)\n\n\t* parse.c: Fix more compiler warnings on amd64 by use of %p instead of\n\t%x\n\n2008-05-19 09:52 -0700  Ivan Vilata i Balaguer  <ivan@selidor.net>  (38319cd7d832)\n\n\t* po/ca.po: Updated Catalan translation\n\n2008-05-19 18:49 +0200  Vladimir Marek  <Vladimir.Marek@Sun.COM>  (8ac4b70221ee)\n\n\t* Makefile.am: Unbreak build with included gettext by explicitly\n\tremoving libs for mutt_md5\n\n2008-05-19 11:14 +0200  Rocco Rutte  <pdmef@gmx.net>  (85654735d27e)\n\n\t* UPDATING: Mention mime_lookup change in UPDATING\n\n2008-05-19 10:59 +0200  Paul Walker  <paul@black-sun.demon.co.uk>  (d3fd07d0016c)\n\n\t* init.c: Use %p instead of %x to debug-print pointers (fixes warnings\n\ton 64bit platforms)\n\n2008-05-19 10:56 +0200  Rocco Rutte  <pdmef@gmx.net>  (771276a3bace)\n\n\t* Makefile.am: hcversion.h depends on new mutt_md5 tool\n\n2008-05-18 12:42 -0700  Roland Rosenfeld  <roland@spinnaker.de>  (4ef0fc2f8378)\n\n\t* po/de.po: Updated German translation\n\n2008-05-17 19:31 -0700  Andreas  <Andreas Jobs>  (aaeee8f868c4)\n\n\t* crypt-gpgme.c: Fix GPGME S/MIME micalg generation, broken\n\tin [e6f958b093b6]. Closes #2994.\n\n2008-05-17 18:34 -0700  Brendan Cully  <brendan@kublai.com>  (f9545d5ec15f)\n\n\t* doc/Muttrc.head: Add 'mime_lookup application/octet-stream' to the\n\tdistributed Muttrc. Closes #2984.\n\n\t* .hgignore, Makefile.am, configure.ac, hcachever.sh.in,\n\tmd5.c: Build local md5 tool for hcachever.sh. Closes #3025.\n\n2008-05-17 12:39 -0700  Brendan Cully  <brendan@kublai.com>  (692b7c063bf1)\n\n\t* .hgsigs: mutt-1.5.18 signed\n\n\t* .hgtags: Added tag mutt-1-5-18-rel for changeset ff9e4d0464b1\n\n\t* ChangeLog, VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po,\n\tpo/de.po, po/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po,\n\tpo/fr.po, po/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po,\n\tpo/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po: automatic post-release commit for mutt-1.5.18\n\n\t* UPDATING: Update UPDATING.\n\n\t* imap/browse.c: Use context to get IMAP new message count in mailbox\n\tbrowser if possible.\n\n2008-05-17 11:08 -0700  Rocco Rutte  <pdmef@gmx.net>  (b341d157ae72)\n\n\t* Makefile.am, hcache.c, hcachever.sh.in: When necessary, convert\n\tstrings to utf-8 in the header cache. If iconv is unavailable,\n\tinclude the charset in effect as part of the cache file\n\tname. Closes #3023.\n\n2008-05-16 09:24 +0200  Rocco Rutte  <pdmef@gmx.net>  (001d6be61905)\n\n\t* smime_keys.pl: Glob paths derived from mutt -Q output in\n\tsmime_keys.pl. Patch by Fabrice Bellet and Miroslav Lichvar (closes\n\t#3020).\n\n2008-05-15 17:29 +0200  Rocco Rutte  <pdmef@gmx.net>  (132474d6dd3b)\n\n\t* alias.c, protos.h: Make mutt_check_alias_name()\n\tmultibyte-aware (closes #2403).\n\n\t* doc/manual.xml.head: Document exact address in the manual (closes\n\t#3050)\n\n2008-05-14 16:23 -0700  Brendan Cully  <brendan@kublai.com>  (7f4711b9b61f)\n\n\t* alias.c: Ensure alias file ends with \\n before appending new\n\taliases. Closes #1580.\n\n2008-05-14 15:19 +0200  Samuel Tardieu  <sam@rfc1149.net>  (5518355bc6da)\n\n\t* curs_main.c: Always update status bar after sorting method changes\n\t(closes #2120).\n\n2008-05-12 23:15 -0700  Brendan Cully  <brendan@kublai.com>  (97aa20438c47)\n\n\t* imap/imap.c: Terminate open IMAP message sets at end of mailbox\n\teven if the last message is inactive. Closes #3002.\n\n2008-05-11 10:52 +0200  Matthias Andree  <matthias.andree@gmx.de>  (09b0363cdf54)\n\n\t* rfc3676.c: In debug output, cast size_t arguments to long for\n\tconsistency with printf %ld argument.\n\n2008-05-11 00:50 -0700  Brendan Cully  <brendan@kublai.com>  (98c39c5187a9)\n\n\t* main.c: Update copyright in -vv output. Closes #3042.\n\n2008-05-07 11:54 -0700  Brendan Cully  <brendan@kublai.com>  (385efdbf9423)\n\n\t* mutt_sasl.c, mutt_sasl.h: Make SASL support conn_poll method.\n        Make SASL IP lookup failure non-fatal. Both are for tunnel support.\n\n2008-05-05 19:32 +0200  Rocco Rutte  <pdmef@gmx.net>  (0eacf5297484)\n\n\t* mbyte.c, mbyte.h: Fix some compiler warnings if compiling without\n\tsystem wide character functions\n\n\t* mbyte.c, protos.h, utf8.c: Pass buffer size to mutt_wctoutf8()\n\tto prevent crashes if MB_LEN_MAX<6 as pointed out by exg on #mutt.\n\n2008-04-29 10:44 -0700  David Champion  <dgc@uchicago.edu>  (1de934f1d618)\n\n\t* muttlib.c: [9414b9dd36db] broke softfill. (closes #3035)\n\n2008-04-29 10:38 -0700  Wilfried Goesgens  <dothebart@uncensored.citadel.org>  (8017c8074f62)\n\n\t* imap/auth_gss.c: Print GSSAPI status messages to debug log on\n\terror.\n\n2008-04-03 17:08 +0200  Miroslav Lichvar  <mlichvar@redhat.com>  (bdd44e92919d)\n\n\t* mutt_ssl_gnutls.c: Fix sending long commands when using gnutls.\n\n2008-04-09 15:57 -0700  Dan Fandrich  <dan@coneharvesters.com>  (3b7b3c0e459e)\n\n\t* configure.ac, strtok_r.c: Replace strtok_r when it's not\n\tavailable. The implementation comes from glibc 2.6.1 (like the\n\tstrsep replacement) and uses the same autoconf hooks.\n\n2008-04-09 18:13 +0200  Christian Ebert  <blacktrash@gmx.net>  (ae90c8e8ea4d)\n\n\t* doc/manual.xml.head: manual.xml.head: grammar correction\n\n2008-03-11 17:20 -0700  N.J. Mann  <njm@njm.f2s.com>  (e3bc99a4a6bd)\n\n\t* mbox.c, mh.c, pop.c: Respect ctx->quiet when initializing\n\tprogress bar.\n\n2008-03-09 14:01 -0700  Sébastien Hinderer  <Sebastien.Hinderer@ens-lyon.org>  (c4212a17fad6)\n\n\t* compose.c, mx.c: Remove pointless NULL checks against\n\tarrays. This silences a warning on newer GCCs.\n\n2008-03-04 22:00 -0800  Petr Písař  <petr.pisar@atlas.cz>  (fdad7b9fa741)\n\n\t* po/cs.po: Updated Czech translation\n\n2008-03-02 21:45 -0800  Vincent Lefevre  <vincent@vinc17.org>  (9a7d802004d3)\n\n\t* po/fr.po: Updated French translation.\n\n2008-02-27 14:45 +0100  Rocco Rutte  <pdmef@gmx.net>  (553ae136f20e)\n\n\t* COPYRIGHT, main.c: Update copyright years in 'mutt -v' output and\n\tCOPYRIGHT\n\n2008-02-27 13:27 +0100  Anders Helmersson  <anders.helmersson.utsikt@wasadata.net>  (d2eb082fd872)\n\n\t* curs_lib.c: Fix progress updates for large messages. Closes #3029.\n\n2008-02-27 09:30 +0100  N.J. Mann  <njm@njm.f2s.com>  (eb4e214c8ced)\n\n\t* status.c: Cleanup status_format_str()\n\n2008-02-20 12:02 +0100  Rocco Rutte  <pdmef@gmx.net>  (9414b9dd36db)\n\n\t* muttlib.c: Fix truncation logic for soft-padding (Closes #3035).\n\n2008-01-29 21:06 -0800  Brendan Cully  <brendan@kublai.com>  (fd741c1922f3)\n\n\t* hg-commit: Fix typo in hg-commit\n\n2008-01-29 21:05 -0800  Benno Schulenberg  <i18n@benno.vertaalt.nl>  (95807c4b824f)\n\n\t* po/nl.po: Improvements to the Dutch translation\n\n2008-01-17 17:32 +0100  Rocco Rutte  <pdmef@gmx.net>  (039d939d8c3e)\n\n\t* browser.h: Use 'unsigned int' for file browser state to browse huge\n\tdirs (closes #3017).\n\n2008-01-15 17:46 +0100  Rocco Rutte  <pdmef@gmx.net>  (6e6e6c4bee59)\n\n\t* recvattach.c: Fix logic error in b3cde588fe9a commit\n\n2008-01-15 17:34 +0100  Rocco Rutte  <pdmef@gmx.net>  (b3cde588fe9a)\n\n\t* recvattach.c: Prepend './' to (some) suggested filenames when saving\n\tattachments. Attachment filenames may start with characters that are\n\tspecial to mutt_expand_path() may cause undesired expansion. Closes\n\t#1719.\n\n\t* INSTALL, README: Update stale INSTALL+README files\n\n\t* mh.c: Make maildir_delayed_parsing() more readable\n\n\t* init.h: Mention that References: and Date: cannot be\n\tchanged in editor (closes #1234).\n\n\t* UPDATING, globals.h, init.h, query.c: Make formatting of query menu\n\tconfigurable via $query_format (closes #170).\n\n\t* init.h: Link $timeout from $mail_check, see Debian #385456.\n\n2008-01-14 23:00 +0100  Rocco Rutte  <pdmef@gmx.net>  (130aa0517251)\n\n\t* mh.c: Fix typo of in dae38f5ab2a5 commit\n\n2008-01-14 22:54 +0100  Rocco Rutte  <pdmef@gmx.net>  (dae38f5ab2a5)\n\n\t* ChangeLog, mh.c: hcache: Fetch data for correct message from hcache.\n\tWith $maildir_header_cache_verify set (the default), the list (and\n\tthus the current) header change after data was fetched from hcache\n\tmaking some message appear as duplicate. Now fetch data for the\n\tcorrect message after possible in-place inode sorting altering file\n\torder. See debian bug #459739.\n\n\t* hcachever.sh.in: hcache: use HEADER for version calculation too\n\n2008-01-09 13:06 +0100  Rocco Rutte  <pdmef@gmx.net>  (2a5636080210)\n\n\t* configure.ac: Fix mutt_dotlock build issue on cygwin\n\t(closes #3009).\n\n\t* init.h: Mention $recall in description for $postpone\n\n2008-01-02 11:47 -0800  Johan Svedberg  <johan@svedberg.com>  (3cf8bc21bc3d)\n\n\t* po/sv.po: Updated Swedish translation\n\n2007-12-11 15:22 +0100  Rocco Rutte  <pdmef@gmx.net>  (68a9c3e74f9a)\n\n\t* doc/manual.xml.head: Manual: Update caching docs (hcache naming,\n\tmaintenance)\n\n\t* pop.c: POP: Name hcache the way IMAP does. Place the file\n\tunder $header_cache/<url>/mutt.hcache. For now ignore that this may\n\tbreak if hcache == bcache and a message's uid is \"mutt.hcache\"\n\t(extremely unlikely) in which case the user will loose only the\n\thcache file.\n\n\t* pop.c: POP: Respect $message_cache_clean\n\n\t* doc/manual.xml.head: Manual: mention $time_inc in tuning chapter\n\n\t* enter.c, history.h: Maintain different history lists for\n\tfiles and mailboxes. Closes #2999.\n\n\t* history.c: Do not trust history file and mutt code about history\n\tclass. This prevents crashes as result of programming errors and/or\n\twrong history file (e.g. negative or too high classes).\n\n2007-12-08 12:54 -0800  Michael Elkins  <me@mutt.org>  (3971bcfd9112)\n\n\t* mh.c: Skip over messages which were previously parsed after sorting\n\tthe tail of the list. Avoids a segmentation fault when rescanning\n\tthe new/ subdir of a maildir when messages were left over from a\n\tprevious scan.\n\n2007-12-07 11:38 -0800  Rocco Rutte  <pdmef@gmx.net>  (b891b1736885)\n\n\t* lib.c, md5.h: Check definition of ENOTSUP before use\n\t(closes #2983)\n\n\t* mh.c: Sort MH folders into natural order after 2nd pass (closes\n\t#463).\n\n\t* init.h: Mention subscribe and lists commands for\n\t$ignore_list_reply_to (closes #2996).\n\n\t* mx.c: Don't attempt to move messages when $mbox is unset.\n\n2007-12-05 10:03 +0100  Rocco Rutte  <pdmef@gmx.net>  (63c97881cb76)\n\n\t* UPDATING, configure.ac, main.c, mh.c: Improve inode sorting,\n\tenable it by default and add MH support. Sorting is done on-demand\n\tonly before the first stat() or open()\n\t($maildir_header_cache_verify=yes/hcache miss). Furthermore, only\n\ta partial list of messages starting from that item is sorted\n\treducing sorting overhead in most cases. For a fully hcache'd\n\tfolder with $maildir_header_cache_verify=no, no sorting is needed\n\tand no sorting will be done. MH parsing is now two-pass, too to\n\tsimplify the code and remove duplication.\n\n2007-11-30 10:29 +0100  Rocco Rutte  <pdmef@gmx.net>  (5c635c9b5982)\n\n\t* configure.ac: Add version numbers for bdb 4.6\n\n\t* parse.c, sendlib.c: RfC2047 decode/encode X-Label: header\n\t(Closes #2970).\n\n\t* commands.c: Format status line for external and internal pager the\n\tsame way to make %P work\n\n2007-11-29 16:03 +0100  Rocco Rutte  <pdmef@gmx.net>  (4899bcc1c2c3)\n\n\t* doc/db-cleanup.xsl: Add ascii-replacements for 0x2dc\n\t(tilde) and 0x2026 (...) too. The manual cannot be clean us-acii\n\tbut now we should have at least latin1\n\n\t* doc/Makefile.am, doc/db-cleanup.xsl: Add a really ugly hack to make\n\tsure the plain text manual is us-ascii. The hack is filtering\n\tmanual.html to another HTML file but replacing unicode chars by\n\ttheir ascii equivalents. The intermediate file is used to dump HTML\n\tto us-ascii text (and only for that).\n\n\t* hcache.c: Fix hcache build issue when building with gdbm if qdbm\n\tis installed, too\n\n2007-11-21 13:19 +0100  Miroslav Lichvar  <mlichvar@redhat.com>  (9286a76e79a2)\n\n\t* send.c: Don't ignore $from in batch send mode.\n\n2007-11-23 15:11 +0100  Rocco Rutte  <pdmef@gmx.net>  (12a1d843c975)\n\n\t* curs_lib.c: Don't attempt to print progress if inc is 0, just\n\tprint initial message\n\n2007-11-21 14:14 -0800  Ronny Haryanto  <ronnylist@haryan.to>  (0e99eaaecd67)\n\n\t* po/id.po: Updated Indonesian translation\n\n2007-11-21 16:47 +0100  Rocco Rutte  <pdmef@gmx.net>  (309ab3a63d91)\n\n\t* UPDATING: Add UPDATING entry for $check_mbox_size\n\n\t* init.h: Clarify the description for $timeout\n\n\t* UPDATING: Remove raw utf-8 char in UPDATING to make it ascii\n\tagain\n\n2007-11-20 19:46 +0100  Rocco Rutte  <pdmef@gmx.net>  (96f931ae0b22)\n\n\t* doc/manual.xml.head, init.h: Document that save-hook/fcc-hook/fcc-\n\tsave-hook use $index_format expandos. Closes #2135.\n\n\t* doc/manual.xml.head, pattern.c: Simple search: Allow\n\t[~+%] to be \\-escaped. Closes #2426.\n\n\t* configure.ac, strsep.c: Add glibc implementation of strsep() in case\n\ta system misses it. Closes #2989.\n\n\t* lib.h, mbyte.c: Alternate fix for not calling\n\tbind_textdomain_codeset() to fix Solaris build.\n\n2007-11-19 15:32 +0100  Rocco Rutte  <pdmef@gmx.net>  (033eba2d6834)\n\n\t* rfc3676.c: Make f=f handler multibyte-aware by not buffering flowed\n\tcontent until it's finished. We now write out content as we read it\n\t(which simplifies the code quite a bit) and properly flow multibyte\n\tparagraphs. This should improve DelSp=yes handling where a flowed\n\tparagraph may not have spaces at all except trailing ones for\n\tflowable paragraphs (after concatenating lines we didn't have access\n\tto the original break points any longer). We still split content by\n\tASCII space (this should be safe as f=f itself uses ASCII space to\n\tmark flowable lines (even for languages that aren't expected to use\n\tspaces, see DelSp). Closes #862.\n\n2007-11-15 13:17 +0100  Rocco Rutte  <pdmef@gmx.net>  (a0161768f631)\n\n\t* doc/makedoc-defs.h, doc/makedoc.c: Fix more documentation build\n\tissues. Define USE_SASL (for $smtp_authenticators) in makedoc-\n\tdefs.h, include it in makedoc.c to force doc rebuild if makedoc-\n\tdefs.h changes.\n\n\t* parse.c, protos.h, send.c: Properly parse and validate Message-IDs\n\tfrom my_hdrs. Closes #2452.\n\n\t* configure.ac: Check for bind_textdomain_codeset() outside libc,\n\ttoo.\n\n2007-11-15 11:53 +0100  peb  <peb@mppmu.mpg.de>  (22c68faeec08)\n\n\t* lib.h: Don't use bind_textdomain_codeset() if we're not using\n\tNLS/gettext. Closes #2162.\n\n2007-11-15 11:22 +0100  Rocco Rutte  <pdmef@gmx.net>  (933e57dff004)\n\n\t* doc/manual.xml.head: Properly document simple searches and its\n\t\"secret\" keywords. Closes #2136.\n\n2007-11-13 13:31 +0100  Rocco Rutte  <pdmef@gmx.net>  (7a4a154eefa5)\n\n\t* wcwidth.c: Fix compiler warnings in new wcwidth.c (too large values\n\tfor 'unsigned short')\n\n\t* hg-commit: hg-commit: Run 'make validate' in doc/ if manual.xml\n\tis present\n\n\t* doc/manual.xml.head, init.h: Document that %f in $index_format is\n\teither Return-Path: or From: depending on which parses correctly.\n\tAlso note that alternates' regex should be as precise as possible to\n\tavoid mismatches. Closes #1894.\n\n\t* init.h: Properly document $hostname, link it to $use_domain and\n\t$hidden_host. Closes #891.\n\n2007-11-07 14:54 +0100  Rocco Rutte  <pdmef@gmx.net>  (84284776659e)\n\n\t* Makefile.am, po/Makefile.in.in, po/POTFILES.in: Don't build\n\tkeymap_alldefs.h in srcdir as it may be read-only\n\n\t* po/Makefile.in.in: Don't try to build $(PACKAGE).pot in srcdir as it\n\tmay be read-only\n\n2007-11-08 22:13 -0800  Michael Elkins  <me@mutt.org>  (4bba47e6d026)\n\n\t* doc/manual.xml.head: Removed the [!] prefix from the usage from the\n\tusage string for the un/mailboxes command since it has no special\n\tmeaning in this context other than referring to $spoolfile.\n\n2007-11-08 11:48 -0800  Brendan Cully  <brendan@kublai.com>  (daf29fe0ed4c)\n\n\t* UPDATING, curs_lib.c, globals.h, init.h: Add $time_inc to\n\tcontrol progress update frequency. I found 250ms to be noticeably\n\tdifferent from the old behaviour, and it ruins the rounding of the\n\tother _inc variables.\n\n\t* color.c, copy.c, imap/command.c: Turn down some debug logging\n\tlevels\n\n2007-11-08 09:03 +0100  Rocco Rutte  <pdmef@gmx.net>  (92a6bfbed657)\n\n\t* doc/Makefile.am: Add stamp-doc-rc to makedoc-all to build Muttrc\n\twith fresh checkout\n\n2007-11-07 14:48 -0800  Brendan Cully  <brendan@kublai.com>  (b68ccc2e66e2)\n\n\t* curs_lib.c, mutt_curses.h: Suppress progress bar updates less than\n\t250ms apart. Closes #2899.\n\n2007-11-07 12:12 -0800  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (c62c5495d67c)\n\n\t* wcwidth.c: Updated wcwidth to Unicode 5.0\n\n2007-11-07 12:03 +0100  Rocco Rutte  <pdmef@gmx.net>  (fce40f3a1aec)\n\n\t* Makefile.am, Muttrc.head, doc/Makefile.am, doc/Muttrc.head, doc\n\t/makedoc-defs.h, doc/makedoc.c, functions.h, init.h, makedoc-defs.h,\n\tmakedoc.c: Try to fix parallel build problems by moving makedoc to\n\tdoc/. This also requires to move Muttrc into doc/.\n\n2007-11-06 16:34 -0800  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (ac14b76ef8b2)\n\n\t* Makefile.am: Remove unnecessary workaround for automake\n\tdist target\n\n2007-11-06 18:23 +0100  Rocco Rutte  <pdmef@gmx.net>  (1770ab532bfd)\n\n\t* curs_lib.c, imap/imap.c, imap/message.c, mbox.c, mh.c,\n\tmutt_curses.h, pattern.c, pop.c, pop_lib.c, smtp.c: Add\n\tpercentages to progress bar optionally supplied by caller. This is\n\tnecessary to let the mbox driver print useful percentages. If\n\tthere's no percentage given and we have a size, calculate on it on\n\tour own.  Closes #2929.\n\n\t* mh.c: (Re-)Add total msg count to progress for parsing maildirs\n\n2007-11-05 14:24 -0800  Vincent Lefevre  <vincent@vinc17.org>  (ecb694b6176b)\n\n\t* po/fr.po: Updated French translation\n\n2007-11-05 17:47 +0100  Rocco Rutte  <pdmef@gmx.net>  (6b9e91edba54)\n\n\t* curs_lib.c: Save value of errno across mutt_endwin()\n\tcalls. Mutt_endwin() is sometimes called after noticing an error\n\tbut before printing the message via perror(). Closes #2965.\n\n2007-11-05 15:53 +0100  Emanuele Giaquinta  <e.giaquinta@glauco.it>  (b8dc6926ddf4)\n\n\t* doc/manual.xml.head: Manual: Fix typo\n\n2007-11-05 14:53 +0100  Rocco Rutte  <pdmef@gmx.net>  (ad7983699656)\n\n\t* doc/manual.xml.head: Manual: Improve [un]mailboxes\n\tdocumentation. Closes #2204.\n\n2007-11-05 12:11 +0100  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (645fcdd66828)\n\n\t* configure.ac, intl/Makefile.in, po/Makefile.in.in: Optionally define\n\t$datarootdir on our own for autoconf <2.60 compatibility. While I'm\n\tat it, fix two warnings in other files about ignoring datarootdir\n\twith autoconf >2.60. Closes #2905.\n\n2007-11-04 13:19 -0800  Vsevolod Volkov  <vvv@mutt.org.ua>  (dc5ec6dbb278)\n\n\t* po/ru.po: Updated Russian translation\n\n2007-11-04 13:17 -0800  Ivan Vilata i Balaguer  <ivan@selidor.net>  (1f72281eb36c)\n\n\t* po/ca.po: Updated Catalan translation\n\n2007-11-04 13:16 -0800  Roland Rosenfeld  <roland@spinnaker.de>  (b2f0d89881dd)\n\n\t* po/de.po: Updated German translation\n\n2007-11-04 19:10 +0100  Rocco Rutte  <pdmef@gmx.net>  (02e8b9c7bdc6)\n\n\t* UPDATING: Fixup UPDATING for 1.5.16/1.5.17\n\n2007-11-04 18:27 +0100  cypher  <cypher@conuropsis.org>  (ab676b9f0c04)\n\n\t* url.c: Use strtok_r() to parse mailto: links, not strtok(). In\n\tcase a headers needs to call mutt_parse_references() which uses\n\tstrtok(), too, later headers will be silently discarded.  Closes\n\t#2968.\n\n2007-11-04 18:14 +0100  Rocco Rutte  <pdmef@gmx.net>  (6248b3c04f61)\n\n\t* main.c, url.c: Prevent mailto parsing buffer overflow by ignoring\n\ttoo long header. If they're longer than our buffer, we can't turn it\n\tinto a header to be parsed by mutt_parse_rfc822_line() anyway, so we\n\tbail out in this case. Also make main() catchup mailto parsing\n\terrors. Closes #2980.\n\n\t* UPDATING: Add 1.5.17 to UPDATING\n\n\t* doc/manual.xml.head, init.h: Improve DSN docs (require sendmail-\n\tcompatible MTA, add SMTP notes). Closes #2979\n\n2007-11-03 11:12 +0100  Rocco Rutte  <pdmef@gmx.net>  (0c054faeb285)\n\n\t* muttlib.c: Check Maildir for not being NULL when expanding\n\t'='-paths. Closes #2977.\n\n2007-11-02 16:55 -0700  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (cc5de08f4612)\n\n\t* po/pl.po: Updated Polish translation.\n\n2007-11-01 20:36 -0700  Petr Pisar  <petr.pisar@atlas.cz>  (0b4bd0452b5a)\n\n\t* ChangeLog, po/cs.po: Updated Czech translation.\n\n2007-11-01 15:45 -0700  Brendan Cully  <brendan@kublai.com>  (5123cded9988)\n\n\t* configure.ac: Use $datarootdir as default prefix for documentation\n\t(closes #2905)\n\n2007-11-01 14:07 -0700  Brendan Cully  <brendan@kublai.com>  (cd03dff9b576)\n\n\t* VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po,\n\tpo/eo.po, po/es.po, po/et.po, po/eu.po, po/fr.po, po/ga.po,\n\tpo/gl.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po,\n\tpo/lt.po, po/nl.po, po/pl.po, po/pt_BR.po, po/ru.po, po/sk.po,\n\tpo/sv.po, po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po: automatic\n\tpost-release commit for mutt-1.5.17\n\n\t* hg-commit: Fix typo in hg-commit\n\n2007-11-01 21:21 +0100  Rocco Rutte  <pdmef@gmx.net>  (4f3814a57eaf)\n\n\t* INSTALL, UPDATING, rfc822.c: Unbreak exact address feature. The\n\tproblem was that when reading back tempfiles for pager display,\n\ttrailing \\n were not removed from the input so the pager displayed 2\n\tinstead of 1.\n\n2007-11-01 12:13 -0700  Oswald Buddenhagen  <ossi@kde.org>  (8aebd2ea4db8)\n\n\t* configure.ac: Detect BDB automatically if --with-bdb is empty\n\n2007-11-01 14:33 +0100  Rocco Rutte  <pdmef@gmx.net>  (80f1331abec2)\n\n\t* doc/devel-notes.txt: devel-notes.txt: Mention where hg repo is, how\n\tto clone and update\n\n\t* doc/TODO: Documentation: Add doc/TODO with some items still open\n\n\t* doc/manual.xml.head: Manual: s/SMTP support/SMTP Support/ (for\n\tconsitency)\n\n\t* doc/manual.xml.head: Manual: Remove 404 link for fetchmail,\n\tmention getmail, too\n\n\t* doc/manual.xml.head: Manual: Add short section on SSL/TLS support\n\t(needs more details)\n\n\t* doc/manual.xml.head: Manual: Document URL syntax in just one place,\n\tlet others refer to it.\n\n\t* doc/manual.xml.head: Manual: Document optional SMTP support\n\n\t* doc/manual.xml.head: Manual: Add some general notes about optional\n\tfeatures. Mention 'configure --help' and 'mutt -v' output.\n\n\t* doc/Makefile.am, doc/manual.xml.head: Manual: Move POP3, IMAP and\n\tcache-related sections to their own chapter.\n\n\t* doc/manual.xml.head: Manual: Add ids to all tables and use <xref/>\n\tfor reference.\n\n2007-10-31 16:34 -0700  Brendan Cully  <brendan@kublai.com>  (7cebeacc3b83)\n\n\t* config.guess, config.sub, depcomp, install-sh, missing: Remove\n\tautotools support files which autoreconf -i can generate\n\n\t* Makefile.am, cvslog2changelog.pl: cvslog2changelog.pl is obsolete\n\n\t* doc/muttbug.man: s/Mercurial/hg/\n\n\t* doc/muttbug.man: s/cvs/Mercurial/\n\n2007-10-31 14:09 -0700  rea-mutt  <rea-mutt@codelabs.ru>  (c6ce36a67121)\n\n\t* lib.c: Fall back to rename for ENOTSUP and EOPNOTSUPP\n\ttoo. Closes #2975\n\n2007-10-31 14:04 -0700  Brendan Cully  <brendan@kublai.com>  (51595292e112)\n\n\t* imap/imap.c: Fix the test for flushing queued STATUS requests in\n\timap_buffy_check. This should fix the bug that caused every other\n\tIMAP connection to fail to get the new message counts. Thanks to exg\n\tfor his generous help debugging this one.\n\n2007-10-25 17:03 +0200  Rocco Rutte  <pdmef@gmx.net>  (5d96f24efa85)\n\n\t* muttlib.c, protos.h: Large file support for mutt_pretty_size().\n\tBased on a patch by Corinna Vinschen, adjusted for LOFF_T/OFF_T_FMT\n\t(closes #2191).\n\n\t* UPDATING: Add UPDATING entry for %P for $pager_format\n\n2007-10-18 10:20 +0200  Rocco Rutte  <pdmef@gmx.net>  (4e738d998bb3)\n\n\t* hdrline.c: Enlarge temporary buffer in hdr_format_str to prevent\n\tsubject truncation. The subject along with the thread tree are\n\tcomposed using a SHORT_STRING-sized buffer which may lead to\n\ttruncation even though the destination buffer is large enough.\n\n2007-10-16 11:33 +0200  Rocco Rutte  <pdmef@gmx.net>  (c33f288c3aab)\n\n\t* doc/manual.xml.head: Manual: fix typo (closes #2971).\n\n2007-10-15 11:01 +0200  Rocco Rutte  <pdmef@gmx.net>  (35e5c34b7e91)\n\n\t* rfc3676.c: f=f: Print standalone fixed lines as-is (closes #2917).\n\n2007-10-11 12:10 +0200  Rocco Rutte  <pdmef@gmx.net>  (c15eeb44f139)\n\n\t* UPDATING, doc/manual.xml.head: Document format string\n\tpipes. This is roughly the commit message only. Add a line to\n\tUPDATING (mark it as a change rather than a new feature as it may\n\tbreak setups).\n\n\t* init.h: Document that $indent_string actually is a format string.\n\n\t* muttlib.c: Do not consider empty pipes for filtering in format\n\tstrings. This fixes a crash with $indent_string=\"|\" and\n\t$text_flowed unset.\n\n2007-09-28 11:06 +0200  Rocco Rutte  <pdmef@gmx.net>  (709db707bcdf)\n\n\t* curs_lib.c, muttlib.c, protos.h: Make mutt_FormatString()'s string\n\ttruncation multibyte aware\n\n2007-09-19 12:22 +0200  Rocco Rutte  <pdmef@gmx.net>  (c768a1ebf78a)\n\n\t* menu.c: Enlarge buffers for printing menu entries from STRING to\n\tLONG_STRING. Now that multibyte padding works, we may too soon run\n\tinto too short buffers for common terminal widths in graphical\n\tterminals.\n\n\t* compose.c: Use mutt_paddstr() to print compose menu's status line\n\trather than printw(). All other menus use mutt_paddstr(): printw()\n\tprints only N bytes, not N columns.\n\n2007-09-18 11:37 +0200  Rocco Rutte  <pdmef@gmx.net>  (5827331565a2)\n\n\t* init.h: Document that $charset is a fallback for $send_charset\n\n2007-09-17 17:32 +0200  Rocco Rutte  <pdmef@gmx.net>  (ae47263fc1b0)\n\n\t* muttlib.c: Enable padding with multibyte chars for %>X, %*X and\n\t%|X\n\n\t* hcache.c, hcache.h, main.c: Include hcache backend version info\n\tin mutt -v output\n\n\t* init.c: Use NONULL to ensure we can pretty-print empty paths for\n\toption queries\n\n2007-09-14 11:35 -0700  Emanuele  <Emanuele Giaquinta>  (c699e5847630)\n\n\t* ChangeLog, configure.ac: The new MD5 code needs AC_C_BIGENDIAN on\n\tbig-endian systems\n\n2007-09-13 09:39 -0700  Brendan Cully  <brendan@kublai.com>  (154417d57b9d)\n\n\t* configure.ac: Do not clobber --with-bdb argument (closes #2955)\n\n2007-09-11 18:33 +0200  Rocco Rutte  <pdmef@gmx.net>  (785c95c8ff9a)\n\n\t* commands.c: Enlarge error buffer in mutt_enter_command() to not\n\ttruncate option queries. The error buffer gets passed down into\n\tparse_set() using it to report option values. SHORT_STRING is too\n\tshort to even print some defaults (e.g. $status_format).\n\n\t* muttlib.c: Let %*X padding share the same code of %>X padding The\n\tcurrent implementation of %*X was completely multibyte-unaware and\n\thad buffer overflow issues with large terminals. Now we use the same\n\tcode as %>X has and optionally only truncate left content to make\n\tsure the right content can be printed entirely.\n\n2007-09-10 11:14 -0700  Vincent Lefevre  <vincent@vinc17.org>  (664c5ec1a727)\n\n\t* po/fr.po: Updated French translation.\n\n2007-09-10 08:54 +0200  Rocco Rutte  <pdmef@gmx.net>  (49d69399cf21)\n\n\t* curs_lib.c, muttlib.c, protos.h: Make mutt_FormatString() more\n\tmultibyte-aware As default cause, don't copy raw bytes but copy\n\tmultibyte chars instead to ensure column computation is correct\n\t(needed for padding).\n\n\t* init.c: Escape option values for variable queries and completion\n\tto ensure they're parsable\n\n2007-09-09 15:48 -0700  Andreas Jaggi  (4e9445a06369)\n\n\t* imap/imap.c: Let imap_complete_hosts work with the last mailbox\n\t(closes #2949). This was an off-by-one error in the mailbox loop.\n\n2007-09-09 15:20 -0700  Julien Cristau  (7e60c2515318)\n\n\t* ChangeLog, mutt_ssl_gnutls.c: Only check whether GNUTLS error is\n\tfatal when an error occurs (closes #2954). The API for GNUTLS\n\tchanged to require this in 1.7.18.\n\n2007-09-08 15:30 -0700  Brendan Cully  <brendan@kublai.com>  (1e4a6efddc81)\n\n\t* prepare: autoreconf --include doesn't pass its argument to aclocal.\n\tLet ACLOCAL_AMFLAGS in Makefile.am handle that.\n\n\t* configure.ac: Attempt to clean up DB back-end selection\n\n2007-09-06 20:13 +0200  Rocco Rutte  <pdmef@gmx.net>  (648ad3832e82)\n\n\t* muttlib.c: Rewrite padding logic for mutt_FormatString()\n\n\tDo so by checking columns and bytes individually to make sure we\n\treally don't write past the end of allocated buffers. This patch\n\tfixes all my crashes I saw with files attached to/with the settings\n\tfor #2882 and #2900.\n\n2007-09-05 10:52 +0000  Rocco Rutte  <pdmef@gmx.net>  (078744e84667)\n\n\t* init.c, pattern.c: Fix/improve intl error messages\n\n\t* browser.c: Interpret relative paths in browser relative to shown\n\tdir, not working dir (closes #2471).\n\n\t* help.c, pager.c, pager.h: Teach pager how to ignore $wrap and use it\n\tfor help (closes #2896).\n\n\t* doc/manual.xml.head: Manual: make sure <screen/> contents in shorter\n\tthan 80 chars\n\n\tOtherwise conversion to plain text may cause line breaks rendering\n\texamples syntacially invalid (closes #2185).\n\n\t* doc/manual.xml.head: Manual: don't use <screen/> to present\n\tstructured data\n\n\t* muttlib.c: Fix buffer overflow in mutt_FormatString()\n\n\tThe variable in question is supposed to track string sizes, not\n\tstring widths (closes #2882 and #2900).\n\n2007-09-04 17:22 -0700  Brendan Cully  <brendan@kublai.com>  (7df563e4b7fd)\n\n\t* configure.ac: Add libz to crypto libs if available\n\t(closes #2303).\n\n2007-09-04 12:06 -0700  Ivan Vilata i Balaguer  <ivan@selidor.net>  (d9a6b3f8a492)\n\n\t* po/ca.po: Updated Catalan translation\n\n2007-08-31 10:12 -0700  Gary  <Gary Johnson>  (791bfed8ba62)\n\n\t* editmsg.c: Decrement the mtime of the tempfile during\n\tedit-message to make mutt notice changes taking less than one\n\tsecond.\n\n2007-08-28 11:33 -0700  Brendan Cully  <brendan@kublai.com>  (3f8829e739e9)\n\n\t* init.h: Insert .pp after .de to fix man page generation (closes\n\t#2940)\n\n\t* imap/imap.c: Check subscriptions after any authentication,\n\trather than after fist connection (closes #2908)\n\n\t* dotlock.c, lib.h, mutt.h: Use limits.h for PATH_MAX instead of\n\tposix1_lim.h (closes #2525)\n\n2007-08-27 11:07 -0700  Brendan Cully  <brendan@kublai.com>  (9cfb5ac98e26)\n\n\t* imap/auth_cram.c: Update auth_cram for new MD5 code\n\t(untested).\n\n\t* Makefile.am, configure.ac, hcache.c, md5.c, md5.h, md5c.c,\n\tpgppubring.c, pop_auth.c: Replace RFC md5 implementation with GPL\n\tversion from coreutils\n\n2007-08-16 09:32 -0700  Brendan Cully  <brendan@kublai.com>  (d096219907e7)\n\n\t* curs_lib.c: Check for lost tty if getch returns error (closes #1220)\n\tGreat thanks to Vincent Lefevre for tracking this one down.\n\n2007-08-15 20:09 -0700  Michael Vrable  <mvrable@cs.ucsd.edu>  (acd71f2f2555)\n\n\t* rfc3676.c: Fix RFC 3676 (format=flowed text) handling.\n\n\tThe old code would consider a line containing \"> \" to be flowed, but\n\tsince this is a quoted and space-stuffed line containing no\n\tadditional text, by my reading of RFC 3676 it should be fixed.\n\n\tClean up the handling of format=flowed text. Fix the test to\n\tdetermine whether a line is fixed--if a line ends in a space only\n\tbecause the last character is a space from space-stuffing, consider\n\tthe line to be a fixed line. This makes the test for ((buf_len -\n\tbuf_off) <= 0) later no longer necessary.\n\n\tAlso simplify the code by removing checks for curline being non-\n\tnull; it is allocated at the start of the function and never\n\treallocated to size zero, so it should never be a null pointer.\n\n2007-08-08 10:49 -0700  Kyle Wheeler  (6d3e90261321)\n\n\t* makedoc.c: Trim whitespace in definition lists for man pages (closes\n\t#2941).\n\n2007-08-02 22:30 -0700  Brendan Cully  <brendan@kublai.com>  (aefdab8fad80)\n\n\t* init.h: Clarify the documentation for $use_envelope_from\n\t(closes #2936). Thanks to Vincent Lefevre for the suggestions.\n\n2007-07-25 11:16 -0700  Vincent Lefevre  <vincent@vinc17.org>  (6bc60516fffa)\n\n\t* po/fr.po: Updated French translation.\n\n2007-07-16 10:46 -0700  Brendan Cully  <brendan@kublai.com>  (bd75134a6b65)\n\n\t* enter.c: Make is_shell_char static. Closes #2907.\n\n\t* init.c: Check that spam expression has enough matches for its\n\ttemplate. Closes #2927.\n\n2007-07-14 17:26 -0700  Brendan Cully  <brendan@kublai.com>  (f4b2c6eba5fd)\n\n\t* crypt-gpgme.c: GPGME: do not attempt to extract signatures\n\tunless gpgme_op_verify returned success.\n\n2007-07-09 11:32 -0400  Aron Griffis  <agriffis@n01se.net>  (4e8e3db418ea)\n\n\t* send.c: Allow send-hooks to effectively change $from and $use_from\n\n\t* mx.c: Clean up mx.c: init stat structs to zero\n\n\tprev_sb.st_size was initialized to zero if USE_FCNTL but not if\n\tUSE_FLOCK. Silence the gcc warning for both cases by zeroing the\n\tstat structures on the stack.\n\n\tOther minor cleanups:\n\t- clean up some whitespace\n\t- convert return (foo) to return foo\n\t- return r at the bottom of the function instead of testing values and\n\treturning them explicitly\n\t- add vim modeline\n\n2007-07-10 14:47 +0200  Thomas Roessler  <roessler@does-not-exist.org>  (c06e39893cce)\n\n\t* handler.c: Actually bail out, but wiht an ok return value.\n\n\t* handler.c: Don't bail out on a bad message/external-body!\n\n2007-07-08 18:27 -0700  David Champion  <dgc@uchicago.edu>  (6241f5669264)\n\n\t* commands.c, curs_lib.c, doc/manual.xml.head, init.h, lib.h, menu.c,\n\tmuttlib.c, query.c, recvcmd.c: This patch implements the \"%* \"\n\tnotation, which is analogous to \"%> \" but gives precedence to the\n\tright side instead of to the left when the fill length is zero. The\n\tdefault $pager_format is updated to use it so that %P is always\n\tavailable at the edge of the screen.\n\n2007-07-08 15:34 -0700  Edmund GRIMLEY EVANS  <edmund820@rano.org>  (5d74a79deeb3)\n\n\t* po/eo.po: Updated Esperanto translation.\n\n2007-07-04 17:36 -0700  Brendan Cully  <brendan@kublai.com>  (f24fa301493f)\n\n\t* crypt-gpgme.c: Fix some compiler warnings in GPGME. Closes #2919.\n\n\t* crypt-gpgme.c: GPGME: Stop parsing message as soon as PGP header\n\tis found. Use file_to_data_object to build data for inline\n\tsignature verification instead of doing it by hand. This fixes\n\tinline verification for me.\n\n\tTODO: crypt-gpgme helper functions seem to return lots of pointers\n\toff the stack in very dubious ways.\n\n2007-06-27 10:38 -0700  Dan Fandrich  <dan@coneharvesters.com>  (3354ac2e79c7)\n\n\t* pager.c: Fix %P in pager status for off_t variability.\n\n\t* dotlock.c: remove a double inclusion of config.h\n\n2007-06-14 18:17 -0700  Sertaç Ö. Yıldız  (55cd4cb611d9)\n\n\t* rfc3676.c: flowed: consider a single space as a hard line break.\n\tCloses #2906\n\n2007-06-13 10:43 -0700  Vsevolod Volkov  <vvv@mutt.org.ua>  (8d02c65ed0b5)\n\n\t* po/ru.po: Updated Russian translation\n\n2007-06-11 09:27 -0700  René Clerc  <rene@clerc.nl>  (5eaa1cfe80ad)\n\n\t* po/nl.po: Updated Dutch translation\n\n2007-06-11 09:19 -0700  Petr Písař  <petr.pisar@atlas.cz>  (b9accd463528)\n\n\t* po/cs.po: Updated Czech translation.\n\n2007-06-10 21:30 -0700  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (ef1882fe42f9)\n\n\t* po/pl.po: Updated Polish translation.\n\n2007-06-10 21:27 -0700  Vincent Lefevre  <vincent@vinc17.org>  (156ce3622588)\n\n\t* po/fr.po: Updated French translation.\n\n2007-06-10 09:55 -0700  Roland Rosenfeld  <roland@spinnaker.de>  (5a61c162b9c0)\n\n\t* po/de.po: Updated German translation\n\n2007-06-09 21:08 -0700  Brendan Cully  <brendan@kublai.com>  (50b11beb4265)\n\n\t* build-release: Fix quoting for hg sign in build-release\n\n2007-06-09 20:32 -0700  Brendan Cully  <brendan@kublai.com>  (aaf805734d24)\n\n\t* VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po, po/de.po,\n\tpo/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po, po/fr.po,\n\tpo/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po, po/ja.po,\n\tpo/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po, po/ru.po,\n\tpo/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po:\n\tautomatic post-release commit for mutt-1.5.16\n\n2007-06-09 20:26 -0700  Brendan Cully  <brendan@kublai.com>  (4b5b42ddfe42)\n\n\t* ascii.h, crypt-gpgme.c: Make GPGME backend generate a\n\tRFC3156-compliant micalg parameter (blush). Based on a patch by\n\tStefan Haun. Closes #2901.\n\n2007-06-09 01:03 +0200  Thomas Roessler  <roessler@does-not-exist.org>  (53e5e1105fd2)\n\n\t* sendlib.c: remove unnecessary dprints\n\n\t* sendlib.c: Fix header encoding corner case.\n\n2007-06-05 13:12 -0700  pywatson  <pywatson@gmail.com>  (9e90789518ad)\n\n\t* sort.c: Make sort by \"To\" stable (closes #2515).  compare_to()\n\tcalls mutt_get_name(), which may return a static pointer if it in\n\tturn calls mutt_addr_for_display(). If this static pointer is used\n\tfor a and b, the result is bad. The fix is to make a copy of the\n\tfirst object.\n\n2007-05-17 14:40 +0200  Christoph Berg  <cb@df7cb.de>  (edefe5e1f2b4)\n\n\t* Muttrc.head: Temporarily set pipe_decode in the \\cb urlview macro.\n\t(Debian #423640.)\n\n2007-05-28 16:44 -0700  Brendan Cully  <brendan@kublai.com>  (794b039bacaa)\n\n\t* Makefile.am, configure.ac, hcachever.sh, hcachever.sh.in:\n\tUse autoconf instead of \"which\" to discover MD5 tool\n\n2007-05-20 00:29 -0700  Brendan Cully  <brendan@kublai.com>  (a0e038310f42)\n\n\t* smtp.c: Forget SMTP password if authentication fails.  Thanks to\n\tGregory Shapiro for the initial patch (I've moved the reset from\n\tsmtp_auth_sasl up to smtp_auth, and used the account API instead\n\tof twiddling account bits by hand). Closes #2872.\n\n2007-05-15 21:05 +0200  Thomas Roessler  <roessler@does-not-exist.org>  (33af2883d52b)\n\n\t* curs_main.c: Jump to the next *sub*-thread when tag-subthread is\n\tinvoked, not to the next thread.\n\n2007-05-08 12:54 -0700  Rocco Rutte  <pdmef@gmx.net>  (763bd781d108)\n\n\t* rfc3676.c: f=f: flush buffer contents (if any) after reading input\n\tOtherwise mutt maybe won't show the last line if it's supposed to\n\tcontinue.\n\n2007-05-07 11:50 -0700  Brendan Cully  <brendan@kublai.com>  (89a3e1c5c28b)\n\n\t* OPS, UPDATING, curs_main.c, functions.h: Rename next-folder to next-\n\tunread-mailbox. Remove default binding.\n\n\t* muttlib.c: Use signed arithmetic in mutt_gecos_name to avoid an\n\toverflow. Closes #2885.\n\n2007-05-02 10:50 -0700  N.J. Mann  <njm@njm.f2s.com>  (f6861b85f22b)\n\n\t* OPS, curs_main.c, functions.h: Add next-folder command\n\n2007-05-01 10:41 -0700  Brendan Cully  <brendan@kublai.com>  (1ed1cbc7bad4)\n\n\t* configure.ac: Make IDN depend on iconv support\n\n2007-04-29 19:10 -0700  Alain Bench  <veronatif@free.fr>  (0e32bd00f341)\n\n\t* contrib/smime.rc, smime.c: contrib/smime.rc:\n\t$smime_verify_opaque_command fallback to -noverify to get signed\n\ttext despite a failed -verify (but send only this first failure\n\tnotice to stderr). smime.c: fflush() before rewind(). Closes #2428.\n\tHelps Debian Bug 420014\n\n2007-04-24 17:51 -0700  Vincent Lefevre  <vincent@vinc17.org>  (a58527ead950)\n\n\t* po/fr.po: Updated French translation.\n\n2007-04-24 14:08 -0700  Michael Elkins  <me@mutt.org>  (21c7e172030f)\n\n\t* remailer.c: fixup for mutt_FormatString() changes\n\n2007-04-23 12:12 -0700  Michael Elkins  <me@mutt.org>  (1bae5dcd7292)\n\n\t* crypt-gpgme.c: Fix compilation error related to change in\n\tmutt_FormatString()\n\n2007-04-21 13:05 -0700  Brendan Cully  <brendan@kublai.com>  (4c70812b3104)\n\n\t* pgp.c: Use PGP_SECRING to find PGP signing keys. Closes #2878.\n\n2007-04-21 13:00 -0700  Piarres Beobide Egaña  <pi@beobide.net>  (2b97fdbd6ce1)\n\n\t* po/eu.po: Updated Basque translation.\n\n2007-04-15 15:43 -0700  Michael Elkins  <me@mutt.org>  (cb9bef17b3a8)\n\n\t* hdrline.c, init.h, pager.c, protos.h: Removed hardcoded pager\n\tprogress indicator and add %P format code to $pager_status which\n\tcontains the same information.\n\n\tAppend \"%> -- (%P)\" to $pager_status to emulate old behavior.\n\n\tCloses #2087.\n\n\t* browser.c: merge with tip\n\n2007-04-11 22:36 -0700  Michael Elkins  <me@mutt.org>  (0c47f7b06158)\n\n\t* addrbook.c, browser.c, compose.c, hdrline.c, muttlib.c, pgpinvoke.c,\n\tpgpkey.c, protos.h, recvattach.c, smime.c, status.c: Pass column\n\tvalue recursively when expanding format strings (bug #2840).\n\n2007-04-13 14:14 -0700  Brendan Cully  <brendan@kublai.com>  (021f494d5154)\n\n\t* browser.c: Strip / from tail of LastDir when copying from\n\tMaildir (closes #1885)\n\n\t* doc/Makefile.am: Allow elinks for building manual.txt (closes #2876)\n\n\t* sendlib.c: Even simpler header wrapping fix\n\n\t* sendlib.c: Fix header wrapping\n\n2007-04-12 20:11 -0700  Brendan Cully  <brendan@kublai.com>  (c9e92a1d71cf)\n\n\t* mh.c: Differentiate between first and second maildir passes in\n\tprogress indicator\n\n\t* mh.c: Only call mutt_set_flag when necessary when checking for\n\tmaildir changes (fixes #1216)\n\n\t* flags.c: Only update header color in mutt_set_flag if flag has\n\tchanged (see #1216, #1931)\n\n\t* init.h: Make $header_cache_compress default to set\n\n\t* imap/message.c: Simplify IMAP message fetch loop slightly\n\n\t* imap/message.c: Handle a missing or corrupted header cache entry\n\t(closes #2676) If imap_hcache_get fails, stop parsing the header\n\tcache and simply refetch from that point on.\n\n2007-04-11 14:19 -0700  Paul Eggert  <eggert@CS.UCLA.EDU>  (ac7355452a60)\n\n\t* configure.ac, muttbug.sh.in: Make mutt more posixly-\n\tcorrect (closes #1615).\n\n2007-04-11 14:06 -0700  Brendan Cully  <brendan@kublai.com>  (5393c104e08a)\n\n\t* mkchangelog.sh: Remove un-POSIX TZ NOOP in mkchangelog.sh (see\n\t#1615)\n\n\t* account.c, globals.h, init.h: Add $smtp_pass (closes #2116)\n\n\t* doc/Makefile.am: Explicit -j1 breaks some versions of make (see\n\t#2538)\n\n\t* imap/util.c: Make imap_hcache_open robust against missing\n\tidata->ctx\n\n\t* imap/util.c: Do not attempt to parse idata->ctx->path if an explicit\n\tpath is given\n\n2007-04-10 20:22 -0700  Brendan Cully  <brendan@kublai.com>  (429fb67340cd)\n\n\t* UPDATING, imap/imap.c, imap/imap_private.h, imap/message.c,\n\tinit.h, mutt.h: Add $message_cache_clean option to prune message\n\tcache on sync\n\n\t* hcache.c: Try to unlink old header cache if open fails\n\n\t* bcache.c, imap/imap.c, imap/util.c, lib.c: Fix some warnings\n\n\t* hcache.c: Refactor mutt_hcache_open to share more code\n\n\t* hcache.c: Save some stats when header cache already exists\n\n\t* hcache.c, imap/imap.c, imap/imap_private.h, imap/message.c,\n\timap/util.c: Make IMAP header cache layout match body cache. You can\n\tnow make them point to the same directory. Each folder will have a\n\tfolder.hcache file for the header cache.\n\n\t* hcache.c, hcache.h, imap/imap.c, imap/util.c, mh.c, pop.c: Add\n\thcache path name hook\n\n\t* bcache.c, url.c, url.h: Simplify body cache path creation\n\n\t* imap/imap.c, imap/imap_private.h, imap/message.c, imap/util.c:\n\tDo not hold hcache open while mailbox is open - it can lead to\n\tlockups\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h, imap/util.c: Add\n\timap_hcache_del; minor cleanups\n\n\t* main.c: Fix a compiler warning\n\n\t* rfc3676.c: Don't use $indent_string to quote replies to flowed\n\tmessages (closes #2874).\n\n2007-04-10 10:16 -0700  Petr Písař  <petr.pisar@atlas.cz>  (af01580c9a08)\n\n\t* po/cs.po: Updated Czech translation\n\n2007-04-10 10:13 -0700  Brendan Cully  <brendan@kublai.com>  (9bbf304e09bc)\n\n\t* rfc3676.c: Wrap flowed lines at no more than FLOWED_MAX in\n\treplies\n\n2007-04-09 20:36 -0700  Michael Elkins  <me@mutt.org>  (fbe67329e688)\n\n\t* main.c: Exit with a nonzero value if sending a message in batch mode\n\tfails (bug #2709).\n\n\t* browser.c: Use mutt_pretty_size() to format '%s' in $folder_format\n\tso it is similar to '%c' in $hdr_format\n\n2007-04-09 11:32 -0700  Brendan Cully  <brendan@kublai.com>  (df7a0ee95618)\n\n\t* imap/TODO: Kill off some IMAP TODO items\n\n\t* imap/imap.c: Null out idata->hcache when closing, and remove close\n\tfrom open failure (mx_close will handle it).\n\n2007-04-09 08:56 -0700  Vsevolod Volkov  <vvv@mutt.org.ua>  (605c6d60217d)\n\n\t* po/ru.po: Updated Russian translation.\n\n2007-04-07 16:22 -0700  Michael Elkins  <me@mutt.org>  (c310dd3d6d73)\n\n\t* hook.c, pattern.c: Allow reply-hook to use ~h when replying from the\n\tindex. Fixes regression introduced by fix for bug #2190.\n\tmutt_pattern_exec() now checks for ctx!=NULL so that Mutt will no\n\tlonger segfault when replying to a message from the attachment menu.\n\n2007-04-07 16:20 -0700  Fabian Groffen  <grobian@gentoo.org>  (1c9db84ed54f)\n\n\t* imap/message.c, muttlib.c: Fix compiler aliasing warnings\n\n\t* hcache.c: Fix compiler warnings\n\n2007-04-07 16:05 -0700  Jukka Salmi  <jukka@salmi.ch>  (ef35baf2a2d0)\n\n\t* configure.ac: Fix BDB autoconf buglet introduced in\n\t[3638701db407]\n\n2007-04-07 15:21 -0700  Michael Elkins  <me@mutt.org>  (70e637e40943)\n\n\t* enter.c: add \"|\" to the list of shell chars\n\n\t* enter.c: \"complete\" function should consider shell chars to be word\n\tboundaries when doing filename completion (bug #2871)\n\n\t* complete.c, lib.c, lib.h: bug #2871\n\n\tAvoid altering the argument to mutt_complete() when completion\n\tfails. Previously, the trailing component of filename was removed\n\teach time the user pressed TAB.\n\n2007-04-07 14:32 -0700  Fabian Groffen  <grobian@orakel.ods.org>  (eed43900f612)\n\n\t* copy.c: Fix some compiler warnings\n\n2007-04-07 13:40 -0700  Brendan Cully  <brendan@kublai.com>  (980949218b09)\n\n\t* regex.c: Fix compiler warnings\n\n\t* smtp.c: Mark error message for translation\n\n2007-04-06 18:03 -0700  Vincent Lefevre  <vincent@vinc17.org>  (1ab836e94c70)\n\n\t* po/fr.po: Updated French translation\n\n2007-04-06 14:00 -0700  Brendan Cully  <brendan@kublai.com>  (cde224ad2662)\n\n\t* UPDATING: Update UPDATING\n\n\t* build-release: More build-release fixes\n\n\t* .hgsigs: mutt-1.5.15 signed\n\n\t* .hgtags: Added tag mutt-1-5-15-rel for changeset 4fd2d768fe5c\n\n\t* VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po, po/de.po,\n\tpo/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po, po/fr.po,\n\tpo/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po, po/ja.po,\n\tpo/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po, po/ru.po,\n\tpo/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po:\n\tautomatic post-release commit for mutt-1.5.15\n\n\t* build-release: More minor build tweaks\n\n\t* Makefile.am, build-release, mkchangelog.sh: Fix up release\n\tscripts for Hg\n\n\t* lib.c: safe_rename: fall back to rename on ENOSYS and EPERM as well\n\tas EXDEV. sshfs returns ENOSYS when attempting cross-directory\n\tlinks. vfat returns EPERM.\n\n\t* lib.c: Make safe_open with O_EXCL friendlier for NFS. Per #2707,\n\twhen an open file is moved into a different directory over NFS, it\n\tmay leave a .nfsXXX hardlink behind. This causes the rmdir in\n\tsafe_open to fail, leaving tempdir droppings around. This patch\n\tworks around the problem by closing the file after creating it and\n\treopening it after rename.\n\n2007-04-05 21:38 -0700  Michael Elkins  <me@mutt.org>  (177c060504bb)\n\n\t* configure.ac, hcache.c: Fixup to detect qdbm includes in\n\t/usr/include/qdbm.\n\n\tRemove HAVE_QDBM_VILLA_H because it is redundant.\n\n2007-04-05 19:22 -0700  Brendan Cully  <brendan@kublai.com>  (ee0fabbde466)\n\n\t* configure.ac, hcache.c: Fix up QDBM autoconf test for arguments\n\tand includes in subdirectories\n\n\t* imap/message.c: Fix logic error introduced in [efbcef81ac49]\n\n\t* hcache.c: Fix typo in 26b19fc9b78c\n\n\t* imap/imap_private.h, imap/message.c, imap/util.c: IMAP header cache\n\tAPI improvements.\n\n\t* imap/imap.c, imap/imap_private.h, imap/message.c, imap/util.c:\n\tKeep hcache pointer in idata, open and close with mailbox\n\n\t* hcache.c: Do not cache some unsafe header fields.\n\n\t* imap/message.c, mh.c: Small hcache-related memory leaks\n\n\t* hcache.c, mh.c: Fix mh header caching (closes #2472)\n\n\t* configure.ac: Teach --with-gdbm to accept a prefix (closes #2413)\n\n\t* hcachever.sh: POSIX fixes for hcachever.sh\n\n2007-04-05 13:06 -0700  Jukka Salmi  <j+mutt@2007.salmi.ch>  (3638701db407)\n\n\t* configure.ac: Check for BDB4 libs in $lib as well as\n\t$lib/$ver (fixes pkgsrc BDB4 detection)\n\n2007-04-05 12:55 -0700  Brendan Cully  <brendan@kublai.com>  (4f435337507e)\n\n\t* Makefile.am, hcache.c, hcachever.sh: Version header cache against\n\tMD5 of structures on which it depends\n\n\t* UPDATING, globals.h, imap/browse.c, imap/imap_private.h, init.h:\n\tRemove broken namespace support\n\n2007-04-04 16:31 -0700  Brendan Cully  <brendan@kublai.com>  (e96bd1f85634)\n\n\t* imap/command.c: Only reset UIDNEXT if new mail has been detected.\n\tThis prevents mutt from suddenly finding new mail when switching\n\tfrom unknown UIDVALIDITY to known.\n\n2007-04-04 09:37 -0700  Fabian Groffen  <grobian@orakel.ods.org>  (330cb15403f0)\n\n\t* configure.ac: Check for Berkeley DB versions 4.4 and 4.5\n\n2007-04-04 01:35 +0200  Christoph Berg  <cb@df7cb.de>  (b841df908929)\n\n\t* cryptglue.c: Fix typos in CRYPT_BACKEND #ifs.\n\n2007-04-03 14:08 -0700  Christoph Berg  <cb@df7cb.de>  (339fd21bf139)\n\n\t* doc/manual.xml.head, doc/mutt.man, main.c: When -- is present in\n\tthe argument list, allow attachment globs. The -- separates file\n\tnames from recipients. Also works for -A and -Q.\n\n2007-04-03 10:54 -0700  Fabian Groffen  <grobian@orakel.ods.org>  (89abe8bd0713)\n\n\t* hdrline.c, imap/message.c, mh.c, muttlib.c, regex.c, sendlib.c: Fix\n\tsome warnings.\n\n2007-04-03 08:59 -0700  Brendan Cully  <brendan@kublai.com>  (e363d7a69046)\n\n\t* pop_auth.c, rfc822.c, rfc822.h: Validate msgid in APOP\n\tauthentication. Closes #2846\n\n\t* hcache.c: Fix DB4 crash introduced in d5ab883ef90a\n\n\t* imap/util.c: Add missing hcache.h include\n\n2007-04-02 20:44 -0700  Brendan Cully  <brendan@kublai.com>  (59fcc37f8c75)\n\n\t* sendlib.c: Check message for boundary collisions (closes #902)\n\n\t* enter.c: Do not clobber string field on keypress when returning\n\tfrom file browser (closes #755)\n\n\t* browser.c, browser.h, imap/browse.c, imap/imap.h: Add hook for\n\tproper IMAP unseen count in mailbox browser\n\n2007-04-02 18:41 -0700  David Yitzchak Cohen  <lists+mutt_bugs@bigfatdave.com>  (503c2882d0be)\n\n\t* muttbug.sh.in: flea: produce mutt version info in C\n\tlocale (closes #1881)\n\n2007-04-02 18:17 -0700  John Hawkinson  <jhawk@mit.edu>  (a283e5ab5de7)\n\n\t* sendlib.c: Write Sender header if specified (closes #2682)\n\n2007-04-02 17:56 -0700  Brendan Cully  <brendan@kublai.com>  (15f8a55220a7)\n\n\t* mh.c: Fix off-by-one allocating mh sequences\n\n\t* curs_lib.c: Make mutt_edit_file display error if editor return is\n\tnon-zero. (closes #1638)\n\n\t* imap/command.c: Reset uidnext unconditionally in IMAP new mail\n\tcheck. Reverts a logic error introduced in [0cb476dc70a7]\n\n\t* imap/imap.c, imap/imap_private.h, imap/message.c, imap/util.c: Fix a\n\tsegfault in the new mboxcache hcache lookup. idata may not have an\n\tassociated context, so the cache path must use the account info\n\tinstead. For harmony with the other hcache callers, make them all\n\tcanonify the path the same way with imap_hcache_open.\n\n\t* imap/imap.c: Fix segfault in new mboxcache hcache check when\n\tcreate is 0\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h, imap/message.c:\n\tAdd create flag to imap_mboxcache_get\n\n\t* imap/command.c, imap/imap.c: Push mbox cache header cache check\n\tinto imap_mboxcache_get\n\n\t* imap/imap.c: Cache IMAP access checks\n\n2007-04-01 23:12 -0700  Brendan Cully  <brendan@kublai.com>  (4f598543d7a5)\n\n\t* imap/imap.c, imap/message.c: Adjust context->size on IMAP load\n\tand expunge (closes #2749)\n\n2007-04-01 20:00 -0700  Ambrose Li  <a.c.li@ieee.org>  (38e896c4c192)\n\n\t* po/zh_TW.po: Updated Taiwanese translation\n\n2007-04-01 15:40 -0700  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (6dcb53bc679c)\n\n\t* crypt-gpgme.c: gpgme: check result for signatures pointer\n\t(closes: #2199)\n\n2007-04-01 15:33 -0700  Brendan Cully  <brendan@kublai.com>  (3a81b3793f77)\n\n\t* doc/muttbug.man: Update flea man page to current addresses\n\n\t* muttbug.sh.in: Adjust flea to use new submission address; check\n\temail for @\n\n\t* doc/muttbug.man, muttbug.sh.in: Restore muttbug\n\n2007-03-31 18:50 -0700  Brendan Cully  <brendan@kublai.com>  (f467353f5657)\n\n\t* bcache.c, bcache.h, imap/message.c, pop.c, pop.h: Add tmp flag\n\tto bcache_put, create bcache_commit.\n\n\t* imap/command.c, imap/imap.c: Allow IMAP FCC to reconnect if\n\tappend fails (closes: #890)\n\n\t* mh.c: Always set up data pointer in mh_read_dir, not just when\n\tallocating context\n\n2007-03-30 21:26 -0700  Daniel Burrows  <dburrows@debian.org>  (d5ab883ef90a)\n\n\t* hcache.c: Fix handling of DB4 hcache open failure. (closes: #2714)\n\n2007-03-30 20:18 -0700  Brendan Cully  <brendan@kublai.com>  (dc54ae48d8c1)\n\n\t* mh.c: Set mode of new mh/maildir messages to match parent\n\tdirectory.\n\n\t* mh.c, mutt.h: Move mtime_cur from CONTEXT to mh_data\n\n\t* imap/imap.c, imap/imap.h, mh.c: Add close hook for\n\tmh/maildir. stat the directory on open. Make IMAP close function\n\tmatch prototype.\n\n\t* imap/imap.c, mutt.h, mx.c, pop.c: Add function pointer for close\n\thook in Context. Slowly inch towards function pointers instead of\n\tswitch statements.\n\n\t* imap/command.c, imap/imap.c: Use RECENT for first mailbox\n\tcheck if header cache check fails\n\n\t* imap/command.c: Consult header cache if available for last known new\n\tmail count. This prevents mutt from announcing new mail in mailboxes\n\tthat have unseen, but not new, messages, if those mailboxes are in\n\tthe header cache.\n\n2007-03-29 21:08 -0700  Brendan Cully  <brendan@kublai.com>  (359d9fbb5fda)\n\n\t* sendlib.c: Do not page sendmail error in batch mode.\n\t(closes: #2800)\n\n2007-03-29 15:53 -0700  Rocco Rutte  <pdmef@gmx.net>  (798a40b0a9da)\n\n\t* rfc3676.c: f=f handler: Re-add space between quotes and text\n\n2007-03-29 15:47 -0700  Brendan Cully  <brendan@kublai.com>  (51d13afbf24b)\n\n\t* doc/Makefile.am: Make -j2 in doc work (closes: #2538)\n\n2007-03-29 15:23 -0700  Christoph Berg  <cb@df7cb.de>  (0514e6b5a67a)\n\n\t* init.c, init.h: Use ~/.muttrc as the default alias_file if no user\n\tmuttrc exists. Makes the code agree with the documentation. Document\n\tthat default is actually the used muttrc. (Closes Debian #226500.)\n\n2007-03-29 10:30 -0700  Brendan Cully  <brendan@kublai.com>  (034ad0e55397)\n\n\t* bcache.c, bcache.h, imap/message.c: Make message cache write to\n\ttemporary location until file is complete. Previously mutt trusted\n\tthe cache file even when it was incomplete, causing permanently\n\tincorrect message display if the fetch was interrupted for some\n\treason.\n\n2007-03-28 09:43 +0200  Thomas Roessler  <roessler@does-not-exist.org>  (25cbd5588d35)\n\n\t* alias.c: Fix debug message for mutt_adr_is_user\n\n2007-03-23 10:32 -0700  Brendan Cully  <brendan@kublai.com>  (888a57a2b5f2)\n\n\t* imap/browse.c: Reset list.name before each list response in\n\tfolder browser\n\n2007-03-22 14:36 +0100  Thomas Roessler  <roessler@does-not-exist.org>  (68cfab02b411)\n\n\t* curs_main.c: Fix update_index().\n\n2007-03-21 11:29 -0700  Brendan Cully  <brendan@kublai.com>  (a6da24788400)\n\n\t* .cvsignore, Muttrc.head.in, configure.in, contrib/.cvsignore,\n\tdoc/.cvsignore, imap/.cvsignore, init.h, intl/.cvsignore,\n\tm4/.cvsignore, mx.c, po/.cvsignore: Merge $umask backout\n\n2007-03-21 11:26 -0700  Brendan Cully  <brendan@kublai.com>  (b9c0a75de5c0)\n\n\t* attach.c, globals.h, init.c, init.h, lib.c, mh.c, mx.c: Back out\n\t$umask.\n\n2007-03-16 15:37 +0100  Christoph Berg  <cb@df7cb.de>  (f806a3eb59a8)\n\n\t* sendlib.c: Use execvp to call sendmail, useful for people trying\n\tsendmail=\"ssh host sendmail\".\n\n2007-03-21 10:08 -0700  Christoph Berg  <cb@df7cb.de>  (92a0a184005d)\n\n\t* Makefile.am, doc/Makefile.am, doc/gen-map-doc, doc/manual.xml.tail,\n\tfunctions.h, init.h, makedoc-defs.h: Pipe functions.h through cpp -C\n\tfor the manual generation; factor out makedoc-defs.h from init.h for\n\tuse in functions.h.\n\n2007-03-21 09:29 -0700  Rocco Rutte  <pdmef@gmx.net>  (6216dd07b6be)\n\n\t* configure.ac: configure.ac: Make SSL tests for OpenSSL and gnutls\n\tbehave the same For both this now mentions SMTP as a possible SSL\n\tuser and also turns the error for configuring with gnutls without\n\tPOP/IMAP/SMTP into a warning as the OpenSSL part does.\n\n2007-03-20 13:39 -0700  Miroslav Lichvar  <mlichvar@redhat.com>  (b0172175cc89)\n\n\t* UPDATING, buffy.c, buffy.h, commands.c, configure.ac, init.h,\n\tmain.c, mutt.h, mx.c: Make BUFFY_SIZE a runtime switch\n\t($check_mbox_size)\n\n2007-03-20 13:17 -0700  Rocco Rutte  <pdmef@gmx.net>  (2fbc65f3feb6)\n\n\t* addrbook.c, browser.c, compose.c, crypt-gpgme.c, curs_main.c,\n\tmutt_ssl.c, mutt_ssl_gnutls.c, pgpkey.c, postpone.c, query.c,\n\trecvattach.c, remailer.c: Enlarge help string buffers Even on 80x25\n\tterminals, SHORT_STRING (128 byte) may not be enough so use\n\tLONG_STRING (1k) as STRING (256 byte) may well be too short for\n\twider terminals. Closes debian #4152777.\n\n2007-03-20 09:45 -0700  Antoine Reilles  <tonio@NetBSD.org>  (f0461517fc93)\n\n\t* muttlib.c: Remove trailing slash from $folder in\n\tmutt_expand_path.\n\n2007-03-20 08:20 -0700  Rocco Rutte  <pdmef@gmx.net>  (3122a4a338b1)\n\n\t* rfc3676.c: Make f=f handler behave like old f=f handler for quoted\n\tlines Now lines containing quote characters but no further content\n\tappear as quoted lines again for making replies. Also, the spaces\n\tbetween quotes and text are removed to make output look as it did\n\tfor the old handler.\n\n2007-03-19 08:12 -0700  Rocco Rutte  <pdmef@gmx.net>  (5681216fa395)\n\n\t* doc/manual.xml.head: Manual: f=f messages are text/plain, not \"plain\n\tASCII\"\n\n2007-03-16 11:21 -0700  Michael Elkins  <me@mutt.org>  (aa96e6137c69)\n\n\t* imap/imap.c: Fixed segfault when attempting to open an imaps mailbox\n\twhen mutt is not configured with SSL support.\n\n2007-03-16 09:39 -0700  Brendan Cully  <brendan@kublai.com>  (08f9bb4b7810)\n\n\t* configure.ac, configure.in: Move configure.in to configure.ac\n\n2007-03-15 16:29 -0700  Brendan Cully  <brendan@kublai.com>  (4ade0c9660d5)\n\n\t* Makefile.am: Add reldate.h to BUILT_SOURCES\n\n2007-03-15 16:10 +0100  Christoph Berg  <cb@df7cb.de>  (ed804d94676a)\n\n\t* Makefile.am: Remove reldate.h from EXTRADIST to fix out-of-tree\n\tbuilds from tarballs (and remove some stray tabs).\n\n\t* contrib/gpg.rc: Remove absolute paths.\n\n\t* doc/Makefile.am: Pull release date directly from Changelog.\n\n2007-03-15 09:23 -0700  Brendan Cully  <brendan@kublai.com>  (e648206c02e2)\n\n\t* .cvsignore, contrib/.cvsignore, doc/.cvsignore, imap/.cvsignore,\n\tintl/.cvsignore, m4/.cvsignore, po/.cvsignore: Remove .cvsignores\n\n2007-03-15 08:48 -0700  Rocco Rutte  <pdmef@gmx.net>  (836822cc1260)\n\n\t* doc/manual.xml.head, doc/muttrc.man.head, init.h: Document\n\tpattern groups in the manual Sync with muttrc. Add some rationale\n\tfor groups. Fix some style issues. Fix quoting issue with\n\t$smtp_authenticators.\n\n2007-03-14 23:03 -0700  Kyle Wheeler  <kyle@memoryhole.net>  (fa6128cf9cba)\n\n\t* doc/muttrc.man.head: Improved pattern documentation\n\t(group/ungroup)\n\n2007-03-14 22:29 -0700  Brendan Cully  <brendan@kublai.com>  (af1fc17674bc)\n\n\t* mbyte.h: Undefine mbyte macros before overriding them (#2820)\n\n\t* hg-commit: Let user review ChangeLog after hg-commit writes it\n\n2007-03-15 02:12 +0100  Christoph Berg  <cb@df7cb.de>  (460713774c5b)\n\n\t* doc/Makefile.am: Add gen-map-doc to EXTRADIST, call using perl in\n\tsrcdir, fix makedoc rules.\n\n\t* doc/Makefile.am, doc/gen-map-doc, doc/manual.xml.tail, functions.h:\n\tGenerate menu binding documentation from functions.h and OPS*.\n\n2007-03-14 14:45 -0700  Brendan Cully  <brendan@kublai.com>  (35b8facdbdda)\n\n\t* imap/command.c, mutt.h: Update IMAP ACL parser to recognize RFC\n\trights\n\n\t* contrib/Makefile.am, contrib/mutt_xtitle, muttlib.c: Add demo\n\tmutt_xtitle script\n\n\t* muttlib.c: Remove trailing newlines from fmtpipe return value.\n\tIncrease fmtpipe logging level to 3.\n\n2007-03-14 13:49 -0700  David Champion  <dgc@uchicago.edu>  (63ad6be01750)\n\n\t* mutt.h, muttlib.c: Allow format strings to be filtered. Any format\n\tstring ending in | will be expanded and piped through the first word\n\tin the string. The string returned will be used for display. If the\n\treturned string ends in %, it will be passed through the formatter a\n\tsecond time. This allows the filter to generate a replacement format\n\tstring including % expandos.\n\n2007-03-14 13:26 -0700  Brendan Cully  <brendan@kublai.com>  (e9203a364537)\n\n\t* imap/imap.c: Recheck capabilities after authentication (closes:\n\t#2837)\n\n2007-03-14 13:09 -0700  Christoph Berg  <cb@df7cb.de>  (cbacb14a837a)\n\n\t* doc/mutt.man, main.c: mutt.man and mutt -h updates\n\n\tDocument mutt --, remove the reference to\n\tflea, and generally update the mutt.1 manpage.\n\n\t(I removed -d from the SYNOPSIS part since it wasn't entirely\n\tcorrect syntactically there and putting it elsewhere seems like\n\tunnecessary clutter.)\n\n2007-03-14 12:58 -0700  Brendan Cully  <brendan@kublai.com>  (f20641ecca59)\n\n\t* hcache.c: Always give realpath a shot at the hcache folder name.\n\tRemove other hacks.\n\n2007-03-14 12:53 -0700  Rocco Rutte  <pdmef@gmx.net>  (18cd9834050d)\n\n\t* hcache.c: hcache: prepend current dir to path for local folders If a\n\tfolder is local (i.e. stat() succeeds), prepend the current working\n\tdirectory if necessary to always fully qualify the path. Otherwise\n\twe may end up using different cache files for the same folder when\n\tgiven relative paths. This closes #2845.\n\n2007-03-14 12:50 -0700  TAKIZAWA Takashi  <taki@luna.email.ne.jp>  (600b3466489c)\n\n\t* help.c: Complete fix for #1503\n\n2007-03-14 12:39 -0700  Rado S  <regrado@web.de>  (ad2172897839)\n\n\t* imap/imap.c: Let imap_conn_find have first crack at completion of\n\troot\n\n2007-03-14 12:23 -0700  Brendan Cully  <brendan@kublai.com>  (bb43900e853f)\n\n\t* imap/imap.c: Don't skip the last connection in\n\timap_complete_hosts\n\n2007-03-14 11:33 -0700  Rocco Rutte  <pdmef@gmx.net>  (09f73968d97a)\n\n\t* rfc822.c: Fix return value for rfc822_write_address() The strcat\n\tcleanup changed the return type from void to int but didn't provide\n\ta return value for the case of bogus function arguments.\n\n2007-03-13 12:39 -0700  TAKIZAWA Takashi  <taki@luna.email.ne.jp>  (dc8f0c4a6287)\n\n\t* help.c: Use strwidth instead of strlen when generating help strings.\n\tThis fixes word-wrap with multibyte strings (closes: #1503)\n\n2007-03-13 22:40 -0700  Brendan Cully  <brendan@kublai.com>  (61b2845af4da)\n\n\t* Makefile.am, Muttrc.head, Muttrc.head.in, configure.in: Fully expand\n\t$docdir when building Muttrc (closes: #2832)\n\n\t* makedoc.c: Make makedoc return 0 on success (be there dragons here?)\n\n2007-03-13 09:22 -0700  Vincent Lefevre  <vincent@vinc17.org>  (7e9c45589254)\n\n\t* po/fr.po: Updated French translation.\n\n2007-03-13 10:58 +0100  Thomas Roessler  <roessler@does-not-exist.org>  (f4d3704813fd)\n\n\t* charset.c: Clean up the strcat cleanup\n\n2007-03-12 16:26 -0700  Ronny Haryanto  <ronnylist@haryan.to>  (8d956e434fab)\n\n\t* po/id.po: Updated Indonesian translation\n\n2007-03-12 12:19 -0700  René Clerc  <rene@clerc.nl>  (162bb5f71a0f)\n\n\t* po/nl.po: Updated Dutch translation.\n\n2007-03-12 10:32 -0700  Brendan Cully  <brendan@kublai.com>  (83ca0fb6e36a)\n\n\t* imap/util.c: Substitute INBOX for empty mailbox _after_ cleanup\n\t(closes: #2841)\n\n2007-03-12 10:03 -0700  Sami Farin  <safari-mutt@safari.iki.fi>  (42016ef5ee21)\n\n\t* charset.c, copy.c, rfc822.c, rfc822.h: Improve strcat usage\n\t(#2802).\n\n2007-03-11 11:54 +0100  Thomas Roessler  <roessler@does-not-exist.org>  (8a640badfb60)\n\n\t* COPYRIGHT, build-release, crypt-gpgme.c, doc/applying-patches.txt,\n\tdoc/dotlock.man, doc/manual.xml.head, doc/muttrc.man.head,\n\tmuttbug.sh.in, po/bg.po, po/da.po, po/eo.po, po/es.po, po/et.po,\n\tpo/gl.po, po/it.po, po/lt.po, po/pt_BR.po, po/sk.po, po/zh_CN.po,\n\tpo/zh_TW.po: Grabage-collect references to an outdated email\n\taddress.\n\n2007-03-09 10:58 -0800  Rocco Rutte  <pdmef@gmx.net>  (d1122bbaacd8)\n\n\t* doc/Makefile.am, doc/manual.xml.head: Make manual validate against\n\tDocBook 4.2 DTD for \"book\" This adds a 'validate' target to\n\tdoc/Makefile which uses xmllint(1) to validate manual.xml against\n\tthe DTD given in the doctype (intended for developers only).\n\n\tRunning it revealed two validation errors which this patch fixes:\n\n\t1) We declare 'article' as the doctype but want to use 'book' 2)\n\tWithin a lists's items, we didn't include our text in a paragraph\n\n2007-03-08 21:13 -0800  Michael Elkins  <me@mutt.org>  (0ec4394636c4)\n\n\t* init.h: Add `UL' cast for Umask entry in MuttVars to supress\n\tcompiler warning.\n\n2007-03-08 12:19 -0800  Petr Písař  <petr.pisar@atlas.cz>  (d0924f72d2e8)\n\n\t* po/cs.po: Czech spelling fixes and new translations\n\n2007-03-07 12:18 -0800  Christoph Berg  <cb@df7cb.de>  (5de130a3cb96)\n\n\t* doc/muttrc.man.head: Typos in muttrc.man.head\n\n2007-03-07 12:11 -0800  Michael Tatge  <Michael.Tatge@web.de>  (162f0c127492)\n\n\t* doc/mutt.man: Document -d in the man page\n\n2007-03-06 18:13 -0800  Alain Bench  <veronatif@free.fr>  (5fc8c7cee1dd)\n\n\t* charset.c, charset.h, crypt-gpgme.c, imap/utf7.c, mbyte.c,\n\tmutt_idna.c, pgp.c, rfc2047.c, sendlib.c: Remove buggy usage\n\tof M_ICONV_HOOK_TO flag in mutt_idna.c:mutt_idna_to_local().\n\tWipe unwanted code depending on M_ICONV_HOOK_TO in\n\tcharset.c:mutt_iconv_open(). Totally wipe M_ICONV_HOOK_TO symbol.\n\tRemove misusages of M_ICONV_HOOK_FROM flag in:\n\t - crypt-gpgme.c:print_utf8().\n\t - mutt_idna.c:mutt_idna_to_local() and mutt_local_to_idna().\n\t - pgp.c:pgp_traditional_encryptsign(). Document usage policy of\n\tM_ICONV_HOOK_FROM flag. Cosmetic downcasing of some constant charset\n\tnames (utf-8, euc-jp) for consistency. Correction of a typo in the\n\t\"iso8859-5\" charset name.\n\n2007-03-06 17:59 -0800  Rocco Rutte  <pdmef@gmx.net>  (5e47385893fe)\n\n\t* UPDATING, doc/manual.xml.head: Documentation updates for\n\tformat=flowed\n\n2007-03-06 17:45 -0800  Masayuki Moriyama  (78b424bf7c5a)\n\n\t* charset.c, hook.c, mbyte.c: Allow iconv-hook to use virtual\n\tcharsets as targets. (closes: #1269)\n\n2007-03-04 19:26 +0100  Alain Bench  <veronatif@free.fr>  (4dc1d87f4c25)\n\n\t* doc/manual.xml.head, init.h: Doc fixes and updates concerning hooks\n\n\t- Add reply-hooks and send2-hooks in lists they miss.\n\t- Fix that they all take full patterns, not only regexps.\n\t- Note interaction with $default_hook.\n\t- Enumerate them in execution order/increasing priority.\n\t- Add iconv-hook, remove a duplicate charset-hook.\n\n2007-03-06 15:45 -0800  Brendan Cully  <brendan@kublai.com>  (607688bd77b1)\n\n\t* hg-commit: Add check_sec.sh call\n\n\t* hg-commit: Make hg commit less clever\n\n\t* PATCHES: Undo bad PATCHES commit from f=f\n\n2007-03-06 09:49 -0800  Rocco Rutte  <pdmef@gmx.net>  (2e4e1cc18c22)\n\n\t* Makefile.am, PATCHES, doc/manual.xml.head, handler.c, muttlib.c,\n\tprotos.h, rfc3676.c, rfc3676.h, send.c: New format=flowed handler.\n\n2007-03-02 21:12 -0800  Brendan Cully  <brendan@kublai.com>  (537672d8fefb)\n\n\t* attach.c, globals.h, init.c, init.h, lib.c, mh.c, mx.c: Add $umask\n\tfor mailboxes and attachments.\n\n\tinit.c could really use some refactoring.\n\n2007-03-05 14:50 -0800  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (de57c607e9d3)\n\n\t* po/pl.po: Updated Polish translation.\n\n2007-03-03 22:09 -0800  Brendan Cully  <brendan@kublai.com>  (08b1fa8cd55e)\n\n\t* Makefile.am: Do not append ${prefix}/include to CPPFLAGS. If\n\tconfigure didn't see it, neither should make. (closes: #2603)\n\n2007-03-03 21:49 -0800  Rado S  <regrado@web.de>  (d990dcbbf184)\n\n\t* color.c: Increase buffer for color-command regular expressions.\n\n2007-03-03 21:26 -0800  Brendan Cully  <brendan@kublai.com>  (574dbb2c6590)\n\n\t* init.h: Revise status_format docs for %??&?. (closes: #2805)\n\n2007-03-03 21:24 -0800  Brendan Cully  <brendan@kublai.com>  (2e296bd4cdfb)\n\n\t* doc/devel-notes.txt: s/CVS/Mercurial/\n\n2007-03-03 19:04 -0800  Brendan Cully  <brendan@kublai.com>  (efb53c875ed8)\n\n\t* .hgignore: More .hgignore fixes\n\n2007-03-03 18:51 -0800  Brendan Cully  <brendan@kublai.com>  (07f01dd033fe)\n\n\t* ChangeLog: Remove a couple of extraneous ChangeLog entries\n\n2007-03-03 18:47 -0800  Brendan Cully  <brendan@kublai.com>  (48b17378c20a)\n\n\t* UPDATING, copy.c, globals.h, handler.c, init.c, init.h,\n\tmutt_curses.h, pager.c: Add $wrap, which supersedes $wrapmargin.\n\tWhen set to a positive number, wrap at that column. When set to a\n\tnegative number, keep that many characters empty on the right.\n\n2007-03-03 00:35 -0800  Brendan Cully  <brendan@kublai.com>  (3e3d3bf73c9f)\n\n\t* hg-changelog-map, hg-commit: Use hg-commit to perform commits\n\tthat also update the ChangeLog.\n\n2007-03-02 21:17 -0800  Brendan Cully  <brendan@kublai.com>  (472e100053ed)\n\n\t* .hgignore: Ignore more built files\n\n2007-03-02 11:09 -0800  Brendan Cully  <brendan@kublai.com>  (256c86830a36)\n\n\t* .hgignore: Create .hgignore file\n\n2007-03-02 10:29 +0100  Thomas Roessler  <roessler@does-not-exist.org>  (e040b8aba1c4)\n\n\t* configure.in: Make --enable-ssl without pop or imap a mere warning.\n\n2007-03-02 01:25 +0000  Petr Pisar  <petr.pisar@atlas.cz>  (f1c800817281)\n\n\t* po/cs.po: Updated Czech translation (now in UTF-8).\n\n2007-03-01 06:05 +0000  Brendan Cully  <brendan@kublai.com>  (d0ff524fa461)\n\n\t* init.h: Remove $file_charset SYN - it never appeared in an official\n\trelease.\n\n2007-02-28 17:47:13  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h: Add\n\timap_close_connection to fully reset IMAP state. (closes: #2717)\n\tThanks to Sergey Svishchev for the original patch.\n\n2007-02-28 16:27:47  Vsevolod Volkov  <vvv@mutt.org.ua>  (brendan)\n\n\t* po/ru.po: Updated Russian translation.\n\n2007-02-28 07:36:33  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>  (brendan)\n\n\t* po/ja.po: Updated Japanese translation.\n\n2007-02-27 20:53:13  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* hcache.c: Bump hcache version after $assumed_charset BODY\n\tchange.\n\n\t* init.h: Fix init.h preprocessing when USE_SMTP is not set.\n\n2007-02-27 17:44:09  TAKIZAWA Takashi  <taki@luna.email.ne.jp>  (brendan)\n\n\t* mutt.h, parse.c, rfc2047.c, rfc2047.h, rfc2231.c, sendlib.c,\n\tUPDATING, charset.c, charset.h, globals.h, handler.c, init.h:\n\tUpdated $assumed_charset patch (closes: #2218).  Thanks to\n\tTAKAHASHI Tamotsu for the fixes and for handling patch conflicts.\n\n2007-02-27 01:10:57  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* po/POTFILES.in: Add some missing files. This should probably\n\tbe autogenerated somehow.\n\n2007-02-26 18:39:52  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* m4/gpgme.m4: Add gpgme.m4 to distribution to avoid an error\n\trunning autoconf on systems that do not have gpgme installed.\n\n2007-02-26 17:27:29  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* main.c: Add curses_version to mutt -v output (thanks to Vincent\n\tLefevre for the initial patch), and reformat library information.\n\n2007-02-26 17:17:13  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* UPDATING, enter.c, globals.h, history.c, history.h, init.c,\n\tinit.h: Add $history_file and $save_history, for saving command\n\thistory across sessions.\n\n2007-02-26 16:54:26  Roland Rosenfeld  <roland@spinnaker.de>  (brendan)\n\n\t* po/de.po: Updated German translation.\n\n2007-02-25 01:32:31  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* account.c, account.h, imap/imap.c, imap/message.c, main.c,\n\tmutt_sasl.c: Update copyrights.\n\n2007-02-24 07:01:24  Takashi TAKIZAWA  <taki@cyber.email.ne.jp>  (brendan)\n\n\t* UPDATING, charset.c, charset.h, globals.h, handler.c,\n\tinit.h, mutt.h, parse.c, rfc2047.c, rfc2231.c, sendlib.c: Add\n\t$assumed_charset, $file_charset and $strict_mime.\n\n2007-02-24 06:37:32  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* globals.h, init.h, main.c, mutt_sasl.c, protos.h, send.c,\n\tsendlib.c, smtp.c, url.c, url.h, Makefile.am, account.c,\n\taccount.h, configure.in: This patch adds ESMTP relay support to\n\tmutt.  To use, set $smtp_url to the address of your smtp relay,\n\tin the form:\n\n\tsmtp[s]://[user[:password]@]host[:port]/\n\n\twhere port defaults to 25 for smtp and 465 for smtps.\n\n\tYou can also set $smtp_authenticators to control which\n\tmethods mutt will attempt to use during authentication. See\n\t$imap_authenticators for details.\n\n2007-02-24 06:12:20  Moritz Schulte  <Moritz.Schulte@ruhr-uni-bochum.de>  (brendan)\n\n\t* UPDATING, configure.in, crypt-gpgme.c, crypt-gpgme.h,\n\tcrypt-mod-pgp-classic.c, crypt-mod-pgp-gpgme.c,\n\tcrypt-mod-smime-classic.c, crypt-mod-smime-gpgme.c,\n\tcrypt-mod.h, crypt.c, cryptglue.c, init.h, mutt.h, mutt_crypt.h,\n\tMakefile.am: PKA signature verification via GPGME, controlled\n\tby $crypt_use_pka.\n\n2007-02-24 05:47:35  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* po/fr.po: Updated French translation.\n\n2007-02-23 17:38:25  brendan  (brendan)\n\n\t* po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po, po/pl.po,\n\tpo/pt_BR.po, po/ru.po, po/sk.po, po/sv.po, po/it.po, po/ja.po,\n\tpo/ko.po, po/lt.po, po/nl.po, po/et.po, po/eu.po, po/fr.po,\n\tpo/ga.po, po/gl.po, po/hu.po, po/id.po, po/el.po, po/eo.po,\n\tpo/es.po, VERSION, build-release, po/bg.po, po/ca.po, po/cs.po,\n\tpo/da.po, po/de.po: automatic post-release commit for mutt-1.5.14\n\n2007-02-12 00:56:36  Kees Cook  <kees@outflux.net>  (brendan)\n\n\t* imap/imap.c, thread.c: Full fix for null-pointer dereferences\n\ton partial opens. Thanks also to Ken Brush.\n\n2007-02-12 00:06:32  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c, imap/message.c: Do not attempt to free NULL IMAP\n\theaders after a partial mailbox load.\n\n2007-02-07 17:08:51  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c: Sanity-check mailbox name in\n\timap_subscribe. (Closes: #2746)\n\n2007-01-26 14:34:11  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* dotlock.c: Fix #2710, of-by-one in dotlock.c.\n\n2007-01-09 10:37:34  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* cvslog2changelog.pl: Change comment convention for\n\tChangeLog slightly, from ^# to ^#\\ .\n\n2007-01-09 10:31:09  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* pattern.c: #2673: Make mutt_which_case() multi-byte aware.\n\n\t* copy.c, protos.h, sendlib.c: Smarter header wrapping --\n\tdifferent behavior for display purposes and sent messages.\n\n2007-01-08 11:01:24  Rocco Rutte  <pdmef@gmx.net>  (roessler)\n\n\t* menu.c: Fix NULL pointer issue in mutt_format_string().\n\n2007-01-02 17:10:34  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* globals.h, lib.c, lib.h, mutt.h, mutt_socket.c, muttlib.c,\n\tpgppacket.c, protos.h: add debug harness to lib.c functions,\n\tand a bunch of dprint's to safe_rename().\n\n2006-12-20 08:27:58  René Clerc  <rene@clerc.nl>  (brendan)\n\n\t* po/nl.po: Updated Dutch translation.\n\n2006-12-11 02:13:51  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* menu.c: Quiet check_sec.sh.\n\n2006-12-11 02:11:35  Ivan Vilata i Balaguer  <ivan@selidor.net>  (brendan)\n\n\t* po/ca.po: Updated Catalan translation.\n\n2006-12-07 11:34:35  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* menu.c, commands.c, curs_lib.c, enter.c: - my_mbtowcs didn't\n\trecover from bad multibyte sequences\n\n\t- mutt_format_string was called under the assumption that this\n\t  function can operate in-place. Unfortunately, that assumption\n\t  only holds if replacement_char() returns a one-byte character.\n\n2006-12-03 14:07:54  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* account.c: Fix logic error; debian#400831.\n\n2006-11-28 00:22:16  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* curs_lib.c, imap/message.c, mbox.c, mh.c, mutt_curses.h,\n\tpattern.c, pop.c, pop_lib.c: Rename PROG_(SIZE|MSG) to\n\tM_PROGRESS_\\1.\n\n2006-11-23 23:18:47  Thomas Roessler <roessler@does-not-exist.org>  (roessler)\n\n\t* contrib/sample.muttrc-tlr: Remove a display_filter that's\n\tlocale dependent.\n\n2006-11-22 23:08:01  David Champion  <dgc@uchicago.edu>  (brendan)\n\n\t* sort.c: Sort spam scores numerically even when they are in\n\tthe form of floats or negative numbers.\n\n2006-11-21 19:06:23  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* mh.c: Teach maildir and MH to use $write_inc.\n\n\t* mbox.c: Teach mbox/mmdf to use the new progress update API.\n\n2006-11-21 03:06:03  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/auth_sasl.c: If a method list has been given, fall back\n\tto the next authenticator whenever an attempt returns NO or BAD.\n\n2006-11-20 17:56:33  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* doc/manual.xml.head: Some notes on the performance of simple\n\tstrings versus regular expressions in searches.\n\n\t* init.h: Note that $read_inc also affects search/limit progress\n\tupdates now.\n\n\t* mh.c: Port MH/Maildir to new progress update methods.\n\n2006-11-19 05:23:44  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* pop.c: Restore mail fetch count to POP progress bar.\n\n\t* buffy.c: Grow buffy notification to 512 bytes, for large\n\tterminals.\n\n2006-11-15 18:59:27  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* pattern.c: Display progress during searches.\n\n\t* curs_lib.c, imap/imap.c, imap/message.c, mutt_curses.h, pop.c,\n\tpop_lib.c: Unify size and count progress display.\n\n2006-11-14 18:56:29  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (brendan)\n\n\t* doc/Makefile.am: Work around pdksh bug in xml doc make target.\n\n2006-11-14 18:52:10  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* pop.c: Make POP respect $read_inc/$write_inc.\n\n\t* doc/Makefile.am, doc/manual.xml.head: Add performance tuning\n\tsection to manual.\n\n2006-11-11 03:40:03  Ivan Vilata i Balaguer  <ivan@selidor.net>  (brendan)\n\n\t* po/ca.po: Updated Catalan translation.\n\n2006-11-02 01:09:59  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* ChangeLog: Undo accidental charset corruption in ChangeLog.\n\n2006-11-01 23:19:03  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* po/fr.po: Updated French translation.\n\n2006-10-31 20:29:24  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/TODO: Update TODO\n\n2006-10-31 18:37:14  Kevin Scannell  <kscanne@gmail.com>  (brendan)\n\n\t* po/ga.po: Update Irish translation to 1.5.12.\n\n2006-10-30 02:54:12  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* mutt_socket.c: Include <sys/time.h> if available, to ensure\n\tstruct timeval is declared in raw_socket_poll.\n\n2006-10-30 02:36:07  David Shaw  <dshaw@jabberwocky.com>  (brendan)\n\n\t* pgpmicalg.c: RFC-2440bis adds support for the SHA-224 hash\n\talgorithm.\n\n2006-10-30 02:32:30  Alain Bench  <veronatif@free.fr>  (brendan)\n\n\t* contrib/gpg.rc: Add the usual %?p? condition around the\n\t--passphrase-fd option in 3 commented-out examples of gpg-2comp\n\tusage. Also match gpgv in a good_sign pattern commented-out\n\texample.\n\n2006-10-09 13:39:38  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* lib.c: Even more paranoid temporary file creation.\n\n2006-10-03 16:45:45  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* curs_lib.c: Clear the progress bar when the current operation\n\thas completed.\n\n2006-10-03 16:40:56  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* hcache.c: Ignore trailing slashes in folder names when mapping\n\tto header cache.\n\n2006-09-08 18:28:10  Malcolm Parsons  <malcolm.parsons@gmail.com>  (brendan)\n\n\t* OPS.PGP, doc/manual.xml.tail, pgpkey.c, OPS: Clean up some\n\ttext. Closes: #2466.\n\n2006-09-08 17:30:33  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* mutt_sasl.c, pop_auth.c: Don't send protocol garbage to\n\tsasl_decode64 during POP authentication.  Also enable SASL\n\tplaintext: $foo_authenticators is a more general solution.\n\n\t* Makefile.am: Remove bogus smtp.c entry from extra sources,\n\tadded by accident on 20060831.\n\n2006-09-05 08:57:37  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* send.c: Fix #2168.\n\n2006-09-01 19:26:39  Lars Hecking  <lhecking@users.sourceforge.net>  (brendan)\n\n\t* configure.in: Handle --without-mixmaster properly. (Slightly\n\tmodified.)\n\n2006-08-31 23:49:40  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (brendan)\n\n\t* Makefile.am, configure.in: Only build wchar replacement funcs\n\twhen necessary. Add space after mode argument to install-sh.\n\n\t* gettext.c: Remove superfluous empty file from CVS.\n\n2006-08-18 10:28:15  Roland Rosenfeld   <roland@spinnaker.de>  (roessler)\n\n\t* po/de.po: update\n\n2006-08-16 20:32:23  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* copy.c, protos.h, sendlib.c: Do intelligent things with long\n\theader lines.\n\n2006-08-16 17:38:57  René Clerc  <rene@clerc.nl>  (brendan)\n\n\t* po/nl.po: Updated translation.\n\n2006-08-15 22:40:48  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* po/fr.po: Updated translation.\n\n2006-08-15 22:38:19  Vsevolod Volkov  <vvv@mutt.org.ua>  (brendan)\n\n\t* po/ru.po: Updated translation.\n\n2006-08-15 22:35:51  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* ChangeLog: Fix a few UTF-8 conversions.\n\n2006-08-15 17:08:33  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h, curs_main.c,\n\tflags.c, mutt.h, mx.c, pager.c, pop.c: Generic ACL support.\n\n2006-08-15 08:42:46  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* doc/devel-notes.txt: Document switch to UTF-8.\n\n\t* ChangeLog: Changing ChangeLog to utf-8.\n\n2006-08-14 19:43:10  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* UPDATING: Mention change since 1.5.12.  Ooops.\n\n\t* po/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po, po/eu.po, po/fr.po, po/ga.po, po/gl.po, po/hu.po,\n\tpo/id.po, po/it.po, po/ca.po, po/cs.po, po/da.po, po/de.po,\n\tpo/el.po, po/eo.po, po/es.po, po/et.po, VERSION, po/bg.po:\n\tautomatic post-release commit for mutt-1.5.13\n\n2006-08-11 16:25:59  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* Makefile.am: Include reldate.h in make dist, so docs won't be\n\tneedlessly rebuilt.\n\n2006-08-11 10:54:24  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* contrib/sample.muttrc-tlr: Update example -- it's amazing how\n\tlittle I've actually changed over the past couple of years.\n\n2006-08-11 09:32:29  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>  (roessler)\n\n\t* doc/manual.xml.head, mutt.h, pattern.c: Mutt-thread patch. Use\n\t~(PATTERN) to match any threads that contain messages that\n\tmatch PATTERN.\n\n2006-08-11 09:08:20  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* init.h, mutt.h: Use #ifdef in some appropriate places.\n\t(Particularly relevant when building the documentation.)\n\n2006-08-10 22:16:11  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/command.c: Unbreak imap_check_subscribed after command\n\tdata type change.\n\n2006-08-10 21:47:44  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (brendan)\n\n\t* doc/PGP-Notes.txt, doc/devel-notes.txt, doc/manual.xml.head,\n\tdoc/smime-notes.txt: Fix some typos; regularise spelling from\n\tUK to US forms.\n\n2006-08-10 21:43:47  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* Makefile.am: Only touch reldate.h if it actually changes.\n\tIt was getting annoying rebuilding the manual after every commit.\n\n2006-08-10 21:25:18  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (brendan)\n\n\t* Makefile.am, configure.in, doc/instdoc.sh.in: No need to set\n\tCPP, OPS manually in Makefile.am.  Include stdlib.h in autoconf\n\ttests that use exit.\n\n2006-08-10 20:20:28  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap_private.h, imap/browse.c, imap/command.c,\n\timap/imap.c: Add type field for IMAP command data structure,\n\tcheck it before use.\n\n\t* imap/command.c: Handle IMAP out-of-order tagged\n\tresponses. Closes: #2365.\n\n\t* imap/command.c, imap/util.c: Handle literal mailbox names\n\tin LIST responses (for Notes).\tWe should really have an IMAP\n\tstream tokenizer.\n\n\t* imap/command.c: Notes sometimes sends EXISTS messages for the\n\twrong mailbox.\n\n\t* imap/message.c: More out-of-order FETCH fixes. This time I wrote\n\ta replay tool acting as an IMAP server based on a .muttdebug0\n\tfile, and mutt handled the out-of-order responses served by it.\n\n\t* imap/command.c, imap/message.c: More fixes for out-of-order\n\tFETCH responses.\n\n2006-08-09 19:29:22  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* mime.types: Update sample mime.types.\n\n2006-08-09 01:17:48  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/message.c: Untested attempt to handle flag updates during\n\tmailbox open.\n\n\t* imap/message.c: Do not allow IMAP mailbox to be reopened while\n\tit is being opened.\n\n2006-08-08 23:04:01  Matthias Andree  <matthias.andree@gmx.de>  (brendan)\n\n\t* INSTALL, doc/devel-notes.txt: Updated and improved build\n\tinstructions.\n\n2006-08-08 22:49:12  Holger Weiss  <holger@zedat.fu-berlin.de>  (brendan)\n\n\t* configure.in, snprintf.c: Check whether v?snprintf is\n\tC99-compliant, and fix replacement functions to be.\n\n2006-08-08 22:38:29  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c: Finish fixing 2251.\n\n\t* imap/imap.c: Handle unknown mailboxes in IMAP buffy check.\n\n2006-08-08 22:05:51  Ronny Haryanto  <ronnylist@haryan.to>  (brendan)\n\n\t* po/id.po: Update.\n\n2006-08-08 21:59:37  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* po/fr.po: Update.\n\n2006-08-07 19:55:42  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/command.c: Check for CAPABILITY in extended tagged\n\tresponses.\n\n2006-08-05 00:48:16  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* mutt_socket.c: Include FD in socket logging.\n\n2006-08-05 00:19:38  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* browser.c: Don't allow user to attempt to delete root IMAP\n\tfolder.\n\n2006-08-05 00:03:22  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* po/Makefile.in.in: Fix po build when builddir != srcdir\n\t(modified: made simpler).\n\n2006-08-03 23:46:31  ckillian@cs.ucsd.edu  (brendan)\n\n\t* doc/manual.xml.head: Fix --enable--hcache typo in the manual.\n\n2006-08-03 23:42:27  Christian Ebert  <blacktrash@gmx.net>  (brendan)\n\n\t* doc/manual.xml.head: Minor formatting tweak in the manual.\n\n2006-08-03 23:31:11  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* init.h: Add some missing makedoc defines for hcache DB\n\toptions. Clarify their meanings in the documentation.\n\n2006-07-20 00:57:33  David Champion  <dgc@uchicago.edu>  (brendan)\n\n\t* doc/devel-notes.txt: Some notes on setting up a working\n\tdocbook toolchain.\n\n2006-07-20 00:12:52  Alain Bench  <veronatif@free.fr>  (brendan)\n\n\t* contrib/Pine.rc, contrib/Tin.rc, contrib/sample.muttrc,\n\tcontrib/sample.muttrc-tlr, doc/muttrc.man.head, Muttrc.head.in,\n\tcontrib/Mush.rc: Clean up a number of examples in the\n\tdocumentation.\n\n2006-07-19 23:33:27  Matthias Andree  <matthias.andree@gmx.de>  (brendan)\n\n\t* m4/Makefile.am: Clean up some debugging code in the build\n\tsystem update.\n\n2006-07-19 23:29:54  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* configure.in: Fix linking for body cache without IMAP support.\n\n2006-07-19 23:17:59  Matthias Andree  <matthias.andree@gmx.de>  (brendan)\n\n\t* .cvsignore: Ignore stamp-h1\n\n\t* prepare: Update prepare: remove -dev (always enable dependency\n\ttracking) and use autoreconf -i instead of running tools by hand.\n\n2006-07-18 18:15:30  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/devel-notes.txt: Document which versions of autoconf and\n\tautomake mutt supports.\n\n2006-07-18 18:04:15  Matthias Andree  <matthias.andree@gmx.de>  (brendan)\n\n\t* doc/.cvsignore, doc/Makefile.am, doc/Makefile.in,\n\timap/Makefile.am, m4/Makefile.am, m4/Makefile.am.in, m4/README,\n\tpo/Makefile.in.in, Makefile.am, build-release, contrib/.cvsignore,\n\tcontrib/Makefile.am, contrib/Makefile.in, prepare: Long-overdue\n\tbuild system overhaul.\n\n2006-07-18 16:08:39  Vsevolod Volkov  <vvv@mutt.org.ua>  (brendan)\n\n\t* po/ru.po: Update for 1.5.12.\n\n2006-07-17 18:40:26  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* doc/Makefile.in: Some makefile fixes relating to reldate.h.\n\n2006-07-17 18:24:52  Matthias Andree  <matthias.andree@gmx.de>  (brendan)\n\n\t* doc/.cvsignore: Tell CVS to ignore generated file mutt.1.\n\n2006-07-17 18:01:58  Christian Ebert  <blacktrash@gmx.net>  (brendan)\n\n\t* doc/manual.xml.head: Fix a typo in a macro demonstrating $my_\n\tvariables.\n\n2006-07-17 17:56:37  Adeodato Simó  <dato@net.com.org.es>  (brendan)\n\n\t* sendlib.c: Change formate of User-Agent header from\n\tMutt/Version-Date to Mutt/Version (Date).\n\n2006-07-14 18:39:14  roessler  (roessler)\n\n\t* po/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po, VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po,\n\tpo/de.po, po/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po,\n\tpo/fr.po, po/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po:\n\tautomatic post-release commit for mutt-1.5.12\n\n2006-07-14 18:12:49  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* UPDATING: There's no point in giving a date for each\n\tincompatible change.\n\n\t* UPDATING: Fix UPDATING.\n\n2006-07-14 00:20:05  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* doc/manual.xml.head: Improved history documentation (modified\n\tfor clarity).\n\n\t* doc/manual.xml.head: Document $my_ variables and add a section\n\tabout how to calculate the header cache file name for a given\n\tfolder. Modified for clarity.\n\n2006-07-11 23:38:30  Rocco Rutte  <pdmef@gmx.net>  (roessler)\n\n\t* main.c, mutt_curses.h: Fix 2305.\n\n2006-07-11 23:34:11  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)\n\n\t* mbyte.c, protos.h, rfc2047.c, rfc2231.c: Fix #2173.\n\n2006-07-09 20:05:02  Kyle Wheeler  <kyle-mutt-dev@memoryhole.net>  (brendan)\n\n\t* imap/imap.c: Plug an mbox leak parsing the Postponed folder in\n\timap_open_mailbox (slightly modified to prevent bad free calls).\n\n2006-07-07 23:10:51  Johan Svedberg  <johan@svedberg.com>  (brendan)\n\n\t* po/sv.po: Update to the Swedish translation.\n\n2006-07-07 18:44:34  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* imap/message.c: Fix a small memory leak in the gap between\n\tthe last cached header and the first uncached. (I've plugged a\n\tcouple of other leaks that happen under error conditions.)\n\n2006-07-07 17:00:05  Kyle Wheeler  <kyle-mutt-dev@memoryhole.net>  (brendan)\n\n\t* doc/muttrc.man.head: Fix a small inconsistency documenting\n\t'reset all.'\n\n2006-07-07 16:21:57  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (brendan)\n\n\t* po/pl.po: Update.\n\n2006-07-06 18:18:31  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* imap/command.c: Fix a string leak parsing STATUS responses.\n\n\t* score.c: Fix a small memory leak when updating a score pattern.\n\n2006-07-05 00:31:38  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* init.c: Reset myvar for each token in parse_set, so that\n\tthings like set my_var=val &my_var ?charset work again. Noted\n\tby Alain Bench.\n\n\t* doc/Makefile.in, init.c: Undo breakage I introduced in VL's\n\tdoc reldate patch.\n\n\t* UPDATING, init.h: Remove $imap_cachedir synonym, and update\n\tsome docs.\n\n\t* bcache.c: Rename mutt_bcache_path to bcache_path (it's static),\n\tsimplify it a bit, and just strip '/' in the URL portion up\n\tto path instead of replacing them with '_', for prettier cache\n\tfolder names.\n\n2006-07-04 17:23:16  Alain Bench  <veronatif@free.fr>  (brendan)\n\n\t* history.c: Adopt shell convention of omitting from the history\n\tcommands prefixed with a space.\n\n2006-07-04 17:11:04  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* configure.in, doc/manual.xml.head, globals.h, imap/imap.c,\n\timap/imap_private.h, imap/message.c, imap/util.c, init.h, mh.c,\n\tpop.c, pop.h, Makefile.am: pdmef.cache.24: Generalise IMAP body\n\tcaching and add POP support.  $imap_cachedir is now a synonym\n\tfor $message_cachedir, and should be dropped soon since it hasn't\n\tbeen in an official release.\n\n2006-07-03 16:19:43  Michael Tatge  <Michael.Tatge@web.de>  (brendan)\n\n\t* doc/manual.xml.head: Some commands used a dash in the\n\tdocumentation instead of an underscore. Closes: #2270.\n\n2006-06-29 22:14:08  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* UPDATING: Fill in missing entries in UPDATING.\n\n2006-06-25 20:10:24  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* doc/Makefile.in: Add release date to manual version\n\tinformation.\n\n2006-06-19 18:14:03  TAKAHASHI Tamotsu  <tamo@momonga-linux.org>  (brendan)\n\n\t* imap/browse.c: Fix browse_get_namespace() which could overflow\n\tns[LONG_STRING].  (Possible remote vulnerability)\n\n2006-06-19 17:50:10  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* po/fr.po: Update to current CVS.\n\n2006-06-13 22:26:18  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* Makefile.am: Run cut under the C locale when parsing ChangeLog\n\tfor reldate.\n\n2006-06-13 07:52:52  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* cryptglue.c: typo\n\n2006-06-08 11:56:05  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* commands.c, curs_main.c, globals.h, muttlib.c, sendlib.c: Clean\n\tup ReleaseDate mess; include ReleaseDate in User-Agent header.\n\n\t* crypt.c: Fix #2272.\n\n2006-06-06 23:58:10  Paul Walker  <paul@black-sun.demon.co.uk>  (brendan)\n\n\t* init.c: Remove variable aliases from the output of mutt -D\n\t(modified for dubious cosmetic reasons). Closes: #2265.\n\n2006-05-26 16:51:48  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* configure.in: When flags are added to CPPFLAGS and LDFLAGS in\n\tconfigure.in, this should be done with a consistent\n\torder. Otherwise, when several versions of a library are\n\tinstalled, this could lead to a mismatch between the header and\n\tthe library.\n\n2006-05-26 16:38:18  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (brendan)\n\n\t* imap/command.c, imap/message.c, mutt_socket.c, mutt_socket.h,\n\tpop_lib.c: Add mutt_socket_write_n to write binary data. Use this\n\tfunction in imap_append_message. Closes: #2244.\n\n2006-05-21 23:25:48  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* .cvsignore, reldate.h: reldate.h is a generated file now: remove\n\treldate.h from version control, and add it to .cvsignore.\n\n2006-05-19 20:38:05  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/Makefile.in: Add intro.html to distributed HTML files\n\t(fallout from conversion from article to book).\n\n\t* UPDATING: Use +/-/! instead of N/D/M in UPDATING.\n                                 \n2006-05-19 18:30:10  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* Makefile.am, README, UPDATING: The UPDATING document is supposed\n\t(when complete) to provide quick pointers by date to changed\n\tfeatures (new options/commands, new features, changed defaults,\n\tetc.)\n\n\t* doc/manual.xml.head, init.h: Document speed impact of attachment\n\tcounting. This adds a short paragraph to manual.xml and\n\tcross-links %X-expandos to it.\n\n2006-05-18 18:35:10  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* hcache.c, hcache.h, imap/imap.c, imap/message.c, mh.c: Use\n\theader_cache_t* instead of void* for header cache.\n\n\tIn hcache.c, the header_cache structure is defined to match the\n\tneeds per DB backend used. Thus the interface uses void* abstract\n\tfrom it. This patch adds a 'header_cache' forward declaration to\n\thcache.h so that we at least get a little more type safety.\n\n\t* INSTALL: Note that the DocBook 4.2 DTD should be installed\n\tlocally in order to build the manual.\n\n\t* doc/chunk.xsl, doc/manual.xml.head, doc/manual.xml.tail,\n\tmakedoc.c: Properly use tables in manual where appropriate.\n\n\tNow, lots of information which really deserves a table is just put\n\tinto <screen/> sections with manual line breaks and things like\n\tthat. This is ugly for several reasons including that the\n\tinformation stored there should be accessable straight from the\n\ttable of contents. For the TOC, this patch switches to <book/> for the manual and uses a\n        deeper split level so things actually look nicer. The only problem\n\tare tables which may be not so well supported when dumping the\n\tHTML to .txt but the DocBook->txt converter with table support is\n\twork-in-progress...\n\n\t* imap/message.c, imap/utf7.c, imap/util.c, mutt_ssl_gnutls.c,\n\tmuttlib.c, mx.c, pager.c, pgplib.c, remailer.c, rfc1524.c,\n\trfc2047.c, rfc2231.c, rfc822.c, sendlib.c, buffy.c, charset.c,\n\tcheck_sec.sh, color.c, enter.c, group.c, hash.c, init.c, lib.c,\n\tmenu.c, mh.c, mutt_idna.c: Avoid safe_free() usage and add\n\tsecurity checks.\n\n\tAdd checks to check_sec.sh for memory functions. These include a\n\tcheck for use of safe_free() instead of FREE() and a check whether\n\tFREE(&...) is used. For the former, __SAFE_FREE_CHECKED__ is to be\n\tused, for the latter __FREE_CHECKED__ to avoid messages from\n\tcheck_sec.sh\n\n2006-05-18 08:53:31  Rocco Rutte  <pdmef@gmx.net>  (roessler)\n\n\t* Makefile.am, build-release, reldate.h: Autogenerate reldate.h\n\tfrom ChangeLog.\n\n2006-05-17 18:37:33  Rene Clerc  <rene@clerc.nl>  (brendan)\n\n\t* po/nl.po: Updated nl.po.\n\n2006-05-16 05:01:02  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* po/fr.po: Updated fr.po\n\n2006-05-06 07:42:51  Rocco Rutte  <pdmef@gmx.net>  (roessler)\n\n\t* mh.c: Header caching for mh folders.\n\n2006-05-05 17:27:10  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* doc/manual.xml.head: Set system ID to docbook 4.2, in harmony\n\twith schema URL.\n\n2006-05-02 22:23:35  Rocco Rutte  <pdmef@gmx.net>  (brendan)\n\n\t* muttlib.c: Fix an improper dereference in mutt_buffer_init (I think).\n\n2006-04-28 19:52:45  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* mutt.h, parse.c, pattern.c, protos.h, hdrline.c: Cleaning\n\tup attachment counting.  This takes away some of the worst\n\taberrations, but the feature is still a performance hog.\n\n2006-04-28 12:19:20  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (roessler)\n\n\t* mutt_socket.h: \"could somebody please move this really nasty\n\tbug fix taken from Brendan's esmtp patch to the mailine code?\" --\n\t\"done\"\n\n2006-04-28 08:35:03  Rocco Rutte  <pdmef@gmx.net>  (roessler)\n\n\t* imap/imap.c, init.h, main.c, mutt.h, mutt_socket.c, mutt_ssl.c,\n\tmutt_ssl.h, mutt_ssl_gnutls.c, pop_lib.c, buffy.c, configure.in,\n\tglobals.h, init.c: pdmef+fix+sslinterface. Triggered by a warning\n\twhen compiling with POP and GNUTLS, I noticed the SSL interfaces\n\tfor OpenSSL and GNUTLS internally are different which doesn't\n\tmake sense.\n\n\t* configure.in, mh.c: pdmef+fix+dino.diff. This fixes mutt/2174.\n\n2006-04-24 19:59:07  exg@gentoo.org  (brendan)\n\n\t* configure.in: Don't abort configure if --without-sasl is\n\tgiven without any network options. Gentoo's build scripts seem\n\tto generate this configuration.\n\n2006-04-20 16:46:49  Moritz.Schulte@ruhr-uni-bochum.de  (roessler)\n\n\t* headers.c, mutt_crypt.h, postpone.c: Make mutt_parse_crypt_hdr\n\tmore SMIME-aware.\n\n2006-04-18 23:22:30  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/auth_sasl.c: Handle Exchange's bogus short challenge in\n\tAUTH NTLM (problem debugged by Alexander Gattin).\n\n2006-04-18 15:28:50  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* recvattach.c: Fix saving of attachments.\n\n2006-04-05 17:28:30  Phil Pennock  <mutt-dev@spodhuis.demon.nl>  (brendan)\n\n\t* curs_main.c:\t(1) OP_MAIN_LINK_THREADS needs to check for\n\tIMAP_ACL_DELETE permission, since the thread linking involves\n\tdeleting the old email. (2) makes CHECK_IMAP_ACL() a no-op if\n\tUSE_IMAP is not defined; then cleans up a bunch of the #ifdef\n\tlitter.\n\n2006-04-03 20:26:14  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/command.c: Don't pass a null destination to imap_fix_path\n\tin the default STATUS handler when the mailbox name is implicitly\n\tINBOX. Thanks to Kai Hendry for the test mailbox and Sami Liedes\n\tfor the backtrace. Closes debian #351337.\n\n\t* init.h: Set $record default to ~/sent (closes: #2068).\n\n2006-03-30 19:50:01  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/manual.xml.head: Tighten up lists/subscribe example,\n\tto close #2198.\n\n2006-03-28 18:04:21  Mike Hallock  <mhallock@scs.uiuc.edu>  (brendan)\n\n\t* curs_main.c: imap-fetch-mail should check that there is a\n\tContext before dereferencing Context->magic to avoid a segfault\n\tpossibility.\n\n2006-03-28 01:08:28  Paul Walker  <paul@black-sun.demon.co.uk>  (brendan)\n\n\t* recvattach.c: Sanitize attachment file names (seatbelt for\n\tinattentive recipients).\n\n2006-03-24 23:15:37  Paul Walker  <paul@black-sun.demon.co.uk>  (brendan)\n\n\t* INSTALL: Document the need for a docbook-xsl bundle in order\n\tto build the docs.\n\n2006-03-15 12:26:00  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/message.c: Don't store UIDNEXT unless we know it.\n\n\t* imap/message.c: Only synthesize UIDNEXT if we've fetched\n\tuncached messages. Fixes a FETCH 1:0 bug Bruno Postle reported and\n\thelped to debug.\n\n2006-03-13 23:21:51  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/message.c: Courier fails to send UIDNEXT on SELECT\n\t(a violation of RFC 3501 section 6.3.1) - synthesize it if it\n\tis missing.\n\n\t* init.h: Make imap_idle default to false for 1.5.12.\n\n2006-03-03 10:12:27  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* hook.c: reply-hook is used in contexts where we don't have\n\ta Context structure available. Hence, it must not require the\n\tfull message.\n\n2006-03-03 09:55:46  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* query.c: Fix mutt/2189; lack of error checking in the query\n\tcode.\n\n2006-02-21 21:52:17  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* muttlib.c: Preallocate some buffer space before attempting\n\tvsnprintf in mutt_buffer_printf (Solaris 9 workaround).\n\n2006-02-21 08:10:15  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* attach.c: Fix mutt/2186.\n\n2006-02-21 00:29:10  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/command.c, muttlib.c: Catch mutt_buffer_printf failures.\n\n2006-01-26 07:13:06  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (brendan)\n\n\t* contrib/Makefile.in, doc/Makefile.in: Set datarootdir.\n\n2006-01-20 21:21:31  Phil Pennock  <mutt-dev@spodhuis.demon.nl>  (brendan)\n\n\t* imap/message.c: Correct a fairly harmless typo parsing message\n\t\\Recent flags.\n\n2006-01-15 21:37:03  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/browse.c, imap/command.c, imap/imap.c, imap/imap.h, main.c,\n\tpattern.c: A conservative update of copyright years. Some other\n\tfiles may need updating too.\n\n2006-01-14 01:16:59  Phil Pennock  <mutt-dev@spodhuis.demon.nl>  (brendan)\n\n\t* init.c: Tab-completion for my_ variable names and values.\n\n2006-01-13 09:08:11  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* init.c: More compact code for managing the \"my\" variables list.\n\n2006-01-12 19:09:28  Phil Pennock  <mutt-dev@spodhuis.demon.nl>  (brendan)\n\n\t* init.c: Update MyVars to the next entry when deleting the head\n\tof the list, instead of leaving it pointing to a freed entry.\n\n2006-01-12 09:36:46  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2006-01-12 06:07:50  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* init.c: Teach mutt to expand mutt variables as it does\n\tenvironment variables. For example, you might put something like\n\tthis into a hook: set sendmail=\"mysmtp -f $from\". Allow\n\tuser-definable variables starting with my_. Environment variables\n\ttake precedence, and expansion does not occur in shell-escape.\n\n2006-01-11 06:45:23  Recai Oktas  <roktas@omu.edu.tr>  (brendan)\n\n\t* po/tr.po: A tr.po update.\n\n2006-01-10 21:06:22  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/browse.c: Sanity-check folder inferiors response. Brian\n\tWeaver reports that it fixes the extra delimiters bug triggered by\n\tdbmail's incorrect LIST response.\n\n\t* hdrline.c: Don't use uninitialised flags variable when fetching\n\tattachment count.  Closes: #2153.\n\n2006-01-09 19:43:59  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* imap/imap.c, mutt.h, pattern.c, protos.h, send.c, Makefile.am,\n\tglobals.h, group.c, init.c, init.h: Adding pattern group support;\n\tsee http://does-not-exist.org/mail-archives/mutt-dev/msg05693.html\n\tfor instructions.  The ungroup command is not yet implemented,\n\tand documentation is lacking.\n\n2006-01-04 17:28:32  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/browse.c: Zero out IMAP_LIST before each imap_cmd_step in\n\tbrowser to avoid bogus matches when the untagged response isn't a\n\tLIST response. Phil Pennock diagnosed and proposed a patch for\n\tthis bug.\n\n2006-01-03 17:35:18  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c: Pipeline CLOSE (it's always followed by a SELECT or\n\ta LOGOUT).\n\n\t* imap/command.c, imap/imap.c: If there is an * OK\n\t[CAPABILITY... qualifier on connect, parse it and skip the manual\n\tcapability check.\n\n\t* imap/imap.h, imap/imap.c, postpone.c: Pipeline postponed mail\n\tcheck on mailbox open if appropriate.\n\n2005-12-30 17:34:52  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c: Sort mailbox in SORT_ORDER in imap_sync_mailbox so\n\tthat sync_helper doesn't end up resorting it 10 times.\n\n\t* imap/imap.c: Only resort headers in imap_make_msg_set if order\n\t!= SORT_ORDER. Fix sync_helper to return 1 in case of +FLAGS but\n\tnot -FLAGS.\n\n2005-12-26 23:55:19  Nik A. Melchior  <nam1@cec.wustl.edu>  (brendan)\n\n\t* doc/muttrc.man.head: Fix whitespace around ~X in\n\tmuttrc.man.head.\n\n2005-12-23 18:20:02  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap_private.h, imap/message.c: Don't evaluate hcache\n\tunless uidnext > 0. This shouldn't happen, but it was reported\n\tto. I probably have to be a lot more careful about the uid\n\tdatatypes but I'm too lazy to clean up right now.\n\n\t* imap/imap.c: Always use NOOP when imap_check_mailbox is called\n\twith force set. Seems to resolve a Cyrus idiosyncracy noted by\n\tPhil Pennock.\n\n\t* imap/imap.c, imap/message.c: IMAP message cache fixes: embed\n\tUIDVALIDITY in the cache file name, only delete deleted messages\n\tat sync time. Also use an alias to make the sync code clearer.\n\n2005-12-22 20:14:04  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/command.c: Fix at least Kyle Wheeler's new mail detection\n\tproblems: call imap_fix_path on buffy path.\n\n\t* regex.c: Kyle Wheeler noticed a couple of warnings in the\n\tmoribund regex code. One still remains that I'm too lazy to fix\n\tright now.\n\n\t* imap/message.c: Add <errno.h> for msg_cache_put.\n\n\t* globals.h, imap/imap.c, imap/imap_private.h, imap/message.c,\n\timap/message.h, init.h: Add $imap_cachedir option. If set, mutt\n\twill keep copies of IMAP messages under this directory.\n\n\t* imap/imap.c: Check all connections instead of just the first\n\twhen NONEW is set in imap_conn_find. Wait for root delimiter check\n\tto complete before SELECTing since we may need it to form the\n\tmailbox name.\n\n\t* imap/command.c: More logging in STATUS parser to track down new\n\tmail detection problems.\n\n2005-12-21 21:02:50  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* hcache.c: Check for NULL data in refactored mutt_hcache_fetch.\n\n\t* hcache.c: Unbreak QDBM too.\n\n\t* hcache.c, hcache.h: I broke DB4 while refactoring hcache.c.\n\n\t* imap/imap.c, imap/imap_private.h, imap/message.c: Cache\n\tUIDVALIDITY/UIDNEXT as header cache metadata, only attempt to\n\tfetch up to UIDNEXT from the header cache. Also a cosmetic\n\tcorrection: Display the actual first message being fetched (after\n\thcache) instead of 1.\n\n\t* imap/command.c: Don't run pending IMAP commands until the\n\tcurrent queue has drained. Many thanks to Vincent Lefevre for his\n\tpatient help debugging.\n\n\t* imap/command.c: Compare full mailbox names when doing IMAP buffy\n\tcheck, not up to the length of the STATUS response.\n\n2005-12-20 17:50:47  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* hcache.c, hcache.h, imap/imap.c, imap/imap_private.h,\n\timap/message.c, mh.c, protos.h, Makefile.am: Refactor header cache\n\ta bit to provide (fetch|store)_raw functions. These will let me\n\tkeep folder metadata (UIDVALIDITY, NEXT, msg count etc) in the\n\tcache, which will help to sync more quickly.\n\n\t* imap/imap.c: Remove deleted entries from header cache on CLOSE.\n\n2005-12-19 18:13:28  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* ChangeLog, ChangeLog.old: ChangeLog.old was just old ChangeLog\n\tentries with different formatting - I think it's time to put it\n\tout to pasture. I've moved all pre-1.4 entries from ChangeLog into\n\tChangeLog.old now. This should have the nice side-effect of making\n\tthe git mirror grow a little more slowly.\n\n\t* imap/imap.c: Catch another possible race when starting IDLE.\n\n\t* imap/imap.c, imap/imap_private.h, imap/message.c: More IMAP\n\theader cache cleanup: remove expunged entries from cache, and\n\tdon't bother checking the cache for mail that's arrived since the\n\tmailbox was opened. TODO: cache UIDNEXT, only check the cache for\n\tmessages up to cached value.\n\n\t* imap/imap.c: Avoid a possible race when entering the IDLE\n\tcommand - if new mail notification is received before the +\n\tresponse, mutt may attempt to send a fetch command before it\n\trealises it's idling.\n\n\t* imap/imap_private.h, imap/message.c, imap/imap.c: Much faster\n\tIMAP sync code, pipelined and everything. Now batch updates\n\tchanged flags, instead of syncing each changed message\n\tindividually.\n\n\t* imap/imap.c: Manually unidle at logout if necessary. Somewhat\n\tunclean - might be good to have an imap_unidle function...\n\n\t* imap/imap.c, imap/message.c, imap/message.h: Cache server-side\n\tflags, don't send flag updates if mutt's are the same. This can\n\thappen if a flag is toggled and toggled back, or we receive server\n\tupdates, and the cache will make much faster sync possible later.\n\n\t* imap/command.c, imap/imap.c: Pipeline MYRIGHTS, subscribed\n\tmailbox check and root delimiter check.\n\n\t* imap/imap.c: Clear name field from status callback before each\n\tIMAP completion attempt.\n\n\t* imap/message.c: Remove some cut-n-paste garbage from IMAP header\n\tcache code.\n\n\t* mx.c: Only mark unread messages as old when closing mailbox.\n\n\t* imap/auth_sasl.c, imap/browse.c, imap/imap.c,\n\timap/imap_private.h, imap/message.c, imap/util.c, mx.c: Real\n\tsupport for the Old flag on IMAP.\n\n\t* imap/imap.c, imap/imap_private.h: Display success message when\n\tsubscription command succeeds.\n\n\t* imap/browse.c, imap/command.c, imap/imap.c, imap/imap_private.h:\n\tReplace imap_parse_list_response with a proper untagged response\n\thandler.\n\n2005-12-16 18:49:40  Recai Oktas  <roktas@omu.edu.tr>  (brendan)\n\n\t* color.c, crypt.c, handler.c, init.c, parse.c, smime.c: Use\n\tascii_str* instead of mutt_str* in several places where it's\n\tneeded.\n\n2005-12-16 18:18:52  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h,\n\timap/message.c, imap/util.c: New new mail detection code. Now we\n\tuse UIDVALIDITY/UIDNEXT to detect whether a mailbox has been\n\tchanged since we last saw it, rather than the more ephemeral\n\tRECENT flag. We also keep a cache of mailboxes we've visited or\n\tcalled STATUS on, which might eventually make for better\n\tinformation in the browser and mailbox views. Big changes,\n\tprobably not stable. IWFM.\n\n2005-12-15 18:59:59  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/message.c: Whitespace shuffling.\n\n\t* imap/command.c, imap/imap.c, imap/imap_private.h, imap/util.c:\n\tUse mutt_buffer_printf in several places instead of a homebrew\n\tversion.\n\n\t* configure.in, m4/funcs.m4, muttlib.c, protos.h: Add\n\tmutt_buffer_printf function, with autoconf test for va_copy.\n\n\t* imap/imap.c: IMAP keepalive might have been interacting badly\n\twith $timeout when IDLE was enabled. Use force option for IDLE too.\n\n2005-12-14 17:29:57  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/auth_sasl.c, imap/command.c, imap/imap_private.h: SASL-IR\n\tsupport for IMAP. The RTT was has begun. I had forgotten how\n\tstrangely convoluted auth_sasl has become though...\n\n2005-12-13 23:37:42  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* mutt_ssl.c, mutt_ssl_gnutls.c: Add conn_poll (using\n\traw_socket_poll) to SSL socket setup functions.\n\n\t* buffy.c: Fix recently-broken buffy notification for IMAP.\n\n\t* imap/imap_private.h, imap/util.c, imap/command.c, imap/imap.c,\n\timap/imap.h, postpone.c: Restore IMAP postponed check in the wake\n\tof the buffy pipelining patch. Fall back to NOOP if IDLE poll\n\tfails. Allow for untagged messages when starting IDLE. Free\n\tidata->cmdbuf in imap_free_idata.\n\n\t* imap/TODO, imap/BUGS: Updated todo/bug list for IMAP\n\n2005-12-12 17:24:12  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/command.c, imap/imap.c, init.h, mutt.h: Add $imap_idle\n\tboolean to disable the IDLE extension (may be needed with some\n\tservers like the particular version of dovecot I tried\n\tyesterday). Don't attempt to poll mailboxes with connections that\n\thaven't yet authenticated. Recognize NO responses again (silly\n\ttypo, spotted by Charlie Allom)\n\n2005-12-12 02:24:43  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* configure.in, imap/command.c, imap/imap.c, imap/imap_private.h,\n\tmutt_socket.c, mutt_socket.h, mutt_tunnel.c: IMAP IDLE support.\n\n\t* buffy.c: Whoops, don't break buffy for non-IMAP mailboxes!\n\n\t* buffy.c, imap/command.c, imap/imap.c, imap/imap.h,\n\timap/imap_private.h, imap/util.c: IMAP command batching code, used\n\tto pipeline mailbox poll requests. Up to 10 poll commands will be\n\tsent at a time (tunable in imap_private.h). This is a huge win on\n\tmy currently awful wireless link. It takes a knife to a lot of\n\tfundamental IMAP code (mostly for the better), so it may have\n\tdestabilised things. Time for some brave (or lazy\n\tnon-Changelog-reading) testers to report... next up, IDLE\n\tsupport.\n                                 \n2005-12-10 07:06:44  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/browse.c, imap/command.c, imap/imap.c, imap/imap_private.h,\n\timap/util.c: Set up a command pipeline. Currently everything still\n\truns a single command from start to finish before moving on, but\n\tthis creates the infrastructure to pipeline mailbox polling\n\tcalls. Bitter experience at the end of a flaky wireless link\n\tteaches me that this can be useful.\n\n\t* imap/auth_anon.c, imap/auth_cram.c, imap/auth_gss.c,\n\timap/auth_sasl.c, imap/browse.c, imap/command.c, imap/imap.c,\n\timap/imap_private.h, imap/message.c, imap/util.c: Move IMAP\n\tresponse buffer out of command into IMAP_DATA. Ironically this is\n\tto prepare for pipelined commands.\n\n2005-11-24 12:50:27  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* curs_main.c, pattern.c: mutt/2142 suggests that the change\n\tfrom pattern.c,3.14 -> 3.15 causes inconsistency and confusion.\n\tReverting the change; adding a helpful message to the status line.\n\n2005-11-22 12:31:58  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* pgp.c: Fix \"mixed messages\" about the success (or not) of\n\tdecrypting PGP messages.\n\n\t* handler.c: Actually, the previous fix for 2139 had a flaw.\n\n\t* handler.c: Fix mutt/2139; also Debian #340116.\n\n2005-11-17 18:40:50  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* menu.c: a not entirely sane state of code.\n\n\t* menu.c: Another stab at #2019.\n\n2005-11-01 08:42:00  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* menu.c: This should be a better patch for the menu break\n\tdance. (#2019)\n\n2005-10-31 11:56:58  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>  (roessler)\n\n\t* imap/message.c: Fix 2119.\n\n2005-10-31 10:51:54  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* mutt_idna.c: Fix the underlying problem behind mutt/2107.\n\n\t* menu.c: Fixing #2019.\n\n\t* flags.c: Fix #2123.\n\n2005-10-21 04:35:38  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* smime.c, attach.c, buffy.c, copy.c, copy.h, crypt-gpgme.c,\n\tcrypt.c, edit.c, handler.c, mbox.c, mutt.h, pager.c, parse.c,\n\tpattern.c, pgp.c, pgpmicalg.c, pgppacket.c, pgppubring.c, pop.c,\n\tpostpone.c, protos.h, sendlib.c: Full large file support. Keep a\n\tclose watch on your mailboxes everyone!\n\n2005-10-18 07:04:50  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2005-10-17 09:14:58  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)\n\n\t* smime.c: Fix S/MIME algorithm choice.\n\n2005-10-14 09:30:11  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* imap/imap.c: Fix imap/2112.\n\n2005-10-10 18:26:31  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* pgp.c: Make PGP decode failure non-fatal when displaying\n\tmessages (as opposed to decode-saving them). I think it would be\n\tnicer to include the original text when decryption fails\n\tthough...\n\n\t* imap/command.c, setenv.c: Accept + as IMAP continuation, not\n\tjust + . May close #2106. Feed check_sec candy in setenv.c.\n\n2005-10-09 20:53:21  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* configure.in: Now that we always check for ncurses/ncurses.h,\n\tremove /usr special case.\n\n\t* configure.in, mutt_curses.h: Tweak ncurses autoconflation to\n\tcheck for ncurses/ncurses.h everywhere, not just in /usr. With\n\t--with-curses=/usr/local, should Close: #2095.\n\n\t* configure.in, setenv.c: Add Russ Allbery's setenv replacement\n\tfunction.\n\n\t* init.h: Correct doc nit for $meta_key, noted by Mark\n\tWeyer. Closes: #2105.\n\n2005-10-06 06:15:00  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* browser.c: Sort browser entries after every IMAP browsing\n\toperation instead of just when explicitly requested. Closes:\n\t#2089.\n\n2005-10-06 05:13:55  Jeff Ito  <jeffi@rcn.com>  (brendan)\n\n\t* smime.c: Add AES ciphers to S/MIME encryption options. Closes:\n\t#2103.\n\n2005-10-05 19:24:40  David Champion  <dgc@uchicago.edu>  (brendan)\n\n\t* doc/manual.xml.head, init.c: Fix 'unattachments'. Closes: #2102.\n\n2005-10-05 19:20:22  Jeff Ito  <jeffi@rcn.com>  (brendan)\n\n\t* smime.c: S/MIME key selection truncates the last character of\n\tthe selected key for no apparent reason. Removed until someone\n\tcan justify it. Closes: #2081.\n\n2005-10-04 19:00:05  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* init.h: Tweak description of pop_checkinterval slightly. Closes:\n\t#2074.\n\n\t* hcache.c: Bump hcache Id for attachment counting patch.\n\n2005-10-04 06:05:39  David Champion  <dgc@uchicago.edu>  (brendan)\n\n\t* Muttrc.head.in, doc/manual.xml.head, doc/muttrc.man.head,\n\tglobals.h, hdrline.c, init.c, init.h, mime.h, mutt.h, parse.c,\n\tpattern.c, protos.h, recvattach.c: Attachment counting for index\n\tdisplay (patch-1.5.11.dgc.attach.6). Modifications: attach_recurse\n\tand attach_ignore_fundamental stripped, some debugging code\n\tremoved, some bones thrown to check_sec.sh.\n\n2005-10-04 05:24:00  Sébastien Hinderer  <Sebastien.Hinderer@libertysurf.fr>  (brendan)\n\n\t* pager.c: The following patch has an effect only when the\n\tbraille_friendly variable is set. When this is the case, the\n\tcursor is put on the first line of the message body, when viewing\n\tit with the pager.\n\n2005-10-04 04:29:09  Alain Bench  <veronatif@free.fr>  (brendan)\n\n\t* curs_main.c: Piping and printing in IMAP folder index with\n\timap_peek=no marks message read immediately.\n\n2005-10-03 07:52:00  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)\n\n\t* curs_lib.c, send.c: fix a problem that appears with signatures\n\twithout newline.\n\n2005-09-30 18:24:17  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/devel-notes.txt: Change manual.sgml to manual.xml (noted\n\tby Alain Bench).\n\n2005-09-30 01:42:50  Roland Rosenfeld  <roland@spinnaker.de>  (brendan)\n\n\t* po/de.po: Update.\n\n2005-09-29 23:57:07  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* po/fr.po: Update.\n\n2005-09-29 23:52:16  pi  <pi@beobide.net>  (brendan)\n\n\t* configure.in, po/eu.po: Basque translation.\n\n2005-09-29 23:02:49  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* configure.in, copy.c, sendlib.c: Ensure that Content-Length\n\tprintf format specifier matches off_t size, to avoid mail-losing\n\tContent-Length: 0 (bug introduced by large file patch a couple\n\tof days ago). Closes: #2096.\n\n2005-09-27 03:43:24  Johan Svedberg  <johan@svedberg.com>  (brendan)\n\n\t* po/sv.po: Update.\n\n2005-09-24 20:03:04  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* edit.c: Inflict more needless pain on translators by splitting\n\tEditorHelp to satisfy -pedantic.\n\n\t* mbox.c, mutt.h, configure.in: Use fseeko/ftello when available\n\twhile opening mbox/mmdf. Closes: #2084.\n\n2005-09-24 19:36:35  Alain Bench  <veronatif@free.fr>  (brendan)\n\n\t* copy.c, mutt.h, parse.c, sendlib.c, thread.c: Cosmetic fixes to\n\tMIME headers. Closes: #2086.\n\n2005-09-24 17:51:17  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (brendan)\n\n\t* po/ja.po: Update to HEAD.\n\n2005-09-23 18:38:36  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (brendan)\n\n\t* configure.in: Quote an error message.\n\n2005-09-22 16:38:08  Takahashi Tamotsu  <ttakah@lapis.plala.or.jp>  (brendan)\n\n\t* configure.in, globals.h, hcache.c, init.h: Update QDBM patch to\n\tthe current state of the art. Closes: #2003 (again).\n\n2005-09-22 09:06:13  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)\n\n\t* send.c: When composing a reply, there might be degenerate cases\n\tin which a CC header is created, but no To header.  In this case,\n\twe now use the auto-generated CC header as the To header.\n\n2005-09-22 04:05:49  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* init.c: Refactor mutt var completion so it can be used for\n\tinline expansions (eg $from). Actual expansion not committed yet.\n\n\t* send.c: If ContentType is null, assume text/plain. Stopgap; a\n\tbetter mechanism would sanity-check MuttVars assignments before\n\tallowing them. Closes: #2080.\n\n\t* imap/util.c, imap/imap.c: Don't allow imap URLs with empty\n\thosts. Also don't attempt to complete on open connections when\n\tthere aren't any (diagnosed by Nico Golde). Closes: #2079.\n\n\t* pattern.c: Use ctx instead of Context when checking whether or\n\tnot to do IMAP search. Resolves a possible segfault in color index\n\t~b operations. I can't remember whether Context vs ctx was\n\tintentional - I doubt it.\n\n2005-09-21 14:17:14  Adeodato Simo  <asp16@alu.ua.es>  (brendan)\n\n\t* curs_main.c: Check for sigwinch in index before calling\n\tkm_dokey, since for unknown reasons km_dokey seems to eat the\n\tsignal in some cases. [Not reproducible in my ncurses environments\n\t- Brendan]. Closes: #1907.\n\n2005-09-21 13:23:43  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c, pattern.c: Catch empty substring/regexp search\n\targuments (precludes a segfault from dereferencing a null string\n\tpointer later).\n\n2005-09-21 06:04:37  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>  (roessler)\n\n\t* init.h, mutt.h, configure.in, hcache.c: QDBM support for the\n\theader cache.\n\n2005-09-21 04:50:31  Adeodato Simo  <asp16@alu.ua.es>  (brendan)\n\n\t* pgp.c: When using GPG agent in classic mode, set GPG_TTY if it\n\tisn't already set instead of bailing out. Closes: #2072.\n\n2005-09-21 03:48:38  Takahashi Tamotsu  <ttakah@lapis.plala.or.jp>  (brendan)\n\n\t* init.c: Ensure that set doesn't change variables from within the\n\thelp screen. I think this is a gross approach, and probably\n\toverkill, but it's the fault of the original code design, not\n\tTamo's patch. Until a better way falls from the sky, this Closes:\n\t#2011.\n\n2005-09-21 02:58:07  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* curs_main.c: Cancelling <change-folder> from within the pager\n\twill now keep you in the pager rather than kicking you back to the\n\tindex. Closes: #2075.\n\n2005-09-20 23:41:21  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* muttlib.c: Slight improvement on dgc's warning fix in edge cases.\n\n2005-09-20 06:43:39  David Champion  <dgc@uchicago.edu>  (brendan)\n\n\t* init.c: Fix a null-pointer-dereference parsing aliases with\n\t-d3+.\n\n\t* muttlib.c: Clear a compiler warning.\n\n2005-09-20 03:56:25  Gero Treuner  <gerotick@faveve.uni-stuttgart.de>  (brendan)\n\n\t* contrib/gpg.rc, doc/manual.xml.tail: Update locations of\n\tgpg-2comp, Gero Treuner.\n\n2005-09-19 06:14:27  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* mkchangelog.sh: I just realised what's been happening to the\n\tchangelog: I recently got a new version of 'head' that refuses\n\tto accept -1 instead of -n 1, but doesn't actually return\n\tfailure. So mkchangelog was feeding nothing to the cvs date\n\targument, and instead merrily snarfing down the entire changelog\n\tevery time. I've put in a simple $date != \"\" check. Thanks,\n\ttextutils!  Thanks for ushering in the future! I'd like to shake\n\tyour hand. Hard.\n\n2005-09-19 05:12:29  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/manual.xml.head: Remove mention of obsolete\n\t--enable-imap-edit-threads configure option.\n\n2005-09-18 17:49:33  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* ChangeLog: Somehow the changelog got mangled (multiple copies\n\tof large parts).\n\n2005-09-18 08:22:49  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)\n\n\t* po/ru.po: update\n\n2005-09-18 02:53:18  brendan  (brendan)\n\n\t* doc/Makefile.in: More cleanups, slightly better dependencies.\n\n2005-09-18 02:35:10  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/Makefile.in: Stupid hack to synchronise on makedoc for\n\tparallel builds. Only works when entered via make all. make\n\tstamp-doc-xml directly can fail in pathological conditions.\n\n\t* doc/Makefile.in: Attempt to work around make -j2\n\tbreakage. Dependencies are still wrong, but I don't have\n\tthe brainpower right now to get it right. People talk about\n\timperative, functional, and logic programming, but no one ever\n\tmentions make programming.\n\n2005-09-17 20:46:14  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po, po/tr.po,\n\tpo/uk.po, po/zh_CN.po, po/zh_TW.po, po/ga.po, po/gl.po,\n\tpo/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, po/lt.po,\n\tpo/nl.po, po/pl.po, intl/plural.y, intl/ref-add.sin,\n\tintl/ref-del.sin, intl/textdomain.c, po/bg.po, po/ca.po,\n\tpo/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po, po/es.po,\n\tpo/et.po, po/fr.po, doc/dotlock.man, doc/manual.xml.head,\n\tdoc/mutt.man, doc/muttbug.man, doc/muttrc.man.head,\n\timap/auth.c, imap/auth.h, imap/auth_anon.c, imap/auth_cram.c,\n\timap/auth_gss.c, imap/auth_login.c, imap/auth_sasl.c,\n\timap/browse.c, imap/command.c, imap/imap.c, imap/imap.h,\n\timap/imap_private.h, imap/message.c, imap/message.h, imap/utf7.c,\n\timap/util.c, intl/COPYING.LIB-2, intl/COPYING.LIB-2.1,\n\tintl/Makefile.in, intl/bindtextdom.c, intl/config.charset,\n\tintl/dcgettext.c, intl/dcigettext.c, intl/dcngettext.c,\n\tintl/dgettext.c, intl/dngettext.c, intl/explodename.c,\n\tintl/finddomain.c, intl/gettext.c, intl/gettext.h,\n\tintl/gettextP.h, intl/hash-string.h, intl/intl-compat.c,\n\tintl/l10nflist.c, intl/libgettext.h, intl/libgnuintl.h,\n\tintl/libintl.glibc, intl/loadinfo.h, intl/loadmsgcat.c,\n\tintl/localcharset.c, intl/locale.alias, intl/localealias.c,\n\tintl/ngettext.c, intl/plural.c, pgpkey.c, pgplib.c, pgplib.h,\n\tpgpmicalg.c, pgppacket.c, pgppacket.h, pgppubring.c, pop.c,\n\tpop.h, pop_auth.c, pop_lib.c, postpone.c, protos.h, query.c,\n\trecvattach.c, recvcmd.c, regex.c, remailer.c, remailer.h,\n\tresize.c, rfc1524.c, rfc1524.h, rfc2047.c, rfc2047.h, rfc2231.c,\n\trfc2231.h, rfc822.c, rfc822.h, score.c, send.c, sendlib.c,\n\tsignal.c, smime.c, smime.h, smime_keys.pl, sort.c, sort.h,\n\tstatus.c, system.c, thread.c, url.c, browser.h, buffy.c, buffy.h,\n\tcharset.c, charset.h, color.c, commands.c, complete.c, compose.c,\n\tconfig.guess, config.sub, copy.c, copy.h, crypt-gpgme.c,\n\tcrypt-gpgme.h, crypt-mod-pgp-classic.c, crypt-mod-pgp-gpgme.c,\n\tcrypt-mod-smime-classic.c, crypt-mod-smime-gpgme.c, crypt-mod.c,\n\tcrypt-mod.h, crypt.c, cryptglue.c, curs_lib.c, curs_main.c,\n\tdate.c, depcomp, dotlock.c, dotlock.h, edit.c, editmsg.c,\n\tenter.c, extlib.c, filter.c, flags.c, from.c, functions.h,\n\tglobals.h, gnupgparse.c, handler.c, hash.c, hash.h, hcache.c,\n\thdrline.c, headers.c, help.c, history.c, history.h, hook.c,\n\tinit.c, init.h, keymap.c, keymap.h, lib.c, lib.h, mailbox.h,\n\tmain.c, makedoc.c, mapping.h, mbox.c, mbyte.c, menu.c,\n\tmh.c, mime.h, missing, mutt.h, mutt_crypt.h, mutt_curses.h,\n\tmutt_idna.c, mutt_idna.h, mutt_menu.h, mutt_regex.h, mutt_sasl.c,\n\tmutt_sasl.h, mutt_socket.c, mutt_socket.h, mutt_ssl.c, mutt_ssl.h,\n\tmutt_ssl_gnutls.c, mutt_tunnel.c, mutt_tunnel.h, muttbug.sh.in,\n\tmuttlib.c, mx.c, mx.h, pager.c, pager.h, parse.c, pattern.c,\n\tpgp.c, pgp.h, pgpinvoke.c, COPYRIGHT, _regex.h, account.c,\n\taccount.h, addrbook.c, alias.c, ascii.c, ascii.h, attach.c,\n\tattach.h, base64.c, browser.c: Gah, forgot the zip code when\n\tupdating the FSF address...\n\n\t* po/zh_CN.po, po/zh_TW.po, po/tr.po, po/uk.po, po/sk.po,\n\tpo/sv.po, po/ru.po, po/pt_BR.po, po/nl.po, po/pl.po, po/ko.po,\n\tpo/lt.po, po/ja.po, po/id.po, po/it.po, po/ga.po, po/gl.po,\n\tpo/hu.po, po/et.po, po/fr.po, po/eo.po, po/es.po, po/de.po,\n\tpo/el.po, po/da.po, imap/imap.h, imap/imap_private.h,\n\timap/message.c, imap/message.h, imap/utf7.c, imap/util.c,\n\tintl/COPYING.LIB-2, intl/Makefile.in, intl/bindtextdom.c,\n\tintl/config.charset, intl/dcgettext.c, intl/dcigettext.c,\n\tintl/dcngettext.c, intl/dgettext.c, intl/dngettext.c,\n\tintl/explodename.c, intl/finddomain.c, intl/gettext.c,\n\tintl/gettext.h, intl/gettextP.h, intl/hash-string.h,\n\tintl/intl-compat.c, intl/l10nflist.c, intl/libgettext.h,\n\tintl/libgnuintl.h, intl/libintl.glibc, intl/loadinfo.h,\n\tintl/loadmsgcat.c, intl/localcharset.c, intl/locale.alias,\n\tintl/localealias.c, intl/ngettext.c, intl/plural.c, intl/plural.y,\n\tintl/ref-add.sin, intl/ref-del.sin, intl/textdomain.c, po/bg.po,\n\tpo/ca.po, po/cs.po, doc/dotlock.man, doc/manual.xml.head,\n\tdoc/mutt.man, doc/muttbug.man, doc/muttrc.man.head, imap/auth.c,\n\timap/auth.h, imap/auth_anon.c, imap/auth_cram.c, imap/auth_gss.c,\n\timap/auth_login.c, imap/auth_sasl.c, imap/browse.c,\n\timap/command.c, imap/imap.c, rfc2047.h, rfc2231.c, rfc2231.h,\n\trfc822.c, rfc822.h, score.c, send.c, sendlib.c, signal.c,\n\tsmime.c, smime.h, smime_keys.pl, sort.c, sort.h, status.c,\n\tsystem.c, thread.c, url.c, query.c, recvattach.c, recvcmd.c,\n\tregex.c, remailer.c, remailer.h, resize.c, rfc1524.c,\n\trfc1524.h, rfc2047.c, pager.h, parse.c, pattern.c, pgp.c,\n\tpgp.h, pgpinvoke.c, pgpkey.c, pgplib.c, pgplib.h, pgpmicalg.c,\n\tpgppacket.c, pgppacket.h, pgppubring.c, pop.c, pop.h,\n\tpop_auth.c, pop_lib.c, postpone.c, protos.h, mbyte.c, menu.c,\n\tmh.c, mime.h, missing, mutt.h, mutt_crypt.h, mutt_curses.h,\n\tmutt_idna.c, mutt_idna.h, mutt_menu.h, mutt_regex.h, mutt_sasl.c,\n\tmutt_sasl.h, mutt_socket.c, mutt_socket.h, mutt_ssl.c, mutt_ssl.h,\n\tmutt_ssl_gnutls.c, mutt_tunnel.c, mutt_tunnel.h, muttbug.sh.in,\n\tmuttlib.c, mx.c, mx.h, pager.c, extlib.c, filter.c, flags.c,\n\tfrom.c, functions.h, globals.h, gnupgparse.c, handler.c, hash.c,\n\thash.h, hcache.c, hdrline.c, headers.c, help.c, history.c,\n\thistory.h, hook.c, init.c, init.h, keymap.c, keymap.h, lib.c,\n\tlib.h, mailbox.h, main.c, makedoc.c, mapping.h, mbox.c,\n\tdotlock.h, edit.c, editmsg.c, enter.c, copy.h, crypt-gpgme.c,\n\tcrypt-gpgme.h, crypt-mod-pgp-classic.c, crypt-mod-pgp-gpgme.c,\n\tcrypt-mod-smime-classic.c, crypt-mod-smime-gpgme.c, crypt-mod.c,\n\tcrypt-mod.h, crypt.c, cryptglue.c, curs_lib.c, curs_main.c,\n\tdate.c, depcomp, dotlock.c, COPYRIGHT, GPL, _regex.h, account.c,\n\taccount.h, addrbook.c, alias.c, ascii.c, ascii.h, attach.c,\n\tattach.h, base64.c, browser.c, browser.h, buffy.c, buffy.h,\n\tcharset.c, charset.h, color.c, commands.c, complete.c, compose.c,\n\tconfig.guess, config.sub, copy.c: Update FSF address (via sed,\n\tI hope nothing got mangled). Closes: #2071.\n\n2005-09-17 17:39:18  Alain Bench  <veronatif@free.fr>  (brendan)\n\n\t* Muttrc.head.in: Clean up some Muttrc macros, and add macro\n\t'y' to jump to the mailboxes view. Closes: #2069.\n\n2005-09-17 17:27:54  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* main.c: Some minor cleanups: tell users to go to bugs.mutt.org\n\tinstead of using flea; update copyright year in mutt -v;\n\treorganise USE opts a little; break long strings so that -pedantic\n\tstops complaining. Not sure that last one is worth the trouble\n\tit causes the po team...\n\n2005-09-17 01:07:54  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* po/fr.po: Update.\n\n2005-09-16 23:09:12  Kevin Scannell  <scannell@slu.edu>  (brendan)\n\n\t* configure.in, po/ga.po: Irish translation.\n\n2005-09-16 15:20:59  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* build-release, po/Makefile.in.in: Move update-po out of make\n\tdist, into build-release. It seems to me that make dist should do\n\tas little as possible beyond putting the right files in a tarball.\n\n2005-09-16 13:43:58  Ronny Haryanto  <ronnylist@haryan.to>  (roessler)\n\n\t* po/id.po: update\n\n2005-09-16 11:02:00  Ivan Vilata i Balaguer  <ivan@selidor.net>\n(roessler)\n\n\t* po/ca.po: update\n\n2005-09-16 10:20:20  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* po/ja.po: update\n\n2005-09-16 10:19:46  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* po/nl.po: update\n\n2005-09-16 02:15:45  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/Makefile.in: Add stamp-doc-xml to \"all\".\n\n\t* doc/Makefile.in: stamp-doc-man is pointless as far as I can\n\ttell. Removed.\n\n\t* doc/Makefile.in: Tweak makefile so that the dist tarball\n\tdoesn't always try to build docs.\n\n\t* configure.in: VERSION should go into CONFIG_STATUS_DEPENDENCIES,\n\tnot CONFIGURE_DEPENDENCIES. Slap ma fro.\n\n2005-09-15 23:18:48  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* Makefile.am, build-release: Move changelog target to\n\tupdate-changelog so that dist won't automatically invoke it,\n\tand have commit and build-release call it.\n\n\t* build-release: Now that 1.5.11 is out, previous versions won't\n\tbe x.y.zi: adjust diff.\n\n2005-09-15 14:24:39  roessler  (roessler)\n\n\t* po/zh_TW.po, po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po,\n\tpo/eo.po, po/es.po, po/et.po, po/fr.po, po/gl.po, po/hu.po,\n\tpo/id.po, po/it.po, po/ja.po, po/ko.po, po/lt.po, po/nl.po,\n\tpo/pl.po, po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po, po/tr.po,\n\tpo/uk.po, po/zh_CN.po, VERSION, po/bg.po, reldate.h: automatic\n\tpost-release commit for mutt-1.5.11\n\n2005-09-14 14:15:06  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* init.h: Refer to $use_envelope_from rather than old\n\t$envelope_from in description of $envelope_from_address.\n\n2005-09-14 02:45:44  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* globals.h, init.h, sendlib.c: Add new $envelope_from_address\n\tvariable for manually specifying the envelope sender. Rename (with\n\tcompatibility synonym) $envelope_from to $use_envelope_from. Make\n\t$envelope_from subordinate to $use_e_f, as $from is to\n\t$use_from. From a discussion with TLR.\n\n2005-09-13 20:36:17  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/Makefile.in: Put chunked HTML manual in top doc directory\n\tinstead of HTML subdirectory.  Solves a weird $distdir\n\tabsolute/relative path nuisance.\n\n2005-09-12 06:22:21  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* curs_lib.c, pop.c, pop.h, pop_lib.c: Teach pop driver about\n\tmutt_progress_bar. Allow progress bar to omit total size if zero\n\t(=unknown).\n\n2005-09-10 18:47:17  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* menu.c: Correct some inconsistencies introduced by\n\t$menu_context. Closes: #2019?\n\n2005-09-10 06:02:04  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c, curs_lib.c: A pair of small optimisations to the\n\tprogress bar.\n\n2005-09-08 16:37:59  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* pager.c: Revert bogus change to last message detection in\n\tmutt_pager.\n\n\t* pager.c: Forget line number when resolving in pager. This\n\tis beginning to get messy - maybe it would be better to only\n\tremember on specific operations like sync.\n\n\t* mutt_socket.c: Set CLOEXEC on sockets in IPv4 code path like\n\twe do in IPv6.\n\n\t* pattern.c: Make stringmatch pattern detection stateless.\n\n\t* curs_lib.c: ifdef USE_SOCKET around mutt_progress_bar.\n\n2005-09-08 07:09:46  Bernd Ahlers  <bernd@ba-net.org>  (brendan)\n\n\t* po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po, po/it.po, po/ja.po, po/ko.po, po/lt.po, po/nl.po,\n\tpo/pl.po, po/pt_BR.po, po/ru.po, po/da.po, po/de.po, po/el.po,\n\tpo/eo.po, po/es.po, po/et.po, po/fr.po, po/gl.po, po/hu.po,\n\tpo/id.po, po/ca.po, po/cs.po: Correct some S/MIME po entries.\n\n2005-09-07 08:01:59  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* curs_lib.c: Ensure progress bar rounds to $net_inc.\n\n\t* curs_lib.c, globals.h, imap/imap.c, imap/imap_private.h,\n\timap/message.c, init.h, mutt_curses.h: Display progress meter\n\twhen uploading/fetching IMAP data. Closes: #1772.\n\n\t* pager.c: Adjust gross hack to return to the same line in the\n\tpager after an index operation so that it doesn't shoot past the\n\tend of the file if there are fewer lines on return (eg when weed\n\tis set).\n\n\t* mx.c, pgp.c: Silence some GCC warnings about uninitialized\n\tvariables.\n\n\t* build-release, configure.in, mutt.h: Remove international\n\tvs. U.S. distribution distinction. build-release expects the\n\tprevious version to be x.y.zi and should be updated again\n\tfor 1.5.12.\n\n2005-09-06 16:46:44  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/manual.xml.head: More documentation cosmetics (newlines\n\tbetween Usage: lines).\n\n\t* pager.c: Gross hack to return to the same line in the pager\n\tafter executing an index function. Closes: #1210.\n\n\t* doc/manual.xml.head, imap/command.c, imap/imap.c, imap/imap.h,\n\tinit.c, mutt.h, pattern.c: Extend pattern language to do simple\n\tstring matches as well as regular expressions when the pattern\n\tis invoked with = instead of ~. And, when possible, perform\n\tfull body searches on the IMAP server instead of locally, for\n\tan enormous speed boost.\n\n\t* imap/utf7.c, init.c, main.c, protos.h: Fix a memory leak in\n\timap_utf7_decode and do a little cleanup on shutdown.  Get a\n\thigh five from valgrind.\n\n\t* curs_main.c, main.c: Move SASL and IMAP shutdown hooks into\n\tmain where they belong.\n\n\t* init.c: Release pwent after extracting data from it.\n\n\t* mutt_sasl.h, curs_main.c, mutt_sasl.c: Release global SASL\n\tstate when quitting.\n\n2005-09-05 04:22:45  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/manual.xml.head: Documentation cosmetics (add some line\n\tbreaks).\n\n2005-09-04 20:10:25  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* init.h: Point $hide_top_limited to $hide_limited instead of\n\t$hide_missing. Likewise for $hide_top_missing. Closes: #2039.\n\n\t* init.h: Mention $sort_re in $strict_threads\n\tdocumentation. Closes: #2052.\n\n\t* doc/manual.xml.head: Add a push example. Closes: #1591.\n\n2005-09-04 19:46:26  Rupert Levene  <rupert@levene.dyndns.org>\t(brendan)\n\n\t* doc/manual.xml.head: Mention $include when describing how mutt\n\tprepares message replies. Closes: #1471.\n\n2005-09-04 19:28:19  Dale Woolridge  (brendan)\n\n\t* pattern.c, protos.h, parse.c: Unfold message headers before\n\tperforming ~h search. Closes: #1865.\n\n2005-09-04 18:01:57  Zardoz@users.sourceforge.net  (brendan)\n\n\t* keymap.c: Teach keymap.c about KEY_NEXT. Closes: #1588.\n\n2005-09-04 06:57:04  Alain Bench  <veronatif@free.fr>  (brendan)\n\n\t* doc/manual.xml.head, doc/manual.xml.tail: Note that <Tab>\n\tis bound to next-new-then-unread by default, rather than\n\tnext-new. Closes: #1637.\n\n\t* curs_main.c, pattern.c: Allow empty limits, and limits in\n\tempty mailboxes. Closes: #1853, #1906.\n\n2005-09-03 23:22:31  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* send.c, attach.c: Note when mutt_edit_attachment fails and\n\tdisplay error instead of prompting to abort an unmodified\n\tfile. Closes: #2051.\n\n2005-09-03 19:41:53  Alain Bench  <veronatif@free.fr>  (brendan)\n\n\t* contrib/gpg.rc: One should let GnuPG charset be automatically\n\tinfered from whatever current locale, without hardcoding.\n\n2005-09-03 04:34:25  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/manual.xml.head: Just use EXPR as a place holder for regular\n\texpressions, instead of any of EXPR, USER, ID and SUBJECT. Noted\n\tby Vincent Lefevre.\n\n2005-09-02 18:50:34  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/manual.sgml.head, doc/manual.sgml.tail, doc/manual.xml.head,\n\tdoc/manual.xml.tail, doc/Makefile.in: Rename manual.sgml.*\n\tto manual.xml.*.\n\n2005-09-02 18:18:19  Alain Bench  <veronatif@free.fr>  (brendan)\n\n\t* keymap.c: Allow non-ascii characters in push arguments. Closes:\n\t#2023.\n\n\t* doc/manual.sgml.head, doc/muttrc.man.head, mutt.h, pattern.c:\n\tAdjust ~l to match all known lists, add ~u to match only\n\tsubscribed lists.  Normalise pattern ordering in docs. Closes:\n\t#2050.\n\n2005-09-01 17:07:14  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* configure.in, imap/auth_sasl.c, main.c, mutt_sasl.c,\n\tmutt_sasl.h, pop_auth.c: Remove obsolete Cyrus SASL 1.5 support.\n\n\t* doc/chunk.xsl, doc/html.xsl: Docbook support files, dropped\n\tin the initial commit.\n\n\t* doc/manual.sgml.tail, configure.in, doc/Makefile.in,\n\tdoc/manual.sgml.head, makedoc.c: Convert documentation from\n\tlinuxdoc to docbook format. Let the bug avalanche begin.\n\n2005-08-30 21:34:36  Lars Hecking  <lhecking@users.sourceforge.net>\n(brendan)\n\n\t* configure.in: Don't define domain=\"no\" when configured\n\t--without-domain. Closes: #2046.\n\n2005-08-24 15:17:43  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* pgp.c: Don't treat PGP inline signature verification errors\n\tas fatal.\n\n2005-08-22 20:30:11  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* pgp.c: Pause after error message if PGP decode fails, in case\n\tmutt_copy_message overwrites.  Real error handling cleanup will\n\thave to wait...\n\n\t* pgp.c: Don't attempt to manipulate null pgp output file handles.\n\n2005-08-16 18:10:11  Paul Walker  <paul@black-sun.demon.co.uk>\t(brendan)\n\n\t* doc/manual.sgml.head, doc/mutt.man, main.c: -D dumps to stdout,\n\tnot stderr.\n\n2005-08-15 08:10:48  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* po/id.po: Fix \\n mismatch.\n\n2005-08-15 08:07:36  Ronny Haryanto  <ronnylist@haryan.to>  (roessler)\n\n\t* po/id.po: update\n\n2005-08-15 08:06:40  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)\n\n\t* po/ru.po: update\n\n2005-08-14 21:32:17  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* attach.c, send.c: Don't pass an empty filename to the default\n\ttext editor when editing non-plain text. Also don't clobber\n\t$content_type when parsing it.\tCloses: #2038.\n\n2005-08-14 12:28:52  Roland Rosenfeld  <roland@spinnaker.de>  (roessler)\n\n\t* po/de.po: update\n\n2005-08-14 02:22:47  Bernd Ahlers  <bernd@ba-net.org>  (brendan)\n\n\t* cryptglue.c, mutt_sasl.c, smime.c: Fix some S/MIME spelling\n\tinconsistencies.\n\n2005-08-12 23:06:25  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* mutt_ssl_gnutls.c: Turn off input buffering for gnutls SSL\n\tcertificate menu, as we do in the openssl version.\n\n\t* imap/auth_sasl.c: Override SASL initial response if the server\n\tspoke first in its continuation response. Closes: #2034.\n\n\t* doc/Makefile.in: Degnuify mutt.1 make rule. Imagining a world\n\tin which gnu documentation flagged any extensions to standard\n\tutilities almost makes me cry.\n\n2005-08-12 12:52:11  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* po/ja.po: update\n\n2005-08-12 07:49:37  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: Update.\n\n2005-08-12 03:57:16  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* configure.in: Force configure to depend on VERSION. That's\n\tbeen bugging me for a while.\n\n2005-08-11 21:46:26  roessler  (roessler)\n\n\t* po/pl.po, po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po, po/tr.po,\n\tpo/uk.po, po/zh_CN.po, po/zh_TW.po, po/bg.po, po/ca.po, po/cs.po,\n\tpo/da.po, po/de.po, po/el.po, po/eo.po, po/es.po, po/et.po,\n\tpo/fr.po, po/gl.po, po/hu.po, po/id.po, po/it.po, po/ja.po,\n\tpo/ko.po, po/lt.po, po/nl.po: automatic post-release commit\n\tfor mutt-1.5.10\n\n2005-08-11 21:22:41  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am, VERSION, reldate.h: Fix Makefile.am.\n\n2005-08-11 21:16:38  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* copy.c, crypt-gpgme.c, crypt-gpgme.h, crypt-mod-pgp-classic.c,\n\tcrypt-mod-pgp-gpgme.c, crypt-mod-smime-classic.c,\n\tcrypt-mod-smime-gpgme.c, crypt-mod.h, crypt.c, cryptglue.c,\n\thandler.c, mutt_crypt.h, pgp.c, pgp.h, protos.h, smime.c, smime.h:\n\tAdd error results to mutt_body_handlers, and check them when\n\tdoing decode-save. Closes: #1919.\n\n2005-08-11 21:08:55  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c: Fix verification of clearsigned PGP messages.\n\t(debugged on IRC, mostly by Brendan)\n\n2005-08-11 02:15:14  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(brendan)\n\n\t* configure.in: Don't test against nonexistent cache\n\tvariable. Spotted by Torsten Veller.\n\n2005-08-11 01:44:49  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* mutt_sasl.c: Silence some compiler warnings.\n\n2005-08-09 20:13:03  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/Makefile.in, doc/manual.sgml.tail: Replace raw latin1\n\tcharacters with entities, and enable latin output for\n\tmanual.txt. I'm not sure this is ideal for non-latin (eg\n\tutf8) environments, but hopefully docbook will resolve this\n\tanyway. Closes: #2029.\n\n\t* doc/manual.sgml.head: Replace free ~ with &tilde;. Closes:\n\t#2030.\n\n\t* pgp.c: Move pgp failure check inside the if (invoke pgp)\n\tblock. Should really Close: 2032.\n\n\t* pgp.c: Don't ftell pgp output file if there isn't one. Closes:\n\t#2032.\n\n2005-08-09 16:24:15  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* crypt-gpgme.c: Improve translatability of crypt-gpgme. Closes:\n\t#2020.\n\n2005-08-09 16:10:40  Mads Martin Joergensen  <mmj@suse.de>  (brendan)\n\n\t* copy.c: Remove an unneeded cast, which introduces\n\ttype-punning. Modified to use FREE instead of safe_free, since\n\tthat seems to be the convention. I personally don't see the point.\n\n2005-08-08 18:59:43  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* mutt_socket.c: Pause for a moment when a hostname fails to\n\tresolve. Closes #1942.\tThere are a number of cases where mutt\n\tcascades error messages. It might be nice if there were an error\n\tstack so that low level functions could push_error instead of\n\tdisplaying it right away, and the higher level ones could eg\n\tmutt_message(_(\"Failed to write FCC: %s\"), pop_error ())...\n\n\t* main.c: Document -d option in mutt -h output. Closes #2027.\n\n\t* init.h: Remove undefined reference to unmailboxes\n\tcommand. Closes #2028.\n\n\t* imap/imap.c: Fix edge case where we might have to wait two\n\ttimeouts to check for IMAP mail.\n\n\t* imap/command.c, imap/imap.c, init.h: Fix bug just introduced\n\tin lsub parsing that could cause mutt to loop indefinitely.\n\tDon't recheck subscriptions at every mailbox change, just the\n\tinitial connection.\n\n\t* imap/imap.c: If imap_check_subscribed is set, mailbox or\n\tunmailbox folders in response to subscribe/unsubscribe commands\n\tin the browser.\n\n2005-08-07 23:52:08  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/browse.c, imap/command.c, imap/imap.c, init.h, mutt.h:\n\tNew option: $imap_check_subscribed. If set, mutt will fetch the\n\tset of subscribed mailboxes from the server and add them to the\n\tbuffy list.\n\n\t* browser.c: Avoid a segfault attempting to browse an invalid\n\tIMAP URL.\n\n\t* imap/imap.c: Extend IMAP host completion to complete over open\n\tconnections. Next up: account and folder hooks.\n\n\t* imap/imap.c: Allow IMAP tab-completion to complete over\n\tdefined mailboxes, saving a bunch of typing for the hostname\n\tpart of the URL. Should probably be extended to complete over\n\topen connections and possibly also folder/account hooks.\n\n\t* account.c, curs_lib.c, protos.h: Reuse mutt_get_field for\n\tmutt_get_field_unbuffered.\n\n2005-08-07 06:20:37  Anders Helmersson\n<anders.helmersson.utsikt@wasadata.net>  (brendan)\n\n\t* pager.c: Certain versions of libc may segfault during regex\n\tprocessing if given incomplete multibyte characters. Work around\n\tthis by manually trimming the display buffer. I modified it\n\tsomewhat to only check when the situation is most likely to occur:\n\tfgets has read all the way to the capacity of the buffer. Thanks\n\talso to Tamo for his comments.\n\n2005-08-07 04:58:12  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* account.c, curs_lib.c, protos.h: Make username prompts\n\tunbuffered like password prompts are (no more folder-hook push\n\tgarbage)\n\n2005-08-06 22:20:55  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c, lib.c, lib.h, mutt.h, mutt_tunnel.c, sendlib.c:\n\tReport non-zero exit status of tunnel command. Closes: #1749.\n\n\t* imap/imap.c, imap/util.c, init.h, mutt.h, pop_lib.c: Replace\n\tpointless imap_force_ssl option with ssl_force_tls, which\n\trequires any connection (POP or IMAP) to a remote server to\n\tbe encrypted, and attempts to negotiate encryption even if the\n\tcapability isn't advertised (this last bit is of dubious utility,\n\tbut essentially harmless since the connection would otherwise\n\tfail anyway). Closes: #1284.\n\n\t* imap/browse.c: Kill a warning.\n\n\t* init.c: Use isalnum instead of isalpha when parsing unbraced\n\tenvironment variable names, per tamo's suggestion. Closes #2022.\n\n2005-08-05 02:16:46  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* attach.c, attach.h, browser.c, curs_main.c, mutt.h, mutt_menu.h,\n\tpager.h, protos.h: Move some attachment-related prototypes and\n\tstructures into attach.h from the global headers. A small step\n\ttowards sane dependency tracking and code cleanliness.\n\n2005-08-04 01:15:52  brendan  (brendan)\n\n\t* compose.c: Don't unlink non-mutt files that would have been\n\tunlinked on send if the message is cancelled.\n\n2005-08-03 15:34:14  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* account.c: Fix C precedence buglet in getlogin preventing it\n\tfrom actually calling getuser.\n\n\t* mutt_ssl.c: Don't double-free X509 certificates. This patch\n\tlooks wrong, but it isn't.\n\n2005-08-02 18:15:33  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* Makefile.am, po/Makefile.in.in, po/POTFILES.in: Remove\n\tmutt_ssl_nss.c from POTFILES.in. Also hack the makefiles to build\n\tkeymap_alldefs.h in $(top_srcdir), since that's where xgettext\n\tlooks. Not super clean I guess - the other alternative is to\n\tsed POTFILES.\n\n\t* globals.h, init.c, init.h, mutt.h, mutt_sasl.c, mutt_socket.c,\n\tmutt_ssl.h, mutt_ssl_nss.c, pop_lib.c, configure.in: Put moribund\n\tNSS support out to pasture.\n\n\t* compose.c, mutt.h: In compose menu, detach should be able to\n\tunlink files generated by mutt, but not files that existed before.\n\n\t* commands.c, pgp.c: More fiddling with PGP results. When\n\trerunning PGP on a message, clear old security result bits to\n\tavoid confusing messages like 'decrypt failed; PGP signature\n\tsuccessfully verified'.\n\n\t* pgp.c: Forget passphrase on PGP/inline decryption error,\n\tand improve status line messages.\n\n\t* configure.in: Make $docdir relative to $prefix, like the\n\tother prefixes.\n\n\t* contrib/Makefile.in, doc/Makefile.in: Be more selective about\n\twhat to remove during uninstall. (closes #1625)\n\n\t* pgp.c: Also forget passphrase when encrypt fails, if\n\tsigning. (closes #1025 again)\n\n\t* imap/message.c: Check that the entire message downloaded\n\tsuccessfully on fetch, and don't treat a disappearing cache file\n\tas fatal. (closes #1483)\n\n\t* compose.c: Don't unlink attachments that you've decided not\n\tto send. (closes #1328)\n\n\t* pgp.c: Bump up size of PgpPass to 1024 from 256. Seems crazy,\n\tbut it's harmless and it (closes #1207).\n\n\t* account.c: Fix password prompt for POP (more authentication\n\tID fallout).\n\n2005-08-01 22:37:22  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/manual.sgml.head: Document <backtab> key.\n\n\t* pgp.c: Automatically forget PGP passphrase on sign or decrypt\n\terror. (closes #1025)\n\n\t* pgp.c: Display \"successfully decrypted\" message instead of\n\tnothing. Superseded by signature verification.\n\n\t* commands.c, pgp.c: Don't report PGP signature could not be\n\tverified unless there really is a signature verification problem\n\t(not some other PGP error).\n\n\t* Makefile.am: Install system muttrc from the build directory,\n\tnot the source directory.\n\n\t* mbox.c: Restore Sort immediately after sorting by mailbox\n\torder in mbox_sync_mailbox.  (closes #972)\n\n\t* doc/Makefile.in, doc/mutt.man: Insert compile-time paths to\n\tsystem resources into mutt.man. (closes #854)\n\n\t* commands.c, protos.h: Report errors occuring in\n\t_mutt_save_message. (closes #847)\n\n\t* globals.h, mutt.h, mutt_ssl.c, muttlib.c: Cache SSL certificates\n\tthat have been accepted but not saved until mutt exits. (closes\n\t#643).\tCreate mutt_add_list_n for adding non-character data to\n\tlists, have mutt_add_list call it.\n\n\t* mx.c: Report error creating FCC when writing to IMAP\n\tserver. Addresses #423.\n\n\t* init.c: complete :set mbox_type=<tab>. (closes #1649)\n\n2005-07-30 04:40:45  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* pager.c: The builtin pager tries to wrap a line for ever if:\n\t0) the line contains a space or a tab character\n\t followed by a very long word, and 1) M_PAGER_NSKIP flag is\n\tpassed to it, and 2) $smart_wrap is set. (default)\n\n2005-07-30 04:13:07  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* curs_main.c, pager.c: When using colors, the status line of\n\tthe index is displayed in a >bright color, even when the prefix\n\t\"bright\" is *not* given in the foreground color. The problem\n\toccurs when I have the following additional line:\n\t  color normal brightwhite black The problem is that BKGDSET's\n\tare missing.\n\n2005-07-30 03:59:04  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* recvattach.c: Don't refuse to delete attachments just because a\n\tmessage has been checked for \"traditional\" PGP encoding. (closes\n\t#2013)\n\n2005-07-29 18:05:50  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* init.c: \"nospam foo\" causes a segv if you have not set any\n\t\"spam\", because of a null pointer dereference.\n\n2005-07-29 06:45:14  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* mutt_ssl_gnutls.c: Tweak a poorly-worded error message in the\n\tgnutls glue, pointed out by Vincent Lefevre.\n\n\t* imap/imap.c: Fix bug added in revision 3.26, where\n\timap_sync_mailbox failed to check whether it was supposed to\n\texpunge before issuing a CLOSE.\n\n2005-07-28 20:42:45  ttakah@lapis.plala.or.jp  (roessler)\n\n\t* crypt-gpgme.c: Fix mutt/2004; S/MIME user interface differences\n\tbetween GPGME and classic.\n\n2005-07-28 19:47:40  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/auth_cram.c, imap/auth_login.c: Use mutt_account_getlogin\n\tinstead of getuser for authentication methods that only support\n\tan authentication ID. As a side-effect, don't display a dangling\n\tauthentication name pointer in getpass.\n\n2005-07-27 15:08:43  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* crypt-gpgme.c: Correct two typos in GPGME error messages.\n\n2005-07-27 05:53:27  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po, po/es.po,\n\tpo/et.po, po/gl.po, po/lt.po, po/pt_BR.po, po/sk.po: Update\n\tThomas' address in several out-of-date PO files. (closes #990)\n\n\t* mutt_ssl_gnutls.c: Silence some harmless warnings. Also,\n\tone day -pedantic is going to get held up on the causeway.\n\n\t* imap/command.c: More fiddling with fatal state handling. Not\n\ttested, and probably as wrong as what was already there.\n\n\t* muttlib.c: Rework mutt_save_confirm to support confirmappend\n\twith IMAP mailboxes.  I hope I got all cases right.\n\n2005-07-26 23:57:38  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c: Adjust imap_access so that it doesn't issue STATUS\n\ton the selected mailbox, and have imap_open_mailbox_append use\n\timap_access instead of rolling its own.\n\n2005-07-26 18:45:01  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* crypt-gpgme.c, mutt_ssl_gnutls.c, po/POTFILES.in: Partial\n\tapplication of Tamo's translation patch for gpgme and gnutls.\n\n2005-07-26 16:44:20  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/imap.c: Don't check for the existence of a mailbox we're\n\talready in when appending.  (closes #1842)\n\n2005-07-26 16:40:16  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* init.h: Return $menu_move_off default to status quo ante.\n\n\t* init.h: hcache spelling fixes\n\n2005-07-26 16:37:28  Tamotsu Takahashi\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* enter.c: Introduce fall-back from complete-query to complete\n\tfor the edit menu, so 'bind editor <tab> complete-query'\n\tbecomes possible.\n\n2005-07-26 06:14:34  \"Brent J. Nordquist\"  <brent@nordist.net>\t(brendan)\n\n\t* doc/manual.sgml.head: Correct a couple of typos (and change\n\t&hyphen; to -: although the text version of the manual renders\n\t&hyphen;, the web version does not).\n\n2005-07-26 05:58:29  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* pattern.c: Interpret an empty limit as a request to cancel\n\tthe current limit.  (Closes #1854)\n\n2005-07-26 05:28:02  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* mutt_ssl.c: Don't offer to save expired or not-yet-valid\n\tcertificates. Closes #1943 as a side-effect.\n\n\t* imap/imap.c, imap/imap_private.h: Rework IMAP CLOSE handling\n\tto avoid expunging messages when exiting without saving\n\tchanges. (closes #1899)\n\n2005-07-26 03:09:55  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>\n(brendan)\n\n\t* mbyte.c, mutt_socket.c: There are some functions without ANSI\n\tprototypes left in mutt-owned sources.\n\n2005-07-25 20:07:23  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* init.h: Update _MAKEDOC macro so that the documentation includes\n\tall variables.\n\n2005-07-25 15:48:36  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* copy.c, imap/imap.c, mh.c, mutt.h, muttlib.c, thread.c: Get rid\n\tof IMAP-related special casing all over the thread editing code.\n\n2005-07-25 04:56:38  brendan  (brendan)\n\n\t* imap/message.c: Indentation, mostly\n\n2005-07-25 04:37:20  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/message.c: Minor cosmetic cleanup (fewer #ifdef HCACHE\n\tblocks)\n\n2005-07-25 04:31:51  brendan  (brendan)\n\n\t* muttlib.c: Suppress a printf format warning\n\n2005-07-24 18:33:31  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* muttlib.c: Typo in last commit.\n\n\t* imap/message.c, muttlib.c, protos.h: Merge full envelope from\n\tmessage fetch into original sparse envelope, instead of replacing\n\tit. This should be gentler on the various threading hashes and may\n\t(knock on wood) fix the threading segfault. Threading behaviour\n\tis observably better.\n\n2005-07-24 18:18:29  brendan  (brendan)\n\n\t* imap/util.c: Revert Glanzmann's imap_parse_mailbox patch.\n\n2005-07-24 16:53:59  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* thread.c: Try to fix threading bug triggered by duplicate\n\treferences.\n\n2005-07-24 16:51:38  Cedric Duval  <cedricduval+web@free.fr>  (brendan)\n\n\t* OPS, copy.c, curs_main.c, doc/manual.sgml.head, functions.h,\n\timap/imap.c, mh.c, mutt.h, mx.c, pager.c, protos.h, thread.c:\n\tAdd thread editing commands.\n\n2005-07-24 16:12:12  Paul Walker  <paul@black-sun.demon.co.uk>\t(roessler)\n\n\t* doc/manual.sgml.head, main.c, protos.h, init.c: This patch\n\tadds an option -D to dump mutt's configuration after all\n\tconfiguration files have been read.  Changes against PW's version:\n\t(1) curses isn't initialized; (2) variables are dumped to stdout,\n\tnot to stderr.\n\n2005-07-24 15:46:26  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* hash.c, imap/message.c, imap/util.c: This patch includes (1)\n\ta rewrite of hash_delete_hash, and (2) some changes to the IMAP\n\tcode that Thomas Glanzmann made during an attempt to squash some\n\tsegmentation fault in May.  There is no guarantee that this patch\n\tdoesn't break things.  If it does, please complain to mutt-dev.\n\n\t* recvattach.c, smime.c: Fix S/MIME segmentation fault.  Bug\n\treported by Mads Martin Joergensen; part fixed by Brendan Cully.\n\n2005-07-24 08:59:44  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* copy.c: Don't assume messages in MMDF mailboxes have From\n\tseparators when copying them.  Spotted by William Lovas. Initial\n\tpatch by TAKAHASHI Tamotsu.\n\n2005-07-23 23:35:17  Byrial Jensen  <byrial@image.dk>  (brendan)\n\n\t* curs_main.c, doc/manual.sgml.head, globals.h, main.c, muttlib.c:\n\tThis is the current shortcut patch patch by Byrial Ole Jensen\n\t<byrial@image.dk>, updated by Christoph Berg <cb@df7cb.de>.\n\n2005-07-17 00:43:05  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* account.c: Don't dereference null ImapUser in new getlogin\n\tfunction.\n\n2005-07-15 07:29:37  Vincent Lefevre  <vincent@vinc17.org>  (brendan)\n\n\t* po/fr.po: PO update 20050613.\n\n2005-07-06 23:49:08  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(brendan)\n\n\t* BEWARE: this fixes a little typo.\n\n2005-07-06 21:03:00  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* hcache.c: Apply Aaron Crane's function pointer bandaid to the\n\tdb4 open calls.\n\n2005-06-28 19:26:54  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* account.c, account.h, globals.h, init.h, mutt_sasl.c: Add\n\t$imap_login variable to specify which user to authenticate as\n\t($imap_user controls which user's mail gets accessed). Currently\n\tthis can't be specified interactively, since I can't think of\n\ta way to do it that wouldn't annoy users where login == user\n\t(the default value of $imap_login).\n\n2005-06-24 22:32:38  Sébastien Hinderer  <Sebastien.Hinderer@libertysurf.fr>  (brendan)\n\n\t* crypt.c: Remove a warning about unused variable 'now' in\n\tcrypt_valid_passphrase\n\n2005-06-22 01:46:49  Sébastien Hinderer  <Sebastien.Hinderer@libertysurf.fr>  (brendan)\n\n\t* doc/devel-notes.txt: This patch fixes two small typos in\n\tdev notes.\n\n2005-06-18 04:54:39  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* main.c: Update copyright dates according to latest activity\n\tin ChangeLog.\n\n2005-06-12 18:28:29  Tamotsu Takahashi\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* menu.c: Fix background colors for $arrow_cursor.\n\n2005-06-12 18:24:31  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* curs_main.c, init.h, menu.c, mutt.h: Add $braille_friendly.\n\tBehavior originally suggested by Sébastien Hinderer\n\t<Sebastien.Hinderer@libertysurf.fr>.\n\n2005-04-10 09:37:51  Johan Svedberg  <johan@svedberg.pp.se>  (roessler)\n\n\t* po/sv.po: update\n\n2005-04-03 00:14:51  Daniel Jacobowitz\t<dan@debian.org>  (brendan)\n\n\t* imap/imap.c, imap/imap_private.h, imap/message.c: Synchronise\n\tmessage flags before moving messages.\n\n2005-03-31 04:55:09  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(brendan)\n\n\t* mh.c: Another hcache cygwin portability fix.\n\n2005-03-23 10:51:11  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* init.h, mh.c, mutt.h: Maildir header cache.\n\n2005-03-22 19:58:15  Horst Schirmeier  <horst@schirmeier.com>  (roessler)\n\n\t* Makefile.am: Use install-exec-hook install of\n\tinstall-exec-local.\n\n2005-03-22 19:53:49  Ronny Haryanto  <ronnylist@haryan.to>  (roessler)\n\n\t* po/id.po: update\n\n2005-03-22 19:49:31  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* po/nl.po: update\n\n2005-03-22 19:48:35  Roland Rosenfeld  <roland@spinnaker.de>  (roessler)\n\n\t* po/de.po: update\n\n2005-03-22 19:46:59  Paul Walker  <paul@black-sun.demon.co.uk>\t(roessler)\n\n\t* init.c, init.h: remove some unused functions.\n\n2005-03-22 19:43:13  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)\n\n\t* po/ru.po: update\n\n2005-03-22 03:40:54  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(brendan)\n\n\t* hcache.c, imap/imap.c, imap/imap_private.h, imap/message.c,\n\tprotos.h: Thomas graces us with this patch that resolves a\n\ttype-size inconsistency in the UIDVALIDITY parser.\n\n\tEdited for correctness.\n\n2005-03-17 09:30:06  Pawel Dziekonski  <pawel.dziekonski@pwr.wroc.pl>\n(roessler)\n\n\t* po/pl.po: update\n\n2005-03-16 07:01:59  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* doc/Makefile.in: As Ralf Wildenhues noted, the cygwin EXEEXT\n\tpatch was incomplete. Note to self: avoid patching on short\n\tsleep. Starting tomorrow.\n\n\t* configure.in, doc/Makefile.in, hcache.c, Makefile.am: Various\n\tcygwin portability fixes\n\n2005-03-15 04:40:40  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* crypthash.h: Don't define uint32_t anywhere but in\n\tconfig.h. Spotted by Alain Bench.\n\n2005-03-13 16:35:35  roessler  (roessler)\n\n\t* po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po,\n\tpo/id.po, po/it.po, po/ja.po, po/ko.po, po/lt.po, po/nl.po,\n\tpo/pl.po, po/pt_BR.po, po/ru.po, po/sk.po, VERSION, po/bg.po,\n\tpo/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po,\n\tpo/es.po, po/et.po, po/fr.po, po/gl.po, po/hu.po, reldate.h:\n\tautomatic post-release commit for mutt-1.5.9\n\n2005-03-13 16:29:09  Morten Bo Johansen  <mojo@mbjnet.dk>  (roessler)\n\n\t* po/da.po: update\n\n2005-03-05 18:15:20  Christoph Ludwig\n<cludwig@cdc.informatik.tu-darmstadt.de>  (roessler)\n\n\t* crypt.c: The attached patch fixes a segfault I observed\n\ttoday: mutt failed to check for a possible null pointer in\n\tmutt_is_application_smime(Body*).\n\n2005-03-05 07:10:57  brendan  (brendan)\n\n\t* mutt_sasl.c, mutt_sasl.h, mutt_socket.c, mutt_socket.h,\n\tmutt_ssl.c, mutt_ssl_gnutls.c, mutt_ssl_nss.c, mutt_tunnel.c:\n\tRename open/close/read/write function pointers to avoid problems\n\twith systems where standard open/close/read/write functions are\n\timplemented with macros.  Thanks to Aaron Crane and others for\n\ttheir input about the problem.\n\n2005-03-01 15:53:25  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)\n\n\t* po/ru.po: update\n\n2005-03-01 15:52:33  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* init.h: This is a spelling fix supplied by Cameron Simpson.\n\n2005-02-28 18:33:45  Mads Martin Joergensen  <mmj@suse.de>  (roessler)\n\n\t* curs_main.c: Fix a crash.\n\n2005-02-28 15:15:23  Christoph Berg  <cb@df7cb.de>  (roessler)\n\n\t* init.h, menu.c, mutt.h: I've updated the menu_context patch to\n\treintroduce the menu_move_off variable that hasn't made it into\n\t1.5.8. The patch fixes menu_prev_line and menu_next_line which\n\tdidn't work with menu_context > 0 and also makes <current-middle>\n\twork even if there are less messages than screen lines (thanks\n\tto René Clerc and Vincent Lefevre for spotting these issues).\n\n2005-02-28 14:37:09  Udo Schweigert  <mutt@cert.siemens.de>  (roessler)\n\n\t* smime.c: As pointed out in a separate thread, here is a patch\n\twhich fixes the problem of a failing openssl after interactively\n\tselecting a recipient's key.\n\n2005-02-27 03:18:23  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/message.c: Turn brain back on before committing patches\n\t(that modification I made to APPEND was bogus).\n\n2005-02-27 02:44:45  Dan Hopper  <ku4nf@austin.rr.com>\t(brendan)\n\n\t* imap/message.c: Don't lose N flag when uploading a message to\n\tan IMAP mailbox.  (Slightly modified from the original patch to\n\tprevent spurious space characters).\n\n2005-02-21 04:42:34  Alain Bench  <messtic@oreka.com>  (roessler)\n\n\t* parse.c, pgp.c, sendlib.c: Bcc should be RFC2047-encoded, too.\n\n2005-02-19 16:00:24  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* sendlib.c: Fix Debian 295528.\n\n2005-02-17 03:33:00  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* OPS, browser.c, doc/manual.sgml.head, functions.h,\n\timap/browse.c, imap/imap.c, imap/imap.h, imap/imap_private.h:\n\tNew function: rename-mailbox (bound to 'r' by default).\n\n\tThe lack of a rename-mailbox command for IMAP finally got too\n\tannoying.  It's a bit of a cut-and-paste job, but I've put my\n\tdreams of cleaning up the IMAP codebase on hold. Gotta grow up\n\tsome time.\n\n2005-02-16 09:34:06  ta_panta_rei  <7vvtch802@sneakemail.com>  (roessler)\n\n\t* po/el.po: update\n\n2005-02-16 08:48:41  Ronny Haryanto  <ronnylist@haryan.to>  (roessler)\n\n\t* po/id.po: update\n\n2005-02-15 19:28:24  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/Makefile.in: Fix linuxdoc invocation.  Thanks to\n\tTamotsu Takahashi for tracking this down to an idiotic\n\tnon-backwards-compatible change to the way groff works.\n\n2005-02-15 19:03:51  Ivan Vilata i Balaguer  <ivan@selidor.net>\n(roessler)\n\n\t* po/ca.po: update\n\n2005-02-14 08:48:43  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2005-02-13 17:37:31  Roland Rosenfeld  <roland@spinnaker.de>  (roessler)\n\n\t* po/de.po: update\n\n2005-02-13 09:53:07  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am: Include crypt-gpgme.h with the distribution.\n\n2005-02-13 00:25:37  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* configure.in, m4/gettext.m4, m4/iconv.m4: Use AC_HELP_STRING\n\tto pretty print configure --help screen, with mixed results.\n\n2005-02-12 21:04:22  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* Makefile.am, imap/Makefile.am: Require at least automake 1.6\n\n2005-02-12 20:56:36  roessler  (roessler)\n\n\t* po/zh_TW.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po,\n\tpo/zh_CN.po, po/pt_BR.po, po/ru.po, po/lt.po, po/nl.po, po/pl.po,\n\tpo/et.po, po/fr.po, po/gl.po, po/hu.po, po/id.po, po/it.po,\n\tpo/ja.po, po/ko.po, po/da.po, po/de.po, po/el.po, po/eo.po,\n\tpo/es.po, Makefile.am, VERSION, po/bg.po, po/ca.po, po/cs.po,\n\treldate.h: automatic post-release commit for mutt-1.5.8\n\n2005-02-12 20:46:48  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2005-02-12 20:45:36  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)\n\n\t* po/ru.po: update\n\n2005-02-12 20:20:42  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* configure.in: Give people more time to profile the inode\n\tsorting code; disabled by default for now.\n\n\t* globals.h, init.h, menu.c: Christoph Berg's menu_context,\n\tand a version of menu_move_off where that's not optional,\n\tbut where mutt will just try to avoid moving off the bottom.\n\tComplain to mutt-dev if you want this to be optional.\n\n2005-02-12 19:54:51  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(brendan)\n\n\t* imap/message.c, imap/util.c: Fix debian bug #275060 (editing\n\ton an imap server loses its flags).  Remove trailing delimiter\n\tfrom IMAP folder names.\n\n2005-02-12 19:52:28  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* charset.c, mbyte.c: Recognize euc-jp-ms.  MORIYAMA Masayuki\n\tby way of TAKAHASHI Tamotsu.\n\n2005-02-12 19:38:14  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* doc/manual.sgml.head, doc/manual.sgml.tail, init.h, main.c:\n\tTrivial documentation fixes (TAKAHASHI Tamotsu, Brendan Cully,\n\tPaul Walker, Derek Martin).\n\n\t* editmsg.c: Partially fix debian bug #275060 (editing a message\n\tin a mbox loses its flags).\n\n\t* TODO: We have $include_onlyfirst.\n\n2005-02-12 19:28:26  TAKIZAWA Takashi  <taki@luna.email.ne.jp>\t(roessler)\n\n\t* muttlib.c, pager.c: column-length and byte-length are different\n\n2005-02-12 19:19:25  Derek Martin  <invalid@pizzashack.org>  (roessler)\n\n\t* mutt.h, commands.c, curs_main.c, init.h: pgp-auto-decode: When\n\t$pgp_auto_decode is set, then mutt will check for traditional\n\tpgp on certain operations.  This is similar (but NOT identical)\n\tto the behavior known from PGP/MIME messages.\n\n2005-02-12 19:12:40  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* alias.c, doc/manual.sgml.head, globals.h, hdrline.c, init.c,\n\tinit.h: unalternates now also adds to a list of exceptions;\n\tsame behavior for unlists, and unsubscribe.  With some changes\n\tfrom tlr.\n\n2005-02-11 04:12:03  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* configure.in, m4/libgnutls.m4, mutt_ssl_gnutls.c: autoconf\n\tsupport for gnutls using a slightly modified version of gnutls'\n\town libgnutls.m4\n\n\t* globals.h, init.h: Only enable ssl_client_cert for openssl\n\t(spotted by Adeodato).\n\n2005-02-09 09:05:38  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pattern.c: Don't crash in mutt_pattern_exec when h->env is NULL.\n\n2005-02-08 17:23:50  TAKAHASHI Tamotsu\t<tamo@momonga-linux.org>\n(roessler)\n\n\t* init.h, mutt.h, mutt_idna.c: Make IDN decoding optional.\n\n2005-02-05 14:11:36  Thomas Roessler   <roessler@does-not-exist.org>\n(roessler)\n\n\t* crypthash.h, imap/util.c, lib.h, mbyte.h, mutt_idna.h,\n\tpatchlist.sh, remailer.h, rfc822.h: Remove a number of unnecessary\n\tconfig.h includes, and add some missing ones.  May fix some bugs.\n\n2005-02-04 16:54:13  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* Makefile.am: Add smime_keys to EXTRA_SCRIPTS (for make dist).\n\n2005-02-04 12:56:28  Tamotsu Takahashi\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* Makefile.am: http://bugs.guug.de/db/17/1769.html This is\n\tnecessary for FreeBSD.\n\n2005-02-03 19:46:53  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* hcache.c: this is a fix for hcache.c infrastructure which is\n\tabout wrongly calculate unique id\n\n2005-02-03 18:44:27  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c: Fix PGP clear signature handling.\n\n2005-02-03 17:01:44  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/auth.c, imap/auth_anon.c, imap/auth_cram.c,\n\timap/auth_gss.c, imap/auth_login.c, imap/auth_sasl.c,\n\timap/browse.c, imap/command.c, imap/imap.c, imap/message.c,\n\timap/utf7.c, pgpkey.c, pgplib.c, pgpmicalg.c, pgppacket.c,\n\tpgppubring.c, pop.c, pop_auth.c, pop_lib.c, postpone.c,\n\tquery.c, recvattach.c, recvcmd.c, regex.c, remailer.c,\n\tresize.c, rfc1524.c, rfc2047.c, rfc2231.c, rfc822.c, score.c,\n\tsend.c, sendlib.c, sha1.c, signal.c, smime.c, snprintf.c,\n\tsort.c, status.c, system.c, thread.c, url.c, utf8.c,\n\twcwidth.c, crypt-mod-pgp-classic.c, crypt-mod-pgp-gpgme.c,\n\tcrypt-mod-smime-classic.c, crypt-mod-smime-gpgme.c, crypt-mod.c,\n\tcrypt.c, cryptglue.c, curs_lib.c, curs_main.c, date.c,\n\tdotlock.c, edit.c, editmsg.c, enter.c, extlib.c, filter.c,\n\tflags.c, from.c, getdomain.c, gnupgparse.c, handler.c, hash.c,\n\thdrline.c, headers.c, help.c, history.c, hook.c, init.c, keymap.c,\n\tlib.c, main.c, makedoc.c, mbox.c, mbyte.c, md5c.c, menu.c, mh.c,\n\tmutt.h, mutt_idna.c, mutt_sasl.c, mutt_socket.c, mutt_ssl.c,\n\tmutt_ssl_gnutls.c, mutt_ssl_nss.c, mutt_tunnel.c, muttlib.c,\n\tmx.c, pager.c, parse.c, pattern.c, pgp.c, pgpinvoke.c, account.c,\n\taddrbook.c, alias.c, ascii.c, attach.c, base64.c, browser.c,\n\tbuffy.c, charset.c, color.c, commands.c, complete.c, compose.c,\n\tcopy.c, crypt-gpgme.c: Add config.h to the top of every C file\n\tthat could possibly want it.  Remove it from mutt.h\n\n2005-02-01 03:36:39  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* imap/auth.c, imap/auth_anon.c, imap/auth_cram.c,\n\timap/auth_gss.c, imap/auth_login.c, imap/auth_sasl.c,\n\timap/browse.c, imap/command.c, imap/imap.c, imap/message.c,\n\timap/utf7.c, protos.h: Pull config.h out of protos.h, add to\n\ttop of every IMAP C file. This should probably be done to every\n\tC file, but the results need testing in case some files depend\n\ton the current (broken) includes.\n\n2005-01-31 02:40:14  brendan  (brendan)\n\n\t* acconfig.h, configure.in, hcache.c, imap/imap_private.h,\n\timap/message.c, m4/types.m4, protos.h: Begin removing deprecated\n\tautoconf 2.13 backward compatibility code.  Add AC_CHECK_TYPES\n\tmacros for uin32/64 types, use uint64_t instead of long long in\n\thcache code.\n\n2005-01-29 19:15:07  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* hcache.c: - make hcache.c conform to mutt codingstyle - use $Id$\n\tCVS keyword instead of %K% BitKeeper keyword\n\n2005-01-28 16:40:33  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c: Adeotato points out that feof() only works after a read.\n\tSo, we now check for an unsuccessful fgetc().\n\n2005-01-28 14:50:31  Paul Walker  <paul@black-sun.demon.co.uk>\t(roessler)\n\n\t* signal.c: Trigger window resizing code when waking up from\n\tsuspension.\n\n2005-01-28 14:09:08  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* po/nl.po: update\n\n2005-01-28 13:17:22  Werner Koch  <wk@gnupg.org>  (roessler)\n\n\t* Makefile.am, configure.in, crypt-gpgme.c, crypt-gpgme.h,\n\tcrypt-mod-pgp-gpgme.c, crypt-mod-smime-gpgme.c, cryptglue.c,\n\tfunctions.h: gpgme integration.  See documentation for\n\t$crypt_use_gpgme, and http://www.gnupg.org/aegypten2/.\n\n2005-01-28 13:00:36  Adeodato Simó  <asp16@alu.ua.es>  (roessler)\n\n\t* mutt_ssl_gnutls.c: The attached mini-patch from David Mosberger\n\t<davidm@napali.hpl.hp.com> seems to fix a segfault in the ia64\n\tarchitecture. Via Debian Bug#285001.\n\n2005-01-28 10:01:30  roessler  (roessler)\n\n\t* po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po, po/lt.po,\n\tpo/nl.po, po/pl.po, po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po,\n\tpo/el.po, po/eo.po, po/es.po, po/et.po, po/fr.po, po/gl.po,\n\tpo/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, VERSION,\n\tpo/bg.po, po/ca.po, po/cs.po, po/da.po, po/de.po, reldate.h:\n\tautomatic post-release commit for mutt-1.5.7\n\n2005-01-27 20:52:13  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* main.c: Add USE_INODESORT to main.c's option dump.\n\n2005-01-27 20:38:02  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* commands.c: 0. In compose mode, press Ctrl-t to change\n\tContent-Type.  1. Type \"application/octet-stream\" for example.\n\t2. Press Ctrl-t again.\t3. Type \"text/plain; charset=us-ascii\"\n\t4. You will be asked \"Convert to us-ascii upon sending?\"\n\t5. Press y or n.  6. You will see a strange message:\n\t \"Content-Type changed to Convert to us-ascii upon sending?.\"\n\n2005-01-27 20:26:52  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c: Return an error in pgp_decrypt_part when the PGP output\n\tfile is empty.\n\n2005-01-27 20:17:46  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* curs_main.c: this patch doesn't raise an error if you try\n\tto sync an empty mailbox which makes it possible to use such a\n\tmacro as this on an empty mailbox:\n\n\tmacro index y \"<sync-mailbox><change-folder>?\"\tmacro pager y\n\t\"<sync-mailbox><change-folder>?\"\n\n2005-01-27 19:34:50  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* pgp.c: Detect end of PGP armor header when a line is\n\twhitespace-only.\n\n2005-01-27 19:18:15  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* smime.c: Void the S/MIME passphrase before prompting\n\tthe user to re-enter it.  Noted by TAKAHASHI Tamotsu\n\t<ttakah@lapis.plala.or.jp>, but with memset replaced by\n\tsmime_void_passphrase().\n\n2005-01-27 19:00:59  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* curs_lib.c: Add terminal newline when it lacks after editing\n\ta message.  Originally from TAKIZAWA Takashi.\n\n2005-01-27 18:58:14  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am: Include mutt_ssl_gnutls.c with the distribution.\n\n2005-01-27 18:54:24  Marco d'Itri  <md@Linux.IT>  (roessler)\n\n\t* globals.h, imap/imap.c, imap/util.c, init.c, init.h, main.c,\n\tmutt.h, mutt_sasl.c, mutt_socket.c, mutt_ssl.h, mutt_ssl_gnutls.c,\n\tpop_lib.c: GNUTLS support.  Used in Debian since Nov. 2001.\n\n2005-01-27 18:48:41  Bill Nottingham  <notting@redhat.com>  (roessler)\n\n\t* mutt_sasl.c: With SASL, expect the server to prompt for\n\tadditional auth data if we have some to send (#129961, upstream\n\t#1845)\n\n\t* contrib/sample.muttrc: Changes the sample.muttrc highlight to\n\tcatch https URLs as well.\n\n\t* color.c, main.c: Support for the \"default\" color in Slang.\n\n2005-01-27 18:45:37  Florian Weimer   <fw@deneb.enyo.de>  (roessler)\n\n\t* mh.c, configure.in: Read files in maildir folders in inode\n\torder; this seems to reduce seek overhead on Linux.  Enabled by\n\tdefault; to disable, run configure with --disable-inodesort.\n\t(By way of Mario d'Itri.)\n\n2005-01-27 18:28:42  Marco d'Itri  <md@Linux.IT>  (roessler)\n\n\t* pgp.c: Improved good signature check.\n\n\t* contrib/gpg.rc, pgpinvoke.c: Make the default Muttrc work\n\tout the box for people using gnupg-agent.  Wrote and applied a\n\tone-line patch to make the %?p? conditional escape work correctly,\n\tpatch forwarded upstream. (Closes: #277646)\n\n\t* pgpewrap.c: Don't segfault when invoked without any arguments.\n\n\t* contrib/gpg.rc, pgp.c: Evaluate gpg's machine-parseable status\n\tmessages.\n\n\t* smime_keys.pl: Add some sanity checks to smime_keys.pl.\n\n\t* contrib/gpg.rc: A gpg command line contains both --verbose\n\tand --no-verbose, remove the first.\n\n2005-01-26 14:33:08  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* status.c: And, thinking about it further, this should just be\n\tan empty string, not \"(null)\".\n\n\t* status.c: The last Context->pattern fix was still crap.\n\tOoooops. (Thanks Ralf.)\n\n2005-01-26 13:36:44  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* Makefile.am, configure.in, globals.h, hcache.c, imap/imap.c,\n\timap/imap_private.h, imap/message.c, init.h, main.c, protos.h:\n\tIMAP header cache.\n\n2005-01-26 12:37:38  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>\n(roessler)\n\n\t* addrbook.c, browser.c, commands.c, compose.c, imap/utf7.c:\n\tMake some functions static.\n\n\t* imap/command.c, imap/message.c: Fix some printf arguments.\n\n2005-01-26 12:21:46  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* status.c: * status.c: A variant of\n\t<http://marc.theaimsgroup.com/?l=mutt-dev&m=110053165002362&w=2>.\n\tSpotted by Ralf Wildenhues <wildenhues@ins.uni-bonn.de>.\n\n2005-01-17 02:24:49  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* cvslog2changelog.pl: cvs log emits a timezone after the hour,\n\tat least here. Adjust date regexp to handle that case.\n\n2005-01-15 17:45:01  Adeodato Simó   <asp16@alu.ua.es>  (brendan)\n\n\t* po/cs.po: Major translation updates forgotten in mutt-po.\n\t(I missed cs in the last commit).\n\n2005-01-15 08:01:35  Brendan Cully  <brendan@kublai.com>  (brendan)\n\n\t* Makefile.am: Update commit targets to work when builddir !=\n\tsrcdir.\n\n2005-01-15 07:43:30  Adeodato Simó  <asp16@alu.ua.es>\t(brendan)\n\n\t* po/sv.po, po/ca.po, po/de.po, po/it.po: i18n updates.\n\n\t* doc/manual.sgml.head, doc/mutt.man, doc/muttrc.man.head,\n\tinit.h: Sundry documentation nits fixed.  Debian #210679, #254294,\n\t#258621, #272579\n\n2005-01-11 12:15:13  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/manual.sgml.head, doc/muttrc.man.head: Document send2-hook.\n\n\t* send.c: send2-hook should also be executed after the first\n\ttime the message is edited by the user.\n\n2005-01-09 15:35:51  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/muttbug.man, muttbug.sh.in: Replace muttbug and its\n\tdocumentation by a note that acknowledges the shut down of the\n\tbug tracking system.\n\n2004-12-21 09:46:24  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c: Fix Debian #275188.\n\n2004-12-07 19:50:04  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* compose.c, hook.c, init.c, init.h, mutt.h, send.c: Add\n\tsend2-hook and fix alternates handling.\n\n2004-11-19 16:16:51  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* doc/manual.sgml.tail, doc/manual.sgml.head: Document\n\ttag-prefix-cond.\n\n2004-11-08 08:43:17  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>\n(roessler)\n\n\t* imap/imap_private.h: Having a signed one-bit bitfield is quite\n\todd -- its value is either 0 or -1.  Although the current code\n\tis not broken because it doesn't test equality to 1, IMHO it's\n\tbetter not to use that.\n\n\t* imap/message.c: There's a size_t in imap_append_message not\n\tprinted out portably.\n\n2004-11-02 13:30:58  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* copy.h: Fix flag confusion.  Noted by Vincent Lefevre.\n\n2004-10-30 21:59:00  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* browser.c, buffy.c, check_sec.sh, commands.c, edit.c,\n\timap/auth_cram.c, imap/auth_gss.c, imap/imap.c, imap/message.c,\n\tlib.c, lib.h, mutt_ssl.c, muttlib.c, recvcmd.c, url.c:\n\tsafe_strcat, safe_strncat.  Thanks to Ulf H. for noting the\n\twrong use of strncat in part of the mutt code base.\n\n\t* smime.c: Fix bad code in smime_get_field_from_db.  Problem noted\n\tby Ulf Härnhammar <Ulf.Harnhammar.9485@student.uu.se>.\n\n2004-09-29 11:27:33  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* lib.c: Fix mutt_unlink race condition for systems without\n\tO_NOFOLLOW.  Noted by Jarno Huuskonen <Jarno.Huuskonen@uku.fi>.\n\n2004-09-07 08:09:39  Matthias Andree  <matthias.andree@gmx.de>\t(roessler)\n\n\t* prepare: Fix parameter passing.\n\n2004-08-31 15:41:03  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* configure.in: Add AC_GNU_SOURCE.\n\n\t* recvattach.c: Remove *two* layers of S/MIME from messages\n\tbefore building the attachment tree.  A generic solution would\n\tremove intransparent encodings all the way down the tree.\n\n2004-08-30 20:10:10  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* compose.c: Only print additional information related to PGP\n\tin case the current message is indeed to be encrypted/signed\n\twith PGP.\n\n\t* globals.h, init.h, mutt_sasl.c, mutt_ssl.c: Here's a patch\n\tto allow mutt to use SSL client certificates to authenticate\n\titself. To use, set ssl_client_cert to the path to your\n\tcertificate file (containing both the certificate and the private\n\tkey). It works with the SASL EXTERNAL authentication mechanism,\n\tso you'll need to have SASL enabled as well.\n\n2004-08-30 20:03:35  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* init.c: Fix a memory leak in the generic spam detection code.\n\n\t* muttlib.c, protos.h: This wipes duplicated code, which I\n\tintroduced a while ago.\n\n2004-08-30 19:47:47  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* po/ja.po: update\n\n2004-08-21 07:35:16  Ivan Vilata i Balaguer  <ivan@selidor.net>\n(roessler)\n\n\t* po/ca.po: update\n\n2004-08-17 16:06:48  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* po/nl.po: update\n\n2004-08-17 15:56:23  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* configure.in, configure.in: Check for ssize_t.\n\n2004-08-17 15:25:31  Ronny Haryanto  <ronnylist@haryan.to>  (roessler)\n\n\t* po/id.po: Corrected update.\n\n\t* po/id.po: update\n\n2004-08-17 15:22:25  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2004-08-17 13:42:01  Johan Svedberg  <johan@svedberg.pp.se>  (roessler)\n\n\t* po/sv.po: update\n\n2004-08-16 21:37:43  Adeodato Simó  <asp16@alu.ua.es>  (roessler)\n\n\t* headers.c: as of current cvs, setting \"PGP: E\" (or similar)\n\twhen header-editing a message does not work. the OP is set\n\t(ENCRYPT, SIGN, whatever) but APPLICATION_PGP is missing.\n\n2004-08-16 21:36:38  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* imap/imap.c: If STARTTLS fails to complete the SSL handshake,\n\tthe error is not propagated and mutt will attempt to log in\n\tanyway, probably causing an infinite block on read. The attached\n\tpatch closes the socket in this case, and propagates the error\n\tproperly.\n\n\t* imap/auth_sasl.c: The attached patch causes mutt to attempt\n\tthe next method in imap_authenticators if the previous method\n\tfailed, even if the server reported that the method was\n\tavailable. Previously mutt would give up if any authentication\n\tmethod failed.\n\n2004-08-16 21:34:22  Moritz Schulte   <moritz@g10code.com>  (roessler)\n\n\t* compose.c: Only print \"Encrypt with\" field in case the used\n\tS/MIME modules supports this feature.\n\n2004-08-16 21:33:35  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)\n\n\t* po/pl.po: update\n\n2004-08-11 12:31:21  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* imap/imap.c: Fix two IMAP memory leaks.\n\n\t* imap/imap.c, imap/imap.h: Remove imap_close_connection.\n\n\t* menu.c: Fix a memory leak in mutt_menuDestroy.\n\n2004-08-08 16:21:16  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* ChangeLog, muttlib.c, protos.h: Fix a memory leak.\n\n2004-08-08 16:19:15  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c, smime.c: Fix the PGP and S/MIME menus. Complaints\n\tand suggestions of many lead to these changes.\tSee mutt-dev\n\tdiscussions around this time for details.\n\n\t* Makefile.am, crypthash.h, md5.h, sha1.h: Fix uint32_t\n\tportability problem. Reported by Steve Kennedy.\n\n2004-08-07 05:23:33  Johan Svedberg  <johan@svedberg.pp.se>  (roessler)\n\n\t* po/sv.po: update\n\n2004-08-02 08:03:46  Nathan Dushman  <nhd+mutt@andrew.cmu.edu>\t(roessler)\n\n\t* imap/command.c: Fix the improvement to address #1655.\n\n2004-07-22 01:10:55  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* imap/message.c: Quick fix for IMAP breakage.\n\n2004-07-21 22:15:40  Nathan Dushman  <nhd+mutt@andrew.cmu.edu>\t(roessler)\n\n\t* imap/command.c: This is a one-line patch that increases the\n\tspeed at which mutt opens IMAP mailboxes, and addresses bug #1655.\n\n2004-07-20 09:00:50  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)\n\n\t* po/pl.po: update\n\n2004-07-20 08:17:21  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* imap/message.c, mutt.h, parse.c, send.c, url.c: Use List-Post\n\theaders when doing list-reply.\n\n2004-07-19 21:44:23  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* globals.h, imap/message.c, init.h: Fix #1548.  (The first\n\tvariant, with $imap_headers specifying headers that are downloaded\n\tin addition to the set required for mutt to work properly.)\n\n2004-07-19 21:41:43  David Champion  <dgc@uchicago.edu>  (roessler)\n\n\t* mbox.c, mh.c, pgp.c, sendlib.c: Fix some compiler warnings.\n\n2004-07-19 21:39:28  Adeodato Simó  <asp16@alu.ua.es>  (roessler)\n\n\t* doc/manual.sgml.head: Fixing a missing newline.\n\n2004-07-19 21:36:46  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* Makefile.am: Fix IMAP breakage.\n\n2004-07-15 08:08:32  David Champion  <dgc@uchicago.edu>  (roessler)\n\n\t* doc/manual.sgml.head, init.c, init.h, mutt.h: v3 of the generic\n\tspam detection patch.\n\n2004-07-14 05:58:30  Moritz Schulte   <moritz@g10code.com>  (roessler)\n\n\t* pgp.c: Do not forget to handle special-case for gpg-agent.\n\n2004-07-14 05:55:40  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* ChangeLog: Fix an earlier commit message.\n\n2004-07-14 05:45:18  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* browser.c: Fix Debian#237426.  (Experimental.)\n\n2004-07-14 05:39:23  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* compose.c: Don't invoke \"builtin\" as an external editor.  Note:\n\tIt's not clear to me that this is really the right approach.\n\tRevisit Editor/Visual some time.\n\n2004-07-14 05:19:15  Elmar Hoffmann  <mutt-dev-ml@elho.net>  (roessler)\n\n\t* init.h, mutt.h, thread.c: By default Mutt hides the subject\n\tof messages in the thread tree that have the same subject as\n\ttheir parent or closest previously displayed sibling. This patch\n\tmakes this optional, introducing the hide_thread_subject boolean\n\tsetting which defaults to the old behaviour.\n\n2004-07-14 05:07:18  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* mh.c: Some eye-candy during the delayed parsing of maildir\n\tfolders.\n\n2004-07-14 04:50:19  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* init.h, sort.h: Hack to fix $sort_browser documentation.\n\n\t* copy.c, copy.h, handler.c, init.h, mutt.h, send.c:\n\t$include_onlyfirst, again.\n\n2004-07-14 04:34:07  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* copy.c, copy.h, handler.c, init.h, mutt.h, send.c: Fix a cvs\n\tcommit SNAFU: This commit undoes the include_onlyfirst patch,\n\tbut leaves the generic spam detection by David Champion in place\n\t(which, erroneously, hadn't been committed automatically).\n\n2004-07-14 04:16:58  ttakah@lapis.plala.or.jp  (roessler)\n\n\t* commands.c, copy.c, copy.h, doc/manual.sgml.head,\n\tdoc/muttrc.man.head, globals.h, handler.c, hdrline.c, init.c,\n\tinit.h, mutt.h, muttlib.c, parse.c, pattern.c, protos.h, send.c,\n\tsort.c, sort.h: Introduce $include_onlyfirst.\n\n2004-07-12 13:35:27  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pager.c: The limitations for OP_MAIL and OP_RECALL should\n\tbe identical.\n\n\t* init.c, sendlib.c: Add some debugging code, and rewrite the\n\tpreviously-ununderstandable mutt_remove_duplicates.  (All this\n\tdone on the search for a problem that ultimately turned out to\n\tbe a configuration issue. Still, the changed code could come in\n\thandy some day.)\n\n2004-07-11 16:25:00  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* pager.c: Fix #1882.\n\n2004-06-27 13:54:51  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* postpone.c: Experimental code for #1910.\n\n2004-06-26 08:45:29  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* commands.c: Fix #1909.\n\n2004-06-23 08:09:43  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c: Zero out the PGP passphrase before asking for a new one.\n\n2004-06-17 20:39:20  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* smime.c: Change S/MIME send menu behavior to xor instead of or,\n\tso it behaves the same way as the PGP send menu.\n\n2004-06-17 20:36:13  Moritz Schulte  <moritz@g10code.com>  (roessler)\n\n\t* Makefile.am, compose.c, configure.in, crypt-mod-pgp-classic.c,\n\tcrypt-mod-smime-classic.c, crypt-mod.c, crypt-mod.h, crypt.c,\n\tcryptglue.c, curs_lib.c, init.h, keymap.c, keymap.h, main.c,\n\tmutt.h, mutt_crypt.h, mutt_curses.h, pgp.c, pgp.h, smime.c,\n\tsmime.h: This is the sequel to the crypto modularization changes\n\tI did on 2003-01-21.  Moritz added another abstraction layer\n\twhich cleans up the code and allows the crypto modules to use\n\ttheir own option menu.\tEverything should work as it used to\n\tbut is now in a really good shape for part III, the Return of\n\tthe GnuPG Easy Makers. -wk\n\n\t* crypt-mod-pgp-classic.c, crypt-mod-smime-classic.c, crypt-mod.c,\n\tcrypt-mod.h: New files.\n\n\t* smime.c (smime_valid_passphrase, smime_send_menu): New\n\tfunctions.  * smime.h: Removed macro: smime_valid_passphrase.\n\tDeclared: smime_valid_passphrase, smime_send_menu.  * pgp.c:\n\tInclude \"mutt_menu.h\".\t(pgp_valid_passphrase, pgp_send_menu):\n\tNew functions.\t* pgp.h: Removed macro: pgp_valid_passphrase.\n\tDeclared: pgp_valid_passphrase, pgp_send_menu.\t*\n\tmutt_curses.h: Declare: mutt_need_hard_redraw.\t* mutt_crypt.h:\n\tDeclare: crypt_pgp_valid_passphrase, crypt_pgp_send_menu,\n\tcrypt_smime_valid_passphrase, crypt_smime_send_menu, crypt_init.\n\tAdjust WithCrypto definition since the GPGME backend does not\n\texclude anymore the other `classic' backends.  (KEYFLAG_ISX509):\n\tNew symbol.  * mutt.h (enum): New symbol: OPTCRYPTUSEGPGME.\n\t(struct body): New member: is_signed_data, warnsig.  * main.c\n\t(main): Call crypt_init.  * keymap.c (km_get_table): Support for\n\tMENU_KEY_SELECT_PGP and MENU_KEY_SELECT_SMIME.\t(Menus): Added\n\tentries fuer MENU_KEY_SELECT_PGP and MENU_KEY_SELECT_SMIME.\n\t(km_init): Create bindings for MENU_KEY_SELECT_PGP and\n\tMENU_KEY_SELECT_SMIME.\t* keymap.h (enum): New enum symbols:\n\tMENU_KEY_SELECT_PGP, MENU_KEY_SELECT_SMIME.  * init.h:\n\tNew configuration variable: crypt_use_gpgme.  * compose.c\n\t(pgp_send_menu, smime_send_menu): Removed functions, they are now\n\tcontained in the crypto backend modules.  (mutt_compose_menu):\n\tUse crypt_pgp_send_menu and crypt_smime_send_menu instead\n\tpgp_send_menu and smime_send_menu.  * cryptglue.c: Slightly\n\trewritten in order to make use of the module mechanism used to\n\taccess crypto backends.  * curs_lib.c (mutt_need_hard_redraw):\n\tNew function.  * crypt.c (crypt_forget_passphrase): Adjust\n\tfor new crypto backend interface.  (crypt_valid_passphrase):\n\tStripped, use calls to crypt_pgp_valid_passphrase and\n\tcrypt_smime_valid_passphrase.\n\n2004-06-02 17:55:34  Alain Bench  <veronatif@free.fr>  (roessler)\n\n\t* parse.c: Fix #1759.\n\n2004-04-30 06:49:37  Urs Janßen  <urs@tin.org>\t(roessler)\n\n\t* doc/Makefile.in, doc/mbox.man, doc/mmdf.man: mmdf(5), new mbox\n\t(5).  (These changes have been sitting in my inbox for ages, tlr.)\n\n2004-04-13 15:10:38  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* imap/message.c: Fix #1795\n\n2004-04-13 08:02:12  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* crypt.c, init.h, mutt.h: Rename pgp_mime_ask to pgp_mime_auto;\n\tchange the default; change the error message given if that\n\tvariable is set to \"no.\"\n\n2004-04-12 21:43:33  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* lib.c, attach.c: Don't open a file for writing that we have\n\tunlinked before. Reported embarassingly long ago by Jarno\n\tHuuskonen <Jarno.Huuskonen@uku.fi>.\n\n2004-04-12 21:19:31  Dale Woolridge  <dale-list-mutt-dev-2@woolridge.org>\n(roessler)\n\n\t* po/uk.po, po/zh_CN.po, po/zh_TW.po, po/pt_BR.po, po/ru.po,\n\tpo/sk.po, po/sv.po, po/tr.po, po/gl.po, po/hu.po, po/id.po,\n\tpo/it.po, po/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po,\n\tpo/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po, po/es.po,\n\tpo/et.po, po/fr.po, compose.c, crypt.c, init.h, mutt.h,\n\tmutt_crypt.h, po/ca.po, postpone.c, send.c, sendlib.c: See:\n\thttp://does-not-exist.org/mail-archives/mutt-dev/msg00843.html\n\n2004-04-12 20:37:19  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* copy.c: Fix #1804.\n\n\t* commands.c, curs_main.c, mutt.h, mutt_crypt.h, pager.c,\n\trecvattach.c: A belated fix for #1808 (Debian #233106): Make\n\tsure check-traditional-pgp doesn't leave the pager context\n\tunnecessarily.\tThis makes message-hooks like this one safe:\n\n\t  message-hook '!(~g|~G) ~b\"^-----BEGIN\\ PGP\\ (SIGNED\\ )?MESSAGE\"'\n\t\t\\ \"exec check-traditional-pgp\"\n\n2004-04-12 19:53:29  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* doc/manual.sgml.head, init.h: Various documentation fixes,\n\t#1790.\n\n2004-04-12 19:47:59  Alain Bench  <veronatif@free.fr>  (roessler)\n\n\t* doc/mbox.man, doc/muttbug.man: Fix #1831, Debian#237827.\n\n2004-04-12 19:42:10  Joël Riou\t<joel.riou@normalesup.org>  (roessler)\n\n\t* globals.h, init.c, init.h: Introduce config_charset.\n\n2004-04-12 19:37:59  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)\n\n\t* po/ru.po: update\n\n2004-04-12 19:37:23  Im Eunjea\t<eunjea@koru.org>  (roessler)\n\n\t* po/ko.po: update\n\n2004-04-12 19:34:45  Holger Weiss  <lists@jhweiss.de>  (roessler)\n\n\t* doc/manual.sgml.head, doc/muttrc.man.head, mutt.h, pattern.c:\n\tUnreferenced messages pattern: ~$\n\n2004-04-12 19:20:13  Paul WALKER  <paul.walker@st.com>\t(roessler)\n\n\t* mutt_sasl.c: SASL2 needs errno.h.\n\n2004-04-12 19:17:32  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* muttlib.c: Include the user ID with temporary file names.\n\tSuggested by eravin@panix.com in #1833.\n\n\t* doc/Makefile.in: Fix #1708 the brutal way, by installing\n\tmultiple copies of the muttbug (pardon, flea) manual page.\n\n2004-04-12 18:56:18  Neil Brown  <neilb@cse.unsw.edu.au>  (roessler)\n\n\t* imap/auth_sasl.c: Fix Debian #206078, #214758; patch submitted\n\tby Artur Czechowski as #1845.\n\n2004-03-21 16:02:10  Ivan Vilata i Balaguer  <ivan@selidor.net>\n(roessler)\n\n\t* po/ca.po: update\n\n2004-02-12 08:51:07  roessler  (roessler)\n\n\t* po/uk.po, po/zh_CN.po, po/zh_TW.po, po/sk.po, po/sv.po,\n\tpo/tr.po, po/pt_BR.po, po/ru.po, po/nl.po, po/pl.po, po/ja.po,\n\tpo/ko.po, po/lt.po, po/id.po, po/it.po, po/gl.po, po/hu.po,\n\tpo/es.po, po/et.po, po/fr.po, po/el.po, po/eo.po, po/da.po,\n\tpo/de.po, VERSION, po/bg.po, po/ca.po, po/cs.po, reldate.h,\n\tChangeLog: automatic post-release commit for mutt-1.4.2.1\n\n2004-02-12 08:46:17  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am: (stable) Include regex.c and snprintf.c with\n\tthe distribution.\n\n2004-02-11 14:03:38  roessler  (roessler)\n\n\t* po/zh_TW.po, po/uk.po, po/zh_CN.po, po/tr.po, po/sv.po,\n\tpo/ru.po, po/sk.po, po/pt_BR.po, po/pl.po, po/nl.po, po/ko.po,\n\tpo/lt.po, po/ja.po, po/it.po, po/id.po, po/hu.po, po/gl.po,\n\tpo/et.po, po/fr.po, po/eo.po, po/es.po, po/el.po, po/de.po,\n\tpo/cs.po, po/da.po, po/ca.po, VERSION, po/bg.po, reldate.h,\n\tChangeLog: automatic post-release commit for mutt-1.4.2\n\n2004-02-11 10:07:17  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* configure.in, menu.c: Backport an old bug fix, and make sure\n\tconfigure can be created on recent systems.\n\n2004-02-11 08:20:25  Mads Martin Joergensen  <mmj@suse.de>  (roessler)\n\n\t* init.c: Fix some warnings.\n\n2004-02-08 11:41:31  Edmund GRIMLEY EVANS  <edmundo@rano.org>  (roessler)\n\n\t* charset.c: Fix a CP1255/8-related problem that's caused by a\n\tglibc/iconv bug.\n\n2004-02-08 09:38:38  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* muttlib.c: Change the logic in mutt_open_read to only\n\tcatch directories -- mutt may legitimately read devices (think\n\t/dev/null) or named pipes. Also delegate error reporting to the\n\tcalling function by setting errno.\n\n2004-02-07 21:40:11  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* po/ja.po: update\n\n2004-02-07 21:38:32  Juan Altmayer Pizzorno  <juan@altmayer.com>\n(roessler)\n\n\t* mbox.c: Hi, off_t is a 64-bit number (like on Mac OS X/darwin),\n\tthe percentages don't show right while mutt is reading/parsing\n\ta mailbox.  Here's a patch (against 1.5.6i) to fix that.\n\n2004-02-07 21:36:41  David Yitzchak Cohen\n<lists+mutt_devs@bigfatdave.com>  (roessler)\n\n\t* init.c, muttlib.c: Looking at the code, the problem is pretty\n\tobvious.  A recent patch to init.c (the one that was supposed\n\tto prevent Mutt from silently failing to read nonexistant RC\n\tfiles, IIRC) changed source_rc() to stat(2) the RC \"file\" before\n\ttrying to mutt_open_read() it.\tThere's only one problem here:\n\tsource_rc() has no way of knowing whether or not its \"file\"\n\tis a file or a command.  I'm attaching a patch that fixes the\n\tproblem in what I believe is the right way.\n\n2004-02-05 14:17:25  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* menu.c: Back out the patch for #1697.\n\n2004-02-02 18:17:46  Roland Rosenfeld  <roland@spinnaker.de>  (roessler)\n\n\t* po/de.po: update\n\n2004-02-02 10:26:14  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)\n\n\t* po/pl.po: update\n\n2004-02-02 10:24:32  Im Eunjea\t<eunjea@koru.org>  (roessler)\n\n\t* po/ko.po: update\n\n2004-02-02 10:22:56  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2004-02-01 18:26:13  roessler  (roessler)\n\n\t* po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po,\n\tpo/zh_CN.po, po/zh_TW.po, po/id.po, po/it.po, po/ja.po, po/ko.po,\n\tpo/lt.po, po/nl.po, po/pl.po, VERSION, po/bg.po, po/ca.po,\n\tpo/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po, po/es.po,\n\tpo/et.po, po/fr.po, po/gl.po, po/hu.po, reldate.h: automatic\n\tpost-release commit for mutt-1.5.6\n\n2004-02-01 18:00:16  Mike Schiraldi  <1074468571@schiraldi.org>\n(roessler)\n\n\t* init.c: As you all know, running \"mutt -F foo.rc\" will have\n\tmutt read foo.rc as its config file. However, there is a bug --\n\tif you specify a directory (like accidentally typing \"mutt -F\n\t/etc/mutt\") mutt will silently ignore the flag and leave you\n\twondering why it isn't working.\n\n\tEmil Sit posted a patch for this in March of 2002, but it seems\n\tto have slipped through the cracks. Here's the patch again;\n\tplease consider it for inclusion.\n\n2004-02-01 17:50:43  Luke Mewburn  <luke@mewburn.net>  (roessler)\n\n\t* buffy.c: Put a zero byte into the string, not into the pointer.\n\n2004-02-01 17:48:25  Dan Ohnesorg  <Dan@ohnesorg.cz>  (roessler)\n\n\t* po/cs.po: update\n\n2004-02-01 17:45:33  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/manual.sgml.head: A cross-reference was missing.\n\n\t* doc/manual.sgml.head: Improve documentation of alterantes.\n\n\t* alias.c, doc/manual.sgml.head, doc/muttrc.man.head, globals.h,\n\thdrline.c, init.c, init.h, mutt.h, mutt_regex.h, muttlib.c,\n\tprotos.h: Turn alternates, lists, and subscribe into regular\n\texpression lists.\n\n2004-01-12 22:56:58  Christoph Ludwig\n<cludwig@cdc.informatik.tu-darmstadt.de>  (roessler)\n\n\t* smime_keys.pl: Avoid a Perl warning.\n\n2004-01-12 20:24:09  Matt Kraai  <kraai@ftbfs.org>  (roessler)\n\n\t* doc/manual.sgml.head: Thanks.  The patch is committed to\n\tthe CVS.\n\n2004-01-12 19:59:38  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* crypt.c: Retainable PGP signatures were broken badly.  #1757.\n\n2004-01-05 11:55:14  Robert Schiele  <robert.schiele@t-online.de>\n(roessler)\n\n\t* mutt_sasl.c: Back out part of the previous SASL/IPv6 patch\n\tdue to portability issues.\n\n2004-01-04 11:10:21  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* init.c: Strike that.\n\n\t* init.c: Fix a memory management error.  Ouch.\n\n2004-01-04 10:55:20  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* init.h: Fix hide_missing / hide_limited documentation.\n\n2004-01-04 10:51:49  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* hdrline.c: Permit list patterns that match the domain name of\n\tan address; these patterns begin with '@'.  Example:  subscribe\n\t@bugs.guug.de matches all messages sent to the bug tracking\n\tsystem.\n\n\t* po/ru.po: Argh, I shouldn't replace files by patches.\n\n2004-01-04 10:25:13  Cameron Patrick  <cameron@patrick.wattle.id.au>\n(roessler)\n\n\t* menu.c: Fix #1697 (Debian  #219594.)\n\n2004-01-04 10:21:19  Roland Rosenfeld  <roland@spinnaker.de>  (roessler)\n\n\t* po/de.po: update\n\n2004-01-04 10:19:45  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* po/ja.po: update\n\n2004-01-04 10:08:02  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)\n\n\t* po/pl.po: update\n\n2004-01-04 10:03:46  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* send.c: Fix #1488 (Debian#1882526): Honor Reply-To while\n\tgenerating Mail-Followup-To headers.\n\n2004-01-04 09:59:42  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* init.h: Fix #1738; documentation issue re $from, $use_from.\n\n2004-01-04 09:52:55  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* hook.c, send.c: Fix #1724, cannot use ~h pattern match with\n\treply-hook.\n\n2004-01-04 09:49:23  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)\n\n\t* pop.h, pop_lib.c: Attached patch provides support of STLS\n\t(STARTTLS) command in POP3 protocol.\n\n\t* po/ru.po: update\n\n2004-01-04 09:45:05  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* imap/imap.c: Fix #1703.\n\n2004-01-04 09:42:35  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* smime.c: Fix a NULL pointer deference noted by Will Fiveash\n\t<william.fiveash@sun.com>.\n\n2003-12-30 13:04:20  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* commands.c, crypt.c, mutt.h, mutt_crypt.h, smime.c: Handle\n\tpartially signed messages more reasonably.  See #1743.\n\n2003-12-29 11:44:35  Alain Bench  <veronatif@free.fr>  (roessler)\n\n\t* commands.c: Fix #844.\n\n2003-12-29 11:37:41  Patrick Welche  <prlw1@newn.cam.ac.uk>  (roessler)\n\n\t* m4/gssapi.m4, mutt_sasl.c: A while ago I posted a similar\n\tpatch which is necessary as when mutt tries to connect to an\n\timap server over ipv6 it stores the address in a sockaddr which\n\tmay not be large enough to hold the ipv6 address.\n\n2003-12-17 17:42:02  Scott Koranda  <skoranda@gravity.phys.uwm.edu>\n(roessler)\n\n\t* crypt.c: pkcs7-signature wasn't recognized properly in one\n\tmore place.\n\n2003-12-17 08:46:50  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* rfc1524.c: Fix possible core dump in mailcap nametemplate\n\thandling.\n\n2003-12-10 00:48:57  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* thread.c: Avoid NULL pointer deference in threading code.\n\n2003-12-03 08:19:11  Alain Bench  <veronatif@free.fr>  (roessler)\n\n\t* pager.c: Fix 1716.\n\n2003-11-15 09:32:30  Velko Hristov  <hristov@informatik.hu-berlin.de>\n(roessler)\n\n\t* po/bg.po: updat\n\n2003-11-12 22:31:51  Edmund GRIMLEY EVANS  <edmundo@rano.org>  (roessler)\n\n\t* po/eo.po: update\n\n2003-11-12 14:01:03  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* po/nl.po: update\n\n2003-11-12 13:49:32  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* configure.in, mutt_idna.c, mutt_idna.h, mutt_socket.c: Fix\n\tIDN API incompatibility problems.\n\n2003-11-12 11:47:46  duvall@emufarm.org  (roessler)\n\n\t* configure.in: Fix 1515, 1693.\n\n2003-11-12 11:40:27  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* mh.c, sort.c: Fix dangling pointer problems in threading code.\n\tNoted and tracked down by q4xk3j002@sneakemail.com who also\n\tprovided the initial fix.\n\n2003-11-11 10:19:22  Ronny Haryanto  <ronnylist@haryan.to>  (roessler)\n\n\t* po/id.po: update\n\n2003-11-10 18:02:26  Rudy Taraschi  <rudy@cae.com>  (roessler)\n\n\t* mutt_socket.c: Fix double-free problems related to IDN support.\n\n2003-11-10 10:37:10  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2003-11-09 21:41:28  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* mh.c: Fix #1692.\n\n\t* send.c: Commit the fix for #1509. This must have been lost\n\tearlier this year.\n\n2003-11-05 20:09:36  roessler  (roessler)\n\n\t* po/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po, ChangeLog, VERSION, po/bg.po, po/ca.po, po/cs.po,\n\tpo/da.po, po/de.po, po/el.po, po/eo.po, po/es.po, po/et.po,\n\tpo/fr.po, po/gl.po, po/hu.po, po/id.po, po/it.po: automatic\n\tpost-release commit for mutt-1.5.5.1\n\n2003-11-05 12:17:10  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am: Include regex.c and snprintf.c with the\n\tdistribution.  Noted by Lars Hecking.\n\n\t* build-release: Ups, we don't upload the CVS any more.\n\n2003-11-05 09:51:10  roessler  (roessler)\n\n\t* po/pl.po, po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po, po/tr.po,\n\tpo/uk.po, po/zh_CN.po, po/zh_TW.po, ChangeLog, VERSION, po/bg.po,\n\tpo/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po,\n\tpo/es.po, po/et.po, po/fr.po, po/gl.po, po/hu.po, po/id.po,\n\tpo/it.po, po/ja.po, po/ko.po, po/lt.po, po/nl.po, reldate.h:\n\tautomatic post-release commit for mutt-1.5.5\n\n2003-11-05 09:27:43  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* build-release: Use gpg for signing releases.\n\n2003-11-03 10:30:58  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* attach.c: Fix a logic flaw in attachment saving.\n\n2003-10-08 19:55:39  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgpkey.c: KeyTable is pgp_uid_t **, not pgp_key_t *.\tFix some\n\tsizeof statements accordingly.\tNote that pgp_key_t is also a\n\tpointer, though, so this should not have broken things.\n\n2003-10-06 09:58:35  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* query.c: Fiy memory corruption. (# 1659)\n\n2003-10-04 22:12:10  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* lib.c: mutt_basename() was garbage.\n\n\t* doc/manual.sgml.head: Fix some tags.\tNoted by Todd\n\t<Freedom_Lover@pobox.com>.\n\n\t* recvattach.c, attach.h, commands.c, compose.c, keymap.h, lib.c,\n\tlib.h, menu.c, mutt.h, mutt_menu.h, muttlib.c, pager.c, protos.h:\n\tThis patch fixes various aspects of the attachment-saving user\n\tinterface.  Changes include:\n\n\t* When tagging and saving multiple attachments, you can now use\n\t  the same target directory for multiple attachments.\n\n\t* When you can't save an attachment, you get an opportunity to\n\t  enter a new file name.\n\n\t* The menu cursor will highlight the attachment that you are\n\t  currently discussing with mutt.\n\n\t* Various bug fixes.\n\n\tThis does, in particular, address #1619 (Debian#208430).\n\n\t* menu.c: Fix #1656.\n\n2003-09-29 16:34:32  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* doc/muttrc.man.head: Fix typo.\n\n2003-09-29 15:05:52  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/dotlock.man, doc/mutt.man, doc/muttrc.man.head: Fix #1652\n\t(Debian #213007), noted by Jens Seidel <tux-master@web.de>.\n\n2003-09-20 06:24:10  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* muttbug.sh.in: Adapt to new GNU coreutils by not using head (1).\n\n2003-09-19 13:09:59  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* po/nl.po: update\n\n2003-09-19 13:05:13  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* imap/utf7.c: Fix remaining (void **) casts.\n\n2003-09-19 13:03:26  Mads Martin Joergensen  <mmj@suse.de>  (roessler)\n\n\t* imap/browse.c, imap/command.c, parse.c, pgp.c, pgpkey.c,\n\tpop_lib.c, query.c, recvattach.c, remailer.c, rfc1524.c,\n\trfc2047.c, rfc2231.c, sendlib.c, smime.c, thread.c, addrbook.c,\n\tbrowser.c, color.c, compose.c, copy.c, crypt.c, curs_lib.c,\n\tedit.c, enter.c, handler.c, lib.c, lib.h, mh.c, mutt_idna.c, mx.c,\n\tpager.c: As the ones of you who compile with new gcc's probably\n\thave noticed, there's a lot of type-punning in Mutt. With help\n\tfrom Philipp Thomas, I've fixed all I could find in CVS (please\n\tdouble-check, one might have slipped through the cracks), I can\n\tmake one for 1.4 CVS branch as well if wanted.\n\n2003-09-19 12:56:49  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* send.c: Change abort_unmodified so it doesn't abort a message\n\tthat has an attachment.  Catches the \"send a file from the\n\tcommand line, quickly\" case.\n\n2003-09-11 16:59:54  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* mutt_sasl.c: This trivial patch closes #1516 (NI_WITHSCOPEID\n\tundefined). Thanks to Mads for the initial patch.\n\n2003-09-11 07:27:23  Velko Hristov  <hristov@informatik.hu-berlin.de>\n(roessler)\n\n\t* po/bg.po: Bulgarian translation.  (Seems like I screwed up an\n\tearlier commit.  -tlr)\n\n2003-09-10 13:20:49  Jon Miles\t<jon@zetnet.net>  (roessler)\n\n\t* pop_auth.c: In pop_auth.c:pop_auth_sasl(), if the main loop\n\treceived anything back from the server that didnt begin with '+\n\t', it was bailing out and skipping the checks to see if there\n\twas a +OK response.\n\n2003-09-07 10:11:49  Im Eunjea\t<eunjea@koru.org>  (roessler)\n\n\t* po/ko.po: update.\n\n2003-09-04 15:10:09  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* init.h: Fix some formatting glitches that lead to error messages\n\twhen viewing the muttrc(5) manual page.\n\n2003-09-04 14:59:57  Christoph Ludwig\n<cludwig@cdc.informatik.tu-darmstadt.de>  (roessler)\n\n\t* smime.c: Fix verification bug when messages are S/MIME signed\n\t& encrypted.\n\n2003-09-03 17:22:09  Dan Born  <dan@danborn.net>  (roessler)\n\n\t* postpone.c: I've attached a patch for bug number 1036, as\n\treported at http://bugs.guug.de/db/pa/lmutt.html (\"segfault\n\twhen more than one msg is postponed\").\tThis is a patch against\n\tmutt 1.4.1.\n\n\tAs it was previously left, no one could reproduce it.  The problem\n\toccurs because sorting is disabled when opening the postponed\n\tfolder, but the Sort global variable still tells mutt to use\n\twhatever sorting algorithm the $sort config option indicates.\n\tEventually, the code would get to mutt_messages_in_thread and\n\ttry to dereference a NULL thread object, causing the segfault.\n\n2003-09-03 17:20:56  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)\n\n\t* po/pl.po: update.\n\n2003-09-03 17:15:20  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* po/ja.po: New ja.po.\n\n2003-09-03 17:12:52  Velko Hristov  <hristov@informatik.hu-berlin.de>\n(roessler)\n\n\t* configure.in: Bulgarian translation.\n\n2003-09-03 17:10:37  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* mutt_ssl.c: Fix a segmentation fault which occurs\n\twhen a certificate is rejected.  Bug noted by Rob Latham\n\t<rob@terizla.org>.\n\n2003-09-03 17:09:09  Anatoly Vorobey  <mellon@pobox.com>  (roessler)\n\n\t* curs_main.c: The commands \"read-thread\" (^R) and\n\t\"read-subthread\" (Esc-R) do not honor the resolve variable (don't\n\tadvance cursor after marking the thread/subthread as read),\n\twhich, to me at least, is a nuisance.\n\n2003-08-11 14:06:08  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* imap/imap.c: 1595: My guess is this bug is caused by\n\tmlarson@verisign.com's patch to check for UNSEEN rather than\n\tRECENT messages. This means that as long as there are messages\n\tin a mailbox either new or old, mutt will think it has new mail.\n\n\tThe attached patch reverts that change. Let me know if it solves\n\tthe problem.\n\n2003-08-11 14:05:13  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/muttrc.man.head: Fix a formatting bug.\n\n2003-08-05 13:55:47  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* attach.c, buffy.c, commands.c, copy.c, editmsg.c, init.c,\n\tmbox.c, mx.c, mx.h, sendlib.c: This patch removes the Kendra\n\tformat from mutt.  (The support was broken anyways.)\n\n2003-08-02 11:01:09  Horvath Szabolcs  <horvaths@fi.inf.elte.hu>\n(roessler)\n\n\t* po/hu.po: update\n\n2003-07-29 10:11:05  Edmund GRIMLEY EVANS  <edmundo@rano.org>  (roessler)\n\n\t* pager.c: It seems that Solaris has an incorrect implementation\n\tof mbrtowc: when there is an encoding error and mbrtowc returns\n\t(size_t)(-1) no value should be stored in *pwc (the first\n\targument), as I understand it, but here mbrtowc is storing 8\n\twhen presented with the bytes \"\\xc8\\x4d\".\n\n\tHowever, relying on mbrtowc not to store anything in *pwc when\n\tthere is an error is a bit silly; it makes sense to look at\n\tthe return value. So, the following patch should be applied if\n\tPawel can confirm that it fixes the problem. I've tested it and\n\tit worked for me with glibc's mbrtowc.\n\n2003-07-24 18:40:50  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* alias.c, copy.c, handler.c, imap/command.c, imap/imap.c,\n\timap/message.c, imap/util.c, init.c, intl/l10nflist.c,\n\tintl/loadmsgcat.c, intl/localealias.c, keymap.c, lib.c,\n\tmakedoc.c, muttlib.c, pattern.c, rfc2047.c, rfc2231.c, rfc822.c,\n\tstrcasecmp.c, url.c: Some functions/macros like isspace take an\n\tint and require the argument to have the value of an unsigned char\n\t(or EOF). Under Solaris, gcc complains when the argument is a char\n\t(as this is a possible bug, on platforms where char is signed,\n\tlike Solaris). The attached patch fixes such problems (well,\n\tperhaps I've changed more than necessary, but this doesn't hurt).\n\n2003-07-22 12:56:38  dshaw@jabberwocky.com  (roessler)\n\n\t* gnupgparse.c: When encrypting a message to a user that has more\n\tthan one subkey, at least one of which is revoked or expired,\n\tmutt treats the entire key as unusable rather than just the\n\tsubkey(s) in question.\n\n2003-07-16 11:18:12  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* account.c, account.h, imap/auth_sasl.c, imap/imap.c: I noticed\n\tthat my mutt hung when I tried SASL DIGEST-MD5 authentication\n\t(I'm not sure when this started). I believe this patch should\n\tsolve that problem in a reliable way.\n\n\tThis patch also attempts to reuse connections even when\n\tauthentication fails, instead of just throwing away a perfectly\n\tgood socket.\n\n\t* curs_lib.c, enter.c, keymap.c, keymap.h, mutt.h, mutt_curses.h,\n\tmutt_ssl.c: This patch redoes yesterday's unbuffered input\n\tpatch. Now it uses a pseudo-option, which means less mess to carry\n\tdown the call stack.  It also made it much easier to have the SSL\n\tcertificate menu be unbuffered, which it is now. So push commands\n\twon't annoy you when entering passwords or accepting certificates.\n\n2003-07-15 11:41:32  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* curs_main.c, globals.h, imap/command.c, imap/imap.c,\n\timap/imap.h, imap/imap_private.h, imap/util.c, mx.c: The attached\n\tpatch should keep all opened IMAP connections alive, no matter\n\twhat mailbox you are currently in. With the patch that got\n\tcommitted yesterday, this should close bug 1523.\n\n\t(There was a typo in that patch. This one supersedes it.)\n\n\t* configure.in, .cvsignore: autoconf 2.5 compatibility.\n\n2003-07-14 12:40:03  Hugo Haas\t<hugo@larve.net>  (roessler)\n\n\t* send.c: Fix #1520.\n\n2003-07-14 12:20:27  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)\n\n\t* po/pl.po: small fix.\n\n2003-07-14 12:19:07  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* imap/command.c, imap/imap.c: On Sunday, 13 July 2003 at 18:09,\n\tBrendan Cully wrote:\n\n\t> The attached patch should help when the connection to your\n\tpostponed > folder times out and you can't reconnect without\n\trestarting mutt. I'd > like anyone who has that problem to try\n\tit and let me know how it > works.\n\n\tI dug a little deeper. The attached patch seems to work better. It\n\tcomplains the first time you try to recall a message, but works\n\tthe second.\n\n\t* account.c, curs_lib.c, enter.c, keymap.c, keymap.h, mutt.h,\n\tmutt_curses.h: The attached patch prevents mutt from reading the\n\tpush buffer when asking for passwords. This is a proper fix for\n\tbug 1312. I think it's uncontroversial.\n\n2003-07-04 17:15:34  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* imap/auth_sasl.c: Increase a buffer's size.\n\n2003-07-04 17:07:22  Nicolas Rachinsky\t<nr@rachinsky.de>  (roessler)\n\n\t* OPS, curs_lib.c, curs_main.c, functions.h, menu.c: Introduce\n\ttag-prefix-cond and end-cond.  This makes simple conditional\n\texecution of parts of macros possible.\n\n2003-07-04 17:03:51  Bruno Postle  <bruno@postle.net>  (roessler)\n\n\t* curs_main.c, pattern.c: Display an empty index when no messages\n\tmatch search criteria.\n\n2003-07-04 16:57:56  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* init.h, muttlib.c: Add a ':' flag to % expandos.  This will\n\tmake sure that any dots are converted into underscores.  (_\n\tis already used for lowercasing the result of an expando.)\n\n2003-06-04 14:01:39  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* muttlib.c: Don't colorize empty lines generated with\n\tstate_attach_puts();\n\n2003-05-29 17:48:28  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* imap/imap.c, pgp.c, po/eo.po, po/id.po: Fix part of #1564.\n\n2003-05-29 17:47:10  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* init.c: Fix a segmentation fault which would occur when\n\tpgp_sort_keys is set in a configuration file, but mutt is compiled\n\twithout PGP support.\n\n\t* gnupgparse.c: Fix PGP subkey handling when looking at key\n\tcapabilities.  This should take care of the recent \"mutt does\n\tnot see all keys\" problems.\n\n2003-05-13 13:06:16  Dale Woolridge  <dale-list-mutt-dev-2@woolridge.org>\n(roessler)\n\n\t* crypt.c: Fix gpg-agent use.\n\n2003-05-13 12:53:20  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/manual.sgml.head: Remove useless examples about treating\n\ttext/enriched externally.  #1549; Debian #190309.\n\n2003-05-13 12:50:04  Juan Altmayer Pizzorno  <juan@altmayer.com>\n(roessler)\n\n\t* recvattach.c: view-attachments does not extract the message\n\twithin a x-pkcs7-mime if it's only signed, but not encrypted.\n\tSuch a message results, for example, from a decrypt-save if the\n\tmessage was previously encrypted and signed.\n\n2003-05-13 12:45:35  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>\n(roessler)\n\n\t* doc/manual.sgml.head: Fix an inconsistency between manual\n\tand code.\n\n2003-05-13 12:43:45  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* gnupgparse.c, pgppubring.c: Currently, mutt uses the OpenPGP key\n\talgorithm to determine the capabilities of the key.  For example,\n\tin mutt, a key of type 1 (RSA) can both encrypt & sign.  This is\n\tnot correct as per OpenPGP, however, where the capabilities of\n\tthe key are determined by both the algorithm and key capability\n\tflags that are set on the key.\tThis can lead to user confusion\n\twhen their RSA encrypt-only or sign-only key is listed for both\n\tsigning and encryption in mutt.\n\n\tGnuPG lists these flags in key listings, so it is easy to take\n\tadvantage of them.  Here is a patch to use the flags, as well\n\tas provide the flags in pgpring.  Note that the pgp+pgpring\n\tusers won't see any change since the flags there are based on\n\tthe key algorithm as they are now, but the GnuPG users will see\n\tan improvement.\n\n2003-05-12 16:21:26  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* enter.c: Fix alias completion when the alias is entered as\n\tpart of a group.  (E.g., The Tea Party: alias1, alias2, alias3;)\n\n2003-05-03 20:07:40  Dan Nelson  <dnelson@allantgroup.com>  (roessler)\n\n\t* mutt.h, muttlib.c: Fix #1558.  (mutt_expand_fmt rewrite;\n\tOPT_MAX wasn't maximal.)\n\n2003-04-15 13:17:05  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* compose.c: Fix two more cases in which ctrl-G is interpreted\n\tas M_YES.\n\n2003-04-15 09:52:06  Dale Woolridge  <dale-flea-mutt-bug@woolridge.org>\n(roessler)\n\n\t* compose.c: The \"sign (a)s\" code strips the pgp application\n\tbit causing drawing issues in redraw_crypt_lines().  Other bits\n\t(well bit = encrypt) are ignored as a result.  I've only tested\n\twith pgp, but the same problem exists in the smime code too.\n\tThis inline patch (against cvs head revision) fixes the problem.\n\n2003-04-14 09:09:53  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* init.h, mutt.h, send.c: Fix the PGP / S/MIME selection mess\n\tin send.c.  This patch adds two new configuration variables,\n\t$crypt_autopgp and $crypt_autsmime.  Both are set to \"yes\"\n\tby default.  By turning them off, you can disable the automatic\n\tselection of one or both mechanisms.  (Useful when your mutt is\n\tPGP- and S/MIME enabled, but you only use, say S/MIME.)\n\n2003-04-11 15:15:04  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* send.c: Backing out the previous change. It was nonsense.\n\n2003-04-11 11:56:58  Lars Hecking  <lhecking@nmrc.ucc.ie>  (roessler)\n\n\t* config.guess, config.sub, depcomp, install-sh, missing,\n\tmkinstalldirs: updates.\n\n2003-04-11 11:56:22  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* send.c: Try to fix a PGP / S/MIME-related problem.  Found by\n\tMatt Larson <mlarson@verisign.com>, tracekd down by René Clerc\n\t<rene@clerc.nl>.\n\n\t* thread.c: Fix a segmentation fault.\n\n2003-04-09 08:21:59  Zardoz@users.sourceforge.net  (roessler)\n\n\t* recvcmd.c: Fix #1531.  (recvcmd.c duplicate of #1528)\n\n2003-04-08 22:32:56  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* lib.c: Avoid a division by zero.\n\n\t* color.c: Make sure has_colors() is only invoked when OPTNOCURSES\n\tis unset.  This fixes a segmentation fault on RH 8.0 which was\n\tobserved by Matt Larson <mlarson@verisign.com>.\n\n\t* browser.c, enter.c, imap/imap.c, lib.c, mutt_idna.c, mx.c,\n\tsendlib.c, smime.c, thread.c: Try to catch a couple of cases\n\tin which parameters for malloc calls could overflow.  Thanks to\n\tTimo Sirainen for the heads-up.\n\n\t* po/es.po: Mark a translation as fuzzy in order to fix #1522.\n\n2003-04-07 20:08:10  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* commands.c: Fix #1528.\n\n2003-04-07 07:57:49  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* po/nl.po: update\n\n2003-04-06 11:00:59  Ivan Vilata i Balaguer  <ivan@selidor.net>\n(roessler)\n\n\t* po/ca.po: update\n\n2003-04-02 09:05:19  Bjoern Jacke  <muttbug@j3e.de>  (roessler)\n\n\t* smime_keys.pl: - add a missing filehandle closure - some\n\tcleanups of unused/bogous code\n\n2003-04-02 08:47:28  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* contrib/Makefile.in, contrib/colors.default,\n\tcontrib/colors.linux: sample.muttrc-tlr would try to include\n\tmy color configurations, which weren't distrubted.  Fix that.\n\t(Bug noted while helping someone else to configure mutt during\n\ta conference.)\n\n\t* contrib/sample.muttrc: Fix sample.muttrc.\n\n2003-04-02 08:40:50  Gary Johnson  <garyjohn@spk.agilent.com>  (roessler)\n\n\t* curs_main.c: Here is the patch to fix the bug I reported\n\tearlier in this thread, that sometimes when changing folders,\n\tmutt would generate an error message and stop the further\n\tprocessing of folder-hooks.\n\n2003-04-02 08:38:13  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2003-04-02 08:34:49  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* po/ja.po: update\n\n2003-04-02 08:31:00  Roland Rosenfeld  <roland@spinnaker.de>  (roessler)\n\n\t* po/de.po: update\n\n2003-04-02 08:28:24  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* init.h, mutt.h, pgp.c: Here is the pgp_check_exit patch\n\tupdated for 1.5.4.  This patch adds the pgp_check_exit option\n\t(enabled by default) that causes mutt to check the exit code\n\tof the PGP subprocess.\tA non-zero exit code means that the\n\tsubprocess failed and mutt will not continue to send the message.\n\n\tThis is needed as in certain cases, PGP or GnuPG can fail to\n\tcompletely process a document (say, if the gpg.conf file is\n\tmangled, which is how I discovered the problem).  Without an\n\texit code check, mutt will continue anyway and send the half\n\tprocessed file.\n\n2003-04-02 08:21:09  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)\n\n\t* po/ru.po: update.\n\n2003-03-19 22:43:08  roessler  (roessler)\n\n\t* po/pl.po, po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po, po/tr.po,\n\tpo/uk.po, po/zh_CN.po, po/zh_TW.po, po/et.po, po/fr.po, po/gl.po,\n\tpo/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po, po/lt.po,\n\tpo/nl.po, ChangeLog, Makefile.am, VERSION, po/Makefile.in.in,\n\tpo/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po,\n\tpo/es.po, reldate.h: automatic post-release commit for mutt-1.5.4\n\n\t* po/tr.po, po/uk.po, po/zh_CN.po, po/zh_TW.po, po/sk.po,\n\tpo/sv.po, po/pl.po, po/pt_BR.po, po/ru.po, po/ja.po, po/ko.po,\n\tpo/lt.po, po/nl.po, po/gl.po, po/hu.po, po/id.po, po/it.po,\n\tpo/et.po, po/fr.po, po/da.po, po/de.po, po/el.po, po/eo.po,\n\tpo/es.po, VERSION, po/bg.po, po/ca.po, po/cs.po, reldate.h,\n\tChangeLog: automatic post-release commit for mutt-1.4.1\n\n2003-03-19 21:56:29  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgppubring.c: Fix some memory management calls. (Stable branch.)\n\n2003-03-19 21:33:30  Edmund GRIMLEY EVANS  <edmundo@rano.org>  (roessler)\n\n\t* imap/utf7.c: Fix a buffer overflow in utf8_to_utf7. (Stable\n\tbranch.)\n\n\t* imap/utf7.c: Fix a buffer overflow in utf8_to_utf7.\n\n2003-03-18 14:51:52  Andrew W. Nosenko\t<awn@bcs.zp.ua>  (roessler)\n\n\t* buffy.c, parse.c: - buffy.c (test_last_status_new): Fix memory\n\t  leak.  Envelope structure allocated by mutt_read_rfc822_header()\n\t  was never deallocated.\n\n\t- parse.c (mutt_read_rfc822_header): Comment added about\n\t  needing deallocate envelope structure returned by\n\t  mutt_read_rfc822_header().\n\n\t* mutt_idna.c: (mutt_addr_for_display): Fix memory leak.  `user'\n\tand `domain' buffers was never deallocated.\n\n\t(mbox_to_udomain): Fix memory leak.  `scratch' buffer was not\n\tdeallocated when `mbx' doesn't contain '@'. Also rewritten for\n\tallocating memory only when needed and only how many as needed.\n\n2003-03-12 13:00:03  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* copy.c, sendlib.c: We need to re-format address headers instead\n\tof just decoding them.\n\n2003-03-07 14:55:53  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* mutt_sasl.c: The global callbacks set up in sasl_client_init\n\tare not copied by the SASL library, so they can't be allocated\n\ton the stack. This is the case with both versions of the SASL\n\tlibrary, and I frankly don't understand why it hasn't caused\n\tproblems before. Since it segfaults reliably on OS X for me now,\n\tI thought a patch would be in order.\n\n2003-03-07 08:23:27  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* crypt.c, pgp.h: Don't use functions without importing the\n\tcorresponding prototype.\n\n\t* mutt_idna.c: It seems like libidn doesn't like to translate\n\tNULL pointers.\n\n2003-03-07 07:52:49  Jim Mock  <mij@soupnazi.org>  (roessler)\n\n\t* globals.h: globals.h is looking for crypt.h instead of\n\tmutt_crypt.h.\n\n2003-03-06 21:23:53  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* send.c: Fixing a segmentation fault.\tHere's how to reproduce\n\tit: Start mutt.  Compose a new message, with an attachment.\n\tTurn on PGP signing.  Press C-G on the pass phrase prompt.\n\tTurn off PGP signing.  Try to send the message.\n\n2003-03-05 21:18:24  Andrew W. Nosenko\t<awn@bcs.zp.ua>  (roessler)\n\n\t* protos.h, sort.c: Fix a warning.\n\n\t* mutt_idna.c: Fix tlr's pre-processor screw-up.\n\n2003-03-04 09:51:07  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* mutt_idna.c, mutt_socket.c: Unset UseSTD3ASCIIRules, and set\n\tAllowUnassigned.  (Just reading some standards.)\n\n2003-03-04 09:31:19  Edmund GRIMLEY EVANS  <edmundo@rano.org>  (roessler)\n\n\t* handler.c: Be more friendly about bad multipart/alternative\n\tbodies; #1478. Note that the relevant standards explicitly\n\t*forbid* nested MIME encodings.\n\n2003-03-04 09:27:21  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* copy.c: Fix another stupid error, and decode IDNs in the\n\tCC header.\n\n\t* init.h: Fix two typos in one line.  Noted by Thomas Glanzmann\n\tand Steve Kennedy.\n\n\t* addrbook.c, alias.c, send.c: Fixing more IDN bugs.\n\n2003-03-03 14:25:14  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* copy.c, sort.c: Fixing some nits.\n\n\t* mutt_socket.c: IDNA support for the socket back-end.\n\n\t* Makefile.am, addrbook.c, alias.c, charset.h, commands.c,\n\tcompose.c, configure.in, copy.c, edit.c, hdrline.c, headers.c,\n\tinit.c, main.c, mutt_idna.c, mutt_idna.h, pgpinvoke.c,\n\tprotos.h, query.c, recvcmd.c, rfc822.c, rfc822.h, send.c,\n\tsendlib.c: IDN support for e-mail messages.  Things should work\n\tautomagically once you have the GNU IDN library available from\n\tftp://alpha.gnu.org/pub/gnu/libidn/ installed.\tFor IDN's which\n\tcan't be losslessly recoded to your local character set, mutt\n\tshould automatically fall back to using the ASCII representation.\n\tThere's probably a considerable number of bugs in this, and the\n\tcode may, at this point, not even compile on machines without\n\tlibidn.  Will start working on that ASAP.\n\n\t* contrib/sample.muttrc, doc/manual.sgml.head, recvcmd.c,\n\tcommands.c, init.h, mutt.h: Introduce a new option named\n\t$bounce, and fix some inconsistencies in the messages created\n\twhen bouncing.\tBased on work done by Thomas Glanzmann\n\t<sithglan@stud.uni-erlangen.de>.\n\n2003-02-25 22:00:38  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* commands.c, recvcmd.c: Fix some (too lazy and tired to do all)\n\tof the inconsistencies between message and attachment bouncing.\n\n\t* crypt.c: I should test-compile things before committing.\n\tStupid typo.\n\n2003-02-25 21:41:32  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* query.c: Use mutt_strwidth for query response formatting.\n\t(#1477)\n\n2003-02-25 21:37:59  Christian Vogel  <vogelchr@vogel.cx>  (roessler)\n\n\t* mx.c: Recognize MH folders used by sylpheed.\n\n2003-02-25 21:35:24  jesus.climent@hispalinux.es  (roessler)\n\n\t* po/es.po: Fix a typo. (#1482)\n\n2003-02-25 21:33:16  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/manual.sgml.head: Remove some ftp.guug.de URLs from the\n\tmanual. (#1485)\n\n\t* crypt.c: Fix #1486; noted by Jeroen Coekaerts\n\t<jeroen@coekaerts.be>.\n\n2003-02-19 21:33:43  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* pgpmicalg.c: 3156 defined several micalg values (pgp-md5,\n\tpgp-sha1, etc.)  Since then, three more hashes have been assigned\n\tnumbers in 2440bis.  Here is a patch to add values for pgp-sha256,\n\tpgp-sha384, and pgp-sha512 so mutt can properly handle them.\n\n2003-02-19 21:31:19  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* parse.c: Fix a memory leak observed by Vineet Kumar\n\t<mutt-dev@virtual.doorstop.net>.\n\n2003-02-13 09:55:02  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* init.h: Here are some updates to the muttrc docs (spell check,\n\tlanguage tweaks, etc).\tNo functional changes - this is just\n\tlanguage stuff.\n\n2003-02-13 09:50:00  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c: Fix #1444, Debian #178563.  The details of this problem\n\twere tracked down by Steven Barker <steve@blckknght.org>.\n\n2003-01-31 00:15:03  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* init.h: Change the default for crypt_replyencrypt back to \"yes\".\n\tNoted by Thomas Poindessous in Debian bug #178899; also #1448.\n\n\t* pgp.c: Fix #1442 (thanks, Dale); properly initialize some\n\tpointers which could otherwise lead to crashes.\n\n2003-01-30 23:54:30  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* crypt.c, init.h, mutt.h, mutt_crypt.h, send.c: Introduce\n\t$pgp_auto_traditional.\n\n2003-01-30 23:48:36  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* flags.c: The IMAP ACL patch broke things.\n\n2003-01-23 22:05:02  Nathan Dushman  <nhd+mutt@andrew.cmu.edu>\t(roessler)\n\n\t* pop_auth.c: SASL2 support for popo_auth.c.\n\n\t* curs_main.c, flags.c, imap/imap.c, pager.c: The attached\n\tpatch provides improved support for IMAP ACLs (on servers that\n\tsupport them).\tThis means that mutt will now write the Seen\n\tflag in mailboxes that allow it, even if the mailbox doesn't\n\tallow other changes.\n\n2003-01-23 22:01:03  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* handler.c: Automatically use the text/plain handler for text/*\n\tbody parts which don't have a handler of their own.\n\n2003-01-21 18:56:10  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* cryptglue.c: Fix a typo which broke pgp-extract-traditional.\n\n\t* mutt_crypt.h: Fix an #ifdef.\n\n2003-01-21 12:33:41  Werner Koch  <wk@gnupg.org>  (roessler)\n\n\t* Makefile.am, acconfig.h, attach.c, commands.c, compose.c,\n\t configure.in, copy.c, copy.h, crypt.c, cryptglue.c, curs_main.c,\n\t functions.h, globals.h, gnupgparse.c, handler.c, hdrline.c,\n\t headers.c, hook.c, init.c, init.h, keymap.c, keymap.h,\n\t main.c, mutt.h, mutt_crypt.h, muttlib.c, mx.c, pager.c,\n\t parse.c, pattern.c, pgp.c, pgp.h, pgpkey.c, pgplib.c, pgplib.h,\n\t pgppubring.c, pop.c, postpone.c, protos.h, recvattach.c, send.c,\n\t sendlib.c, smime.c, smime.h, sort.h:  - To cleanup the pgp/smime\n\t code and prepare for other backends.  - Support gpg-agent by\n\t not asking for a passphrase - autconf cleanups.\n\n\tThis is just a start and probably we need a couple of other things\n\tto do. One drawback is that the help menu does always list all\n\tcrypto realted stuff even when configured for no crypto at all.\n\tSame goes for the configure options but I consider thsi a feature:\n\tIt allows to use the same .muttrc for different versions of mutt -\n\tat least during development, this is an advantage.  This all might\n\tbe fixed but requires some changes to the configuration system.\n\n\tNote, the use of the WithCrypto macro - it enables the compiler\n\tto do dead-code-elimination depending on the configured backend.\n\tThis is better readable than all the nested ifdefs.  I did some\n\tshort tests and it seems to work, althoug mutt's size does not\n\tchange largely when compiled w/o crypto.\n\n\tcryptglue.c is new as a warpper to all crypto calls; some are\n\tstill in crypt.c but they should eventually also be wrapped.\n\tWe don't use function pointers to keep a path to use dlopen or\n\truntime configured backends.  crypt.h is also new and replaces\n\tpgp.h and smime.h in most files (except for the backend).\n\n\n\n\t2003-01-06  Werner Koch  <wk@gnupg.org>\n\n\t\t* crypt.c (crypt_valid_passphrase): Detect gpg-agent and\n\t\tdon't ask for the passphrase.  * pgp.c (pgp_decrypt_part,\n\t\tpgp_application_pgp_handler) (pgp_sign_message,\n\t\tpgp_encrypt_message) (pgp_traditional_encryptsign):\n\t\tMake sure that we never ever send the passphrase if the\n\t\tgpg-agent has been detected.  Likewise.\n\n\t\t* acconfig.h: Removed all remaining stuff as AC_TEMPLATEs\n\t\tto configure.in. BTW, we should consider to rename\n\t\tconfigure.in to configure.ac.\n\n\t2003-01-04  Werner Koch  <wk@gnupg.org>\n\n\t\tReplaced the use of HAVE_PGP and HAVE_SMIME by a more\n\t\treadable and extendable solution.\n\n\t\t* pgplib.h: Moved enum pgp_ring and KEYFLAGS_* to *\n\t\tcrypt.h: here.\t* smime.c (mutt_is_application_smime):\n\t\tMoved to * crypt.c (mutt_is_application_smime):\n\t\there.  * pgp.c (mutt_is_application_pgp): Moved to\n\t\t* crypt.c (mutt_is_application_pgp): here.  * pgp.c\n\t\t(pgp_is_multipart_encrypted): Removed. Merged code with *\n\t\tcrypt.c (mutt_is_multipart_encrypted): this.\n\n\t\t* mutt.h: Protect against double inclusion.\n\n\t\t* pgplib.h (struct pgp_keyinfo): Remove the typedef to\n\t\tpgp_key_t.  * crypt.h (pgp_key_t): Declare the typedef\n\t\there.  NOTE:  This is now a pointer.  Changed all usages\n\t\taccordingly.\n\n\t\t* configure.in: Replace HAVE_PGP and HAVE_SMIME by the\n\t\tnew CRYPT_BACKEND macros.  Always include all OPS.*.\n\t\t(LIBOBJ): Replaced by AC_LIBOBJ as required by newer\n\t\tautoconfs.  * Makefile.am (EXTRA_mutt_SOURCES): Move\n\t\tcrypt.c to mutt_SOURCES.  (mutt_SOURCES): Add cryptglue.c\n\t\t(EXTRA_DIST): Add crypt.h\n\n\t\t* pgp.h, pgplib.h, smime.h: Use the header only\n\t\twhen the approriate backend has been configured.  *\n\t\tpgp.c, pgpkey.c, smime.c: Build only if the approriate\n\t\tCRYPT_BACKEND_ macro is defined.  * pgp.h, smime.h,\n\t\tglobal.h: Moved all variable declarations to global.h\n\t\tbecause they are now always defined.\n\n\t\t* sort.h: Always define PgpSortKey, although it does\n\t\tnot belong to here.\n\n\t\t* keymap.h: Unconditionally include all PGP and SMIME\n\t\tstuff.\t* mutt.h: Ditto.  * protos.h: Ditto.\n\n\t\t* init.h (HAVE_SMIME): Unconditionally include all\n\t\tcrypto related definitions.  Mark the doc entries with\n\t\t\"(Crypto/PGP/SMIME only)\".\n\n\t\t* globals.h: Replace gpg.h and smime.h by crypt.h.\n\n\t\t* functions.h: Always include all crypto commands.\n\n\t\t* copy.h: Unconditionally define the crypto related M_CM_\n\n\t\t* pgplib.h: Move APPLICATION_PGP and PGP* to crypt.h\n\t\tand include it.  * smime.h: Move APPLICATION_SMIME\n\t\tand SMIME* to crypt.h and include it.  * mutt_crypt.h\n\t\t(ENCRYPT,SIGN,GOODSIGN, BADSIGN): Move to crypt.h.\n\n\t\t* crypt.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\tAlways include all functions but shortcut them depending\n\t\ton WITHCRYPTO.\tAll over the place use WITHCRYPTO\n\t\tinstead of ifdefs.  Replaced all direct calls of the\n\t\tbackend fucntions by twrapper functions defined in\n\t\tcryptglue.c (crypt_get_keys): Removed prototypes.\n\t\t* pgp.h (pgp_findKeys): New prototype.\t* smime.h\n\t\t(smime_findKeys): New prototype.  * cryptglue.c: New.\n\t\t* crypt.h: New.  * mutt_crypt.h: Moved all crypt_*\n\t\tprototypes to gcrypt.h.  Unconditionally use this file.\n\n\t\t* init.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(parse_set): Use WITHCRYPTO instead of ifdefs.\n\t\t(mutt_var_value_complete): Ditto.\n\n\t\t* sendlib.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(write_as_text_part): Now one macro using WITHCRYPTO.\n\t\t(mutt_write_mime_body): Use WITHCRYPTO instead of ifdefs.\n\t\t(mutt_make_message_attach): Ditto.  (mutt_write_fcc):\n\t\tDitto.\n\n\t\t* send.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(include_forward): Use WITHCRYPTO and validate\n\t\tpassphrases for pgp and smime.\t(include_reply): Ditto.\n\t\t(generate_body): Use WITHCRYPTO instead of ifdefs.\n\t\t(ci_send_message): Ditto.\n\n\t\t* recvattach.c: Replaced pgp.h and smime.h header\n\t\tby crypt.h.  (mutt_gen_attach_list): Use WITHCRYPTO\n\t\tinstead of ifdefs.  (mutt_attach_display_loop): Ditto\n\t\t(mutt_view_attachments): Ditto.\n\n\t\t* postpone.c: Replaced pgp.h and smime.h header by\n\t\tcrypt.h.  (mutt_get_postponed): Use WITHCRYPTO instead\n\t\tof ifdefs.  (mutt_parse_crypt_hdr): Always include and use\n\t\tWITHCRYPTO instead of ifdefs.  (mutt_prepare_template):\n\t\tUse WITHCRYPTO instead of ifdefs.\n\n\t\t* pop.c: Removed pgp.h and smime.h.  (pop_fetch_message):\n\t\tUse WITHCRYPTO instead of ifdefs.\n\n\t\t* pattern.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(Flags): Always include the crypto flags.  (msg_search):\n\t\tUse WITHCRYPTO instead of ifdefs.  (mutt_pattern_exec):\n\t\tDitto.\n\n\t\t* parse.c: Removed pgp.h and smime.h.\n\t\t(mutt_parse_mime_message): Use WITHCRYPTO instead\n\t\tof ifdefs.\n\n\t\t* pager.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(mutt_pager): Use WITHCRYPTO instead of ifdefs.\n\n\t\t* mx.c: Removed smime.h and pgp.h.  (mx_update_context):\n\t\tUse WITHCRYPTO instead of ifdefs.\n\n\t\t* muttlib.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(mutt_needs_mailcap): Use WITHCRYPTO. Note, that there\n\t\tused to be an error when PGP was not configured so\n\t\tthat TYPEAPPLICATION was not recognized for SMIME.\n\t\t(mutt_is_text_part): Use WITHCRYPTO instead of ifdefs.\n\n\t\t* main.c: Include crypt.h.  (show_version): Remove\n\t\tHAVE_PGP and HAVE_SMIME.  Add CRYPT_BACKEND_CLASSIC_PGP,\n\t\tCRYPT_BACKEND_CLASSIC_SMIME.\n\n\t\t* keymap.c: Include crypt.h so that we can test\n\t\tWITHCRYPTO.  (Menus): Always include pgp and smime.\n\t\t(km_init): Create smime and pgp bindings depending\n\t\ton WITHCRYPTO.\t(km_get_table): Return OpPgp depending\n\t\ton WITHCRYPTO.\n\n\t\t* hook.c (mutt_parse_hook): Use WITHCRYPTO instead\n\t\tof ifdefs.  (mutt_crypt_hook): Always include.\n\n\t\t* headers.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(mutt_edit_headers): Use WITHCRYPTO instead of ifdefs\n\n\t\t* hdrline.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(hdr_format_str): Use WITHCRYPTO.\n\n\t\t* handler.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(mutt_can_decode): Use WITHCRYPTO instead of ifdefs.\n\t\t(mutt_can_decode): Application/smime is now also checked\n\t\twhen PGP support is not configured.  (mutt_body_handler):\n\t\tUse WITHCRYPTO\n\n\t\t* curs_main.c: Replaced pgp.h and smime.h header\n\t\tby crypt.h.  (mutt_index_menu): Shortcut crypto only\n\t\toperations depending on WITHCRYPTO.\n\n\t\t* copy.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(_mutt_copy_message):\n\n\t\t* compose.c: Replaced pgp.h and smime.h header by crypt.h.\n\t\t(enum): Always include HDR_CRYPT and HDR_CRYPTINFO.\n\t\t(redraw_crypt_lines): Always include this fnc but shortcut\n\t\tit depending on WITHCRYPT.  Draw lines depending on\n\t\tthe configured crypto support.\t(pgp_send_menu):\n\t\tAlways include this one.  Call wrapper functions.\n\t\t(smime_send_menu): Likewise.  (draw_envelope): Use\n\t\tWITHCRYPTO instead of ifdefs.  (mutt_compose_menu):\n\t\tAllow pgp/smime commands only when configured.\n\n\t\t* commands.c: Replaced pgp.h and smime.h header\n\t\tby crypt.h.  (mutt_display_message,pipe_msg,\n\t\t_mutt_pipe_message) (set_copy_flags, mutt_save_message,\n\t\tmutt_edit_content_type) (_mutt_check_traditional_pgp):\n\t\tUse pgp wrapper.\n\n\t\t* attach.c (mutt_view_attachment): Removed HAVE_GPG and\n\t\tHAVE_SMIME and replaced by global variable WITHCRYPTO.\n\t\tReplaced pgp and smime header by crypt.h.x\n\n2003-01-09 17:27:25  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgppubring.c: Don't make a \"hard\" transition to the new GnuPG\n\tsyntax in pgpring.  This change undoes one of David Shaw's\n\tchanges which were just committed.\n\n2003-01-09 17:24:41  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* gnupgparse.c, pgppubring.c: The latest GnuPG has new abilities\n\tto work with disabled keys.  Part of this change will eventually\n\tinvolve moving the 'd' that indicates a disabled key to a\n\tdifferent part of the key listing.\n\n\tTo smooth this transition, as of version 1.2.2, GnuPG will\n\tstart giving the 'd' in both places (and will do this for a good\n\tlong time).\n\n\tHere is a patch so mutt will accept either the old or new syntax.\n\n2003-01-09 17:23:23  dshaw@jabberwocky.com  (roessler)\n\n\t* curs_lib.c: A recent change causes all mutt_yesorno prompts\n\tto come out as [yes]/yes or [no]/no.  Here's a fix.\n\n2003-01-05 22:16:02  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* smime_keys.pl: Error checking for the creation of the temporary\n\tdirectory; also, use file mode 0700.\n\n2003-01-05 22:08:25  Bjoern Jacke  <bjoern@j3e.de>  (roessler)\n\n\t* smime_keys.pl: Improve temporary file handling.\n\n2003-01-05 22:02:37  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* commands.c: Another mutt_yesorno() change, in order to correctly\n\tinterpret a C-g.\n\n2003-01-05 22:00:00  Armin Wolfermann  <aw@osn.de>  (roessler)\n\n\t* recvcmd.c, send.c, alias.c, attach.c, commands.c, curs_lib.c,\n\tmain.c, muttlib.c, mx.c, pgpkey.c: Fix a number of invocations\n\tof mutt_yesorno(): Always explicitly use the M_YES and M_NO\n\tconstants.  Fixes a couple of cases in which C-g would be\n\tmis-interpreted.\n\n2003-01-03 18:07:36  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c: Detect in-line key material when checking for traditional\n\tPGP messages.\n\n2002-12-22 20:04:51  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* po/nl.po: update\n\n2002-12-22 20:01:32  Bjoern Jacke  <bjoern@j3e.de>  (roessler)\n\n\t* smime_keys.pl: Remove an unnecessary invocation of \"cat\";\n\tcall openssl with the full path.\n\n2002-12-22 11:20:00  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: Another fr.po update for the CVS (taking into account\n\tthe change in pgpkey.c:486)...\n\n2002-12-22 11:17:24  Martin Michlmayr  <tbm@cyrius.com>  (roessler)\n\n\t* hdrline.c, init.h: Add %A to the format strings, which expands\n\tto the reply-to address (if present) or to the author's address\n\twhen there's no Reply-To header.\n\n2002-12-21 20:32:13  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* ChangeLog: ok, gotos suck.\n\n\t* curs_main.c: OK, Michael is right: Gotos suck. ;-)\n\n2002-12-21 13:25:11  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)\n\n\t* po/ru.po: update\n\n2002-12-20 09:37:59  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* pgpkey.c: Minor tweak to an error message.\n\n2002-12-20 09:29:12  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)\n\n\t* po/pl.po: update\n\n2002-12-19 11:48:58  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/manual.sgml.head, doc/muttrc.man.head: Improve the\n\tdocumentation of pgp-hook/crypt-hook.\n\n\t* pgpkey.c: Don't bother the user with weak keys when there's\n\ta strong one.  Experimental, based on discussions on mutt-dev.\n\n\t* cvslog2changelog.pl: Identify both the author of a change and\n\tthe one who committed it to the CVS in the changelog.\n\n2002-12-19 07:42:36  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2002-12-19 07:37:01  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am: Michael doesn't have $VISUAL set.\n\n2002-12-18 17:29:56  Sahil Tandon  <sahil@brandeis.edu>  (me)\n\n\t* init.h:\tI found a small typo in the manual, specifically\n\t\tat this[1] URL.  The description of the smart_wrap\n\t\tvariable reads: \"Controls the display of lines longer\n\t\tthen the screen width in the internal pager.\"  The word\n\t\t_then_ should be _than_ if I'm not mistaken.\n\n2002-12-18 10:26:35  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* po/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po, po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po,\n\tpo/eo.po, po/es.po, po/et.po, po/fr.po, po/gl.po, po/hu.po,\n\tpo/id.po, po/it.po: make update-po\n\n\t* mkchangelog.sh: Turn on compression when getting log messages\n\tfrom the CVS server.  (Now that I don't have the server locally,\n\tbandwidth is expensive...  ;-)\n\n\t* keymap.c: Make the messages from the what-key function\n\tinternationalizable.\n\n\t* crypt.c, crypt.h, mutt_crypt.h, pgp.c, pgp.h, smime.c, smime.h:\n\tRename crypt.h to mutt_crypt.h.\n\n\t* Makefile.am: cvs update ChangeLog before trying to update\n\tit locally.\n\n2002-12-18 07:37:56  Roland Rosenfeld  <roland@spinnaker.de>  (roessler)\n\n\t* po/de.po: update\n\n2002-12-17 13:45:16  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update fr.po\n\n2002-12-17 13:04:29  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* .cvsignore: Ignore some more files.\n\n\t* Makefile.am, mkjtags.c: Remve that jed tags generator.  I don't\n\tuse it anyway.\n\n\t* cvslog2changelog.pl: Adding Michael's address to the changelog\n\tgenerator.\n\n\t* build-release: Adopting the release-building script to the\n\tnew changelog process.\n\n2002-12-17 10:37:24  roessler  (roessler)\n\n\t* po/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,\n\tpo/zh_TW.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po,\n\tpo/lt.po, po/nl.po, po/pl.po, po/pt_BR.po, po/es.po, po/et.po,\n\tpo/fr.po, po/gl.po, VERSION, build-release, po/ca.po, po/cs.po,\n\tpo/da.po, po/de.po, po/el.po, po/eo.po, reldate.h: automatic\n\tpost-release commit for mutt-1.5.3\n\n2002-12-17 09:50:26  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* OPS, curs_main.c, functions.h: Experimental: Introduce\n\t{next,previous}-new-then-unread.  These functions behave\n\tlike {next,previous}-new as long as new messages are visible.\n\tWhen no new messages are visibuel any more, there's a fall-back\n\tto {next,prev}-unread.\n\n\tMemo to self: Impose a weekly quota on the use of goto statements.\n\n2002-12-16 20:28:46  Edmund GRIMLEY EVANS  <edmundo@rano.org>  (roessler)\n\n\t* handler.c, rfc2047.c, url.c: Fix #1424.\n\n2002-12-16 17:59:51  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* pgp.c: Experimental short-cut code if the \"image\" of an address\n\tunder a pgp-hook looks like a hexadecimal key id.\n\n2002-12-13 15:53:36  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* lib.c: Fixing Thomas' screw-up in mutt_concat_path.\n\n2002-12-13 11:00:44  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* po/nl.po: update.\n\n2002-12-11 22:47:57  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* muttlib.c, pgp.c, protos.h, send.c: Fix #1417; thanks to\n\tDerek D. Martin <ddm@sophic.org> for the excellent observation.\n\t(In addition to the fix proper, some tracking of temporary files\n\tis added to mutt's debugging output.)\n\n\t* crypt.c: Call endwin() before calling PGP for traditional\n\tencryption.\n\n2002-12-11 15:51:57  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update.\n\n2002-12-11 15:20:21  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* browser.c, complete.c, hook.c, init.c, lib.c, lib.h: Herbert\n\tMartin Dietze <herbert@the-little-red-haired-girl.org> notes that\n\tmutt may currently build IMAP URLs like imap://exchange//herbert\n\tfor FCCs.  The fix in this patch is to include a function named\n\tmutt_concat_path which concatenates path elements, but avoids\n\tthe creation of double slashes.  (These don't create problems\n\twhen you're just accessing the file system, but apparently thy\n\tdo cause problems with IMAP.)\n\n\t* imap/auth.c, imap/command.c, imap/imap.c, imap/imap.h,\n\timap/util.c, date.c, dotlock.c, dotlock.h, edit.c, editmsg.c,\n\tenter.c, extlib.c, flags.c, from.c, functions.h, gnupgparse.c,\n\thandler.c, hash.c, hash.h, headers.c, help.c, history.c,\n\thistory.h, keymap.c, keymap.h, lib.c, lib.h, main.c, makedoc.c,\n\tmapping.h, menu.c, mh.c, mime.h, mkjtags.c, mutt_curses.h,\n\tmutt_menu.h, mutt_regex.h, mutt_socket.c, muttlib.c, mx.c, mx.h,\n\tpager.h, parse.c, pattern.c, pgp.c, pgp.h, pgpinvoke.c, pgpkey.c,\n\tpgplib.c, pgplib.h, postpone.c, protos.h, query.c, recvattach.c,\n\trecvcmd.c, remailer.c, remailer.h, resize.c, rfc1524.c, rfc1524.h,\n\trfc2047.c, rfc2047.h, rfc2231.c, rfc2231.h, rfc822.c, rfc822.h,\n\tscore.c, signal.c, snprintf.c, sort.c, sort.h, status.c,\n\tsystem.c, thread.c, url.c, addrbook.c, alias.c, attach.c,\n\tattach.h, browser.c, browser.h, buffy.c, buffy.h, charset.c,\n\tcharset.h, commands.c, complete.c, compose.c, copy.h, crypt.c,\n\tcrypt.h, curs_main.c: Fix Mike's and my e-mail addresses in\n\tcopyright lines.\n\n\t* muttbug.sh.in: Ask for the user's e-mail address.\n\n\t* pager.c: Try to make search-next behave more closely to what\n\tpeople are used to, again.  The behaviour introduced by this\n\tpatch will give you the previous search string as the default,\n\tbut will search-next when you just press enter without changing\n\tthe search string.\n\n2002-12-10 20:56:52  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* imap/command.c, imap/imap.c, imap/message.c, imap/utf7.c,\n\timap/util.c, score.c, send.c, sendlib.c, smime.c, thread.c, url.c,\n\taddrbook.c, alias.c, attach.c, browser.c, buffy.c, charset.c,\n\tcolor.c, compose.c, copy.c, crypt.c, curs_main.c, enter.c,\n\tgnupgparse.c, hash.c, history.c, hook.c, init.c, lib.c, main.c,\n\tmbox.c, menu.c, mh.c, mutt_ssl.c, mutt_ssl_nss.c, muttlib.c,\n\tmx.c, pager.c, parse.c, pattern.c, pgp.c, pgpkey.c, pgplib.c,\n\tpgppacket.c, pgppubring.c, pop.c, pop_auth.c, postpone.c,\n\tquery.c, recvattach.c, remailer.c, rfc1524.c, rfc2047.c,\n\trfc2231.c, rfc822.c: Replace safe_free calls by the FREE macro.\n\n2002-12-09 19:06:40  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am: Minor formatting fix.\n\n\t* cvslog2changelog.pl: Change the ChangeLog format as suggested\n\tby  Martin Michlmayer.\n\n\t* send.c: Try to fix another obscure error in S/MIME auto-signing\n\tupon reply.\n\n\t* rfc822.c: Experimental patch to fix #1318.\n\n2002-12-09 18:09:49  David Jardine  <david@jardine.de>\t(roessler)\n\n\t* init.h: Documentation fix concerning %L in index_format.  #1313.\n\n2002-12-09 18:05:54  David Shaw  <dshaw@jabberwocky.com>  (roessler)\n\n\t* mh.c, parse.c: Reduce the meaning of the mark_old option so\n\tit only controls whether new messages are marked as old when\n\tleaving the mailbox.\n\n2002-12-09 17:54:25  Jesus Climent  <jesus.climent@hispalinux.es>\n(roessler)\n\n\t* po/es.po: Fix a typo.  (#1392)\n\n2002-12-09 17:52:50  Anders Helmersson\t<anders.helmersson@telia.com>\n(roessler)\n\n\t* addrbook.c, curs_lib.c, protos.h, query.c: Fix #1390.  Based on\n\ta patch submitted earlier by Edmund Grimley Evans.\n\n2002-12-09 17:44:54  roessler  (roessler)\n\n\t* PATCHES: Ups.\n\n2002-12-09 17:44:28  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* OPS, PATCHES, curs_main.c, functions.h, keymap.c, keymap.h,\n\tmenu.c: This patch adds two features to mutt:\n\n\t- you can now specify the octal code of a key in a bind or\n\t  macro function, using the syntax <NNN>.  Eg, bind index <541>\n\t  show-version This allows you to bind to a function key for\n\t  which Mutt doesn't have a friendly name associated with it.\n\n\t- adds a what-key function which allows you to press a key and\n\t  have mutt show you the decimal/octal value.  (not bound to\n\t  anything by default)\n\n2002-12-09 16:07:24  Toomas Soome  <tsoome@muhv.pri.ee>  (roessler)\n\n\t* po/et.po: update.\n\n2002-12-09 13:30:02  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po,\n\tpo/zh_CN.po, po/zh_TW.po, po/gl.po, po/hu.po, po/id.po, po/it.po,\n\tpo/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/eo.po,\n\tpo/es.po, po/et.po, po/fr.po, po/ca.po, po/cs.po, po/da.po,\n\tpo/de.po, po/el.po, compose.c: Try to fix a localization issue\n\tidentified by Pawel Dzienkonski (#1410).  Side effect: All\n\ttranslations will need an update of the S/MIME key translations.\n\n2002-12-09 11:20:14  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)\n\n\t* po/pl.po: update.\n\n2002-12-08 23:14:43  ph04169@cc.uoi.gr\t(roessler)\n\n\t* po/el.po: update.\n\n2002-12-08 16:11:35  TAKAHASHI Tamotsu\t<ttakah@lapis.plala.or.jp>\n(roessler)\n\n\t* po/ja.po: update.\n\n2002-12-08 15:10:59  Roland Rosenfeld  <roland@spinnaker.de>  (roessler)\n\n\t* po/de.po: Update.\n\n2002-12-07 19:19:34  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am: yet another one.\n\n\t* Makefile.am: Another changelog-related change.\n\n\t* ChangeLog, Makefile.am, cvslog2changelog.pl: Automatically\n\tupdate ChangeLog as part of the commit process.\n\n\t* doc/Makefile.in, ChangeLog, ChangeLog.old, Makefile.am,\n\tcvslog2changelog.pl, mkchangelog.sh: Change the style\n\tof ChangeLog: Now, the actual patch submitter's name is\n\textracted from the commit message and used for the change log.\n\tFor the moment, the date format doesn't match the one in the\n\told changelog.\tIf you want to fix this, submit a patch to\n\tcvslog2changelog.pl. ;-)\n\n2002-12-07 08:55:59  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update\n\n2002-12-07 08:55:23  Paul Walker  <paul@black-sun.demon.co.uk>\t(roessler)\n\n\t* pgppubring.c: Fix a compilation warning.\n\n2002-12-07 08:53:21  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* mh.c, mutt.h, muttlib.c: Gracefully handle unknown maildir\n\tflags.\n\n2002-12-06 11:30:08  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am: Run check_sec.sh before committing.\n\n2002-12-06 11:28:30  Brendan Cully  <brendan@kublai.com>  (roessler)\n\n\t* m4/gettext.m4, m4/iconv.m4, build-release, configure.in:\n\tautoconf cleanup.\n\n2002-12-06 11:14:13  roessler  (roessler)\n\n\t* po/zh_CN.po, po/zh_TW.po, po/uk.po, po/ru.po, po/sk.po,\n\tpo/sv.po, po/tr.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,\n\tpo/gl.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/ko.po,\n\tpo/el.po, po/eo.po, po/es.po, po/et.po, po/fr.po, po/da.po,\n\tpo/de.po, VERSION, po/ca.po, po/cs.po, reldate.h, ChangeLog:\n\tautomatic post-release commit for mutt-1.5.2\n\n2002-12-06 10:56:30  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* curs_lib.c, pgppubring.c: Fixing a number of traditional malloc\n\tcalls which have made their way into the code.\n\n\t* build-release: Don't post announcements automatically for\n\tthe moment.\n\n2002-12-05 22:30:02  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* doc/manual.sgml.head: Fix #1398.\n\n2002-11-25 14:16:47  Lars Hecking  <lhecking@nmrc.ucc.ie>  (roessler)\n\n\t* sendlib.c, ChangeLog, INSTALL, charset.h, configure.in: The\n\tnoiconv patch.\n\n2002-11-14 08:12:30  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* curs_lib.c: Fix #1388.\n\n2002-11-13 10:10:52  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* main.c: A description of -A was lacking from the help string.\n\n\t* doc/manual.sgml.head, doc/mutt.man, main.c, protos.h: Add a\n\tnew command line option -A which is used to expand aliases.\n\n\t* keymap.c: Add a safeguard #ifdef for the KEY_BTAB entry.\n\tSuggested by Thomas Dickey.\n\n2002-11-12 09:20:30  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* keymap.c: Tell mutt about the back-tab key (shift tab).\n\n2002-11-12 09:20:09  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* Makefile.am: ups.\n\n\t* Makefile.am: Add \"make pclean\" in order to clean up PATCHES.\n\n2002-11-12 08:55:57  TAKAHASHI Tamotsu\t<arms405@jade.dti.ne.jp>\n(roessler)\n\n\t* po/ja.po: update\n\n2002-11-12 08:41:18  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* README: Add an explicit note that CVS doesn't work from\n\tftp.mutt.org any more.\n\n2002-11-12 08:35:34  \"Yasuhiro Matsumoto\"  <mattn_jp@hotmail.com>\n(roessler)\n\n\t* mbyte.c: cp932 should be treated like shift_jis.\n\n2002-11-12 08:20:11  Nathan Dushman  <nhd+mutt@andrew.cmu.edu>\t(roessler)\n\n\t* imap/auth_gss.c, imap/auth_sasl.c, configure.in, main.c,\n\tmutt_sasl.c, mutt_sasl.h: Hi - this is a patch against mutt-1.4\n\tto use version 2 of the Cyrus SASL library; all changes are\n\tifdef'd so as not to break SASLv1 support. This includes a patch\n\tto configure.in to allow the choice between v1 and v2, but someone\n\twith a better understanding of autoconf should double-check it.\n\n2002-11-12 08:00:51  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* handler.c: Actually commit patch-1.5.1.me.long_qp.2.\n\n\t* mailbox.h, mh.c, mx.c: The maildir_time patch.\n\n2002-11-11 21:17:25  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* muttbug.sh.in: You shall not use CVS to distribute test\n\tversions.\n\n\t* muttbug.sh.in: more fixes.\n\n\t* muttbug.sh.in: Add some rpm-related intelligence to flea.\n\n\t* muttbug.sh.in: Fix flea's interaction with bug(1) on Debian\n\tsystems.\n\n\t* PATCHES: Clean up the patch list.\n\n2002-11-11 20:32:30  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* PATCHES, hdrline.c: Fix #485: Make %z work like %Z inside of\n\t%{} in $index_format.\n\n\t* PATCHES, copy.c: Fix #1379 - update the total mailbox size\n\twhen an attachment is deleted.\n\n\t* PATCHES, curs_main.c, menu.c, pager.c: Fix #1310; redraw\n\tproblems.\n\n\t* doc/manual.sgml.head, init.h: Fix #1306.\n\n\t* send.c: Fix #1364.\n\n2002-11-11 19:50:23  Steve Kennedy  <steve-md@gbnet.net>  (roessler)\n\n\t* pgp.c: Fix memory leak in the PGP code.\n\n2002-11-11 19:46:29  Paul Walker  <paul@black-sun.demon.co.uk>\t(roessler)\n\n\t* commands.c, protos.h, sendlib.c: Fix #718.\n\n2002-11-11 19:38:30  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* sendlib.c: Fix #1366.\n\n2002-11-11 19:24:24  Martin Siegert  <siegert@sfu.ca>  (roessler)\n\n\t* mx.c: Fix IMAP moving; #1367.\n\n2002-11-11 19:22:17  rene@clerc.nl  (roessler)\n\n\t* send.c: Another S/MIME ifdef misses and causes compilation\n\tproblems.\n\n2002-11-11 19:21:24  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* init.h: patch-1.5.1-me.status_doc.2\n\n2002-11-11 19:16:11  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* alias.c, init.c, protos.h: patch-1.5-tlr.alias-parse.1 -\n\textension of patch-1.5.1-me.aliascheck.1\n\n\tThis patch catches the same kind of bad alias names caught by\n\tMichael's patch.  There are some extensions:\n\n\t1. Mutt makes sure that it doesn't _suggest_ bad names to\n\tthe user.  2. If a name is bad, the user is informed, and may\n\telect to fix the\n\t   name.  In this case, mutt will automatically suggest a fixed\n\t   version.\n\t3. If the user insists in the bad name, it's written into the\n\t   aliases file with proper quoting.\n\t4. When mutt parses the aliases file, it now uses the normal\n\t   tokenizer routines in order to properly handle quoted alias\n\t   names.\n\n2002-11-11 18:36:25  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* handler.c: patch-1.5-me.long_qp.2 (#1371) - fix truncation\n\twith overly long Q-P encoded lines.\n\n2002-10-22 21:24:07  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* commands.c: Add some missing #ifdefs.\n\n2002-10-22 21:23:20  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* init.h, recvattach.c: Documentation fix; #1326\n\n2002-10-22 21:22:45  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* send.c: Another crypt_reply fix.\n\n2002-10-10 09:50:03  René Clerc  <rene@clerc.nl>  (roessler)\n\n\t* send.c: Make sure that crypt_reply replies with the same type,\n\tdespite a possible S/MIME default.\n\n2002-10-10 09:43:29  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* doc/manual.sgml.head, doc/manual.sgml.head: Document escaping\n\trules for regular expressions (#1351).\n\n\t* pager.c: Fix header coloring, so there is no difference between\n\tncurses and slang.\n\n\t* init.h: PGP documentation glitch.\n\n2002-10-10 09:33:33  Paul Walker  <paul@black-sun.demon.co.uk>\t(roessler)\n\n\t* doc/manual.sgml.head: Fix #1340 (documentation)\n\n2002-10-10 09:33:05  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* pager.c: Jeremy Lin wrote: > When I search with / and get\n\ta match, doing '/\\r' doesn't move to the next > match. This\n\tbehavior is unlike the less pager, and is rather useless, IMHO.\n\n\tTry the attached patch.\n\n2002-09-23 12:08:43  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* buffy.c: A variant of buffy notification.  Note:  If you folks\n\tdon't like this, we can return to the old version.\n\n2002-09-09 21:48:19  Rudi Chiarito  <nutello@sweetness.com>  (roessler)\n\n\t* OPS, browser.c, buffy.c, curs_main.c, functions.h, pager.c,\n\tprotos.h: Add a buffy-list function, and display more information\n\twhen new mail arrives.\tWith some modifications from tlr.\n\n2002-09-09 21:19:08  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* mh.c: Fix #1321.\n\n\t* mh.c: [STABLE] Fix #1321.\n\n2002-09-09 21:04:03  Tony Leneis  <tony@cvr.ds.adp.com>  (roessler)\n\n\t* signal.c: Tru64 Unix portability patch.\n\n\t* signal.c: [STABLE] Tru64 Unix portability patch.\n\n2002-09-09 21:02:05  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* doc/manual.sgml.head: Fixing a typo.\n\n2002-09-09 20:53:46  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* postpone.c: Fixing #1300.  Noted by David Shaw\n\t<dshaw@jabberwocky.com>.\n\n\t* postpone.c: Fix #1299; noted by David Shaw\n\t<dshaw@jabberwocky.com>.\n\n2002-09-09 20:20:20  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* init.h, mutt.h, send.c: Introducing $forward_edit.\n\n\t* globals.h, init.h, send.c: Introduce $content_type.  There's\n\tone change against Michael's patch, in how the \"format=flowed\"\n\tparameter is used.\n\n2002-09-09 20:04:45  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* history.c: [STABLE] Fixing history classes.\n\n\t* history.c: Fixing history classes.\n\n2002-09-09 19:56:25  Armin Wolfermann  <aw@osn.de>  (roessler)\n\n\t* mh.c: when doing the second parsing pass on a maildir,\n\tmutt doesn't delete the fake HEADER struct if the file is\n\tunreadable. With this fix unreadable files get silently ignored\n\t(like in the MH case).\n\n2002-09-09 19:55:01  \"TAKAHASHI, Tamotsu\"  <arms405@jade.dti.ne.jp>\n(roessler)\n\n\t* po/ja.po: Update.\n\n2002-09-09 19:53:24  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* editmsg.c: Fixing #1149:  Truncate files used for editing\n\tmessages.\n\n2002-09-09 19:29:26  Nicolas Rachinsky\t<nicolas@dauerreden.de>\n(roessler)\n\n\t* doc/manual.sgml.head, doc/muttrc.man.head, buffy.c, buffy.h,\n\tinit.h: An unmailboxes command.  #1311.\n\n2002-09-09 19:24:54  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* attach.c: Fixing #1330.\n\n\t* attach.c: [STABLE] Fixing #1330.\n\n2002-08-09 07:01:11  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* doc/muttrc.man.head: Document unalternative_order in the\n\tmanual page.\n\n2002-08-09 06:58:37  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* doc/manual.sgml.head, init.c, init.h: The following patch\n\tadds the `unalternative_order' command.  It also allows using\n\t\"*\" more generically in un-commands which use parse_unlists().\n\n2002-08-05 17:25:05  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* pgpewrap.c, pgppubring.c, pgpewrap.c, pgppubring.c: Error\n\thandling fixes.\n\n2002-07-26 08:24:01  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* doc/manual.sgml.head: Documentation for reply-hook.  Another\n\tpatch (for the manual page) would be most welcome. ;-))\n\n\t* curs_lib.c: The attached patch fixes mutt_yesorno() so that the\n\tquestion will be truncated enough to always fit in the default\n\tanswer string.\tThe size is calculated on the fly so that there\n\tis no artificial truncation.\n\n2002-07-24 09:46:58  TAKIZAWA Takashi  <taki@luna.email.ne.jp>\t(roessler)\n\n\t* mutt.h, mutt.h: The attached patch sets MB_LEN_MAX to 16,\n\twhich is MB_LEN_MAX value on glibc-2.2. It works only with\n\t--without-wc-funcs switch. It may be applied to mutt-1.4 and\n\tmutt-1.5.1.\n\n2002-07-24 09:37:41  Lars Hecking  <lhecking@nmrc.ie>  (roessler)\n\n\t* configure.in, configure.in: Fix a quoting sloppiness.  Noted by\n\tVincent Lefevre.\n\n2002-07-24 09:33:59  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* browser.c, browser.c: Fixing #1282.  An off-by-one error. :-/\n\n2002-07-24 09:20:22  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* mutt.h, send.c, hook.c, init.h: reply-hook.  Documentation\n\tstill needed.\n\n2002-07-24 09:06:06  Vincent Lefevre  <vincent@vinc17.org>  (roessler)\n\n\t* po/fr.po: update.\n\n2002-07-24 08:41:31  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* doc/mutt.man, compose.c, editmsg.c, init.c, init.h, attach.c,\n\tdoc/mutt.man, compose.c, editmsg.c, init.c, init.h, attach.c:\n\tFix $editor and $visual.  Based on an earlier patch from Edmund\n\tGrimley Evans.\n\n2002-07-19 19:23:21  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* doc/manual.sgml.head: Another documentation patch.\n\n2002-07-17 12:48:38  Rocco Rutte  <s1118644@mail.inf.tu-dresden.de>\n(roessler)\n\n\t* sendlib.c: * Thomas Roessler [02-07-08 10:14:53 +0200]\n\twrote: >  * sendlib.c, 3.12 -> 3.13 >\t From: Rocco Rutte\n\t<s1118644@mail.inf.tu-dresden.de>\n\n\t>    Make encode_from a bit more aggressive, by also catching a\n\t'f' in >    the beginning of a line.\n\n\t'Catch' is good but also to encode it is better. It may have\n\tbeen too late (sorry for that) so I fixed it. I don't know why\n\tthe current source only escapes lines that actually begin with\n\t'from' or 'From' followed by some text. I think that escaping\n\t'from' or 'From' on a single line should be done, too.\n\n\tNot a big deal, anyways.\n\n2002-07-16 07:28:11  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* main.c, main.c: Update copyright notices.\n\n2002-07-07 19:33:50  Cedric Duval  <cedricduval@free.fr>  (roessler)\n\n\t* doc/manual.sgml.head, doc/mutt.man, init.h: Documentation fixes.\n\n2002-07-07 19:29:05  \"TAKAHASHI, Tamotsu\"  <arms405@jade.dti.ne.jp>\n(roessler)\n\n\t* doc/manual.sgml.head: Dcumentation fixes.\n\n2002-07-07 19:23:22  Cedric Duval  <cedricduval@free.fr>  (roessler)\n\n\t* doc/manual.sgml.head, doc/mutt.man, init.h: Documentation fixes.\n\n2002-07-07 19:22:19  Rocco Rutte  <s1118644@mail.inf.tu-dresden.de>\n(roessler)\n\n\t* sendlib.c: Make encode_from a bit more aggressive, by also\n\tcatching a 'f' in the beginning of a line.\n\n2002-07-07 19:13:03  Velko Hristov  <hristov@informatik.hu-berlin.de>\n(roessler)\n\n\t* po/bg.po: Update.\n\n2002-07-07 19:11:15  Jeremy Blosser  <jblosser-mutt@firinn.org>\n(roessler)\n\n\t* init.h: Add unauto_view to the stable branch.  A one-liner.\n\n2002-06-28 19:52:31  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* doc/manual.sgml.head, doc/manual.sgml.head: Documentation fix\n\t(#271).\n\n2002-06-18 10:03:52  (automatic)  (roessler)\n\n\t* po/zh_TW.po, po/tr.po, po/uk.po, po/zh_CN.po, po/sv.po,\n\tpo/sk.po, po/ru.po, po/pt_BR.po, po/nl.po, po/pl.po, po/ja.po,\n\tpo/ko.po, po/lt.po, po/it.po, po/gl.po, po/hu.po, po/id.po,\n\tpo/eo.po, po/es.po, po/et.po, po/fr.po, po/el.po, po/da.po,\n\tpo/de.po, po/ca.po, po/cs.po: \"make update-po\"\n\n2002-06-18 10:02:44  several submitters  (roessler)\n\n\t* po/ca.po: Adding a BG translation.  Update for CA.\n\n2002-06-18 10:02:43  roessler  (roessler)\n\n\t* po/bg.po: branches:  1.1.2; file bg.po was initially added on\n\tbranch mutt-1-4-stable.\n\n2002-06-18 10:02:43  several submitters  (roessler)\n\n\t* po/bg.po: Adding a BG translation.  Update for CA.\n\n\t* configure.in: Adding a BG translation.\n\n2002-06-18 09:53:12  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* init.c, init.c: The string used to store the commmand for a\n\tbacktic expansion in the muttrc was not free'd if the command\n\tfailed for some reason.\n\n2002-06-18 09:52:13  David Champion  <dgc@uchicago.edu>  (roessler)\n\n\t* m4/gssapi.m4: Okay, two bugs here. One's an oversight of mine\n\tin my previous patch, where I tried to use \"[hH]\" as Bourne code\n\twhile m4 had quoting set to ([, ]) -- this probably makes mutt\n\tmis-detect Heimdal after all.\n\n\tThe other is not mine (i.e., it's in cvs now) and it makes mutt\n\toverstrike $LIBS if Heimdal or MIT Kerberos is detected. This is\n\ta problem for anyone who needs -lnsl -lsocket, in particular. I\n\twas fixing this by hand during late 1.3.x releases, as I didn't\n\thave time to track it down....\n\n\tHere's a patch against the current (unpatched) 1.5 cvs copy of\n\tm4/gssapi.m4. It probably should go into both branches. Sorry\n\tfor the repeats.\n\n2002-06-06 23:13:54  Michael Elkins  <me@sigpipe.org>  (roessler)\n\n\t* color.c: Fix #1230.\n\n2002-06-06 12:22:05  Will Fiveash  <william.fiveash@sun.com>  (roessler)\n\n\t* init.h, init.h: Fix a couple of compile-time warnings.\n\n2002-05-31 16:59:39  Edmund GRIMLEY EVANS  <edmundo@rano.org>  (roessler)\n\n\t* charset.c, charset.h, sendlib.c, charset.c, charset.h,\n\tsendlib.c: Fix charset-hook.\n\n2002-05-31 16:45:49  Lars Hecking  <lhecking@nmrc.ucc.ie>  (roessler)\n\n\t* m4/iconv.m4, INSTALL, charset.h, configure.in: The noiconv\n\tpatch.\tShould probably have been in 1.4.\n\n2002-05-30 12:15:02  Thomas Roessler  <roessler@does-not-exist.org>\n(roessler)\n\n\t* rfc822.c: Properly handle empty addresses (<>) when they show\n\tup in mail headers.  The approach taken is to store this address\n\tas <@>, and to check this special case when printing an address.\n\n2002-05-29 09:31:51  roessler  (roessler)\n\n\t* po/zh_CN.po, po/zh_TW.po, po/uk.po, po/tr.po, po/sk.po,\n\tpo/sv.po, po/pl.po, po/pt_BR.po, po/ru.po, po/ko.po, po/lt.po,\n\tpo/nl.po, po/it.po, po/ja.po, po/fr.po, po/gl.po, po/hu.po,\n\tpo/id.po, po/eo.po, po/es.po, po/et.po, po/da.po, po/de.po,\n\tpo/el.po, VERSION, po/ca.po, po/cs.po, reldate.h, ChangeLog:\n\tautomatic post-release commit for mutt-1.4\n"
  },
  {
    "path": "GPL",
    "content": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n                 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Library General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\f\n\t\t    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\f\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\f\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\f\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\f\n\t    How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program; if not, write to the Free Software\n    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\n\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Library General\nPublic License instead of this License.\n"
  },
  {
    "path": "INSTALL",
    "content": "Supported platforms\n===================\n\nMutt has been reported to compile and run under the following Unix operating\nsystems:\n\n\tAIX\n\tBSDI\n\tConvex\n\tData General Unix (DG/UX)\n\tDigital Unix (OSF/1)\n\tDYNIX/ptx\n\tFreeBSD\n\tHP-UX\n\tIRIX\n\tLinux\n\tMac OS X\n\tAtari MiNT\n\tMkLinux\n\tNetBSD\n\tOpenBSD\n\tQNX\n\tSCO Unix 3.2v4/5\n\tSolaris\n\tSunOS\n\tUltrix\n\tUnixWare\n\n- If you are building from Mercurial, or if you are changing parts of mutt,\n  particularly the build system, do read doc/devel-notes.txt.\n\n- An ANSI C compiler (such as GCC) is required.\n\n- You must also have a SysV compatible curses library, or you must\n  install either\n\n\tGNU ncurses, ftp://prep.ai.mit.edu/pub/gnu/\n  or\n\tS-Lang, ftp://space.mit.edu/pub/davis/slang/\n\n- Mutt needs an implementation of the iconv API for character set\n  conversions.  A free one can be found under the following URL:\n\n\thttp://www.gnu.org/software/libiconv/\n\n- For building the manual, mutt needs the DocBook XSL stylesheets\n  as well as the DocBook DTD as of version 4.2 installed locally.\n  For details, please see the section \"Generating Mutt Documentation\n  From Source\" in doc/devel-notes.txt.\n\n\nInstallation\n============\n\nInstalling Mutt is rather painless through the use of the GNU\nautoconf package.  Simply untar the Mutt distribution, and run the\n``configure'' script.  If you have obtained the distribution from\nthe Mercurial repository, run the ``prepare'' script with the same command\nline parameters you would pass to configure.  It will set up mutt's\nbuild environment and add the files which are present in the tar\nballs, but not in the Mercurial repository.\n\nIn most cases, configure will automatically determine everything it\nneeds to know in order to compile.  However, there are a few options\nto ``configure'' to help it out, or change the default behavior:\n\n--prefix=DIR\n\tinstall Mutt in DIR instead of /usr/local\n\n--with-curses=DIR\n\tuse the curses lib in DIR/lib.  If you have ncurses, ``configure''\n\twill automatically look in /usr/include/ncurses for the include\n\tfiles.\n\n--with-slang[=DIR]\n\tuse the S-Lang library instead of ncurses.  This library seems to\n\twork better for some people because it is less picky about proper\n\ttermcap entries than ncurses.  It is recommended that you use at\n\t*least* version 0.99-38 with Mutt.\n\n--with-mailpath=DIR\n\tspecify where the spool mailboxes are located on your system\n\n--with-homespool[=FILE]\n\ttreat file in the user's home directory as the spool mailbox.  Note\n\tthat this is *not* the full pathname, but relative to the user's\n\thome directory.  Defaults to \"mailbox\" if FILE is not specified.\n\n--enable-pop\n\tenable POP3 support\n\n--enable-imap\n\tenable IMAP support\n\n--with-gss[=PFX]\n\tEnable GSSAPI authentication to IMAP servers. This should work with\n\tboth MIT and Heimdal GSSAPI implementations - others haven't been\n\ttested. Note that the Cyrus SASL library also supports GSSAPI,\n\tand may be able to encrypt your session with it - you should use\n\tSASL instead if you can.\n\n--with-ssl[=PFX]\n\tenable SSL support with IMAP and POP. SSL support requires you to\n\thave OpenSSL headers and libraries properly installed before\n\tcompiling.  If the OpenSSL headers and libraries are not in the\n\tdefault system pats you can use the optional PFX argument to\n\tdefine the root directory of your installation.  The libraries\n\tare then expected to be found in PFX/lib and headers in\n\tPFX/include/openssl.\n\n--with-sasl[=PFX]\n\tUse the Cyrus SASL library for IMAP or POP authentication. This\n\tlibrary provides generic support for several authentication methods,\n\tand more may be added by the system administrator without recompiling\n\tmutt. SASL may also be able to encrypt your mail session even if\n\tSSL is not available.\n\n--disable-nls\n\tThis switch disables mutt's native language support.\n\n--with-included-gettext \n\tMutt will be built using the GNU gettext library included in\n\tthe intl/ sub-directory.  You may need to use this switch if\n\tyour machine has something which looks like gettext to the\n\tconfigure script, but isn't able to cope with mutt's catalog\n\tfiles.\n\n--with-regex\n\tuse GNU regex instead of local regexp routines.  Many systems\n\tdon't have the POSIX compliant regcomp/regexec/regfree\n\troutines, so this provides a way to support them.\n\n--enable-flock\n\tuse flock() to lock files.  \n\n--disable-fcntl\n\tby default, Mutt uses fcntl() to lock files.  Over NFS this can\n\tresult in poor performance on read/write.  Note that using this\n\toption could be dangerous if dotlocking is also disabled.\n\t\n--enable-nfs-fix\n\tsome implementations of NFS do not always write the\n\tatime/mtime of small files.  This means that Mutt's ``mailboxes''\n\tfeature does not always work properly, as it uses these\n\tattributes to work out whether the file has new mail.  This\n\toption enables a workaround to this bug.\n\n--enable-locales-fix\n\ton some systems, the result of isprint() can't be used reliably\n\tto decide which characters are printable, even if you set the\n\tLANG environment variable.  If you set this option, Mutt will\n\tassume all characters in the ISO-8859-* range are printable.  If\n\tyou leave it unset, Mutt will attempt to use isprint() if either\n\tof the environment variables LANG, LC_ALL or LC_CTYPE is set,\n\tand will revert to the ISO-8859-* range if they aren't.\n\tIf you need --enable-locales-fix then you will probably need\n\t--without-wc-funcs too. However, on a correctly configured\n\tmodern system you shouldn't need either (try setting LANG,\n\tLC_ALL or LC_CTYPE instead).\n\n--without-wc-funcs\n\tby default Mutt uses the functions mbrtowc(), wctomb() and\n\twcwidth() provided by the system, when they are available.\n\tWith this option Mutt will use its own version of those\n\tfunctions, which should work with 8-bit display charsets, UTF-8,\n\teuc-jp or shift_jis, even if the system doesn't normally support\n\tthose multibyte charsets.\n\n\tIf you find Mutt is displaying non-ascii characters as octal\n\tescape sequences (e.g. \\243), even though you have set LANG and\n\tLC_CTYPE correctly, then you might find you can solve the problem\n\twith either or both of --enable-locales-fix and --without-wc-funcs.\n\n--with-exec-shell=SHELL\n\ton some versions of unix, /bin/sh has a bug that makes using emacs\n\twith mutt very difficult.  If you have the problem that whenever\n\tyou press control-G in emacs, mutt and emacs become very confused,\n\tyou may want to try using a Bourne-derived shell other than\n\t/bin/sh here.  Some shells that may work are bash, zsh, and ksh.\n\tC shells such as csh and tcsh will amost certainly not work right.\n\tNote that this option is unrelated to what shell mutt gives you\n\twhen you press '!'.  Only use this option to solve the above problem,\n\tand only specify one of the above shells as its argument.\n\n\t(If you encounter this problem with your platform's native\n\tBourne shell, please send a short report to mutt-dev@mutt.org,\n\tso a short note on this topic can be added to the Platform notes\n\tsection below.)\n\n--enable-exact-address\n\tBy default, Mutt will rewrite all addresses in the form\n\t\tPersonal Name <user@host.domain>\n\tregardless of the input.  By enabling this option, Mutt will write\n\taddresses in the same form they are parsed.  NOTE: this requires\n\tsignificantly more memory.\n\nOnce ``configure'' has completed, simply type ``make install.''\n\nMutt should compile cleanly (without errors) and you should end up with a\nbinary called ``mutt.''  If you get errors about undefined symbols like\nA_NORMAL or KEY_MIN, then you probably don't have a SysV compliant curses\nlibrary.  You should install either ncurses or S-Lang (see above), and then\nrun the ``configure'' script again.\n\nPlease note that \"VPATH\" builds currently only work with GNU make (gmake).\n\n\n\nCharacter set support\n=====================\n\nMutt no longer contains functions for doing character set conversion.\nInstead, it expects the iconv functions (iconv_open, iconv,\niconv_close) to be provided. Most up-to-date systems provide these\nfunctions, often as part of the C library. If you are installing Mutt\non a system which does not have them, it is recommended that you\ninstall Bruno Haible's portable libiconv library, which you can obtain\nfrom:\n\n\t       ftp://ftp.ilog.fr/pub/Users/haible/gnu/\n\nEven if your system does provide the iconv functions, you might want\nto install libiconv, as some systems provide only a very limited\nversion of iconv.\n\n\nIf you decide to use your system's iconv implementation, you may\nneed to tell mutt about implementation-defined names for some\ncharacter sets.  Sample configuration files for various systems can\nbe found in the directory contrib/iconv/ in this source\ndistribution, and will be installed in the samples/iconv directory\nas part of mutt's documentation.\n\nIn order to use these sample configuration files, just put a line\nlike\n\n     source /usr/local/doc/mutt/samples/iconv/iconv.osf1-4.0d.rc\n\ninto your system's global Muttrc, which normally resides in /etc or\n/usr/local/etc.\n\n\nIf you really want to, you can configure Mutt --disable-iconv, but\nthere will then be no character set conversion.\n\n\nPlatform Notes\n==============\n\nAll platforms\n\n\tThere is a bug in most (if not all) S-Lang versions which\n\tprevents the Meta key from working with mutt.  A patch can\n\tbe found in the file contrib/patch.slang-1.2.2.keypad.1 in\n\tthis mutt distribution.\n\n\nSolaris 2.4\n\n\tThe system regcomp() and regexec() routines are very badly\n\tbroken.  This should be automatically detected by the\n\tconfigure script.  If not, use the --with-regex switch when\n\tconfiguring mutt.\n\n\tWe are also hearing reports that Solaris 2.4's NLS libraries\n\tdump core with mutt when using a locale different from \"C\".\n\tUse the --with-included-gettext configuration switch if you\n\texperience this problem.\n\n\tColor does not work right with Solaris curses.  You will\n\thave to compile with either ncurses or slang to get working\n\tcolor support.\n\nSolaris 2.6\n\n\tThere are reports that mutt behaves strangely when linked with\n\tthe system regexp library.  Please use the --with-regex switch\n\twhen configuring on this platform.\n\n \tFor the real fix, applying Sun patches # 105490-05 (linker\n\tpatch) and # 105210-17 (libc and malloc patch) from\n\tsunsolve.sun.com has been reported to stop these problems\n\tfrom occurring.\n\nLinux\n\n\tOn recent Linux systems, flock() and fcntl() locks don't mix.  If\n\tyou use the --enable-flock switch on such systems, be sure to\n\tgive the --disable-fcntl argument as well.\n\nSparc Linux\n\n\tRedhat 4.2 Sparc users reported problems with some system\n\tinclude files when building mutt.  Configuring mutt with the\n\t--disable-warnings switch is said to help against this problem.\n\n\nDigital Unix (OSF/1)\n\n\tThe system curses library is said to be badly broken.  Use GNU\n\tncurses or SLang instead.\n"
  },
  {
    "path": "Makefile.am",
    "content": "## Process this file with automake to produce Makefile.in\n## Use aclocal -I m4; automake --foreign\ninclude $(top_srcdir)/flymake.am\n\nAUTOMAKE_OPTIONS = 1.6 foreign\nEXTRA_PROGRAMS = mutt_dotlock pgpring pgpewrap mutt_md5\n\nif BUILD_IMAP\nIMAP_SUBDIR = imap\nIMAP_INCLUDES = -I$(top_srcdir)/imap\nendif\n\nSUBDIRS = m4 po intl doc contrib $(IMAP_SUBDIR)\n\nbin_SCRIPTS = muttbug flea $(SMIMEAUX_TARGET)\n\nif BUILD_HCACHE\nHCVERSION = hcversion.h\nendif\n\nBUILT_SOURCES = keymap_defs.h patchlist.c reldate.h conststrings.c $(HCVERSION)\n\nbin_PROGRAMS = mutt $(DOTLOCK_TARGET) $(PGPAUX_TARGET)\nmutt_SOURCES = \\\n\taddrbook.c alias.c attach.c base64.c browser.c buffy.c color.c \\\n\tcrypt.c cryptglue.c \\\n\tcommands.c complete.c compose.c copy.c curs_lib.c curs_main.c date.c \\\n\tedit.c enter.c flags.c init.c filter.c from.c \\\n\tgetdomain.c group.c \\\n\thandler.c hash.c hdrline.c headers.c help.c hook.c keymap.c \\\n\tmain.c mbox.c menu.c mh.c mx.c pager.c parse.c pattern.c \\\n\tpostpone.c query.c recvattach.c recvcmd.c \\\n\trfc822.c rfc1524.c rfc2047.c rfc2231.c rfc3676.c \\\n\tscore.c send.c sendlib.c signal.c sort.c \\\n\tstatus.c system.c thread.c charset.c history.c lib.c \\\n\tmuttlib.c editmsg.c mbyte.c mutt_idna.c \\\n\turl.c ascii.c crypt-mod.c crypt-mod.h safe_asprintf.c\n\nnodist_mutt_SOURCES = $(BUILT_SOURCES)\n\nmutt_LDADD = $(MUTT_LIB_OBJECTS) $(LIBOBJS) $(LIBIMAP) $(MUTTLIBS) \\\n\t$(INTLLIBS) $(LIBICONV)  $(GPGME_LIBS)\n\nmutt_DEPENDENCIES = $(MUTT_LIB_OBJECTS) $(LIBOBJS) $(LIBIMAPDEPS) \\\n\t$(INTLDEPS)\n\nDEFS=-DPKGDATADIR=\\\"$(pkgdatadir)\\\" -DSYSCONFDIR=\\\"$(sysconfdir)\\\" \\\n\t-DBINDIR=\\\"$(bindir)\\\" -DMUTTLOCALEDIR=\\\"$(datadir)/locale\\\" \\\n\t-DHAVE_CONFIG_H=1\n\nAM_CPPFLAGS=-I. -I$(top_srcdir) $(IMAP_INCLUDES) $(GPGME_CFLAGS) -Iintl\n\nEXTRA_mutt_SOURCES = account.c bcache.c crypt-gpgme.c crypt-mod-pgp-classic.c \\\n\tcrypt-mod-pgp-gpgme.c crypt-mod-smime-classic.c \\\n\tcrypt-mod-smime-gpgme.c dotlock.c gnupgparse.c hcache.c md5.c \\\n\tmutt_sasl.c mutt_socket.c mutt_ssl.c mutt_ssl_gnutls.c \\\n\tmutt_tunnel.c pgp.c pgpinvoke.c pgpkey.c pgplib.c pgpmicalg.c \\\n\tpgppacket.c pop.c pop_auth.c pop_lib.c remailer.c resize.c sha1.c \\\n\tsmime.c smtp.c utf8.c wcwidth.c \\\n\tbcache.h browser.h hcache.h mbyte.h mutt_idna.h remailer.h url.h\n\nEXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO UPDATING \\\n\tconfigure account.h \\\n\tattach.h buffy.h charset.h copy.h crypthash.h dotlock.h functions.h gen_defs \\\n\tglobals.h hash.h history.h init.h keymap.h mutt_crypt.h \\\n\tmailbox.h mapping.h md5.h mime.h mutt.h mutt_curses.h mutt_menu.h \\\n\tmutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h \\\n\tmx.h pager.h pgp.h pop.h protos.h rfc1524.h rfc2047.h \\\n\trfc2231.h rfc822.h rfc3676.h sha1.h sort.h mime.types VERSION prepare \\\n\t_regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h \\\n\tmbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h \\\n\tREADME.SSL smime.h group.h \\\n\tmuttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \\\n\tChangeLog mkchangelog.sh mutt_idna.h \\\n\tsnprintf.c regex.c crypt-gpgme.h hcachever.sh.in \\\n\ttxt2c.c txt2c.sh version.sh check_sec.sh\n\nEXTRA_SCRIPTS = smime_keys\n\nif BUILD_SIDEBAR\nmutt_SOURCES += sidebar.c sidebar.h\nendif\n\nEXTRA_DIST += OPS.SIDEBAR\n\nif BUILD_NOTMUCH\nmutt_SOURCES += mutt_notmuch.c mutt_notmuch.h\nmutt_LDADD += $(NOTMUCH_LIBS)\nendif\n\n# kz\nEXTRA_DIST += UPDATING.kz VERSION.kz README.notmuch OPS.NOTMUCH\n\n\n\nmutt_dotlock_SOURCES = mutt_dotlock.c\nmutt_dotlock_LDADD = $(LIBOBJS)\nmutt_dotlock_DEPENDENCIES = $(LIBOBJS)\n\npgpring_SOURCES = pgppubring.c pgplib.c lib.c extlib.c sha1.c md5.c pgppacket.c ascii.c\npgpring_LDADD = $(LIBOBJS) $(INTLLIBS)\npgpring_DEPENDENCIES = $(LIBOBJS) $(INTLDEPS)\n\nmutt_md5_SOURCES = md5.c\nmutt_md5_CFLAGS = -DMD5UTIL\nmutt_md5_LDADD =\n\ntxt2c_SOURCES = txt2c.c\ntxt2c_LDADD =\n\nnoinst_PROGRAMS = $(MUTT_MD5) txt2c\n\nmutt_dotlock.c: dotlock.c\n\tcp $(srcdir)/dotlock.c mutt_dotlock.c\n\nconststrings.c: txt2c config.status\n\t( \\\n\t\t$(CC) -v || \\\n\t\t$(CC) --version || \\\n\t\t$(CC) -V || \\\n\t\techo \"unknown compiler\"; \\\n\t) 2>&1 | ${srcdir}/txt2c.sh cc_version >conststrings_c\n\techo \"$(CFLAGS)\" | ${srcdir}/txt2c.sh cc_cflags >>conststrings_c\n\tgrep ac_cs_config= config.status | \\\n\tcut -d= -f2- | \\\n\tsed -e 's/^\"//' -e 's/\"$$//' | ${srcdir}/txt2c.sh configure_options >>conststrings_c\n\tmv -f conststrings_c conststrings.c\n\nCLEANFILES = mutt_dotlock.c keymap_alldefs.h $(BUILT_SOURCES)\n\nDISTCLEANFILES= flea smime_keys txt2c po/$(PACKAGE).pot\n\nACLOCAL_AMFLAGS = -I m4\n\nLDADD = $(LIBOBJS) $(INTLLIBS)\n\nflea:\tmuttbug.sh\n\tcp muttbug.sh flea\n\tchmod +x flea\n\nsmime_keys: $(srcdir)/smime_keys.pl\n\tcp $(srcdir)/smime_keys.pl smime_keys\n\tchmod +x smime_keys\n\nkeymap_defs.h: $(OPS) $(srcdir)/gen_defs\n\t$(srcdir)/gen_defs $(OPS) > keymap_defs.h\n\nkeymap_alldefs.h: $(srcdir)/OPS $(srcdir)/OPS.SIDEBAR $(srcdir)/OPS.NOTMUCH $(srcdir)/OPS.PGP $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME $(srcdir)/gen_defs\n\trm -f $@\n\t$(srcdir)/gen_defs $(srcdir)/OPS $(srcdir)/OPS.NOTMUCH $(srcdir)/OPS.PGP \\\n\t\t$(srcdir)/OPS.SIDEBAR $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME \\\n\t\t\t> keymap_alldefs.h\n\nreldate.h: $(srcdir)/ChangeLog\n\techo 'const char *ReleaseDate = \"'`head -n 1 $(srcdir)/ChangeLog | LC_ALL=C cut -d ' ' -f 1`'\";' > reldate.h.tmp; \\\n\tcmp -s reldate.h.tmp reldate.h || cp reldate.h.tmp reldate.h; \\\n\trm reldate.h.tmp\n\n# The '#undef ENABLE_NLS' is to work around an automake ordering issue:\n# BUILT_SOURCES are processed before SUBDIRS.\n# If configured with --with-included-gettext this means that intl will\n# not have generated libintl.h yet, and mutt.h -> lib.h will generate\n# an error.\nhcversion.h: $(srcdir)/mutt.h $(srcdir)/rfc822.h hcachever.sh $(MUTT_MD5)\n\t( echo '#include \"config.h\"'; echo '#undef ENABLE_NLS'; echo '#include \"mutt.h\"'; ) \\\n\t| $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) - | sh ./hcachever.sh hcversion.h\n\npatchlist.c: $(srcdir)/PATCHES $(srcdir)/patchlist.sh\n\t$(srcdir)/patchlist.sh < $(srcdir)/PATCHES > patchlist.c\n\ninstall-exec-hook:\n\tif test -f $(DESTDIR)$(bindir)/mutt.dotlock && test -f $(DESTDIR)$(bindir)/mutt_dotlock ; then\t\\\n\t\trm -f $(DESTDIR)$(bindir)/mutt.dotlock ;\t\t\\\n\t\tln -sf $(DESTDIR)$(bindir)/mutt_dotlock $(DESTDIR)$(bindir)/mutt.dotlock ; \\\n\tfi\n\tif test -f $(DESTDIR)$(bindir)/mutt_dotlock && test x$(DOTLOCK_GROUP) != x ; then \\\n\t\tchgrp $(DOTLOCK_GROUP) $(DESTDIR)$(bindir)/mutt_dotlock && \\\n\t\tchmod $(DOTLOCK_PERMISSION) $(DESTDIR)$(bindir)/mutt_dotlock || \\\n\t\t{ echo \"Can't fix mutt_dotlock's permissions!  This is required to lock mailboxes in the mail spool directory.\" >&2 ; exit 1 ; } \\\n\tfi\n\ninstall-data-local:\n\t$(MKDIR_P) $(DESTDIR)$(sysconfdir)\n\t$(INSTALL) -m 644 $(srcdir)/mime.types $(DESTDIR)$(sysconfdir)/mime.types.dist\n\t-if [ ! -f $(DESTDIR)$(sysconfdir)/mime.types ]; then \\\n\t\t$(INSTALL) -m 644 $(srcdir)/mime.types $(DESTDIR)$(sysconfdir); \\\n\tfi\n\nuninstall-local:\n\tfor i in mime.types ; do \\\n\t\tif cmp -s $(DESTDIR)$(sysconfdir)/$$i.dist $(DESTDIR)$(sysconfdir)/$$i ; then \\\n\t\t\trm $(DESTDIR)$(sysconfdir)/$$i ; \\\n\t\tfi ; \\\n\t\trm $(DESTDIR)$(sysconfdir)/$${i}.dist ; \\\n\tdone\n\npclean:\n\tcat /dev/null > $(top_srcdir)/PATCHES\n\ncheck-security:\n\t(cd $(top_srcdir) && ./check_sec.sh)\n\ncommit:\n\t@echo \"make commit is obsolete; use hg-commit\"; false\n\nupdate-changelog:\n\t(cd $(top_srcdir); \\\n\tsh ./mkchangelog.sh | cat  - ChangeLog > ChangeLog.$$$$ && mv ChangeLog.$$$$ ChangeLog; \\\n\t$${VISUAL:-vi} ChangeLog)\n\nmutt-dist:\n\t(cd $(srcdir) && ./build-release )\n\nupdate-doc:\n\t(cd doc && $(MAKE) update-doc)\n\n.PHONY: commit pclean check-security\n"
  },
  {
    "path": "NEWS",
    "content": "\t\t   Visible changes since Mutt 1.2\n\t\t   ==============================\n\n\nFolder formats and folder access\n--------------------------------\n\n- Better mh support: Mutt now supports .mh_sequences files.\n  Currently, the \"unseen\", \"flagged\", and \"replied\" sequences are\n  used to store mutt flags (the names are configurable using the\n  $mh_seq_unseen, $mh_seq_flagged, and $mh_seq_replied configuration\n  variables). As a side effect, messages in MH folders are no longer\n  rewritten upon status changes.\n\n- The \"trashed\" flag is supported for maildir folders.  See\n  $maildir_trash.\n\n- POP folder support.  You can now access a POP mailbox just like an\n  IMAP folder (with obvious restrictions due to the protocol).\n\n- URL syntax for remote folders.  You can pass things like\n  pop://account@host and imap://account@host/folder as arguments for\n  the -f command line flag.\n\n- STARTTLS support.  If $ssl_starttls is set (the default), mutt\n  will attempt to use STARTTLS on servers advertising that\n  capability.\n\n- $preconnect.  If set, a shell command to be executed if mutt fails\n  to establish a connection to the server.  This is useful for\n  setting up secure connections; see the muttrc(5) for details.\n\n- $tunnel.  Use a pipe to a command instead of a raw socket.  See\n  muttrc(5) for details.  (Basically, it's another way for setting\n  up secure connections.)\n\n- More new IMAP/POP-related variables (see muttrc(5) for details):\n  $connect_timeout, $imap_authenticators, $imap_delim_chars,\n  $imap_peek, $pop_authenticators, $pop_auth_try_all,\n  $pop_checkinterval, $pop_delete, $pop_reconnect, $use_ipv6.\n\n- The following IMAP/POP-related variables are gone:\n  $imap_checkinterval, $imap_cramkey, $pop_port.\n\n- There's a new imap-fetch-mail function, which forces a check for\n  new messages on an IMAP server.\n\n- The new-mailbox function was renamed to create-mailbox, and is\n  bound to C instead of n by default.\n\nCharacter set support\n---------------------\n\n- Mutt now uses the iconv interface for character set conversions.\n  This means that you need either a very modern libc, or Bruno\n  Haible's libiconv, which is available from\n  <http://www.gnu.org/software/libiconv/>.\n\n- With sufficiently recent versions of ncurses and slang, mutt works\n  properly in utf-8 locales.\n\n- On sufficiently modern systems, the $charset variable's value is\n  automatically derived from the locale you use.  (Note, however,\n  that manually setting it to a value which is compatible with your\n  locale doesn't do any harm.)\n\n- $send_charset is a colon-separated list of character sets now,\n  defaulting to us-ascii:iso-8859-1:utf-8.\n\n- charset-hook defines aliases for character sets encountered in\n  messages (say, someone tags his messages with latin15 when he\n  means iso-8859-15), iconv-hook defines local names for character\n  sets (for systems which don't know about MIME names; see\n  contrib/iconv for sample configuration snippets).\n\n- The change-charset function is gone.  Use edit-type (C-e on the\n  compose menu) instead.\n\n- The recode-attachment function is gone.\n\nOther changes\n-------------\n\n- There's a new variable $compose_format for the compose screen's\n  status line.  You can now include the message's approximate\n  on-the-wire size.\n\n- The attachment menu knows about collapsing now: Using\n  collapse-parts (bound to \"v\" by default), you can collapse and\n  uncollapse parts of the attachment tree.  This function is also\n  available from the pager when invoked from the attachment tree.\n\n  Normally, the recvattach menu will start uncollapsed.  However,\n  with the new $digest_collapse option (which is set by default),\n  the individual messages contained in digests will be displayed\n  collapsed.  (That is, there's one line per message.)\n\n- Using $display_filter, you can specify a command which filters\n  messages before they are displayed.\n\n- Using message-hook, you can execute mutt configuration commands\n  before a message is displayed (or formatted before replying).\n\n- If you don't want that mutt moves flagged messages to your mbox,\n  set $keep_flagged.\n\n- Setting the $pgp_ignore_subkeys variable will cause mutt to ignore\n  OpenPGP.  This option is set by default, and it's suggested that\n  you leave it.\n\n- $pgp_sign_micalg has gone.  Mutt now automatically determines what\n  MIC algorithm was used for a particular signature.\n\n- If $pgp_good_sign is set, then a PGP signature is only considered\n  verified if the output from $pgp_verify_command matches this\n  regular expression.  It's suggested that you set this variable to\n  the typical text message output by PGP (or GPG, or whatever)\n  produces when it encounters a good signature.  \n\n- There's a new function, check-traditional-pgp, which is bound to\n  esc-P by default.  It'll check whether a text parts of a message\n  contain PGP encrypted or signed material, and possibly adjust\n  content types.\n\n- $print_split.  If this option is set, $print_command run\n  separately for each message you print.  Useful with enscript(1)'s\n  mail printing mode.\n\n- $sig_on_top.  Include the signature before any quoted or forwarded\n  text.  WARNING: use of this option may provoke flames.\n\n- $text_flowed.  When set, mutt will generate text/plain attachments\n  with the format=flowed parameter.  In order to properly produce\n  such messages, you'll need an appropriate editor mode.  Note that\n  the $indent_string option is ignored with flowed text.\n\n- $to_chars has grown:  Mailing list messages are now tagged with an\n  L in the index. If you want the old behaviour back, add this to\n  your .muttrc: set to_chars=\" +TCF \"\n\n- New emacs-like functions in the line editor: backward-word (M-b),\n  capitalize-word (M-c), downcase-word (M-l), upcase-word (M-u),\n  forward-word (M-f), kill-eow (M-d), tranpose-chars (unbound).\n\n  transpose-chars is unbound by default because external query\n  occupies C-t.  Suggested alternative binding:\n\n\tbind\teditor\t\"\\e\\t\"\t\tcomplete-query\n\tbind\teditor\t\"\\Ct\"\t\ttranspose-chars\n\n- mailto URL support:  You can pass a mailto URL to mutt on the\n  command line.\n\n- If $duplicate_threads is set, mutt's new threading code will\n  thread messages with the same message-id together.  Duplication\n  will be indicated with an equals sign in the thread diagram.\n\n  You can also limit your view to the duplicates (or exclude\n  duplicates from view) by using the \"~=\" pattern.\n"
  },
  {
    "path": "OPS",
    "content": "OP_NULL \"null operation\"\nOP_END_COND \"end of conditional execution (noop)\"\nOP_ATTACH_VIEW_MAILCAP \"force viewing of attachment using mailcap\"\nOP_ATTACH_VIEW_TEXT \"view attachment as text\"\nOP_ATTACH_COLLAPSE \"Toggle display of subparts\"\nOP_BOTTOM_PAGE \"move to the bottom of the page\"\nOP_BOUNCE_MESSAGE \"remail a message to another user\"\nOP_BROWSER_NEW_FILE \"select a new file in this directory\"\nOP_BROWSER_VIEW_FILE \"view file\"\nOP_BROWSER_TELL \"display the currently selected file's name\"\nOP_BROWSER_SUBSCRIBE \"subscribe to current mailbox (IMAP only)\"\nOP_BROWSER_UNSUBSCRIBE \"unsubscribe from current mailbox (IMAP only)\"\nOP_BROWSER_TOGGLE_LSUB \"toggle view all/subscribed mailboxes (IMAP only)\"\nOP_BUFFY_LIST \"list mailboxes with new mail\"\nOP_CHANGE_DIRECTORY \"change directories\"\nOP_CHECK_NEW \"check mailboxes for new mail\"\nOP_COMPOSE_ATTACH_FILE \"attach file(s) to this message\"\nOP_COMPOSE_ATTACH_MESSAGE \"attach message(s) to this message\"\nOP_COMPOSE_EDIT_BCC \"edit the BCC list\"\nOP_COMPOSE_EDIT_CC \"edit the CC list\"\nOP_COMPOSE_EDIT_DESCRIPTION \"edit attachment description\"\nOP_COMPOSE_EDIT_ENCODING \"edit attachment transfer-encoding\"\nOP_COMPOSE_EDIT_FCC \"enter a file to save a copy of this message in\"\nOP_COMPOSE_EDIT_FILE \"edit the file to be attached\"\nOP_COMPOSE_EDIT_FROM \"edit the from field\"\nOP_COMPOSE_EDIT_HEADERS \"edit the message with headers\"\nOP_COMPOSE_EDIT_MESSAGE \"edit the message\"\nOP_COMPOSE_EDIT_MIME \"edit attachment using mailcap entry\"\nOP_COMPOSE_EDIT_REPLY_TO \"edit the Reply-To field\"\nOP_COMPOSE_EDIT_SUBJECT \"edit the subject of this message\"\nOP_COMPOSE_EDIT_TO \"edit the TO list\"\nOP_CREATE_MAILBOX \"create a new mailbox (IMAP only)\"\nOP_EDIT_TYPE \"edit attachment content type\"\nOP_COMPOSE_GET_ATTACHMENT \"get a temporary copy of an attachment\"\nOP_COMPOSE_ISPELL \"run ispell on the message\"\nOP_COMPOSE_NEW_MIME \"compose new attachment using mailcap entry\"\nOP_COMPOSE_TOGGLE_RECODE \"toggle recoding of this attachment\"\nOP_COMPOSE_POSTPONE_MESSAGE \"save this message to send later\"\nOP_COMPOSE_RENAME_FILE \"rename/move an attached file\"\nOP_COMPOSE_SEND_MESSAGE \"send the message\"\nOP_COMPOSE_TOGGLE_DISPOSITION \"toggle disposition between inline/attachment\"\nOP_COMPOSE_TOGGLE_UNLINK \"toggle whether to delete file after sending it\"\nOP_COMPOSE_UPDATE_ENCODING \"update an attachment's encoding info\"\nOP_COMPOSE_WRITE_MESSAGE \"write the message to a folder\"\nOP_COPY_MESSAGE \"copy a message to a file/mailbox\"\nOP_CREATE_ALIAS \"create an alias from a message sender\"\nOP_CURRENT_BOTTOM \"move entry to bottom of screen\"\nOP_CURRENT_MIDDLE \"move entry to middle of screen\"\nOP_CURRENT_TOP \"move entry to top of screen\"\nOP_DECODE_COPY \"make decoded (text/plain) copy\"\nOP_DECODE_SAVE \"make decoded copy (text/plain) and delete\"\nOP_DELETE \"delete the current entry\"\nOP_DELETE_MAILBOX \"delete the current mailbox (IMAP only)\"\nOP_DELETE_SUBTHREAD \"delete all messages in subthread\"\nOP_DELETE_THREAD \"delete all messages in thread\"\nOP_DISPLAY_ADDRESS \"display full address of sender\"\nOP_DISPLAY_HEADERS \"display message and toggle header weeding\"\nOP_DISPLAY_MESSAGE \"display a message\"\nOP_EDIT_MESSAGE \"edit the raw message\"\nOP_EDITOR_BACKSPACE \"delete the char in front of the cursor\"\nOP_EDITOR_BACKWARD_CHAR \"move the cursor one character to the left\"\nOP_EDITOR_BACKWARD_WORD \"move the cursor to the beginning of the word\"\nOP_EDITOR_BOL \"jump to the beginning of the line\"\nOP_EDITOR_BUFFY_CYCLE \"cycle among incoming mailboxes\"\nOP_EDITOR_COMPLETE \"complete filename or alias\"\nOP_EDITOR_COMPLETE_QUERY \"complete address with query\"\nOP_EDITOR_DELETE_CHAR \"delete the char under the cursor\"\nOP_EDITOR_EOL \"jump to the end of the line\"\nOP_EDITOR_FORWARD_CHAR \"move the cursor one character to the right\"\nOP_EDITOR_FORWARD_WORD \"move the cursor to the end of the word\"\nOP_EDITOR_HISTORY_DOWN \"scroll down through the history list\"\nOP_EDITOR_HISTORY_UP \"scroll up through the history list\"\nOP_EDITOR_KILL_EOL \"delete chars from cursor to end of line\"\nOP_EDITOR_KILL_EOW \"delete chars from the cursor to the end of the word\"\nOP_EDITOR_KILL_LINE \"delete all chars on the line\"\nOP_EDITOR_KILL_WORD \"delete the word in front of the cursor\"\nOP_EDITOR_QUOTE_CHAR \"quote the next typed key\"\nOP_EDITOR_TRANSPOSE_CHARS \"transpose character under cursor with previous\"\nOP_EDITOR_CAPITALIZE_WORD \"capitalize the word\"\nOP_EDITOR_DOWNCASE_WORD \"convert the word to lower case\"\nOP_EDITOR_UPCASE_WORD \"convert the word to upper case\"\nOP_ENTER_COMMAND \"enter a muttrc command\"\nOP_ENTER_MASK \"enter a file mask\"\nOP_EXIT \"exit this menu\"\nOP_FILTER \"filter attachment through a shell command\"\nOP_FIRST_ENTRY \"move to the first entry\"\nOP_FLAG_MESSAGE \"toggle a message's 'important' flag\"\nOP_FORWARD_MESSAGE \"forward a message with comments\"\nOP_GENERIC_SELECT_ENTRY \"select the current entry\"\nOP_GROUP_REPLY \"reply to all recipients\"\nOP_HALF_DOWN \"scroll down 1/2 page\"\nOP_HALF_UP \"scroll up 1/2 page\"\nOP_HELP \"this screen\"\nOP_JUMP \"jump to an index number\"\nOP_LAST_ENTRY \"move to the last entry\"\nOP_LIST_REPLY \"reply to specified mailing list\"\nOP_MACRO \"execute a macro\"\nOP_MAIL \"compose a new mail message\"\nOP_MAIN_BREAK_THREAD \"break the thread in two\"\nOP_MAIN_CHANGE_FOLDER \"open a different folder\"\nOP_MAIN_CHANGE_FOLDER_READONLY \"open a different folder in read only mode\"\nOP_MAIN_CLEAR_FLAG \"clear a status flag from a message\"\nOP_MAIN_DELETE_PATTERN \"delete messages matching a pattern\"\nOP_MAIN_IMAP_FETCH \"force retrieval of mail from IMAP server\"\nOP_MAIN_IMAP_LOGOUT_ALL \"logout from all IMAP servers\"\nOP_MAIN_FETCH_MAIL \"retrieve mail from POP server\"\nOP_MAIN_FIRST_MESSAGE \"move to the first message\"\nOP_MAIN_LAST_MESSAGE \"move to the last message\"\nOP_MAIN_LIMIT \"show only messages matching a pattern\"\nOP_MAIN_LINK_THREADS \"link tagged message to the current one\"\nOP_MAIN_NEXT_UNREAD_MAILBOX \"open next mailbox with new mail\"\nOP_MAIN_NEXT_NEW \"jump to the next new message\"\nOP_MAIN_NEXT_NEW_THEN_UNREAD \"jump to the next new or unread message\"\nOP_MAIN_NEXT_SUBTHREAD \"jump to the next subthread\"\nOP_MAIN_NEXT_THREAD \"jump to the next thread\"\nOP_MAIN_NEXT_UNDELETED \"move to the next undeleted message\"\nOP_MAIN_NEXT_UNREAD \"jump to the next unread message\"\nOP_MAIN_PARENT_MESSAGE \"jump to parent message in thread\"\nOP_MAIN_PREV_THREAD \"jump to previous thread\"\nOP_MAIN_PREV_SUBTHREAD \"jump to previous subthread\"\nOP_MAIN_PREV_UNDELETED \"move to the previous undeleted message\"\nOP_MAIN_PREV_NEW \"jump to the previous new message\"\nOP_MAIN_PREV_NEW_THEN_UNREAD \"jump to the previous new or unread message\"\nOP_MAIN_PREV_UNREAD \"jump to the previous unread message\"\nOP_MAIN_READ_THREAD \"mark the current thread as read\"\nOP_MAIN_READ_SUBTHREAD \"mark the current subthread as read\"\nOP_MAIN_SET_FLAG \"set a status flag on a message\"\nOP_MAIN_SYNC_FOLDER \"save changes to mailbox\"\nOP_MAIN_TAG_PATTERN \"tag messages matching a pattern\"\nOP_MAIN_QUASI_DELETE \"delete from mutt, don't touch on disk\"\nOP_MAIN_UNDELETE_PATTERN \"undelete messages matching a pattern\"\nOP_MAIN_UNTAG_PATTERN \"untag messages matching a pattern\"\nOP_MIDDLE_PAGE \"move to the middle of the page\"\nOP_NEXT_ENTRY \"move to the next entry\"\nOP_NEXT_LINE \"scroll down one line\"\nOP_NEXT_PAGE \"move to the next page\"\nOP_PAGER_BOTTOM \"jump to the bottom of the message\"\nOP_PAGER_HIDE_QUOTED \"toggle display of quoted text\"\nOP_PAGER_SKIP_QUOTED \"skip beyond quoted text\"\nOP_PAGER_TOP \"jump to the top of the message\"\nOP_PIPE \"pipe message/attachment to a shell command\"\nOP_PREV_ENTRY \"move to the previous entry\"\nOP_PREV_LINE \"scroll up one line\"\nOP_PREV_PAGE \"move to the previous page\"\nOP_PRINT \"print the current entry\"\nOP_QUERY \"query external program for addresses\"\nOP_QUERY_APPEND \"append new query results to current results\"\nOP_QUIT \"save changes to mailbox and quit\"\nOP_RECALL_MESSAGE \"recall a postponed message\"\nOP_REDRAW \"clear and redraw the screen\"\nOP_REFORMAT_WINCH \"{internal}\"\nOP_RENAME_MAILBOX \"rename the current mailbox (IMAP only)\"\nOP_REPLY \"reply to a message\"\nOP_RESEND \"use the current message as a template for a new one\"\nOP_SAVE \"save message/attachment to a mailbox/file\"\nOP_SEARCH \"search for a regular expression\"\nOP_SEARCH_REVERSE \"search backwards for a regular expression\"\nOP_SEARCH_NEXT \"search for next match\"\nOP_SEARCH_OPPOSITE \"search for next match in opposite direction\"\nOP_SEARCH_TOGGLE \"toggle search pattern coloring\"\nOP_SHELL_ESCAPE \"invoke a command in a subshell\"\nOP_SORT \"sort messages\"\nOP_SORT_REVERSE \"sort messages in reverse order\"\nOP_TAG \"tag the current entry\"\nOP_TAG_PREFIX \"apply next function to tagged messages\"\nOP_TAG_PREFIX_COND \"apply next function ONLY to tagged messages\"\nOP_TAG_SUBTHREAD \"tag the current subthread\"\nOP_TAG_THREAD \"tag the current thread\"\nOP_TOGGLE_NEW \"toggle a message's 'new' flag\"\nOP_TOGGLE_WRITE \"toggle whether the mailbox will be rewritten\"\nOP_TOGGLE_MAILBOXES \"toggle whether to browse mailboxes or all files\"\nOP_TOP_PAGE \"move to the top of the page\"\nOP_UNDELETE \"undelete the current entry\"\nOP_UNDELETE_THREAD \"undelete all messages in thread\"\nOP_UNDELETE_SUBTHREAD \"undelete all messages in subthread\"\nOP_VERSION \"show the Mutt version number and date\"\nOP_VIEW_ATTACH \"view attachment using mailcap entry if necessary\"\nOP_VIEW_ATTACHMENTS \"show MIME attachments\"\nOP_WHAT_KEY \"display the keycode for a key press\"\nOP_MAIN_SHOW_LIMIT \"show currently active limit pattern\"\nOP_MAIN_COLLAPSE_THREAD \"collapse/uncollapse current thread\"\nOP_MAIN_COLLAPSE_ALL \"collapse/uncollapse all threads\"\n"
  },
  {
    "path": "OPS.CRYPT",
    "content": "OP_DECRYPT_SAVE \"make decrypted copy and delete\"\nOP_DECRYPT_COPY \"make decrypted copy\"\nOP_FORGET_PASSPHRASE \"wipe passphrase(s) from memory\"\nOP_EXTRACT_KEYS \"extract supported public keys\"\n"
  },
  {
    "path": "OPS.MIX",
    "content": "OP_MIX_USE \"Accept the chain constructed\"\nOP_MIX_APPEND \"Append a remailer to the chain\"\nOP_MIX_INSERT \"Insert a remailer into the chain\"\nOP_MIX_DELETE \"Delete a remailer from the chain\"\nOP_MIX_CHAIN_PREV \"Select the previous element of the chain\"\nOP_MIX_CHAIN_NEXT \"Select the next element of the chain\"\nOP_COMPOSE_MIX \"send the message through a mixmaster remailer chain\"\n"
  },
  {
    "path": "OPS.NOTMUCH",
    "content": "OP_MAIN_CHANGE_VFOLDER \"open a different virtual folder\"\nOP_MAIN_VFOLDER_FROM_QUERY \"generate virtual folder from query\"\nOP_MAIN_MODIFY_LABELS \"modify (notmuch) tags\"\nOP_MAIN_MODIFY_LABELS_THEN_HIDE \"modify labeld and then hide message\"\nOP_MAIN_ENTIRE_THREAD \"read entire thread of the current message\"\n"
  },
  {
    "path": "OPS.PGP",
    "content": "OP_COMPOSE_ATTACH_KEY \"attach a PGP public key\"\nOP_COMPOSE_PGP_MENU \"show PGP options\"\nOP_MAIL_KEY \"mail a PGP public key\"\nOP_VERIFY_KEY \"verify a PGP public key\"\nOP_VIEW_ID \"view the key's user id\"\nOP_CHECK_TRADITIONAL \"check for classic PGP\"\n"
  },
  {
    "path": "OPS.SIDEBAR",
    "content": "OP_SIDEBAR_NEXT \"Move the highlight to next mailbox\"\nOP_SIDEBAR_NEXT_NEW \"Move the highlight to next mailbox with new mail\"\nOP_SIDEBAR_OPEN \"Open highlighted mailbox\"\nOP_SIDEBAR_PAGE_DOWN \"Scroll the Sidebar down 1 page\"\nOP_SIDEBAR_PAGE_UP \"Scroll the Sidebar up 1 page\"\nOP_SIDEBAR_PREV \"Move the highlight to previous mailbox\"\nOP_SIDEBAR_PREV_NEW \"Move the highlight to previous mailbox with new mail\"\nOP_SIDEBAR_TOGGLE_VIRTUAL \"toggle between mailboxes and virtual mailboxes\"\nOP_SIDEBAR_TOGGLE_VISIBLE \"Make the Sidebar (in)visible\"\n"
  },
  {
    "path": "OPS.SMIME",
    "content": "OP_COMPOSE_SMIME_MENU \"show S/MIME options\"\n"
  },
  {
    "path": "PATCHES",
    "content": "patch-quasi-delete-neo-UNKNOWN\npatch-progress-neo-UNKNOWN\npatch-status-color-neo-UNKNOWN\npatch-index-color-neo-UNKNOWN\npatch-nested-if-neo-UNKNOWN\npatch-cond-date-neo-UNKNOWN\npatch-tls-sni-neo-UNKNOWN\npatch-sidebar-neo-UNKNOWN\n"
  },
  {
    "path": "README",
    "content": "README for mutt-1.5\n===================\n\nWhen updating mutt from an earlier release or from Mercurial, please\nmake sure to read the compatibility notes in ``UPDATING''. Older changes\nbetween mutt-1.2 and mutt-1.4 are listed in NEWS.\n\nIf you got the mutt source code from the public Mercurial repository\n(http://dev.mutt.org/hg/mutt/), please read doc/devel-notes.txt to make\nsure that you have a complete development environment.\n\nInstallation instructions are detailed in ``INSTALL''. The user manual\nis in doc/manual.txt. PGP users should read doc/PGP-Notes.txt.\n\nBefore you start hacking on mutt, read doc/devel-notes.txt.  Before\napplying patches to mutt, read doc/applying-patches.txt.  Please,\nread these files, as they will save you from asking FAQs.\n\nFor more information, see the Mutt home page:\n\n http://www.mutt.org/\n\nThe primary distribution points for Mutt is:\n\n ftp://ftp.mutt.org/pub/mutt\n\nA list of mirror sites can be found under\n<http://www.mutt.org/download.html>.\n"
  },
  {
    "path": "README.SECURITY",
    "content": "$Id$\n\nRecently, there have been reports on security problems induced by\nthe interpretation of shell meta-characters embedded in MIME\nparameters.  These reports were referring to Pine, but the problem\nalso applied when using mutt.\n\nMore precisely, a mailcap entry like this one would lead to\nproblems:\n\n> text/test-mailcap-bug; cat %s; copiousoutput; \\\n>\ttest=test \"`echo %{charset} | tr '[A-Z]' '[a-z]'`\" != iso-8859-1\n\nWhen expanded with a charset parameter of ``touch${IFS}ME``, a file\nnamed \"ME\" would be created in the current directory.\n\nWhile we don't completely agree that this is an actual MUA problem\n(see below), we have implemented a couple of fixes for this:\n\n- Backticks are handled specially when preparing % expandos for\n  mailcap entries.  This fix will keep the current problem from\n  occurring, but we are sure there are other possible mailcap entries\n  where this doesn't help.\n\n- We have added a configuration variable named $mailcap_sanitize,\n  which is set by default.  If set, mutt will restrict possible\n  characters in mailcap % expandos to a well-defined set of safe\n  characters.  This is the safe setting, but we are not sure it\n  doesn't break some more advanced MIME stuff.\n\n>>>  DON'T UNSET THIS OPTION UNLESS YOU KNOW WHAT YOU ARE DOING.\n\n\nAnyway, this problem is not necessarily a problem which should be\nsolved inside the MUA, as it's difficult (maybe impossible) to solve\nthere.  Additionally, there is more than one program which parses\nmailcap.  So writing secure mailcap statements is generally a good\nidea.  We encourage you to do this.\n\nThe most basic rule is this one:\n\n>>>\t     KEEP THE %-EXPANDOS AWAY FROM SHELL QUOTING.\n\nDon't quote them with single or double quotes.  Mutt does this for\nyou, the right way, as should any other program which interprets\nmailcap.  Don't put them into backtick expansions - as you have seen\nabove, this is a recipe for disaster.  Be highly careful with eval\nstatements, and avoid them if possible at all.\n\nIf you have to use the %-expandos' values in context where you need\nquoting or backtick expansions, put that value into a shell variable\nand reference the shell variable where necessary (possibly with the\nproper quoting put around it, like in \"$charset\").\n\nFor example, a safe version of the mailcap statement above could\nlook like this:\n\n> text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \\\n>         && test \"`echo \\\"$charset\\\" | tr '[A-Z]' '[a-z]'`\" != iso-8859-1\n\n"
  },
  {
    "path": "README.SSL",
    "content": "IMAP/SSL in mutt \n================\n\nCompilation\n-----------\nIf you want to have SSL support in mutt, you need to install OpenSSL\n(http://www.openssl.org) libraries and headers before compiling.\nOpenSSL versions 0.9.3 through 1.0.1c have been tested.\n\nFor SSL support to be enabled, you need to run the ``configure''\nscript with ``--enable-imap --with-ssl[=PFX]'' parameters.  If the\nOpenSSL headers and libraries are not in the default system search\npaths (usually /usr/include and /usr/lib) you can use the optional PFX\nargument to define the root directory of your installation.  The\nlibraries are then expected to be found in PFX/lib and headers in\nPFX/include/openssl.\n\n\nUsage\n-----\nIMAP/SSL folders can be accessed just like normal IMAP folders, but you\nwill also have to add '/ssl' before the closing curly brace. Or you can\nuse IMAP url notation, where the methods is called imaps.\n\nFor example:\n\tmailboxes {localhost/ssl}inbox\n\tmailboxes {localhost:994/ssl}inbox\nor\n\tmailboxes imaps://localhost/inbox\n\tmailboxes imaps://localhost:994/inbox\n\nIf you get errors about lack of entropy, it means that Mutt was unable\nto find a source of random data to initialize SSL library with. Should\nthis happen, you need to generate the data yourself and save it in a\nfile pointed by $entropy_file or $RANDFILE (environment) variables or\nin ~/.rnd.\n\nOne way to generate random data would be to run a command which\ngenerates unpredictable output, for example 'ps aluxww' in Linux, and\ncalculating the MD5-sum from the output and saving it in a file.\n\n** Note: The contents of the file pointed by $RANDFILE environment\n** variable (or ~/.rnd if unset) will be overwritten every time Mutt \n** is run so don't put anything you can't afford to lose in that file.\n\nThe files Mutt will try to use to initialize SSL library with are files\npointed by $entropy_file and $RANDFILE (or ~/.rnd if unset.) If your\nOpenSSL is version 0.9.5 or later, the previous files can also be EGD\nsockets (see http://www.lothar.com/tech/crypto/ for more information\nabout Entropy Gathering Daemon) and in addition sockets in the following\nplaces are tried: socket pointed by $EGDSOCKET environment variable,\n~/.entropy and /tmp/entropy.\n\nAll the files and sockets mentioned above must be owned by the user and\nhave permissions of 600.\n\n\nCertificates\n------------\nEach time a server is contacted, its certificate is checked against\nknown valid certificates. When an unknown certificate is encountered,\nyou are asked to verify it. If you reject the certificate, the\nconnection will be terminated immediately. If you accept the\ncertificate, the connection will be established. Accepted certificates\ncan also be saved so that further connections to the server are\nautomatically accepted. \n\nIf OpenSSL was built with support for ServerNameIndication (SNI) and TLS\nis used in the negotiation, mutt will send its idea of the server-name\nas part of the TLS negotiation.  This allows the server to select an\nappropriate certificate, in the event that one server handles multiple\nhostnames with different certificates.\n\nIf your organization has several equivalent IMAP-servers, each of them\nshould have a unique certificate which is signed with a common\ncertificate.  If you want to use all of those servers, you don't need to\nsave each server certificate on the first connect.  Instead, you can get\nthe signer certificate and save it instead.  That way, mutt will\nautomatically accept all certificates signed with the saved certificate.\n\nSystem-wide certificates are by default considered trusted when checking\ncertificates by signer.  This allows system administrators to setup\ntrusted certificates for all users.  How to install certificates\nsystem-wide, depends on the OpenSSL installation.  Use of system-wide\ncertificates can be disabled by unsetting $ssl_usesystemcerts variable.\n\nCertificates will be saved in the file specified by $certificate_file\nvariable.  It is empty as default, so if you don't want to verify\ncertificates each time you connect to a server, you have set this\nvariable to some reasonable value.\n\nFor example:\n\tset certificate_file=~/.mutt/certificates\n\n\nTroubleshooting\n---------------\nIf after doing the above, you are unable to successfully connect, it\nis likely that your IMAP server does not support one of the SSL protocols.\nThere exist three different protocols, TLSv1, SSLv2, and SSLv3.  To check\neach of these, you use the following:\n    openssl s_client -host <imap server> -port <port> -verify -debug -no_tls1\n    openssl s_client -host <imap server> -port <port> -verify -debug -no_ssl2\n    openssl s_client -host <imap server> -port <port> -verify -debug -no_ssl3\n\nYou can also combine the options until you get a successful connect.  Once\nyou know which options do not work, you can set the variables for non-working\nprotocols to know.  The variables for the protocols are ssl_use_tlsv1, \nssl_use_sslv2, and ssl_use_sslv3.\n\nTo verify TLS SNI support by a server, you can use:\n    openssl s_client -host <imap server> -port <port> \\\n        -tls1 -servername <imap server>\n\n\n-- \nTommi Komulainen\nTommi.Komulainen@iki.fi\n\nUpdated by:\n  Jeremy Katz <katzj@linuxpower.org>\n  Phil Pennock <mutt-dev@spodhuis.org>\n"
  },
  {
    "path": "README.cond-date",
    "content": "Conditional Dates Patch\n=======================\n\n    Use rules to choose date format\n\nPatch\n-----\n\n    To check if Mutt supports \"Conditional Dates\", look for \"patch-cond-date\"\n    in the mutt version.\n\n    Dependencies\n    * mutt-1.5.24\n    * nested-if patch\n\nIntroduction\n------------\n\n    The \"cond-date\" patch allows you to construct $index_format expressions\n    based on the age of the email.\n\n    Mutt's default '$index_format' displays email dates in the form:\n    abbreviated-month day-of-month — \"Jan 14\".\n\n    The format is configurable but only per-mailbox. This patch allows you to\n    configure the display depending on the age of the email.\n\n    Potential Formatting Scheme\n\n    | Email Sent        | Format  | Example |\n    |-------------------|---------|---------|\n    | Today             | '%H:%M' | 13:23   |\n    | This Month        | '%a %d' | Thu 17  |\n    | This Year         | '%b %d' | Dec 10  |\n    | Older than 1 Year | '%m/%y' | 06/14   |\n\n    For an explanation of the date formatting strings, see 'strftime(3).'\n\n    By carefully picking your formats, the dates can remain unambiguous and\n    compact.\n\n    Mutt's conditional format strings have the form: (whitespace introduced for\n    clarity)\n\n        %? TEST ? TRUE & FALSE ?\n\n    The examples below use the test \"%[\" — the date of the message in the local\n    timezone. They will also work with \"%(\" — the local time that the message\n    arrived.\n\n    The date tests are of the form:\n\n        %[nX? TRUE & FALSE ?\n\n    * \"n\" is an optional count (defaults to 1 if missing)\n    * \"X\" is the time period\n\n    Date Formatting Codes\n\n    | Letter | Time Period |\n    |--------|-------------|\n    | y      | Years       |\n    | m      | Months      |\n    | w      | Weeks       |\n    | d      | Days        |\n    | H      | Hours       |\n    | M      | Minutes     |\n\n    Date Tests\n\n    | Test   | Meaning              |\n    |--------|----------------------|\n    | '%[y'  | This year            |\n    | '%[1y' | This year            |\n    | '%[6m' | In the last 6 months |\n    | '%[w'  | This week            |\n    | '%[d'  | Today                |\n    | '%[4H' | In the last 4 hours  |\n\n### Example 1\n\n    We start with a one-condition test.\n\n    Example 1\n\n    | Test   | Date Range | Format String | Example    |\n    |--------|------------|---------------|------------|\n    | '%[1m' | This month | '%[%b %d]'    | Dec 10     |\n    |        | Older      | '%[%Y-%m-%d]' | 2015-04-23 |\n\n    The $index_format string would contain:\n\n        %?[1m?%[%b %d]&%[%Y-%m-%d]?\n\n    Reparsed a little, for clarity, you can see the test condition and the two\n    format strings.\n\n        %?[1m?        &           ?\n              %[%b %d] %[%Y-%m-%d]\n\n### Example 2\n\n    This example contains three test conditions and four date formats.\n\n    Example 2\n\n    | Test  | Date Range | Format String | Example |\n    |-------|------------|---------------|---------|\n    | '%[d' | Today      | '%[%H:%M ] '  | 12:34   |\n    | '%[m' | This month | '%[%a %d]'    | Thu 12  |\n    | '%[y' | This year  | '%[%b %d]'    | Dec 10  |\n    |       | Older      | '%[%m/%y ]'   | 06/15   |\n\n    The $index_format string would contain:\n\n        %<[y?%<[m?%<[d?%[%H:%M ]&%[%a %d]>&%[%b %d]>&%[%m/%y ]>\n\n    Reparsed a little, for clarity, you can see the test conditions and the\n    four format strings.\n\n        %<[y?                                       &%[%m/%y ]>  Older\n             %<[m?                        &%[%b %d]>             This year\n                  %<[d?         &%[%a %d]>                       This month\n                       %[%H:%M ]                                 Today\n\n    This a another view of the same example, with some whitespace for clarity.\n\n        %<[y? %<[m? %<[d? AAA & BBB > & CCC > & DDD >\n\n        AAA = %[%H:%M ]\n        BBB = %[%a %d]\n        CCC = %[%b %d]\n        DDD = %[%m/%y ]\n\n\nVariables\n---------\n\n    The \"cond-date\" patch doesn't have any config of its own. It modifies the\n    behavior of the format strings.\n\nSee Also\n--------\n\n    * NeoMutt project\n    * $index_format\n    * nested-if patch\n    * 'strftime(3)'\n\nKnown Bugs\n----------\n\n    Date parsing doesn't quite do what you expect. \"1w\" doesn't mean the \"in\n    the last 7 days\", but \"*this* week\". This doesn't match the normal Mutt\n    behaviour: for example '~d>1w' means emails dated in the last 7 days.\n\nCredits\n-------\n\n    * Aaron Schrab <aaron@schrab.com>\n    * Eric Davis <edavis@insanum.com>\n    * Richard Russon <rich@flatcap.org>\n\n"
  },
  {
    "path": "README.index-color",
    "content": "Index Color Patch\n=================\n\n    Custom rules for theming the email index\n\nPatch\n-----\n\n    To check if Mutt supports \"Index Color\", look for \"patch-index-color\" in\n    the mutt version.\n\n    Dependencies\n    * mutt-1.5.24\n    * status-color patch\n\nIntroduction\n------------\n\n    The \"index-color\" patch allows you to specify colors for individual parts\n    of the email index. e.g. Subject, Author, Flags.\n\n    First choose which part of the index you'd like to color. Then, if needed,\n    pick a pattern to match.\n\n    Note: The pattern does not have to refer to the object you wish to color.\n    e.g.\n\n        color index_author red default \"~smutt\"\n\n    The author appears red when the subject (~s) contains \"mutt\".\n\nColors\n------\n\n    All the colors default to 'default', i.e. unset.\n\n    The index objects can be themed using the 'color' command. Some objects\n    require a pattern.\n\n        color index-object foreground background\n        color index-object foreground background pattern\n\n    Index Colors\n\n    | Object            | Pattern | Highlights                                   |\n    |-------------------|---------|----------------------------------------------|\n    | 'index'           | yes     | Entire index line                            |\n    | 'index_author'    | yes     | Author name, %A %a %F %L %n                  |\n    | 'index_collapsed' | no      | Number of messages in a collapsed thread, %M |\n    | 'index_date'      | no      | Date field                                   |\n    | 'index_flags'     | yes     | Message flags, %S %Z                         |\n    | 'index_label'     | no      | Message label, %y %Y                         |\n    | 'index_number'    | no      | Message number, %C                           |\n    | 'index_size'      | no      | Message size, %c %l                          |\n    | 'index_subject'   | yes     | Subject, %s                                  |\n\nSee Also\n--------\n\n    * NeoMutt project\n    * Regular Expressions\n    * Patterns\n    * $index_format\n    * Color command\n    * Status-Color patch\n    * Keywords patch\n\nKnown Bugs\n----------\n\n    None\n\nCredits\n-------\n\n    * Christian Aichinger <Greek0@gmx.net>\n    * Christoph \"Myon\" Berg <myon@debian.org>\n    * Elimar Riesebieter <riesebie@lxtec.de>\n    * Eric Davis <edavis@insanum.com>\n    * Vladimir Marek <Vladimir.Marek@oracle.com>\n    * Richard Russon <rich@flatcap.org>\n\n"
  },
  {
    "path": "README.nested-if",
    "content": "Nested If Patch\n===============\n\n    Allow complex nested conditions in format strings\n\nPatch\n-----\n\n    To check if Mutt supports \"Nested If\", look for \"patch-nested-if\" in the\n    mutt version.\n\n    Dependencies\n    * mutt-1.5.24\n\nIntroduction\n------------\n\n    Mutt's format strings can contain embedded if-then-else conditions. They\n    are of the form:\n\n        %?VAR?TRUE&FALSE?\n\n    If the variable \"VAR\" has a value greater than zero, print the \"TRUE\"\n    string, otherwise print the \"FALSE\" string.\n\n    e.g. '%?S?Size: %S&Empty?'\n\n    Which can be read as:\n\n        if (%S > 0) {\n            print \"Size: %S\"\n        } else {\n            print \"Empty\"\n        }\n\n\n    These conditions are useful, but in Mutt they cannot be nested within one\n    another. This patch uses the notation '%<VAR?TRUE&FALSE>' and allows them\n    to be nested.\n\n    The '%<...>' notation was used to format the current local time. but that's\n    not really very useful since mutt has no means of refreshing the screen\n    periodically.\n\n    A simple nested condition might be: (Some whitespace has been introduced\n    for clarity)\n\n        %<x? %<y? XY & X > & %<y? Y & NONE > >  Conditions\n             %<y? XY & X >                      x>0\n                  XY                            x>0,y>0\n                       X                        x>0,y=0\n\n\n        %<x? %<y? XY & X > & %<y? Y & NONE > >  Conditions\n                             %<y? Y & NONE >    x=0\n                                  Y             x=0,y>0\n                                      NONE      x=0,y=0\n\n\n    Equivalent to:\n\n        if (x > 0) {\n            if (y > 0) {\n                print 'XY'\n            } else {\n                print 'X'\n            }\n        } else {\n            if (y > 0) {\n                print 'Y'\n            } else {\n                print 'NONE'\n            }\n        }\n\n\n    Examples:\n\n        set index_format='%4C %Z %{%b %d} %-25.25n %s%> %<M?%M Msgs &%<l?%l Lines&%c Bytes>>'\n\n        if a thread is folded\n            display the number of messages (%M)\n        else if we know how many lines in the message\n            display lines in message (%l)\n        else\n            display the size of the message in bytes (%c)\n\n\n        set index_format='%4C %Z %{%b %d} %-25.25n %<M?[%M] %s&%s%* %<l?%l&%c>>'\n\n        if a thread is folded\n            display the number of messages (%M)\n            display the subject (%s)\n        else if we know how many lines in the message\n            display lines in message (%l)\n        else\n            display the size of the message in bytes (%c)\n\n\nVariables\n---------\n\n    The nested-if patch doesn't have any config of its own. It modifies the behavior of the\n    format strings.\n\nSee Also\n--------\n\n    * NeoMutt project\n    * cond-date patch\n    * $index_format\n    * $status_format\n\nKnown Bugs\n----------\n\n    Patch overwrites $<fmt> handler in\n    $index_format\n\nCredits\n-------\n\n    * David Champion <dgc@uchicago.edu>\n    * Richard Russon <rich@flatcap.org>\n\n"
  },
  {
    "path": "README.notmuch",
    "content": "notmuch support for mutt\n------------------------\n\n * notmuch is e-mail fulltext indexing and tagging engine; see\n   http://notmuchmail.org/ for more information.\n\n * home page (wiki) and git:\n\n   https://github.com/karelzak/mutt-kz\n\n   Note that the master branch is rebased to be up to date with mutt upstream. Use\n   stable/v<version> branches for downstream packaging.\n\n * mailing list:\n\n   https://admin.fedoraproject.org/mailman/listinfo/mutt-kz\n\n * requirements:\n\n   notmuch >= 0.9\n\n * compile:\n\n  $ git clone git://github.com/karelzak/mutt-kz.git\n  $ cd mutt-kz\n  $ ./prepare\n  $ ./configure --enable-notmuch [--enable-debug]\n  $ make\n\n * Folders URI\n\n   notmuch://[<path>][?<item>=<name>[& ...]]\n\n   The <path> is an absolute path to the directory where the notmuch database\n   is found as returned by 'notmuch config get database.path' command. Note that\n   the <path> should NOT include .notmuch directory name.\n\n   If the \"<path>\" is not defined then $nm_default_uri or $folder is used,\n   for example:\n\n\tset nm_default_uri = \"notmuch:///home/foo/maildir\"\n\tvirtual-mailboxes \"My INBOX\" \"notmuch://?query=tag:inbox\"\n\n   Items:\n\n      query=<string>\n\n\t See SEARCH SYNTAX in notmuch man page. Don't forget to use \"and\" and\n         \"or\" operators in your queries.\n\n      Note that proper URI should not contain blank space and all \"bad\" chars\n      should be encoded, for example\n\n\t \"tag:AAA and tag:BBB\" --encoding-> tag:AAA%20and%20tag:BBB\n\n      but mutt config file parser is smart enough to accept space in quoted\n      strings. It means that you can use\n\n         \"notmuch:///foo?query=tag:AAA and tag:BBB\"\n\n      in your config files to keep things readable.\n\n      See http://xapian.org/docs/queryparser.html for more details about Xapian\n      queries.\n\n\n      limit=<number>\n\n         Restricts number of messages/threads in the result. The default limit\n         is nm_db_limit.\n\n      type=<threads|messages>\n\n         Reads all matching messages or whole-threads. The default is 'messages'\n         or nm_query_type.\n\n\n * commands:\n\n   change-vfolder:\n      - switch to another virtual folder, a new folder maybe be specified by\n        vfolder description (see virtual-mailboxes) or URI\n      - the default is next vfolder with unread messages\n      - default key: X\n\n   vfolder-from-query:\n      - generate new virtual folder from notmuch search query\n      - default key: <Esc>X\n      - note: TAB completion of 'tag:' names is available\n\n   modify-labels:\n      - add or remove notmuch tags; [+]<tag> to add, -<tag> to remove\n      - default key: `\n      - note: TAB completion of tag names is available\n      - example: \"+AAA +BBB -CCC\"\n\n   modify-labels-then-hide:\n      - same as <modify-labels> but message is marked by <quasi-delete>\n      - not mapped to any key\n      - note: TAB completion of tag names is available\n      - example (add \"archive\" notmuch tag and remove message from screen):\n\n       macro index A \"<modify-labels-then-hide>+archive -inbox\\n<sync-mailbox>\"\n       macro index I \"<modify-labels-then-hide>-inbox\\n<sync-mailbox>\"\n\n   quasi-delete:\n      - delete message from mutt (usually after <sync-mailbox> function), but\n        don't touch message on disk\n\n   entire-thread:\n      - add to the current list of the messages all messages that belongs to the same thread\n        as the current message. This command is useful when you have a new email in your INBOX\n        and you want to see the rest of the archived thread.\n      - default key: +\n\n * Pattern modifiers:\n\n   Many of Mutt's commands allow you to specify a pattern to match (limit,\n   tag-pattern, delete-pattern, color, etc.). The following notmuch specific\n   mutt pattern modifiers are available:\n\n   - '~Y EXPR': Messages which contain EXPR in the list of labels.\n     Example:\n        # Color red all messages labeled as 'spam'.\n        color index    red      default        \"~Y '\\W?spam\\W?'\"\n\n * muttrc:\n\n   Note that you can use notmuch specific mutt config file, see -F <config> in\n   mutt docs.\n\n\n   virtual-mailboxes <description> <uri> [ ...]\n\n      This command specifies one or more virtual folder. The folders are\n      accessible by command 'X'. It's possible to use the virtual mailbox\n      description as a sort key (e.g set sort_sidebar=desc)\n\n      example:\n\n      virtual-mailboxes \"Linux Kernel\" \"notmuch:///whereis/db?query=tag:lkml&limit=1000\" \\\n                        \"Filesystems\"  \"notmuch:///whereis/db?query=tag:fs\" \\\n                        \"Music\"        \"notmuch:///another/db?query=tag:hard and tag:heavy\"\n\n      The folder description is used for status line, folders browser, sidebar\n      and <change-vfolder> command (this command also accepts vfolder URI). The\n      folder-hook regex uses the URI.\n\n   virtual_spoolfile = <boolean>\n\n      When set, mutt will use the first virtual mailbox (see virtual-mailboxes)\n      as a spoolfile.\n\n      When set together with sidebar, mutt will use list of virtual folders in\n      the sidebar. It's possible to toggle between virtual and normal folders by\n      sidebar-toggle command.\n\n   tag-transforms <tag> <transform> [ ...]\n\n      This command specifies text transforms to be shown instead of the actual\n      tag names with '%g' in the index and pager formats. Note that Unicode\n      symbols can be used for transforms.\n\n      example:\n\n      tag-transforms \"inbox\"   \"i\"   \\\n                     \"unread\"  \"u\"   \\\n                     \"replied\" \"↻ \"  \\\n                     \"sent\"    \"➥ \"  \\\n                     \"todo\"    \"T\"   \\\n                     \"deleted\" \"DEL\" \\\n                     \"invites\" \"CAL\"\n\n   tag-formats <tag> <format sequence> [ ...]\n\n      Specify index formatting sequences for individual tags for direct\n      placement in the $index_format. The formats must start with 'G' and\n      the entire sequence is case sensitive.\n\n      example:\n\n      tag-formats \"inbox\"   \"GI\" \\\n                  \"unread\"  \"GU\" \\\n                  \"replied\" \"GR\" \\\n                  \"sent\"    \"GS\" \\\n                  \"todo\"    \"Gt\" \\\n                  \"deleted\" \"GD\" \\\n                  \"invites\" \"Gi\"\n\n      Now instead of using '%g' in your $index_format, which lists all tags\n      in a non-deterministic order, you can something like the following which puts\n      a transformed tag name in a specific spot on the index line:\n\n      set index_format='4C %S %[%y.%m.%d] %-18.18n %?GU?%GU& ? %?GR?%GR& ? %?GI?%GI& ? %s'\n\n      The %G formatting sequence may display all tags including tags hidden by\n      nm_hidden_tags.\n\n   nm_record = <boolean>\n\n      Add messages stored to the mutt record (see $record in the mutt docs)\n      also to notmuch DB. If you reply to an email then the new email inherits\n      tags from the original email.\n\n   nm_record_tags = <comma delimited list>\n\n      Tags that should be removed or added to the to the messages stored in the mutt record.\n\n      example:\n\n      set record = \"~/sent-mails\"\n      set nm_record = yes\n      set nm_record_tags = \"-inbox,archive,me\"\n\n   nm_open_timeout = <seconds>\n\n      This option specifies timeout for Notmuch database. Default is 5 seconds.\n\n   nm_default_uri = <uri>\n\n      This variable specifies the default Notmuch database in format\n      notmuch://<absolute path>, the URI is used for notmuch queries (ESC+X) when the\n      current folder is not based on notmuch. If the default URI is not specified\n      then mutt will try to use $folder variable (see mutt manual for more details).\n\n   nm_hidden_tags = <comma delimited list>\n\n      This variable specifies private notmuch tags which should not be printed\n      on screen (index, pager).\n\n      Default is \"unread,draft,flagged,passed,replied,attachment\".\n\n   nm_exclude_tags = <comma delimited list>\n\n      The messages tagged with these tags are excluded and not loaded\n      from notmuch DB to mutt unless specified explicitly.\n\n      Not set by default.\n\n   nm_unread_tag = <name>\n\n      This variable specifies notmuch tag which is used for unread messages. The\n      variable is used to count unread messages in DB only. All other mutt\n      commands use standard (e.g. maildir) flags.\n\n      Default is \"unread\".\n\n   nm_db_limit = <num>\n\n     This variable specifies notmuch query limit.\n\n     Default is unlimited.\n\n   nm_query_type = <threads|messages>\n\n     This variable specifies notmuch query type, supported types: 'threads' and\n     'messages'.\n\n     Default is 'messages'.\n\n   vfolder_format = <string>\n\n      This variable allows you to customize the file browser display for virtual\n      folders to your personal taste.  This string is similar to $index_format,\n      but has its own set of printf(3)-like sequences:\n\n\t%f   folder name (description)\n\t%n   number of all messages\n\t%N   number of new messages\n\t%>X  right justify the rest of the string and pad with character ``X''\n\t%|X  pad to the end of the line with character ``X''\n\t%*X  soft-fill with character ``X'' as pad\n\n      Default is \"%6n(%6N) %f \".\n\n   index_format and pager_format\n\n        %g   notmuch tags (labels)\n        %Gx  specific notmuch tag defined by tag-formats (see above)\n\n        for example:\n\n        tag-formats \"inbox\" \"GI\"\n        set index_format = \"%4C %Z %?GI?%GI? ?  %[%d/%b]  %-16.15F %s %> %?g?(%g)?\"\n        set pager_format = \"-%Z- %C/%m: %-20.20n   %s%*  -- %?g?(%g)? - (%P)\"\n\n\n* .muttrc example:\n\n\tset record=\"~/Mail/Maildir/sent-mail\"\n\tset nm_record = yes\n\tset nm_record_tags =\"-inbox me archive\"\n\n\tset nm_default_uri=\"notmuch:///home/kzak/Mail/Maildir\"\n\tset virtual_spoolfile\t= yes\n\tset sort_browser        = unsorted\n\n\t# normal folders\n\tset mbox_type=Maildir\n\tset folder=\"~/Mail/Maildir\"\n\tmailboxes =rh =fedora =misc\n\n\tset sidebar_width\t = 35\n\tset sidebar_visible\t = yes\n\tset sidebar_sort_method  = unsorted\n\tset sidebar_divider_char = │\n\n\tcolor sidebar_new yellow default\n\tcolor progress default magenta\n\n\tbind index <left> sidebar-prev\n\tbind index <right> sidebar-next\n\tbind index <space> sidebar-open\n\tbind index <Esc>S sidebar-toggle-virtual\n\n\tset index_format=\"%4C %Z %?GI?%GI& ? %[%d/%b]  %-16.15F %?M?(%3M)&     ? %s %> %?g?%g?\"\n\n        # virtual folders\n\tvirtual-mailboxes \\\n\t   \"INBOX\"                \"notmuch://?query=tag:inbox and NOT tag:archive\" \\\n\t   \"Util-linux\"           \"notmuch://?query=tag:ul and NOT tag:archive\" \\\n\t   \"Bugs\"                 \"notmuch://?query=tag:bug NOT tag:archive\" \\\n\t   \"RH\"                   \"notmuch://?query=tag:rh and NOT tag:archive\" \\\n\t   \"Fedora\"               \"notmuch://?query=tag:fed and NOT tag:archive\" \\\n\t   \"Linux\"                \"notmuch://?query=tag:lk and NOT tag:archive\" \\\n\t   \"NFS\"                  \"notmuch://?query=tag:nfs and NOT tag:archive\" \\\n\t   \"Filesystems\"          \"notmuch://?query=tag:fs and NOT tag:archive\" \\\n\t   \"Security\"             \"notmuch://?query=tag:sec\" \\\n\t   \"Partitioning\"         \"notmuch://?query=tag:part\" \\\n\t   \"GNU\"                  \"notmuch://?query=tag:gnu\" \\\n\t   \"udev\"                 \"notmuch://?query=tag:udev\" \\\n\t   \"initrd\"               \"notmuch://?query=tag:initrd\" \\\n\t   \"Linux CZ\"             \"notmuch://?query=tag:cz\" \\\n\t   \"Notmuch\"              \"notmuch://?query=tag:nm\" \\\n\t   \"Procps\"               \"notmuch://?query=tag:proc\" \\\n\t\\\n\t   \" Util-linux  [archive]\" \"notmuch://?query=tag:ul and tag:archive\" \\\n\t   \" Bugs        [archive]\" \"notmuch://?query=tag:bug and tag:archive\" \\\n\t   \" RH          [archive]\" \"notmuch://?query=tag:rh and tag:archive\" \\\n\t   \" Fedora      [archive]\" \"notmuch://?query=tag:fed and tag:archive\" \\\n\t   \" Linux       [archive]\" \"notmuch://?query=tag:lk and tag:archive\" \\\n\t   \" Filesystems [archive]\" \"notmuch://?query=tag:fs and tag:archive\" \\\n\n\t# move message to archive\n\tmacro index A \"<modify-labels-then-hide>+archive -inbox\\n<sync-mailbox>\"\n\n\t# remove message from inbox\n\tmacro index I \"<modify-labels-then-hide>-inbox\\n<sync-mailbox>\"\n\n\t# mark emails for git-am\n\t# (e.g. \"git am -i -3 $(notmuch search --output=files tag:PATCH)\"\n\t#\n\tmacro index P \"<modify-labels>PATCH\\n\"\n\tmacro index <Esc>P \"<modify-labels>-PATCH\\n\"\n\n\n* .procmailrc example:\n\n\tNOINBOX=\"-r inbox\"\n\n\t### Add 'kw' (keyword) tag to all interesting e-mails and make the emails\n\t### visible in inbox.\n\t:0\n\t* ^Subject:.*(mount|umount|libmount|losetup|util-linux|blkid|hwclock|mkswap|fdisk|parted|partition|gpt|topology)\n\t{\n\t\tTAGS=\"-t kw\"\n\t\tNOINBOX=\"\"\n\t}\n\n\t### Deliver emails to maildirs by notmuch-deliver\n\t### from notmuch contrib/\n\t###\n\t###    notmuch-deliver -t <tags> [-t ...] <maildir>\n\n\t:0:notmuch.lock\n\t* ^List-Id:.*linux.linux.cz\n\t| notmuch-deliver $NOINBOX -t cz $TAGS linux.cz\n\n\t:0:notmuch.lock\n\t* ^X-Mailing-List:.*util-linux@vger.kernel.org\n\t| notmuch-deliver -t ul $TAGS util-linux\n\n\t:0:notmuch.lock\n\t* ^List-Id:.*parted-devel.lists.alioth.debian.org\n\t| notmuch-deliver $NOINBOX -t part $TAGS parted\n\n\t### [...cut to make the example short...] ###\n\n\t### All unmatched mails\n\t:0:notmuch.lock\n\t* ^From\n\t| notmuch-deliver $TAGS misc\n\n\t### fallback if notmuch does not work\n\t:0:\n\t* ^From\n\tMail/Maildir/misc/\n\n\n* another example:\n\n  http://notmuchmail.org/mutttips/\n"
  },
  {
    "path": "README.progress",
    "content": "Progress Bar Patch\n==================\n\n    Show a visual progress bar on slow operations\n\nPatch\n-----\n\n    To check if Mutt supports \"Progress Bar\", look for \"patch-progress\" in the\n    mutt version.\n\n    Dependencies\n    * mutt-1.5.24\n\nIntroduction\n------------\n\n    The \"progress\" patch shows a visual progress bar on slow tasks, such as\n    indexing a large folder over the net.\n\nColors\n------\n\n    Progress Colors\n\n    | Name       | Default Color | Description         |\n    |------------|---------------|---------------------|\n    | 'progress' | default       | Visual progress bar |\n\nSee Also\n--------\n\n    * NeoMutt project\n    * Color command\n\nKnown Bugs\n----------\n\n    None\n\nCredits\n-------\n\n    * Rocco Rutte <pdmef@gmx.net>\n    * Vincent Lefevre <vincent@vinc17.org>\n    * Stefan Kuhn <wuodan@hispeed.ch>\n    * Karel Zak <kzak@redhat.com>\n    * Richard Russon <rich@flatcap.org>\n\n"
  },
  {
    "path": "README.quasi-delete",
    "content": "Quasi-Delete Patch\n==================\n\n    Mark emails that should be hidden, but not deleted\n\nPatch\n-----\n\n    To check if Mutt supports \"Quasi-Delete\", look for \"patch-quasi-delete\" in\n    the mutt version.\n\n    Dependencies\n    * mutt-1.5.24\n\nIntroduction\n------------\n\n    The \"quasi-delete\" function marks an email that should be hidden from the\n    index, but NOT deleted.\n\n    On its own, this patch isn't very useful. It forms a useful part of the\n    notmuch plugin.\n\nFunctions\n---------\n\n    Quasi-Delete Functions\n\n    | Menus       | Default Key | Function         | Description                           |\n    |-------------|-------------|------------------|---------------------------------------|\n    | index,pager | (none)      | '<quasi-delete>' | delete from mutt, don't touch on disk |\n\nSee Also\n--------\n\n    * NeoMutt project\n    * notmuch patch\n\nKnown Bugs\n----------\n\n    None\n\nCredits\n-------\n\n    * Karel Zak <kzak@redhat.com>\n    * Richard Russon <rich@flatcap.org>\n\n"
  },
  {
    "path": "README.sidebar",
    "content": "Sidebar Patch\n=============\n\n    Overview of mailboxes\n\n    NOTES:\n\n    If you haven't used the sidebar before, you might like to read the\n    Sidebar Introduction:\n\n        http://www.neomutt.org/sidebar-intro.html\n\n    If you have used an older version of the Sidebar, please note that some\n    of the configuration has changed.\n\n        http://www.neomutt.org/sidebar-intro.html#intro-sidebar-config-changes\n\nPatch\n-----\n\n    To check if Mutt supports \"Sidebar\", look for \"+USE_SIDEBAR\" in the mutt\n    version.\n\n    Dependencies\n    * mutt-1.5.24\n\nIntroduction\n------------\n\n    The Sidebar shows a list of all your mailboxes. The list can be turned on\n    and off, it can be themed and the list style can be configured.\n\n    This part of the manual is a reference guide. If you want a simple\n    introduction with examples see the Sidebar Howto. If you just want to get\n    started, you could use the sample Sidebar muttrc.\n\n    This version of Sidebar is based on Terry Chan's [2015-11-11\n    release](http://www.lunar-linux.org/mutt-sidebar/). It contains many new\n    features, lots of bugfixes.\n\nVariables\n---------\n\n    Sidebar Variables\n\n    | Name                    | Type    | Default                     |\n    |-------------------------|---------|-----------------------------|\n    | 'sidebar_delim_chars'   | string  | '/.'                        |\n    | 'sidebar_divider_char'  | string  | '|'                         |\n    | 'sidebar_folder_indent' | boolean | 'no'                        |\n    | 'sidebar_format'        | string  | '%B%?F? [%F]?%* %?N?%N/?%S' |\n    | 'sidebar_indent_string' | string  | '  ' (two spaces)           |\n    | 'sidebar_new_mail_only' | boolean | 'no'                        |\n    | 'sidebar_next_new_wrap' | boolean | 'no'                        |\n    | 'sidebar_refresh_time'  | number  | '60'                        |\n    | 'sidebar_short_path'    | boolean | 'no'                        |\n    | 'sidebar_sort_method'   | enum    | 'SORT_ORDER'                |\n    | 'sidebar_visible'       | boolean | 'no'                        |\n    | 'sidebar_whitelist'     | list    | (empty)                     |\n    | 'sidebar_width'         | number  | '20'                        |\n\nFunctions\n---------\n\n    Sidebar Functions\n\n    Sidebar adds the following functions to Mutt. By default, none of them are\n    bound to keys.\n\n    | Menus       | Function                   | Description                                          |\n    |-------------|----------------------------|------------------------------------------------------|\n    | index,pager | '<sidebar-next>'           | Move the highlight to next mailbox                   |\n    | index,pager | '<sidebar-next-new>'       | Move the highlight to next mailbox with new mail     |\n    | index,pager | '<sidebar-open>'           | Open highlighted mailbox                             |\n    | index,pager | '<sidebar-page-down>'      | Scroll the Sidebar down 1 page                       |\n    | index,pager | '<sidebar-page-up>'        | Scroll the Sidebar up 1 page                         |\n    | index,pager | '<sidebar-prev>'           | Move the highlight to previous mailbox               |\n    | index,pager | '<sidebar-prev-new>'       | Move the highlight to previous mailbox with new mail |\n    | index,pager | '<sidebar-toggle-visible>' | Make the Sidebar (in)visible                         |\n\nCommands\n--------\n\n        sidebar_whitelist mailbox [ mailbox... ]\n\nColors\n------\n\n    Sidebar Colors\n\n    | Name                | Default Color    | Description                                                      |\n    |---------------------|------------------|------------------------------------------------------------------|\n    | 'sidebar_divider'   | default          | The dividing line between the Sidebar and the Index/Pager panels |\n    | 'sidebar_flagged'   | default          | Mailboxes containing flagged mail                                |\n    | 'sidebar_highlight' | underline        | Cursor to select a mailbox                                       |\n    | 'sidebar_indicator' | mutt 'indicator' | The mailbox open in the Index panel                              |\n    | 'sidebar_new'       | default          | Mailboxes containing new mail                                    |\n    | 'sidebar_spoolfile' | default          | Mailbox that receives incoming mail                              |\n\n    If the sidebar_indicator color isn't set, then the default Mutt indicator\n    color will be used (the color used in the index panel).\n\nSort\n----\n\n    Sidebar Sort\n\n    | Sort       | Description                |\n    |------------|----------------------------|\n    | 'alpha'    | Alphabetically by path     |\n    | 'count'    | Total number of messages   |\n    | 'flagged'  | Number of flagged messages |\n    | 'name'     | Alphabetically by path     |\n    | 'new'      | Number of new messages     |\n    | 'path'     | Alphabetically by path     |\n    | 'unsorted' | Do not resort the paths    |\n\nSee Also\n--------\n\n    * Regular Expressions\n    * Patterns\n    * Color command\n    * notmuch patch\n\nKnown Bugs\n----------\n\n    Unsorted isn't\n\nCredits\n-------\n\n    * Justin Hibbits <jrh29@po.cwru.edu>\n    * Thomer M. Gil <mutt@thomer.com>\n    * David Sterba <dsterba@suse.cz>\n    * Evgeni Golov <evgeni@debian.org>\n    * Fabian Groffen <grobian@gentoo.org>\n    * Jason DeTiberus <jdetiber@redhat.com>\n    * Stefan Assmann <sassmann@kpanic.de>\n    * Steve Kemp <steve@steve.org.uk>\n    * Terry Chan <tchan@lunar-linux.org>\n    * Tyler Earnest <tylere@rne.st>\n    * Richard Russon <rich@flatcap.org>\n\n"
  },
  {
    "path": "README.status-color",
    "content": "Status Color Patch\n==================\n\n    Custom rules for theming the status bar\n\nPatch\n-----\n\n    To check if Mutt supports \"Status Color\", look for \"patch-status-color\" in\n    the mutt version.\n\n    Dependencies\n    * mutt-1.5.24\n\nIntroduction\n------------\n\n    The \"status-color\" patch allows you to theme different parts of the status\n    bar (also when it's used by the index).\n\n    Unlike normal color commands, 'color status' can now take up to 2 extra\n    parameters (regex, num).\n\nCommands\n--------\n\n        color status foreground background [ regex [ num ]]\n\n    With zero parameters, Mutt will set the default color for the entire status\n    bar.\n\n    With one parameter, Mutt will only color the parts matching the regex.\n\n    With two parameters, Mutt will only color the num'th sub-match of the regex.\n\nColors\n------\n\n    Status Colors\n\n    | Name   | Default Color | Description |\n    |--------|---------------|-------------|\n    | status | 'reverse'     | Status bar  |\n\nSee Also\n--------\n\n    * NeoMutt project\n    * Compile-Time Features\n    * Regular Expressions\n    * Patterns\n    * index-color patch\n    * Color command\n\nKnown Bugs\n----------\n\n    None\n\nCredits\n-------\n\n    * David Sterba <dsterba@suse.cz>\n    * Thomas Glanzmann <thomas@glanzmann.de>\n    * Kirill A. Shutemov <kirill@shutemov.name>\n    * Richard Russon <rich@flatcap.org>\n\n"
  },
  {
    "path": "README.tls-sni",
    "content": "TLS-SNI Patch\n=============\n\n    Negotiate with a server for a TSL/SSL certificate\n\nPatch\n-----\n\n    To check if Mutt supports \"TLS-SNI\", look for \"patch-tls-sni\" in the mutt\n    version.\n\n    Dependencies\n    * mutt-1.5.24\n    * OpenSSL\n\nIntroduction\n------------\n\n    The \"TLS-SNI\" patch adds support for TLS virtual hosting. If your mail\n    server doesn't support this everything will still work normally.\n\n    TLS supports sending the expected server hostname during the handshake, via\n    the SNI extension. This can be used to select a server certificate to issue\n    to the client, permitting virtual-hosting without requiring multiple IP\n    addresses.\n\n    This has been tested against Exim 4.80, which optionally logs SNI and can\n    perform vhosting.\n\n    To verify TLS SNI support by a server, you can use:\n\n        openssl s_client -host <imap server> -port <port> -tls1 -servername\n    <imap server>\n\nSee Also\n--------\n\n    * NeoMutt project\n\nKnown Bugs\n----------\n\n    None\n\nCredits\n-------\n\n    * Jeremy Katz <katzj@linuxpower.org>\n    * Phil Pennock <mutt-dev@spodhuis.demon.nl>\n    * Richard Russon <rich@flatcap.org>\n\n"
  },
  {
    "path": "TODO",
    "content": "Problems are listed in approximate order of priority.\n\n- When displaying MIME headers, rfc 2047 decoding is applied (which\n  should not happen), and rfc 2231 decoding is not applied (which\n  should happen).\n\n- Help formatting could be revamped a bit.\n\n- In the \"attachment\" menu, assume this:\n\n\t1 [text/plain, 7bit, 1.1K]           <no description>\n\t2 [message/rfc822, 7bit, 6.1K]       A test message\n\t3 [text/plain, 7bit, 0.1K]           |-><no description>\n\t4 [message/rfc822, base64, 2.5K]     |-><no description>\n\t5 [message/rfc822, base64, 2.7K]     `-><no description>\n\n  (please note the \"message/rfc822\" attachments encoded as\n  Base64; that's illegal, but Sun's Mailtool sends that\n  kind of messages); then go to, say, attachment \"4\",\n  delete it, and go to the main menu; you won't be able to\n  quit the mailbox (ok, 'x' works, but 'q' doesn't).\n\n  The problem here lies in the fact that mutt uses mailbox\n  handling functions to access message/rfc822 type\n  attachments.  We'd need to perform an additional\n  decoding step before using these functions to fix this\n  bug.\n\n  Please note that mutt's just assuming RFC-compliant mail\n  here.  Fixing this stuff may become a PITA.\n\n\n\n\n- BODY struct should probably have a pointer to its\n  corresponding HEADER struct.  this is needed for\n  mh/maildir mailboxes so the correct pathname can be\n  found.  Or perhaps all we need is a .hdr member of the\n  STATE struct so that all of the MIME handlers can look\n  up the corresponding HEADERs if need be?\n\n- handle message/external-body in some fashion\n\n- handle message/partial reconstruction\n\n- make patterns generic (I have patches for this -tlr), and\n  introduce generic menu limiting, menu pattern searching, and the\n  like.  \n\n  Note: This still requires some thought, since we'd have to store\n  per-entry data in the menu structure.  As an alternative, we could\n  extend the tag method to do something to more general flags. The\n  latter approach would make the implementation of proper\n  tag-prefix behaviour more simple: Functions should only be applied\n  when a message is tagged and visible.  Additionally, we must not\n  access a menu's max field directly any more: Adding an entry to a\n  menu will require re-allocating and possibly updating the v2r\n  array.  How do we handle \"in-the-middle additions\" properly?  Do\n  they happen at all?\n"
  },
  {
    "path": "UPDATING",
    "content": "This file lists incompatible changes and additional/new features made to\nmutt. Please read this file carefully when upgrading your installation.\n\nThe keys used are:\n  !: modified feature, -: deleted feature, +: new feature\n\n1.6.0 (2016-04-04):\n\n  + Enabled utf-8 mailbox support for IMAP.\n  + New expandos %r and %R for comma separated list of To: and Cc:\n    recipients respectively.\n  + Improved support for internationalized email and SMTPUTF8 (RFC653[0-3]).\n  ! $use_idn has been renamed to $idn_decode.\n  + $idn_encode controls whether outgoing email address domains will\n    be IDNA encoded.  If your MTA supports it, unset to use utf-8\n    email address domains.\n  + The S/MIME message digest algorithm is now specified using the\n    option $smime_sign_digest_alg.  Note that $smime_sign_command\n    should be modified to include \"-md %d\".  Please see\n    contrib/smime.rc.\n  + $reflow_space_quotes allows format=flowed email quotes to be\n    displayed with spacing between them.\n  ! multipart draft files are now supported.\n  + The \"-E\" command line argument causes mutt to edit draft or include files.\n    All changes made in mutt will be saved back out to those files.\n  + $resume_draft_files and $resume_edited_draft_files control how\n    mutt processes draft files.\n  + For classic gpg mode, $pgp_decryption_okay should be set to verify\n    multipart/encrypted are actually encrypted.  Please see\n    contrib/gpg.rc for the suggested value.\n  ! mailto URL header parameters by default are now restricted to\n    'body' and 'subject'.\n  + mailto_allow and unmailto_allow can be used to add or remove\n    allowed mailto header parameters.\n  ! The method of setting $hostname has been changed.  Rather than\n    scanning /etc/resolv.conf, the domain will now be determined using\n    DNS calls.\n\n1.5.24 (2015-08-31):\n\n  + terminal status-line (TS) support, a.k.a. xterm title. see the\n    following variables: $ts_enabled, $ts_icon_format, $ts_status_format\n  ! $ssl_use_sslv3 is disabled by default.\n  ! command-line arguments: -H now combines template and command-line\n    address arguments.\n  ! GnuPG signature name is set to signature.asc\n  + New color object \"prompt\" added.\n  + Ability to encrypt postponed messages.  See $postpone_encrypt and\n    $postpone_encrypt_as.\n  ! History ring now has a scratch buffer.\n  ! mail-key is implemented for GPGME.  (Requires a recent GPGME).\n  ! Removed GPG_AGENT_INFO check for GnuPG 2.1 compatibility.  Please\n    set pgp_use_gpg_agent if using GnuPG 2.1 or later.\n  ! $smime_encrypt_with now defaults to aes256.\n  ! GnuPG fingerprints are used internally when possible.\n    \"--with-fingerprint\" should be added to $pgp_list_pubring_command and\n    $pgp_list_secring_command to enable this.  Please see contrib/gpg.rc.\n    Fingerprints may also be used at the prompts for key selection.\n  + $crypt_opportunistic_encrypt automatically enables/disables encryption\n    based on message recipients.\n  ! Attachments for signed, unencrypted emails may be deleted.\n  ! Multiple crypt-hooks may be defined for the same regexp.\n    This means multiple keys may be used for a recipient.\n  + $crypt_confirmhook allows the confirmation prompt for crypt-hooks to\n    be disabled.\n  + $ssl_ciphers allows the SSL ciphers to be directly set.\n  ! sime_keys better handles importing certificate chains.\n  ! sime_keys now records certificate purposes (sign/encrypt).  Run\n    \"sime_keys refresh\" to update smime index files.\n  + $maildir_check_cur polls the maildir \"cur\" directory for new mail.\n\n1.5.23 (2014-03-11):\n\n  ! FCC is now preserved when postponing a message.\n  ! Mail-Followup-To is now preserved when recalling a postponed message.\n  ! Allow filename prompt when saving multiple attachments to a directory.\n\n1.5.22 (2013-10-18):\n\n  ! $imap_keepalive default lowered to 300\n  + $reflow_text, $reflow_wrap for finer control of flowed wrapping\n  + Support for TLSv1.1 and TLSv1.2.  $ssl_use_tlsv1_1 and $ssl_tlsv1_2\n    variables control whether the new protocols are used.\n  ! $ssl_use_tlsv1 now specifically refers to TLSv1.0.\n\n1.5.21 (2010-09-15):\n\n  + $mail_check_recent controls whether all unread mail or only new mail\n    since the last mailbox visit will be reported as new\n  + %D format expando for $folder_format\n  ! $thorough_search defaults to yes\n  + imap-logout-all closes all open IMAP connections\n  ! header/body cache paths are always UTF-8\n  + $wrap_headers to control outgoing message's header length\n  + all text/* parts can be displayed inline without mailcap\n  + send-hooks now run in batch mode; previously only send2-hooks ran.\n\n1.5.20 (2009-06-14):\n\n  ! mbox/mmdf new mail flag is kept when leaving folders with new mail\n  ! $fcc_attach is a quadoption now\n  + $honor_disposition to honor Content-Disposition headers\n  + $search_context specifies number of context lines for search results\n    in pager/page-based menus\n  ! ssl_use_sslv2 defaults to no\n  + uncolor works for header + body objects, too\n  + the \"flagged\" and \"replied\" flags are enabled/supported for\n    POP when built with header caching\n  ! browser correctly displays maildir's mtime\n  + <set-flag> and <clear-flag> work in the pager, too\n  + ~x pattern also matches against In-Reply-To\n  + lower case patterns for string searches perform case-insensitive\n    search as regex patterns do (except IMAP)\n  + $ssl_verify_dates controls whether mutt checks the validity period of\n    SSL certificates\n  + $ssl_verify_host controls whether mutt will accept certificates whose\n    host names do not match the host name in the folder URL.\n\n1.5.19 (2009-01-05):\n\n  ! command-line arguments: -a now mandates -- at end of file list\n  + support for SSL certificate chains\n  + <what-key> function works in pager, too\n  + support for tokyocabinet (qdbm successor)\n  ! $move now defaults to \"no\" instead of \"ask-no\"\n  + $imap_pipeline_depth controls the number of commands that mutt can issue\n    to an IMAP server before it must collect the responses\n  + $ssl_client_cert available with gnutls as well as openssl\n  + 'mime_lookup application/octet-stream' added to system Muttrc\n\n1.5.18 (2008-05-17):\n\n  ! header caches internally are utf-8 regardless of current locale\n  + $query_format (customize external query menu)\n  ! inode sorting is always enabled\n  + $time_inc suppresses progress updates less than $time_inc\n    milliseconds apart.\n  + X-Label: headers must now be RfC2047-encoded\n\n1.5.17 (2007-11-01):\n\n  ! --enable-exact-address works again\n\n1.5.16 (2007-06-09):\n\n  + next-unread-mailbox\n  + $message_cache_clean (clean cache on sync)\n  + $smtp_pass\n  ! $header_cache_compress defaults to yes\n\n1.5.15 (2007-04-06):\n\n  - $imap_home_namespace (useless clutter)\n  + $check_mbox_size (use size change instead of atime for new mail)\n  ! improved f=f support wraps lines at $wrap if $wrap is not 0\n  + $wrap (>0 wraps at $wrap, <0 = $wrapmargin)\n  + $assumed_charset, $attach_charset, $ignore_linear_white_space\n  + $save_history, $history_file (save history across sessions)\n  + $smtp_url (ESMTP relay support)\n  + $crypt_use_pka (use GPGME PKA signature verification)\n  ! format pipe support: format strings ending in | are filtered\n  ! buffy size is configurable at runtime (no --enable-buffy-size\n    configure option, new $check_mbox_size variable)\n\n1.5.13 (2006-08-14):\n\n  + thread patterns.  Use ~(...) to match all threads that\n    contain a message that matches ...\n\n1.5.12 (2006-07-14):\n\n  - $imap_cachedir replaced with $message_cachedir\n  + Header/body caching for POP ($message_cachedir)\n  + Header caching for MH folders \n  ! $record now defaults to ~/sent\n  ! $imap_idle now defaults to \"yes\" instead of \"no\"\n  + Tab-completion for $my_* variable names and values\n  + Expansion of mutt variables (except shell escape)\n  + Self-defined variables with $my_* prefix \n  + Pattern group support \n  + $imap_cachedir\n  + 'old' flag on IMAP folders\n  + SASL-IR support for IMAP\n  + IMAP IDLE support and $imap_idle\n  + Pipeline-based IMAP communicaton\n  + Full large file support\n  + Attachment counting: attachments and unattachments commands,\n    %Q and %X for $attach_format, %X for $index_format\n  + Basque translation\n  + QDBM backend for header caching\n  + Irish translation\n\n1.5.11 (2005-09-15):\n\n  ! $envelope_from_address has been added, $envelope_from has been renamed\n    to $use_envelope_from\n  + Progress bar via $net_inc\n  + IMAP server-side simple string search\n  + Simple string matches instead of full regex matches for '=' instead\n    of '~' with pattern modifiers\n  ! ~l matches all known lists, ~u only subscribed\n  - SASL 1.5 support\n  ! The manual is now build from DocBook/XML instead of Linuxdoc/SGML source\n\n1.5.10 (2005-08-11):\n\n  + $imap_check_subscribed\n  + Tab-completion for IMAP hosts\n  ! $imap_force_ssl has been replaced without synonym by $ssl_force_tls\n  - NSS support\n  ! The default for $menu_move_off has been changed from \"no\" to \"yes\"\n  ! An empty <limit> now cancels the current limit\n  + Editing threads via <break-thread> and <link-threads>\n  + -D command line option\n  + the folder shortcut '^' refers to the currently opened folder\n  + $imap_login\n  + $braille_friendly\n  + Header caching for Maildir folders\n\nMutt 1.5.9 (2005-03-13):\n\n  + $menu_move_off\n  + <rename-mailbox> function for IMAP\n\nMutt 1.5.8 (2005-02-12):\n\n  + $menu_context\n  ! IDNA decoding is now optional via $use_idn defaulting to \"yes\"\n  + GPGME support via $crypt_use_gpgme\n\nMutt 1.5.7 (2005-01-28):\n\n  + SSL support via GNUTLS\n  + Header caching for IMAP via $header_cache and $header_cache_pagesize\n  + send2-hook\n  + $ssl_client_cert\n  + $hide_thread_subject\n  + Generic spam detection: new configuration commands: 'spam' and\n    'nospam', new options: $spam_separator, new expando: %H (for\n    $index_format), new pattern: ~H pattern\n  + $include_onlyfirst\n  ! $pgp_mime_ask has been renamed without synonym to $pgp_mime_auto,\n    new default is \"ask-yes\" rather than \"no\"\n  + Inline PGP creation support via $pgp_replyinline, $pgp_autoinline\n    and $pgp_mime_ask\n  ! the 'bind' command can now be used on multiple menus at once\n  + $config_charset\n  + ~$ pattern\n\n1.5.6 (2004-02-01):\n\n  ! the 'list' and 'subscribe' commands now take regular expression\n    rather than string lists\n  ! the $alternates option is replaced by the 'alternates' command\n    taking lists of regular expressions\n  ! mailing lists can be recognized via domain matching when\n    starting with '@'\n  + STLS (STARTTLS) support for POP3\n\n1.5.5 (2003-11-05):\n\n  + Bulgarian translation\n  - Kendra mailbox support\n  + <tag-prefix-cond> and <cond-end>\n  + ':' as expando modifier (e.g. '%:A')\n  + $crypt_autopgp and $crypt_autosmime\n  + $pgp_check_exit\n\n1.5.4 (2003-03-19):\n\n  + IDNA support\n  + $bounce\n  ! $crypt_replyencrypt and $pgp_replyencrypt now default\n    to \"yes\" instead of \"no\"\n  + $pgp_auto_traditional\n  + %A for $index_format\n\n1.5.3 (2002-12-17):\n\n  + <next-new-then-unread> and <previous-new-then-unread>\n  ! $mark_old: it only controls whether new messages\n    are marked as old when leaving the mailbox\n  + <what-key>\n\n1.5.2 (2002-12-06):\n\n  + -A command line option\n  + SASL2 support\n  + <buffy-list>\n  + $forward_edit\n  + $content_type\n  + unmailboxes command\n  + unalternative_order command\n  + reply-hook\n\n1.5.1 (2002-01-24):\n\n  + $smime_default_key\n  + $narrow_tree\n  + -Q command line option\n  + $crypt_timestamp\n  + ~V pattern\n  + S/MIME support\n  + mime_lookup command\n"
  },
  {
    "path": "UPDATING.kz",
    "content": "1.6.0.1:\n\n+ rebase to mutt upstream 1.6.0\n+ update to the new sidebar implementation. Note that all .muttrc options \n  are prefixed by \"sidebar_\" now.\n\n+ rebase is based on neomutt project (see https://github.com/neomutt) where are\n  maintained all non-upstream mutt changes, so it's easy to merge another\n  features like \"trash\", \"ifdef\", ... to mutt-kz.\n\n+ the stable mutt-kz releases and tags are maintained in stable/v<version> branches, \n  the master branch is going to be *rebased*. This development model help us to be \n  up to date with mutt upstream.\n\n\n1.5.23.1:\n\n+ integrated color status patch (original from Thomas Glanzmann)\n  https://thomas.glanzmann.de//mutt/#cstatus\n+ integrated TLS Server Name Indication support patch (original from Phil Pennock)\n+ improved sidebar functionality to optinaly show only folders with new emails\n  (sidebar-new, sitebar-next, ...)\n\n+ fix notmuch DB usage\n+ use unlocked libc IO in improve performance\n+ security bug fix from original mutt\n\n+ sync with the original mutt upstream\n+ add sidebar_whitelist option\n+ oppenc & pgp upstream sync and improvements\n\n\n1.5.22.1:\n\n+ use git and github rather than hg to maintain source code\n\n+ virtual folders based on notmuch queries\n+ merge sidebar patch\n+ merge index-color patch\n\n+ <change-vfolder> command\n+ <vfolder-from-query> command\n+ <modify-labels> command to set/unset notmuch tags\n+ <modify-labels-then-hide> command to set/unset notmuch tags and hide email\n  from the current view\n+ <quasi-delete> command to delete message from mutt, but don't touch message\n  on the disk\n+ <entire-thread> command to add to the current list of the messages all\n  messages that belongs to the same thread as the current message\n+ ~Y EXPR  pattern modifier for notmuch labels for limit, tag-pattern,\n  delete-pattern, color etc.\n+ virtual-mailboxes <desc> <uri> [...]  to specify list of the virtual mailboxes\n+ virtual_spoolfile = <boolean> to use the first virtual mailbox as a spoolfile\n+ tag-transforms <tag> <transform> to transform tag name to another name\n+ tag-formats <tag> <format sequence> [ ...] to define tag specific formatting\n  sequence for $index_format\n+ nm_record = <boolean> to add sent emails (mutt record) to notmuch DB\n+ nm_record_tags = <comma delimited list> to specify tags for nm_record\n+ nm_open_timeout = <seconds> to specify timeout for notmuch database\n+ nm_default_uri = <uri>  the default URI to connect notmuch\n+ nm_hidden_tags = <comma delimited list> to make some tags invisible for mutt user\n+ nm_exclude_tags = <comma delimited list> - messages tagged with these tags\n  are excluded and not loaded from notmuch DB to mutt unless specified explicitly\n+ nm_unread_tag = <name> to specify unread messages\n+ nm_db_limit = <num> to specify notmuch query limit\n+ nm_query_type = <threads|messages> to specify what to load from DB\n+ vfolder_format = <string> to specify vfolders browser entry format\n+ %g and %Gx index_format and pager_format formatting sequences\n"
  },
  {
    "path": "VERSION",
    "content": "1.6.0\n"
  },
  {
    "path": "VERSION.kz",
    "content": ".1\n"
  },
  {
    "path": "_regex.h",
    "content": "/* Definitions for data structures and routines for the regular\n   expression library, version 0.12.\n   Copyright (C) 1985,89,90,91,92,93,95,96,97 Free Software Foundation, Inc.\n\n   This file is part of the GNU C Library.  Its master source is NOT part of\n   the C library, however.  The master source lives in /gd/gnu/lib.\n\n   The GNU C Library is free software; you can redistribute it and/or\n   modify it under the terms of the GNU Library General Public License as\n   published by the Free Software Foundation; either version 2 of the\n   License, or (at your option) any later version.\n\n   The GNU C Library is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with the GNU C Library; see the file COPYING.LIB.  If not,\n   write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n   Boston, MA  02110-1301, USA.  */\n\n#ifndef __REGEXP_LIBRARY_H__\n#define __REGEXP_LIBRARY_H__\n\n/* Allow the use in C++ code.  */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* POSIX says that <sys/types.h> must be included (by the caller) before\n   <regex.h>.  */\n\n#if !defined (_POSIX_C_SOURCE) && !defined (_POSIX_SOURCE) && defined (VMS)\n/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it\n   should be there.  */\n#include <stddef.h>\n#endif\n\n/* The following two types have to be signed and unsigned integer type\n   wide enough to hold a value of a pointer.  For most ANSI compilers\n   ptrdiff_t and size_t should be likely OK.  Still size of these two\n   types is 2 for Microsoft C.  Ugh... */\ntypedef long int s_reg_t;\ntypedef unsigned long int active_reg_t;\n\n/* The following bits are used to determine the regexp syntax we\n   recognize.  The set/not-set meanings are chosen so that Emacs syntax\n   remains the value 0.  The bits are given in alphabetical order, and\n   the definitions shifted by one from the previous bit; thus, when we\n   add or remove a bit, only one other definition need change.  */\ntypedef unsigned long int reg_syntax_t;\n\n/* If this bit is not set, then \\ inside a bracket expression is literal.\n   If set, then such a \\ quotes the following character.  */\n#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)\n\n/* If this bit is not set, then + and ? are operators, and \\+ and \\? are\n     literals.\n   If set, then \\+ and \\? are operators and + and ? are literals.  */\n#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)\n\n/* If this bit is set, then character classes are supported.  They are:\n     [:alpha:], [:upper:], [:lower:],  [:digit:], [:alnum:], [:xdigit:],\n     [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].\n   If not set, then character classes are not supported.  */\n#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)\n\n/* If this bit is set, then ^ and $ are always anchors (outside bracket\n     expressions, of course).\n   If this bit is not set, then it depends:\n        ^  is an anchor if it is at the beginning of a regular\n           expression or after an open-group or an alternation operator;\n        $  is an anchor if it is at the end of a regular expression, or\n           before a close-group or an alternation operator.\n\n   This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because\n   POSIX draft 11.2 says that * etc. in leading positions is undefined.\n   We already implemented a previous draft which made those constructs\n   invalid, though, so we haven't changed the code back.  */\n#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)\n\n/* If this bit is set, then special characters are always special\n     regardless of where they are in the pattern.\n   If this bit is not set, then special characters are special only in\n     some contexts; otherwise they are ordinary.  Specifically,\n     * + ? and intervals are only special when not after the beginning,\n     open-group, or alternation operator.  */\n#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)\n\n/* If this bit is set, then *, +, ?, and { cannot be first in an re or\n     immediately after an alternation or begin-group operator.  */\n#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)\n\n/* If this bit is set, then . matches newline.\n   If not set, then it doesn't.  */\n#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)\n\n/* If this bit is set, then . doesn't match NUL.\n   If not set, then it does.  */\n#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)\n\n/* If this bit is set, nonmatching lists [^...] do not match newline.\n   If not set, they do.  */\n#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)\n\n/* If this bit is set, either \\{...\\} or {...} defines an\n     interval, depending on RE_NO_BK_BRACES.\n   If not set, \\{, \\}, {, and } are literals.  */\n#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)\n\n/* If this bit is set, +, ? and | aren't recognized as operators.\n   If not set, they are.  */\n#define RE_LIMITED_OPS (RE_INTERVALS << 1)\n\n/* If this bit is set, newline is an alternation operator.\n   If not set, newline is literal.  */\n#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)\n\n/* If this bit is set, then `{...}' defines an interval, and \\{ and \\}\n     are literals.\n  If not set, then `\\{...\\}' defines an interval.  */\n#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)\n\n/* If this bit is set, (...) defines a group, and \\( and \\) are literals.\n   If not set, \\(...\\) defines a group, and ( and ) are literals.  */\n#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)\n\n/* If this bit is set, then \\<digit> matches <digit>.\n   If not set, then \\<digit> is a back-reference.  */\n#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)\n\n/* If this bit is set, then | is an alternation operator, and \\| is literal.\n   If not set, then \\| is an alternation operator, and | is literal.  */\n#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)\n\n/* If this bit is set, then an ending range point collating higher\n     than the starting range point, as in [z-a], is invalid.\n   If not set, then when ending range point collates higher than the\n     starting range point, the range is ignored.  */\n#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)\n\n/* If this bit is set, then an unmatched ) is ordinary.\n   If not set, then an unmatched ) is invalid.  */\n#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)\n\n/* If this bit is set, succeed as soon as we match the whole pattern,\n   without further backtracking.  */\n#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)\n\n/* If this bit is set, do not process the GNU regex operators.\n   If not set, then the GNU regex operators are recognized. */\n#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)\n\n/* If this bit is set, turn on internal regex debugging.\n   If not set, and debugging was on, turn it off.\n   This only works if regex.c is compiled -DDEBUG.\n   We define this bit always, so that all that's needed to turn on\n   debugging is to recompile regex.c; the calling code can always have\n   this bit set, and it won't affect anything in the normal case. */\n#define RE_DEBUG (RE_NO_GNU_OPS << 1)\n\n/* This global variable defines the particular regexp syntax to use (for\n   some interfaces).  When a regexp is compiled, the syntax used is\n   stored in the pattern buffer, so changing this does not affect\n   already-compiled regexps.  */\nextern reg_syntax_t re_syntax_options;\n\f\n/* Define combinations of the above bits for the standard possibilities.\n   (The [[[ comments delimit what gets put into the Texinfo file, so\n   don't delete them!)  */\n/* [[[begin syntaxes]]] */\n#define RE_SYNTAX_EMACS 0\n\n#define RE_SYNTAX_AWK\t\t\t\t\t\t\t\\\n  (RE_BACKSLASH_ESCAPE_IN_LISTS   | RE_DOT_NOT_NULL\t\t\t\\\n   | RE_NO_BK_PARENS              | RE_NO_BK_REFS\t\t\t\\\n   | RE_NO_BK_VBAR                | RE_NO_EMPTY_RANGES\t\t\t\\\n   | RE_DOT_NEWLINE\t\t  | RE_CONTEXT_INDEP_ANCHORS\t\t\\\n   | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS)\n\n#define RE_SYNTAX_GNU_AWK\t\t\t\t\t\t\\\n  ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG)\t\\\n   & ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS))\n\n#define RE_SYNTAX_POSIX_AWK \t\t\t\t\t\t\\\n  (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS\t\t\\\n   | RE_INTERVALS\t    | RE_NO_GNU_OPS)\n\n#define RE_SYNTAX_GREP\t\t\t\t\t\t\t\\\n  (RE_BK_PLUS_QM              | RE_CHAR_CLASSES\t\t\t\t\\\n   | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS\t\t\t\t\\\n   | RE_NEWLINE_ALT)\n\n#define RE_SYNTAX_EGREP\t\t\t\t\t\t\t\\\n  (RE_CHAR_CLASSES        | RE_CONTEXT_INDEP_ANCHORS\t\t\t\\\n   | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE\t\t\t\\\n   | RE_NEWLINE_ALT       | RE_NO_BK_PARENS\t\t\t\t\\\n   | RE_NO_BK_VBAR)\n\n#define RE_SYNTAX_POSIX_EGREP\t\t\t\t\t\t\\\n  (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)\n\n/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff.  */\n#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC\n\n#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC\n\n/* Syntax bits common to both basic and extended POSIX regex syntax.  */\n#define _RE_SYNTAX_POSIX_COMMON\t\t\t\t\t\t\\\n  (RE_CHAR_CLASSES | RE_DOT_NEWLINE      | RE_DOT_NOT_NULL\t\t\\\n   | RE_INTERVALS  | RE_NO_EMPTY_RANGES)\n\n#define RE_SYNTAX_POSIX_BASIC\t\t\t\t\t\t\\\n  (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)\n\n/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes\n   RE_LIMITED_OPS, i.e., \\? \\+ \\| are not recognized.  Actually, this\n   isn't minimal, since other operators, such as \\`, aren't disabled.  */\n#define RE_SYNTAX_POSIX_MINIMAL_BASIC\t\t\t\t\t\\\n  (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)\n\n#define RE_SYNTAX_POSIX_EXTENDED\t\t\t\t\t\\\n  (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS\t\t\t\\\n   | RE_CONTEXT_INDEP_OPS  | RE_NO_BK_BRACES\t\t\t\t\\\n   | RE_NO_BK_PARENS       | RE_NO_BK_VBAR\t\t\t\t\\\n   | RE_UNMATCHED_RIGHT_PAREN_ORD)\n\n/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS\n   replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added.  */\n#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED\t\t\t\t\\\n  (_RE_SYNTAX_POSIX_COMMON  | RE_CONTEXT_INDEP_ANCHORS\t\t\t\\\n   | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES\t\t\t\t\\\n   | RE_NO_BK_PARENS        | RE_NO_BK_REFS\t\t\t\t\\\n   | RE_NO_BK_VBAR\t    | RE_UNMATCHED_RIGHT_PAREN_ORD)\n/* [[[end syntaxes]]] */\n\f\n/* Maximum number of duplicates an interval can allow.  Some systems\n   (erroneously) define this in other header files, but we want our\n   value, so remove any previous define.  */\n#ifdef RE_DUP_MAX\n#undef RE_DUP_MAX\n#endif\n/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows.  */\n#define RE_DUP_MAX (0x7fff)\n\n\n/* POSIX `cflags' bits (i.e., information for `regcomp').  */\n\n/* If this bit is set, then use extended regular expression syntax.\n   If not set, then use basic regular expression syntax.  */\n#define REG_EXTENDED 1\n\n/* If this bit is set, then ignore case when matching.\n   If not set, then case is significant.  */\n#define REG_ICASE (REG_EXTENDED << 1)\n\n/* If this bit is set, then anchors do not match at newline\n     characters in the string.\n   If not set, then anchors do match at newlines.  */\n#define REG_NEWLINE (REG_ICASE << 1)\n\n/* If this bit is set, then report only success or fail in regexec.\n   If not set, then returns differ between not matching and errors.  */\n#define REG_NOSUB (REG_NEWLINE << 1)\n\n\n/* POSIX `eflags' bits (i.e., information for regexec).  */\n\n/* If this bit is set, then the beginning-of-line operator doesn't match\n     the beginning of the string (presumably because it's not the\n     beginning of a line).\n   If not set, then the beginning-of-line operator does match the\n     beginning of the string.  */\n#define REG_NOTBOL 1\n\n/* Like REG_NOTBOL, except for the end-of-line.  */\n#define REG_NOTEOL (1 << 1)\n\n\n/* If any error codes are removed, changed, or added, update the\n   `re_error_msg' table in regex.c.  */\ntypedef enum\n{\n  REG_NOERROR = 0,\t/* Success.  */\n  REG_NOMATCH,\t\t/* Didn't find a match (for regexec).  */\n\n  /* POSIX regcomp return error codes.  (In the order listed in the\n     standard.)  */\n  REG_BADPAT,\t\t/* Invalid pattern.  */\n  REG_ECOLLATE,\t\t/* Not implemented.  */\n  REG_ECTYPE,\t\t/* Invalid character class name.  */\n  REG_EESCAPE,\t\t/* Trailing backslash.  */\n  REG_ESUBREG,\t\t/* Invalid back reference.  */\n  REG_EBRACK,\t\t/* Unmatched left bracket.  */\n  REG_EPAREN,\t\t/* Parenthesis imbalance.  */\n  REG_EBRACE,\t\t/* Unmatched \\{.  */\n  REG_BADBR,\t\t/* Invalid contents of \\{\\}.  */\n  REG_ERANGE,\t\t/* Invalid range end.  */\n  REG_ESPACE,\t\t/* Ran out of memory.  */\n  REG_BADRPT,\t\t/* No preceding re for repetition op.  */\n\n  /* Error codes we've added.  */\n  REG_EEND,\t\t/* Premature end.  */\n  REG_ESIZE,\t\t/* Compiled pattern bigger than 2^16 bytes.  */\n  REG_ERPAREN\t\t/* Unmatched ) or \\); not returned from regcomp.  */\n} reg_errcode_t;\n\f\n/* This data structure represents a compiled pattern.  Before calling\n   the pattern compiler, the fields `buffer', `allocated', `fastmap',\n   `translate', and `no_sub' can be set.  After the pattern has been\n   compiled, the `re_nsub' field is available.  All other fields are\n   private to the regex routines.  */\n\n#ifndef RE_TRANSLATE_TYPE\n#define RE_TRANSLATE_TYPE char *\n#endif\n\nstruct re_pattern_buffer\n{\n/* [[[begin pattern_buffer]]] */\n\t/* Space that holds the compiled pattern.  It is declared as\n          `unsigned char *' because its elements are\n           sometimes used as array indexes.  */\n  unsigned char *buffer;\n\n\t/* Number of bytes to which `buffer' points.  */\n  unsigned long int allocated;\n\n\t/* Number of bytes actually used in `buffer'.  */\n  unsigned long int used;\n\n        /* Syntax setting with which the pattern was compiled.  */\n  reg_syntax_t syntax;\n\n        /* Pointer to a fastmap, if any, otherwise zero.  re_search uses\n           the fastmap, if there is one, to skip over impossible\n           starting points for matches.  */\n  char *fastmap;\n\n        /* Either a translate table to apply to all characters before\n           comparing them, or zero for no translation.  The translation\n           is applied to a pattern when it is compiled and to a string\n           when it is matched.  */\n  RE_TRANSLATE_TYPE translate;\n\n\t/* Number of subexpressions found by the compiler.  */\n  size_t re_nsub;\n\n        /* Zero if this pattern cannot match the empty string, one else.\n           Well, in truth it's used only in `re_search_2', to see\n           whether or not we should use the fastmap, so we don't set\n           this absolutely perfectly; see `re_compile_fastmap' (the\n           `duplicate' case).  */\n  unsigned can_be_null : 1;\n\n        /* If REGS_UNALLOCATED, allocate space in the `regs' structure\n             for `max (RE_NREGS, re_nsub + 1)' groups.\n           If REGS_REALLOCATE, reallocate space if necessary.\n           If REGS_FIXED, use what's there.  */\n#define REGS_UNALLOCATED 0\n#define REGS_REALLOCATE 1\n#define REGS_FIXED 2\n  unsigned regs_allocated : 2;\n\n        /* Set to zero when `regex_compile' compiles a pattern; set to one\n           by `re_compile_fastmap' if it updates the fastmap.  */\n  unsigned fastmap_accurate : 1;\n\n        /* If set, `re_match_2' does not return information about\n           subexpressions.  */\n  unsigned no_sub : 1;\n\n        /* If set, a beginning-of-line anchor doesn't match at the\n           beginning of the string.  */\n  unsigned not_bol : 1;\n\n        /* Similarly for an end-of-line anchor.  */\n  unsigned not_eol : 1;\n\n        /* If true, an anchor at a newline matches.  */\n  unsigned newline_anchor : 1;\n\n/* [[[end pattern_buffer]]] */\n};\n\ntypedef struct re_pattern_buffer regex_t;\n\f\n/* Type for byte offsets within the string.  POSIX mandates this.  */\ntypedef int regoff_t;\n\n\n/* This is the structure we store register match data in.  See\n   regex.texinfo for a full description of what registers match.  */\nstruct re_registers\n{\n  unsigned num_regs;\n  regoff_t *start;\n  regoff_t *end;\n};\n\n\n/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,\n   `re_match_2' returns information about at least this many registers\n   the first time a `regs' structure is passed.  */\n#ifndef RE_NREGS\n#define RE_NREGS 30\n#endif\n\n\n/* POSIX specification for registers.  Aside from the different names than\n   `re_registers', POSIX uses an array of structures, instead of a\n   structure of arrays.  */\ntypedef struct\n{\n  regoff_t rm_so;  /* Byte offset from string's start to substring's start.  */\n  regoff_t rm_eo;  /* Byte offset from string's start to substring's end.  */\n} regmatch_t;\n\f\n/* Declarations for routines.  */\n\n/* To avoid duplicating every routine declaration -- once with a\n   prototype (if we are ANSI), and once without (if we aren't) -- we\n   use the following macro to declare argument types.  This\n   unfortunately clutters up the declarations a bit, but I think it's\n   worth it.  */\n\n#if __STDC__\n\n#define _RE_ARGS(args) args\n\n#else /* not __STDC__ */\n\n#define _RE_ARGS(args) ()\n\n#endif /* not __STDC__ */\n\n/* Sets the current default syntax to SYNTAX, and return the old syntax.\n   You can also simply assign to the `re_syntax_options' variable.  */\nextern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));\n\n/* Compile the regular expression PATTERN, with length LENGTH\n   and syntax given by the global `re_syntax_options', into the buffer\n   BUFFER.  Return NULL if successful, and an error string if not.  */\nextern const char *re_compile_pattern\n  _RE_ARGS ((const char *pattern, size_t length,\n             struct re_pattern_buffer *buffer));\n\n\n/* Compile a fastmap for the compiled pattern in BUFFER; used to\n   accelerate searches.  Return 0 if successful and -2 if was an\n   internal error.  */\nextern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));\n\n\n/* Search in the string STRING (with length LENGTH) for the pattern\n   compiled into BUFFER.  Start searching at position START, for RANGE\n   characters.  Return the starting position of the match, -1 for no\n   match, or -2 for an internal error.  Also return register\n   information in REGS (if REGS and BUFFER->no_sub are nonzero).  */\nextern int re_search\n  _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,\n            int length, int start, int range, struct re_registers *regs));\n\n\n/* Like `re_search', but search in the concatenation of STRING1 and\n   STRING2.  Also, stop searching at index START + STOP.  */\nextern int re_search_2\n  _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,\n             int length1, const char *string2, int length2,\n             int start, int range, struct re_registers *regs, int stop));\n\n\n/* Like `re_search', but return how many characters in STRING the regexp\n   in BUFFER matched, starting at position START.  */\nextern int re_match\n  _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,\n             int length, int start, struct re_registers *regs));\n\n\n/* Relates to `re_match' as `re_search_2' relates to `re_search'.  */\nextern int re_match_2\n  _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,\n             int length1, const char *string2, int length2,\n             int start, struct re_registers *regs, int stop));\n\n\n/* Set REGS to hold NUM_REGS registers, storing them in STARTS and\n   ENDS.  Subsequent matches using BUFFER and REGS will use this memory\n   for recording register information.  STARTS and ENDS must be\n   allocated with malloc, and must each be at least `NUM_REGS * sizeof\n   (regoff_t)' bytes long.\n\n   If NUM_REGS == 0, then subsequent matches should allocate their own\n   register data.\n\n   Unless this function is called, the first search or match using\n   PATTERN_BUFFER will allocate its own register data, without\n   freeing the old data.  */\nextern void re_set_registers\n  _RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,\n             unsigned num_regs, regoff_t *starts, regoff_t *ends));\n\n#ifdef _REGEX_RE_COMP\n#ifndef _CRAY\n/* 4.2 bsd compatibility.  */\nextern char *re_comp _RE_ARGS ((const char *));\nextern int re_exec _RE_ARGS ((const char *));\n#endif\n#endif\n\n/* POSIX compatibility.  */\nextern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int cflags));\nextern int regexec\n  _RE_ARGS ((const regex_t *preg, const char *string, size_t nmatch,\n             regmatch_t pmatch[], int eflags));\nextern size_t regerror\n  _RE_ARGS ((int errcode, const regex_t *preg, char *errbuf,\n             size_t errbuf_size));\nextern void regfree _RE_ARGS ((regex_t *preg));\n\n\n#ifdef __cplusplus\n}\n#endif\t/* C++ */\n\n#endif /* not __REGEXP_LIBRARY_H__ */\n\f\n/*\nLocal variables:\nmake-backup-files: t\nversion-control: t\ntrim-versions-without-asking: nil\nEnd:\n*/\n"
  },
  {
    "path": "account.c",
    "content": "/*\n * Copyright (C) 2000-2007 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* remote host account manipulation (POP/IMAP) */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"account.h\"\n#include \"url.h\"\n\n/* mutt_account_match: compare account info (host/port/user) */\nint mutt_account_match (const ACCOUNT* a1, const ACCOUNT* a2)\n{\n  const char* user = NONULL (Username);\n\n  if (a1->type != a2->type)\n    return 0;\n  if (ascii_strcasecmp (a1->host, a2->host))\n    return 0;\n  if (a1->port != a2->port)\n    return 0;\n\n#ifdef USE_IMAP\n  if (a1->type == M_ACCT_TYPE_IMAP)\n  {\n    if (ImapUser)\n      user = ImapUser;\n  }\n#endif\n\n#ifdef USE_POP\n  if (a1->type == M_ACCT_TYPE_POP && PopUser)\n    user = PopUser;\n#endif\n  \n  if (a1->flags & a2->flags & M_ACCT_USER)\n    return (!strcmp (a1->user, a2->user));\n  if (a1->flags & M_ACCT_USER)\n    return (!strcmp (a1->user, user));\n  if (a2->flags & M_ACCT_USER)\n    return (!strcmp (a2->user, user));\n\n  return 1;\n}\n\n/* mutt_account_fromurl: fill account with information from url. */\nint mutt_account_fromurl (ACCOUNT* account, ciss_url_t* url)\n{\n  /* must be present */\n  if (url->host)\n    strfcpy (account->host, url->host, sizeof (account->host));\n  else\n    return -1;\n\n  if (url->user)\n  {\n    strfcpy (account->user, url->user, sizeof (account->user));\n    account->flags |= M_ACCT_USER;\n  }\n  if (url->pass)\n  {\n    strfcpy (account->pass, url->pass, sizeof (account->pass));\n    account->flags |= M_ACCT_PASS;\n  }\n  if (url->port)\n  {\n    account->port = url->port;\n    account->flags |= M_ACCT_PORT;\n  }\n\n  return 0;\n}\n\n/* mutt_account_tourl: fill URL with info from account. The URL information\n *   is a set of pointers into account - don't free or edit account until\n *   you've finished with url (make a copy of account if you need it for\n *   a while). */\nvoid mutt_account_tourl (ACCOUNT* account, ciss_url_t* url)\n{\n  url->scheme = U_UNKNOWN;\n  url->user = NULL;\n  url->pass = NULL;\n  url->port = 0;\n\n#ifdef USE_IMAP\n  if (account->type == M_ACCT_TYPE_IMAP)\n  {\n    if (account->flags & M_ACCT_SSL)\n      url->scheme = U_IMAPS;\n    else\n      url->scheme = U_IMAP;\n  }\n#endif\n\n#ifdef USE_POP\n  if (account->type == M_ACCT_TYPE_POP)\n  {\n    if (account->flags & M_ACCT_SSL)\n      url->scheme = U_POPS;\n    else\n      url->scheme = U_POP;\n  }\n#endif\n\n#ifdef USE_SMTP\n  if (account->type == M_ACCT_TYPE_SMTP)\n  {\n    if (account->flags & M_ACCT_SSL)\n      url->scheme = U_SMTPS;\n    else\n      url->scheme = U_SMTP;\n  }\n#endif\n\n  url->host = account->host;\n  if (account->flags & M_ACCT_PORT)\n    url->port = account->port;\n  if (account->flags & M_ACCT_USER)\n    url->user = account->user;\n  if (account->flags & M_ACCT_PASS)\n    url->pass = account->pass;\n}\n\n/* mutt_account_getuser: retrieve username into ACCOUNT, if necessary */\nint mutt_account_getuser (ACCOUNT* account)\n{\n  char prompt[SHORT_STRING];\n\n  /* already set */\n  if (account->flags & M_ACCT_USER)\n    return 0;\n#ifdef USE_IMAP\n  else if ((account->type == M_ACCT_TYPE_IMAP) && ImapUser)\n    strfcpy (account->user, ImapUser, sizeof (account->user));\n#endif\n#ifdef USE_POP\n  else if ((account->type == M_ACCT_TYPE_POP) && PopUser)\n    strfcpy (account->user, PopUser, sizeof (account->user));\n#endif\n  else if (option (OPTNOCURSES))\n    return -1;\n  /* prompt (defaults to unix username), copy into account->user */\n  else\n  {\n    snprintf (prompt, sizeof (prompt), _(\"Username at %s: \"), account->host);\n    strfcpy (account->user, NONULL (Username), sizeof (account->user));\n    if (mutt_get_field_unbuffered (prompt, account->user, sizeof (account->user), 0))\n      return -1;\n  }\n\n  account->flags |= M_ACCT_USER;\n\n  return 0;\n}\n\nint mutt_account_getlogin (ACCOUNT* account)\n{\n  /* already set */\n  if (account->flags & M_ACCT_LOGIN)\n    return 0;\n#ifdef USE_IMAP\n  else if (account->type == M_ACCT_TYPE_IMAP)\n  {\n    if (ImapLogin)\n    {\n      strfcpy (account->login, ImapLogin, sizeof (account->login));\n      account->flags |= M_ACCT_LOGIN;\n    }\n  }\n#endif\n\n  if (!(account->flags & M_ACCT_LOGIN))\n  {\n    mutt_account_getuser (account);\n    strfcpy (account->login, account->user, sizeof (account->login));\n  }\n\n  account->flags |= M_ACCT_LOGIN;\n\n  return 0;\n}\n\n/* mutt_account_getpass: fetch password into ACCOUNT, if necessary */\nint mutt_account_getpass (ACCOUNT* account)\n{\n  char prompt[SHORT_STRING];\n\n  if (account->flags & M_ACCT_PASS)\n    return 0;\n#ifdef USE_IMAP\n  else if ((account->type == M_ACCT_TYPE_IMAP) && ImapPass)\n    strfcpy (account->pass, ImapPass, sizeof (account->pass));\n#endif\n#ifdef USE_POP\n  else if ((account->type == M_ACCT_TYPE_POP) && PopPass)\n    strfcpy (account->pass, PopPass, sizeof (account->pass));\n#endif\n#ifdef USE_SMTP\n  else if ((account->type == M_ACCT_TYPE_SMTP) && SmtpPass)\n    strfcpy (account->pass, SmtpPass, sizeof (account->pass));\n#endif\n  else if (option (OPTNOCURSES))\n    return -1;\n  else\n  {\n    snprintf (prompt, sizeof (prompt), _(\"Password for %s@%s: \"),\n              account->flags & M_ACCT_LOGIN ? account->login : account->user,\n              account->host);\n    account->pass[0] = '\\0';\n    if (mutt_get_password (prompt, account->pass, sizeof (account->pass)))\n      return -1;\n  }\n\n  account->flags |= M_ACCT_PASS;\n\n  return 0;\n}\n\nvoid mutt_account_unsetpass (ACCOUNT* account)\n{\n  account->flags &= ~M_ACCT_PASS;\n}\n"
  },
  {
    "path": "account.h",
    "content": "/*\n * Copyright (C) 2000-2007,2012 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* remote host account manipulation (POP/IMAP) */\n\n#ifndef _MUTT_ACCOUNT_H_\n#define _MUTT_ACCOUNT_H_ 1\n\n#include \"url.h\"\n\n/* account types */\nenum\n{\n  M_ACCT_TYPE_NONE = 0,\n  M_ACCT_TYPE_IMAP,\n  M_ACCT_TYPE_POP,\n  M_ACCT_TYPE_SMTP\n};\n\n/* account flags */\n#define M_ACCT_PORT  (1<<0)\n#define M_ACCT_USER  (1<<1)\n#define M_ACCT_LOGIN (1<<2)\n#define M_ACCT_PASS  (1<<3)\n#define M_ACCT_SSL   (1<<4)\n\ntypedef struct\n{\n  char user[64];\n  char login[64];\n  char pass[128];\n  char host[128];\n  unsigned short port;\n  unsigned char type;\n  unsigned char flags;\n} ACCOUNT;\n\nint mutt_account_match (const ACCOUNT* a1, const ACCOUNT* m2);\nint mutt_account_fromurl (ACCOUNT* account, ciss_url_t* url);\nvoid mutt_account_tourl (ACCOUNT* account, ciss_url_t* url);\nint mutt_account_getuser (ACCOUNT* account);\nint mutt_account_getlogin (ACCOUNT* account);\nint mutt_account_getpass (ACCOUNT* account);\nvoid mutt_account_unsetpass (ACCOUNT* account);\n\n#endif /* _MUTT_ACCOUNT_H_ */\n"
  },
  {
    "path": "addrbook.c",
    "content": "/*\n * Copyright (C) 1996-2000,2007 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_menu.h\"\n#include \"mapping.h\"\n#include \"sort.h\"\n\n#include \"mutt_idna.h\"\n\n#include <string.h>\n#include <stdlib.h>\n#include <ctype.h>\n\n#define RSORT(x) (SortAlias & SORT_REVERSE) ? -x : x\n\nstatic const struct mapping_t AliasHelp[] = {\n  { N_(\"Exit\"),   OP_EXIT },\n  { N_(\"Del\"),    OP_DELETE },\n  { N_(\"Undel\"),  OP_UNDELETE },\n  { N_(\"Select\"), OP_GENERIC_SELECT_ENTRY },\n  { N_(\"Help\"),   OP_HELP },\n  { NULL,\t  0 }\n};\n\nstatic const char *\nalias_format_str (char *dest, size_t destlen, size_t col, char op, const char *src,\n\t\t  const char *fmt, const char *ifstring, const char *elsestring,\n\t\t  unsigned long data, format_flag flags)\n{\n  char tmp[SHORT_STRING], adr[SHORT_STRING];\n  ALIAS *alias = (ALIAS *) data;\n\n  switch (op)\n  {\n    case 'f':\n      snprintf (tmp, sizeof (tmp), \"%%%ss\", fmt);\n      snprintf (dest, destlen, tmp, alias->del ? \"D\" : \" \");\n      break;\n    case 'a':\n      mutt_format_s (dest, destlen, fmt, alias->name);\n      break;\n    case 'r':\n      adr[0] = 0;\n      rfc822_write_address (adr, sizeof (adr), alias->addr, 1);\n      snprintf (tmp, sizeof (tmp), \"%%%ss\", fmt);\n      snprintf (dest, destlen, tmp, adr);\n      break;\n    case 'n':\n      snprintf (tmp, sizeof (tmp), \"%%%sd\", fmt);\n      snprintf (dest, destlen, tmp, alias->num + 1);\n      break;\n    case 't':\n      dest[0] = alias->tagged ? '*' : ' ';\n      dest[1] = 0;\n      break;\n  }\n\n  return (src);\n}\n\nstatic void alias_entry (char *s, size_t slen, MUTTMENU *m, int num)\n{\n  mutt_FormatString (s, slen, 0, NONULL (AliasFmt), alias_format_str, (unsigned long) ((ALIAS **) m->data)[num], M_FORMAT_ARROWCURSOR);\n}\n\nstatic int alias_tag (MUTTMENU *menu, int n, int m)\n{\n  ALIAS *cur = ((ALIAS **) menu->data)[n];\n  int ot = cur->tagged;\n  \n  cur->tagged = (m >= 0 ? m : !cur->tagged);\n  \n  return cur->tagged - ot;\n}\n\nstatic int alias_SortAlias (const void *a, const void *b)\n{\n  ALIAS *pa = *(ALIAS **) a;\n  ALIAS *pb = *(ALIAS **) b;\n  int r = mutt_strcasecmp (pa->name, pb->name);\n\n  return (RSORT (r));\n}\n\nstatic int alias_SortAddress (const void *a, const void *b)\n{\n  ADDRESS *pa = (*(ALIAS **) a)->addr;\n  ADDRESS *pb = (*(ALIAS **) b)->addr;\n  int r;\n\n  if (pa == pb)\n    r = 0;\n  else if (pa == NULL)\n    r = -1;\n  else if (pb == NULL)\n    r = 1;\n  else if (pa->personal)\n  { \n    if (pb->personal)\n      r = mutt_strcasecmp (pa->personal, pb->personal);\n    else\n      r = 1;\n  }\n  else if (pb->personal)\n    r = -1;\n  else\n    r = ascii_strcasecmp (pa->mailbox, pb->mailbox);\n  return (RSORT (r));\n}\n\nvoid mutt_alias_menu (char *buf, size_t buflen, ALIAS *aliases)\n{\n  ALIAS *aliasp;\n  MUTTMENU *menu;\n  ALIAS **AliasTable = NULL;\n  int t = -1;\n  int i, done = 0;\n  int op;\n  char helpstr[LONG_STRING];\n\n  int omax;\n  \n  if (!aliases)\n  {\n    mutt_error _(\"You have no aliases!\");\n    return;\n  }\n  \n  /* tell whoever called me to redraw the screen when I return */\n  set_option (OPTNEEDREDRAW);\n  \n  menu = mutt_new_menu (MENU_ALIAS);\n  menu->make_entry = alias_entry;\n  menu->tag = alias_tag;\n  menu->title = _(\"Aliases\");\n  menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_ALIAS, AliasHelp);\n\nnew_aliases:\n\n  omax = menu->max;\n  \n  /* count the number of aliases */\n  for (aliasp = aliases; aliasp; aliasp = aliasp->next)\n  {\n    aliasp->self->del    = 0;\n    aliasp->self->tagged = 0;\n    menu->max++;\n  }\n\n  safe_realloc (&AliasTable, menu->max * sizeof (ALIAS *));\n  menu->data = AliasTable;\n\n  for (i = omax, aliasp = aliases; aliasp; aliasp = aliasp->next, i++)\n  {\n    AliasTable[i] = aliasp->self;\n    aliases       = aliasp;\n  }\n\n  if ((SortAlias & SORT_MASK) != SORT_ORDER)\n  {\n    qsort (AliasTable, i, sizeof (ALIAS *),\n\t (SortAlias & SORT_MASK) == SORT_ADDRESS ? alias_SortAddress : alias_SortAlias);\n  }\n\n  for (i=0; i<menu->max; i++) AliasTable[i]->num = i;\n\n  while (!done)\n  {\n    if (aliases->next)\n    {\n      menu->redraw |= REDRAW_FULL;\n      aliases       = aliases->next;\n      goto new_aliases;\n    }\n    \n    switch ((op = mutt_menuLoop (menu)))\n    {\n      case OP_DELETE:\n      case OP_UNDELETE:\n        if (menu->tagprefix)\n        {\n\t  for (i = 0; i < menu->max; i++)\n\t    if (AliasTable[i]->tagged)\n\t      AliasTable[i]->del = (op == OP_DELETE) ? 1 : 0;\n\t  menu->redraw |= REDRAW_INDEX;\n\t}\n        else\n        {\n\t  AliasTable[menu->current]->self->del = (op == OP_DELETE) ? 1 : 0;\n\t  menu->redraw |= REDRAW_CURRENT;\n\t  if (option (OPTRESOLVE) && menu->current < menu->max - 1)\n\t  {\n\t    menu->current++;\n\t    menu->redraw |= REDRAW_INDEX;\n\t  }\n\t}\n        break;\n      case OP_GENERIC_SELECT_ENTRY:\n        t = menu->current;\n      case OP_EXIT:\n\tdone = 1;\n\tbreak;\n    }\n  }\n\n  for (i = 0; i < menu->max; i++)\n  {\n    if (AliasTable[i]->tagged)\n    {\n      mutt_addrlist_to_local (AliasTable[i]->addr);\n      rfc822_write_address (buf, buflen, AliasTable[i]->addr, 0);\n      t = -1;\n    }\n  }\n\n  if(t != -1)\n  {\n      mutt_addrlist_to_local (AliasTable[t]->addr);\n    rfc822_write_address (buf, buflen, AliasTable[t]->addr, 0);\n  }\n\n  mutt_menuDestroy (&menu);\n  FREE (&AliasTable);\n  \n}\n"
  },
  {
    "path": "alias.c",
    "content": "/*\n * Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_regex.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_idna.h\"\n\n#include <string.h>\n#include <ctype.h>\n#include <errno.h>\n\nADDRESS *mutt_lookup_alias (const char *s)\n{\n  ALIAS *t = Aliases;\n\n  for (; t; t = t->next)\n    if (!mutt_strcasecmp (s, t->name))\n      return (t->addr);\n  return (NULL);   /* no such alias */\n}\n\nstatic ADDRESS *mutt_expand_aliases_r (ADDRESS *a, LIST **expn)\n{\n  ADDRESS *head = NULL, *last = NULL, *t, *w;\n  LIST *u;\n  char i;\n  const char *fqdn;\n  \n  while (a)\n  {\n    if (!a->group && !a->personal && a->mailbox && strchr (a->mailbox, '@') == NULL)\n    {\n      t = mutt_lookup_alias (a->mailbox);\n\n      if (t)\n      {\t\n        i = 0;\n        for (u = *expn; u; u = u->next)\n\t{\n\t  if (mutt_strcmp (a->mailbox, u->data) == 0) /* alias already found */\n\t  {\n\t    dprint (1, (debugfile, \"mutt_expand_aliases_r(): loop in alias found for '%s'\\n\", a->mailbox));\n\t    i = 1;\n\t    break;\n\t  }\n\t}\n\n        if (!i)\n\t{\n          u = safe_malloc (sizeof (LIST));\n          u->data = safe_strdup (a->mailbox);\n          u->next = *expn;\n          *expn = u;\n\t  w = rfc822_cpy_adr (t, 0);\n\t  w = mutt_expand_aliases_r (w, expn);\n\t  if (head)\n\t    last->next = w;\n\t  else\n\t    head = last = w;\n\t  while (last && last->next)\n\t    last = last->next;\n        }\n\tt = a;\n\ta = a->next;\n\tt->next = NULL;\n\trfc822_free_address (&t);\n\tcontinue;\n      }\n      else\n      {\n\tstruct passwd *pw = getpwnam (a->mailbox);\n\n\tif (pw)\n\t{\n\t  char namebuf[STRING];\n\t  \n\t  mutt_gecos_name (namebuf, sizeof (namebuf), pw);\n\t  mutt_str_replace (&a->personal, namebuf);\n\t  \n#ifdef EXACT_ADDRESS\n\t  FREE (&a->val);\n#endif\n\t}\n      }\n    }\n\n    if (head)\n    {\n      last->next = a;\n      last = last->next;\n    }\n    else\n      head = last = a;\n    a = a->next;\n    last->next = NULL;\n  }\n\n  if (option (OPTUSEDOMAIN) && (fqdn = mutt_fqdn(1)))\n  {\n    /* now qualify all local addresses */\n    rfc822_qualify (head, fqdn);\n  }\n\n  return (head);\n}\n\nADDRESS *mutt_expand_aliases (ADDRESS *a)\n{\n  ADDRESS *t;\n  LIST *expn = NULL; /* previously expanded aliases to avoid loops */\n\n  t = mutt_expand_aliases_r (a, &expn);\n  mutt_free_list (&expn);\n  return (mutt_remove_duplicates (t));\n}\n\nvoid mutt_expand_aliases_env (ENVELOPE *env)\n{\n  env->from = mutt_expand_aliases (env->from);\n  env->to = mutt_expand_aliases (env->to);\n  env->cc = mutt_expand_aliases (env->cc);\n  env->bcc = mutt_expand_aliases (env->bcc);\n  env->reply_to = mutt_expand_aliases (env->reply_to);\n  env->mail_followup_to = mutt_expand_aliases (env->mail_followup_to);\n}\n\n\n/* \n * if someone has an address like\n *\tFrom: Michael `/bin/rm -f ~` Elkins <me@mutt.org>\n * and the user creates an alias for this, Mutt could wind up executing\n * the backticks because it writes aliases like\n *\talias me Michael `/bin/rm -f ~` Elkins <me@mutt.org>\n * To avoid this problem, use a backslash (\\) to quote any backticks.  We also\n * need to quote backslashes as well, since you could defeat the above by\n * doing\n *\tFrom: Michael \\`/bin/rm -f ~\\` Elkins <me@mutt.org>\n * since that would get aliased as\n *\talias me Michael \\\\`/bin/rm -f ~\\\\` Elkins <me@mutt.org>\n * which still gets evaluated because the double backslash is not a quote.\n * \n * Additionally, we need to quote ' and \" characters - otherwise, mutt will\n * interpret them on the wrong parsing step.\n * \n * $ wants to be quoted since it may indicate the start of an environment\n * variable.\n */\n\nstatic void write_safe_address (FILE *fp, char *s)\n{\n  while (*s)\n  {\n    if (*s == '\\\\' || *s == '`' || *s == '\\'' || *s == '\"'\n\t|| *s == '$')\n      fputc ('\\\\', fp);\n    fputc (*s, fp);\n    s++;\n  }\n}\n\nADDRESS *mutt_get_address (ENVELOPE *env, char **pfxp)\n{\n  ADDRESS *adr;\n  char *pfx = NULL;\n\n  if (mutt_addr_is_user (env->from))\n  {\n    if (env->to && !mutt_is_mail_list (env->to))\n    {\n      pfx = \"To\";\n      adr = env->to;\n    }\n    else\n    {\n      pfx = \"Cc\";\n      adr = env->cc;\n    }\n  }\n  else if (env->reply_to && !mutt_is_mail_list (env->reply_to))\n  {\n    pfx = \"Reply-To\";\n    adr = env->reply_to;\n  }\n  else\n  {\n    adr = env->from;\n    pfx = \"From\";\n  }\n\n  if (pfxp) *pfxp = pfx;\n\n  return adr;\n}\n\nstatic void recode_buf (char *buf, size_t buflen)\n{\n  char *s;\n\n  if (!ConfigCharset || !*ConfigCharset || !Charset)\n    return;\n  s = safe_strdup (buf);\n  if (!s)\n    return;\n  if (mutt_convert_string (&s, Charset, ConfigCharset, 0) == 0)\n    strfcpy (buf, s, buflen);\n  FREE(&s);\n}\n\nvoid mutt_create_alias (ENVELOPE *cur, ADDRESS *iadr)\n{\n  ALIAS *new, *t;\n  char buf[LONG_STRING], tmp[LONG_STRING], prompt[SHORT_STRING], *pc;\n  char *err = NULL;\n  char fixed[LONG_STRING];\n  FILE *rc;\n  ADDRESS *adr = NULL;\n\n  if (cur)\n  {\n    adr = mutt_get_address (cur, NULL);\n  }\n  else if (iadr)\n  {\n    adr = iadr;\n  }\n\n  if (adr && adr->mailbox)\n  {\n    strfcpy (tmp, adr->mailbox, sizeof (tmp));\n    if ((pc = strchr (tmp, '@')))\n      *pc = 0;\n  }\n  else\n    tmp[0] = '\\0';\n\n  /* Don't suggest a bad alias name in the event of a strange local part. */\n  mutt_check_alias_name (tmp, buf, sizeof (buf));\n  \nretry_name:\n  /* L10N: prompt to add a new alias */\n  if (mutt_get_field (_(\"Alias as: \"), buf, sizeof (buf), 0) != 0 || !buf[0])\n    return;\n\n  /* check to see if the user already has an alias defined */\n  if (mutt_lookup_alias (buf))\n  {\n    mutt_error _(\"You already have an alias defined with that name!\");\n    return;\n  }\n  \n  if (mutt_check_alias_name (buf, fixed, sizeof (fixed)))\n  {\n    switch (mutt_yesorno (_(\"Warning: This alias name may not work.  Fix it?\"), M_YES))\n    {\n      case M_YES:\n      \tstrfcpy (buf, fixed, sizeof (buf));\n\tgoto retry_name;\n      case -1: \n\treturn;\n    }\n  }\n  \n  new       = safe_calloc (1, sizeof (ALIAS));\n  new->self = new;\n  new->name = safe_strdup (buf);\n\n  mutt_addrlist_to_local (adr);\n  \n  if (adr)\n    strfcpy (buf, adr->mailbox, sizeof (buf));\n  else\n    buf[0] = 0;\n\n  mutt_addrlist_to_intl (adr, NULL);\n  \n  do\n  {\n    if (mutt_get_field (_(\"Address: \"), buf, sizeof (buf), 0) != 0 || !buf[0])\n    {\n      mutt_free_alias (&new);\n      return;\n    }\n    \n    if((new->addr = rfc822_parse_adrlist (new->addr, buf)) == NULL)\n      BEEP ();\n    if (mutt_addrlist_to_intl (new->addr, &err))\n    {\n      mutt_error (_(\"Error: '%s' is a bad IDN.\"), err);\n      mutt_sleep (2);\n      continue;\n    }\n  }\n  while(new->addr == NULL);\n  \n  if (adr && adr->personal && !mutt_is_mail_list (adr))\n    strfcpy (buf, adr->personal, sizeof (buf));\n  else\n    buf[0] = 0;\n\n  if (mutt_get_field (_(\"Personal name: \"), buf, sizeof (buf), 0) != 0)\n  {\n    mutt_free_alias (&new);\n    return;\n  }\n  new->addr->personal = safe_strdup (buf);\n\n  buf[0] = 0;\n  rfc822_write_address (buf, sizeof (buf), new->addr, 1);\n  snprintf (prompt, sizeof (prompt), _(\"[%s = %s] Accept?\"), new->name, buf);\n  if (mutt_yesorno (prompt, M_YES) != M_YES)\n  {\n    mutt_free_alias (&new);\n    return;\n  }\n\n  mutt_alias_add_reverse (new);\n  \n  if ((t = Aliases))\n  {\n    while (t->next)\n      t = t->next;\n    t->next = new;\n  }\n  else\n    Aliases = new;\n\n  strfcpy (buf, NONULL (AliasFile), sizeof (buf));\n  if (mutt_get_field (_(\"Save to file: \"), buf, sizeof (buf), M_FILE) != 0)\n    return;\n  mutt_expand_path (buf, sizeof (buf));\n  if ((rc = fopen (buf, \"a+\")))\n  {\n    /* terminate existing file with \\n if necessary */\n    if (fseek (rc, 0, SEEK_END))\n      goto fseek_err;\n    if (ftell(rc) > 0)\n    {\n      if (fseek (rc, -1, SEEK_CUR) < 0)\n\tgoto fseek_err;\n      if (fread(buf, 1, 1, rc) != 1)\n      {\n\tmutt_perror (_(\"Error reading alias file\"));\n\tsafe_fclose (&rc);\n\treturn;\n      }\n      if (fseek (rc, 0, SEEK_END) < 0)\n\tgoto fseek_err;\n      if (buf[0] != '\\n')\n\tfputc ('\\n', rc);\n    }\n\n    if (mutt_check_alias_name (new->name, NULL, 0))\n      mutt_quote_filename (buf, sizeof (buf), new->name);\n    else\n      strfcpy (buf, new->name, sizeof (buf));\n    recode_buf (buf, sizeof (buf));\n    fprintf (rc, \"alias %s \", buf);\n    buf[0] = 0;\n    rfc822_write_address (buf, sizeof (buf), new->addr, 0);\n    recode_buf (buf, sizeof (buf));\n    write_safe_address (rc, buf);\n    fputc ('\\n', rc);\n    if (safe_fsync_close(&rc) != 0)\n      mutt_message (\"Trouble adding alias: %s.\", strerror(errno));\n    else\n      mutt_message _(\"Alias added.\");\n  }\n  else\n    mutt_perror (buf);\n\n  return;\n  \n  fseek_err:\n  mutt_perror (_(\"Error seeking in alias file\"));\n  safe_fclose (&rc);\n  return;\n}\n\n/* \n * Sanity-check an alias name:  Only characters which are non-special to both\n * the RFC 822 and the mutt configuration parser are permitted.\n */\n\nint mutt_check_alias_name (const char *s, char *dest, size_t destlen)\n{\n  wchar_t wc;\n  mbstate_t mb;\n  size_t l;\n  int rv = 0, bad = 0, dry = !dest || !destlen;\n\n  memset (&mb, 0, sizeof (mbstate_t));\n\n  if (!dry)\n    destlen--;\n  for (; s && *s && (dry || destlen) &&\n       (l = mbrtowc (&wc, s, MB_CUR_MAX, &mb)) != 0;\n       s += l, destlen -= l)\n  {\n    bad = l == (size_t)(-1) || l == (size_t)(-2); /* conversion error */\n    bad = bad || (!dry && l > destlen);\t\t/* too few room for mb char */\n    if (l == 1)\n      bad = bad || (strchr (\"-_+=.\", *s) == NULL && !iswalnum (wc));\n    else\n      bad = bad || !iswalnum (wc);\n    if (bad)\n    {\n      if (dry)\n\treturn -1;\n      *dest++ = '_';\n      rv = -1;\n    }\n    else if (!dry)\n    {\n      memcpy (dest, s, l);\n      dest += l;\n    }\n  }\n  if (!dry)\n    *dest = 0;\n  return rv;\n}\n\n/*\n * This routine looks to see if the user has an alias defined for the given\n * address.\n */\nADDRESS *alias_reverse_lookup (ADDRESS *a)\n{\n  if (!a || !a->mailbox)\n      return NULL;\n  \n  return hash_find (ReverseAlias, a->mailbox);\n}\n\nvoid mutt_alias_add_reverse (ALIAS *t)\n{\n  ADDRESS *ap;\n  if (!t)\n    return;\n  \n  for (ap = t->addr; ap; ap = ap->next)\n  {\n    if (!ap->group && ap->mailbox)\n      hash_insert (ReverseAlias, ap->mailbox, ap, 1);\n  }\n}\n\nvoid mutt_alias_delete_reverse (ALIAS *t)\n{\n  ADDRESS *ap;\n  if (!t)\n    return;\n  \n  for (ap = t->addr; ap; ap = ap->next)\n  {\n    if (!ap->group && ap->mailbox)\n      hash_delete (ReverseAlias, ap->mailbox, ap, NULL);\n  }\n}\n\n/* alias_complete() -- alias completion routine\n *\n * given a partial alias, this routine attempts to fill in the alias\n * from the alias list as much as possible. if given empty search string\n * or found nothing, present all aliases\n */\nint mutt_alias_complete (char *s, size_t buflen)\n{\n  ALIAS *a = Aliases;\n  ALIAS *a_list = NULL, *a_cur = NULL;\n  char bestname[HUGE_STRING];\n  int i;\n\n#ifndef min\n#define min(a,b)        ((a<b)?a:b)\n#endif\n\n  if (s[0] != 0) /* avoid empty string as strstr argument */\n  {\n    memset (bestname, 0, sizeof (bestname));\n\n    while (a)\n    {\n      if (a->name && strstr (a->name, s) == a->name)\n      {\n\tif (!bestname[0]) /* init */\n\t  strfcpy (bestname, a->name,\n\t\t   min (mutt_strlen (a->name) + 1, sizeof (bestname)));\n\telse\n\t{\n\t  for (i = 0 ; a->name[i] && a->name[i] == bestname[i] ; i++)\n\t    ;\n\t  bestname[i] = 0;\n\t}\n      }\n      a = a->next;\n    }\n\n    if (bestname[0] != 0)\n    {\n      if (mutt_strcmp (bestname, s) != 0)\n      {\n\t/* we are adding something to the completion */\n\tstrfcpy (s, bestname, mutt_strlen (bestname) + 1);\n\treturn 1;\n      }\n\n      /* build alias list and show it */\n\n      a = Aliases;\n      while (a)\n      {\n\tif (a->name && (strstr (a->name, s) == a->name))\n\t{\n\t  if (!a_list)  /* init */\n\t    a_cur = a_list = (ALIAS *) safe_malloc (sizeof (ALIAS));\n\t  else\n\t  {\n\t    a_cur->next = (ALIAS *) safe_malloc (sizeof (ALIAS));\n\t    a_cur = a_cur->next;\n\t  }\n\t  memcpy (a_cur, a, sizeof (ALIAS));\n\t  a_cur->next = NULL;\n\t}\n\ta = a->next;\n      }\n    }\n  }\n\n  bestname[0] = 0;\n  mutt_alias_menu (bestname, sizeof(bestname), a_list ? a_list : Aliases);\n  if (bestname[0] != 0)\n    strfcpy (s, bestname, buflen);\n\n  /* free the alias list */\n  while (a_list)\n  {\n    a_cur = a_list;\n    a_list = a_list->next;\n    FREE (&a_cur);\n  }\n\n  /* remove any aliases marked for deletion */\n  a_list = NULL;\n  for (a_cur = Aliases; a_cur;)\n  {\n    if (a_cur->del)\n    {\n      if (a_list)\n\ta_list->next = a_cur->next;\n      else\n\tAliases = a_cur->next;\n      \n      a_cur->next = NULL;\n      mutt_free_alias (&a_cur);\n      \n      if (a_list)\n\ta_cur = a_list;\n      else\n\ta_cur = Aliases;\n    }\n    else\n    {\n      a_list = a_cur;\n      a_cur  = a_cur->next;\n    }\n  }\n  \n  return 0;\n}\n\nstatic int string_is_address(const char *str, const char *u, const char *d)\n{\n  char buf[LONG_STRING];\n  \n  snprintf(buf, sizeof(buf), \"%s@%s\", NONULL(u), NONULL(d));\n  if (ascii_strcasecmp(str, buf) == 0)\n    return 1;\n  \n  return 0;\n}\n\n/* returns TRUE if the given address belongs to the user. */\nint mutt_addr_is_user (ADDRESS *addr)\n{\n  const char *fqdn;\n\n  /* NULL address is assumed to be the user. */\n  if (!addr)\n  {\n    dprint (5, (debugfile, \"mutt_addr_is_user: yes, NULL address\\n\"));\n    return 1;\n  }\n  if (!addr->mailbox)\n  {\n    dprint (5, (debugfile, \"mutt_addr_is_user: no, no mailbox\\n\"));\n    return 0;\n  }\n\n  if (ascii_strcasecmp (addr->mailbox, Username) == 0)\n  {\n    dprint (5, (debugfile, \"mutt_addr_is_user: yes, %s = %s\\n\", addr->mailbox, Username));\n    return 1;\n  }\n  if (string_is_address(addr->mailbox, Username, Hostname))\n  {\n    dprint (5, (debugfile, \"mutt_addr_is_user: yes, %s = %s @ %s \\n\", addr->mailbox, Username, Hostname));\n    return 1;\n  }\n  fqdn = mutt_fqdn (0);\n  if (string_is_address(addr->mailbox, Username, fqdn))\n  {\n    dprint (5, (debugfile, \"mutt_addr_is_user: yes, %s = %s @ %s \\n\", addr->mailbox, Username, NONULL(fqdn)));\n    return 1;\n  }\n  fqdn = mutt_fqdn (1);\n  if (string_is_address(addr->mailbox, Username, fqdn))\n  {\n    dprint (5, (debugfile, \"mutt_addr_is_user: yes, %s = %s @ %s \\n\", addr->mailbox, Username, NONULL(fqdn)));\n    return 1;\n  }\n\n  if (From && !ascii_strcasecmp (From->mailbox, addr->mailbox))\n  {\n    dprint (5, (debugfile, \"mutt_addr_is_user: yes, %s = %s\\n\", addr->mailbox, From->mailbox));\n    return 1;\n  }\n\n  if (mutt_match_rx_list (addr->mailbox, Alternates))\n  {\n    dprint (5, (debugfile, \"mutt_addr_is_user: yes, %s matched by alternates.\\n\", addr->mailbox));\n    if (mutt_match_rx_list (addr->mailbox, UnAlternates))\n      dprint (5, (debugfile, \"mutt_addr_is_user: but, %s matched by unalternates.\\n\", addr->mailbox));\n    else\n      return 1;\n  }\n  \n  dprint (5, (debugfile, \"mutt_addr_is_user: no, all failed.\\n\"));\n  return 0;\n}\n"
  },
  {
    "path": "ascii.c",
    "content": "/*\n * Copyright (C) 2001 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n * \n */\n\n\n/* \n * Versions of the string comparison functions which are\n * locale-insensitive.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdio.h>\n#include <stdlib.h>\n#include \"ascii.h\"\n\ninline int ascii_isupper (int c)\n{\n  return (c >= 'A') && (c <= 'Z');\n}\n\ninline int ascii_islower (int c)\n{\n  return (c >= 'a') && (c <= 'z');\n}\n\ninline int ascii_toupper (int c)\n{\n  if (ascii_islower (c))\n    return c & ~32;\n  \n  return c;\n}\n\ninline int ascii_tolower (int c)\n{\n  if (ascii_isupper (c))\n    return c | 32;\n  \n  return c;\n}\n\nint ascii_strcasecmp (const char *a, const char *b)\n{\n  int i;\n  \n  if (a == b)\n    return 0;\n  if (a == NULL && b)\n    return -1;\n  if (b == NULL && a)\n    return 1;\n  \n  for (;; a++, b++)\n  {\n    if ((i = ascii_tolower (*a) - ascii_tolower (*b)))\n      return i;\n    /* test for NUL here rather that in the for loop in order to detect unqual\n     * length strings (see http://dev.mutt.org/trac/ticket/3601)\n     */\n    if (!*a)\n      break;\n  }\n  \n  return 0;\n}\n\nint ascii_strncasecmp (const char *a, const char *b, int n)\n{\n  int i, j;\n  \n  if (a == b)\n    return 0;\n  if (a == NULL && b)\n    return -1;\n  if (b == NULL && a)\n    return 1;\n  \n  for (j = 0; (*a || *b) && j < n; a++, b++, j++)\n  {\n    if ((i = ascii_tolower (*a) - ascii_tolower (*b)))\n      return i;\n  }\n  \n  return 0;\n}\n"
  },
  {
    "path": "ascii.h",
    "content": "/*\n * Copyright (C) 2001-2002 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n * \n */\n\n\n/* \n * Versions of the string comparison functions which are\n * locale-insensitive.\n */\n\n#ifndef _ASCII_H\n# define _ASCII_H\n\nint ascii_isupper (int c);\nint ascii_islower (int c);\nint ascii_toupper (int c);\nint ascii_tolower (int c);\nint ascii_strcasecmp (const char *a, const char *b);\nint ascii_strncasecmp (const char *a, const char *b, int n);\n\n#define ascii_strcmp(a,b) mutt_strcmp(a,b)\n#define ascii_strncmp(a,b,c) mutt_strncmp(a,b,c)\n\nstatic inline char* ascii_strlower (char *s)\n{\n  char *p = s;\n\n  while (*p)\n  {\n    *p = ascii_tolower ((unsigned int) *p);\n    p++;\n  }\n\n  return s;\n}\n\n#endif\n"
  },
  {
    "path": "attach.c",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2004,2006 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_menu.h\"\n#include \"attach.h\"\n#include \"mutt_curses.h\"\n#include \"keymap.h\"\n#include \"rfc1524.h\"\n#include \"mime.h\"\n#include \"pager.h\"\n#include \"mailbox.h\"\n#include \"copy.h\"\n#include \"mx.h\"\n#include \"mutt_crypt.h\"\n\n#include <ctype.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/wait.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <string.h>\n#include <errno.h>\n\nint mutt_get_tmp_attachment (BODY *a)\n{\n  char type[STRING];\n  char tempfile[_POSIX_PATH_MAX];\n  rfc1524_entry *entry = rfc1524_new_entry();\n  FILE *fpin = NULL, *fpout = NULL;\n  struct stat st;\n  \n  if(a->unlink)\n    return 0;\n\n  snprintf(type, sizeof(type), \"%s/%s\", TYPE(a), a->subtype);\n  rfc1524_mailcap_lookup(a, type, entry, 0);\n  rfc1524_expand_filename(entry->nametemplate, a->filename, \n\t\t\t  tempfile, sizeof(tempfile));\n  \n  rfc1524_free_entry(&entry);\n\n  if(stat(a->filename, &st) == -1)\n    return -1;\n\n  if((fpin = fopen(a->filename, \"r\")) && (fpout = safe_fopen(tempfile, \"w\")))  /* __FOPEN_CHECKED__ */\n  {\n    mutt_copy_stream (fpin, fpout);\n    mutt_str_replace (&a->filename, tempfile);\n    a->unlink = 1;\n\n    if(a->stamp >= st.st_mtime)\n      mutt_stamp_attachment(a);\n  }\n  else\n    mutt_perror(fpin ? tempfile : a->filename);\n  \n  if(fpin)  safe_fclose (&fpin);\n  if(fpout) safe_fclose (&fpout);\n  \n  return a->unlink ? 0 : -1;\n}\n\n\n/* return 1 if require full screen redraw, 0 otherwise */\nint mutt_compose_attachment (BODY *a)\n{\n  char type[STRING];\n  char command[STRING];\n  char newfile[_POSIX_PATH_MAX] = \"\";\n  rfc1524_entry *entry = rfc1524_new_entry ();\n  short unlink_newfile = 0;\n  int rc = 0;\n  \n  snprintf (type, sizeof (type), \"%s/%s\", TYPE (a), a->subtype);\n  if (rfc1524_mailcap_lookup (a, type, entry, M_COMPOSE))\n  {\n    if (entry->composecommand || entry->composetypecommand)\n    {\n\n      if (entry->composetypecommand)\n\tstrfcpy (command, entry->composetypecommand, sizeof (command));\n      else \n\tstrfcpy (command, entry->composecommand, sizeof (command));\n      if (rfc1524_expand_filename (entry->nametemplate,\n\t\t\t\t      a->filename, newfile, sizeof (newfile)))\n      {\n\tdprint(1, (debugfile, \"oldfile: %s\\t newfile: %s\\n\",\n\t\t\t\t  a->filename, newfile));\n\tif (safe_symlink (a->filename, newfile) == -1)\n\t{\n\t  if (mutt_yesorno (_(\"Can't match nametemplate, continue?\"), M_YES) != M_YES)\n\t    goto bailout;\n\t}\n\telse\n\t  unlink_newfile = 1;\n      }\n      else\n\tstrfcpy(newfile, a->filename, sizeof(newfile));\n      \n      if (rfc1524_expand_command (a, newfile, type,\n\t\t\t\t      command, sizeof (command)))\n      {\n\t/* For now, editing requires a file, no piping */\n\tmutt_error _(\"Mailcap compose entry requires %%s\");\n      }\n      else\n      {\n\tint r;\n\n\tmutt_endwin (NULL);\n\tif ((r = mutt_system (command)) == -1)\n\t  mutt_error (_(\"Error running \\\"%s\\\"!\"), command);\n\t\n\tif (r != -1 && entry->composetypecommand)\n\t{\n\t  BODY *b;\n\t  FILE *fp, *tfp;\n\t  char tempfile[_POSIX_PATH_MAX];\n\n\t  if ((fp = safe_fopen (a->filename, \"r\")) == NULL)\n\t  {\n\t    mutt_perror _(\"Failure to open file to parse headers.\");\n\t    goto bailout;\n\t  }\n\n\t  b = mutt_read_mime_header (fp, 0);\n\t  if (b)\n\t  {\n\t    if (b->parameter)\n\t    {\n\t      mutt_free_parameter (&a->parameter);\n\t      a->parameter = b->parameter;\n\t      b->parameter = NULL;\n\t    }\n\t    if (b->description) {\n\t      FREE (&a->description);\n\t      a->description = b->description;\n\t      b->description = NULL;\n\t    }\n\t    if (b->form_name)\n\t    {\n\t      FREE (&a->form_name);\n\t      a->form_name = b->form_name;\n\t      b->form_name = NULL;\n\t    }\n\n\t    /* Remove headers by copying out data to another file, then \n\t     * copying the file back */\n\t    fseeko (fp, b->offset, 0);\n\t    mutt_mktemp (tempfile, sizeof (tempfile));\n\t    if ((tfp = safe_fopen (tempfile, \"w\")) == NULL)\n\t    {\n\t      mutt_perror _(\"Failure to open file to strip headers.\");\n\t      goto bailout;\n\t    }\n\t    mutt_copy_stream (fp, tfp);\n\t    safe_fclose (&fp);\n\t    safe_fclose (&tfp);\n\t    mutt_unlink (a->filename);  \n\t    if (mutt_rename_file (tempfile, a->filename) != 0) \n\t    {\n\t      mutt_perror _(\"Failure to rename file.\");\n\t      goto bailout;\n\t    }\n\n\t    mutt_free_body (&b);\n\t  }\n\t}\n      }\n    }\n  }\n  else\n  {\n    rfc1524_free_entry (&entry);\n    mutt_message (_(\"No mailcap compose entry for %s, creating empty file.\"),\n\t\t   type);\n    return 1;\n  }\n\n  rc = 1;\n  \n  bailout:\n  \n  if(unlink_newfile)\n    unlink(newfile);\n\n  rfc1524_free_entry (&entry);\n  return rc;\n}\n\n/* \n * Currently, this only works for send mode, as it assumes that the \n * BODY->filename actually contains the information.  I'm not sure\n * we want to deal with editing attachments we've already received,\n * so this should be ok.\n *\n * Returns 1 if editor found, 0 if not (useful to tell calling menu to\n * redraw)\n */\nint mutt_edit_attachment (BODY *a)\n{\n  char type[STRING];\n  char command[STRING];\n  char newfile[_POSIX_PATH_MAX] = \"\";\n  rfc1524_entry *entry = rfc1524_new_entry ();\n  short unlink_newfile = 0;\n  int rc = 0;\n  \n  snprintf (type, sizeof (type), \"%s/%s\", TYPE (a), a->subtype);\n  if (rfc1524_mailcap_lookup (a, type, entry, M_EDIT))\n  {\n    if (entry->editcommand)\n    {\n\n      strfcpy (command, entry->editcommand, sizeof (command));\n      if (rfc1524_expand_filename (entry->nametemplate,\n\t\t\t\t      a->filename, newfile, sizeof (newfile)))\n      {\n\tdprint(1, (debugfile, \"oldfile: %s\\t newfile: %s\\n\",\n\t\t\t\t  a->filename, newfile));\n\tif (safe_symlink (a->filename, newfile) == -1)\n\t{\n\t  if (mutt_yesorno (_(\"Can't match nametemplate, continue?\"), M_YES) != M_YES)\n\t    goto bailout;\n\t}\n\telse\n\t  unlink_newfile = 1;\n      }\n      else\n\tstrfcpy(newfile, a->filename, sizeof(newfile));\n\n      if (rfc1524_expand_command (a, newfile, type,\n\t\t\t\t      command, sizeof (command)))\n      {\n\t/* For now, editing requires a file, no piping */\n\tmutt_error _(\"Mailcap Edit entry requires %%s\");\n        goto bailout;\n      }\n      else\n      {\n\tmutt_endwin (NULL);\n\tif (mutt_system (command) == -1)\n        {\n\t  mutt_error (_(\"Error running \\\"%s\\\"!\"), command);\n          goto bailout;\n        }\n      }\n    }\n  }\n  else if (a->type == TYPETEXT)\n  {\n    /* On text, default to editor */\n    mutt_edit_file (NONULL (Editor), a->filename);\n  }\n  else\n  {\n    rfc1524_free_entry (&entry);\n    mutt_error (_(\"No mailcap edit entry for %s\"),type);\n    return 0;\n  }\n\n  rc = 1;\n  \n  bailout:\n  \n  if(unlink_newfile)\n    unlink(newfile);\n  \n  rfc1524_free_entry (&entry);\n  return rc;\n}\n\n\nvoid mutt_check_lookup_list (BODY *b, char *type, int len)\n{\n  LIST *t = MimeLookupList;\n  int i;\n\n  for (; t; t = t->next) {\n    i = mutt_strlen (t->data) - 1;\n    if ((i > 0 && t->data[i-1] == '/' && t->data[i] == '*' && \n\t ascii_strncasecmp (type, t->data, i) == 0) ||\n\tascii_strcasecmp (type, t->data) == 0) {\n\n    BODY tmp = {0};\n    int n;\n    if ((n = mutt_lookup_mime_type (&tmp, b->filename)) != TYPEOTHER) {\n      snprintf (type, len, \"%s/%s\",\n                n == TYPEAUDIO ? \"audio\" :\n                n == TYPEAPPLICATION ? \"application\" :\n                n == TYPEIMAGE ? \"image\" :\n                n == TYPEMESSAGE ? \"message\" :\n                n == TYPEMODEL ? \"model\" :\n                n == TYPEMULTIPART ? \"multipart\" :\n                n == TYPETEXT ? \"text\" :\n                n == TYPEVIDEO ? \"video\" : \"other\",\n                tmp.subtype);\n      dprint(1, (debugfile, \"mutt_check_lookup_list: \\\"%s\\\" -> %s\\n\", \n        b->filename, type));\n    }\n    if (tmp.subtype) \n      FREE (&tmp.subtype);\n    if (tmp.xtype) \n      FREE (&tmp.xtype);\n    }\n  }\n}\n\n/* returns -1 on error, 0 or the return code from mutt_do_pager() on success */\nint mutt_view_attachment (FILE *fp, BODY *a, int flag, HEADER *hdr,\n\t\t\t  ATTACHPTR **idx, short idxlen)\n{\n  char tempfile[_POSIX_PATH_MAX] = \"\";\n  char pagerfile[_POSIX_PATH_MAX] = \"\";\n  int is_message;\n  int use_mailcap;\n  int use_pipe = 0;\n  int use_pager = 1;\n  char type[STRING];\n  char command[HUGE_STRING];\n  char descrip[STRING];\n  char *fname;\n  rfc1524_entry *entry = NULL;\n  int rc = -1;\n  int unlink_tempfile = 0;\n  \n  is_message = mutt_is_message_type(a->type, a->subtype);\n  if (WithCrypto && is_message && a->hdr && (a->hdr->security & ENCRYPT) &&\n      !crypt_valid_passphrase(a->hdr->security))\n    return (rc);\n  use_mailcap = (flag == M_MAILCAP ||\n\t\t(flag == M_REGULAR && mutt_needs_mailcap (a)));\n  snprintf (type, sizeof (type), \"%s/%s\", TYPE (a), a->subtype);\n  \n  if (use_mailcap)\n  {\n    entry = rfc1524_new_entry (); \n    if (!rfc1524_mailcap_lookup (a, type, entry, 0))\n    {\n      if (flag == M_REGULAR)\n      {\n\t/* fallback to view as text */\n\trfc1524_free_entry (&entry);\n\tmutt_error _(\"No matching mailcap entry found.  Viewing as text.\");\n\tflag = M_AS_TEXT;\n\tuse_mailcap = 0;\n      }\n      else\n\tgoto return_error;\n    }\n  }\n  \n  if (use_mailcap)\n  {\n    if (!entry->command)\n    {\n      mutt_error _(\"MIME type not defined.  Cannot view attachment.\");\n      goto return_error;\n    }\n    strfcpy (command, entry->command, sizeof (command));\n    \n    if (fp)\n    {\n      fname = safe_strdup (a->filename);\n      mutt_sanitize_filename (fname, 1);\n    }\n    else\n      fname = a->filename;\n\n    if (rfc1524_expand_filename (entry->nametemplate, fname,\n\t\t\t\t tempfile, sizeof (tempfile)))\n    {\n      if (fp == NULL && mutt_strcmp(tempfile, a->filename))\n      {\n\t/* send case: the file is already there */\n\tif (safe_symlink (a->filename, tempfile) == -1)\n\t{\n\t  if (mutt_yesorno (_(\"Can't match nametemplate, continue?\"), M_YES) == M_YES)\n\t    strfcpy (tempfile, a->filename, sizeof (tempfile));\n\t  else\n\t    goto return_error;\n\t}\n\telse\n\t  unlink_tempfile = 1;\n      }\n    }\n    else if (fp == NULL) /* send case */\n      strfcpy (tempfile, a->filename, sizeof (tempfile));\n    \n    if (fp)\n    {\n      /* recv case: we need to save the attachment to a file */\n      FREE (&fname);\n      if (mutt_save_attachment (fp, a, tempfile, 0, NULL) == -1)\n\tgoto return_error;\n    }\n\n    use_pipe = rfc1524_expand_command (a, tempfile, type,\n\t\t\t\t       command, sizeof (command));\n    use_pager = entry->copiousoutput;\n  }\n  \n  if (use_pager)\n  {\n    if (fp && !use_mailcap && a->filename)\n    {\n      /* recv case */\n      strfcpy (pagerfile, a->filename, sizeof (pagerfile));\n      mutt_adv_mktemp (pagerfile, sizeof(pagerfile));\n    }\n    else\n      mutt_mktemp (pagerfile, sizeof (pagerfile));\n  }\n    \n  if (use_mailcap)\n  {\n    pid_t thepid = 0;\n    int tempfd = -1, pagerfd = -1;\n    \n    if (!use_pager)\n      mutt_endwin (NULL);\n\n    if (use_pager || use_pipe)\n    {\n      if (use_pager && ((pagerfd = safe_open (pagerfile, O_CREAT | O_EXCL | O_WRONLY)) == -1))\n      {\n\tmutt_perror (\"open\");\n\tgoto return_error;\n      }\n      if (use_pipe && ((tempfd = open (tempfile, 0)) == -1))\n      {\n\tif(pagerfd != -1)\n\t  close(pagerfd);\n\tmutt_perror (\"open\");\n\tgoto return_error;\n      }\n\n      if ((thepid = mutt_create_filter_fd (command, NULL, NULL, NULL,\n\t\t\t\t\t   use_pipe ? tempfd : -1, use_pager ? pagerfd : -1, -1)) == -1)\n      {\n\tif(pagerfd != -1)\n\t  close(pagerfd);\n\t\n\tif(tempfd != -1)\n\t  close(tempfd);\n\n\tmutt_error _(\"Cannot create filter\");\n\tgoto return_error;\n      }\n\n      if (use_pager)\n      {\n\tif (a->description)\n\t  snprintf (descrip, sizeof (descrip),\n\t\t    _(\"---Command: %-20.20s Description: %s\"),\n\t\t    command, a->description);\n\telse\n\t  snprintf (descrip, sizeof (descrip),\n\t\t    _(\"---Command: %-30.30s Attachment: %s\"), command, type);\n      }\n\n      if ((mutt_wait_filter (thepid) || (entry->needsterminal &&\n\t  option (OPTWAITKEY))) && !use_pager)\n\tmutt_any_key_to_continue (NULL);\n\n      if (tempfd != -1)\n\tclose (tempfd);\n      if (pagerfd != -1)\n\tclose (pagerfd);\n    }\n    else\n    {\n      /* interactive command */\n      if (mutt_system (command) ||\n\t  (entry->needsterminal && option (OPTWAITKEY)))\n\tmutt_any_key_to_continue (NULL);\n    }\n  }\n  else\n  {\n    /* Don't use mailcap; the attachment is viewed in the pager */\n\n    if (flag == M_AS_TEXT)\n    {\n      /* just let me see the raw data */\n      if (fp)\n      {\n\t/* Viewing from a received message.\n\t *\n\t * Don't use mutt_save_attachment() because we want to perform charset\n\t * conversion since this will be displayed by the internal pager.\n\t */\n\tSTATE decode_state;\n\n\tmemset(&decode_state, 0, sizeof(decode_state));\n\tdecode_state.fpout = safe_fopen(pagerfile, \"w\");\n\tif (!decode_state.fpout)\n\t{\n\t  dprint(1, (debugfile, \"mutt_view_attachment:%d safe_fopen(%s) errno=%d %s\\n\", __LINE__, pagerfile, errno, strerror(errno)));\n\t  mutt_perror(pagerfile);\n\t  mutt_sleep(1);\n\t  goto return_error;\n\t}\n\tdecode_state.fpin = fp;\n\tdecode_state.flags = M_CHARCONV;\n\tmutt_decode_attachment(a, &decode_state);\n\tif (fclose(decode_state.fpout) == EOF)\n\t  dprint(1, (debugfile, \"mutt_view_attachment:%d fclose errno=%d %s\\n\", __LINE__, pagerfile, errno, strerror(errno)));\n      }\n      else\n      {\n\t/* in compose mode, just copy the file.  we can't use\n\t * mutt_decode_attachment() since it assumes the content-encoding has\n\t * already been applied\n\t */\n\tif (mutt_save_attachment(fp, a, pagerfile, 0, NULL))\n\t  goto return_error;\n      }\n    }\n    else\n    {\n      /* Use built-in handler */\n      set_option (OPTVIEWATTACH); /* disable the \"use 'v' to view this part\"\n\t\t\t\t   * message in case of error */\n      if (mutt_decode_save_attachment (fp, a, pagerfile, M_DISPLAY, 0))\n      {\n\tunset_option (OPTVIEWATTACH);\n\tgoto return_error;\n      }\n      unset_option (OPTVIEWATTACH);\n    }\n    \n    if (a->description)\n      strfcpy (descrip, a->description, sizeof (descrip));\n    else if (a->filename)\n      snprintf (descrip, sizeof (descrip), _(\"---Attachment: %s: %s\"),\n\t  a->filename, type);\n    else\n      snprintf (descrip, sizeof (descrip), _(\"---Attachment: %s\"), type);\n  }\n  \n  /* We only reach this point if there have been no errors */\n\n  if (use_pager)\n  {\n    pager_t info;\n    \n    memset (&info, 0, sizeof (info));\n    info.fp = fp;\n    info.bdy = a;\n    info.ctx = Context;\n    info.idx = idx;\n    info.idxlen = idxlen;\n    info.hdr = hdr;\n\n    rc = mutt_do_pager (descrip, pagerfile,\n\t\t\tM_PAGER_ATTACHMENT | (is_message ? M_PAGER_MESSAGE : 0), &info);\n    *pagerfile = '\\0';\n  }\n  else\n    rc = 0;\n\n  return_error:\n  \n  if (entry)\n    rfc1524_free_entry (&entry);\n  if (fp && tempfile[0])\n    mutt_unlink (tempfile);\n  else if (unlink_tempfile)\n    unlink(tempfile);\n\n  if (pagerfile[0])\n    mutt_unlink (pagerfile);\n\n  return rc;\n}\n\n/* returns 1 on success, 0 on error */\nint mutt_pipe_attachment (FILE *fp, BODY *b, const char *path, char *outfile)\n{\n  pid_t thepid;\n  int out = -1;\n  int rv = 0;\n  \n  if (outfile && *outfile)\n    if ((out = safe_open (outfile, O_CREAT | O_EXCL | O_WRONLY)) < 0)\n    {\n      mutt_perror (\"open\");\n      return 0;\n    }\n\n  mutt_endwin (NULL);\n\n  if (fp)\n  {\n    /* recv case */\n\n    STATE s;\n\n    memset (&s, 0, sizeof (STATE));\n\n    if (outfile && *outfile)\n      thepid = mutt_create_filter_fd (path, &s.fpout, NULL, NULL, -1, out, -1);\n    else\n      thepid = mutt_create_filter (path, &s.fpout, NULL, NULL);\n\n    if (thepid < 0)\n    {\n      mutt_perror _(\"Can't create filter\");\n      goto bail;\n    }\n    \n    s.fpin = fp;\n    mutt_decode_attachment (b, &s);\n    safe_fclose (&s.fpout);\n  }\n  else\n  {\n    /* send case */\n\n    FILE *ifp, *ofp;\n\n    if ((ifp = fopen (b->filename, \"r\")) == NULL)\n    {\n      mutt_perror (\"fopen\");\n      if (outfile && *outfile)\n      {\n\tclose (out);\n\tunlink (outfile);\n      }\n      return 0;\n    }\n\n    if (outfile && *outfile)\n      thepid = mutt_create_filter_fd (path, &ofp, NULL, NULL, -1, out, -1);\n    else\n      thepid = mutt_create_filter (path, &ofp, NULL, NULL);\n\n    if (thepid < 0)\n    {\n      mutt_perror _(\"Can't create filter\");\n      safe_fclose (&ifp);\n      goto bail;\n    }\n    \n    mutt_copy_stream (ifp, ofp);\n    safe_fclose (&ofp);\n    safe_fclose (&ifp);\n  }\n\n  rv = 1;\n  \nbail:\n  \n  if (outfile && *outfile)\n    close (out);\n\n  /*\n   * check for error exit from child process\n   */\n  if (mutt_wait_filter (thepid) != 0)\n    rv = 0;\n\n  if (rv == 0 || option (OPTWAITKEY))\n    mutt_any_key_to_continue (NULL);\n  return rv;\n}\n\nstatic FILE *\nmutt_save_attachment_open (char *path, int flags)\n{\n  if (flags == M_SAVE_APPEND)\n    return fopen (path, \"a\");\n  if (flags == M_SAVE_OVERWRITE)\n    return fopen (path, \"w\");\t\t/* __FOPEN_CHECKED__ */\n  \n  return safe_fopen (path, \"w\");\n}\n\n/* returns 0 on success, -1 on error */\nint mutt_save_attachment (FILE *fp, BODY *m, char *path, int flags, HEADER *hdr)\n{\n  if (fp)\n  {\n    \n    /* recv mode */\n\n    if(hdr &&\n\tm->hdr &&\n\tm->encoding != ENCBASE64 &&\n\tm->encoding != ENCQUOTEDPRINTABLE &&\n\tmutt_is_message_type(m->type, m->subtype))\n    {\n      /* message type attachments are written to mail folders. */\n\n      char buf[HUGE_STRING];\n      HEADER *hn;\n      CONTEXT ctx;\n      MESSAGE *msg;\n      int chflags = 0;\n      int r = -1;\n      \n      hn = m->hdr;\n      hn->msgno = hdr->msgno; /* required for MH/maildir */\n      hn->read = 1;\n\n      fseeko (fp, m->offset, 0);\n      if (fgets (buf, sizeof (buf), fp) == NULL)\n\treturn -1;\n      if (mx_open_mailbox(path, M_APPEND | M_QUIET, &ctx) == NULL)\n\treturn -1;\n      if ((msg = mx_open_new_message (&ctx, hn, is_from (buf, NULL, 0, NULL) ? 0 : M_ADD_FROM)) == NULL)\n      {\n\tmx_close_mailbox(&ctx, NULL);\n\treturn -1;\n      }\n      if (ctx.magic == M_MBOX || ctx.magic == M_MMDF)\n\tchflags = CH_FROM | CH_UPDATE_LEN;\n      chflags |= (ctx.magic == M_MAILDIR ? CH_NOSTATUS : CH_UPDATE);\n      if (_mutt_copy_message (msg->fp, fp, hn, hn->content, 0, chflags) == 0 \n\t  && mx_commit_message (msg, &ctx) == 0)\n\tr = 0;\n      else\n\tr = -1;\n\n      mx_close_message (&msg);\n      mx_close_mailbox (&ctx, NULL);\n      return r;\n    }\n    else\n    {\n      /* In recv mode, extract from folder and decode */\n      \n      STATE s;\n      \n      memset (&s, 0, sizeof (s));\n      if ((s.fpout = mutt_save_attachment_open (path, flags)) == NULL)\n      {\n\tmutt_perror (\"fopen\");\n\tmutt_sleep (2);\n\treturn (-1);\n      }\n      fseeko ((s.fpin = fp), m->offset, 0);\n      mutt_decode_attachment (m, &s);\n      \n      if (safe_fsync_close (&s.fpout) != 0)\n      {\n\tmutt_perror (\"fclose\");\n\tmutt_sleep (2);\n\treturn (-1);\n      }\n    }\n  }\n  else\n  {\n    /* In send mode, just copy file */\n\n    FILE *ofp, *nfp;\n\n    if ((ofp = fopen (m->filename, \"r\")) == NULL)\n    {\n      mutt_perror (\"fopen\");\n      return (-1);\n    }\n    \n    if ((nfp = mutt_save_attachment_open (path, flags)) == NULL)\n    {\n      mutt_perror (\"fopen\");\n      safe_fclose (&ofp);\n      return (-1);\n    }\n\n    if (mutt_copy_stream (ofp, nfp) == -1)\n    {\n      mutt_error _(\"Write fault!\");\n      safe_fclose (&ofp);\n      safe_fclose (&nfp);\n      return (-1);\n    }\n    safe_fclose (&ofp);\n    if (safe_fsync_close (&nfp) != 0) {\n      mutt_error _(\"Write fault!\");\n      return (-1);\n    }\n  }\n\n  return 0;\n}\n\n/* returns 0 on success, -1 on error */\nint mutt_decode_save_attachment (FILE *fp, BODY *m, char *path,\n\t\t\t\t int displaying, int flags)\n{\n  STATE s;\n  unsigned int saved_encoding = 0;\n  BODY *saved_parts = NULL;\n  HEADER *saved_hdr = NULL;\n  int ret = 0;\n\n  memset (&s, 0, sizeof (s));\n  s.flags = displaying;\n\n  if (flags == M_SAVE_APPEND)\n    s.fpout = fopen (path, \"a\");\n  else if (flags == M_SAVE_OVERWRITE)\n    s.fpout = fopen (path, \"w\");\t/* __FOPEN_CHECKED__ */\n  else\n    s.fpout = safe_fopen (path, \"w\");\n\n  if (s.fpout == NULL)\n  {\n    mutt_perror (\"fopen\");\n    return (-1);\n  }\n\n  if (fp == NULL)\n  {\n    /* When called from the compose menu, the attachment isn't parsed,\n     * so we need to do it here. */\n    struct stat st;\n\n    if (stat (m->filename, &st) == -1)\n    {\n      mutt_perror (\"stat\");\n      safe_fclose (&s.fpout);\n      return (-1);\n    }\n\n    if ((s.fpin = fopen (m->filename, \"r\")) == NULL)\n    {\n      mutt_perror (\"fopen\");\n      return (-1);\n    }\n\n    saved_encoding = m->encoding;\n    if (!is_multipart (m))\n      m->encoding = ENC8BIT;\n    \n    m->length = st.st_size;\n    m->offset = 0;\n    saved_parts = m->parts;\n    saved_hdr = m->hdr;\n    mutt_parse_part (s.fpin, m);\n\n    if (m->noconv || is_multipart (m))\n      s.flags |= M_CHARCONV;\n  }\n  else\n  {\n    s.fpin = fp;\n    s.flags |= M_CHARCONV;\n  }\n\n  mutt_body_handler (m, &s);\n\n  if (safe_fsync_close (&s.fpout) != 0) {\n    mutt_perror(\"fclose\");\n    ret = -1;\n  }\n  if (fp == NULL)\n  {\n    m->length = 0;\n    m->encoding = saved_encoding;\n    if (saved_parts)\n    {\n      mutt_free_header (&m->hdr);\n      m->parts = saved_parts;\n      m->hdr = saved_hdr;\n    }\n    safe_fclose (&s.fpin);\n  }\n\n  return ret;\n}\n\n/* Ok, the difference between send and receive:\n * recv: BODY->filename is a suggested name, and Context|HEADER points\n *       to the attachment in mailbox which is encoded\n * send: BODY->filename points to the un-encoded file which contains the \n *       attachment\n */\n\nint mutt_print_attachment (FILE *fp, BODY *a)\n{\n  char newfile[_POSIX_PATH_MAX] = \"\";\n  char type[STRING];\n  pid_t thepid;\n  FILE *ifp, *fpout;\n  short unlink_newfile = 0;\n  \n  snprintf (type, sizeof (type), \"%s/%s\", TYPE (a), a->subtype);\n\n  if (rfc1524_mailcap_lookup (a, type, NULL, M_PRINT)) \n  {\n    char command[_POSIX_PATH_MAX+STRING];\n    rfc1524_entry *entry;\n    int piped = FALSE;\n\n    dprint (2, (debugfile, \"Using mailcap...\\n\"));\n    \n    entry = rfc1524_new_entry ();\n    rfc1524_mailcap_lookup (a, type, entry, M_PRINT);\n    if (rfc1524_expand_filename (entry->nametemplate, a->filename,\n\t\t\t\t\t\t  newfile, sizeof (newfile)))\n    {\n      if (!fp)\n      {\n\tif (safe_symlink(a->filename, newfile) == -1)\n\t{\n\t  if (mutt_yesorno (_(\"Can't match nametemplate, continue?\"), M_YES) != M_YES)\n\t  {\n\t    rfc1524_free_entry (&entry);\n\t    return 0;\n\t  }\n\t  strfcpy (newfile, a->filename, sizeof (newfile));\n\t}\n\telse\n\t  unlink_newfile = 1;\n      }\n    }\n\n    /* in recv mode, save file to newfile first */\n    if (fp)\n      mutt_save_attachment (fp, a, newfile, 0, NULL);\n\n    strfcpy (command, entry->printcommand, sizeof (command));\n    piped = rfc1524_expand_command (a, newfile, type, command, sizeof (command));\n\n    mutt_endwin (NULL);\n\n    /* interactive program */\n    if (piped)\n    {\n      if ((ifp = fopen (newfile, \"r\")) == NULL)\n      {\n\tmutt_perror (\"fopen\");\n\trfc1524_free_entry (&entry);\n\treturn (0);\n      }\n\n      if ((thepid = mutt_create_filter (command, &fpout, NULL, NULL)) < 0)\n      {\n\tmutt_perror _(\"Can't create filter\");\n\trfc1524_free_entry (&entry);\n\tsafe_fclose (&ifp);\n\treturn 0;\n      }\n      mutt_copy_stream (ifp, fpout);\n      safe_fclose (&fpout);\n      safe_fclose (&ifp);\n      if (mutt_wait_filter (thepid) || option (OPTWAITKEY))\n\tmutt_any_key_to_continue (NULL);\n    }\n    else\n    {\n      if (mutt_system (command) || option (OPTWAITKEY))\n\tmutt_any_key_to_continue (NULL);\n    }\n\n    if (fp)\n      mutt_unlink (newfile);\n    else if (unlink_newfile)\n      unlink(newfile);\n\n    rfc1524_free_entry (&entry);\n    return (1);\n  }\n\n  if (!ascii_strcasecmp (\"text/plain\", type) ||\n      !ascii_strcasecmp (\"application/postscript\", type))\n  {\n    return (mutt_pipe_attachment (fp, a, NONULL(PrintCmd), NULL));\n  }\n  else if (mutt_can_decode (a))\n  {\n    /* decode and print */\n\n    int rc = 0;\n    \n    ifp = NULL;\n    fpout = NULL;\n    \n    mutt_mktemp (newfile, sizeof (newfile));\n    if (mutt_decode_save_attachment (fp, a, newfile, M_PRINTING, 0) == 0)\n    {\n      \n      dprint (2, (debugfile, \"successfully decoded %s type attachment to %s\\n\",\n\t\t  type, newfile));\n      \n      if ((ifp = fopen (newfile, \"r\")) == NULL)\n      {\n\tmutt_perror (\"fopen\");\n\tgoto bail0;\n      }\n\n      dprint (2, (debugfile, \"successfully opened %s read-only\\n\", newfile));\n      \n      mutt_endwin (NULL);\n      if ((thepid = mutt_create_filter (NONULL(PrintCmd), &fpout, NULL, NULL)) < 0)\n      {\n\tmutt_perror _(\"Can't create filter\");\n\tgoto bail0;\n      }\n\n      dprint (2, (debugfile, \"Filter created.\\n\"));\n      \n      mutt_copy_stream (ifp, fpout);\n\n      safe_fclose (&fpout);\n      safe_fclose (&ifp);\n\n      if (mutt_wait_filter (thepid) != 0 || option (OPTWAITKEY))\n\tmutt_any_key_to_continue (NULL);\n      rc = 1;\n    }\n  bail0:\n    safe_fclose (&ifp);\n    safe_fclose (&fpout);\n    mutt_unlink (newfile);\n    return rc;\n  }\n  else\n  {\n    mutt_error _(\"I don't know how to print that!\");\n    return 0;\n  }\n}\n"
  },
  {
    "path": "attach.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* common protos for compose / attach menus */\n\n#ifndef _ATTACH_H_\n#define _ATTACH_H_ 1\n\n#include \"mutt_menu.h\"\n\ntypedef struct attachptr\n{\n  BODY *content;\n  int parent_type;\n  char *tree;\n  int level;\n  int num;\n  unsigned int unowned : 1;   /* don't unlink on detach */\n} ATTACHPTR;\n\nATTACHPTR **mutt_gen_attach_list (BODY *, int, ATTACHPTR **, short *, short *,\n                                  int, int);\nvoid mutt_update_tree (ATTACHPTR **, short);\nint mutt_view_attachment (FILE*, BODY *, int, HEADER *, ATTACHPTR **, short);\n\nint mutt_tag_attach (MUTTMENU *menu, int n, int m);\nint mutt_attach_display_loop (MUTTMENU *menu, int op, FILE *fp, HEADER *hdr,\n\t\t\t      BODY *cur, ATTACHPTR ***idxp, short *idxlen, short *idxmax,\n\t\t\t      int recv);\n\n\nvoid mutt_save_attachment_list (FILE *fp, int tag, BODY *top, HEADER *hdr, MUTTMENU *menu);\nvoid mutt_pipe_attachment_list (FILE *fp, int tag, BODY *top, int filter);\nvoid mutt_print_attachment_list (FILE *fp, int tag, BODY *top);\n\nvoid mutt_attach_bounce (FILE *, HEADER *, ATTACHPTR **, short, BODY *);\nvoid mutt_attach_resend (FILE *, HEADER *, ATTACHPTR **, short, BODY *);\nvoid mutt_attach_forward (FILE *, HEADER *, ATTACHPTR **, short, BODY *);\nvoid mutt_attach_reply (FILE *, HEADER *, ATTACHPTR **, short, BODY *, int);\n\n#endif /* _ATTACH_H_ */\n"
  },
  {
    "path": "base64.c",
    "content": "/*\n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor, \n *     Boston, MA  02110-1301, USA.\n * \n */\n\n/* \n * Base64 handling elsewhere in mutt should be modified to call\n * these routines. These routines were written because IMAP's\n * AUTHENTICATE protocol required them, and base64 handling\n * elsewhere wasn't sufficiently generic.\n * \n */\n\n/* \n * This code is heavily modified from fetchmail (also GPL'd, of\n * course) by Brendan Cully <brendan@kublai.com>.\n * \n * Original copyright notice:\n * \n * The code in the fetchmail distribution is Copyright 1997 by Eric\n * S. Raymond.  Portions are also copyrighted by Carl Harris, 1993\n * and 1995.  Copyright retained for the purpose of protecting free\n * redistribution of source. \n * \n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mime.h\"\n\n#define BAD     -1\n\n/* raw bytes to null-terminated base 64 string */\nvoid mutt_to_base64 (unsigned char *out, const unsigned char *in, size_t len,\n\t\t     size_t olen)\n{\n  while (len >= 3 && olen > 10)\n  {\n    *out++ = B64Chars[in[0] >> 2];\n    *out++ = B64Chars[((in[0] << 4) & 0x30) | (in[1] >> 4)];\n    *out++ = B64Chars[((in[1] << 2) & 0x3c) | (in[2] >> 6)];\n    *out++ = B64Chars[in[2] & 0x3f];\n    olen  -= 4;\n    len   -= 3;\n    in    += 3;\n  }\n\n  /* clean up remainder */\n  if (len > 0 && olen > 4)\n  {\n    unsigned char fragment;\n\n    *out++ = B64Chars[in[0] >> 2];\n    fragment = (in[0] << 4) & 0x30;\n    if (len > 1)\n      fragment |= in[1] >> 4;\n    *out++ = B64Chars[fragment];\n    *out++ = (len < 2) ? '=' : B64Chars[(in[1] << 2) & 0x3c];\n    *out++ = '=';\n  }\n  *out = '\\0';\n}\n\n/* Convert '\\0'-terminated base 64 string to raw bytes.\n * Returns length of returned buffer, or -1 on error */\nint mutt_from_base64 (char *out, const char *in)\n{\n  int len = 0;\n  register unsigned char digit1, digit2, digit3, digit4;\n\n  do\n  {\n    digit1 = in[0];\n    if (digit1 > 127 || base64val (digit1) == BAD)\n      return -1;\n    digit2 = in[1];\n    if (digit2 > 127 || base64val (digit2) == BAD)\n      return -1;\n    digit3 = in[2];\n    if (digit3 > 127 || ((digit3 != '=') && (base64val (digit3) == BAD)))\n      return -1;\n    digit4 = in[3];\n    if (digit4 > 127 || ((digit4 != '=') && (base64val (digit4) == BAD)))\n      return -1;\n    in += 4;\n\n    /* digits are already sanity-checked */\n    *out++ = (base64val(digit1) << 2) | (base64val(digit2) >> 4);\n    len++;\n    if (digit3 != '=')\n    {\n      *out++ = ((base64val(digit2) << 4) & 0xf0) | (base64val(digit3) >> 2);\n      len++;\n      if (digit4 != '=')\n      {\n\t*out++ = ((base64val(digit3) << 6) & 0xc0) | base64val(digit4);\n\tlen++;\n      }\n    }\n  }\n  while (*in && digit4 != '=');\n\n  return len;\n}\n"
  },
  {
    "path": "bcache.c",
    "content": "/*\n * Copyright (C) 2006-2007,2009 Brendan Cully <brendan@kublai.com>\n * Copyright (C) 2006,2009 Rocco Rutte <pdmef@gmx.net>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n#include \"config.h\"\n#endif\t\t\t\t/* HAVE_CONFIG_H */\n\n#include <sys/types.h>\n#include <errno.h>\n#include <dirent.h>\n#include <stdio.h>\n\n#include \"mutt.h\"\n#include \"account.h\"\n#include \"url.h\"\n#include \"bcache.h\"\n\n#include \"lib.h\"\n\nstruct body_cache {\n  char path[_POSIX_PATH_MAX];\n  size_t pathlen;\n};\n\nstatic int bcache_path(ACCOUNT *account, const char *mailbox,\n\t\t       char *dst, size_t dstlen)\n{\n  char host[STRING];\n  char path[_POSIX_PATH_MAX];\n  ciss_url_t url;\n  int len;\n\n  if (!account || !MessageCachedir || !*MessageCachedir || !dst || !dstlen)\n    return -1;\n\n  /* make up a ciss_url_t we can turn into a string */\n  memset (&url, 0, sizeof (ciss_url_t));\n  mutt_account_tourl (account, &url);\n  /*\n   * mutt_account_tourl() just sets up some pointers;\n   * if this ever changes, we have a memleak here\n   */\n  url.path = NULL;\n  if (url_ciss_tostring (&url, host, sizeof (host), U_PATH) < 0)\n  {\n    dprint (1, (debugfile, \"bcache_path: URL to string failed\\n\"));\n    return -1;\n  }\n\n  mutt_encode_path (path, sizeof (path), NONULL (mailbox));\n\n  len = snprintf (dst, dstlen-1, \"%s/%s%s%s\", MessageCachedir,\n\t\t  host, path,\n\t\t  (*path && path[mutt_strlen (path) - 1] == '/') ? \"\" : \"/\");\n\n  dprint (3, (debugfile, \"bcache_path: rc: %d, path: '%s'\\n\", len, dst));\n\n  if (len < 0 || len >= dstlen-1)\n    return -1;\n\n  dprint (3, (debugfile, \"bcache_path: directory: '%s'\\n\", dst));\n\n  return 0;\n}\n\nbody_cache_t *mutt_bcache_open (ACCOUNT *account, const char *mailbox)\n{\n  struct body_cache *bcache = NULL;\n\n  if (!account)\n    goto bail;\n\n  bcache = safe_calloc (1, sizeof (struct body_cache));\n  if (bcache_path (account, mailbox, bcache->path,\n\t\t   sizeof (bcache->path)) < 0)\n    goto bail;\n  bcache->pathlen = mutt_strlen (bcache->path);\n\n  return bcache;\n\nbail:\n  if (bcache)\n    FREE(&bcache);\n  return NULL;\n}\n\nvoid mutt_bcache_close (body_cache_t **bcache)\n{\n  if (!bcache || !*bcache)\n    return;\n  FREE(bcache);\t\t\t/* __FREE_CHECKED__ */\n}\n\nFILE* mutt_bcache_get(body_cache_t *bcache, const char *id)\n{\n  char path[_POSIX_PATH_MAX];\n  FILE* fp = NULL;\n\n  if (!id || !*id || !bcache)\n    return NULL;\n\n  path[0] = '\\0';\n  safe_strncat (path, sizeof (path), bcache->path, bcache->pathlen);\n  safe_strncat (path, sizeof (path), id, mutt_strlen (id));\n\n  fp = safe_fopen (path, \"r\");\n\n  dprint (3, (debugfile, \"bcache: get: '%s': %s\\n\", path, fp == NULL ? \"no\" : \"yes\"));\n\n  return fp;\n}\n\nFILE* mutt_bcache_put(body_cache_t *bcache, const char *id, int tmp)\n{\n  char path[_POSIX_PATH_MAX];\n  FILE* fp;\n  char* s;\n  struct stat sb;\n\n  if (!id || !*id || !bcache)\n    return NULL;\n\n  snprintf (path, sizeof (path), \"%s%s%s\", bcache->path, id,\n            tmp ? \".tmp\" : \"\");\n\n  if ((fp = safe_fopen (path, \"w+\")))\n    goto out;\n\n  if (errno == EEXIST)\n    /* clean up leftover tmp file */\n    mutt_unlink (path);\n\n  s = strchr (path + 1, '/');\n  while (!(fp = safe_fopen (path, \"w+\")) && errno == ENOENT && s)\n  {\n    /* create missing path components */\n    *s = '\\0';\n    if (stat (path, &sb) < 0 && (errno != ENOENT || mkdir (path, 0777) < 0))\n      return NULL;\n    *s = '/';\n    s = strchr (s + 1, '/');\n  }\n\n  out:\n  dprint (3, (debugfile, \"bcache: put: '%s'\\n\", path));\n\n  return fp;\n}\n\nint mutt_bcache_commit(body_cache_t* bcache, const char* id)\n{\n  char tmpid[_POSIX_PATH_MAX];\n\n  snprintf (tmpid, sizeof (tmpid), \"%s.tmp\", id);\n\n  return mutt_bcache_move (bcache, tmpid, id);\n}\n\nint mutt_bcache_move(body_cache_t* bcache, const char* id, const char* newid)\n{\n  char path[_POSIX_PATH_MAX];\n  char newpath[_POSIX_PATH_MAX];\n\n  if (!bcache || !id || !*id || !newid || !*newid)\n    return -1;\n\n  snprintf (path, sizeof (path), \"%s%s\", bcache->path, id);\n  snprintf (newpath, sizeof (newpath), \"%s%s\", bcache->path, newid);\n\n  dprint (3, (debugfile, \"bcache: mv: '%s' '%s'\\n\", path, newpath));\n\n  return rename (path, newpath);\n}\n\nint mutt_bcache_del(body_cache_t *bcache, const char *id)\n{\n  char path[_POSIX_PATH_MAX];\n\n  if (!id || !*id || !bcache)\n    return -1;\n\n  path[0] = '\\0';\n  safe_strncat (path, sizeof (path), bcache->path, bcache->pathlen);\n  safe_strncat (path, sizeof (path), id, mutt_strlen (id));\n\n  dprint (3, (debugfile, \"bcache: del: '%s'\\n\", path));\n\n  return unlink (path);\n}\n\nint mutt_bcache_exists(body_cache_t *bcache, const char *id)\n{\n  char path[_POSIX_PATH_MAX];\n  struct stat st;\n  int rc = 0;\n\n  if (!id || !*id || !bcache)\n    return -1;\n\n  path[0] = '\\0';\n  safe_strncat (path, sizeof (path), bcache->path, bcache->pathlen);\n  safe_strncat (path, sizeof (path), id, mutt_strlen (id));\n\n  if (stat (path, &st) < 0)\n    rc = -1;\n  else\n    rc = S_ISREG(st.st_mode) && st.st_size != 0 ? 0 : -1;\n\n  dprint (3, (debugfile, \"bcache: exists: '%s': %s\\n\", path, rc == 0 ? \"yes\" : \"no\"));\n\n  return rc;\n}\n\nint mutt_bcache_list(body_cache_t *bcache,\n\t\t     int (*want_id)(const char *id, body_cache_t *bcache,\n\t\t\t\t    void *data), void *data)\n{\n  DIR *d = NULL;\n  struct dirent *de;\n  int rc = -1;\n\n  if (!bcache || !(d = opendir (bcache->path)))\n    goto out;\n\n  rc = 0;\n\n  dprint (3, (debugfile, \"bcache: list: dir: '%s'\\n\", bcache->path));\n\n  while ((de = readdir (d)))\n  {\n    if (mutt_strncmp (de->d_name, \".\", 1) == 0 ||\n\tmutt_strncmp (de->d_name, \"..\", 2) == 0)\n      continue;\n\n    dprint (3, (debugfile, \"bcache: list: dir: '%s', id :'%s'\\n\", bcache->path, de->d_name));\n\n    if (want_id && want_id (de->d_name, bcache, data) != 0)\n      goto out;\n\n    rc++;\n  }\n\nout:\n  if (d)\n  {\n    if (closedir (d) < 0)\n      rc = -1;\n  }\n  dprint (3, (debugfile, \"bcache: list: did %d entries\\n\", rc));\n  return rc;\n}\n"
  },
  {
    "path": "bcache.h",
    "content": "/*\n * Copyright (C) 2006-2007 Brendan Cully <brendan@kublai.com>\n * Copyright (C) 2006 Rocco Rutte <pdmef@gmx.net>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n#ifndef _BCACHE_H_\n#define _BCACHE_H_ 1\n\n/*\n * support for body cache\n */\n\nstruct body_cache;\ntypedef struct body_cache body_cache_t;\n\n/*\n * Parameters:\n *   - 'account' is the current mailbox' account (required)\n *   - 'mailbox' is the path to the mailbox of the account (optional):\n *     the driver using it is responsible for ensuring that hierarchies\n *     are separated by '/' (if it knows of such a concepts like\n *     mailboxes or hierarchies)\n * Returns NULL on failure.\n */\nbody_cache_t *mutt_bcache_open (ACCOUNT *account, const char *mailbox);\n\n/* free all memory of bcache and finally FREE() it, too */\nvoid mutt_bcache_close (body_cache_t **bcache);\n\n/*\n * Parameters:\n *   - 'bcache' is the pointer returned by mutt_bcache_open() (required)\n *   - 'id' is a per-mailbox unique identifier for the message (required)\n * These return NULL/-1 on failure and FILE pointer/0 on success.\n */\n\nFILE* mutt_bcache_get(body_cache_t *bcache, const char *id);\n/* tmp: the returned FILE* is in a temporary location.\n *      if set, use mutt_bcache_commit to put it into place */\nFILE* mutt_bcache_put(body_cache_t *bcache, const char *id, int tmp);\nint mutt_bcache_commit(body_cache_t *bcache, const char *id);\nint mutt_bcache_move(body_cache_t *bcache, const char *id, const char *newid);\nint mutt_bcache_del(body_cache_t *bcache, const char *id);\nint mutt_bcache_exists(body_cache_t *bcache, const char *id);\n\n/*\n * This more or less \"examines\" the cache and calls a function with\n * each id it finds if given.\n *\n * The optional callback function gets the id of a message, the very same\n * body cache handle mutt_bcache_list() is called with (to, perhaps,\n * perform further operations on the bcache), and a data cookie which is\n * just passed as-is. If the return value of the callback is non-zero, the\n * listing is aborted and continued otherwise. The callback is optional\n * so that this function can be used to count the items in the cache\n * (see below for return value).\n *\n * This returns -1 on failure and the count (>=0) of items processed\n * otherwise.\n */\nint mutt_bcache_list(body_cache_t *bcache,\n\t\t     int (*want_id)(const char *id, body_cache_t *bcache,\n\t\t\t\t    void *data), void *data);\n\n#endif /* _BCACHE_H_ */\n"
  },
  {
    "path": "browser.c",
    "content": "/*\n * Copyright (C) 1996-2000,2007,2010,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"attach.h\"\n#include \"buffy.h\"\n#include \"mapping.h\"\n#include \"sort.h\"\n#include \"mailbox.h\"\n#include \"browser.h\"\n#include \"mx.h\"\n#ifdef USE_IMAP\n#include \"imap.h\"\n#endif\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#include <stdlib.h>\n#include <dirent.h>\n#include <string.h>\n#include <ctype.h>\n#include <unistd.h>\n#include <sys/stat.h>\n#include <errno.h>\n#include <locale.h>\n\nstatic const struct mapping_t FolderHelp[] = {\n  { N_(\"Exit\"),  OP_EXIT },\n  { N_(\"Chdir\"), OP_CHANGE_DIRECTORY },\n  { N_(\"Mask\"),  OP_ENTER_MASK },\n  { N_(\"Help\"),  OP_HELP },\n  { NULL,\t 0 }\n};\n\ntypedef struct folder_t\n{\n  struct folder_file *ff;\n  int num;\n} FOLDER;\n\nstatic char LastDir[_POSIX_PATH_MAX] = \"\";\nstatic char LastDirBackup[_POSIX_PATH_MAX] = \"\";\n\n/* Frees up the memory allocated for the local-global variables.  */\nstatic void destroy_state (struct browser_state *state)\n{\n  int c;\n\n  for (c = 0; c < state->entrylen; c++)\n  {\n    FREE (&((state->entry)[c].name));\n    FREE (&((state->entry)[c].desc));\n    FREE (&((state->entry)[c].st));\n  }\n#ifdef USE_IMAP\n  FREE (&state->folder);\n#endif\n  FREE (&state->entry);\n}\n\nstatic int browser_compare_subject (const void *a, const void *b)\n{\n  struct folder_file *pa = (struct folder_file *) a;\n  struct folder_file *pb = (struct folder_file *) b;\n\n  int r = mutt_strcoll (pa->name, pb->name);\n\n  return ((BrowserSort & SORT_REVERSE) ? -r : r);\n}\n\nstatic int browser_compare_desc (const void *a, const void *b)\n{\n  struct folder_file *pa = (struct folder_file *) a;\n  struct folder_file *pb = (struct folder_file *) b;\n\n  int r = mutt_strcoll (pa->desc, pb->desc);\n\n  return ((BrowserSort & SORT_REVERSE) ? -r : r);\n}\n\nstatic int browser_compare_date (const void *a, const void *b)\n{\n  struct folder_file *pa = (struct folder_file *) a;\n  struct folder_file *pb = (struct folder_file *) b;\n\n  int r = pa->mtime - pb->mtime;\n\n  return ((BrowserSort & SORT_REVERSE) ? -r : r);\n}\n\nstatic int browser_compare_size (const void *a, const void *b)\n{\n  struct folder_file *pa = (struct folder_file *) a;\n  struct folder_file *pb = (struct folder_file *) b;\n\n  int r = pa->size - pb->size;\n\n  return ((BrowserSort & SORT_REVERSE) ? -r : r);\n}\n\nstatic int browser_compare_count (const void *a, const void *b)\n{\n  struct folder_file *pa = (struct folder_file *) a;\n  struct folder_file *pb = (struct folder_file *) b;\n\n  int r = pa->all - pb->all;\n\n  return ((BrowserSort & SORT_REVERSE) ? -r : r);\n}\n\nstatic int browser_compare_count_new (const void *a, const void *b)\n{\n  struct folder_file *pa = (struct folder_file *) a;\n  struct folder_file *pb = (struct folder_file *) b;\n\n  int r = pa->new - pb->new;\n\n  return ((BrowserSort & SORT_REVERSE) ? -r : r);\n}\n\nstatic void browser_sort (struct browser_state *state)\n{\n  int (*f) (const void *, const void *);\n\n  switch (BrowserSort & SORT_MASK)\n  {\n    case SORT_ORDER:\n      return;\n    case SORT_DATE:\n      f = browser_compare_date;\n      break;\n    case SORT_SIZE:\n      f = browser_compare_size;\n      break;\n    case SORT_DESC:\n      f = browser_compare_desc;\n      break;\n    case SORT_COUNT:\n      f = browser_compare_count;\n      break;\n    case SORT_COUNT_NEW:\n      f = browser_compare_count_new;\n      break;\n    case SORT_SUBJECT:\n    default:\n      f = browser_compare_subject;\n      break;\n  }\n  qsort (state->entry, state->entrylen, sizeof (struct folder_file), f);\n}\n\nstatic int link_is_dir (const char *folder, const char *path)\n{\n  struct stat st;\n  char fullpath[_POSIX_PATH_MAX];\n  \n  mutt_concat_path (fullpath, folder, path, sizeof (fullpath));\n  \n  if (stat (fullpath, &st) == 0)\n    return (S_ISDIR (st.st_mode));\n  else\n    return 0;\n}\n\nstatic const char *\nfolder_format_str (char *dest, size_t destlen, size_t col, char op, const char *src,\n\t\t   const char *fmt, const char *ifstring, const char *elsestring,\n\t\t   unsigned long data, format_flag flags)\n{\n  char fn[SHORT_STRING], tmp[SHORT_STRING], permission[11];\n  char date[16], *t_fmt;\n  time_t tnow;\n  FOLDER *folder = (FOLDER *) data;\n  struct passwd *pw;\n  struct group *gr;\n  int optional = (flags & M_FORMAT_OPTIONAL);\n\n  switch (op)\n  {\n    case 'C':\n      snprintf (tmp, sizeof (tmp), \"%%%sd\", fmt);\n      snprintf (dest, destlen, tmp, folder->num + 1);\n      break;\n      \n    case 'd':\n    case 'D':\n      if (folder->ff->st != NULL)\n      {\n\tint do_locales = TRUE;\n\n\tif (op == 'D') {\n\t  t_fmt = NONULL(DateFmt);\n\t  if (*t_fmt == '!') {\n\t    ++t_fmt;\n\t    do_locales = FALSE;\n\t  }\n\t} else {\n\t  tnow = time (NULL);\n\t  t_fmt = tnow - folder->ff->st->st_mtime < 31536000 ? \"%b %d %H:%M\" : \"%b %d  %Y\";\n\t}\n\tif (do_locales)\n\t  setlocale(LC_TIME, NONULL (Locale)); /* use environment if $locale is not set */\n\telse\n\t  setlocale(LC_TIME, \"C\");\n\tstrftime (date, sizeof (date), t_fmt, localtime (&folder->ff->st->st_mtime));\n\n\tmutt_format_s (dest, destlen, fmt, date);\n      }\n      else\n\tmutt_format_s (dest, destlen, fmt, \"\");\n      break;\n      \n    case 'f':\n    {\n      char *s;\n\n#ifdef USE_NOTMUCH\n      if (mx_is_notmuch(folder->ff->name))\n        s = NONULL (folder->ff->desc);\n      else\n#endif\n#ifdef USE_IMAP\n      if (folder->ff->imap)\n\ts = NONULL (folder->ff->desc);\n      else\n#endif\n\ts = NONULL (folder->ff->name);\n\n      snprintf (fn, sizeof (fn), \"%s%s\", s,\n\t\tfolder->ff->st ? (S_ISLNK (folder->ff->st->st_mode) ? \"@\" :\t\t\n\t\t\t\t  (S_ISDIR (folder->ff->st->st_mode) ? \"/\" : \n\t\t\t\t   ((folder->ff->st->st_mode & S_IXUSR) != 0 ? \"*\" : \"\"))) : \"\");\n      \n      mutt_format_s (dest, destlen, fmt, fn);\n      break;\n    }\n    case 'F':\n      if (folder->ff->st != NULL)\n      {\n\tsnprintf (permission, sizeof (permission), \"%c%c%c%c%c%c%c%c%c%c\",\n\t\t  S_ISDIR(folder->ff->st->st_mode) ? 'd' : (S_ISLNK(folder->ff->st->st_mode) ? 'l' : '-'),\n\t\t  (folder->ff->st->st_mode & S_IRUSR) != 0 ? 'r': '-',\n\t\t  (folder->ff->st->st_mode & S_IWUSR) != 0 ? 'w' : '-',\n\t\t  (folder->ff->st->st_mode & S_ISUID) != 0 ? 's' : (folder->ff->st->st_mode & S_IXUSR) != 0 ? 'x': '-',\n\t\t  (folder->ff->st->st_mode & S_IRGRP) != 0 ? 'r' : '-',\n\t\t  (folder->ff->st->st_mode & S_IWGRP) != 0 ? 'w' : '-',\n\t\t  (folder->ff->st->st_mode & S_ISGID) != 0 ? 's' : (folder->ff->st->st_mode & S_IXGRP) != 0 ? 'x': '-',\n\t\t  (folder->ff->st->st_mode & S_IROTH) != 0 ? 'r' : '-',\n\t\t  (folder->ff->st->st_mode & S_IWOTH) != 0 ? 'w' : '-',\n\t\t  (folder->ff->st->st_mode & S_ISVTX) != 0 ? 't' : (folder->ff->st->st_mode & S_IXOTH) != 0 ? 'x': '-');\n\tmutt_format_s (dest, destlen, fmt, permission);\n      }\n#ifdef USE_IMAP\n      else if (folder->ff->imap)\n      {\n\t/* mark folders with subfolders AND mail */\n\tsnprintf (permission, sizeof (permission), \"IMAP %c\",\n\t\t  (folder->ff->inferiors && folder->ff->selectable) ? '+' : ' ');\n\tmutt_format_s (dest, destlen, fmt, permission);\n      }                                        \n#endif\n      else\n\tmutt_format_s (dest, destlen, fmt, \"\");\n      break;\n      \n    case 'g':\n      if (folder->ff->st != NULL)\n      {\n\tif ((gr = getgrgid (folder->ff->st->st_gid)))\n\t  mutt_format_s (dest, destlen, fmt, gr->gr_name);\n\telse\n\t{\n\t  snprintf (tmp, sizeof (tmp), \"%%%sld\", fmt);\n\t  snprintf (dest, destlen, tmp, folder->ff->st->st_gid);\n\t}\n      }\n      else\n\tmutt_format_s (dest, destlen, fmt, \"\");\n      break;\n      \n    case 'l':\n      if (folder->ff->st != NULL)\n      {\n\tsnprintf (tmp, sizeof (tmp), \"%%%sd\", fmt);\n\tsnprintf (dest, destlen, tmp, folder->ff->st->st_nlink);\n      }\n      else\n\tmutt_format_s (dest, destlen, fmt, \"\");\n      break;\n\n    case 'n':\n      if (!optional) {\n\tsnprintf (tmp, sizeof (tmp), \"%%%sd\", fmt);\n\tsnprintf (dest, destlen, tmp, folder->ff->all);\n      } else if (!folder->ff->all) {\n\toptional = 0;\n      }\n      break;\n\n    case 'N':\n#ifdef USE_IMAP\n      if (mx_is_imap (folder->ff->desc))\n      {\n\tif (!optional)\n\t{\n\t  snprintf (tmp, sizeof (tmp), \"%%%sd\", fmt);\n\t  snprintf (dest, destlen, tmp, folder->ff->new);\n\t}\n\telse if (!folder->ff->new)\n\t  optional = 0;\n\tbreak;\n      }\n#endif\n#ifdef USE_NOTMUCH\n      if (mx_is_notmuch (folder->ff->name))\n      {\n\tif (!optional)\n\t{\n\t  snprintf (tmp, sizeof (tmp), \"%%%sd\", fmt);\n\t  snprintf (dest, destlen, tmp, folder->ff->new);\n\t} else if (!folder->ff->new)\n\t  optional = 0;\n\tbreak;\n      }\n#endif\n      snprintf (tmp, sizeof (tmp), \"%%%sc\", fmt);\n      snprintf (dest, destlen, tmp, folder->ff->new ? 'N' : ' ');\n      break;\n      \n    case 's':\n      if (folder->ff->st != NULL)\n      {\n\tmutt_pretty_size(fn, sizeof(fn), folder->ff->st->st_size);\n\tsnprintf (tmp, sizeof (tmp), \"%%%ss\", fmt);\n\tsnprintf (dest, destlen, tmp, fn);\n      }\n      else\n\tmutt_format_s (dest, destlen, fmt, \"\");\n      break;\n\n    case 't':\n      snprintf (tmp, sizeof (tmp), \"%%%sc\", fmt);\n      snprintf (dest, destlen, tmp, folder->ff->tagged ? '*' : ' ');\n      break;\n\n    case 'u':\n      if (folder->ff->st != NULL)\n      {\n\tif ((pw = getpwuid (folder->ff->st->st_uid)))\n\t  mutt_format_s (dest, destlen, fmt, pw->pw_name);\n\telse\n\t{\n\t  snprintf (tmp, sizeof (tmp), \"%%%sld\", fmt);\n\t  snprintf (dest, destlen, tmp, folder->ff->st->st_uid);\n\t}\n      }\n      else\n\tmutt_format_s (dest, destlen, fmt, \"\");\n      break;\n\n    default:\n      snprintf (tmp, sizeof (tmp), \"%%%sc\", fmt);\n      snprintf (dest, destlen, tmp, op);\n      break;\n  }\n\n  if (optional)\n    mutt_FormatString (dest, destlen, col, ifstring, folder_format_str, data, 0);\n  else if (flags & M_FORMAT_OPTIONAL)\n    mutt_FormatString (dest, destlen, col, elsestring, folder_format_str, data, 0);\n\n  return (src);\n}\n\nstatic void add_folder (MUTTMENU *m, struct browser_state *state,\n\t\t\tconst char *name, const char *desc,\n\t\t\tconst struct stat *s, unsigned int new, unsigned int all)\n{\n  if (state->entrylen == state->entrymax)\n  {\n    /* need to allocate more space */\n    safe_realloc (&state->entry,\n\t\t  sizeof (struct folder_file) * (state->entrymax += 256));\n    memset (&state->entry[state->entrylen], 0,\n\t    sizeof (struct folder_file) * 256);\n    if (m)\n      m->data = state->entry;\n  }\n\n  if (s != NULL)\n  {\n    (state->entry)[state->entrylen].mode = s->st_mode;\n    (state->entry)[state->entrylen].mtime = s->st_mtime;\n    (state->entry)[state->entrylen].size = s->st_size;\n    \n    (state->entry)[state->entrylen].st = safe_malloc (sizeof (struct stat));\n    memcpy ((state->entry)[state->entrylen].st, s, sizeof (struct stat));\n  }\n\n  (state->entry)[state->entrylen].new = new;\n  (state->entry)[state->entrylen].all = all;\n  (state->entry)[state->entrylen].name = safe_strdup (name);\n  (state->entry)[state->entrylen].desc = safe_strdup(desc ? desc : name);\n#ifdef USE_IMAP\n  (state->entry)[state->entrylen].imap = 0;\n#endif\n  (state->entrylen)++;\n}\n\nstatic void init_state (struct browser_state *state, MUTTMENU *menu)\n{\n  state->entrylen = 0;\n  state->entrymax = 256;\n  state->entry = (struct folder_file *) safe_calloc (state->entrymax, sizeof (struct folder_file));\n#ifdef USE_IMAP\n  state->imap_browse = 0;\n#endif\n  if (menu)\n    menu->data = state->entry;\n}\n\nstatic int examine_directory (MUTTMENU *menu, struct browser_state *state,\n\t\t\t      char *d, const char *prefix)\n{\n  struct stat s;\n  DIR *dp;\n  struct dirent *de;\n  char buffer[_POSIX_PATH_MAX + SHORT_STRING];\n  BUFFY *tmp;\n\n  while (stat (d, &s) == -1)\n  {\n    if (errno == ENOENT)\n    {\n      /* The last used directory is deleted, try to use the parent dir. */\n      char *c = strrchr (d, '/');\n\n      if (c && (c > d))\n      {\n\t*c = 0;\n\tcontinue;\n      }\n    }\n    mutt_perror (d);\n    return (-1);\n  }\n\n  if (!S_ISDIR (s.st_mode))\n  {\n    mutt_error (_(\"%s is not a directory.\"), d);\n    return (-1);\n  }\n\n  mutt_buffy_check (0);\n\n  if ((dp = opendir (d)) == NULL)\n  {\n    mutt_perror (d);\n    return (-1);\n  }\n\n  init_state (state, menu);\n\n  while ((de = readdir (dp)) != NULL)\n  {\n    if (mutt_strcmp (de->d_name, \".\") == 0)\n      continue;    /* we don't need . */\n    \n    if (prefix && *prefix && mutt_strncmp (prefix, de->d_name, mutt_strlen (prefix)) != 0)\n      continue;\n    if (!((regexec (Mask.rx, de->d_name, 0, NULL, 0) == 0) ^ Mask.not))\n      continue;\n\n    mutt_concat_path (buffer, d, de->d_name, sizeof (buffer));\n    if (lstat (buffer, &s) == -1)\n      continue;\n    \n    if ((! S_ISREG (s.st_mode)) && (! S_ISDIR (s.st_mode)) &&\n\t(! S_ISLNK (s.st_mode)))\n      continue;\n    \n    tmp = Incoming;\n    while (tmp && mutt_strcmp (buffer, tmp->path))\n      tmp = tmp->next;\n    add_folder (menu, state, de->d_name, NULL, &s, (tmp) ? tmp->new : 0, 0);\n  }\n  closedir (dp);  \n  browser_sort (state);\n  return 0;\n}\n\n#ifdef USE_NOTMUCH\nstatic int examine_vfolders (MUTTMENU *menu, struct browser_state *state)\n{\n  BUFFY *tmp = VirtIncoming;\n\n  if (!VirtIncoming)\n    return (-1);\n  mutt_buffy_check (0);\n\n  init_state (state, menu);\n\n  do\n  {\n    if (mx_is_notmuch (tmp->path))\n    {\n      nm_nonctx_get_count(tmp->path, &tmp->msg_count, &tmp->msg_unread);\n      add_folder (menu, state, tmp->path, tmp->desc, NULL,\n\t\t      tmp->msg_unread, tmp->msg_count);\n      continue;\n    }\n  }\n  while ((tmp = tmp->next));\n  browser_sort (state);\n  return 0;\n}\n#endif\n\nstatic int examine_mailboxes (MUTTMENU *menu, struct browser_state *state)\n{\n  struct stat s;\n  char buffer[LONG_STRING];\n  BUFFY *tmp = Incoming;\n#ifdef USE_IMAP\n  struct mailbox_state mbox;\n#endif\n\n  if (!Incoming)\n    return (-1);\n  mutt_buffy_check (0);\n\n  init_state (state, menu);\n\n  do\n  {\n#ifdef USE_IMAP\n    if (mx_is_imap (tmp->path))\n    {\n      imap_mailbox_state (tmp->path, &mbox);\n      add_folder (menu, state, tmp->path, NULL, NULL, mbox.new, mbox.messages);\n      continue;\n    }\n#endif\n#ifdef USE_POP\n    if (mx_is_pop (tmp->path))\n    {\n      add_folder (menu, state, tmp->path, NULL, NULL, tmp->new, 0);\n      continue;\n    }\n#endif\n    if (lstat (tmp->path, &s) == -1)\n      continue;\n\n    if ((! S_ISREG (s.st_mode)) && (! S_ISDIR (s.st_mode)) &&\n\t(! S_ISLNK (s.st_mode)))\n      continue;\n\n    if (mx_is_maildir (tmp->path))\n    {\n      struct stat st2;\n      char md[_POSIX_PATH_MAX];\n\n      snprintf (md, sizeof (md), \"%s/new\", tmp->path);\n      if (stat (md, &s) < 0)\n\ts.st_mtime = 0;\n      snprintf (md, sizeof (md), \"%s/cur\", tmp->path);\n      if (stat (md, &st2) < 0)\n\tst2.st_mtime = 0;\n      if (st2.st_mtime > s.st_mtime)\n\ts.st_mtime = st2.st_mtime;\n    }\n    \n    strfcpy (buffer, NONULL(tmp->path), sizeof (buffer));\n    mutt_pretty_mailbox (buffer, sizeof (buffer));\n\n    add_folder (menu, state, buffer, NULL, &s, tmp->new, 0);\n  }\n  while ((tmp = tmp->next));\n  browser_sort (state);\n  return 0;\n}\n\nstatic int select_file_search (MUTTMENU *menu, regex_t *re, int n)\n{\n  return (regexec (re, ((struct folder_file *) menu->data)[n].name, 0, NULL, 0));\n}\n\n#ifdef USE_NOTMUCH\nstatic int select_vfolder_search (MUTTMENU *menu, regex_t *re, int n)\n{\n  return (regexec (re, ((struct folder_file *) menu->data)[n].desc, 0, NULL, 0));\n}\n#endif\n\nstatic void folder_entry (char *s, size_t slen, MUTTMENU *menu, int num)\n{\n  FOLDER folder;\n\n  folder.ff = &((struct folder_file *) menu->data)[num];\n  folder.num = num;\n  \n  mutt_FormatString (s, slen, 0, NONULL(FolderFormat), folder_format_str, \n      (unsigned long) &folder, M_FORMAT_ARROWCURSOR);\n}\n\n#ifdef USE_NOTMUCH\nstatic void vfolder_entry (char *s, size_t slen, MUTTMENU *menu, int num)\n{\n  FOLDER folder;\n\n  folder.ff = &((struct folder_file *) menu->data)[num];\n  folder.num = num;\n\n  mutt_FormatString (s, slen, 0, NONULL(VirtFolderFormat), folder_format_str,\n      (unsigned long) &folder, M_FORMAT_ARROWCURSOR);\n}\n#endif\n\nstatic void init_menu (struct browser_state *state, MUTTMENU *menu, char *title,\n\t\t       size_t titlelen, int buffy)\n{\n  char path[_POSIX_PATH_MAX];\n\n  menu->max = state->entrylen;\n\n  if(menu->current >= menu->max)\n    menu->current = menu->max - 1;\n  if (menu->current < 0)\n    menu->current = 0;\n  if (menu->top > menu->current)\n    menu->top = 0;\n\n  menu->tagged = 0;\n  \n  if (buffy)\n    snprintf (title, titlelen, _(\"Mailboxes [%d]\"), mutt_buffy_check (0));\n  else\n  {\n    strfcpy (path, LastDir, sizeof (path));\n    mutt_pretty_mailbox (path, sizeof (path));\n#ifdef USE_IMAP\n  if (state->imap_browse && option (OPTIMAPLSUB))\n    snprintf (title, titlelen, _(\"Subscribed [%s], File mask: %s\"),\n\t      path, NONULL (Mask.pattern));\n  else\n#endif\n    snprintf (title, titlelen, _(\"Directory [%s], File mask: %s\"),\n\t      path, NONULL(Mask.pattern));\n  }\n  menu->redraw = REDRAW_FULL;\n}\n\nstatic int file_tag (MUTTMENU *menu, int n, int m)\n{\n  struct folder_file *ff = &(((struct folder_file *)menu->data)[n]);\n  int ot;\n  if (S_ISDIR (ff->mode) || (S_ISLNK (ff->mode) && link_is_dir (LastDir, ff->name)))\n  {\n    mutt_error _(\"Can't attach a directory!\");\n    return 0;\n  }\n  \n  ot = ff->tagged;\n  ff->tagged = (m >= 0 ? m : !ff->tagged);\n  \n  return ff->tagged - ot;\n}\n\nvoid _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *numfiles)\n{\n  char buf[_POSIX_PATH_MAX];\n  char prefix[_POSIX_PATH_MAX] = \"\";\n  char helpstr[LONG_STRING];\n  char title[STRING];\n  struct browser_state state;\n  MUTTMENU *menu;\n  struct stat st;\n  int i, killPrefix = 0;\n  int multiple = (flags & M_SEL_MULTI)  ? 1 : 0;\n  int folder   = (flags & M_SEL_FOLDER) ? 1 : 0;\n  int buffy    = (flags & M_SEL_BUFFY)  ? 1 : 0;\n\n  buffy = buffy && folder;\n\n  memset (&state, 0, sizeof (struct browser_state));\n\n  if (!folder)\n    strfcpy (LastDirBackup, LastDir, sizeof (LastDirBackup));\n\n  if (*f)\n  {\n    mutt_expand_path (f, flen);\n#ifdef USE_IMAP\n    if (mx_is_imap (f))\n    {\n      init_state (&state, NULL);\n      state.imap_browse = 1;\n      if (!imap_browse (f, &state))\n        strfcpy (LastDir, state.folder, sizeof (LastDir));\n    }\n    else\n    {\n#endif\n    for (i = mutt_strlen (f) - 1; i > 0 && f[i] != '/' ; i--);\n    if (i > 0)\n    {\n      if (f[0] == '/')\n      {\n\tif (i > sizeof (LastDir) - 1) i = sizeof (LastDir) - 1;\n\tstrncpy (LastDir, f, i);\n\tLastDir[i] = 0;\n      }\n      else\n      {\n\tgetcwd (LastDir, sizeof (LastDir));\n\tsafe_strcat (LastDir, sizeof (LastDir), \"/\");\n\tsafe_strncat (LastDir, sizeof (LastDir), f, i);\n      }\n    }\n    else\n    {\n      if (f[0] == '/')\n\tstrcpy (LastDir, \"/\");\t\t/* __STRCPY_CHECKED__ */\n      else\n\tgetcwd (LastDir, sizeof (LastDir));\n    }\n\n    if (i <= 0 && f[0] != '/')\n      strfcpy (prefix, f, sizeof (prefix));\n    else\n      strfcpy (prefix, f + i + 1, sizeof (prefix));\n    killPrefix = 1;\n#ifdef USE_IMAP\n    }\n#endif\n  }\n#ifdef USE_NOTMUCH\n  else if (!(flags & M_SEL_VFOLDER))\n#else\n  else\n#endif\n  {\n    if (!folder)\n      getcwd (LastDir, sizeof (LastDir));\n    else if (!LastDir[0])\n      strfcpy (LastDir, NONULL(Maildir), sizeof (LastDir));\n\n#ifdef USE_IMAP\n    if (!buffy && mx_is_imap (LastDir))\n    {\n      init_state (&state, NULL);\n      state.imap_browse = 1;\n      imap_browse (LastDir, &state);\n      browser_sort (&state);\n    }\n    else\n#endif\n    {\n      i = mutt_strlen (LastDir);\n      while (i && LastDir[--i] == '/')\n        LastDir[i] = '\\0';\n      if (!LastDir[0])\n        getcwd (LastDir, sizeof (LastDir));\n    }\n  }\n\n  *f = 0;\n\n#ifdef USE_NOTMUCH\n  if (flags & M_SEL_VFOLDER) {\n    if (examine_vfolders (NULL, &state) == -1)\n      goto bail;\n  } else\n#endif\n  if (buffy)\n  {\n    if (examine_mailboxes (NULL, &state) == -1)\n      goto bail;\n  }\n  else\n#ifdef USE_IMAP\n  if (!state.imap_browse)\n#endif\n  {\n  if (examine_directory (NULL, &state, LastDir, prefix) == -1)\n    goto bail;\n  }\n  menu = mutt_new_menu (MENU_FOLDER);\n  menu->search = select_file_search;\n  menu->title = title;\n  menu->data = state.entry;\n  if (multiple)\n    menu->tag = file_tag;\n\n#ifdef USE_NOTMUCH\n  if (flags & M_SEL_VFOLDER) {\n    menu->make_entry = vfolder_entry;\n    menu->search = select_vfolder_search;\n  } else\n#endif\n    menu->make_entry = folder_entry;\n\n  menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_FOLDER,\n    FolderHelp);\n\n  init_menu (&state, menu, title, sizeof (title), buffy);\n\n  FOREVER\n  {\n    switch (i = mutt_menuLoop (menu))\n    {\n      case OP_GENERIC_SELECT_ENTRY:\n\n\tif (!state.entrylen)\n\t{\n\t  mutt_error _(\"No files match the file mask\");\n\t  break;\n\t}\n\n        if (S_ISDIR (state.entry[menu->current].mode) ||\n\t    (S_ISLNK (state.entry[menu->current].mode) &&\n\t    link_is_dir (LastDir, state.entry[menu->current].name)) \n#ifdef USE_IMAP\n\t    || state.entry[menu->current].inferiors\n#endif\n\t    )\n\t{\n\t  /* make sure this isn't a MH or maildir mailbox */\n\t  if (buffy)\n\t  {\n\t    strfcpy (buf, state.entry[menu->current].name, sizeof (buf));\n\t    mutt_expand_path (buf, sizeof (buf));\n\t  }\n#ifdef USE_IMAP\n\t  else if (state.imap_browse)\n\t  {\n            strfcpy (buf, state.entry[menu->current].name, sizeof (buf));\n\t  }\n#endif\n\t  else\n\t    mutt_concat_path (buf, LastDir, state.entry[menu->current].name, sizeof (buf));\n\n\t  if ((mx_get_magic (buf) <= 0)\n#ifdef USE_IMAP\n\t    || state.entry[menu->current].inferiors\n#endif\n\t    )\n\t  {\n\t    char OldLastDir[_POSIX_PATH_MAX];\n\n\t    /* save the old directory */\n\t    strfcpy (OldLastDir, LastDir, sizeof (OldLastDir));\n\n\t    if (mutt_strcmp (state.entry[menu->current].name, \"..\") == 0)\n\t    {\n\t      if (mutt_strcmp (\"..\", LastDir + mutt_strlen (LastDir) - 2) == 0)\n\t\tstrcat (LastDir, \"/..\");\t/* __STRCAT_CHECKED__ */\n\t      else\n\t      {\n\t\tchar *p = strrchr (LastDir + 1, '/');\n\n\t\tif (p)\n\t\t  *p = 0;\n\t\telse\n\t\t{\n\t\t  if (LastDir[0] == '/')\n\t\t    LastDir[1] = 0;\n\t\t  else\n\t\t    strcat (LastDir, \"/..\");\t/* __STRCAT_CHECKED__ */\n\t\t}\n\t      }\n\t    }\n\t    else if (buffy)\n\t    {\n\t      strfcpy (LastDir, state.entry[menu->current].name, sizeof (LastDir));\n\t      mutt_expand_path (LastDir, sizeof (LastDir));\n\t    }\n#ifdef USE_IMAP\n\t    else if (state.imap_browse)\n\t    {\n\t      int n;\n\t      ciss_url_t url;\n\t      \n              strfcpy (LastDir, state.entry[menu->current].name,\n                sizeof (LastDir));\n\t      /* tack on delimiter here */\n\t      n = strlen (LastDir)+1;\n\t      \n\t      /* special case \"\" needs no delimiter */\n\t      url_parse_ciss (&url, state.entry[menu->current].name);\n\t      if (url.path &&\n\t\t  (state.entry[menu->current].delim != '\\0') &&\n\t\t  (n < sizeof (LastDir)))\n\t      {\n\t\tLastDir[n] = '\\0';\n\t\tLastDir[n-1] = state.entry[menu->current].delim;\n\t      }\n\t    }\n#endif\n\t    else\n\t    {\n\t      char tmp[_POSIX_PATH_MAX];\n\t      mutt_concat_path (tmp, LastDir, state.entry[menu->current].name, sizeof (tmp));\n\t      strfcpy (LastDir, tmp, sizeof (LastDir));\n\t    }\n\n\t    destroy_state (&state);\n\t    if (killPrefix)\n\t    {\n\t      prefix[0] = 0;\n\t      killPrefix = 0;\n\t    }\n\t    buffy = 0;\n#ifdef USE_IMAP\n\t    if (state.imap_browse)\n\t    {\n\t      init_state (&state, NULL);\n\t      state.imap_browse = 1;\n\t      imap_browse (LastDir, &state);\n\t      browser_sort (&state);\n\t      menu->data = state.entry;\n\t    }\n\t    else\n#endif\n\t    if (examine_directory (menu, &state, LastDir, prefix) == -1)\n\t    {\n\t      /* try to restore the old values */\n\t      strfcpy (LastDir, OldLastDir, sizeof (LastDir));\n\t      if (examine_directory (menu, &state, LastDir, prefix) == -1)\n\t      {\n\t\tstrfcpy (LastDir, NONULL(Homedir), sizeof (LastDir));\n\t\tgoto bail;\n\t      }\n\t    }\n\t    menu->current = 0; \n\t    menu->top = 0; \n\t    init_menu (&state, menu, title, sizeof (title), buffy);\n\t    break;\n\t  }\n\t}\n\n\tif (buffy)\n\t{\n\t  strfcpy (f, state.entry[menu->current].name, flen);\n\t  mutt_expand_path (f, flen);\n\t}\n#ifdef USE_IMAP\n\telse if (state.imap_browse)\n          strfcpy (f, state.entry[menu->current].name, flen);\n#endif\n#ifdef USE_NOTMUCH\n\telse if (mx_is_notmuch(state.entry[menu->current].name))\n\t  strfcpy (f, state.entry[menu->current].name, flen);\n#endif\n\telse\n\t  mutt_concat_path (f, LastDir, state.entry[menu->current].name, flen);\n\n\t/* Fall through to OP_EXIT */\n\n      case OP_EXIT:\n\n\tif (multiple)\n\t{\n\t  char **tfiles;\n\t  int i, j;\n\n\t  if (menu->tagged)\n\t  {\n\t    *numfiles = menu->tagged;\n\t    tfiles = safe_calloc (*numfiles, sizeof (char *));\n\t    for (i = 0, j = 0; i < state.entrylen; i++)\n\t    {\n\t      struct folder_file ff = state.entry[i];\n\t      char full[_POSIX_PATH_MAX];\n\t      if (ff.tagged)\n\t      {\n\t\tmutt_concat_path (full, LastDir, ff.name, sizeof (full));\n\t\tmutt_expand_path (full, sizeof (full));\n\t\ttfiles[j++] = safe_strdup (full);\n\t      }\n\t    }\n\t    *files = tfiles;\n\t  }\n\t  else if (f[0]) /* no tagged entries. return selected entry */\n\t  {\n\t    *numfiles = 1;\n\t    tfiles = safe_calloc (*numfiles, sizeof (char *));\n\t    mutt_expand_path (f, flen);\n\t    tfiles[0] = safe_strdup (f);\n\t    *files = tfiles;\n\t  }\n\t}\n\n\tdestroy_state (&state);\n\tmutt_menuDestroy (&menu);\n\tgoto bail;\n\n      case OP_BROWSER_TELL:\n        if(state.entrylen)\n\t  mutt_message(\"%s\", state.entry[menu->current].name);\n        break;\n\n#ifdef USE_IMAP\n      case OP_BROWSER_SUBSCRIBE:\n\timap_subscribe (state.entry[menu->current].name, 1);\n\tbreak;\n\n      case OP_BROWSER_UNSUBSCRIBE:\n\timap_subscribe (state.entry[menu->current].name, 0);\n\tbreak;\n\n      case OP_BROWSER_TOGGLE_LSUB:\n\tif (option (OPTIMAPLSUB))\n\t  unset_option (OPTIMAPLSUB);\n\telse\n\t  set_option (OPTIMAPLSUB);\n\n\tmutt_unget_event (0, OP_CHECK_NEW);\n\tbreak;\n\n      case OP_CREATE_MAILBOX:\n\tif (!state.imap_browse)\n\t{\n\t  mutt_error (_(\"Create is only supported for IMAP mailboxes\"));\n\t  break;\n\t}\n\n\tif (!imap_mailbox_create (LastDir))\n\t{\n\t  /* TODO: find a way to detect if the new folder would appear in\n\t   *   this window, and insert it without starting over. */\n\t  destroy_state (&state);\n\t  init_state (&state, NULL);\n\t  state.imap_browse = 1;\n\t  imap_browse (LastDir, &state);\n\t  browser_sort (&state);\n\t  menu->data = state.entry;\n\t  menu->current = 0; \n\t  menu->top = 0; \n\t  init_menu (&state, menu, title, sizeof (title), buffy);\n\t  MAYBE_REDRAW (menu->redraw);\n\t}\n\t/* else leave error on screen */\n\tbreak;\n\n      case OP_RENAME_MAILBOX:\n\tif (!state.entry[menu->current].imap)\n\t  mutt_error (_(\"Rename is only supported for IMAP mailboxes\"));\n\telse\n\t{\n\t  int nentry = menu->current;\n\n\t  if (imap_mailbox_rename (state.entry[nentry].name) >= 0)\n\t  {\n\t    destroy_state (&state);\n\t    init_state (&state, NULL);\n\t    state.imap_browse = 1;\n\t    imap_browse (LastDir, &state);\n\t    browser_sort (&state);\n\t    menu->data = state.entry;\n\t    menu->current = 0;\n\t    menu->top = 0;\n\t    init_menu (&state, menu, title, sizeof (title), buffy);\n\t    MAYBE_REDRAW (menu->redraw);\n\t  }\n\t}\n\tbreak;\n\n    case OP_DELETE_MAILBOX:\n\tif (!state.entry[menu->current].imap)\n\t  mutt_error (_(\"Delete is only supported for IMAP mailboxes\"));\n\telse\n        {\n\t  char msg[SHORT_STRING];\n\t  IMAP_MBOX mx;\n\t  int nentry = menu->current;\n\n\t  imap_parse_path (state.entry[nentry].name, &mx);\n\t  if (!mx.mbox)\n\t  {\n\t    mutt_error _(\"Cannot delete root folder\");\n\t    break;\n\t  }\n\t  snprintf (msg, sizeof (msg), _(\"Really delete mailbox \\\"%s\\\"?\"),\n            mx.mbox);\n\t  if (mutt_yesorno (msg, M_NO) == M_YES)\n          {\n\t    if (!imap_delete_mailbox (Context, mx))\n            {\n\t      /* free the mailbox from the browser */\n\t      FREE (&((state.entry)[nentry].name));\n\t      FREE (&((state.entry)[nentry].desc));\n\t      /* and move all other entries up */\n\t      if (nentry+1 < state.entrylen)\n\t\tmemmove (state.entry + nentry, state.entry + nentry + 1,\n                  sizeof (struct folder_file) * (state.entrylen - (nentry+1)));\n\t      state.entrylen--;\n\t      mutt_message _(\"Mailbox deleted.\");\n\t      init_menu (&state, menu, title, sizeof (title), buffy);\n\t      MAYBE_REDRAW (menu->redraw);\n\t    }\n\t  }\n\t  else\n\t    mutt_message _(\"Mailbox not deleted.\");\n\t  FREE (&mx.mbox);\n        }\n        break;\n#endif\n\n      case OP_CHANGE_DIRECTORY:\n\n\tstrfcpy (buf, LastDir, sizeof (buf));\n#ifdef USE_IMAP\n\tif (!state.imap_browse)\n#endif\n\t{\n\t  /* add '/' at the end of the directory name if not already there */\n\t  int len=mutt_strlen(LastDir);\n\t  if (len && LastDir[len-1] != '/' && sizeof (buf) > len)\n\t    buf[len]='/';\n\t}\n\n\tif (mutt_get_field (_(\"Chdir to: \"), buf, sizeof (buf), M_FILE) == 0 &&\n\t    buf[0])\n\t{\n\t  buffy = 0;\t  \n\t  mutt_expand_path (buf, sizeof (buf));\n#ifdef USE_IMAP\n\t  if (mx_is_imap (buf))\n\t  {\n\t    strfcpy (LastDir, buf, sizeof (LastDir));\n\t    destroy_state (&state);\n\t    init_state (&state, NULL);\n\t    state.imap_browse = 1;\n\t    imap_browse (LastDir, &state);\n\t    browser_sort (&state);\n\t    menu->data = state.entry;\n\t    menu->current = 0; \n\t    menu->top = 0; \n\t    init_menu (&state, menu, title, sizeof (title), buffy);\n\t  }\n\t  else\n#endif\n\t  {\n\t    if (*buf != '/')\n\t    {\n\t      /* in case dir is relative, make it relative to LastDir,\n\t       * not current working dir */\n\t      char tmp[_POSIX_PATH_MAX];\n\t      mutt_concat_path (tmp, LastDir, buf, sizeof (tmp));\n\t      strfcpy (buf, tmp, sizeof (buf));\n\t    }\n\t    if (stat (buf, &st) == 0)\n\t    {\n\t      if (S_ISDIR (st.st_mode))\n\t      {\n\t\tdestroy_state (&state);\n\t\tif (examine_directory (menu, &state, buf, prefix) == 0)\n\t\t  strfcpy (LastDir, buf, sizeof (LastDir));\n\t\telse\n\t\t{\n\t\t  mutt_error _(\"Error scanning directory.\");\n\t\t  if (examine_directory (menu, &state, LastDir, prefix) == -1)\n\t\t  {\n\t\t    mutt_menuDestroy (&menu);\n\t\t    goto bail;\n\t\t  }\n\t\t}\n\t\tmenu->current = 0;\n\t\tmenu->top = 0;\n\t\tinit_menu (&state, menu, title, sizeof (title), buffy);\n\t      }\n\t      else\n\t\tmutt_error (_(\"%s is not a directory.\"), buf);\n\t    }\n\t    else\n\t      mutt_perror (buf);\n\t  }\n\t}\n\tMAYBE_REDRAW (menu->redraw);\n\tbreak;\n\t\n      case OP_ENTER_MASK:\n\n\tstrfcpy (buf, NONULL(Mask.pattern), sizeof (buf));\n\tif (mutt_get_field (_(\"File Mask: \"), buf, sizeof (buf), 0) == 0)\n\t{\n\t  regex_t *rx = (regex_t *) safe_malloc (sizeof (regex_t));\n\t  char *s = buf;\n\t  int not = 0, err;\n\n\t  buffy = 0;\n\t  /* assume that the user wants to see everything */\n\t  if (!buf[0])\n\t    strfcpy (buf, \".\", sizeof (buf));\n\t  SKIPWS (s);\n\t  if (*s == '!')\n\t  {\n\t    s++;\n\t    SKIPWS (s);\n\t    not = 1;\n\t  }\n\n\t  if ((err = REGCOMP (rx, s, REG_NOSUB)) != 0)\n\t  {\n\t    regerror (err, rx, buf, sizeof (buf));\n\t    FREE (&rx);\n\t    mutt_error (\"%s\", buf);\n\t  }\n\t  else\n\t  {\n\t    mutt_str_replace (&Mask.pattern, buf);\n\t    regfree (Mask.rx);\n\t    FREE (&Mask.rx);\n\t    Mask.rx = rx;\n\t    Mask.not = not;\n\n\t    destroy_state (&state);\n#ifdef USE_IMAP\n\t    if (state.imap_browse)\n\t    {\n\t      init_state (&state, NULL);\n\t      state.imap_browse = 1;\n\t      imap_browse (LastDir, &state);\n\t      browser_sort (&state);\n\t      menu->data = state.entry;\n\t      init_menu (&state, menu, title, sizeof (title), buffy);\n\t    }\n\t    else\n#endif\n\t    if (examine_directory (menu, &state, LastDir, NULL) == 0)\n\t      init_menu (&state, menu, title, sizeof (title), buffy);\n\t    else\n\t    {\n\t      mutt_error _(\"Error scanning directory.\");\n\t      mutt_menuDestroy (&menu);\n\t      goto bail;\n\t    }\n\t    killPrefix = 0;\n\t    if (!state.entrylen)\n\t    {\n\t      mutt_error _(\"No files match the file mask\");\n\t      break;\n\t    }\n\t  }\n\t}\n\tMAYBE_REDRAW (menu->redraw);\n\tbreak;\n\n      case OP_SORT:\n      case OP_SORT_REVERSE:\n\n        {\n\t  int resort = 1;\n\t  int reverse = (i == OP_SORT_REVERSE);\n\t  \n\t  switch (mutt_multi_choice ((reverse) ?\n\t      _(\"Reverse sort by (d)ate, (a)lpha, si(z)e, d(e)scription, (c)ount, ne(w) count, or do(n)'t sort? \") :\n\t      _(\"Sort by (d)ate, (a)lpha, si(z)e, d(e)scription, (c)ount, ne(w) count, or do(n)'t sort? \"),\n\t      _(\"dazecwn\")))\n\t  {\n\t    case -1: /* abort */\n\t      resort = 0;\n\t      break;\n\n            case 1: /* (d)ate */\n\t      BrowserSort = SORT_DATE;\n\t      break;\n\n            case 2: /* (a)lpha */\n\t      BrowserSort = SORT_SUBJECT;\n\t      break;\n\n            case 3: /* si(z)e */\n\t      BrowserSort = SORT_SIZE;\n\t      break;\n\n            case 4: /* d(e)scription */\n\t      BrowserSort = SORT_DESC;\n\t      break;\n\n            case 5: /* (c)ount */\n\t      BrowserSort = SORT_COUNT;\n\t      break;\n\n            case 6: /* ne(w) count */\n\t      BrowserSort = SORT_COUNT_NEW;\n\t      break;\n\n            case 7: /* do(n)'t sort */\n\t      BrowserSort = SORT_ORDER;\n\t      resort = 0;\n\t      break;\n\t  }\n\t  if (resort)\n\t  {\n\t    BrowserSort |= reverse ? SORT_REVERSE : 0;\n\t    browser_sort (&state);\n\t    menu->redraw = REDRAW_FULL;\n\t  }\n\t  break;\n\t}\n\n      case OP_TOGGLE_MAILBOXES:\n\tbuffy = 1 - buffy;\n\n      case OP_CHECK_NEW:\n\tdestroy_state (&state);\n\tprefix[0] = 0;\n\tkillPrefix = 0;\n\n\tif (buffy)\n\t{\n\t  if (examine_mailboxes (menu, &state) == -1)\n\t    goto bail;\n\t}\n#ifdef USE_IMAP\n\telse if (mx_is_imap (LastDir))\n\t{\n\t  init_state (&state, NULL);\n\t  state.imap_browse = 1;\n\t  imap_browse (LastDir, &state);\n\t  browser_sort (&state);\n\t  menu->data = state.entry;\n\t}\n#endif\n\telse if (examine_directory (menu, &state, LastDir, prefix) == -1)\n\t  goto bail;\n\tinit_menu (&state, menu, title, sizeof (title), buffy);\n\tbreak;\n\n      case OP_BUFFY_LIST:\n\tmutt_buffy_list ();\n\tbreak;\n\n      case OP_BROWSER_NEW_FILE:\n\n\tsnprintf (buf, sizeof (buf), \"%s/\", LastDir);\n\tif (mutt_get_field (_(\"New file name: \"), buf, sizeof (buf), M_FILE) == 0)\n\t{\n\t  strfcpy (f, buf, flen);\n\t  destroy_state (&state);\n\t  mutt_menuDestroy (&menu);\n\t  goto bail;\n\t}\n\tMAYBE_REDRAW (menu->redraw);\n\tbreak;\n\n      case OP_BROWSER_VIEW_FILE:\n\tif (!state.entrylen)\n\t{\n\t  mutt_error _(\"No files match the file mask\");\n\t  break;\n\t}\n\n#ifdef USE_IMAP\n\tif (state.entry[menu->current].selectable)\n\t{\n\t  strfcpy (f, state.entry[menu->current].name, flen);\n\t  destroy_state (&state);\n\t  mutt_menuDestroy (&menu);\n\t  goto bail;\n\t}\n\telse\n#endif\n        if (S_ISDIR (state.entry[menu->current].mode) ||\n\t    (S_ISLNK (state.entry[menu->current].mode) &&\n\t    link_is_dir (LastDir, state.entry[menu->current].name)))\n\t{\n\t  mutt_error _(\"Can't view a directory\");\n\t  break;\n\t} \n\telse\n\t{\n\t  BODY *b;\n\t  char buf[_POSIX_PATH_MAX];\n\t  \n\t  mutt_concat_path (buf, LastDir, state.entry[menu->current].name, sizeof (buf));\n\t  b = mutt_make_file_attach (buf);\n\t  if (b != NULL)\n\t  {\n\t    mutt_view_attachment (NULL, b, M_REGULAR, NULL, NULL, 0);\n\t    mutt_free_body (&b);\n\t    menu->redraw = REDRAW_FULL;\n\t  }\n\t  else\n\t    mutt_error _(\"Error trying to view file\");\n\t}\n    }\n  }\n  \n  bail:\n  \n  if (!folder)\n    strfcpy (LastDir, LastDirBackup, sizeof (LastDir));\n  \n}\n"
  },
  {
    "path": "browser.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _BROWSER_H\n#define _BROWSER_H 1\n\nstruct folder_file\n{\n  mode_t mode;\n  off_t size;\n  time_t mtime;\n  struct stat *st;\n\n  char *name;\n  char *desc;\n\n  unsigned int new;\n  unsigned int all;\n\n#ifdef USE_IMAP\n  char delim;\n  \n  unsigned imap : 1;\n  unsigned selectable : 1;\n  unsigned inferiors : 1;\n#endif\n  unsigned tagged : 1;\n};\n\nstruct browser_state\n{\n  struct folder_file *entry;\n  unsigned int entrylen;\t/* number of real entries */\n  unsigned int entrymax;\t/* max entry */\n#ifdef USE_IMAP\n  short imap_browse;\n  char *folder;\n  unsigned noselect : 1;\n  unsigned marked : 1;\n  unsigned unmarked : 1;\n#endif\n};\n\nstruct mailbox_state\n{\n  unsigned int new;\n  unsigned int old;\n  unsigned int messages;\n};\n#endif /* _BROWSER_H */\n"
  },
  {
    "path": "buffy.c",
    "content": "/* \n * Copyright (C) 1996-2000,2010,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"buffy.h\"\n#include \"mailbox.h\"\n#include \"mx.h\"\n\n#include \"mutt_curses.h\"\n\n#ifdef USE_SIDEBAR\n#include \"sidebar.h\"\n#endif\n\n#ifdef USE_IMAP\n#include \"imap.h\"\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#include <string.h>\n#include <sys/stat.h>\n#include <dirent.h>\n#include <utime.h>\n#include <ctype.h>\n#include <unistd.h>\n\n#include <stdio.h>\n\nstatic time_t BuffyTime = 0;\t/* last time we started checking for mail */\ntime_t BuffyDoneTime = 0;\t/* last time we knew for sure how much mail there was. */\nstatic short BuffyCount = 0;\t/* how many boxes with new mail */\nstatic short BuffyNotify = 0;\t/* # of unnotified new boxes */\n\nstatic BUFFY* buffy_get (const char *path);\n\n/* Find the last message in the file. \n * upon success return 0. If no message found - return -1 */\n\nstatic int fseek_last_message (FILE * f)\n{\n  LOFF_T pos;\n  char buffer[BUFSIZ + 9];\t/* 7 for \"\\n\\nFrom \" */\n  int bytes_read;\n  int i;\t\t\t/* Index into `buffer' for scanning.  */\n\n  memset (buffer, 0, sizeof(buffer));\n  fseek (f, 0, SEEK_END);\n  pos = ftello (f);\n\n  /* Set `bytes_read' to the size of the last, probably partial, buffer; 0 <\n   * `bytes_read' <= `BUFSIZ'.  */\n  bytes_read = pos % BUFSIZ;\n  if (bytes_read == 0)\n    bytes_read = BUFSIZ;\n  /* Make `pos' a multiple of `BUFSIZ' (0 if the file is short), so that all\n   * reads will be on block boundaries, which might increase efficiency.  */\n  while ((pos -= bytes_read) >= 0)\n  {\n    /* we save in the buffer at the end the first 7 chars from the last read */\n    strncpy (buffer + BUFSIZ, buffer, 5+2); /* 2 == 2 * mutt_strlen(CRLF) */\n    fseeko (f, pos, SEEK_SET);\n    bytes_read = fread (buffer, sizeof (char), bytes_read, f);\n    if (bytes_read == -1)\n      return -1;\n    for (i = bytes_read; --i >= 0;)\n      if (!mutt_strncmp (buffer + i, \"\\n\\nFrom \", mutt_strlen (\"\\n\\nFrom \")))\n      {\t\t\t\t/* found it - go to the beginning of the From */\n\tfseeko (f, pos + i + 2, SEEK_SET);\n\treturn 0;\n      }\n    bytes_read = BUFSIZ;\n  }\n\n  /* here we are at the beginning of the file */\n  if (!mutt_strncmp (\"From \", buffer, 5))\n  {\n    fseek (f, 0, 0);\n    return (0);\n  }\n\n  return (-1);\n}\n\n/* Return 1 if the last message is new */\nstatic int test_last_status_new (FILE * f)\n{\n  HEADER *hdr;\n  ENVELOPE* tmp_envelope;\n  int result = 0;\n\n  if (fseek_last_message (f) == -1)\n    return (0);\n\n  hdr = mutt_new_header ();\n  tmp_envelope = mutt_read_rfc822_header (f, hdr, 0, 0);\n  if (!(hdr->read || hdr->old))\n    result = 1;\n\n  mutt_free_envelope(&tmp_envelope);\n  mutt_free_header (&hdr);\n\n  return result;\n}\n\nstatic int test_new_folder (const char *path)\n{\n  FILE *f;\n  int rc = 0;\n  int typ;\n\n  typ = mx_get_magic (path);\n\n  if (typ != M_MBOX && typ != M_MMDF)\n    return 0;\n\n  if ((f = fopen (path, \"rb\")))\n  {\n    rc = test_last_status_new (f);\n    safe_fclose (&f);\n  }\n\n  return rc;\n}\n\nvoid mutt_buffy_cleanup (const char *buf, struct stat *st)\n{\n  struct utimbuf ut;\n  BUFFY *tmp;\n\n  if (option(OPTCHECKMBOXSIZE))\n  {\n    tmp = mutt_find_mailbox (buf);\n    if (tmp && !tmp->new)\n      mutt_update_mailbox (tmp);\n  }\n  else\n  {\n    /* fix up the times so buffy won't get confused */\n    if (st->st_mtime > st->st_atime)\n    {\n      ut.actime = st->st_atime;\n      ut.modtime = time (NULL);\n      utime (buf, &ut); \n    }\n    else\n      utime (buf, NULL);\n  }\n}\n\nBUFFY *mutt_find_mailbox (const char *path)\n{\n  BUFFY *tmp = NULL;\n  struct stat sb;\n  struct stat tmp_sb;\n  \n  if (stat (path,&sb) != 0)\n    return NULL;\n\n  for (tmp = Incoming; tmp; tmp = tmp->next)\n  {\n    if (stat (tmp->path,&tmp_sb) ==0 && \n\tsb.st_dev == tmp_sb.st_dev && sb.st_ino == tmp_sb.st_ino)\n      break;\n  }\n  return tmp;\n}\n\nvoid mutt_update_mailbox (BUFFY * b)\n{\n  struct stat sb;\n\n  if (!b)\n    return;\n\n  if (stat (b->path, &sb) == 0)\n    b->size = (off_t) sb.st_size;\n  else\n    b->size = 0;\n  return;\n}\n\nstatic BUFFY *buffy_new (const char *path)\n{\n  BUFFY* buffy;\n#ifdef USE_SIDEBAR\n  char rp[PATH_MAX] = \"\";\n  char *r = NULL;\n#endif\n\n  buffy = (BUFFY *) safe_calloc (1, sizeof (BUFFY));\n  strfcpy (buffy->path, path, sizeof (buffy->path));\n#ifdef USE_SIDEBAR\n  r = realpath (path, rp);\n  strfcpy (buffy->realpath, r ? rp : path, sizeof (buffy->realpath));\n#endif\n  buffy->next = NULL;\n  buffy->magic = 0;\n\n  return buffy;\n}\n\nstatic void buffy_free (BUFFY **mailbox)\n{\n  if (mailbox && *mailbox)\n    FREE (&(*mailbox)->desc);\n  FREE (mailbox); /* __FREE_CHECKED__ */\n}\n\nint mutt_parse_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  BUFFY **tmp,*tmp1;\n  char buf[_POSIX_PATH_MAX];\n  struct stat sb;\n  char f1[PATH_MAX];\n#ifndef USE_SIDEBAR\n  char f2[PATH_MAX];\n#endif\n  char *p, *q;\n\n  while (MoreArgs (s))\n  {\n    mutt_extract_token (path, s, 0);\n    strfcpy (buf, path->data, sizeof (buf));\n\n    if(data == M_UNMAILBOXES && mutt_strcmp(buf,\"*\") == 0)\n    {\n      for (tmp = &Incoming; *tmp;)\n      {\n        tmp1=(*tmp)->next;\n#ifdef USE_SIDEBAR\n\tsb_notify_mailbox (*tmp, 0);\n#endif\n        buffy_free (tmp);\n        *tmp=tmp1;\n      }\n      return 0;\n    }\n\n    mutt_expand_path (buf, sizeof (buf));\n\n    /* Skip empty tokens. */\n    if(!*buf) continue;\n\n    /* avoid duplicates */\n    p = realpath (buf, f1);\n    for (tmp = &Incoming; *tmp; tmp = &((*tmp)->next))\n    {\n#ifdef USE_SIDEBAR\n      q = (*tmp)->realpath;\n      if (mutt_strcmp (p ? p : buf, q) == 0)\n#else\n      q = realpath ((*tmp)->path, f2);\n      if (mutt_strcmp (p ? p : buf, q ? q : (*tmp)->path) == 0)\n#endif\n      {\n\tdprint(3,(debugfile,\"mailbox '%s' already registered as '%s'\\n\", buf, (*tmp)->path));\n\tbreak;\n      }\n    }\n\n    if(data == M_UNMAILBOXES)\n    {\n      if(*tmp)\n      {\n        tmp1=(*tmp)->next;\n#ifdef USE_SIDEBAR\n\tsb_notify_mailbox (*tmp, 0);\n#endif\n        buffy_free (tmp);\n        *tmp=tmp1;\n      }\n      continue;\n    }\n\n    if (!*tmp) {\n      *tmp = buffy_new (buf);\n#ifdef USE_SIDEBAR\n      sb_notify_mailbox (*tmp, 1);\n#endif\n    }\n\n    (*tmp)->new = 0;\n    (*tmp)->notified = 1;\n    (*tmp)->newly_created = 0;\n\n    /* for check_mbox_size, it is important that if the folder is new (tested by\n     * reading it), the size is set to 0 so that later when we check we see\n     * that it increased .  without check_mbox_size we probably don't care.\n     */\n    if (option(OPTCHECKMBOXSIZE) &&\n\tstat ((*tmp)->path, &sb) == 0 && !test_new_folder ((*tmp)->path))\n    {\n      /* some systems out there don't have an off_t type */\n      (*tmp)->size = (off_t) sb.st_size;\n    }\n    else\n      (*tmp)->size = 0;\n  }\n  return 0;\n}\n\n/* returns 1 if the specified dir (cur or new) has new mail */\nstatic int buffy_maildir_dir_hasnew(BUFFY* mailbox, const char *dir_name)\n{\n  char path[_POSIX_PATH_MAX];\n  DIR *dirp;\n  struct dirent *de;\n  char *p;\n  int rc = 0;\n  struct stat sb;\n\n  snprintf (path, sizeof (path), \"%s/%s\", mailbox->path, dir_name);\n\n  /* when $mail_check_recent is set, if the new/ directory hasn't been modified since\n   * the user last exited the mailbox, then we know there is no recent mail.\n   */\n  if (option(OPTMAILCHECKRECENT))\n  {\n    if (stat(path, &sb) == 0 && sb.st_mtime < mailbox->last_visited)\n      return 0;\n  }\n\n#ifdef USE_SIDEBAR\n  if (option (OPTSIDEBAR) && mailbox->msg_unread > 0) {\n    mailbox->new = 1;\n    return 1;\n  }\n#endif\n\n  if ((dirp = opendir (path)) == NULL)\n  {\n    mailbox->magic = 0;\n    return 0;\n  }\n\n  while ((de = readdir (dirp)) != NULL)\n  {\n    if (*de->d_name == '.')\n      continue;\n\n    if (!(p = strstr (de->d_name, \":2,\")) || !(strchr (p + 3, 'T') || strchr(p + 3, 'S')))\n    {\n      if (option(OPTMAILCHECKRECENT))\n      {\n\tchar msgpath[_POSIX_PATH_MAX];\n\n\tsnprintf(msgpath, sizeof(msgpath), \"%s/%s\", path, de->d_name);\n\t/* ensure this message was received since leaving this mailbox */\n\tif (stat(msgpath, &sb) == 0 && (sb.st_ctime <= mailbox->last_visited))\n\t  continue;\n      }\n      /* one new and undeleted message is enough */\n      mailbox->new = 1;\n      rc = 1;\n      break;\n    }\n  }\n\n  closedir (dirp);\n\n  return rc;\n}\n\n#ifdef USE_NOTMUCH\nint mutt_parse_virtual_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  BUFFY **tmp;\n  char buf[_POSIX_PATH_MAX + LONG_STRING + 32];   /* path to DB + query + URI \"decoration\" */\n\n  while (MoreArgs (s))\n  {\n    char *desc;\n\n    mutt_extract_token (path, s, 0);\n    if (path->data && *path->data)\n      desc = safe_strdup( path->data);\n    else\n      continue;\n\n    mutt_extract_token (path, s, 0);\n    strfcpy (buf, path->data, sizeof (buf));\n\n    /* Skip empty tokens. */\n    if(!*buf) {\n\t    FREE(&desc);\n\t    continue;\n    }\n\n    /* avoid duplicates */\n    for (tmp = &VirtIncoming; *tmp; tmp = &((*tmp)->next))\n    {\n      if (mutt_strcmp (buf, (*tmp)->path) == 0)\n      {\n\tdprint(3,(debugfile,\"virtual mailbox '%s' already registered as '%s'\\n\", buf, (*tmp)->path));\n\tbreak;\n      }\n    }\n\n    if (!*tmp)\n      *tmp = buffy_new (buf);\n\n    (*tmp)->new = 0;\n    (*tmp)->notified = 1;\n    (*tmp)->newly_created = 0;\n    (*tmp)->size = 0;\n    (*tmp)->desc = desc;\n  }\n  return 0;\n}\n#endif\n\n/* returns 1 if maildir has new mail */\nstatic int buffy_maildir_hasnew (BUFFY* mailbox)\n{\n  if (buffy_maildir_dir_hasnew(mailbox, \"new\")) {\n      return 1;\n  }\n\n  if (!option(OPTMAILDIRCHECKCUR)) {\n      return 0;\n  }\n\n  if (buffy_maildir_dir_hasnew(mailbox, \"cur\")) {\n      return 1;\n  }\n\n  return 0;\n}\n\n#ifdef USE_SIDEBAR\n/**\n * buffy_maildir_update_dir - Update counts for one directory\n * @mailbox: BUFFY representing a maildir mailbox\n * @dir:     Which directory to search\n *\n * Look through one directory of a maildir mailbox.  The directory could\n * be either \"new\" or \"cur\".\n *\n * Count how many new, or flagged, messages there are.\n */\nstatic void\nbuffy_maildir_update_dir (BUFFY *mailbox, const char *dir)\n{\n\tchar path[_POSIX_PATH_MAX] = \"\";\n\tDIR *dirp = NULL;\n\tstruct dirent *de = NULL;\n\tchar *p = NULL;\n\tint read;\n\n\tsnprintf (path, sizeof (path), \"%s/%s\", mailbox->path, dir);\n\n\tdirp = opendir (path);\n\tif (!dirp) {\n\t\tmailbox->magic = 0;\n\t\treturn;\n\t}\n\n\twhile ((de = readdir (dirp)) != NULL) {\n\t\tif (*de->d_name == '.')\n\t\t\tcontinue;\n\n\t\t/* Matches maildir_parse_flags logic */\n\t\tread = 0;\n\t\tmailbox->msg_count++;\n\t\tp = strstr (de->d_name, \":2,\");\n\t\tif (p) {\n\t\t\tp += 3;\n\t\t\tif (strchr (p, 'S'))\n\t\t\t\tread = 1;\n\t\t\tif (strchr (p, 'F'))\n\t\t\t\tmailbox->msg_flagged++;\n\t\t}\n\t\tif (!read) {\n\t\t\tmailbox->msg_unread++;\n\t\t}\n\t}\n\n\tclosedir (dirp);\n}\n\n/**\n * buffy_maildir_update - Update messages counts for a maildir mailbox\n * @mailbox: BUFFY representing a maildir mailbox\n *\n * Open a mailbox directories and update our record of how many new, or\n * flagged, messages there are.\n */\nvoid\nbuffy_maildir_update (BUFFY *mailbox)\n{\n\tif (!option (OPTSIDEBAR))\n\t\treturn;\n\n\tmailbox->msg_count   = 0;\n\tmailbox->msg_unread  = 0;\n\tmailbox->msg_flagged = 0;\n\n\tbuffy_maildir_update_dir (mailbox, \"new\");\n\tif (mailbox->msg_count) {\n\t\tmailbox->new = 1;\n\t}\n\tbuffy_maildir_update_dir (mailbox, \"cur\");\n\n\tmailbox->sb_last_checked = time (NULL);\n\n\t/* make sure the updates are actually put on screen */\n\tsb_draw();\n}\n\n#endif\n\n/* returns 1 if mailbox has new mail */ \nstatic int buffy_mbox_hasnew (BUFFY* mailbox, struct stat *sb)\n{\n  int rc = 0;\n  int statcheck;\n\n  if (option (OPTCHECKMBOXSIZE))\n    statcheck = sb->st_size > mailbox->size;\n  else\n    statcheck = sb->st_mtime > sb->st_atime\n      || (mailbox->newly_created && sb->st_ctime == sb->st_mtime && sb->st_ctime == sb->st_atime);\n#ifdef USE_SIDEBAR\n  if ((!option (OPTSIDEBAR) && statcheck) || (option (OPTSIDEBAR) && mailbox->msg_unread > 0))\n#else\n  if (statcheck)\n#endif\n  {\n    if (!option(OPTMAILCHECKRECENT) || sb->st_mtime > mailbox->last_visited)\n    {\n      rc = 1;\n      mailbox->new = 1;\n    }\n  }\n  else if (option(OPTCHECKMBOXSIZE))\n  {\n    /* some other program has deleted mail from the folder */\n    mailbox->size = (off_t) sb->st_size;\n  }\n  if (mailbox->newly_created &&\n      (sb->st_ctime != sb->st_mtime || sb->st_ctime != sb->st_atime))\n    mailbox->newly_created = 0;\n\n  return rc;\n}\n\n#ifdef USE_SIDEBAR\n/**\n * buffy_mbox_update - Update messages counts for an mbox mailbox\n * @mailbox: BUFFY representing an mbox mailbox\n * @sb:      stat(2) infomation about the mailbox file\n *\n * Open a mbox file and update our record of how many new, or flagged,\n * messages there are. If the mailbox hasn't changed since the last call,\n * the function does nothing.\n */\nvoid\nbuffy_mbox_update (BUFFY *mailbox, struct stat *sb)\n{\n\tCONTEXT *ctx = NULL;\n\n\tif (!option (OPTSIDEBAR))\n\t\treturn;\n\tif ((mailbox->sb_last_checked > sb->st_mtime) && (mailbox->msg_count != 0))\n\t\treturn; /* no check necessary */\n\n\tctx = mx_open_mailbox (mailbox->path, M_READONLY | M_QUIET | M_NOSORT | M_PEEK, NULL);\n\tif (ctx) {\n\t\tmailbox->msg_count       = ctx->msgcount;\n\t\tmailbox->msg_unread      = ctx->unread;\n\t\tmailbox->msg_flagged     = ctx->flagged;\n\t\tmailbox->sb_last_checked = time (NULL);\n\t\tmx_close_mailbox (ctx, 0);\n\t}\n\n\t/* make sure the updates are actually put on screen */\n\tsb_draw();\n}\n#endif\n\n\nstatic void buffy_check(BUFFY *tmp, struct stat *contex_sb)\n{\n    struct stat sb;\n\n    sb.st_size=0;\n\n    if (tmp->magic != M_IMAP)\n    {\n      tmp->new = 0;\n#ifdef USE_POP\n      if (mx_is_pop (tmp->path))\n\ttmp->magic = M_POP;\n      else\n#endif\n#ifdef USE_NOTMUCH\n      if (mx_is_notmuch (tmp->path))\n\ttmp->magic = M_NOTMUCH;\n      else\n#endif\n      if (stat (tmp->path, &sb) != 0 || (S_ISREG(sb.st_mode) && sb.st_size == 0) ||\n\t  (!tmp->magic && (tmp->magic = mx_get_magic (tmp->path)) <= 0))\n      {\n\t/* if the mailbox still doesn't exist, set the newly created flag to\n\t * be ready for when it does. */\n\ttmp->newly_created = 1;\n\ttmp->magic = 0;\n\ttmp->size = 0;\n\treturn;\n      }\n    }\n\n    /* check to see if the folder is the currently selected folder\n     * before polling */\n    if (!Context || !Context->path ||\n\t(( tmp->magic == M_IMAP || tmp->magic == M_POP || tmp->magic == M_NOTMUCH)\n\t    ? mutt_strcmp (tmp->path, Context->path) :\n\t      (sb.st_dev != contex_sb->st_dev || sb.st_ino != contex_sb->st_ino)))\n    {\n      switch (tmp->magic)\n      {\n      case M_MBOX:\n      case M_MMDF:\n#ifdef USE_SIDEBAR\n\tif (option(OPTSIDEBAR))\n\t  buffy_mbox_update (tmp, &sb);\n#endif\n\tif (buffy_mbox_hasnew (tmp, &sb) > 0)\n\t  BuffyCount++;\n\tbreak;\n\n      case M_MAILDIR:\n#ifdef USE_SIDEBAR\n\tif (option(OPTSIDEBAR))\n\t  buffy_maildir_update (tmp);\n#endif\n\tif (buffy_maildir_hasnew (tmp) > 0)\n\t  BuffyCount++;\n\tbreak;\n\n      case M_MH:\n#ifdef USE_SIDEBAR\n\tif (option(OPTSIDEBAR))\n\t  mh_buffy_update (tmp);\n#endif\n\tmh_buffy(tmp);\n\tif (tmp->new)\n\t  BuffyCount++;\n\tbreak;\n#ifdef USE_NOTMUCH\n      case M_NOTMUCH:\n\ttmp->msg_count = 0;\n\ttmp->msg_unread = 0;\n\ttmp->msg_flagged = 0;\n\tnm_nonctx_get_count(tmp->path, &tmp->msg_count, &tmp->msg_unread);\n\tif (tmp->msg_unread > 0) {\n\t  BuffyCount++;\n\t  tmp->new = 1;\n\t}\n#ifdef USE_SIDEBAR\n\tsb_set_update_time();\n#endif\n\tbreak;\n#endif\n      }\n    }\n    else if (option(OPTCHECKMBOXSIZE) && Context && Context->path)\n      tmp->size = (off_t) sb.st_size;\t/* update the size of current folder */\n\n    if (!tmp->new)\n      tmp->notified = 0;\n    else if (!tmp->notified)\n      BuffyNotify++;\n}\n\nint mutt_buffy_check (int force)\n{\n  BUFFY *tmp;\n  struct stat contex_sb;\n  time_t t;\n\n  contex_sb.st_dev=0;\n  contex_sb.st_ino=0;\n\n#ifdef USE_IMAP\n  /* update postponed count as well, on force */\n  if (force)\n    mutt_update_num_postponed ();\n#endif\n\n  /* fastest return if there are no mailboxes */\n#ifdef USE_NOTMUCH\n  if (!Incoming && !VirtIncoming)\n    return 0;\n#else\n  if (!Incoming)\n    return 0;\n#endif\n  t = time (NULL);\n  if (!force && (t - BuffyTime < BuffyTimeout))\n    return BuffyCount;\n\n  BuffyTime = t;\n  BuffyCount = 0;\n  BuffyNotify = 0;\n\n#ifdef USE_IMAP\n  BuffyCount += imap_buffy_check (force);\n#endif\n\n  /* check device ID and serial number instead of comparing paths */\n  if (!Context || Context->magic == M_IMAP || Context->magic == M_POP\n      || stat (Context->path, &contex_sb) != 0)\n  {\n    contex_sb.st_dev=0;\n    contex_sb.st_ino=0;\n  }\n\n#ifdef USE_SIDEBAR\n  if (sb_should_refresh()) {\n    for (tmp = Incoming; tmp; tmp = tmp->next)\n      buffy_check(tmp, &contex_sb);\n    sb_set_update_time();\n  }\n#else\n  for (tmp = Incoming; tmp; tmp = tmp->next)\n    buffy_check(tmp, &contex_sb);\n#endif\n\n#ifdef USE_NOTMUCH\n  for (tmp = VirtIncoming; tmp; tmp = tmp->next)\n    buffy_check(tmp, &contex_sb);\n#endif\n\n  BuffyDoneTime = BuffyTime;\n  return (BuffyCount);\n}\n\nint mutt_buffy_list (void)\n{\n  BUFFY *tmp;\n  char path[_POSIX_PATH_MAX];\n  char buffylist[2*STRING];\n  size_t pos = 0;\n  int first = 1;\n\n  int have_unnotified = BuffyNotify;\n  \n  buffylist[0] = 0;\n  pos += strlen (strncat (buffylist, _(\"New mail in \"), sizeof (buffylist) - 1 - pos)); /* __STRNCAT_CHECKED__ */\n  for (tmp = Incoming; tmp; tmp = tmp->next)\n  {\n    /* Is there new mail in this mailbox? */\n    if (!tmp->new || (have_unnotified && tmp->notified))\n      continue;\n\n    strfcpy (path, tmp->path, sizeof (path));\n    mutt_pretty_mailbox (path, sizeof (path));\n    \n    if (!first && (COLS - 7 >= 0) && (pos + strlen (path) >= (size_t)COLS - 7))\n      break;\n    \n    if (!first)\n      pos += strlen (strncat(buffylist + pos, \", \", sizeof(buffylist)-1-pos)); /* __STRNCAT_CHECKED__ */\n\n    /* Prepend an asterisk to mailboxes not already notified */\n    if (!tmp->notified)\n    {\n      /* pos += strlen (strncat(buffylist + pos, \"*\", sizeof(buffylist)-1-pos));  __STRNCAT_CHECKED__ */\n      tmp->notified = 1;\n      BuffyNotify--;\n    }\n    pos += strlen (strncat(buffylist + pos, path, sizeof(buffylist)-1-pos)); /* __STRNCAT_CHECKED__ */\n    first = 0;\n  }\n  if (!first && tmp)\n  {\n    strncat (buffylist + pos, \", ...\", sizeof (buffylist) - 1 - pos); /* __STRNCAT_CHECKED__ */\n  }\n  if (!first)\n  {\n    mutt_message (\"%s\", buffylist);\n    return (1);\n  }\n  /* there were no mailboxes needing to be notified, so clean up since \n   * BuffyNotify has somehow gotten out of sync\n   */\n  BuffyNotify = 0;\n  return (0);\n}\n\nvoid mutt_buffy_setnotified (const char *path)\n{\n  BUFFY *buffy;\n\n  buffy = buffy_get(path);\n  if (!buffy)\n    return;\n\n  buffy->notified = 1;\n  time(&buffy->last_visited);\n}\n\nint mutt_buffy_notify (void)\n{\n  if (mutt_buffy_check (0) && BuffyNotify)\n  {\n    return (mutt_buffy_list ());\n  }\n  return (0);\n}\n\n/* \n * mutt_buffy() -- incoming folders completion routine\n *\n * given a folder name, this routine gives the next incoming folder with new\n * mail.\n */\nvoid mutt_buffy (char *s, size_t slen)\n{\n  BUFFY *tmp = Incoming;\n  int pass, found = 0;\n\n  mutt_expand_path (s, slen);\n\n  if (mutt_buffy_check (0)) \n  {\n    for (pass = 0; pass < 2; pass++)\n      for (tmp = Incoming; tmp; tmp = tmp->next) \n      {\n\tmutt_expand_path (tmp->path, sizeof (tmp->path));\n\tif ((found || pass) && tmp->new) \n\t{\n\t  strfcpy (s, tmp->path, slen);\n\t  mutt_pretty_mailbox (s, slen);\n\t  return;\n\t}\n\tif (mutt_strcmp (s, tmp->path) == 0)\n\t  found = 1;\n      }\n\n    mutt_buffy_check (1); /* buffy was wrong - resync things */\n  }\n\n  /* no folders with new mail */\n  *s = '\\0';\n}\n\n#ifdef USE_NOTMUCH\nvoid mutt_buffy_vfolder (char *s, size_t slen)\n{\n  BUFFY *tmp;\n  int pass, found = 0;\n\n  if (mutt_buffy_check (0))\n  {\n    for (pass = 0; pass < 2; pass++) {\n      for (tmp = VirtIncoming; tmp; tmp = tmp->next)\n      {\n\tif ((found || pass) && tmp->new)\n\t{\n\t  strfcpy (s, tmp->desc, slen);\n\t  return;\n\t}\n\tif (mutt_strcmp (s, tmp->path) == 0)\n\t  found = 1;\n      }\n    }\n\n    mutt_buffy_check (1); /* buffy was wrong - resync things */\n  }\n\n  /* no folders with new mail */\n  *s = '\\0';\n}\n#endif\n\n/* fetch buffy object for given path, if present */\nstatic BUFFY* buffy_get (const char *path)\n{\n  BUFFY *cur;\n  char *epath;\n\n  if (!path)\n    return NULL;\n\n  epath = safe_strdup(path);\n  mutt_expand_path(epath, mutt_strlen(epath));\n\n  for (cur = Incoming; cur; cur = cur->next)\n  {\n    /* must be done late because e.g. IMAP delimiter may change */\n    mutt_expand_path (cur->path, sizeof (cur->path));\n    if (!mutt_strcmp(cur->path, path))\n    {\n      FREE (&epath);\n      return cur;\n    }\n  }\n\n  FREE (&epath);\n  return NULL;\n}\n"
  },
  {
    "path": "buffy.h",
    "content": "/* \n * Copyright (C) 1996-2000,2010,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifndef _BUFFY_H\n#define _BUFFY_H\n\n/*parameter to mutt_parse_mailboxes*/\n#define M_MAILBOXES   1\n#define M_UNMAILBOXES 2 \n\ntypedef struct buffy_t\n{\n  char path[_POSIX_PATH_MAX];\n#ifdef USE_SIDEBAR\n  char realpath[_POSIX_PATH_MAX];\n#endif\n  char *desc;\n  off_t size;\n  struct buffy_t *next;\n#ifdef USE_SIDEBAR\n  struct buffy_t *prev;\n#endif\n  short new;\t\t\t/* mailbox has new mail */\n  int msg_count;\t\t/* total number of messages */\n  int msg_unread;\t\t/* number of unread messages */\n  int msg_flagged;\t\t/* number of flagged messages */\n  short is_hidden;\t\t/* is hidden from the sidebar */\n  short notified;\t\t/* user has been notified */\n  short magic;\t\t\t/* mailbox type */\n  short newly_created;\t\t/* mbox or mmdf just popped into existence */\n  time_t last_visited;\t\t/* time of last exit from this mailbox */\n#ifdef USE_SIDEBAR\n  time_t sb_last_checked;\t/* time of last buffy check from sidebar */\n#endif\n}\nBUFFY;\n\nWHERE BUFFY *Incoming INITVAL (0);\nWHERE short BuffyTimeout INITVAL (3);\n\n#ifdef USE_NOTMUCH\nWHERE BUFFY *VirtIncoming INITVAL (0);\nvoid mutt_buffy_vfolder (char *s, size_t slen);\n#endif\n\nextern time_t BuffyDoneTime;\t/* last time we knew for sure how much mail there was */\n\nBUFFY *mutt_find_mailbox (const char *path);\nvoid mutt_update_mailbox (BUFFY * b);\n\n/* fixes up atime + mtime after mbox/mmdf mailbox was modified\n   according to stat() info taken before a modification */\nvoid mutt_buffy_cleanup (const char *buf, struct stat *st);\n\n/* mark mailbox just left as already notified */\nvoid mutt_buffy_setnotified (const char *path);\n\nvoid mh_buffy (BUFFY *);\n\n#endif /* _BUFFY_H */\n"
  },
  {
    "path": "build-release",
    "content": "#!/bin/sh --\n\n#\n# Build a mutt release.\n#\n# This used to be part of the main Makefile, but is better handled\n# by a shell script.\n#\n# Note that this script won't work for you.  I'm including it with \n# the distribution for the sake of completeness.\n#\n# Thomas Roessler <roessler@does-not-exist.org> Mon,  8 Nov 1999 22:32:41 +0100\n#\n\nset -e\n\nif test \"$1\" = \"-nodiff\" ; then\n\tdiff=no\nelse\n\tdiff=yes\nfi\n\n\n#devel=\"devel/\"\t# comment out for the stable branch\n\n# test for uncommitted changes\nif hg id | grep -q '+'\nthen\n  echo \"Uncommitted changes\"\n  exit 1\nfi\n\n# update the source\n\nhg update\n\n# Do automated security checks\n\n./check_sec.sh || exit 1\n\n# bump the version number, and calculate the tags\n\nOVERSION=\"`cat VERSION`\" \nOTAG=\"mutt-`echo $OVERSION | tr . -`-rel\" \n\necho $OVERSION | awk -F . '{printf(\"%d.%d.%d\\n\", $1, $2, $3 + 1);}' > VERSION \n${VISUAL:-vi} VERSION\n\nVERSION=\"`cat VERSION`\" \nTAG=\"mutt-`echo $VERSION | tr . -`-rel\" \n\n#echo 'const char *ReleaseDate = \"'`date +%Y-%m-%d`'\";' > reldate.h\n\n# now, prepare the distribution tar balls\n\nautomake --add-missing --copy --force-missing\ntouch configure.ac\nmake config.status\n./config.status\nmake update-doc\nmake update-changelog\n(cd po && make update-po)\n\n# build them\n\nmake dist\n\n# commit and tag the release\n\nhg commit -m \"automatic post-release commit for mutt-${VERSION}\"\n#make commit-changelog \nhg tag ${TAG}\n\n# build the diff between the two releases\n\nif test \"$diff\" = yes\nthen\n  hg diff -r ${OTAG} -r ${TAG} | gzip -9 \\\n\t\t> diff-${OVERSION}-${VERSION}.gz\nfi\n\n# sign the various files\n\n# DISTFILES=\"mutt-${VERSION}.tar.gz mutt-${VERSION}i.tar.gz diff-${OVERSION}i-${VERSION}i.gz\"\nDISTFILES=\"mutt-${VERSION}.tar.gz\"\n\nif test \"$diff\" = yes ; then\n\tDISTFILES=\"$DISTFILES diff-${OVERSION}-${VERSION}.gz\"\nfi\n\nfor f in $DISTFILES; do\n\tgpg -ba $f\n\tchmod 644 $f.asc\ndone\n\nfor f in $DISTFILES ; do\n\tscp $f $f.asc trithemius.gnupg.org:/home/ftp/mutt/${devel}\ndone\n\nhg sign -m\"mutt-${VERSION} signed\" ${TAG}\n\n# Finally, announce the new mutt to the public\n\n# mutt -s \"[Announce] mutt-${VERSION} is out\" mutt-dev@mutt.org\n\n"
  },
  {
    "path": "charset.c",
    "content": "/*\n * Copyright (C) 1999-2002,2007 Thomas Roessler <roessler@does-not-exist.org>\n *\n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n *\n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n *\n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <string.h>\n#include <stdio.h>\n#include <stdlib.h>\n\n#include <ctype.h>\n\n#include <sys/types.h>\n#include <dirent.h>\n#include <unistd.h>\n#include <errno.h>\n\n#include \"mutt.h\"\n#include \"charset.h\"\n\n#ifndef EILSEQ\n# define EILSEQ EINVAL\n#endif\n\n/* \n * The following list has been created manually from the data under:\n * http://www.isi.edu/in-notes/iana/assignments/character-sets\n * Last update: 2000-09-07\n *\n * Note that it includes only the subset of character sets for which\n * a preferred MIME name is given.\n */\n\nstatic const struct \n{\n  const char *key;\n  const char *pref;\n}\nPreferredMIMENames[] = \n{\n  { \"ansi_x3.4-1968\", \t\"us-ascii\"     \t},\n  { \"iso-ir-6\",\t\t\"us-ascii\" \t},\n  { \"iso_646.irv:1991\",\t\"us-ascii\" \t},\n  { \"ascii\",\t\t\"us-ascii\" \t},\n  { \"iso646-us\",\t\"us-ascii\" \t},\n  { \"us\",\t\t\"us-ascii\" \t},\n  { \"ibm367\",\t\t\"us-ascii\" \t},\n  { \"cp367\",\t\t\"us-ascii\" \t},\n  { \"csASCII\",\t\t\"us-ascii\" \t},\n  \n  { \"csISO2022KR\",\t\"iso-2022-kr\" \t},\n  { \"csEUCKR\",\t\t\"euc-kr\"      \t},\n  { \"csISO2022JP\",\t\"iso-2022-jp\"\t},\n  { \"csISO2022JP2\",\t\"iso-2022-jp-2\" },\n\n  { \"ISO_8859-1:1987\",\t\"iso-8859-1\"\t},\n  { \"iso-ir-100\",\t\"iso-8859-1\"\t},\n  { \"iso_8859-1\",\t\"iso-8859-1\"\t},\n  { \"latin1\",\t\t\"iso-8859-1\"\t},\n  { \"l1\",\t\t\"iso-8859-1\"\t},\n  { \"IBM819\",\t\t\"iso-8859-1\"\t},\n  { \"CP819\",\t\t\"iso-8859-1\"\t},\n  { \"csISOLatin1\",\t\"iso-8859-1\"\t},\n  \n  { \"ISO_8859-2:1987\",\t\"iso-8859-2\"\t},\n  { \"iso-ir-101\",\t\"iso-8859-2\"\t},\n  { \"iso_8859-2\",\t\"iso-8859-2\"\t},\n  { \"latin2\",\t\t\"iso-8859-2\"\t},\n  { \"l2\",\t\t\"iso-8859-2\"\t},\n  { \"csISOLatin2\",\t\"iso-8859-2\"\t},\n  \n  { \"ISO_8859-3:1988\",\t\"iso-8859-3\"\t},\n  { \"iso-ir-109\",\t\"iso-8859-3\"\t},\n  { \"ISO_8859-3\",\t\"iso-8859-3\"\t},\n  { \"latin3\",\t\t\"iso-8859-3\"\t},\n  { \"l3\",\t\t\"iso-8859-3\"\t},\n  { \"csISOLatin3\",\t\"iso-8859-3\"\t},\n\n  { \"ISO_8859-4:1988\",\t\"iso-8859-4\"\t},\n  { \"iso-ir-110\",\t\"iso-8859-4\"\t},\n  { \"ISO_8859-4\",\t\"iso-8859-4\"\t},\n  { \"latin4\",\t\t\"iso-8859-4\"\t},\n  { \"l4\",\t\t\"iso-8859-4\"\t},\n  { \"csISOLatin4\",\t\"iso-8859-4\"\t},\n\n  { \"ISO_8859-6:1987\",\t\"iso-8859-6\"\t},\n  { \"iso-ir-127\",\t\"iso-8859-6\"\t},\n  { \"iso_8859-6\",\t\"iso-8859-6\"\t},\n  { \"ECMA-114\",\t\t\"iso-8859-6\"\t},\n  { \"ASMO-708\",\t\t\"iso-8859-6\"\t},\n  { \"arabic\",\t\t\"iso-8859-6\"\t},\n  { \"csISOLatinArabic\",\t\"iso-8859-6\"\t},\n  \n  { \"ISO_8859-7:1987\",\t\"iso-8859-7\"\t},\n  { \"iso-ir-126\",\t\"iso-8859-7\"\t},\n  { \"ISO_8859-7\",\t\"iso-8859-7\"\t},\n  { \"ELOT_928\",\t\t\"iso-8859-7\"\t},\n  { \"ECMA-118\",\t\t\"iso-8859-7\"\t},\n  { \"greek\",\t\t\"iso-8859-7\"\t},\n  { \"greek8\",\t\t\"iso-8859-7\"\t},\n  { \"csISOLatinGreek\",\t\"iso-8859-7\"\t},\n  \n  { \"ISO_8859-8:1988\",\t\"iso-8859-8\"\t},\n  { \"iso-ir-138\",\t\"iso-8859-8\"\t},\n  { \"ISO_8859-8\",\t\"iso-8859-8\"\t},\n  { \"hebrew\",\t\t\"iso-8859-8\"\t},\n  { \"csISOLatinHebrew\",\t\"iso-8859-8\"\t},\n\n  { \"ISO_8859-5:1988\",\t\"iso-8859-5\"\t},\n  { \"iso-ir-144\",\t\"iso-8859-5\"\t},\n  { \"ISO_8859-5\",\t\"iso-8859-5\"\t},\n  { \"cyrillic\",\t\t\"iso-8859-5\"\t},\n  { \"csISOLatinCyrillic\", \"iso-8859-5\"\t},\n\n  { \"ISO_8859-9:1989\",\t\"iso-8859-9\"\t},\n  { \"iso-ir-148\",\t\"iso-8859-9\"\t},\n  { \"ISO_8859-9\",\t\"iso-8859-9\"\t},\n  { \"latin5\",\t\t\"iso-8859-9\"\t}, /* this is not a bug */\n  { \"l5\",\t\t\"iso-8859-9\"\t},\n  { \"csISOLatin5\",\t\"iso-8859-9\"\t},\n  \n  { \"ISO_8859-10:1992\",\t\"iso-8859-10\"\t},\n  { \"iso-ir-157\",\t\"iso-8859-10\"\t},\n  { \"latin6\",\t\t\"iso-8859-10\"\t}, /* this is not a bug */\n  { \"l6\",\t\t\"iso-8859-10\"\t},\n  { \"csISOLatin6\",\t\"iso-8859-10\"\t}, \n  \n  { \"csKOI8r\",\t\t\"koi8-r\"\t},\n  \n  { \"MS_Kanji\",\t\t\"Shift_JIS\"\t}, /* Note the underscore! */\n  { \"csShiftJis\",\t\"Shift_JIS\"\t},\n  \n  { \"Extended_UNIX_Code_Packed_Format_for_Japanese\",\n      \t\t\t\"euc-jp\"\t},\n  { \"csEUCPkdFmtJapanese\", \n      \t\t\t\"euc-jp\"\t},\n  \n  { \"csGB2312\",\t\t\"gb2312\"\t},\n  { \"csbig5\",\t\t\"big5\"\t\t},\n\n  /* \n   * End of official brain damage.  What follows has been taken\n   * from glibc's localedata files. \n   */\n\n  { \"iso_8859-13\",\t\"iso-8859-13\"\t},\n  { \"iso-ir-179\",\t\"iso-8859-13\"\t},\n  { \"latin7\",\t\t\"iso-8859-13\"\t}, /* this is not a bug */\n  { \"l7\",\t\t\"iso-8859-13\"\t},\n  \n  { \"iso_8859-14\",\t\"iso-8859-14\"\t},\n  { \"latin8\",\t\t\"iso-8859-14\"\t}, /* this is not a bug */\n  { \"l8\",\t\t\"iso-8859-14\"\t},\n\n  { \"iso_8859-15\",\t\"iso-8859-15\"\t},\n  { \"latin9\",\t\t\"iso-8859-15\"\t}, /* this is not a bug */\n\n  /* Suggested by Ionel Mugurel Ciobica <tgakic@sg10.chem.tue.nl> */\n  { \"latin0\",           \"iso-8859-15\"   }, /* this is not a bug */\n  \n  { \"iso_8859-16\",      \"iso-8859-16\"   },\n  { \"latin10\",          \"iso-8859-16\"   }, /* this is not a bug */\n  \n  /* \n   * David Champion <dgc@uchicago.edu> has observed this with\n   * nl_langinfo under SunOS 5.8. \n   */\n  \n  { \"646\",\t\t\"us-ascii\"\t},\n  \n  /* \n   * http://www.sun.com/software/white-papers/wp-unicode/\n   */\n\n  { \"eucJP\",\t\t\"euc-jp\"\t},\n  { \"PCK\",\t\t\"Shift_JIS\"\t},\n  { \"ko_KR-euc\",\t\"euc-kr\"\t},\n  { \"zh_TW-big5\",\t\"big5\"\t\t},\n\n  /* seems to be common on some systems */\n\n  { \"sjis\",\t\t\"Shift_JIS\"\t},\n  { \"euc-jp-ms\",\t\"eucJP-ms\"\t},\n\n\n  /*\n   * If you happen to encounter system-specific brain-damage with\n   * respect to character set naming, please add it above this\n   * comment, and submit a patch to <mutt-dev@mutt.org>. \n   */\n  \n  /* End of aliases.  Please keep this line last. */\n  \n  { NULL, \t\tNULL\t\t}\n};\n\n#ifdef HAVE_LANGINFO_CODESET\n# include <langinfo.h>\n\n\nvoid mutt_set_langinfo_charset (void)\n{\n  char buff[LONG_STRING];\n  char buff2[LONG_STRING];\n  \n  strfcpy (buff, nl_langinfo (CODESET), sizeof (buff));\n  mutt_canonical_charset (buff2, sizeof (buff2), buff);\n  \n  /* finally, set $charset */\n  if (!(Charset = safe_strdup (buff2)))\n    Charset = safe_strdup (\"iso-8859-1\");\n}\n\n#else\n\nvoid mutt_set_langinfo_charset (void)\n{\n  Charset = safe_strdup (\"iso-8859-1\");\n}\n\n#endif\n\n/* this first ties off any charset extension such as //TRANSLIT,\n   canonicalizes the charset and re-adds the extension */\nvoid mutt_canonical_charset (char *dest, size_t dlen, const char *name)\n{\n  size_t i;\n  char *p, *ext;\n  char in[LONG_STRING], scratch[LONG_STRING];\n\n  strfcpy (in, name, sizeof (in));\n  if ((ext = strchr (in, '/')))\n    *ext++ = 0;\n\n  if (!ascii_strcasecmp (in, \"utf-8\") || !ascii_strcasecmp (in, \"utf8\"))\n  {\n    strfcpy (dest, \"utf-8\", dlen);\n    goto out;\n  }\n\n  /* catch some common iso-8859-something misspellings */\n  if (!ascii_strncasecmp (in, \"8859\", 4) && in[4] != '-')\n    snprintf (scratch, sizeof (scratch), \"iso-8859-%s\", in +4);\n  else if (!ascii_strncasecmp (in, \"8859-\", 5))\n    snprintf (scratch, sizeof (scratch), \"iso-8859-%s\", in + 5);\n  else if (!ascii_strncasecmp (in, \"iso8859\", 7) && in[7] != '-')\n    snprintf (scratch, sizeof (scratch), \"iso_8859-%s\", in + 7);\n  else if (!ascii_strncasecmp (in, \"iso8859-\", 8))\n    snprintf (scratch, sizeof (scratch), \"iso_8859-%s\", in + 8);\n  else\n    strfcpy (scratch, in, sizeof (scratch));\n\n  for (i = 0; PreferredMIMENames[i].key; i++)\n    if (!ascii_strcasecmp (scratch, PreferredMIMENames[i].key) ||\n\t!mutt_strcasecmp (scratch, PreferredMIMENames[i].key))\n    {\n      strfcpy (dest, PreferredMIMENames[i].pref, dlen);\n      goto out;\n    }\n\n  strfcpy (dest, scratch, dlen);\n\n  /* for cosmetics' sake, transform to lowercase. */\n  for (p = dest; *p; p++)\n    *p = ascii_tolower (*p);\n\nout:\n  if (ext && *ext)\n  {\n    safe_strcat (dest, dlen, \"/\");\n    safe_strcat (dest, dlen, ext);\n  }\n}\n\nint mutt_chscmp (const char *s, const char *chs)\n{\n  char buffer[STRING];\n  int a, b;\n\n  if (!s) return 0;\n\n  /* charsets may have extensions mutt_canonical_charset()\n     leaves intact; we expect `chs' to originate from mutt\n     code, not user input (i.e. `chs' does _not_ have any\n     extension)\n     we simply check if the shorter string is a prefix for\n     the longer */\n  mutt_canonical_charset (buffer, sizeof (buffer), s);\n  a = mutt_strlen (buffer);\n  b = mutt_strlen (chs);\n  return !ascii_strncasecmp (a > b ? buffer : chs,\n\t\t\t     a > b ? chs : buffer, MIN(a,b));\n}\n\nchar *mutt_get_default_charset ()\n{\n  static char fcharset[SHORT_STRING];\n  const char *c = AssumedCharset;\n  const char *c1;\n\n  if (c && *c) {\n    c1 = strchr (c, ':');\n    strfcpy (fcharset, c, c1 ? (c1 - c + 1) : sizeof (fcharset));\n    return fcharset;\n  }\n  return strcpy (fcharset, \"us-ascii\"); /* __STRCPY_CHECKED__ */\n}\n\n#ifndef HAVE_ICONV\n\niconv_t iconv_open (const char *tocode, const char *fromcode)\n{\n  return (iconv_t)(-1);\n}\n\nsize_t iconv (iconv_t cd, ICONV_CONST char **inbuf, size_t *inbytesleft,\n\t      char **outbuf, size_t *outbytesleft)\n{\n  return 0;\n}\n\nint iconv_close (iconv_t cd)\n{\n  return 0;\n}\n\n#endif /* !HAVE_ICONV */\n\n\n/*\n * Like iconv_open, but canonicalises the charsets, applies\n * charset-hooks, recanonicalises, and finally applies iconv-hooks.\n * Parameter flags=0 skips charset-hooks, while M_ICONV_HOOK_FROM\n * applies them to fromcode. Callers should use flags=0 when fromcode\n * can safely be considered true, either some constant, or some value\n * provided by the user; M_ICONV_HOOK_FROM should be used only when\n * fromcode is unsure, taken from a possibly wrong incoming MIME label,\n * or such. Misusing M_ICONV_HOOK_FROM leads to unwanted interactions\n * in some setups. Note: By design charset-hooks should never be, and\n * are never, applied to tocode. Highlight note: The top-well-named\n * M_ICONV_HOOK_FROM acts on charset-hooks, not at all on iconv-hooks.\n */\n\niconv_t mutt_iconv_open (const char *tocode, const char *fromcode, int flags)\n{\n  char tocode1[SHORT_STRING];\n  char fromcode1[SHORT_STRING];\n  char *tocode2, *fromcode2;\n  char *tmp;\n\n  iconv_t cd;\n\n  /* transform to MIME preferred charset names */\n  mutt_canonical_charset (tocode1, sizeof (tocode1), tocode);\n  mutt_canonical_charset (fromcode1, sizeof (fromcode1), fromcode);\n\n  /* maybe apply charset-hooks and recanonicalise fromcode,\n   * but only when caller asked us to sanitize a potentialy wrong\n   * charset name incoming from the wild exterior. */\n  if ((flags & M_ICONV_HOOK_FROM) && (tmp = mutt_charset_hook (fromcode1)))\n    mutt_canonical_charset (fromcode1, sizeof (fromcode1), tmp);\n\n  /* always apply iconv-hooks to suit system's iconv tastes */\n  tocode2 = mutt_iconv_hook (tocode1);\n  tocode2 = (tocode2) ? tocode2 : tocode1;\n  fromcode2 = mutt_iconv_hook (fromcode1);\n  fromcode2 = (fromcode2) ? fromcode2 : fromcode1;\n\n  /* call system iconv with names it appreciates */\n  if ((cd = iconv_open (tocode2, fromcode2)) != (iconv_t) -1)\n    return cd;\n  \n  return (iconv_t) -1;\n}\n\n\n/*\n * Like iconv, but keeps going even when the input is invalid\n * If you're supplying inrepls, the source charset should be stateless;\n * if you're supplying an outrepl, the target charset should be.\n */\n\nsize_t mutt_iconv (iconv_t cd, ICONV_CONST char **inbuf, size_t *inbytesleft,\n\t\t   char **outbuf, size_t *outbytesleft,\n\t\t   ICONV_CONST char **inrepls, const char *outrepl)\n{\n  size_t ret = 0, ret1;\n  ICONV_CONST char *ib = *inbuf;\n  size_t ibl = *inbytesleft;\n  char *ob = *outbuf;\n  size_t obl = *outbytesleft;\n\n  for (;;)\n  {\n    ret1 = iconv (cd, &ib, &ibl, &ob, &obl);\n    if (ret1 != (size_t)-1)\n      ret += ret1;\n    if (ibl && obl && errno == EILSEQ)\n    {\n      if (inrepls)\n      {\n\t/* Try replacing the input */\n\tICONV_CONST char **t;\n\tfor (t = inrepls; *t; t++)\n\t{\n\t  ICONV_CONST char *ib1 = *t;\n\t  size_t ibl1 = strlen (*t);\n\t  char *ob1 = ob;\n\t  size_t obl1 = obl;\n\t  iconv (cd, &ib1, &ibl1, &ob1, &obl1);\n\t  if (!ibl1)\n\t  {\n\t    ++ib, --ibl;\n\t    ob = ob1, obl = obl1;\n\t    ++ret;\n\t    break;\n\t  }\n\t}\n\tif (*t)\n\t  continue;\n      }\n      /* Replace the output */\n      if (!outrepl)\n\toutrepl = \"?\";\n      iconv (cd, 0, 0, &ob, &obl);\n      if (obl)\n      {\n\tint n = strlen (outrepl);\n\tif (n > obl)\n\t{\n\t  outrepl = \"?\";\n\t  n = 1;\n\t}\n\tmemcpy (ob, outrepl, n);\n\t++ib, --ibl;\n\tob += n, obl -= n;\n\t++ret;\n\ticonv (cd, 0, 0, 0, 0); /* for good measure */\n\tcontinue;\n      }\n    }\n    *inbuf = ib, *inbytesleft = ibl;\n    *outbuf = ob, *outbytesleft = obl;\n    return ret;\n  }\n}\n\n\n/*\n * Convert a string\n * Used in rfc2047.c, rfc2231.c, crypt-gpgme.c, mutt_idna.c, and more.\n * Parameter flags is given as-is to mutt_iconv_open(). See there\n * for its meaning and usage policy.\n */\n\nint mutt_convert_string (char **ps, const char *from, const char *to, int flags)\n{\n  iconv_t cd;\n  ICONV_CONST char *repls[] = { \"\\357\\277\\275\", \"?\", 0 };\n  char *s = *ps;\n\n  if (!s || !*s)\n    return 0;\n\n  if (to && from && (cd = mutt_iconv_open (to, from, flags)) != (iconv_t)-1)\n  {\n    int len;\n    ICONV_CONST char *ib;\n    char *buf, *ob;\n    size_t ibl, obl;\n    ICONV_CONST char **inrepls = 0;\n    char *outrepl = 0;\n\n    if (mutt_is_utf8 (to))\n      outrepl = \"\\357\\277\\275\";\n    else if (mutt_is_utf8 (from))\n      inrepls = repls;\n    else\n      outrepl = \"?\";\n      \n    len = strlen (s);\n    ib = s, ibl = len + 1;\n    obl = MB_LEN_MAX * ibl;\n    ob = buf = safe_malloc (obl + 1);\n    \n    mutt_iconv (cd, &ib, &ibl, &ob, &obl, inrepls, outrepl);\n    iconv_close (cd);\n\n    *ob = '\\0';\n\n    FREE (ps);\t\t/* __FREE_CHECKED__ */\n    *ps = buf;\n    \n    mutt_str_adjust (ps);\n    return 0;\n  }\n  else\n    return -1;\n}\n\n\n/*\n * FGETCONV stuff for converting a file while reading it\n * Used in sendlib.c for converting from mutt's Charset\n */\n\nstruct fgetconv_s\n{\n  FILE *file;\n  iconv_t cd;\n  char bufi[512];\n  char bufo[512];\n  char *p;\n  char *ob;\n  char *ib;\n  size_t ibl;\n  ICONV_CONST char **inrepls;\n};\n\nstruct fgetconv_not\n{\n  FILE *file;\n  iconv_t cd;\n};\n\n/*\n * Parameter flags is given as-is to mutt_iconv_open(). See there\n * for its meaning and usage policy.\n */\nFGETCONV *fgetconv_open (FILE *file, const char *from, const char *to, int flags)\n{\n  struct fgetconv_s *fc;\n  iconv_t cd = (iconv_t)-1;\n  static ICONV_CONST char *repls[] = { \"\\357\\277\\275\", \"?\", 0 };\n\n  if (from && to)\n    cd = mutt_iconv_open (to, from, flags);\n\n  if (cd != (iconv_t)-1)\n  {\n    fc = safe_malloc (sizeof (struct fgetconv_s));\n    fc->p = fc->ob = fc->bufo;\n    fc->ib = fc->bufi;\n    fc->ibl = 0;\n    fc->inrepls = mutt_is_utf8 (to) ? repls : repls + 1;\n  }\n  else\n    fc = safe_malloc (sizeof (struct fgetconv_not));\n  fc->file = file;\n  fc->cd = cd;\n  return (FGETCONV *)fc;\n}\n\nchar *fgetconvs (char *buf, size_t l, FGETCONV *_fc)\n{\n  int c;\n  size_t r;\n  \n  for (r = 0; r + 1 < l;)\n  {\n    if ((c = fgetconv (_fc)) == EOF)\n      break;\n    buf[r++] = (char) c;\n    if (c == '\\n') \n      break;\n  }\n  buf[r] = '\\0';\n  \n  if (r) \n    return buf;\n  else \n    return NULL;\n}\n\nint fgetconv (FGETCONV *_fc)\n{\n  struct fgetconv_s *fc = (struct fgetconv_s *)_fc;\n\n  if (!fc)\n    return EOF;\n  if (fc->cd == (iconv_t)-1)\n    return fgetc (fc->file);\n  if (!fc->p)\n    return EOF;\n  if (fc->p < fc->ob)\n    return (unsigned char)*(fc->p)++;\n\n  /* Try to convert some more */\n  fc->p = fc->ob = fc->bufo;\n  if (fc->ibl)\n  {\n    size_t obl = sizeof (fc->bufo);\n    iconv (fc->cd, (ICONV_CONST char **)&fc->ib, &fc->ibl, &fc->ob, &obl);\n    if (fc->p < fc->ob)\n      return (unsigned char)*(fc->p)++;\n  }\n\n  /* If we trusted iconv a bit more, we would at this point\n   * ask why it had stopped converting ... */\n\n  /* Try to read some more */\n  if (fc->ibl == sizeof (fc->bufi) ||\n      (fc->ibl && fc->ib + fc->ibl < fc->bufi + sizeof (fc->bufi)))\n  {\n    fc->p = 0;\n    return EOF;\n  }\n  if (fc->ibl)\n    memcpy (fc->bufi, fc->ib, fc->ibl);\n  fc->ib = fc->bufi;\n  fc->ibl += fread (fc->ib + fc->ibl, 1, sizeof (fc->bufi) - fc->ibl, fc->file);\n\n  /* Try harder this time to convert some */\n  if (fc->ibl)\n  {\n    size_t obl = sizeof (fc->bufo);\n    mutt_iconv (fc->cd, (ICONV_CONST char **)&fc->ib, &fc->ibl, &fc->ob, &obl,\n\t\tfc->inrepls, 0);\n    if (fc->p < fc->ob)\n      return (unsigned char)*(fc->p)++;\n  }\n\n  /* Either the file has finished or one of the buffers is too small */\n  fc->p = 0;\n  return EOF;\n}\n\nvoid fgetconv_close (FGETCONV **_fc)\n{\n  struct fgetconv_s *fc = (struct fgetconv_s *) *_fc;\n\n  if (fc->cd != (iconv_t)-1)\n    iconv_close (fc->cd);\n  FREE (_fc);\t\t/* __FREE_CHECKED__ */\n}\n\nint mutt_check_charset (const char *s, int strict)\n{\n  int i;\n  iconv_t cd;\n\n  if (mutt_is_utf8 (s))\n    return 0;\n\n  if (!strict)\n    for (i = 0; PreferredMIMENames[i].key; i++)\n    {\n      if (ascii_strcasecmp (PreferredMIMENames[i].key, s) == 0 ||\n\t  ascii_strcasecmp (PreferredMIMENames[i].pref, s) == 0)\n\treturn 0;\n    }\n\n  if ((cd = mutt_iconv_open (s, s, 0)) != (iconv_t)(-1))\n  {\n    iconv_close (cd);\n    return 0;\n  }\n\n  return -1;\n}\n"
  },
  {
    "path": "charset.h",
    "content": "/*\n * Copyright (C) 1999-2003 Thomas Roessler <roessler@does-not-exist.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifndef _CHARSET_H\n#define _CHARSET_H\n\n#ifdef HAVE_ICONV_H\n#include <iconv.h>\n#endif\n\n#ifndef HAVE_ICONV_T_DEF\ntypedef void *iconv_t;\n#endif\n\n#ifndef HAVE_ICONV\n#define ICONV_CONST /**/\niconv_t iconv_open (const char *, const char *);\nsize_t iconv (iconv_t, ICONV_CONST char **, size_t *, char **, size_t *);\nint iconv_close (iconv_t);\n#endif\n\nint mutt_convert_string (char **, const char *, const char *, int);\n\niconv_t mutt_iconv_open (const char *, const char *, int);\nsize_t mutt_iconv (iconv_t, ICONV_CONST char **, size_t *, char **, size_t *, ICONV_CONST char **, const char *);\n\ntypedef void * FGETCONV;\n\nFGETCONV *fgetconv_open (FILE *, const char *, const char *, int);\nint fgetconv (FGETCONV *);\nchar * fgetconvs (char *, size_t, FGETCONV *);\nvoid fgetconv_close (FGETCONV **);\n\nvoid mutt_set_langinfo_charset (void);\nchar *mutt_get_default_charset (void);\n\n/* flags for charset.c:mutt_convert_string(), fgetconv_open(), and\n * mutt_iconv_open(). Note that applying charset-hooks to tocode is\n * never needed, and sometimes hurts: Hence there is no M_ICONV_HOOK_TO\n * flag.\n */\n#define M_ICONV_HOOK_FROM 1\t/* apply charset-hooks to fromcode */\n\n/* Check if given character set is valid (either officially assigned or\n * known to local iconv implementation). If strict is non-zero, check\n * against iconv only. Returns 0 if known and negative otherwise.\n */\nint mutt_check_charset (const char *s, int strict);\n\n#endif /* _CHARSET_H */\n"
  },
  {
    "path": "check_sec.sh",
    "content": "#!/bin/sh --\n\n#\n# grep for some things which may look like security problems.\n#\n\nTMPFILE=\"`mktemp check_sec.tmp.XXXXXX`\" || exit 1\n\nRV=0;\n\ndo_check_files ()\n{\n\tpattern=\"$1\" ; shift\n\tmagic=\"$1\" ; shift\n\tmsg=\"$1\" ; shift\n\tegrep -n \"$pattern\" \"$@\"        \t| \\\n\t\tgrep -v '^[^\t ]*:[^ \t]*#' \t| \\\n\t\tfgrep -v \"$magic\" > $TMPFILE\n\n\ttest -s $TMPFILE && {\n\t\techo \"$msg\" ;\n\t\tcat $TMPFILE;\n\t\trm -f $TMPFILE;\n\t\tRV=1;\n\t}\n}\n\ndo_check ()\n{\n\tdo_check_files \"$1\" \"$2\" \"$3\" `find . -path ./intl -prune -o -name '*.c' -print`\n}\n\ndo_check '\\<fopen.*'\\\"'.*w' __FOPEN_CHECKED__ \"Alert: Unchecked fopen calls.\"\ndo_check '\\<fclose.*'\\\"'.*w' __FCLOSE_CHECKED__ \"Alert: Unchecked fclose calls.\"\ndo_check '\\<(mutt_)?strcpy' __STRCPY_CHECKED__ \"Alert: Unchecked strcpy calls.\"\ndo_check '\\<strcat' __STRCAT_CHECKED__ \"Alert: Unchecked strcat calls.\"\ndo_check '\\<sprintf.*%s' __SPRINTF_CHECKED__ \"Alert: Unchecked sprintf calls.\"\ndo_check '\\<strncat' __STRNCAT_CHECKED__ \"You probably meant safe_strcat here.\"\ndo_check '\\<safe_free' __SAFE_FREE_CHECKED__ \"You probably meant FREE here.\"\ndo_check '\\<FREE[ ]?\\([^&]' __FREE_CHECKED__ \"You probably meant FREE(&...) here.\"\n\n# don't do this check on others' code.\ndo_check_files '\\<(malloc|realloc|free|strdup)[ \t]*\\(' __MEM_CHECKED__ \"Alert: Use of traditional memory management calls.\" \\\n\t*.c imap/*.c\n\nrm -f $TMPFILE\nexit $RV\n"
  },
  {
    "path": "color.c",
    "content": "/*\n * Copyright (C) 1996-2002,2012 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mapping.h\"\n\n#include <string.h>\n#include <stdlib.h>\n#include <ctype.h>\n\n/* globals */\nint *ColorQuote;\nint ColorQuoteUsed;\nint ColorDefs[MT_COLOR_MAX];\nCOLOR_LINE *ColorHdrList = NULL;\nCOLOR_LINE *ColorBodyList = NULL;\nCOLOR_LINE *ColorStatusList = NULL;\nCOLOR_LINE *ColorIndexList = NULL;\nCOLOR_LINE *ColorIndexAuthorList = NULL;\nCOLOR_LINE *ColorIndexFlagsList = NULL;\nCOLOR_LINE *ColorIndexSubjectList = NULL;\n#ifdef USE_NOTMUCH\nCOLOR_LINE *ColorIndexTagList = NULL;\n#endif\n\n/* local to this file */\nstatic int ColorQuoteSize;\n\n#ifdef HAVE_COLOR\n\n#define COLOR_DEFAULT (-2)\n\ntypedef struct color_list\n{\n  short fg;\n  short bg;\n  short index;\n  short count;\n  struct color_list *next;\n} COLOR_LIST;\n\nstatic COLOR_LIST *ColorList = NULL;\nstatic int UserColors = 0;\n\nstatic const struct mapping_t Colors[] =\n{\n  { \"black\",\tCOLOR_BLACK },\n  { \"blue\",\tCOLOR_BLUE },\n  { \"cyan\",\tCOLOR_CYAN },\n  { \"green\",\tCOLOR_GREEN },\n  { \"magenta\",\tCOLOR_MAGENTA },\n  { \"red\",\tCOLOR_RED },\n  { \"white\",\tCOLOR_WHITE },\n  { \"yellow\",\tCOLOR_YELLOW },\n#if defined (USE_SLANG_CURSES) || defined (HAVE_USE_DEFAULT_COLORS)\n  { \"default\",\tCOLOR_DEFAULT },\n#endif\n  { 0, 0 }\n};\n\n#endif /* HAVE_COLOR */\n\nstatic const struct mapping_t Fields[] =\n{\n  { \"hdrdefault\",\tMT_COLOR_HDEFAULT },\n  { \"quoted\",\t\tMT_COLOR_QUOTED },\n  { \"signature\",\tMT_COLOR_SIGNATURE },\n  { \"indicator\",\tMT_COLOR_INDICATOR },\n  { \"status\",\t\tMT_COLOR_STATUS },\n  { \"tree\",\t\tMT_COLOR_TREE },\n  { \"error\",\t\tMT_COLOR_ERROR },\n  { \"normal\",\t\tMT_COLOR_NORMAL },\n  { \"tilde\",\t\tMT_COLOR_TILDE },\n  { \"markers\",\t\tMT_COLOR_MARKERS },\n  { \"header\",\t\tMT_COLOR_HEADER },\n  { \"body\",\t\tMT_COLOR_BODY },\n  { \"message\",\t\tMT_COLOR_MESSAGE },\n  { \"attachment\",\tMT_COLOR_ATTACHMENT },\n  { \"search\",\t\tMT_COLOR_SEARCH },\n  { \"bold\",\t\tMT_COLOR_BOLD },\n  { \"underline\",\tMT_COLOR_UNDERLINE },\n  { \"index\",\t\tMT_COLOR_INDEX },\n  { \"progress\",\t\tMT_COLOR_PROGRESS },\n  { \"index_author\",\tMT_COLOR_INDEX_AUTHOR },\n  { \"index_collapsed\",\tMT_COLOR_INDEX_COLLAPSED },\n  { \"index_date\",\tMT_COLOR_INDEX_DATE },\n  { \"index_flags\",\tMT_COLOR_INDEX_FLAGS },\n  { \"index_label\",\tMT_COLOR_INDEX_LABEL },\n  { \"index_number\",\tMT_COLOR_INDEX_NUMBER },\n  { \"index_size\",\tMT_COLOR_INDEX_SIZE },\n  { \"index_subject\",\tMT_COLOR_INDEX_SUBJECT },\n#ifdef USE_NOTMUCH\n  { \"index_tag\",\tMT_COLOR_INDEX_TAG },\n  { \"index_tags\",\tMT_COLOR_INDEX_TAGS },\n#endif\n  { \"prompt\",\t\tMT_COLOR_PROMPT },\n#ifdef USE_SIDEBAR\n  { \"sidebar_divider\",\tMT_COLOR_DIVIDER },\n  { \"sidebar_flagged\",\tMT_COLOR_FLAGGED },\n  { \"sidebar_highlight\",MT_COLOR_HIGHLIGHT },\n  { \"sidebar_indicator\",MT_COLOR_SB_INDICATOR },\n  { \"sidebar_new\",\tMT_COLOR_NEW },\n  { \"sidebar_spoolfile\",MT_COLOR_SB_SPOOLFILE },\n#endif\n  { NULL,\t\t0 }\n};\n\n#define COLOR_QUOTE_INIT\t8\n\nstatic COLOR_LINE *mutt_new_color_line (void)\n{\n  COLOR_LINE *p = safe_calloc (1, sizeof (COLOR_LINE));\n\n  p->fg = p->bg = -1;\n  \n  return (p);\n}\n\nstatic void mutt_free_color_line(COLOR_LINE **l, \n\t\t\t\t int free_colors)\n{\n  COLOR_LINE *tmp;\n \n  if(!l || !*l)\n    return;\n\n  tmp = *l;\n\n#ifdef HAVE_COLOR\n  if(free_colors && tmp->fg != -1 && tmp->bg != -1)\n    mutt_free_color(tmp->fg, tmp->bg);\n#endif\n\n  /* we should really introduce a container\n   * type for regular expressions.\n   */\n  \n  regfree(&tmp->rx);\n  mutt_pattern_free(&tmp->color_pattern);\n  FREE (&tmp->pattern);\n  FREE (l);\t\t/* __FREE_CHECKED__ */\n}\n\nvoid ci_start_color (void)\n{\n  memset (ColorDefs, A_NORMAL, sizeof (int) * MT_COLOR_MAX);\n  ColorQuote = (int *) safe_malloc (COLOR_QUOTE_INIT * sizeof (int));\n  memset (ColorQuote, A_NORMAL, sizeof (int) * COLOR_QUOTE_INIT);\n  ColorQuoteSize = COLOR_QUOTE_INIT;\n  ColorQuoteUsed = 0;\n\n  /* set some defaults */\n  ColorDefs[MT_COLOR_STATUS] = A_REVERSE;\n  ColorDefs[MT_COLOR_INDICATOR] = A_REVERSE;\n  ColorDefs[MT_COLOR_SEARCH] = A_REVERSE;\n  ColorDefs[MT_COLOR_MARKERS] = A_REVERSE;\n#ifdef USE_SIDEBAR\n  ColorDefs[MT_COLOR_HIGHLIGHT] = A_UNDERLINE;\n#endif\n  /* special meaning: toggle the relevant attribute */\n  ColorDefs[MT_COLOR_BOLD] = 0;\n  ColorDefs[MT_COLOR_UNDERLINE] = 0;\n\n#ifdef HAVE_COLOR\n  start_color ();\n#endif\n}\n\n#ifdef HAVE_COLOR\n\n#ifdef USE_SLANG_CURSES\nstatic char *get_color_name (char *dest, size_t destlen, int val)\n{\n  static const char * const missing[3] = {\"brown\", \"lightgray\", \"default\"};\n  int i;\n\n  switch (val)\n  {\n    case COLOR_YELLOW:\n      strfcpy (dest, missing[0], destlen);\n      return dest;\n\n    case COLOR_WHITE:\n      strfcpy (dest, missing[1], destlen);\n      return dest;\n      \n    case COLOR_DEFAULT:\n      strfcpy (dest, missing[2], destlen);\n      return dest;\n  }\n\n  for (i = 0; Colors[i].name; i++)\n  {\n    if (Colors[i].value == val)\n    {\n      strfcpy (dest, Colors[i].name, destlen);\n      return dest;\n    }\n  }\n\n  /* Sigh. If we got this far, the color is of the form 'colorN'\n   * Slang can handle this itself, so just return 'colorN'\n   */\n\n  snprintf (dest, destlen, \"color%d\", val);\n  return dest;\n}\n#endif\n\nint mutt_alloc_color (int fg, int bg)\n{\n  COLOR_LIST *p = ColorList;\n  int i;\n  \n#if defined (USE_SLANG_CURSES)\n  char fgc[SHORT_STRING], bgc[SHORT_STRING];\n#endif\n\n  /* check to see if this color is already allocated to save space */\n  while (p)\n  {\n    if (p->fg == fg && p->bg == bg)\n    {\n      (p->count)++;\n      return (COLOR_PAIR (p->index));\n    }\n    p = p->next;\n  }\n\n  /* check to see if there are colors left */\n  if (++UserColors > COLOR_PAIRS) return (A_NORMAL);\n\n  /* find the smallest available index (object) */\n  i = 1;\n  FOREVER\n  {\n    p = ColorList;\n    while (p)\n    {\n      if (p->index == i) break;\n      p = p->next;\n    }\n    if (p == NULL) break;\n    i++;\n  }\n\n  p = (COLOR_LIST *) safe_malloc (sizeof (COLOR_LIST));\n  p->next = ColorList;\n  ColorList = p;\n\n  p->index = i;\n  p->count = 1;\n  p->bg = bg;\n  p->fg = fg;\n\n#if defined (USE_SLANG_CURSES)\n  if (fg == COLOR_DEFAULT || bg == COLOR_DEFAULT)\n    SLtt_set_color (i, NULL, get_color_name (fgc, sizeof (fgc), fg), get_color_name (bgc, sizeof (bgc), bg));\n  else\n#elif defined (HAVE_USE_DEFAULT_COLORS)\n  if (fg == COLOR_DEFAULT)\n    fg = -1;\n  if (bg == COLOR_DEFAULT)\n    bg = -1;\n#endif\n\n  init_pair(i, fg, bg);\n\n  dprint (3, (debugfile,\"mutt_alloc_color(): Color pairs used so far: %d\\n\",\n\t      UserColors));\n\n  return (COLOR_PAIR (p->index));\n}\n\nvoid mutt_free_color (int fg, int bg)\n{\n  COLOR_LIST *p, *q;\n\n  p = ColorList;\n  while (p)\n  {\n    if (p->fg == fg && p->bg == bg)\n    {\n      (p->count)--;\n      if (p->count > 0) return;\n\n      UserColors--;\n      dprint(1,(debugfile,\"mutt_free_color(): Color pairs used so far: %d\\n\",\n                           UserColors));\n\n      if (p == ColorList)\n      {\n\tColorList = ColorList->next;\n\tFREE (&p);\n\treturn;\n      }\n      q = ColorList;\n      while (q)\n      {\n\tif (q->next == p)\n\t{\n\t  q->next = p->next;\n\t  FREE (&p);\n\t  return;\n\t}\n\tq = q->next;\n      }\n      /* can't get here */\n    }\n    p = p->next;\n  }\n}\n\n#endif /* HAVE_COLOR */\n\n\n#ifdef HAVE_COLOR\n\nstatic int\nparse_color_name (const char *s, int *col, int *attr, int is_fg, BUFFER *err)\n{\n  char *eptr;\n  int is_bright = 0;\n\n  if (ascii_strncasecmp (s, \"bright\", 6) == 0)\n  {\n    is_bright = 1;\n    s += 6;\n  }\n\n  /* allow aliases for xterm color resources */\n  if (ascii_strncasecmp (s, \"color\", 5) == 0)\n  {\n    s += 5;\n    *col = strtol (s, &eptr, 10);\n    if (!*s || *eptr || *col < 0 ||\n\t(*col >= COLORS && !option(OPTNOCURSES) && has_colors()))\n    {\n      snprintf (err->data, err->dsize, _(\"%s: color not supported by term\"), s);\n      return (-1);\n    }\n  }\n  else if ((*col = mutt_getvaluebyname (s, Colors)) == -1)\n  {\n    snprintf (err->data, err->dsize, _(\"%s: no such color\"), s);\n    return (-1);\n  }\n\n  if (is_bright)\n  {\n    if (is_fg)\n    {\n      *attr |= A_BOLD;\n    }\n    else if (COLORS < 16)\n    {\n      /* A_BLINK turns the background color brite on some terms */\n      *attr |= A_BLINK;\n    }\n    else\n    {\n      /* Advance the color by 8 to get the bright version */\n      *col += 8;\n    }\n  }\n\n  return 0;\n}\n\n#endif\n\n\n/* usage: uncolor index pattern [pattern...]\n * \t  unmono  index pattern [pattern...]\n */\n\nstatic int \n_mutt_parse_uncolor (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err, \n\t\t\t short parse_uncolor);\n\n\n#ifdef HAVE_COLOR\n\nint mutt_parse_uncolor (BUFFER *buf, BUFFER *s, unsigned long data,\n\t\t\tBUFFER *err)\n{\n  return _mutt_parse_uncolor(buf, s, data, err, 1);\n}\n\n#endif\n\nint mutt_parse_unmono (BUFFER *buf, BUFFER *s, unsigned long data,\n\t\t       BUFFER *err)\n{\n  return _mutt_parse_uncolor(buf, s, data, err, 0);\n}\n\n/**\n * mutt_do_uncolor - XXX\n */\nstatic void\nmutt_do_uncolor (BUFFER *buf, BUFFER *s, COLOR_LINE **ColorList,\n                 int *do_cache, int parse_uncolor)\n{\n\tCOLOR_LINE *tmp, *last = NULL;\n\n\tdo {\n\t\tmutt_extract_token (buf, s, 0);\n\t\tif (mutt_strcmp (\"*\", buf->data) == 0) {\n\t\t\tfor (tmp = *ColorList; tmp; ) {\n\t\t\t\tif (!*do_cache) {\n\t\t\t\t\t*do_cache = 1;\n\t\t\t\t}\n\t\t\t\tlast = tmp;\n\t\t\t\ttmp = tmp->next;\n\t\t\t\tmutt_free_color_line (&last, parse_uncolor);\n\t\t\t}\n\t\t\t*ColorList = NULL;\n\t\t} else {\n\t\t\tfor (last = NULL, tmp = *ColorList; tmp; last = tmp, tmp = tmp->next) {\n\t\t\t\tif (mutt_strcmp (buf->data, tmp->pattern) == 0) {\n\t\t\t\t\tif (!*do_cache) {\n\t\t\t\t\t\t*do_cache = 1;\n\t\t\t\t\t}\n\t\t\t\t\tdprint (1, (debugfile,\"Freeing pattern \\\"%s\\\" from ColorList\\n\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t tmp->pattern));\n\t\t\t\t\tif (last) {\n\t\t\t\t\t\tlast->next = tmp->next;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t*ColorList = tmp->next;\n\t\t\t\t\t}\n\t\t\t\t\tmutt_free_color_line (&tmp, parse_uncolor);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} while (MoreArgs (s));\n}\n\nstatic int _mutt_parse_uncolor (BUFFER *buf, BUFFER *s, unsigned long data,\n\t\t\t\tBUFFER *err, short parse_uncolor)\n{\n  int object = 0, do_cache = 0;\n\n  mutt_extract_token (buf, s, 0);\n\n  if ((object = mutt_getvaluebyname (buf->data, Fields)) == -1)\n  {\n    snprintf (err->data, err->dsize, _(\"%s: no such object\"), buf->data);\n    return (-1);\n  }\n\n  if (object > MT_COLOR_INDEX_SUBJECT) { /* uncolor index column */\n    ColorDefs[object] = 0;\n    set_option (OPTFORCEREDRAWINDEX);\n    return 0;\n  }\n\n  if ((mutt_strncmp (buf->data, \"body\",   4) != 0) &&\n      (mutt_strncmp (buf->data, \"header\", 6) != 0) &&\n      (mutt_strncmp (buf->data, \"index\",  5) != 0))\n  {\n    snprintf (err->data, err->dsize,\n\t      _(\"%s: command valid only for index, body, header objects\"),\n\t      parse_uncolor ? \"uncolor\" : \"unmono\");\n    return (-1);\n  }\n\n  if (!MoreArgs (s))\n  {\n    snprintf (err->data, err->dsize,\n\t      _(\"%s: too few arguments\"), parse_uncolor ? \"uncolor\" : \"unmono\");\n    return (-1);\n  }\n\n  if(\n#ifdef HAVE_COLOR\n     /* we're running without curses */\n     option (OPTNOCURSES) \n     || /* we're parsing an uncolor command, and have no colors */\n     (parse_uncolor && !has_colors())\n     /* we're parsing an unmono command, and have colors */\n     || (!parse_uncolor && has_colors())\n#else\n     /* We don't even have colors compiled in */\n     parse_uncolor\n#endif\n     )\n  {\n    /* just eat the command, but don't do anything real about it */\n    do\n      mutt_extract_token (buf, s, 0);\n    while (MoreArgs (s));\n\n    return 0;\n  }\n\n  if (object == MT_COLOR_BODY)\n    mutt_do_uncolor (buf, s, &ColorBodyList, &do_cache, parse_uncolor);\n  else if (object == MT_COLOR_HEADER)\n    mutt_do_uncolor (buf, s, &ColorHdrList, &do_cache, parse_uncolor);\n  else if (object == MT_COLOR_INDEX)\n    mutt_do_uncolor (buf, s, &ColorIndexList, &do_cache, parse_uncolor);\n  else if (object == MT_COLOR_INDEX_AUTHOR)\n    mutt_do_uncolor (buf, s, &ColorIndexAuthorList, &do_cache, parse_uncolor);\n  else if (object == MT_COLOR_INDEX_FLAGS)\n    mutt_do_uncolor (buf, s, &ColorIndexFlagsList, &do_cache, parse_uncolor);\n  else if (object == MT_COLOR_INDEX_SUBJECT)\n    mutt_do_uncolor (buf, s, &ColorIndexSubjectList, &do_cache, parse_uncolor);\n#ifdef USE_NOTMUCH\n  else if (object == MT_COLOR_INDEX_TAG)\n    mutt_do_uncolor(buf, s, &ColorIndexTagList, &do_cache, parse_uncolor);\n#endif\n\n  if (do_cache && !option (OPTNOCURSES))\n  {\n    int i;\n    set_option (OPTFORCEREDRAWINDEX);\n    /* force re-caching of index colors */\n    for (i = 0; Context && i < Context->msgcount; i++)\n      Context->hdrs[i]->pair = 0;\n  }\n  return (0);\n}\n\n\nstatic int \nadd_pattern (COLOR_LINE **top, const char *s, int sensitive,\n\t     int fg, int bg, int attr, BUFFER *err,\n\t     int is_index, int match)\n{\n\n  /* is_index used to store compiled pattern\n   * only for `index' color object \n   * when called from mutt_parse_color() */\n\n  COLOR_LINE *tmp = *top;\n\n  while (tmp)\n  {\n    if (sensitive)\n    {\n      if (mutt_strcmp (s, tmp->pattern) == 0)\n\tbreak;\n    }\n    else\n    {\n      if (mutt_strcasecmp (s, tmp->pattern) == 0)\n\tbreak;\n    }\n    tmp = tmp->next;\n  }\n\n  if (tmp)\n  {\n#ifdef HAVE_COLOR\n    if (fg != -1 && bg != -1)\n    {\n      if (tmp->fg != fg || tmp->bg != bg)\n      {\n\tmutt_free_color (tmp->fg, tmp->bg);\n\ttmp->fg = fg;\n\ttmp->bg = bg;\n\tattr |= mutt_alloc_color (fg, bg);\n      }\n      else\n\tattr |= (tmp->pair & ~A_BOLD);\n    }\n#endif /* HAVE_COLOR */\n    tmp->pair = attr;\n  }\n  else\n  {\n    int r;\n    char buf[LONG_STRING];\n\n    tmp = mutt_new_color_line ();\n    if (is_index) \n    {\n      int i;\n\n      strfcpy(buf, NONULL(s), sizeof(buf));\n      mutt_check_simple (buf, sizeof (buf), NONULL(SimpleSearch));\n      if((tmp->color_pattern = mutt_pattern_comp (buf, M_FULL_MSG, err)) == NULL)\n      {\n\tmutt_free_color_line(&tmp, 1);\n\treturn -1;\n      }\n      /* force re-caching of index colors */\n      for (i = 0; Context && i < Context->msgcount; i++)\n\tContext->hdrs[i]->pair = 0;\n    }\n    else if ((r = REGCOMP (&tmp->rx, s, (sensitive ? mutt_which_case (s) : REG_ICASE))) != 0)\n    {\n      regerror (r, &tmp->rx, err->data, err->dsize);\n      mutt_free_color_line(&tmp, 1);\n      return (-1);\n    }\n    tmp->next = *top;\n    tmp->pattern = safe_strdup (s);\n    tmp->match = match;\n#ifdef HAVE_COLOR\n    if(fg != -1 && bg != -1)\n    {\n      tmp->fg = fg;\n      tmp->bg = bg;\n      attr |= mutt_alloc_color (fg, bg);\n    }\n#endif\n    tmp->pair = attr;\n    *top = tmp;\n  }\n\n  return 0;\n}\n\nstatic int\nparse_object(BUFFER *buf, BUFFER *s, int *o, int *ql, BUFFER *err)\n{\n  int q_level = 0;\n  char *eptr;\n  \n  if(!MoreArgs(s))\n  {\n    strfcpy(err->data, _(\"Missing arguments.\"), err->dsize);\n    return -1;\n  }\n  \n  mutt_extract_token(buf, s, 0);\n  if(!mutt_strncmp(buf->data, \"quoted\", 6))\n  {\n    if(buf->data[6])\n    {\n      *ql = strtol(buf->data + 6, &eptr, 10);\n      if(*eptr || q_level < 0)\n      {\n\tsnprintf(err->data, err->dsize, _(\"%s: no such object\"), buf->data);\n\treturn -1;\n      }\n    }\n    else\n      *ql = 0;\n    \n    *o = MT_COLOR_QUOTED;\n  }\n  else if ((*o = mutt_getvaluebyname (buf->data, Fields)) == -1)\n  {\n    snprintf (err->data, err->dsize, _(\"%s: no such object\"), buf->data);\n    return (-1);\n  }\n\n  return 0;\n}\n\ntypedef int (*parser_callback_t)(BUFFER *, BUFFER *, int *, int *, int *, BUFFER *);\n\n#ifdef HAVE_COLOR\n\nstatic int\nparse_color_pair(BUFFER *buf, BUFFER *s, int *fg, int *bg, int *attr, BUFFER *err)\n{\n  if (! MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"color: too few arguments\"), err->dsize);\n    return (-1);\n  }\n\n  mutt_extract_token (buf, s, 0);\n\n  if (parse_color_name (buf->data, fg, attr, 1, err) != 0)\n    return (-1);\n\n  if (! MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"color: too few arguments\"), err->dsize);\n    return (-1);\n  }\n  \n  mutt_extract_token (buf, s, 0);\n\n  if (parse_color_name (buf->data, bg, attr, 0, err) != 0)\n    return (-1);\n  \n  return 0;\n}\n\n#endif\n\nstatic int\nparse_attr_spec(BUFFER *buf, BUFFER *s, int *fg, int *bg, int *attr, BUFFER *err)\n{\n  \n  if(fg) *fg = -1; \n  if(bg) *bg = -1;\n\n  if (! MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"mono: too few arguments\"), err->dsize);\n    return (-1);\n  }\n\n  mutt_extract_token (buf, s, 0);\n\n  if (ascii_strcasecmp (\"bold\", buf->data) == 0)\n    *attr |= A_BOLD;\n  else if (ascii_strcasecmp (\"underline\", buf->data) == 0)\n    *attr |= A_UNDERLINE;\n  else if (ascii_strcasecmp (\"none\", buf->data) == 0)\n    *attr = A_NORMAL;\n  else if (ascii_strcasecmp (\"reverse\", buf->data) == 0)\n    *attr |= A_REVERSE;\n  else if (ascii_strcasecmp (\"standout\", buf->data) == 0)\n    *attr |= A_STANDOUT;\n  else if (ascii_strcasecmp (\"normal\", buf->data) == 0)\n    *attr = A_NORMAL; /* needs use = instead of |= to clear other bits */\n  else\n  {\n    snprintf (err->data, err->dsize, _(\"%s: no such attribute\"), buf->data);\n    return (-1);\n  }\n  \n  return 0;\n}\n\nstatic int fgbgattr_to_color(int fg, int bg, int attr)\n{\n#ifdef HAVE_COLOR\n  if(fg != -1 && bg != -1)\n    return attr | mutt_alloc_color(fg, bg);\n  else\n#endif\n    return attr;\n}\n\n/* usage: color <object> <fg> <bg> [ <regexp> ] \n * \t  mono  <object> <attr> [ <regexp> ]\n */\n\nstatic int \n_mutt_parse_color (BUFFER *buf, BUFFER *s, BUFFER *err, \n\t\t   parser_callback_t callback, short dry_run)\n{\n  int object = 0, attr = 0, fg = 0, bg = 0, q_level = 0;\n  int r = 0, match = 0;\n\n  if(parse_object(buf, s, &object, &q_level, err) == -1)\n    return -1;\n\n  if(callback(buf, s, &fg, &bg, &attr, err) == -1)\n    return -1;\n\n  /* extract a regular expression if needed */\n  \n  if ((object == MT_COLOR_BODY) ||\n      (object == MT_COLOR_HEADER) ||\n      (object == MT_COLOR_INDEX) ||\n      (object == MT_COLOR_INDEX_AUTHOR) ||\n      (object == MT_COLOR_INDEX_FLAGS) ||\n      (object == MT_COLOR_INDEX_SUBJECT)\n#ifdef USE_NOTMUCH\n      || (object == MT_COLOR_INDEX_TAG)\n#endif\n      ) {\n    if (!MoreArgs (s)) {\n      strfcpy (err->data, _(\"too few arguments\"), err->dsize);\n      return -1;\n    }\n\n    mutt_extract_token (buf, s, 0);\n  }\n   \n  if (MoreArgs (s) && (object != MT_COLOR_STATUS))\n  {\n    strfcpy (err->data, _(\"too many arguments\"), err->dsize);\n    return (-1);\n  }\n  \n  /* dry run? */\n  \n  if(dry_run) return 0;\n\n  \n#ifdef HAVE_COLOR\n# ifdef HAVE_USE_DEFAULT_COLORS\n  if (!option (OPTNOCURSES) && has_colors()\n    /* delay use_default_colors() until needed, since it initializes things */\n    && (fg == COLOR_DEFAULT || bg == COLOR_DEFAULT)\n    && use_default_colors () != OK)\n  {\n    strfcpy (err->data, _(\"default colors not supported\"), err->dsize);\n    return (-1);\n  }\n# endif /* HAVE_USE_DEFAULT_COLORS */\n#endif\n  \n  if (object == MT_COLOR_HEADER)\n    r = add_pattern (&ColorHdrList, buf->data, 0, fg, bg, attr, err, 0, match);\n  else if (object == MT_COLOR_BODY)\n    r = add_pattern (&ColorBodyList, buf->data, 1, fg, bg, attr, err, 0, match);\n  else if ((object == MT_COLOR_STATUS) && MoreArgs (s)) {\n    /* 'color status fg bg' can have up to 2 arguments:\n     * 0 arguments: sets the default status color (handled below by else part)\n     * 1 argument : colorize pattern on match\n     * 2 arguments: colorize nth submatch of pattern\n     */\n    mutt_extract_token (buf, s, 0);\n\n    if (MoreArgs (s)) {\n      BUFFER temporary;\n      memset (&temporary, 0, sizeof (BUFFER));\n      mutt_extract_token (&temporary, s, 0);\n      match = atoi (temporary.data);\n      FREE(&temporary.data);\n    }\n\n    if (MoreArgs (s)) {\n      strfcpy (err->data, _(\"too many arguments\"), err->dsize);\n      return -1;\n    }\n\n    r = add_pattern (&ColorStatusList, buf->data, 1,\n\t\t    fg, bg, attr, err, 0, match);\n  }\n  else if (object == MT_COLOR_INDEX)\n  {\n    r = add_pattern (&ColorIndexList, buf->data, 1,\n\t\t    fg, bg, attr, err, 1, match);\n    set_option (OPTFORCEREDRAWINDEX);\n  } else if (object == MT_COLOR_INDEX_AUTHOR) {\n    r = add_pattern (&ColorIndexAuthorList, buf->data, 1,\n\t\t    fg, bg, attr, err, 1, match);\n    set_option (OPTFORCEREDRAWINDEX);\n  } else if (object == MT_COLOR_INDEX_FLAGS) {\n    r = add_pattern (&ColorIndexFlagsList, buf->data, 1,\n\t\t    fg, bg, attr, err, 1, match);\n    set_option (OPTFORCEREDRAWINDEX);\n  } else if (object == MT_COLOR_INDEX_SUBJECT) {\n    r = add_pattern (&ColorIndexSubjectList, buf->data, 1,\n\t\t    fg, bg, attr, err, 1, match);\n    set_option (OPTFORCEREDRAWINDEX);\n  }\n#ifdef USE_NOTMUCH\n  else if (object == MT_COLOR_INDEX_TAG)\n  {\n    r = add_pattern (&ColorIndexTagList, buf->data, 1,\n\t\t    fg, bg, attr, err, 1, match);\n    set_option (OPTFORCEREDRAWINDEX);\n  }\n#endif\n  else if (object == MT_COLOR_QUOTED)\n  {\n    if (q_level >= ColorQuoteSize)\n    {\n      safe_realloc (&ColorQuote, (ColorQuoteSize += 2) * sizeof (int));\n      ColorQuote[ColorQuoteSize-2] = ColorDefs[MT_COLOR_QUOTED];\n      ColorQuote[ColorQuoteSize-1] = ColorDefs[MT_COLOR_QUOTED];\n    }\n    if (q_level >= ColorQuoteUsed)\n      ColorQuoteUsed = q_level + 1;\n    if (q_level == 0)\n    {\n      ColorDefs[MT_COLOR_QUOTED] = fgbgattr_to_color(fg, bg, attr);\n      \n      ColorQuote[0] = ColorDefs[MT_COLOR_QUOTED];\n      for (q_level = 1; q_level < ColorQuoteUsed; q_level++)\n      {\n\tif (ColorQuote[q_level] == A_NORMAL)\n\t  ColorQuote[q_level] = ColorDefs[MT_COLOR_QUOTED];\n      }\n    }\n    else\n      ColorQuote[q_level] = fgbgattr_to_color(fg, bg, attr);\n  }\n  else\n  {\n    ColorDefs[object] = fgbgattr_to_color(fg, bg, attr);\n    if (object > MT_COLOR_INDEX_AUTHOR)\n      set_option (OPTFORCEREDRAWINDEX);\n  }\n\n  return (r);\n}\n\n#ifdef HAVE_COLOR\n\nint mutt_parse_color(BUFFER *buff, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  int dry_run = 0;\n  \n  if(option(OPTNOCURSES) || !has_colors())\n    dry_run = 1;\n  \n  return _mutt_parse_color(buff, s, err, parse_color_pair, dry_run);\n}\n\n#endif\n\nint mutt_parse_mono(BUFFER *buff, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  int dry_run = 0;\n  \n#ifdef HAVE_COLOR\n  if(option(OPTNOCURSES) || has_colors())\n    dry_run = 1;\n#else\n  if(option(OPTNOCURSES))\n    dry_run = 1;\n#endif\n\n  return _mutt_parse_color(buff, s, err, parse_attr_spec, dry_run);\n}\n\n"
  },
  {
    "path": "commands.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2000-2004,2006 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"mime.h\"\n#include \"sort.h\"\n#include \"mailbox.h\"\n#include \"copy.h\"\n#include \"mx.h\"\n#include \"pager.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_idna.h\"\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n\n#ifdef USE_IMAP\n#include \"imap.h\"\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#include \"buffy.h\"\n\n#include <errno.h>\n#include <unistd.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/wait.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <utime.h>\n\nstatic const char *ExtPagerProgress = \"all\";\n\n/* The folder the user last saved to.  Used by ci_save_message() */\nstatic char LastSaveFolder[_POSIX_PATH_MAX] = \"\";\n\nint mutt_display_message (HEADER *cur)\n{\n  char tempfile[_POSIX_PATH_MAX], buf[LONG_STRING];\n  int rc = 0, builtin = 0;\n  int cmflags = M_CM_DECODE | M_CM_DISPLAY | M_CM_CHARCONV;\n  FILE *fpout = NULL;\n  FILE *fpfilterout = NULL;\n  pid_t filterpid = -1;\n  int res;\n\n  snprintf (buf, sizeof (buf), \"%s/%s\", TYPE (cur->content),\n\t    cur->content->subtype);\n\n  mutt_parse_mime_message (Context, cur);\n  mutt_message_hook (Context, cur, M_MESSAGEHOOK);\n\n  /* see if crypto is needed for this message.  if so, we should exit curses */\n  if (WithCrypto && cur->security)\n  {\n    if (cur->security & ENCRYPT)\n    {\n      if (cur->security & APPLICATION_SMIME)\n\tcrypt_smime_getkeys (cur->env);\n      if(!crypt_valid_passphrase(cur->security))\n\treturn 0;\n\n      cmflags |= M_CM_VERIFY;\n    }\n    else if (cur->security & SIGN)\n    {\n      /* find out whether or not the verify signature */\n      if (query_quadoption (OPT_VERIFYSIG, _(\"Verify PGP signature?\")) == M_YES)\n      {\n\tcmflags |= M_CM_VERIFY;\n      }\n    }\n  }\n  \n  if (cmflags & M_CM_VERIFY || cur->security & ENCRYPT)\n  {\n    if (cur->security & APPLICATION_PGP)\n    {\n      if (cur->env->from)\n        crypt_pgp_invoke_getkeys (cur->env->from);\n      \n      crypt_invoke_message (APPLICATION_PGP);\n    }\n\n    if (cur->security & APPLICATION_SMIME)\n      crypt_invoke_message (APPLICATION_SMIME);\n  }\n\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((fpout = safe_fopen (tempfile, \"w\")) == NULL)\n  {\n    mutt_error _(\"Could not create temporary file!\");\n    return (0);\n  }\n\n  if (DisplayFilter && *DisplayFilter) \n  {\n    fpfilterout = fpout;\n    fpout = NULL;\n    /* mutt_endwin (NULL); */\n    filterpid = mutt_create_filter_fd (DisplayFilter, &fpout, NULL, NULL,\n\t\t\t\t       -1, fileno(fpfilterout), -1);\n    if (filterpid < 0)\n    {\n      mutt_error (_(\"Cannot create display filter\"));\n      safe_fclose (&fpfilterout);\n      unlink (tempfile);\n      return 0;\n    }\n  }\n\n  if (!Pager || mutt_strcmp (Pager, \"builtin\") == 0)\n    builtin = 1;\n  else\n  {\n    struct hdr_format_info hfi;\n    hfi.ctx = Context;\n    hfi.pager_progress = ExtPagerProgress;\n    hfi.hdr = cur;\n    mutt_make_string_info (buf, sizeof (buf), NONULL(PagerFmt), &hfi, M_FORMAT_MAKEPRINT);\n    fputs (buf, fpout);\n    fputs (\"\\n\\n\", fpout);\n  }\n\n  res = mutt_copy_message (fpout, Context, cur, cmflags,\n\t\t(option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0)\n\t\t| CH_DECODE | CH_FROM | CH_DISPLAY | CH_VIRTUAL);\n\n  if ((safe_fclose (&fpout) != 0 && errno != EPIPE) || res < 0)\n  {\n    mutt_error (_(\"Could not copy message\"));\n    if (fpfilterout != NULL)\n    {\n      mutt_wait_filter (filterpid);\n      safe_fclose (&fpfilterout);\n    }\n    mutt_unlink (tempfile);\n    return 0;\n  }\n\n  if (fpfilterout != NULL && mutt_wait_filter (filterpid) != 0)\n    mutt_any_key_to_continue (NULL);\n\n  safe_fclose (&fpfilterout);\t/* XXX - check result? */\n\n  \n  if (WithCrypto)\n  {\n    /* update crypto information for this message */\n    cur->security &= ~(GOODSIGN|BADSIGN);\n    cur->security |= crypt_query (cur->content);\n  \n    /* Remove color cache for this message, in case there\n       are color patterns for both ~g and ~V */\n    cur->pair = 0;\n  }\n\n  if (builtin)\n  {\n    pager_t info;\n\n    if (WithCrypto \n        && (cur->security & APPLICATION_SMIME) && (cmflags & M_CM_VERIFY))\n    {\n      if (cur->security & GOODSIGN)\n      {\n\tif (!crypt_smime_verify_sender(cur))\n\t  mutt_message ( _(\"S/MIME signature successfully verified.\"));\n\telse\n\t  mutt_error ( _(\"S/MIME certificate owner does not match sender.\"));\n      }\n      else if (cur->security & PARTSIGN)\n\tmutt_message (_(\"Warning: Part of this message has not been signed.\"));\n      else if (cur->security & SIGN || cur->security & BADSIGN)\n\tmutt_error ( _(\"S/MIME signature could NOT be verified.\"));\n    }\n\n    if (WithCrypto \n        && (cur->security & APPLICATION_PGP) && (cmflags & M_CM_VERIFY))\n    {\n      if (cur->security & GOODSIGN)\n\tmutt_message (_(\"PGP signature successfully verified.\"));\n      else if (cur->security & PARTSIGN)\n\tmutt_message (_(\"Warning: Part of this message has not been signed.\"));\n      else if (cur->security & SIGN)\n\tmutt_message (_(\"PGP signature could NOT be verified.\"));\n    }\n\n    /* Invoke the builtin pager */\n    memset (&info, 0, sizeof (pager_t));\n    info.hdr = cur;\n    info.ctx = Context;\n    rc = mutt_pager (NULL, tempfile, M_PAGER_MESSAGE, &info);\n  }\n  else\n  {\n    int r;\n\n    mutt_endwin (NULL);\n    snprintf (buf, sizeof (buf), \"%s %s\", NONULL(Pager), tempfile);\n    if ((r = mutt_system (buf)) == -1)\n      mutt_error (_(\"Error running \\\"%s\\\"!\"), buf);\n    unlink (tempfile);\n    if (!option (OPTNOCURSES))\n      keypad (stdscr, TRUE);\n    if (r != -1)\n      mutt_set_flag (Context, cur, M_READ, 1);\n    if (r != -1 && option (OPTPROMPTAFTER))\n    {\n      mutt_unget_event (mutt_any_key_to_continue _(\"Command: \"), 0);\n      rc = km_dokey (MENU_PAGER);\n    }\n    else\n      rc = 0;\n  }\n\n  return rc;\n}\n\nvoid ci_bounce_message (HEADER *h, int *redraw)\n{\n  char prompt[SHORT_STRING];\n  char scratch[SHORT_STRING];\n  char buf[HUGE_STRING] = { 0 };\n  ADDRESS *adr = NULL;\n  char *err = NULL;\n  int rc;\n\n /* RfC 5322 mandates a From: header, so warn before bouncing\n  * messages without one */\n  if (h)\n  {\n    if (!h->env->from)\n    {\n      mutt_error _(\"Warning: message contains no From: header\");\n      mutt_sleep (2);\n    }\n  }\n  else if (Context)\n  {\n    for (rc = 0; rc < Context->msgcount; rc++)\n    {\n      if (Context->hdrs[rc]->tagged && !Context->hdrs[rc]->env->from)\n      {\n\tmutt_error _(\"Warning: message contains no From: header\");\n\tmutt_sleep (2);\n\tbreak;\n      }\n    }\n  }\n\n  if(h)\n    strfcpy(prompt, _(\"Bounce message to: \"), sizeof(prompt));\n  else\n    strfcpy(prompt, _(\"Bounce tagged messages to: \"), sizeof(prompt));\n  \n  rc = mutt_get_field (prompt, buf, sizeof (buf), M_ALIAS);\n\n  if (option (OPTNEEDREDRAW))\n  {\n    unset_option (OPTNEEDREDRAW);\n    *redraw = REDRAW_FULL;\n  }\n\n  if (rc || !buf[0])\n    return;\n\n  if (!(adr = mutt_parse_adrlist (adr, buf)))\n  {\n    mutt_error _(\"Error parsing address!\");\n    return;\n  }\n\n  adr = mutt_expand_aliases (adr);\n\n  if (mutt_addrlist_to_intl (adr, &err) < 0)\n  {\n    mutt_error (_(\"Bad IDN: '%s'\"), err);\n    FREE (&err);\n    rfc822_free_address (&adr);\n    return;\n  }\n\n  buf[0] = 0;\n  rfc822_write_address (buf, sizeof (buf), adr, 1);\n\n#define extra_space (15 + 7 + 2)\n  snprintf (scratch, sizeof (scratch),\n           (h ? _(\"Bounce message to %s\") : _(\"Bounce messages to %s\")), buf);\n\n  if (mutt_strwidth (prompt) > COLS - extra_space)\n  {\n    mutt_format_string (prompt, sizeof (prompt),\n\t\t\t0, COLS-extra_space, FMT_LEFT, 0,\n\t\t\tscratch, sizeof (scratch), 0);\n    safe_strcat (prompt, sizeof (prompt), \"...?\");\n  }\n  else\n    snprintf (prompt, sizeof (prompt), \"%s?\", scratch);\n\n  if (query_quadoption (OPT_BOUNCE, prompt) != M_YES)\n  {\n    rfc822_free_address (&adr);\n    CLEARLINE (LINES - 1);\n    mutt_message (h ? _(\"Message not bounced.\") : _(\"Messages not bounced.\"));\n    return;\n  }\n\n  CLEARLINE (LINES - 1);\n  \n  rc = mutt_bounce_message (NULL, h, adr);\n  rfc822_free_address (&adr);\n  /* If no error, or background, display message. */\n  if ((rc == 0) || (rc == S_BKG))\n    mutt_message (h ? _(\"Message bounced.\") : _(\"Messages bounced.\"));\n}\n\nstatic void pipe_set_flags (int decode, int print, int *cmflags, int *chflags)\n{\n  if (decode)\n  {\n    *cmflags |= M_CM_DECODE | M_CM_CHARCONV;\n    *chflags |= CH_DECODE | CH_REORDER;\n    \n    if (option (OPTWEED))\n    {\n      *chflags |= CH_WEED;\n      *cmflags |= M_CM_WEED;\n    }\n  }\n  \n  if (print)\n    *cmflags |= M_CM_PRINTING;\n  \n}\n\nstatic void pipe_msg (HEADER *h, FILE *fp, int decode, int print)\n{\n  int cmflags = 0;\n  int chflags = CH_FROM;\n  \n  pipe_set_flags (decode, print, &cmflags, &chflags);\n\n  if (WithCrypto && decode && h->security & ENCRYPT)\n  {\n    if(!crypt_valid_passphrase(h->security))\n      return;\n    endwin ();\n  }\n\n  if (decode)\n    mutt_parse_mime_message (Context, h);\n\n  mutt_copy_message (fp, Context, h, cmflags, chflags);\n}\n\n\n/* the following code is shared between printing and piping */\n\nstatic int _mutt_pipe_message (HEADER *h, char *cmd,\n\t\t\t       int decode,\n\t\t\t       int print,\n\t\t\t       int split,\n\t\t\t       char *sep)\n{\n  \n  int i, rc = 0;\n  pid_t thepid;\n  FILE *fpout;\n  \n/*   mutt_endwin (NULL); \n\n     is this really needed here ? \n     it makes the screen flicker on pgp and s/mime messages,\n     before asking for a passphrase...\n                                     Oliver Ehli */\n  if (h)\n  {\n\n    mutt_message_hook (Context, h, M_MESSAGEHOOK);\n\n    if (WithCrypto && decode)\n    {\n      mutt_parse_mime_message (Context, h);\n      if(h->security & ENCRYPT && !crypt_valid_passphrase(h->security))\n\treturn 1;\n    }\n    mutt_endwin (NULL);\n\n    if ((thepid = mutt_create_filter (cmd, &fpout, NULL, NULL)) < 0)\n    {\n      mutt_perror _(\"Can't create filter process\");\n      return 1;\n    }\n      \n    pipe_msg (h, fpout, decode, print);\n    safe_fclose (&fpout);\n    rc = mutt_wait_filter (thepid);\n  }\n  else\n  { /* handle tagged messages */\n\n    if (WithCrypto && decode)\n    {\n      for (i = 0; i < Context->vcount; i++)\n\tif(Context->hdrs[Context->v2r[i]]->tagged)\n\t{\n\t  mutt_message_hook (Context, Context->hdrs[Context->v2r[i]], M_MESSAGEHOOK);\n\t  mutt_parse_mime_message(Context, Context->hdrs[Context->v2r[i]]);\n\t  if (Context->hdrs[Context->v2r[i]]->security & ENCRYPT &&\n\t      !crypt_valid_passphrase(Context->hdrs[Context->v2r[i]]->security))\n\t    return 1;\n\t}\n    }\n    \n    if (split)\n    {\n      for (i = 0; i < Context->vcount; i++)\n      {\n        if (Context->hdrs[Context->v2r[i]]->tagged)\n        {\n\t  mutt_message_hook (Context, Context->hdrs[Context->v2r[i]], M_MESSAGEHOOK);\n\t  mutt_endwin (NULL);\n\t  if ((thepid = mutt_create_filter (cmd, &fpout, NULL, NULL)) < 0)\n\t  {\n\t    mutt_perror _(\"Can't create filter process\");\n\t    return 1;\n\t  }\n          pipe_msg (Context->hdrs[Context->v2r[i]], fpout, decode, print);\n          /* add the message separator */\n          if (sep)  fputs (sep, fpout);\n\t  safe_fclose (&fpout);\n\t  if (mutt_wait_filter (thepid) != 0)\n\t    rc = 1;\n        }\n      }\n    }\n    else\n    {\n      mutt_endwin (NULL);\n      if ((thepid = mutt_create_filter (cmd, &fpout, NULL, NULL)) < 0)\n      {\n\tmutt_perror _(\"Can't create filter process\");\n\treturn 1;\n      }\n      for (i = 0; i < Context->vcount; i++)\n      {\n        if (Context->hdrs[Context->v2r[i]]->tagged)\n        {\n\t  mutt_message_hook (Context, Context->hdrs[Context->v2r[i]], M_MESSAGEHOOK);\n          pipe_msg (Context->hdrs[Context->v2r[i]], fpout, decode, print);\n          /* add the message separator */\n          if (sep) fputs (sep, fpout);\n        }\n      }\n      safe_fclose (&fpout);\n      if (mutt_wait_filter (thepid) != 0)\n\trc = 1;\n    }\n  }\n\n  if (rc || option (OPTWAITKEY))\n    mutt_any_key_to_continue (NULL);\n  return rc;\n}\n\nvoid mutt_pipe_message (HEADER *h)\n{\n  char buffer[LONG_STRING];\n\n  buffer[0] = 0;\n  if (mutt_get_field (_(\"Pipe to command: \"), buffer, sizeof (buffer), M_CMD)\n      != 0 || !buffer[0])\n    return;\n\n  mutt_expand_path (buffer, sizeof (buffer));\n  _mutt_pipe_message (h, buffer,\n\t\t      option (OPTPIPEDECODE),\n\t\t      0, \n\t\t      option (OPTPIPESPLIT),\n\t\t      PipeSep);\n}\n\nvoid mutt_print_message (HEADER *h)\n{\n\n  if (quadoption (OPT_PRINT) && (!PrintCmd || !*PrintCmd))\n  {\n    mutt_message (_(\"No printing command has been defined.\"));\n    return;\n  }\n  \n  if (query_quadoption (OPT_PRINT,\n\t\t\th ? _(\"Print message?\") : _(\"Print tagged messages?\"))\n\t\t  \t!= M_YES)\n    return;\n\n  if (_mutt_pipe_message (h, PrintCmd,\n\t\t\t  option (OPTPRINTDECODE),\n\t\t\t  1,\n\t\t\t  option (OPTPRINTSPLIT),\n\t\t\t  \"\\f\") == 0)\n    mutt_message (h ? _(\"Message printed\") : _(\"Messages printed\"));\n  else\n    mutt_message (h ? _(\"Message could not be printed\") :\n\t\t  _(\"Messages could not be printed\"));\n}\n\n\nint mutt_select_sort (int reverse)\n{\n  int method = Sort; /* save the current method in case of abort */\n\n  switch (mutt_multi_choice (reverse ?\n\t\t\t     _(\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/s(p)am?: \") :\n\t\t\t     _(\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/s(p)am?: \"),\n\t\t\t     _(\"dfrsotuzcp\")))\n  {\n  case -1: /* abort - don't resort */\n    return -1;\n\n  case 1: /* (d)ate */\n    Sort = SORT_DATE;\n    break;\n\n  case 2: /* (f)rm */\n    Sort = SORT_FROM;\n    break;\n  \n  case 3: /* (r)ecv */\n    Sort = SORT_RECEIVED;\n    break;\n  \n  case 4: /* (s)ubj */\n    Sort = SORT_SUBJECT;\n    break;\n  \n  case 5: /* t(o) */\n    Sort = SORT_TO;\n    break;\n  \n  case 6: /* (t)hread */\n    Sort = SORT_THREADS;\n    break;\n  \n  case 7: /* (u)nsort */\n    Sort = SORT_ORDER;\n    break;\n  \n  case 8: /* si(z)e */\n    Sort = SORT_SIZE;\n    break;\n  \n  case 9: /* s(c)ore */ \n    Sort = SORT_SCORE;\n    break;\n\n  case 10: /* s(p)am */\n    Sort = SORT_SPAM;\n    break;\n  }\n  if (reverse)\n    Sort |= SORT_REVERSE;\n\n  return (Sort != method ? 0 : -1); /* no need to resort if it's the same */\n}\n\n/* invoke a command in a subshell */\nvoid mutt_shell_escape (void)\n{\n  char buf[LONG_STRING];\n\n  buf[0] = 0;\n  if (mutt_get_field (_(\"Shell command: \"), buf, sizeof (buf), M_CMD) == 0)\n  {\n    if (!buf[0] && Shell)\n      strfcpy (buf, Shell, sizeof (buf));\n    if(buf[0])\n    {\n      CLEARLINE (LINES-1);\n      mutt_endwin (NULL);\n      fflush (stdout);\n      if (mutt_system (buf) != 0 || option (OPTWAITKEY))\n\tmutt_any_key_to_continue (NULL);\n    }\n  }\n}\n\n/* enter a mutt command */\nvoid mutt_enter_command (void)\n{\n  BUFFER err, token;\n  char buffer[LONG_STRING];\n  int r;\n\n  buffer[0] = 0;\n  if (mutt_get_field (\":\", buffer, sizeof (buffer), M_COMMAND) != 0 || !buffer[0])\n    return;\n  mutt_buffer_init (&err);\n  err.dsize = STRING;\n  err.data = safe_malloc(err.dsize);\n  mutt_buffer_init (&token);\n  r = mutt_parse_rc_line (buffer, &token, &err);\n  FREE (&token.data);\n  if (err.data[0])\n  {\n    /* since errbuf could potentially contain printf() sequences in it,\n       we must call mutt_error() in this fashion so that vsprintf()\n       doesn't expect more arguments that we passed */\n    if (r == 0)\n      mutt_message (\"%s\", err.data);\n    else\n      mutt_error (\"%s\", err.data);\n  }\n\n  FREE (&err.data);\n}\n\nvoid mutt_display_address (ENVELOPE *env)\n{\n  char *pfx = NULL;\n  char buf[SHORT_STRING];\n  ADDRESS *adr = NULL;\n\n  adr = mutt_get_address (env, &pfx);\n\n  if (!adr) return;\n  \n  /* \n   * Note: We don't convert IDNA to local representation this time.\n   * That is intentional, so the user has an opportunity to copy &\n   * paste the on-the-wire form of the address to other, IDN-unable\n   * software. \n   */\n  \n  buf[0] = 0;\n  rfc822_write_address (buf, sizeof (buf), adr, 0);\n  mutt_message (\"%s: %s\", pfx, buf);\n}\n\nstatic void set_copy_flags (HEADER *hdr, int decode, int decrypt, int *cmflags, int *chflags)\n{\n  *cmflags = 0;\n  *chflags = CH_UPDATE_LEN;\n  \n  if (WithCrypto && !decode && decrypt && (hdr->security & ENCRYPT))\n  {\n    if ((WithCrypto & APPLICATION_PGP)\n        && mutt_is_multipart_encrypted(hdr->content))\n    {\n      *chflags = CH_NONEWLINE | CH_XMIT | CH_MIME;\n      *cmflags = M_CM_DECODE_PGP;\n    }\n    else if ((WithCrypto & APPLICATION_PGP)\n              && mutt_is_application_pgp (hdr->content) & ENCRYPT)\n      decode = 1;\n    else if ((WithCrypto & APPLICATION_SMIME)\n             && mutt_is_application_smime(hdr->content) & ENCRYPT)\n    {\n      *chflags = CH_NONEWLINE | CH_XMIT | CH_MIME;\n      *cmflags = M_CM_DECODE_SMIME;\n    }\n  }\n\n  if (decode)\n  {\n    *chflags = CH_XMIT | CH_MIME | CH_TXTPLAIN;\n    *cmflags = M_CM_DECODE | M_CM_CHARCONV;\n\n    if (!decrypt)\t/* If decode doesn't kick in for decrypt, */\n    {\n      *chflags |= CH_DECODE;\t/* then decode RFC 2047 headers, */\n\n      if (option (OPTWEED))\n      {\n\t*chflags |= CH_WEED;\t/* and respect $weed. */\n\t*cmflags |= M_CM_WEED;\n      }\n    }\n  }\n}\n\nint _mutt_save_message (HEADER *h, CONTEXT *ctx, int delete, int decode, int decrypt)\n{\n  int cmflags, chflags;\n  int rc;\n  \n  set_copy_flags (h, decode, decrypt, &cmflags, &chflags);\n\n  if (decode || decrypt)\n    mutt_parse_mime_message (Context, h);\n\n  if ((rc = mutt_append_message (ctx, Context, h, cmflags, chflags)) != 0)\n    return rc;\n\n  if (delete)\n  {\n    mutt_set_flag (Context, h, M_DELETE, 1);\n    if (option (OPTDELETEUNTAG))\n      mutt_set_flag (Context, h, M_TAG, 0);\n  }\n  \n  return 0;\n}\n\n/* returns 0 if the copy/save was successful, or -1 on error/abort */\nint mutt_save_message (HEADER *h, int delete, \n\t\t       int decode, int decrypt, int *redraw)\n{\n  int i, need_buffy_cleanup;\n  int need_passphrase = 0, app=0;\n  char prompt[SHORT_STRING], buf[_POSIX_PATH_MAX];\n  CONTEXT ctx;\n  struct stat st;\n\n  *redraw = 0;\n\n  \n  snprintf (prompt, sizeof (prompt),\n\t    decode  ? (delete ? _(\"Decode-save%s to mailbox\") :\n\t\t       _(\"Decode-copy%s to mailbox\")) :\n\t    (decrypt ? (delete ? _(\"Decrypt-save%s to mailbox\") :\n\t\t\t_(\"Decrypt-copy%s to mailbox\")) :\n\t     (delete ? _(\"Save%s to mailbox\") : _(\"Copy%s to mailbox\"))),\n\t    h ? \"\" : _(\" tagged\"));\n  \n\n  if (h)\n  {\n    if (WithCrypto)\n    {\n      need_passphrase = h->security & ENCRYPT;\n      app = h->security;\n    }\n    mutt_message_hook (Context, h, M_MESSAGEHOOK);\n    mutt_default_save (buf, sizeof (buf), h);\n  }\n  else\n  {\n    /* look for the first tagged message */\n\n    for (i = 0; i < Context->vcount; i++)\n    {\n      if (Context->hdrs[Context->v2r[i]]->tagged)\n      {\n\th = Context->hdrs[Context->v2r[i]];\n\tbreak;\n      }\n    }\n\n\n    if (h)\n    {\n      mutt_message_hook (Context, h, M_MESSAGEHOOK);\n      mutt_default_save (buf, sizeof (buf), h);\n      if (WithCrypto)\n      {\n        need_passphrase = h->security & ENCRYPT;\n        app = h->security;\n      }\n      h = NULL;\n    }\n  }\n\n  mutt_pretty_mailbox (buf, sizeof (buf));\n  if (mutt_enter_fname (prompt, buf, sizeof (buf), redraw, 0) == -1)\n    return (-1);\n\n  if (*redraw != REDRAW_FULL)\n  {\n    if (!h)\n      *redraw = REDRAW_INDEX | REDRAW_STATUS;\n    else\n      *redraw = REDRAW_STATUS;\n  }\n\n  if (!buf[0])\n    return (-1);\n \n  /* This is an undocumented feature of ELM pointed out to me by Felix von\n   * Leitner <leitner@prz.fu-berlin.de>\n   */\n  if (mutt_strcmp (buf, \".\") == 0)\n    strfcpy (buf, LastSaveFolder, sizeof (buf));\n  else\n    strfcpy (LastSaveFolder, buf, sizeof (LastSaveFolder));\n\n  mutt_expand_path (buf, sizeof (buf));\n\n  /* check to make sure that this file is really the one the user wants */\n  if (mutt_save_confirm (buf, &st) != 0)\n    return -1;\n\n  if (WithCrypto && need_passphrase && (decode || decrypt)\n      && !crypt_valid_passphrase(app))\n    return -1;\n  \n  mutt_message (_(\"Copying to %s...\"), buf);\n  \n#ifdef USE_IMAP\n  if (Context->magic == M_IMAP && \n      !(decode || decrypt) && mx_is_imap (buf))\n  {\n    switch (imap_copy_messages (Context, h, buf, delete))\n    {\n      /* success */\n      case 0: mutt_clear_error (); return 0;\n      /* non-fatal error: fall through to fetch/append */\n      case 1: break;\n      /* fatal error, abort */\n      case -1: return -1;\n    }\n  }\n#endif\n\n  if (mx_open_mailbox (buf, M_APPEND, &ctx) != NULL)\n  {\n    if (h)\n    {\n      if (_mutt_save_message(h, &ctx, delete, decode, decrypt) != 0)\n      {\n        mx_close_mailbox (&ctx, NULL);\n        return -1;\n      }\n    }\n    else\n    {\n      int rc = 0;\n\n#ifdef USE_NOTMUCH\n      if (Context->magic == M_NOTMUCH)\n        nm_longrun_init(Context, TRUE);\n#endif\n      for (i = 0; i < Context->vcount; i++)\n      {\n\tif (Context->hdrs[Context->v2r[i]]->tagged)\n\t{\n\t  mutt_message_hook (Context, Context->hdrs[Context->v2r[i]], M_MESSAGEHOOK);\n\t  if ((rc = _mutt_save_message(Context->hdrs[Context->v2r[i]],\n\t\t\t     &ctx, delete, decode, decrypt) != 0))\n\t    break;\n\t}\n      }\n#ifdef USE_NOTMUCH\n      if (Context->magic == M_NOTMUCH)\n        nm_longrun_done(Context);\n#endif\n      if (rc != 0) {\n\tmx_close_mailbox (&ctx, NULL);\n\treturn -1;\n      }\n    }\n\n    need_buffy_cleanup = (ctx.magic == M_MBOX || ctx.magic == M_MMDF);\n\n    mx_close_mailbox (&ctx, NULL);\n\n    if (need_buffy_cleanup)\n      mutt_buffy_cleanup (buf, &st);\n\n    mutt_clear_error ();\n    return (0);\n  }\n  \n  return -1;\n}\n\n\nvoid mutt_version (void)\n{\n  mutt_message (\"Mutt %s (%s)\", MUTT_VERSION, ReleaseDate);\n}\n\nvoid mutt_edit_content_type (HEADER *h, BODY *b, FILE *fp)\n{\n  char buf[LONG_STRING];\n  char obuf[LONG_STRING];\n  char tmp[STRING];\n  PARAMETER *p;\n\n  char charset[STRING];\n  char *cp;\n\n  short charset_changed = 0;\n  short type_changed = 0;\n  \n  cp = mutt_get_parameter (\"charset\", b->parameter);\n  strfcpy (charset, NONULL (cp), sizeof (charset));\n\n  snprintf (buf, sizeof (buf), \"%s/%s\", TYPE (b), b->subtype);\n  strfcpy (obuf, buf, sizeof (obuf));\n  if (b->parameter)\n  {\n    size_t l;\n    \n    for (p = b->parameter; p; p = p->next)\n    {\n      l = strlen (buf);\n\n      rfc822_cat (tmp, sizeof (tmp), p->value, MimeSpecials);\n      snprintf (buf + l, sizeof (buf) - l, \"; %s=%s\", p->attribute, tmp);\n    }\n  }\n  \n  if (mutt_get_field (\"Content-Type: \", buf, sizeof (buf), 0) != 0 ||\n      buf[0] == 0)\n    return;\n  \n  /* clean up previous junk */\n  mutt_free_parameter (&b->parameter);\n  FREE (&b->subtype);\n  \n  mutt_parse_content_type (buf, b);\n\n  \n  snprintf (tmp, sizeof (tmp), \"%s/%s\", TYPE (b), NONULL (b->subtype));\n  type_changed = ascii_strcasecmp (tmp, obuf);\n  charset_changed = ascii_strcasecmp (charset, mutt_get_parameter (\"charset\", b->parameter));\n\n  /* if in send mode, check for conversion - current setting is default. */\n\n  if (!h && b->type == TYPETEXT && charset_changed)\n  {\n    int r;\n    snprintf (tmp, sizeof (tmp), _(\"Convert to %s upon sending?\"),\n\t      mutt_get_parameter (\"charset\", b->parameter));\n    if ((r = mutt_yesorno (tmp, !b->noconv)) != -1)\n      b->noconv = (r == M_NO);\n  }\n\n  /* inform the user */\n  \n  snprintf (tmp, sizeof (tmp), \"%s/%s\", TYPE (b), NONULL (b->subtype));\n  if (type_changed)\n    mutt_message (_(\"Content-Type changed to %s.\"), tmp);\n  if (b->type == TYPETEXT && charset_changed)\n  {\n    if (type_changed)\n      mutt_sleep (1);\n    mutt_message (_(\"Character set changed to %s; %s.\"),\n\t\t  mutt_get_parameter (\"charset\", b->parameter),\n\t\t  b->noconv ? _(\"not converting\") : _(\"converting\"));\n  }\n\n  b->force_charset |= charset_changed ? 1 : 0;\n\n  if (!is_multipart (b) && b->parts)\n    mutt_free_body (&b->parts);\n  if (!mutt_is_message_type (b->type, b->subtype) && b->hdr)\n  {\n    b->hdr->content = NULL;\n    mutt_free_header (&b->hdr);\n  }\n\n  if (fp && (is_multipart (b) || mutt_is_message_type (b->type, b->subtype)))\n    mutt_parse_part (fp, b);\n  \n  if (WithCrypto && h)\n  {\n    if (h->content == b)\n      h->security  = 0;\n\n    h->security |= crypt_query (b);\n  }\n}\n\n\nstatic int _mutt_check_traditional_pgp (HEADER *h, int *redraw)\n{\n  MESSAGE *msg;\n  int rv = 0;\n  \n  h->security |= PGP_TRADITIONAL_CHECKED;\n  \n  mutt_parse_mime_message (Context, h);\n  if ((msg = mx_open_message (Context, h->msgno)) == NULL)\n    return 0;\n  if (crypt_pgp_check_traditional (msg->fp, h->content, 0))\n  {\n    h->security = crypt_query (h->content);\n    *redraw |= REDRAW_FULL;\n    rv = 1;\n  }\n  \n  h->security |= PGP_TRADITIONAL_CHECKED;\n  mx_close_message (&msg);\n  return rv;\n}\n\nint mutt_check_traditional_pgp (HEADER *h, int *redraw)\n{\n  int i;\n  int rv = 0;\n  if (h && !(h->security & PGP_TRADITIONAL_CHECKED))\n    rv = _mutt_check_traditional_pgp (h, redraw);\n  else\n  {\n    for (i = 0; i < Context->vcount; i++)\n      if (Context->hdrs[Context->v2r[i]]->tagged && \n\t  !(Context->hdrs[Context->v2r[i]]->security & PGP_TRADITIONAL_CHECKED))\n\trv = _mutt_check_traditional_pgp (Context->hdrs[Context->v2r[i]], redraw)\n\t  || rv;\n  }\n  return rv;\n}\n\n\n"
  },
  {
    "path": "complete.c",
    "content": "/*\n * Copyright (C) 1996-2000,2007 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#ifdef USE_IMAP\n#include \"mailbox.h\"\n#include \"imap.h\"\n#endif\n\n#include <dirent.h>\n#include <string.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <errno.h>\n\n/* given a partial pathname, this routine fills in as much of the rest of the\n * path as is unique.\n *\n * return 0 if ok, -1 if no matches\n */\nint mutt_complete (char *s, size_t slen)\n{\n  char *p;\n  DIR *dirp = NULL;\n  struct dirent *de;\n  int i ,init=0;\n  size_t len;\n  char dirpart[_POSIX_PATH_MAX], exp_dirpart[_POSIX_PATH_MAX];\n  char filepart[_POSIX_PATH_MAX];\n#ifdef USE_IMAP\n  char imap_path[LONG_STRING];\n\n  dprint (2, (debugfile, \"mutt_complete: completing %s\\n\", s));\n\n  /* we can use '/' as a delimiter, imap_complete rewrites it */\n  if (*s == '=' || *s == '+' || *s == '!')\n  {\n    if (*s == '!')\n      p = NONULL (Spoolfile);\n    else\n      p = NONULL (Maildir);\n\n    mutt_concat_path (imap_path, p, s+1, sizeof (imap_path));\n  }\n  else\n    strfcpy (imap_path, s, sizeof(imap_path));\n\n  if (mx_is_imap (imap_path))\n    return imap_complete (s, slen, imap_path);\n#endif\n  \n  if (*s == '=' || *s == '+' || *s == '!')\n  {\n    dirpart[0] = *s;\n    dirpart[1] = 0;\n    if (*s == '!')\n      strfcpy (exp_dirpart, NONULL (Spoolfile), sizeof (exp_dirpart));\n    else\n      strfcpy (exp_dirpart, NONULL (Maildir), sizeof (exp_dirpart));\n    if ((p = strrchr (s, '/')))\n    {\n      char buf[_POSIX_PATH_MAX];\n      if (mutt_concatn_path (buf, sizeof(buf), exp_dirpart, strlen(exp_dirpart), s + 1, (size_t)(p - s - 1)) == NULL) {\n\t      return -1;\n      }\n      strfcpy (exp_dirpart, buf, sizeof (exp_dirpart));\n      mutt_substrcpy(dirpart, s, p+1, sizeof(dirpart));\n      strfcpy (filepart, p + 1, sizeof (filepart));\n    }\n    else\n      strfcpy (filepart, s + 1, sizeof (filepart));\n    dirp = opendir (exp_dirpart);\n  }\n  else\n  {\n    if ((p = strrchr (s, '/')))\n    {\n      if (p == s) /* absolute path */\n      {\n\tp = s + 1;\n\tstrfcpy (dirpart, \"/\", sizeof (dirpart));\n\texp_dirpart[0] = 0;\n\tstrfcpy (filepart, p, sizeof (filepart));\n\tdirp = opendir (dirpart);\n      }\n      else\n      {\n\tmutt_substrcpy(dirpart, s, p, sizeof(dirpart));\n\tstrfcpy (filepart, p + 1, sizeof (filepart));\n\tstrfcpy (exp_dirpart, dirpart, sizeof (exp_dirpart));\n\tmutt_expand_path (exp_dirpart, sizeof (exp_dirpart));\n\tdirp = opendir (exp_dirpart);\n      }\n    }\n    else\n    {\n      /* no directory name, so assume current directory. */\n      dirpart[0] = 0;\n      strfcpy (filepart, s, sizeof (filepart));\n      dirp = opendir (\".\");\n    }\n  }\n\n  if (dirp == NULL)\n  {\n    dprint (1, (debugfile, \"mutt_complete(): %s: %s (errno %d).\\n\", exp_dirpart, strerror (errno), errno));\n    return (-1);\n  }\n\n  /*\n   * special case to handle when there is no filepart yet.  find the first\n   * file/directory which is not ``.'' or ``..''\n   */\n  if ((len = mutt_strlen (filepart)) == 0)\n  {\n    while ((de = readdir (dirp)) != NULL)\n    {\n      if (mutt_strcmp (\".\", de->d_name) != 0 && mutt_strcmp (\"..\", de->d_name) != 0)\n      {\n\tstrfcpy (filepart, de->d_name, sizeof (filepart));\n\tinit++;\n\tbreak;\n      }\n    }\n  }\n\n  while ((de = readdir (dirp)) != NULL)\n  {\n    if (mutt_strncmp (de->d_name, filepart, len) == 0)\n    {\n      if (init)\n      {\n\tfor (i=0; filepart[i] && de->d_name[i]; i++)\n\t{\n\t  if (filepart[i] != de->d_name[i])\n\t  {\n\t    filepart[i] = 0;\n\t    break;\n\t  }\n\t}\n\tfilepart[i] = 0;\n      }\n      else\n      {\n\tchar buf[_POSIX_PATH_MAX];\n\tstruct stat st;\n\n\tstrfcpy (filepart, de->d_name, sizeof(filepart));\n\n\t/* check to see if it is a directory */\n\tif (dirpart[0])\n\t{\n\t  strfcpy (buf, exp_dirpart, sizeof (buf));\n\t  strfcpy (buf + strlen (buf), \"/\", sizeof (buf) - strlen (buf));\n\t}\n\telse\n\t  buf[0] = 0;\n\tstrfcpy (buf + strlen (buf), filepart, sizeof (buf) - strlen (buf));\n\tif (stat (buf, &st) != -1 && (st.st_mode & S_IFDIR))\n\t  strfcpy (filepart + strlen (filepart), \"/\",\n\t\t   sizeof (filepart) - strlen (filepart));\n\tinit = 1;\n      }\n    }\n  }\n  closedir (dirp);\n\n  if (dirpart[0])\n  {\n    strfcpy (s, dirpart, slen);\n    if (mutt_strcmp (\"/\", dirpart) != 0 && dirpart[0] != '=' && dirpart[0] != '+')\n      strfcpy (s + strlen (s), \"/\", slen - strlen (s));\n    strfcpy (s + strlen (s), filepart, slen - strlen (s));\n  }\n  else\n    strfcpy (s, filepart, slen);\n\n  return (init ? 0 : -1);\n}\n"
  },
  {
    "path": "compose.c",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2007,2010,2012 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2004 g10 Code GmbH\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_idna.h\"\n#include \"mutt_menu.h\"\n#include \"rfc1524.h\"\n#include \"mime.h\"\n#include \"attach.h\"\n#include \"mapping.h\"\n#include \"mailbox.h\"\n#include \"sort.h\"\n#include \"charset.h\"\n#ifdef USE_SIDEBAR\n#include \"sidebar.h\"\n#endif\n\n#ifdef MIXMASTER\n#include \"remailer.h\"\n#endif\n\n#include <errno.h>\n#include <string.h>\n#include <sys/stat.h>\n#include <sys/wait.h>\n#include <unistd.h>\n#include <stdlib.h>\n\nstatic const char* There_are_no_attachments = N_(\"There are no attachments.\");\n\n#define CHECK_COUNT if (idxlen == 0) { mutt_error _(There_are_no_attachments); break; }\n\n\n\nenum\n{\n  HDR_FROM  = 1,\n  HDR_TO,\n  HDR_CC,\n  HDR_BCC,\n  HDR_SUBJECT,\n  HDR_REPLYTO,\n  HDR_FCC,\n\n#ifdef MIXMASTER\n  HDR_MIX,\n#endif\n\n  HDR_CRYPT,\n  HDR_CRYPTINFO,\n\n  HDR_ATTACH  = (HDR_FCC + 5) /* where to start printing the attachments */\n};\n\n#define HDR_XOFFSET 10\n#define TITLE_FMT \"%10s\" /* Used for Prompts, which are ASCII */\n#define W (COLS - HDR_XOFFSET - SidebarWidth)\n\nstatic const char * const Prompts[] =\n{\n  \"From: \",\n  \"To: \",\n  \"Cc: \",\n  \"Bcc: \",\n  \"Subject: \",\n  \"Reply-To: \",\n  \"Fcc: \"\n};\n\nstatic const struct mapping_t ComposeHelp[] = {\n  { N_(\"Send\"),    OP_COMPOSE_SEND_MESSAGE },\n  { N_(\"Abort\"),   OP_EXIT },\n  { \"To\",      OP_COMPOSE_EDIT_TO },\n  { \"CC\",      OP_COMPOSE_EDIT_CC },\n  { \"Subj\",    OP_COMPOSE_EDIT_SUBJECT },\n  { N_(\"Attach file\"),  OP_COMPOSE_ATTACH_FILE },\n  { N_(\"Descrip\"), OP_COMPOSE_EDIT_DESCRIPTION },\n  { N_(\"Help\"),    OP_HELP },\n  { NULL,\t0 }\n};\n\nstatic void snd_entry (char *b, size_t blen, MUTTMENU *menu, int num)\n{\n    mutt_FormatString (b, blen, 0, NONULL (AttachFormat), mutt_attach_fmt,\n\t    (unsigned long)(((ATTACHPTR **) menu->data)[num]),\n\t    M_FORMAT_STAT_FILE | M_FORMAT_ARROWCURSOR);\n}\n\n\n\n#include \"mutt_crypt.h\"\n\nstatic void redraw_crypt_lines (HEADER *msg)\n{\n  mvprintw (HDR_CRYPT, SidebarWidth, TITLE_FMT, \"Security: \");\n\n  if ((WithCrypto & (APPLICATION_PGP | APPLICATION_SMIME)) == 0)\n  {\n    addstr(_(\"Not supported\"));\n    return;\n  }\n\n  if ((msg->security & (ENCRYPT | SIGN)) == (ENCRYPT | SIGN))\n    addstr (_(\"Sign, Encrypt\"));\n  else if (msg->security & ENCRYPT)\n    addstr (_(\"Encrypt\"));\n  else if (msg->security & SIGN)\n    addstr (_(\"Sign\"));\n  else\n    addstr (_(\"None\"));\n\n  if ((msg->security & (ENCRYPT | SIGN)))\n  {\n    if ((WithCrypto & APPLICATION_PGP) && (msg->security & APPLICATION_PGP))\n    {\n      if ((msg->security & INLINE))\n        addstr (_(\" (inline PGP)\"));\n      else\n        addstr (_(\" (PGP/MIME)\"));\n    }\n    else if ((WithCrypto & APPLICATION_SMIME) &&\n             (msg->security & APPLICATION_SMIME))\n      addstr (_(\" (S/MIME)\"));\n  }\n\n  if (option (OPTCRYPTOPPORTUNISTICENCRYPT) && (msg->security & OPPENCRYPT))\n      addstr (_(\" (OppEnc mode)\"));\n\n  clrtoeol ();\n  move (HDR_CRYPTINFO, SidebarWidth);\n  clrtoeol ();\n\n  if ((WithCrypto & APPLICATION_PGP)\n      && (msg->security & APPLICATION_PGP) && (msg->security & SIGN))\n    printw (\"%s%s\", _(\" sign as: \"), PgpSignAs ? PgpSignAs : _(\"<default>\"));\n\n  if ((WithCrypto & APPLICATION_SMIME)\n      && (msg->security & APPLICATION_SMIME) && (msg->security & SIGN)) {\n      printw (\"%s%s\", _(\" sign as: \"), SmimeDefaultKey ? SmimeDefaultKey : _(\"<default>\"));\n  }\n\n  if ((WithCrypto & APPLICATION_SMIME)\n      && (msg->security & APPLICATION_SMIME)\n      && (msg->security & ENCRYPT)\n      && SmimeCryptAlg\n      && *SmimeCryptAlg) {\n      mvprintw (HDR_CRYPTINFO, SidebarWidth + 40, \"%s%s\", _(\"Encrypt with: \"),\n\t\tNONULL(SmimeCryptAlg));\n  }\n}\n\n\n#ifdef MIXMASTER\n\nstatic void redraw_mix_line (LIST *chain)\n{\n  int c;\n  char *t;\n\n  mvprintw (HDR_MIX, SidebarWidth, TITLE_FMT, \"Mix: \");\n\n  if (!chain)\n  {\n    addstr (\"<no chain defined>\");\n    clrtoeol ();\n    return;\n  }\n  \n  for (c = 12; chain; chain = chain->next)\n  {\n    t = chain->data;\n    if (t && t[0] == '0' && t[1] == '\\0')\n      t = \"<random>\";\n    \n    if (c + mutt_strlen (t) + 2 >= COLS - SidebarWidth)\n      break;\n\n    addstr (NONULL(t));\n    if (chain->next)\n      addstr (\", \");\n\n    c += mutt_strlen (t) + 2;\n  }\n}\n#endif /* MIXMASTER */\n\nstatic int\ncheck_attachments(ATTACHPTR **idx, short idxlen)\n{\n  int i, r;\n  struct stat st;\n  char pretty[_POSIX_PATH_MAX], msg[_POSIX_PATH_MAX + SHORT_STRING];\n\n  for (i = 0; i < idxlen; i++)\n  {\n    strfcpy(pretty, idx[i]->content->filename, sizeof(pretty));\n    if(stat(idx[i]->content->filename, &st) != 0)\n    {\n      mutt_pretty_mailbox(pretty, sizeof (pretty));\n      mutt_error(_(\"%s [#%d] no longer exists!\"),\n\t\t pretty, i+1);\n      return -1;\n    }\n    \n    if(idx[i]->content->stamp < st.st_mtime)\n    {\n      mutt_pretty_mailbox(pretty, sizeof (pretty));\n      snprintf(msg, sizeof(msg), _(\"%s [#%d] modified. Update encoding?\"),\n\t       pretty, i+1);\n      \n      if((r = mutt_yesorno(msg, M_YES)) == M_YES)\n\tmutt_update_encoding(idx[i]->content);\n      else if(r == -1)\n\treturn -1;\n    }\n  }\n\n  return 0;\n}\n\nstatic void draw_envelope_addr (int line, ADDRESS *addr)\n{\n  char buf[LONG_STRING];\n\n  buf[0] = 0;\n  rfc822_write_address (buf, sizeof (buf), addr, 1);\n  mvprintw (line, SidebarWidth, TITLE_FMT, Prompts[line - 1]);\n  mutt_paddstr (W, buf);\n}\n\nstatic void draw_envelope (HEADER *msg, char *fcc)\n{\n#ifdef USE_SIDEBAR\n  sb_draw();\n#endif\n  draw_envelope_addr (HDR_FROM, msg->env->from);\n  draw_envelope_addr (HDR_TO, msg->env->to);\n  draw_envelope_addr (HDR_CC, msg->env->cc);\n  draw_envelope_addr (HDR_BCC, msg->env->bcc);\n  mvprintw (HDR_SUBJECT, SidebarWidth, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);\n  mutt_paddstr (W, NONULL (msg->env->subject));\n  draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);\n  mvprintw (HDR_FCC, SidebarWidth, TITLE_FMT, Prompts[HDR_FCC - 1]);\n  mutt_paddstr (W, fcc);\n\n  if (WithCrypto)\n    redraw_crypt_lines (msg);\n\n#ifdef MIXMASTER\n  redraw_mix_line (msg->chain);\n#endif\n\n  SETCOLOR (MT_COLOR_STATUS);\n  mvaddstr (HDR_ATTACH - 1, SidebarWidth, _(\"-- Attachments\"));\n  clrtoeol ();\n\n  NORMAL_COLOR;\n}\n\nstatic int edit_address_list (int line, ADDRESS **addr)\n{\n  char buf[HUGE_STRING] = \"\"; /* needs to be large for alias expansion */\n  char *err = NULL;\n  \n  mutt_addrlist_to_local (*addr);\n  rfc822_write_address (buf, sizeof (buf), *addr, 0);\n  if (mutt_get_field (Prompts[line - 1], buf, sizeof (buf), M_ALIAS) == 0)\n  {\n    rfc822_free_address (addr);\n    *addr = mutt_parse_adrlist (*addr, buf);\n    *addr = mutt_expand_aliases (*addr);\n  }\n\n  if (option (OPTNEEDREDRAW))\n  {\n    unset_option (OPTNEEDREDRAW);\n    return (REDRAW_FULL);\n  }\n\n  if (mutt_addrlist_to_intl (*addr, &err) != 0)\n  {\n    mutt_error (_(\"Warning: '%s' is a bad IDN.\"), err);\n    mutt_refresh();\n    FREE (&err);\n  }\n\n  /* redraw the expanded list so the user can see the result */\n  buf[0] = 0;\n  rfc822_write_address (buf, sizeof (buf), *addr, 1);\n  move (line, HDR_XOFFSET + SidebarWidth);\n  mutt_paddstr (W, buf);\n  \n  return 0;\n}\n\nstatic int delete_attachment (MUTTMENU *menu, short *idxlen, int x)\n{\n  ATTACHPTR **idx = (ATTACHPTR **) menu->data;\n  int y;\n\n  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\n  if (x == 0 && menu->max == 1)\n  {\n    mutt_error _(\"You may not delete the only attachment.\");\n    idx[x]->content->tagged = 0;\n    return (-1);\n  }\n\n  for (y = 0; y < *idxlen; y++)\n  {\n    if (idx[y]->content->next == idx[x]->content)\n    {\n      idx[y]->content->next = idx[x]->content->next;\n      break;\n    }\n  }\n\n  idx[x]->content->next = NULL;\n  idx[x]->content->parts = NULL;\n  mutt_free_body (&(idx[x]->content));\n  FREE (&idx[x]->tree);\n  FREE (&idx[x]);\n  for (; x < *idxlen - 1; x++)\n    idx[x] = idx[x+1];\n  idx[*idxlen - 1] = NULL;\n  menu->max = --(*idxlen);\n  \n  return (0);\n}\n\nstatic void update_idx (MUTTMENU *menu, ATTACHPTR **idx, short idxlen)\n{\n  idx[idxlen]->level = (idxlen > 0) ? idx[idxlen-1]->level : 0;\n  if (idxlen)\n    idx[idxlen - 1]->content->next = idx[idxlen]->content;\n  idx[idxlen]->content->aptr = idx[idxlen];\n  menu->current = idxlen++;\n  mutt_update_tree (idx, idxlen);\n  menu->max = idxlen;\n  return;\n}\n\n\n/* \n * cum_attachs_size: Cumulative Attachments Size\n *\n * Returns the total number of bytes used by the attachments in the\n * attachment list _after_ content-transfer-encodings have been\n * applied.\n * \n */\n\nstatic unsigned long cum_attachs_size (MUTTMENU *menu)\n{\n  size_t s;\n  unsigned short i;\n  ATTACHPTR **idx = menu->data;\n  CONTENT *info;\n  BODY *b;\n  \n  for (i = 0, s = 0; i < menu->max; i++)\n  {\n    b = idx[i]->content;\n\n    if (!b->content)\n      b->content = mutt_get_content_info (b->filename, b);\n\n    if ((info = b->content))\n    {\n      switch (b->encoding)\n      {\n\tcase ENCQUOTEDPRINTABLE:\n\t  s += 3 * (info->lobin + info->hibin) + info->ascii + info->crlf;\n\t  break;\n\tcase ENCBASE64:\n\t  s += (4 * (info->lobin + info->hibin + info->ascii + info->crlf)) / 3;\n\t  break;\n\tdefault:\n\t  s += info->lobin + info->hibin + info->ascii + info->crlf;\n\t  break;\n      }\n    }\n  }\n\n  return s;\n}\n\n/* prototype for use below */\nstatic void compose_status_line (char *buf, size_t buflen, size_t col, MUTTMENU *menu, \n      const char *p);\n\n/*\n * compose_format_str()\n *\n * %a = total number of attachments \n * %h = hostname  [option]\n * %l = approx. length of current message (in bytes) \n * %v = Mutt version \n *\n * This function is similar to status_format_str().  Look at that function for\n * help when modifying this function.\n */\n\nstatic const char *\ncompose_format_str (char *buf, size_t buflen, size_t col, char op, const char *src,\n\t\t   const char *prefix, const char *ifstring,\n\t\t   const char *elsestring,\n\t\t   unsigned long data, format_flag flags)\n{\n  char fmt[SHORT_STRING], tmp[SHORT_STRING];\n  int optional = (flags & M_FORMAT_OPTIONAL);\n  MUTTMENU *menu = (MUTTMENU *) data;\n\n  *buf = 0;\n  switch (op)\n  {\n    case 'a': /* total number of attachments */\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, menu->max);\n      break;\n\n    case 'h':  /* hostname */\n      snprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n      snprintf (buf, buflen, fmt, NONULL(Hostname));\n      break;\n\n    case 'l': /* approx length of current message in bytes */\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tmutt_pretty_size (tmp, sizeof (tmp), menu ? cum_attachs_size(menu) : 0);\n\tsnprintf (buf, buflen, fmt, tmp);\n      break;\n\n    case 'v':\n      snprintf (fmt, sizeof (fmt), \"Mutt %%s\");\n      snprintf (buf, buflen, fmt, MUTT_VERSION);\n      break;\n\n    case 0:\n      *buf = 0;\n      return (src);\n\n    default:\n      snprintf (buf, buflen, \"%%%s%c\", prefix, op);\n      break;\n  }\n\n  if (optional)\n    compose_status_line (buf, buflen, col, menu, ifstring);\n  else if (flags & M_FORMAT_OPTIONAL)\n    compose_status_line (buf, buflen, col, menu, elsestring);\n\n  return (src);\n}\n\nstatic void compose_status_line (char *buf, size_t buflen, size_t col, MUTTMENU *menu, \n      const char *p)\n{\n  mutt_FormatString (buf, buflen, col, p, compose_format_str, \n        (unsigned long) menu, 0);\n}\n\n\n/* return values:\n *\n * 1\tmessage should be postponed\n * 0\tnormal exit\n * -1\tabort message\n */\nint mutt_compose_menu (HEADER *msg,   /* structure for new message */\n                       char *fcc,     /* where to save a copy of the message */\n                       size_t fcclen,\n                       HEADER *cur,   /* current message */\n                       int flags)\n{\n  char helpstr[LONG_STRING];\n  char buf[LONG_STRING];\n  char fname[_POSIX_PATH_MAX];\n  MUTTMENU *menu;\n  ATTACHPTR **idx = NULL;\n  short idxlen = 0;\n  short idxmax = 0;\n  int i, close = 0;\n  int r = -1;\t\t/* return value */\n  int op = 0;\n  int loop = 1;\n  int fccSet = 0;\t/* has the user edited the Fcc: field ? */\n  CONTEXT *ctx = NULL, *this = NULL;\n  /* Sort, SortAux could be changed in mutt_index_menu() */\n  int oldSort, oldSortAux;\n  struct stat st;\n\n  mutt_attach_init (msg->content);\n  idx = mutt_gen_attach_list (msg->content, -1, idx, &idxlen, &idxmax, 0, 1);\n\n  menu = mutt_new_menu (MENU_COMPOSE);\n  menu->offset = HDR_ATTACH;\n  menu->max = idxlen;\n  menu->make_entry = snd_entry;\n  menu->tag = mutt_tag_attach;\n  menu->data = idx;\n  menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_COMPOSE, ComposeHelp);\n  \n  while (loop)\n  {\n    switch (op = mutt_menuLoop (menu))\n    {\n      case OP_REDRAW:\n\tdraw_envelope (msg, fcc);\n\tmenu->offset = HDR_ATTACH;\n\tmenu->pagelen = LINES - HDR_ATTACH - 2;\n\tbreak;\n      case OP_COMPOSE_EDIT_FROM:\n\tmenu->redraw = edit_address_list (HDR_FROM, &msg->env->from);\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n\tbreak;\n      case OP_COMPOSE_EDIT_TO:\n\tmenu->redraw = edit_address_list (HDR_TO, &msg->env->to);\n\tif (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n\t{\n\t  crypt_opportunistic_encrypt (msg);\n\t  redraw_crypt_lines (msg);\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n      case OP_COMPOSE_EDIT_BCC:\n\tmenu->redraw = edit_address_list (HDR_BCC, &msg->env->bcc);\n\tif (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n\t{\n\t  crypt_opportunistic_encrypt (msg);\n\t  redraw_crypt_lines (msg);\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n\tbreak;\n      case OP_COMPOSE_EDIT_CC:\n\tmenu->redraw = edit_address_list (HDR_CC, &msg->env->cc);\n\tif (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n\t{\n\t  crypt_opportunistic_encrypt (msg);\n\t  redraw_crypt_lines (msg);\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\t\n        break;\n      case OP_COMPOSE_EDIT_SUBJECT:\n\tif (msg->env->subject)\n\t  strfcpy (buf, msg->env->subject, sizeof (buf));\n\telse\n\t  buf[0] = 0;\n\tif (mutt_get_field (\"Subject: \", buf, sizeof (buf), 0) == 0)\n\t{\n\t  mutt_str_replace (&msg->env->subject, buf);\n\t  move (HDR_SUBJECT, HDR_XOFFSET + SidebarWidth);\n\t  if (msg->env->subject)\n\t    mutt_paddstr (W, msg->env->subject);\n\t  else\n\t    clrtoeol();\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n      case OP_COMPOSE_EDIT_REPLY_TO:\n\tmenu->redraw = edit_address_list (HDR_REPLYTO, &msg->env->reply_to);\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n\tbreak;\n      case OP_COMPOSE_EDIT_FCC:\n\tstrfcpy (buf, fcc, sizeof (buf));\n\tif (mutt_get_field (\"Fcc: \", buf, sizeof (buf), M_FILE | M_CLEAR) == 0)\n\t{\n\t  strfcpy (fcc, buf, fcclen);\n\t  mutt_pretty_mailbox (fcc, fcclen);\n\t  move (HDR_FCC, HDR_XOFFSET + SidebarWidth);\n\t  mutt_paddstr (W, fcc);\n\t  fccSet = 1;\n\t}\n\tMAYBE_REDRAW (menu->redraw);\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n      case OP_COMPOSE_EDIT_MESSAGE:\n\tif (Editor && (mutt_strcmp (\"builtin\", Editor) != 0) && !option (OPTEDITHDRS))\n\t{\n\t  mutt_edit_file (Editor, msg->content->filename);\n\t  mutt_update_encoding (msg->content);\n\t  menu->redraw = REDRAW_FULL;\n\t  mutt_message_hook (NULL, msg, M_SEND2HOOK);\n\t  break;\n\t}\n\t/* fall through */\n      case OP_COMPOSE_EDIT_HEADERS:\n\tif (mutt_strcmp (\"builtin\", Editor) != 0 &&\n\t    (op == OP_COMPOSE_EDIT_HEADERS ||\n\t    (op == OP_COMPOSE_EDIT_MESSAGE && option (OPTEDITHDRS))))\n\t{\n\t  char *tag = NULL, *err = NULL;\n\t  mutt_env_to_local (msg->env);\n\t  mutt_edit_headers (NONULL (Editor), msg->content->filename, msg,\n\t\t\t     fcc, fcclen);\n\t  if (mutt_env_to_intl (msg->env, &tag, &err))\n\t  {\n\t    mutt_error (_(\"Bad IDN in \\\"%s\\\": '%s'\"), tag, err);\n\t    FREE (&err);\n\t  }\n\t  if (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n\t    crypt_opportunistic_encrypt (msg);\n\t}\n\telse\n\t{\n\t  /* this is grouped with OP_COMPOSE_EDIT_HEADERS because the\n\t     attachment list could change if the user invokes ~v to edit\n\t     the message with headers, in which we need to execute the\n\t     code below to regenerate the index array */\n\t  mutt_builtin_editor (msg->content->filename, msg, cur);\n\t}\n\tmutt_update_encoding (msg->content);\n\n\t/* attachments may have been added */\n\tif (idxlen && idx[idxlen - 1]->content->next)\n\t{\n\t  for (i = 0; i < idxlen; i++)\n          {\n            FREE (&idx[i]->tree);\n\t    FREE (&idx[i]);\n          }\n\t  idxlen = 0;\n\t  idx = mutt_gen_attach_list (msg->content, -1, idx, &idxlen, &idxmax, 0, 1);\n\t  menu->data = idx;\n\t  menu->max = idxlen;\n\t}\n\n        menu->redraw = REDRAW_FULL;\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n\tbreak;\n\n\n\n      case OP_COMPOSE_ATTACH_KEY:\n        if (!(WithCrypto & APPLICATION_PGP))\n          break;       \n\tif (idxlen == idxmax)\n        {\n\t  safe_realloc (&idx, sizeof (ATTACHPTR *) * (idxmax += 5));\n\t  menu->data = idx;\n\t}\n\t\n\tidx[idxlen] = (ATTACHPTR *) safe_calloc (1, sizeof (ATTACHPTR));\n\tif ((idx[idxlen]->content = crypt_pgp_make_key_attachment(NULL)) != NULL)\n\t{\n\t  update_idx (menu, idx, idxlen++);\n\t  menu->redraw |= REDRAW_INDEX;\n\t}\n\telse\n\t  FREE (&idx[idxlen]);\n\n\tmenu->redraw |= REDRAW_STATUS;\n\n\tif (option(OPTNEEDREDRAW))\n\t{\n\t  menu->redraw = REDRAW_FULL;\n\t  unset_option(OPTNEEDREDRAW);\n\t}\n\t\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n\n      case OP_COMPOSE_ATTACH_FILE:\n\t{\n\t  char *prompt, **files;\n\t  int error, numfiles;\n\n\t  fname[0] = 0;\n\t  prompt = _(\"Attach file\");\n\t  numfiles = 0;\n\t  files = NULL;\n\n\t  if (_mutt_enter_fname (prompt, fname, sizeof (fname),\n\t\t\t&menu->redraw, 0, 1, &files, &numfiles, 0) == -1 ||\n\t      *fname == '\\0')\n\t    break;\n\n\t  if (idxlen + numfiles >= idxmax)\n\t  {\n\t    safe_realloc (&idx, sizeof (ATTACHPTR *) * (idxmax += 5 + numfiles));\n\t    menu->data = idx;\n\t  }\n\n\t  error = 0;\n\t  if (numfiles > 1)\n\t    mutt_message _(\"Attaching selected files...\");\n\t  for (i = 0; i < numfiles; i++)\n\t  {\n\t    char *att = files[i];\n\t    idx[idxlen] = (ATTACHPTR *) safe_calloc (1, sizeof (ATTACHPTR));\n            idx[idxlen]->unowned = 1;\n\t    idx[idxlen]->content = mutt_make_file_attach (att);\n\t    if (idx[idxlen]->content != NULL)\n\t      update_idx (menu, idx, idxlen++);\n\t    else\n\t    {\n\t      error = 1;\n\t      mutt_error (_(\"Unable to attach %s!\"), att);\n\t      FREE (&idx[idxlen]);\n\t    }\n\t  }\n\t  \n\t  FREE (&files);\n\t  if (!error) mutt_clear_error ();\n\n\t  menu->redraw |= REDRAW_INDEX | REDRAW_STATUS;\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n      case OP_COMPOSE_ATTACH_MESSAGE:\n\t{\n\t  char *prompt;\n\t  HEADER *h;\n\n\t  fname[0] = 0;\n\t  prompt = _(\"Open mailbox to attach message from\");\n\n\t  if (Context)\n\t  {\n\t    strfcpy (fname, NONULL (Context->path), sizeof (fname));\n\t    mutt_pretty_mailbox (fname, sizeof (fname));\n\t  }\n\n\t  if (mutt_enter_fname (prompt, fname, sizeof (fname), &menu->redraw, 1) == -1 || !fname[0])\n\t    break;\n\n\t  mutt_expand_path (fname, sizeof (fname));\n#ifdef USE_IMAP\n          if (!mx_is_imap (fname))\n#endif\n#ifdef USE_POP\n          if (!mx_is_pop (fname))\n#endif\n\t  /* check to make sure the file exists and is readable */\n\t  if (access (fname, R_OK) == -1)\n\t  {\n\t    mutt_perror (fname);\n\t    break;\n\t  }\n\n\t  menu->redraw = REDRAW_FULL;\n\n\t  ctx = mx_open_mailbox (fname, M_READONLY, NULL);\n\t  if (ctx == NULL)\n\t  {\n\t    mutt_error (_(\"Unable to open mailbox %s\"), fname);\n\t    break;\n\t  }\n\n\t  if (!ctx->msgcount)\n\t  {\n\t    mx_close_mailbox (ctx, NULL);\n\t    FREE (&ctx);\n\t    mutt_error _(\"No messages in that folder.\");\n\t    break;\n\t  }\n\n\t  this = Context; /* remember current folder and sort methods*/\n\t  oldSort = Sort; oldSortAux = SortAux;\n\t  \n\t  Context = ctx;\n\t  set_option(OPTATTACHMSG);\n\t  mutt_message _(\"Tag the messages you want to attach!\");\n\t  close = mutt_index_menu ();\n\t  unset_option(OPTATTACHMSG);\n\n\t  if (!Context)\n\t  {\n\t    /* go back to the folder we started from */\n\t    Context = this;\n\t    /* Restore old $sort and $sort_aux */\n\t    Sort = oldSort;\n\t    SortAux = oldSortAux;\n\t    menu->redraw |= REDRAW_INDEX | REDRAW_STATUS;\n\t    break;\n\t  }\n\n\t  if (idxlen + Context->tagged >= idxmax)\n\t  {\n\t    safe_realloc (&idx, sizeof (ATTACHPTR *) * (idxmax += 5 + Context->tagged));\n\t    menu->data = idx;\n\t  }\n\n\t  for (i = 0; i < Context->msgcount; i++)\n\t  {\n\t    h = Context->hdrs[i];\n\t    if (h->tagged)\n\t    {\n\t      idx[idxlen] = (ATTACHPTR *) safe_calloc (1, sizeof (ATTACHPTR));\n\t      idx[idxlen]->content = mutt_make_message_attach (Context, h, 1);\n\t      if (idx[idxlen]->content != NULL)\n\t\tupdate_idx (menu, idx, idxlen++);\n\t      else\n\t      {\n\t\tmutt_error _(\"Unable to attach!\");\n\t\tFREE (&idx[idxlen]);\n\t      }\n\t    }\n\t  }\n\t  menu->redraw |= REDRAW_FULL;\n\n\t  if (close == OP_QUIT) \n\t    mx_close_mailbox (Context, NULL);\n\t  else\n\t    mx_fastclose_mailbox (Context);\n\t  FREE (&Context);\n\n\t  /* go back to the folder we started from */\n\t  Context = this;\n\t  /* Restore old $sort and $sort_aux */\n\t  Sort = oldSort;\n\t  SortAux = oldSortAux;\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n      case OP_DELETE:\n\tCHECK_COUNT;\n        if (idx[menu->current]->unowned)\n          idx[menu->current]->content->unlink = 0;\n\tif (delete_attachment (menu, &idxlen, menu->current) == -1)\n\t  break;\n\tmutt_update_tree (idx, idxlen);\n\tif (idxlen)\n\t{\n\t  if (menu->current > idxlen - 1)\n\t    menu->current = idxlen - 1;\n\t}\n\telse\n\t  menu->current = 0;\n\n\tif (menu->current == 0)\n\t  msg->content = idx[0]->content;\n\n        menu->redraw |= REDRAW_STATUS;\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n#define CURRENT idx[menu->current]->content\n      \n      case OP_COMPOSE_TOGGLE_RECODE:\n      {      \n        CHECK_COUNT;\n        if (!mutt_is_text_part (CURRENT))\n        {\n\t  mutt_error (_(\"Recoding only affects text attachments.\"));\n\t  break;\n\t}\n        CURRENT->noconv = !CURRENT->noconv;\n        if (CURRENT->noconv)\n\t  mutt_message (_(\"The current attachment won't be converted.\"));\n        else\n\t  mutt_message (_(\"The current attachment will be converted.\"));\n\tmenu->redraw = REDRAW_CURRENT;\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n      }\n#undef CURRENT\n\n      case OP_COMPOSE_EDIT_DESCRIPTION:\n\tCHECK_COUNT;\n\tstrfcpy (buf,\n\t\t idx[menu->current]->content->description ?\n\t\t idx[menu->current]->content->description : \"\",\n\t\t sizeof (buf));\n\t/* header names should not be translated */\n\tif (mutt_get_field (\"Description: \", buf, sizeof (buf), 0) == 0)\n\t{\n\t  mutt_str_replace (&idx[menu->current]->content->description, buf);\n\t  menu->redraw = REDRAW_CURRENT;\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n      case OP_COMPOSE_UPDATE_ENCODING:\n        CHECK_COUNT;\n        if (menu->tagprefix)\n        {\n\t  BODY *top;\n\t  for (top = msg->content; top; top = top->next)\n\t  {\n\t    if (top->tagged)\n\t      mutt_update_encoding (top);\n\t  }\n\t  menu->redraw = REDRAW_FULL;\n\t}\n        else\n        {\n          mutt_update_encoding(idx[menu->current]->content);\n\t  menu->redraw = REDRAW_CURRENT | REDRAW_STATUS;\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n      \n      case OP_COMPOSE_TOGGLE_DISPOSITION:\n\t/* toggle the content-disposition between inline/attachment */\n\tidx[menu->current]->content->disposition = (idx[menu->current]->content->disposition == DISPINLINE) ? DISPATTACH : DISPINLINE;\n\tmenu->redraw = REDRAW_CURRENT;\n\tbreak;\n\n      case OP_EDIT_TYPE:\n\tCHECK_COUNT;\n        {\n\t  mutt_edit_content_type (NULL, idx[menu->current]->content, NULL);\n\n\t  /* this may have been a change to text/something */\n\t  mutt_update_encoding (idx[menu->current]->content);\n\n\t  menu->redraw = REDRAW_CURRENT;\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n      case OP_COMPOSE_EDIT_ENCODING:\n\tCHECK_COUNT;\n\tstrfcpy (buf, ENCODING (idx[menu->current]->content->encoding),\n\t\t\t\t\t\t\t      sizeof (buf));\n\tif (mutt_get_field (\"Content-Transfer-Encoding: \", buf,\n\t\t\t\t\t    sizeof (buf), 0) == 0 && buf[0])\n\t{\n\t  if ((i = mutt_check_encoding (buf)) != ENCOTHER && i != ENCUUENCODED)\n\t  {\n\t    idx[menu->current]->content->encoding = i;\n\t    menu->redraw = REDRAW_CURRENT | REDRAW_STATUS;\n\t    mutt_clear_error();\n\t  }\n\t  else\n\t    mutt_error _(\"Invalid encoding.\");\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n      case OP_COMPOSE_SEND_MESSAGE:\n\n        /* Note: We don't invoke send2-hook here, since we want to leave\n\t * users an opportunity to change settings from the \":\" prompt.\n\t */\n      \n        if(check_attachments(idx, idxlen) != 0)\n        {\n\t  menu->redraw = REDRAW_FULL;\n\t  break;\n\t}\n\n      \n#ifdef MIXMASTER\n        if (msg->chain && mix_check_message (msg) != 0)\n\t  break;\n#endif\n      \n\tif (!fccSet && *fcc)\n\t{\n\t  if ((i = query_quadoption (OPT_COPY,\n\t\t\t\t_(\"Save a copy of this message?\"))) == -1)\n\t    break;\n\t  else if (i == M_NO)\n\t    *fcc = 0;\n\t}\n\n\tloop = 0;\n\tr = 0;\n\tbreak;\n\n      case OP_COMPOSE_EDIT_FILE:\n\tCHECK_COUNT;\n\tmutt_edit_file (NONULL(Editor), idx[menu->current]->content->filename);\n\tmutt_update_encoding (idx[menu->current]->content);\n\tmenu->redraw = REDRAW_CURRENT | REDRAW_STATUS;\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n\tbreak;\n\n      case OP_COMPOSE_TOGGLE_UNLINK:\n\tCHECK_COUNT;\n\tidx[menu->current]->content->unlink = !idx[menu->current]->content->unlink;\n\n#if 0\n        /* OPTRESOLVE is otherwise ignored on this menu.\n\t * Where's the bug?\n\t */\n\n        if (option (OPTRESOLVE) && menu->current + 1 < menu->max)\n\t  menu->current++;\n# endif\n\tmenu->redraw = REDRAW_INDEX;\n        /* No send2hook since this doesn't change the message. */\n\tbreak;\n\n      case OP_COMPOSE_GET_ATTACHMENT:\n        CHECK_COUNT;\n        if(menu->tagprefix)\n        {\n\t  BODY *top;\n\t  for(top = msg->content; top; top = top->next)\n\t  {\n\t    if(top->tagged)\n\t      mutt_get_tmp_attachment(top);\n\t  }\n\t  menu->redraw = REDRAW_FULL;\n\t}\n        else if (mutt_get_tmp_attachment(idx[menu->current]->content) == 0)\n\t  menu->redraw = REDRAW_CURRENT;\n\n        /* No send2hook since this doesn't change the message. */\n        break;\n      \n      case OP_COMPOSE_RENAME_FILE:\n\tCHECK_COUNT;\n\tstrfcpy (fname, idx[menu->current]->content->filename, sizeof (fname));\n\tmutt_pretty_mailbox (fname, sizeof (fname));\n\tif (mutt_get_field (_(\"Rename to: \"), fname, sizeof (fname), M_FILE)\n\t\t\t\t\t\t\t== 0 && fname[0])\n\t{\n\t  if (stat(idx[menu->current]->content->filename, &st) == -1)\n\t  {\n            /* L10N:\n               \"stat\" is a system call. Do \"man 2 stat\" for more information. */\n\t    mutt_error (_(\"Can't stat %s: %s\"), fname, strerror (errno));\n\t    break;\n\t  }\n\n\t  mutt_expand_path (fname, sizeof (fname));\n\t  if(mutt_rename_file (idx[menu->current]->content->filename, fname))\n\t    break;\n\t  \n\t  mutt_str_replace (&idx[menu->current]->content->filename, fname);\n\t  menu->redraw = REDRAW_CURRENT;\n\n\t  if(idx[menu->current]->content->stamp >= st.st_mtime)\n\t    mutt_stamp_attachment(idx[menu->current]->content);\n\t  \n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n      case OP_COMPOSE_NEW_MIME:\n\t{\n\t  char type[STRING];\n\t  char *p;\n\t  int itype;\n\t  FILE *fp;\n\n\t  CLEARLINE (LINES-1);\n\t  fname[0] = 0;\n\t  if (mutt_get_field (_(\"New file: \"), fname, sizeof (fname), M_FILE)\n\t      != 0 || !fname[0])\n\t    continue;\n\t  mutt_expand_path (fname, sizeof (fname));\n\n\t  /* Call to lookup_mime_type () ?  maybe later */\n\t  type[0] = 0;\n\t  if (mutt_get_field (\"Content-Type: \", type, sizeof (type), 0) != 0 \n\t      || !type[0])\n\t    continue;\n\n\t  if (!(p = strchr (type, '/')))\n\t  {\n\t    mutt_error _(\"Content-Type is of the form base/sub\");\n\t    continue;\n\t  }\n\t  *p++ = 0;\n\t  if ((itype = mutt_check_mime_type (type)) == TYPEOTHER)\n\t  {\n\t    mutt_error (_(\"Unknown Content-Type %s\"), type);\n\t    continue;\n\t  }\n\t  if (idxlen == idxmax)\n\t  {\n\t    safe_realloc (&idx, sizeof (ATTACHPTR *) * (idxmax += 5));\n\t    menu->data = idx;\n\t  }\n\n\t  idx[idxlen] = (ATTACHPTR *) safe_calloc (1, sizeof (ATTACHPTR));\n\t  /* Touch the file */\n\t  if (!(fp = safe_fopen (fname, \"w\")))\n\t  {\n\t    mutt_error (_(\"Can't create file %s\"), fname);\n\t    FREE (&idx[idxlen]);\n\t    continue;\n\t  }\n\t  safe_fclose (&fp);\n\n\t  if ((idx[idxlen]->content = mutt_make_file_attach (fname)) == NULL)\n\t  {\n\t    mutt_error _(\"What we have here is a failure to make an attachment\");\n\t    continue;\n\t  }\n\t  update_idx (menu, idx, idxlen++);\n\n\t  idx[menu->current]->content->type = itype;\n\t  mutt_str_replace (&idx[menu->current]->content->subtype, p);\n\t  idx[menu->current]->content->unlink = 1;\n\t  menu->redraw |= REDRAW_INDEX | REDRAW_STATUS;\n\n\t  if (mutt_compose_attachment (idx[menu->current]->content))\n\t  {\n\t    mutt_update_encoding (idx[menu->current]->content);\n\t    menu->redraw = REDRAW_FULL;\n\t  }\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);    \n        break;\n\n      case OP_COMPOSE_EDIT_MIME:\n\tCHECK_COUNT;\n\tif (mutt_edit_attachment (idx[menu->current]->content))\n\t{\n\t  mutt_update_encoding (idx[menu->current]->content);\n\t  menu->redraw = REDRAW_FULL;\n\t}\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n      case OP_VIEW_ATTACH:\n      case OP_DISPLAY_HEADERS:\n\tCHECK_COUNT;\n\tmutt_attach_display_loop (menu, op, NULL, NULL, NULL, &idx, &idxlen, NULL, 0);\n\tmenu->redraw = REDRAW_FULL;\n        /* no send2hook, since this doesn't modify the message */\n\tbreak;\n\n      case OP_SAVE:\n\tCHECK_COUNT;\n\tmutt_save_attachment_list (NULL, menu->tagprefix, menu->tagprefix ?  msg->content : idx[menu->current]->content, NULL, menu);\n\tMAYBE_REDRAW (menu->redraw);\n        /* no send2hook, since this doesn't modify the message */\n\tbreak;\n\n      case OP_PRINT:\n\tCHECK_COUNT;\n\tmutt_print_attachment_list (NULL, menu->tagprefix, menu->tagprefix ? msg->content : idx[menu->current]->content);\n        /* no send2hook, since this doesn't modify the message */\n\tbreak;\n\n      case OP_PIPE:\n      case OP_FILTER:\n        CHECK_COUNT;\n\tmutt_pipe_attachment_list (NULL, menu->tagprefix, menu->tagprefix ? msg->content : idx[menu->current]->content, op == OP_FILTER);\n\tif (op == OP_FILTER) /* cte might have changed */\n\t  menu->redraw = menu->tagprefix ? REDRAW_FULL : REDRAW_CURRENT;\n        menu->redraw |= REDRAW_STATUS;\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n\tbreak;\n\n      case OP_EXIT:\n\tif ((i = query_quadoption (OPT_POSTPONE, _(\"Postpone this message?\"))) == M_NO)\n\t{\n          for (i = 0; i < idxlen; i++)\n            if (idx[i]->unowned)\n              idx[i]->content->unlink = 0;\n\n          if (!(flags & M_COMPOSE_NOFREEHEADER))\n          {\n            while (idxlen-- > 0)\n            {\n              /* avoid freeing other attachments */\n              idx[idxlen]->content->next = NULL;\n              idx[idxlen]->content->parts = NULL;\n              mutt_free_body (&idx[idxlen]->content);\n              FREE (&idx[idxlen]->tree);\n              FREE (&idx[idxlen]);\n            }\n            FREE (&idx);\n            idxlen = 0;\n            idxmax = 0;\n          }\n\t  r = -1;\n\t  loop = 0;\n\t  break;\n\t}\n\telse if (i == -1)\n\t  break; /* abort */\n\n\t/* fall through to postpone! */\n\n      case OP_COMPOSE_POSTPONE_MESSAGE:\n\n        if(check_attachments(idx, idxlen) != 0)\n        {\n\t  menu->redraw = REDRAW_FULL;\n\t  break;\n\t}\n      \n\tloop = 0;\n\tr = 1;\n\tbreak;\n\n      case OP_COMPOSE_ISPELL:\n\tendwin ();\n\tsnprintf (buf, sizeof (buf), \"%s -x %s\", NONULL(Ispell), msg->content->filename);\n\tif (mutt_system (buf) == -1)\n\t  mutt_error (_(\"Error running \\\"%s\\\"!\"), buf);\n\telse\n        {\n\t  mutt_update_encoding (msg->content);\n\t  menu->redraw |= REDRAW_STATUS;\n\t}\n\tbreak;\n\n      case OP_COMPOSE_WRITE_MESSAGE:\n\n       fname[0] = '\\0';\n       if (Context)\n       {\n\t strfcpy (fname, NONULL (Context->path), sizeof (fname));\n\t mutt_pretty_mailbox (fname, sizeof (fname));\n       }\n       if (idxlen)\n         msg->content = idx[0]->content;\n       if (mutt_enter_fname (_(\"Write message to mailbox\"), fname, sizeof (fname),\n                             &menu->redraw, 1) != -1 && fname[0])\n       {\n         mutt_message (_(\"Writing message to %s ...\"), fname);\n         mutt_expand_path (fname, sizeof (fname));\n\n         if (msg->content->next)\n           msg->content = mutt_make_multipart (msg->content);\n\n         if (mutt_write_fcc (fname, msg, NULL, 0, NULL, NULL) < 0)\n           msg->content = mutt_remove_multipart (msg->content);\n         else\n           mutt_message _(\"Message written.\");\n       }\n       break;\n\n\n\n      case OP_COMPOSE_PGP_MENU:\n        if (!(WithCrypto & APPLICATION_PGP))\n          break;\n\tif ((WithCrypto & APPLICATION_SMIME)\n            && (msg->security & APPLICATION_SMIME))\n\t{\n          if (msg->security & (ENCRYPT | SIGN))\n          {\n            if (mutt_yesorno (_(\"S/MIME already selected. Clear & continue ? \"),\n                              M_YES) != M_YES)\n            {\n              mutt_clear_error ();\n              break;\n            }\n            msg->security &= ~(ENCRYPT | SIGN);\n          }\n\t  msg->security &= ~APPLICATION_SMIME;\n\t  msg->security |= APPLICATION_PGP;\n          crypt_opportunistic_encrypt (msg);\n          redraw_crypt_lines (msg);\n\t}\n\tmsg->security = crypt_pgp_send_menu (msg, &menu->redraw);\n\tredraw_crypt_lines (msg);\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n\n      case OP_FORGET_PASSPHRASE:\n\tcrypt_forget_passphrase ();\n\tbreak;\n\n\n      case OP_COMPOSE_SMIME_MENU:\n        if (!(WithCrypto & APPLICATION_SMIME))\n          break;\n\n\tif ((WithCrypto & APPLICATION_PGP)\n            && (msg->security & APPLICATION_PGP))\n\t{\n          if (msg->security & (ENCRYPT | SIGN))\n          {\n            if (mutt_yesorno (_(\"PGP already selected. Clear & continue ? \"),\n                                M_YES) != M_YES)\n            {\n              mutt_clear_error ();\n              break;\n            }\n            msg->security &= ~(ENCRYPT | SIGN);\n          }\n\t  msg->security &= ~APPLICATION_PGP;\n\t  msg->security |= APPLICATION_SMIME;\n          crypt_opportunistic_encrypt (msg);\n          redraw_crypt_lines (msg);\n\t}\n\tmsg->security = crypt_smime_send_menu(msg, &menu->redraw);\n\tredraw_crypt_lines (msg);\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n\n\n#ifdef MIXMASTER\n      case OP_COMPOSE_MIX:\n      \n      \tmix_make_chain (&msg->chain, &menu->redraw);\n        mutt_message_hook (NULL, msg, M_SEND2HOOK);\n        break;\n#endif\n\n    }\n\n    /* Draw formatted compose status line */\n    if (menu->redraw & REDRAW_STATUS) \n    {\n\tcompose_status_line (buf, sizeof (buf), 0, menu, NONULL(ComposeFormat));\n\tmove(option (OPTSTATUSONTOP) ? 0 : LINES-2, 0);\n\tSETCOLOR (MT_COLOR_STATUS);\n\tmutt_paddstr (COLS, buf);\n\tNORMAL_COLOR;\n\tmenu->redraw &= ~REDRAW_STATUS;\n    }\n  }\n\n  mutt_menuDestroy (&menu);\n\n  if (idxlen)\n  {\n    msg->content = idx[0]->content;\n    for (i = 0; i < idxlen; i++)\n    {\n      idx[i]->content->aptr = NULL;\n      FREE (&idx[i]->tree);\n      FREE (&idx[i]);\n    }\n  }\n  else\n    msg->content = NULL;\n\n  FREE (&idx);\n\n  return (r);\n}\n\n"
  },
  {
    "path": "configure.ac",
    "content": "dnl Process this file with autoconf to produce a configure script.\n\ndnl !!! WHEN ADDING NEW CONFIGURE TESTS, PLEASE ADD CODE TO MAIN.C !!!\ndnl !!! TO DUMP THEIR RESULTS WHEN MUTT -V IS CALLED            !!!\n\nAC_INIT([mutt-kz],[m4_esyscmd(cat VERSION VERSION.kz | tr -d \\\\n)])\nAC_CONFIG_SRCDIR(mutt.h)\nAM_INIT_AUTOMAKE\nAC_CONFIG_HEADERS([config.h])\n\nAC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/VERSION'])\n\nMUTT_VERSION=`env sh \"$srcdir/version.sh\"`\nAC_DEFINE_UNQUOTED(MUTT_VERSION,\"$MUTT_VERSION\", [Full textual version string.])\n\nAC_USE_SYSTEM_EXTENSIONS\n\nALL_LINGUAS=\"de eu ru it es uk fr pl nl cs id sk ko el zh_TW zh_CN pt_BR eo gl sv da lt tr ja hu et ca bg ga\"\n\nAC_CANONICAL_HOST\n\nAC_MSG_CHECKING([for prefix])\nif test x$prefix = xNONE; then\n  mutt_cv_prefix=$ac_default_prefix\nelse\n  mutt_cv_prefix=$prefix\nfi\nAC_MSG_RESULT($mutt_cv_prefix)\n\nAC_PROG_CC\nAC_PROG_CC_C99\nAC_SEARCH_LIBS([strerror],[cposix])\nif test \"x$U\" != \"x\"; then\n  AC_MSG_ERROR(Compiler not ANSI compliant)\nfi\nAC_PROG_CPP\nAC_PROG_MAKE_SET\nAC_PROG_INSTALL\nAC_PROG_MKDIR_P\nAC_PROG_RANLIB\nAC_CHECK_TOOL(AR, ar, ar)\n\nAC_C_INLINE\nAC_C_CONST\nAC_C_BIGENDIAN\n\nAC_SYS_LARGEFILE\nAC_FUNC_FSEEKO\nAC_CHECK_SIZEOF(off_t)\n\nAC_PATH_PROG(DBX, dbx, no)\nAC_PATH_PROG(GDB, gdb, no)\nAC_PATH_PROG(SDB, sdb, no)\n\nif test $GDB != no ; then\n        DEBUGGER=$GDB\nelif test $DBX != no ; then\n        DEBUGGER=$DBX\nelif test $SDB != no ; then\n        DEBUGGER=$SDB\nelse\n        DEBUGGER=no\nfi\n\nAC_SUBST([DEBUGGER])\n\nAH_TEMPLATE([sig_atomic_t],\n            [/* Define to `int' if <signal.h> doesn't define.])\nAH_TEMPLATE([HAVE_START_COLOR],\n            [Define if you have start_color, as a function or macro.])\nAH_TEMPLATE([HAVE_TYPEAHEAD],\n            [Define if you have typeahead, as a function or macro.])\nAH_TEMPLATE([HAVE_BKGDSET],\n            [Define if you have bkgdset, as a function or macro.])\nAH_TEMPLATE([HAVE_CURS_SET],\n            [Define if you have curs_set, as a function or macro.])\nAH_TEMPLATE([HAVE_META],\n            [Define if you have meta, as a function or macro.])\nAH_TEMPLATE([HAVE_USE_DEFAULT_COLORS],\n            [Define if you have use_default_colors, as a function or macro.])\nAH_TEMPLATE([HAVE_RESIZETERM],\n            [Define if you have resizeterm, as a function or macro.])\nAH_TEMPLATE([SIG_ATOMIC_VOLATILE_T],\n            [Some systems declare sig_atomic_t as volatile, some others -- no.\n             This define will have value `sig_atomic_t' or\n             `volatile sig_atomic_t' accordingly.])\nAH_TEMPLATE([ICONV_NONTRANS],\n            [Define as 1 if iconv() only converts exactly and we should treat\n             all return values other than (size_t)(-1) as equivalent.])\n\nAH_BOTTOM([/* fseeko portability defines */\n#ifdef HAVE_FSEEKO\n# define LOFF_T off_t\n# if HAVE_C99_INTTYPES && HAVE_INTTYPES_H\n#  if SIZEOF_OFF_T == 8\n#   define OFF_T_FMT \"%\" PRId64\n#  else\n#   define OFF_T_FMT \"%\" PRId32\n#  endif\n# else\n#  if (SIZEOF_OFF_T == 8) && (SIZEOF_LONG == 4)\n#   define OFF_T_FMT \"%lld\"\n#  else\n#   define OFF_T_FMT \"%ld\"\n#  endif\n# endif\n#else\n# define LOFF_T long\n# define fseeko fseek\n# define ftello ftell\n# define OFF_T_FMT \"%ld\"\n#endif\n])\nMUTT_C99_INTTYPES\nAC_TYPE_LONG_LONG_INT\n\nac_aux_path_sendmail=/usr/sbin:/usr/lib\nAC_PATH_PROG(SENDMAIL, sendmail, /usr/sbin/sendmail, $PATH:$ac_aux_path_sendmail)\nAC_DEFINE_UNQUOTED(SENDMAIL,\"$ac_cv_path_SENDMAIL\", [Where to find sendmail on your system.])\n\nOPS='$(srcdir)/OPS'\n\nAC_MSG_CHECKING([whether to build with GPGME support])\nAC_ARG_ENABLE(gpgme, AS_HELP_STRING([--enable-gpgme],[Enable GPGME support]),\n[       if test x$enableval = xyes; then\n\t\tenable_gpgme=yes\n\tfi\n])\n\nif test x\"$enable_gpgme\" = xyes; then\n   AC_MSG_RESULT(yes)\n   AM_PATH_GPGME(1.0.0, AC_DEFINE(CRYPT_BACKEND_GPGME, 1,\n\t\t [Defined, if GPGME support is enabled]),\n\t\t [gpgme_found=no])\n   if test x\"$gpgme_found\" = xno; then\n      AC_MSG_ERROR([*** GPGME not found ***])\n   else\n      AM_PATH_GPGME(1.1.1, AC_DEFINE(HAVE_GPGME_PKA_TRUST, 1,\n\t\t\t\t  [Define if GPGME supports PKA]))\n      #needed to get GPGME_LIBS and al correctly\n      AM_PATH_GPGME(1.0.0, AC_DEFINE(CRYPT_BACKEND_GPGME, 1,\n                    [Define if you use GPGME to support OpenPGP]))\n      dnl AC_CHECK_FUNCS([gpgme_op_export_keys])\n      saved_LIBS=\"$LIBS\"\n      LIBS=\"$LIBS $GPGME_LIBS\"\n      AC_CHECK_FUNCS([gpgme_op_export_keys])\n      LIBS=\"$saved_LIBS\"\n      MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS crypt-gpgme.o crypt-mod-pgp-gpgme.o crypt-mod-smime-gpgme.o\"\n   fi\nelse\n   AC_MSG_RESULT([no])\nfi\n\nAC_ARG_ENABLE(pgp, AS_HELP_STRING([--disable-pgp],[Disable PGP support]),\n[       if test x$enableval = xno ; then\n                have_pgp=no\n        fi\n])\n\nif test x$have_pgp != xno ; then\n        AC_DEFINE(CRYPT_BACKEND_CLASSIC_PGP,1, [Define if you want classic PGP support.])\n        PGPAUX_TARGET=\"pgpring\\$(EXEEXT) pgpewrap\\$(EXEEXT)\"\n        MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS pgp.o pgpinvoke.o pgpkey.o pgplib.o gnupgparse.o pgpmicalg.o pgppacket.o crypt-mod-pgp-classic.o\"\nfi\n\nAC_ARG_ENABLE(smime, AS_HELP_STRING([--disable-smime],[Disable SMIME support]),\n[\tif test x$enableval = xno ; then\n\t\thave_smime=no\n\tfi\n])\n \nif test x$have_smime != xno ; then\n\tAC_DEFINE(CRYPT_BACKEND_CLASSIC_SMIME, 1, [Define if you want classic S/MIME support.])\n\tMUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS smime.o crypt-mod-smime-classic.o\"\n\tSMIMEAUX_TARGET=\"smime_keys\"\nfi\n\nAC_ARG_ENABLE(sidebar, AC_HELP_STRING([--enable-sidebar], [Enable Sidebar support]),\n[       if test x$enableval = xyes ; then\n\t\tAC_DEFINE(USE_SIDEBAR,1,[ Define if you want support for the sidebar. ])\n\t\tOPS=\"$OPS \\$(srcdir)/OPS.SIDEBAR\"\n\t\tneed_sidebar=\"yes\"\n        fi\n])\nAM_CONDITIONAL(BUILD_SIDEBAR, test x$need_sidebar = xyes)\n\nAC_ARG_ENABLE(notmuch, AC_HELP_STRING([--enable-notmuch], [Enable NOTMUCH support]),\n[       if test x$enableval = xyes ; then\n\t\tAC_CHECK_LIB(notmuch, notmuch_database_open,,\n\t\t\tAC_MSG_ERROR([Unable to find Notmuch library]))\n\t\tAC_DEFINE(USE_NOTMUCH,1,[ Define if you want support for the notmuch. ])\n\t\tNOTMUCH_LIBS=\"-lnotmuch\"\n\t\tOPS=\"$OPS \\$(srcdir)/OPS.NOTMUCH\"\n\t\tneed_notmuch=\"yes\"\n\n\t\tAC_MSG_CHECKING([for notmuch api version 3])\n\t\tAC_COMPILE_IFELSE( [AC_LANG_PROGRAM(\n\t\t\t\t\t[[#include <notmuch.h>]],\n\t\t\t\t\t[[notmuch_database_open(\"/path\", NOTMUCH_DATABASE_MODE_READ_ONLY, (notmuch_database_t**)NULL);]]\n\t\t\t\t\t)],\n\t\t[notmuch_api_3=yes\n\t\t\tAC_DEFINE([NOTMUCH_API_3], 1, [Define to 1 if you have the notmuch api version 3.])\n\t\t\t],\n\t\t[notmuch_api_3=no]\n\t\t)\n\t\tAC_MSG_RESULT([$notmuch_api_3])\n        fi\n])\nAM_CONDITIONAL(BUILD_NOTMUCH, test x$need_notmuch = xyes)\n\n\nAC_ARG_WITH(mixmaster, AS_HELP_STRING([--with-mixmaster@<:@=PATH@:>@],[Include Mixmaster support]),\n  [if test \"$withval\" != no\n   then\n     if test -x \"$withval\"\n     then\n       MIXMASTER=\"$withval\"\n     else\n       MIXMASTER=\"mixmaster\"\n     fi\n     OPS=\"$OPS \\$(srcdir)/OPS.MIX\"\n     MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS remailer.o\"\n     AC_DEFINE_UNQUOTED(MIXMASTER,\"$MIXMASTER\", [Where to find mixmaster on your system.])\n   fi])\n\n# We now require all OPS\nOPS=\"$OPS \\$(srcdir)/OPS.PGP \\$(srcdir)/OPS.SMIME \\$(srcdir)/OPS.CRYPT \"\nAC_SUBST([OPS])\n\nAC_SUBST(PGPAUX_TARGET)\nAC_SUBST(SMIMEAUX_TARGET)\n\nAC_PATH_PROG(ISPELL, ispell, no)\nif test $ISPELL != no; then\n        AC_DEFINE_UNQUOTED(ISPELL,\"$ISPELL\",[ Where to find ispell on your system. ])\nfi\n\nAC_ARG_WITH(slang, AS_HELP_STRING([--with-slang@<:@=DIR@:>@],[Use S-Lang instead of ncurses]),\n        [AC_CACHE_CHECK([if this is a BSD system], mutt_cv_bsdish,\n                [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <sys/param.h>\n#include <stdlib.h>\n\nmain ()\n{\n#ifdef BSD\n        exit (0);\n#else\n        exit (1);\n#endif\n}]])],[mutt_cv_bsdish=yes],[mutt_cv_bsdish=no],[mutt_cv_bsdish=no])])\n\n        AC_MSG_CHECKING(for S-Lang)\n        if test $withval = yes; then\n                if test -d $srcdir/../slang; then\n                        mutt_cv_slang=$srcdir/../slang/src\n                        CPPFLAGS=\"$CPPFLAGS -I${mutt_cv_slang}\"\n                        LDFLAGS=\"$LDFLAGS -L${mutt_cv_slang}/objs\"\n                else\n                        if test -d $mutt_cv_prefix/include/slang; then\n                                CPPFLAGS=\"$CPPFLAGS -I$mutt_cv_prefix/include/slang\"\n                        elif test -d /usr/include/slang; then\n                                CPPFLAGS=\"$CPPFLAGS -I/usr/include/slang\"\n                        fi\n                        mutt_cv_slang=yes\n                fi\n        else\n                dnl ---Check to see if $withval is a source directory\n                if test -f $withval/src/slang.h; then\n                        mutt_cv_slang=$withval/src\n                        CPPFLAGS=\"$CPPFLAGS -I${mutt_cv_slang}\"\n                        LDFLAGS=\"$LDFLAGS -L${mutt_cv_slang}/objs\"\n                else\n                        dnl ---Must be installed somewhere\n                        mutt_cv_slang=$withval\n                        if test -d $withval/include/slang; then\n                                CPPFLAGS=\"$CPPFLAGS -I${withval}/include/slang\"\n                        elif test -d $withval/include; then\n                                CPPFLAGS=\"$CPPFLAGS -I${withval}/include\"\n                        fi\n                        LDFLAGS=\"$LDFLAGS -L${withval}/lib\"\n                fi\n        fi\n        AC_MSG_RESULT($mutt_cv_slang)\n        if test $mutt_cv_bsdish = yes; then\n                AC_CHECK_LIB(termlib, main)\n        fi\n        AC_DEFINE(USE_SLANG_CURSES,1,\n                [ Define if you compile with SLang instead of curses/ncurses. ])\n        AC_DEFINE(HAVE_COLOR,1,[ Define if your curses library supports color. ])\n        MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS resize.o\"\n\n        dnl --- now that we've found it, check the link\n\n        AC_CHECK_LIB(slang, SLtt_get_terminfo,\n                [MUTTLIBS=\"$MUTTLIBS -lslang -lm\"],\n                [AC_MSG_ERROR(unable to compile.  check config.log)], -lm)\n\n        ],\n\n        [mutt_cv_curses=/usr\n        AC_ARG_WITH(curses, AS_HELP_STRING([--with-curses=DIR],[Where ncurses is installed]),\n                [if test $withval != yes; then\n                        mutt_cv_curses=$withval\n                fi\n                if test x$mutt_cv_curses != x/usr; then\n                        LDFLAGS=\"$LDFLAGS -L${mutt_cv_curses}/lib\"\n                        CPPFLAGS=\"$CPPFLAGS -I${mutt_cv_curses}/include\"\n                fi])\n\n\tAC_CHECK_FUNC(initscr,,[\n\tcf_ncurses=\"ncurses\"\n\tfor lib in ncurses ncursesw\n\tdo\n\t\tAC_CHECK_LIB($lib, waddnwstr, [cf_ncurses=\"$lib\"; break])\n\tdone\n        AC_CHECK_LIB($cf_ncurses, initscr,\n                [MUTTLIBS=\"$MUTTLIBS -l$cf_ncurses\"\n\t\t\n                if test \"$cf_ncurses\" = ncursesw; then\n\t\t\tAC_CHECK_HEADERS(ncursesw/ncurses.h,[cf_cv_ncurses_header=\"ncursesw/ncurses.h\"])\n\t\telse\n                  AC_CHECK_HEADERS(ncurses/ncurses.h,[cf_cv_ncurses_header=\"ncurses/ncurses.h\"],\n                    [AC_CHECK_HEADERS(ncurses.h,[cf_cv_ncurses_header=\"ncurses.h\"])])\n\t\tfi],\n\n                [CF_CURSES_LIBS])\n\t\t])\n\n        old_LIBS=\"$LIBS\"\n        LIBS=\"$LIBS $MUTTLIBS\"\n        CF_CHECK_FUNCDECLS([#include <${cf_cv_ncurses_header-curses.h}>],\n                           [start_color typeahead bkgdset curs_set meta use_default_colors resizeterm])\n        if test \"$ac_cv_func_decl_start_color\" = yes; then\n                AC_DEFINE(HAVE_COLOR,1,[ Define if your curses library supports color. ])\n        fi\n        if test \"$ac_cv_func_decl_resizeterm\" = yes; then\n                MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS resize.o\"\n        fi\n        AC_CHECK_FUNCS([use_extended_names])\n        LIBS=\"$old_LIBS\"\n        ])\n\nAC_HEADER_STDC\n\nAC_CHECK_HEADERS(stdarg.h sys/ioctl.h ioctl.h sysexits.h)\nAC_CHECK_HEADERS(sys/time.h sys/resource.h sys/syscall.h)\nAC_CHECK_HEADERS(unix.h)\n\nAC_CHECK_FUNCS(setrlimit getsid)\nAC_CHECK_FUNCS(fgets_unlocked fgetc_unlocked)\n\nAC_MSG_CHECKING(for sig_atomic_t in signal.h)\nAC_EGREP_HEADER(sig_atomic_t,signal.h,\n  [\n    ac_cv_type_sig_atomic_t=yes;\n    AC_EGREP_HEADER(volatile.*sig_atomic_t,\n                    signal.h,\n                    [\n                        is_sig_atomic_t_volatile=yes;\n                        AC_MSG_RESULT([yes, volatile])\n                    ],\n                    [\n                        is_sig_atomic_t_volatile=no;\n                        AC_MSG_RESULT([yes, non volatile])\n                    ])\n  ],\n  [\n    AC_MSG_RESULT(no)\n    AC_CHECK_TYPE(sig_atomic_t, int)\n    is_sig_atomic_t_volatile=no\n  ])\nif test $is_sig_atomic_t_volatile = 'yes'\nthen\n    AC_DEFINE(SIG_ATOMIC_VOLATILE_T, sig_atomic_t)\nelse\n    AC_DEFINE(SIG_ATOMIC_VOLATILE_T, [volatile sig_atomic_t])\nfi\n\nAC_CHECK_DECLS([sys_siglist],[],[],[#include <signal.h>\n/* NetBSD declares sys_siglist in unistd.h.  */\n#ifdef HAVE_UNISTD_H\n# include <unistd.h>\n#endif\n])\n\n\nAC_TYPE_PID_T\nAC_CHECK_TYPE(ssize_t, int)\n\nAC_CHECK_FUNCS(fgetpos memmove setegid srand48 strerror)\n\nAC_REPLACE_FUNCS([setenv strcasecmp strdup strndup strnlen strsep strtok_r wcscasecmp])\nAC_REPLACE_FUNCS([strcasestr mkdtemp])\n\nAC_CHECK_FUNC(getopt)\nif test $ac_cv_func_getopt = yes; then\n        AC_CHECK_HEADERS(getopt.h)\nfi\n\nSNPRINTFOBJS=\"\"\nAC_CHECK_FUNC(snprintf, [mutt_cv_func_snprintf=yes], [mutt_cv_func_snprintf=no])\nAC_CHECK_FUNC(vsnprintf, [mutt_cv_func_vsnprintf=yes], [mutt_cv_func_vsnprintf=no])\nif test $mutt_cv_func_snprintf = yes; then\nAC_CACHE_CHECK([whether your system's snprintf is C99 compliant],\n        [mutt_cv_c99_snprintf],\n        AC_RUN_IFELSE([AC_LANG_SOURCE([[\n#include <stdio.h>\nint main()\n{\nchangequote(, )dnl\n  char buf[8];\n  int len = snprintf(buf, 4, \"1234567\");\n  return (len != 7 || buf[3] != '\\0');\nchangequote([, ])dnl\n}\n        ]])],[mutt_cv_c99_snprintf=yes],[mutt_cv_c99_snprintf=no],[mutt_cv_c99_snprintf=no]))\nelse\n        mutt_cv_c99_snprintf=no\nfi\nif test $mutt_cv_func_vsnprintf = yes; then\nAC_CACHE_CHECK([whether your system's vsnprintf is C99 compliant],\n        [mutt_cv_c99_vsnprintf],\n        AC_RUN_IFELSE([AC_LANG_SOURCE([[\n#include <stdarg.h>\n#include <stdio.h>\nint foo(const char *fmt, ...)\n{\nchangequote(, )dnl\n  char buf[8];\n  int len;\n  va_list ap;\n  va_start(ap, fmt);\n  len = vsnprintf(buf, 4, fmt, ap);\n  va_end(ap);\n  return (len != 7 || buf[3] != '\\0');\nchangequote([, ])dnl\n}\n\nint main()\n{\n  return foo(\"%s\", \"1234567\");\n}\n        ]])],[mutt_cv_c99_vsnprintf=yes],[mutt_cv_c99_vsnprintf=no],[mutt_cv_c99_vsnprintf=no]))\nelse\n        mutt_cv_c99_vsnprintf=no\nfi\nif test $mutt_cv_c99_snprintf = yes; then\n        AC_DEFINE(HAVE_SNPRINTF, 1, [ Define to 1 if you have a C99 compliant snprintf function. ])\nfi\nif test $mutt_cv_c99_vsnprintf = yes; then\n        AC_DEFINE(HAVE_VSNPRINTF, 1, [ Define to 1 if you have a C99 compliant vsnprintf function. ])\nfi\nif test $mutt_cv_c99_snprintf = no -o $mutt_cv_c99_vsnprintf = no; then\n        AC_LIBOBJ(snprintf)\nfi\n\nXIPH_FUNC_VA_COPY\n\ndnl SCO uses chsize() instead of ftruncate()\nAC_CHECK_FUNCS(ftruncate, , [AC_CHECK_LIB(x, chsize)])\n\ndnl SCO has strftime() in libintl\nAC_CHECK_FUNCS(strftime, , [AC_CHECK_LIB(intl, strftime)])\n\ndnl AIX may not have fchdir()\nAC_CHECK_FUNCS(fchdir, , [mutt_cv_fchdir=no])\n\nAC_ARG_WITH(regex, AS_HELP_STRING([--with-regex],[Use the GNU regex library]),\n        [mutt_cv_regex=yes],\n        [AC_CHECK_FUNCS(regcomp, mutt_cv_regex=no, mutt_cv_regex=yes)])\n\nif test $mutt_cv_regex = no ; then\nAC_CACHE_CHECK([whether your system's regexp library is completely broken],\n        [mutt_cv_regex_broken],\n        AC_RUN_IFELSE([AC_LANG_SOURCE([[\n#include <unistd.h>\n#include <regex.h>\nmain() { regex_t blah ; regmatch_t p; p.rm_eo = p.rm_eo; return regcomp(&blah, \"foo.*bar\", REG_NOSUB) || regexec (&blah, \"foobar\", 0, NULL, 0); }]])],[mutt_cv_regex_broken=no],[mutt_cv_regex_broken=yes],[mutt_cv_regex_broken=yes]))\n        if test $mutt_cv_regex_broken = yes ; then\n                echo \"Using the included GNU regex instead.\" >&AS_MESSAGE_FD\n                mutt_cv_regex=yes\n        fi\nfi\n\nif test $mutt_cv_regex = yes; then\n        AC_DEFINE(USE_GNU_REGEX,1,[ Define if you want to use the included regex.c. ])\n        AC_LIBOBJ(regex)\nfi\n\n\nAC_ARG_WITH(homespool,\n  AS_HELP_STRING([--with-homespool@<:@=FILE@:>@],[File in user's directory where new mail is spooled]), with_homespool=${withval})\nif test x$with_homespool != x; then\n        if test $with_homespool = yes; then\n                with_homespool=mailbox\n        fi\n        AC_DEFINE_UNQUOTED(MAILPATH,\"$with_homespool\",[ Where new mail is spooled. ])\n        AC_DEFINE(HOMESPOOL,1,\n          [Is mail spooled to the user's home directory?  If defined,\n           MAILPATH should be set to the filename of the spool mailbox\n           relative the the home directory.\n           use: configure --with-homespool=FILE])\n        AC_DEFINE(USE_DOTLOCK,1,[ Define to use dotlocking for mailboxes. ])\n        mutt_cv_setgid=no\nelse\n        AC_ARG_WITH(mailpath, AS_HELP_STRING([--with-mailpath=DIR],[Directory where spool mailboxes are located]),\n                [mutt_cv_mailpath=$withval],\n                [ AC_CACHE_CHECK(where new mail is stored, mutt_cv_mailpath,\n                        [mutt_cv_mailpath=no\n                        if test -d /var/mail; then\n                                mutt_cv_mailpath=/var/mail\n                        elif test -d /var/spool/mail; then\n                                mutt_cv_mailpath=/var/spool/mail\n                        elif test -d /usr/spool/mail; then\n                                mutt_cv_mailpath=/usr/spool/mail\n                        elif test -d /usr/mail; then\n                                mutt_cv_mailpath=/usr/mail\n                        fi])\n                ])\n        if test \"$mutt_cv_mailpath\" = no; then\n                AC_MSG_ERROR(\"Could not determine where new mail is stored.\")\n        fi\n        AC_DEFINE_UNQUOTED(MAILPATH,\"$mutt_cv_mailpath\",[ Where new mail is spooled. ])\n\n        AC_CACHE_CHECK(if $mutt_cv_mailpath is world writable, mutt_cv_worldwrite, [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <sys/types.h>\n#include <sys/stat.h>\n#include <stdlib.h>\n\nint main (int argc, char **argv)\n{\n        struct stat s;\n\n        if (stat (\"$mutt_cv_mailpath\", &s)) exit (1);\n        if (s.st_mode & S_IWOTH) exit (0);\n        exit (1);\n}]])],[mutt_cv_worldwrite=yes],[mutt_cv_worldwrite=no],[mutt_cv_worldwrite=no])])\n\n        mutt_cv_setgid=no\n        if test $mutt_cv_worldwrite = yes; then\n                AC_DEFINE(USE_DOTLOCK,1,[ Define to use dotlocking for mailboxes. ])\n        else\n\n                AC_CACHE_CHECK(if $mutt_cv_mailpath is group writable, mutt_cv_groupwrite, [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <sys/types.h>\n#include <sys/stat.h>\n#include <stdlib.h>\n\nint main (int argc, char **argv)\n{\n        struct stat s;\n\n        if (stat (\"$mutt_cv_mailpath\", &s)) exit (1);\n        if (s.st_mode & S_IWGRP) exit (0);\n        exit (1);\n}]])],[mutt_cv_groupwrite=yes],[mutt_cv_groupwrite=no],[mutt_cv_groupwrite=no])])\n\n                if test $mutt_cv_groupwrite = yes; then\n                        AC_DEFINE(USE_DOTLOCK,1,[ Define to use dotlocking for mailboxes. ])\n                        AC_DEFINE(USE_SETGID,1,[ Define if mutt should run setgid \"mail\". ])\n                        mutt_cv_setgid=yes\n                fi\n        fi\nfi\n\nAC_ARG_ENABLE(external_dotlock, AS_HELP_STRING([--enable-external-dotlock],[Force use of an external dotlock program]),\n        [mutt_cv_external_dotlock=\"$enableval\"])\n\nif test \"x$mutt_cv_setgid\" = \"xyes\" || test \"x$mutt_cv_fchdir\" = \"xno\" \\\n        || test \"x$mutt_cv_external_dotlock\" = \"xyes\"\nthen\n        AC_DEFINE(DL_STANDALONE,1,[ Define if you want to use an external dotlocking program. ])\n        DOTLOCK_TARGET=\"mutt_dotlock\\$(EXEEXT)\"\nelse\n        MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS dotlock.o\"\nfi\n\nAC_SUBST(DOTLOCK_TARGET)\n\ndnl autoconf <2.60 compatibility\nif test -z \"$datarootdir\"; then\n  datarootdir='${prefix}/share'\nfi\nAC_SUBST([datarootdir])\n\nAC_MSG_CHECKING(where to put the documentation)\nAC_ARG_WITH(docdir, AS_HELP_STRING([--with-docdir=PATH],[Specify where to put the documentation]),\n        [mutt_cv_docdir=$withval],\n        [mutt_cv_docdir='${datarootdir}/doc/mutt'])\nAC_MSG_RESULT($mutt_cv_docdir)\nif test -z \"$docdir\" -o -n \"$with_docdir\"\nthen\n  docdir=$mutt_cv_docdir\nfi\nAC_SUBST(docdir)\n\nif test x$mutt_cv_setgid = xyes; then\n        DOTLOCK_GROUP='mail'\n        DOTLOCK_PERMISSION=2755\nelse\n        DOTLOCK_GROUP=''\n        DOTLOCK_PERMISSION=755\nfi\nAC_SUBST(DOTLOCK_GROUP)\nAC_SUBST(DOTLOCK_PERMISSION)\n\nAC_ARG_WITH(domain, AS_HELP_STRING([--with-domain=DOMAIN],[Specify your DNS domain name]),\n        [if test $withval != yes; then\n            if test $withval != no; then\n                AC_DEFINE_UNQUOTED(DOMAIN,\"$withval\",[ Define your domain name. ])\n            fi\n        fi])\n\nneed_socket=\"no\"\n\ndnl -- socket dependencies --\n\nAC_ARG_ENABLE(pop,  AS_HELP_STRING([--enable-pop],[Enable POP3 support]),\n[       if test x$enableval = xyes ; then\n                AC_DEFINE(USE_POP,1,[ Define if you want support for the POP3 protocol. ])\n                MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS pop.o pop_lib.o pop_auth.o\"\n                need_pop=\"yes\"\n                need_socket=\"yes\"\n                need_md5=\"yes\"\n        fi\n])\n\nAC_ARG_ENABLE(imap, AS_HELP_STRING([--enable-imap],[Enable IMAP support]),\n[       if test x$enableval = xyes ; then\n                AC_DEFINE(USE_IMAP,1,[ Define if you want support for the IMAP protocol. ])\n                LIBIMAP=\"-Limap -limap\"\n                LIBIMAPDEPS=\"\\$(top_srcdir)/imap/imap.h imap/libimap.a\"\n                need_imap=\"yes\"\n                need_socket=\"yes\"\n                need_md5=\"yes\"\n        fi\n])\nAM_CONDITIONAL(BUILD_IMAP, test x$need_imap = xyes)\n\nAC_ARG_ENABLE(smtp, AS_HELP_STRING([--enable-smtp],[include internal SMTP relay support]),\n\t[if test $enableval = yes; then\n\t\tAC_DEFINE(USE_SMTP, 1, [Include internal SMTP relay support])\n            \tMUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS smtp.o\"\n\t\tneed_socket=\"yes\"\n\tfi])\n\nif test x\"$need_imap\" = xyes -o x\"$need_pop\" = xyes ; then\n  MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS bcache.o\"\nfi\n\ndnl -- end socket dependencies --\n\nif test \"$need_socket\" = \"yes\"\nthen\n        AC_CHECK_HEADERS([sys/select.h])\n        AC_MSG_CHECKING([for socklen_t])\n        AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),\n                AC_MSG_RESULT([no])\n                AC_DEFINE(socklen_t,int,\n                        [ Define to 'int' if <sys/socket.h> doesn't have it. ]))\n        AC_CHECK_FUNC(gethostent, , AC_CHECK_LIB(nsl, gethostent))\n        AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))\n        AC_CHECK_FUNCS(getaddrinfo)\n        AC_DEFINE(USE_SOCKET,1,\n                [ Include code for socket support. Set automatically if you enable POP3 or IMAP ])\n        MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS account.o mutt_socket.o mutt_tunnel.o\"\nfi\n\ndnl -- imap dependencies --\n\nAC_ARG_WITH(gss, AS_HELP_STRING([--with-gss@<:@=PFX@:>@],[Compile in GSSAPI authentication for IMAP]), \n    gss_prefix=\"$withval\", gss_prefix=\"no\")\nif test \"$gss_prefix\" != \"no\"\nthen\n  if test \"$need_imap\" = \"yes\"\n  then\n    MUTT_AM_PATH_GSSAPI(gss_prefix)\n    AC_MSG_CHECKING(GSSAPI implementation)\n    AC_MSG_RESULT($GSSAPI_IMPL)\n    if test \"$GSSAPI_IMPL\" = \"none\"\n    then\n      AC_CACHE_SAVE\n      AC_MSG_RESULT([GSSAPI libraries not found])\n    fi\n    if test \"$GSSAPI_IMPL\" = \"Heimdal\"\n    then\n      AC_DEFINE(HAVE_HEIMDAL,1,[ Define if your GSSAPI implementation is Heimdal ])\n    fi\n    CPPFLAGS=\"$CPPFLAGS $GSSAPI_CFLAGS\"\n    MUTTLIBS=\"$MUTTLIBS $GSSAPI_LIBS\"\n    AC_DEFINE(USE_GSS,1,[ Define if you have GSSAPI libraries available ])\n    need_gss=\"yes\"\n  else\n    AC_MSG_WARN([GSS was requested but IMAP is not enabled])\n  fi\nfi\nAM_CONDITIONAL(USE_GSS, test x$need_gss = xyes)\n\ndnl -- end imap dependencies --\n\nAC_ARG_WITH(ssl, AS_HELP_STRING([--with-ssl@<:@=PFX@:>@],[Enable TLS support using OpenSSL]),\n[       if test \"$with_ssl\" != \"no\"\n        then\n          if test \"$need_socket\" != \"yes\"; then\n           AC_MSG_WARN([SSL support is only useful with POP, IMAP or SMTP support])\n\t  else\n            if test \"$with_ssl\" != \"yes\"\n            then\n             LDFLAGS=\"$LDFLAGS -L$withval/lib\"\n             CPPFLAGS=\"$CPPFLAGS -I$withval/include\"\n            fi\n            saved_LIBS=\"$LIBS\"\n\n            crypto_libs=\"\"\n            AC_CHECK_LIB(z, deflate, [crypto_libs=-lz])\n            AC_CHECK_LIB(crypto, X509_new,\n              [crypto_libs=\"-lcrypto $crypto_libs\"],, [$crypto_libs])\n            AC_CHECK_LIB(ssl, SSL_new,,\n              AC_MSG_ERROR([Unable to find SSL library]), [$crypto_libs])\n\n            LIBS=\"$LIBS $crypto_libs\"\n            AC_CHECK_FUNCS(RAND_status RAND_egd)\n\n            AC_DEFINE(USE_SSL,1,[ Define if you want support for SSL. ])\n            AC_DEFINE(USE_SSL_OPENSSL,1,[ Define if you want support for SSL via OpenSSL. ])\n            LIBS=\"$saved_LIBS\"\n            MUTTLIBS=\"$MUTTLIBS -lssl $crypto_libs\"\n            MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS mutt_ssl.o\"\n            need_ssl=yes\n          fi\n        fi\n])\n\nAC_ARG_WITH([gnutls], AS_HELP_STRING([--with-gnutls@<:@=PFX@:>@],[enable TLS support using gnutls]),\n    [gnutls_prefix=\"$withval\"], [gnutls_prefix=\"no\"])\nif test \"$gnutls_prefix\" != \"no\" && test x\"$need_ssl\" != xyes\nthen\n  if test \"$need_socket\" != \"yes\"\n  then\n    AC_MSG_WARN([SSL support is only useful with POP, IMAP or SMTP support])\n  else\n    if test \"$gnutls_prefix\" != \"yes\"\n    then\n      LDFLAGS=\"$LDFLAGS -L$gnutls_prefix/lib\"\n      CPPFLAGS=\"$CPPFLAGS -I$gnutls_prefix/include\"\n    fi\n    saved_LIBS=\"$LIBS\"\n\n    AC_CHECK_LIB(gnutls, gnutls_check_version,\n      [dnl GNUTLS found\n      AC_CHECK_DECLS([GNUTLS_VERIFY_DISABLE_TIME_CHECKS], [], [],\n                    [[#include <gnutls/x509.h>]])\n\n      LIBS=\"$LIBS -lgnutls\"\n      AC_CHECK_FUNCS(gnutls_priority_set_direct)\n      AC_CHECK_TYPES([gnutls_certificate_credentials_t,\n                      gnutls_certificate_status_t,\n                      gnutls_datum_t,\n                      gnutls_digest_algorithm_t,\n                      gnutls_session_t,\n                      gnutls_transport_ptr_t,\n                      gnutls_x509_crt_t], [], [], [[#include <gnutls/gnutls.h>]])\n\n      LIBS=\"$saved_LIBS\"\n      MUTTLIBS=\"$MUTTLIBS -lgnutls\"\n\n      AC_DEFINE(USE_SSL, 1, [ Define if you want support for SSL. ])\n      AC_DEFINE(USE_SSL_GNUTLS, 1, [ Define if you want support for SSL via GNUTLS. ])\n\n      MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS mutt_ssl_gnutls.o\"\n      need_ssl=yes],\n      [AC_MSG_ERROR([could not find libgnutls])])\n  fi\nfi\n\nAM_CONDITIONAL(USE_SSL, test x$need_ssl = xyes)\n\nAC_ARG_WITH(sasl, AS_HELP_STRING([--with-sasl@<:@=PFX@:>@],[Use SASL network security library]),\n        [\t\n        if test \"$with_sasl\" != \"no\"\n        then\n          if test \"$need_socket\" != \"yes\"\n          then\n            AC_MSG_ERROR([SASL support is only useful with POP or IMAP support])\n          fi\n\n          if test \"$with_sasl\" != \"yes\"\n          then\n            CPPFLAGS=\"$CPPFLAGS -I$with_sasl/include\"\n            LDFLAGS=\"$LDFLAGS -L$with_sasl/lib\"\n          fi\n\n          saved_LIBS=\"$LIBS\"\n          LIBS=\n\n          # OpenSolaris provides a SASL2 interface in libsasl\n          sasl_libs=\"sasl2 sasl\"\n          AC_SEARCH_LIBS(sasl_encode64, [$sasl_libs],,\n                  AC_MSG_ERROR([could not find sasl lib]),)\n\n          MUTTLIBS=\"$MUTTLIBS $LIBS\"\n          MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS mutt_sasl.o\"\n          LIBS=\"$saved_LIBS\"\n\n          AC_DEFINE(USE_SASL,1,\n                  [ Define if want to use the SASL library for POP/IMAP authentication. ])\n          need_sasl=yes\n        fi\n        ])\nAM_CONDITIONAL(USE_SASL, test x$need_sasl = xyes)\n\ndnl -- end socket --\n\nAC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],[Enable debugging support]),\n        [ if test x$enableval = xyes ; then\n                AC_DEFINE(DEBUG,1,[ Define to enable debugging info. ])\n          fi\n         ])\n\nAC_ARG_ENABLE(flock, AS_HELP_STRING([--enable-flock],[Use flock() to lock files]),\n        [if test $enableval = yes; then\n                AC_DEFINE(USE_FLOCK,1, [ Define to use flock() to lock mailboxes. ])\n        fi])\n\nmutt_cv_fcntl=yes\nAC_ARG_ENABLE(fcntl, AS_HELP_STRING([--disable-fcntl],[Do NOT use fcntl() to lock files]),\n        [if test $enableval = no; then mutt_cv_fcntl=no; fi])\n\nif test $mutt_cv_fcntl = yes; then\n        AC_DEFINE(USE_FCNTL,1, [ Define to use fcntl() to lock folders. ])\nfi\n\nAC_MSG_CHECKING(whether struct dirent defines d_ino)\nac_cv_dirent_d_ino=no\nAC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <dirent.h>]], [[struct dirent dp; (void)dp.d_ino]])],[ac_cv_dirent_d_ino=yes],[])\nif test x$ac_cv_dirent_d_ino = xyes ; then\n  AC_DEFINE(HAVE_DIRENT_D_INO,1,\n            [Define to 1 if your system has the dirent::d_ino member])\nfi\nAC_MSG_RESULT($ac_cv_dirent_d_ino)\n\nmutt_cv_warnings=yes\nAC_ARG_ENABLE(warnings, AS_HELP_STRING([--disable-warnings],[Turn off compiler warnings (not recommended)]),\n[if test $enableval = no; then\n        mutt_cv_warnings=no\nfi])\n\nif test x$GCC = xyes && test $mutt_cv_warnings = yes; then\n  CFLAGS=\"-Wall -pedantic -Wno-long-long $CFLAGS\"\nfi\n\nAC_ARG_ENABLE(nfs-fix, AS_HELP_STRING([--enable-nfs-fix],[Work around an NFS with broken attributes caching]),\n        [if test x$enableval = xyes; then\n                AC_DEFINE(NFS_ATTRIBUTE_HACK,1,\n                  [Define if you have problems with mutt not detecting\n                   new/old mailboxes over NFS.  Some NFS implementations\n                   incorrectly cache the attributes of small files.])\n        fi])\n\nAC_ARG_ENABLE(mailtool, AS_HELP_STRING([--enable-mailtool],[Enable Sun mailtool attachments support]),\n        [if test x$enableval = xyes; then\n                AC_DEFINE(SUN_ATTACHMENT,1,[ Define to enable Sun mailtool attachments support. ])\n        fi])\n\nAC_ARG_ENABLE(locales-fix, AS_HELP_STRING([--enable-locales-fix],[The result of isprint() is unreliable]),\n        [if test x$enableval = xyes; then\n                AC_DEFINE(LOCALES_HACK,1,[ Define if the result of isprint() is unreliable. ])\n        fi])\n\nAC_ARG_WITH(exec-shell, AS_HELP_STRING([--with-exec-shell=SHELL],[Specify alternate shell (ONLY if /bin/sh is broken)]),\n        [if test $withval != yes; then\n                AC_DEFINE_UNQUOTED(EXECSHELL, \"$withval\",\n                 [program to use for shell commands])\n         else\n                AC_DEFINE_UNQUOTED(EXECSHELL, \"/bin/sh\")\n        fi],\n        [AC_DEFINE_UNQUOTED(EXECSHELL, \"/bin/sh\")])\n\nAC_ARG_ENABLE(exact-address, AS_HELP_STRING([--enable-exact-address],[Enable regeneration of email addresses]),\n        [if test $enableval = yes; then\n                AC_DEFINE(EXACT_ADDRESS,1,\n                  [Enable exact regeneration of email addresses as parsed?\n                   NOTE: this requires significant more memory when defined.])\n\n        fi])\n\ndnl -- start cache --\ndb_found=no\ndb_requested=auto\nAC_ARG_ENABLE(hcache, AS_HELP_STRING([--enable-hcache],[Enable header caching]))\nAC_ARG_WITH(tokyocabinet, AS_HELP_STRING([--without-tokyocabinet],[Don't use tokyocabinet even if it is available]))\nAC_ARG_WITH(qdbm, AS_HELP_STRING([--without-qdbm],[Don't use qdbm even if it is available]))\nAC_ARG_WITH(gdbm, AS_HELP_STRING([--without-gdbm],[Don't use gdbm even if it is available]))\nAC_ARG_WITH(bdb, AS_HELP_STRING([--with-bdb@<:@=DIR@:>@],[Use BerkeleyDB4 if gdbm is not available]))\n\ndb_found=no\nif test x$enable_hcache = xyes\nthen\n    AC_DEFINE(USE_HCACHE, 1, [Enable header caching])\n    MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS hcache.o\"\n\n    OLDCPPFLAGS=\"$CPPFLAGS\"\n    OLDLDFLAGS=\"$LDFLAGS\"\n    OLDLIBS=\"$LIBS\"\n\n    need_md5=\"yes\"\n\n    if test -n \"$with_tokyocabinet\" && test \"$with_tokyocabinet\" != \"no\"\n    then\n      db_requested=tc\n    fi\n    if test -n \"$with_qdbm\" && test \"$with_qdbm\" != \"no\"\n    then\n      if test \"$db_requested\" != \"auto\"\n      then\n        AC_MSG_ERROR([more than one header cache engine requested.])\n      else\n        db_requested=qdbm\n      fi\n    fi\n    if test -n \"$with_gdbm\" && test \"$with_gdbm\" != \"no\"\n    then\n      if test \"$db_requested\" != \"auto\"\n      then\n        AC_MSG_ERROR([more than one header cache engine requested.])\n      else\n        db_requested=gdbm\n      fi\n    fi\n    if test -n \"$with_bdb\" && test \"$with_bdb\" != \"no\"\n    then\n      if test \"$db_requested\" != \"auto\"\n      then\n        AC_MSG_ERROR([more than one header cache engine requested.])\n      else\n        db_requested=bdb\n      fi\n    fi\n    \n    dnl -- Tokyo Cabinet --\n    if test \"$with_tokyocabinet\" != \"no\" \\\n\t    && test \"$db_requested\" = auto -o \"$db_requested\" = tc\n    then\n      if test -n \"$with_tokyocabinet\" && test \"$with_tokyocabinet\" != \"yes\"\n      then\n        CPPFLAGS=\"$CPPFLAGS -I$with_tokyocabinet/include\"\n        LDFLAGS=\"$LDFLAGS -L$with_tokyocabinet/lib\"\n      fi\n\n      AC_CHECK_HEADER(tcbdb.h,\n      AC_CHECK_LIB(tokyocabinet, tcbdbopen,\n        [MUTTLIBS=\"$MUTTLIBS -ltokyocabinet\"\n         AC_DEFINE(HAVE_TC, 1, [Tokyo Cabinet Support])\n         db_found=tc],\n        [CPPFLAGS=\"$OLDCPPFLAGS\"\n         LDFLAGS=\"$OLDLDFLAGS\"]))\n      if test \"$db_requested\" != auto && test \"$db_found\" != \"$db_requested\"\n      then\n        AC_MSG_ERROR([Tokyo Cabinet could not be used. Check config.log for details.])\n      fi\n    fi\n\n    dnl -- QDBM --\n    if test \"$with_qdbm\" != \"no\" && test $db_found = no \\\n\t    && test \"$db_requested\" = auto -o \"$db_requested\" = qdbm\n    then\n      if test -n \"$with_qdbm\" && test \"$with_qdbm\" != \"yes\"\n      then\n        if test -d $with_qdbm/include/qdbm; then\n          CPPFLAGS=\"$CPPFLAGS -I$with_qdbm/include/qdbm\"\n\telse\n          CPPFLAGS=\"$CPPFLAGS -I$with_qdbm/include\"\n\tfi\n        LDFLAGS=\"$LDFLAGS -L$with_qdbm/lib\"\n      else\n         if test -d /usr/include/qdbm; then\n           CPPFLAGS=\"$CPPFLAGS -I/usr/include/qdbm\"\n\t fi\n      fi\n\n      saved_LIBS=\"$LIBS\"\n      AC_CHECK_HEADERS(villa.h)\n      AC_CHECK_LIB(qdbm, vlopen,\n        [MUTTLIBS=\"$MUTTLIBS -lqdbm\"\n         AC_DEFINE(HAVE_QDBM, 1, [QDBM Support])\n         db_found=qdbm],\n        [CPPFLAGS=\"$OLDCPPFLAGS\"\n         LDFLAGS=\"$OLDLDFLAGS\"])\n      LIBS=\"$saved_LIBS\"\n      if test \"$db_requested\" != auto && test \"$db_found\" != \"$db_requested\"\n      then\n        AC_MSG_ERROR([QDBM could not be used. Check config.log for details.])\n      fi\n    fi\n\n    dnl -- GDBM --\n    if test x$with_gdbm != xno && test $db_found = no \\\n\t    && test \"$db_requested\" = auto -o \"$db_requested\" = gdbm\n    then\n        if test \"$with_gdbm\" != \"yes\"\n        then\n          CPPFLAGS=\"$CPPFLAGS -I$with_gdbm/include\"\n          LDFLAGS=\"$LDFLAGS -L$with_gdbm/lib\"\n        fi\n        saved_LIBS=\"$LIBS\"\n        LIBS=\"$LIBS -lgdbm\"\n        AC_CACHE_CHECK(for gdbm_open, ac_cv_gdbmopen,[\n            ac_cv_gdbmopen=no\n            AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gdbm.h>]], [[gdbm_open(0,0,0,0,0);]])],[ac_cv_gdbmopen=yes],[])\n        ])\n        LIBS=\"$saved_LIBS\"\n        if test \"$ac_cv_gdbmopen\" = yes\n        then\n          AC_DEFINE(HAVE_GDBM, 1, [GDBM Support])\n          MUTTLIBS=\"$MUTTLIBS -lgdbm\"\n          db_found=gdbm\n        fi\n        if test \"$db_requested\" != auto && test \"$db_found\" != \"$db_requested\"\n        then\n          AC_MSG_ERROR([GDBM could not be used. Check config.log for details.])\n        fi\n    fi\n\n    dnl -- BDB --\n    ac_bdb_prefix=\"$with_bdb\"\n    if test x$ac_bdb_prefix != xno && test $db_found = no\n    then\n        if test x$ac_bdb_prefix = xyes || test x$ac_bdb_prefix = x\n        then\n          ac_bdb_prefix=\"$mutt_cv_prefix /opt/csw/bdb4 /opt /usr/local /usr\"\n        fi\n        for d in $ac_bdb_prefix; do\n            bdbpfx=\"$bdbpfx $d\"\n            for v in BerkeleyDB.4.3 BerkeleyDB.4.2 BerkeleyDB.4.1; do\n                bdbpfx=\"$bdbpfx $d/$v\"\n            done\n        done\n        BDB_VERSIONS=\"db-4 db4 db-5 db5 db-5.2 db5.2 db52 db-5.1 db5.1 db51 db-5.0 db5.0 db50 db-4.8 db4.8 db48 db-4.7 db4.7 db47 db-4.6 db4.6 db46 db-4.5 db4.5 db45 db-4.4 db4.4 db44 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db ''\"\n        AC_MSG_CHECKING([for BerkeleyDB > 4.0])\n        for d in $bdbpfx; do\n            BDB_INCLUDE_DIR=\"\"\n            BDB_LIB_DIR=\"\"\n            for v in / $BDB_VERSIONS; do\n                if test -r \"$d/include/$v/db.h\"; then\n                    BDB_INCLUDE_DIR=\"$d/include/$v\"\n                    for bdblibdir in \"$d/lib/$v\" \"$d/lib\"; do\n                        test -d \"$bdblibdir\" || continue\n                        BDB_LIB_DIR=\"$bdblibdir\"\n                        for l in `echo $BDB_VERSIONS`; do\n                            CPPFLAGS=\"$OLDCPPFLAGS -I$BDB_INCLUDE_DIR\"\n                            LIBS=\"$OLDLIBS -L$BDB_LIB_DIR -l$l\"\n                            AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n                                #include <stdlib.h>\n                                #include <db.h>\n                            ]], [[\n                                DB *db = NULL;\n                                db->open(db,NULL,NULL,NULL,0,0,0);\n                            ]])],[\n                                ac_cv_dbcreate=yes\n                                BDB_LIB=\"$l\"\n                                break\n                            ],[])\n                        done\n                        test x$ac_cv_dbcreate = xyes && break 2\n                    done\n                fi\n            done\n            test x$BDB_LIB != x && break\n        done\n        if test x$ac_cv_dbcreate = xyes\n        then\n            AC_MSG_RESULT(yes)\n            CPPFLAGS=\"$OLDCPPFLAGS -I$BDB_INCLUDE_DIR\"\n            LIBS=\"$OLDLIBS -L$BDB_LIB_DIR -l$BDB_LIB\"\n            AC_DEFINE(HAVE_DB4, 1, [Berkeley DB4 Support])\n            db_found=bdb\n        else\n            AC_MSG_RESULT(no)\n        fi\n    fi\n\n    if test $db_found = no\n    then\n        AC_MSG_ERROR([You need Tokyo Cabinet, QDBM, GDBM or Berkeley DB4 for hcache])\n    fi\nfi\ndnl -- end cache --\n\nAM_CONDITIONAL(BUILD_HCACHE, test x$db_found != xno)\n\nif test \"$need_md5\" = \"yes\"\nthen\n  MUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS md5.o\"\nfi\n\nif test x$db_found != xno ; then\n  MUTT_MD5=\"mutt_md5$EXEEXT\"\nfi\nAC_SUBST(MUTT_MD5)\n\nAC_SUBST(MUTTLIBS)\nAC_SUBST(MUTT_LIB_OBJECTS)\nAC_SUBST(LIBIMAP)\nAC_SUBST(LIBIMAPDEPS)\nAC_SUBST(NOTMUCH_LIBS)\n\ndnl -- iconv/gettext --\n\nAC_ARG_ENABLE(iconv, AS_HELP_STRING([--disable-iconv],[Disable iconv support]),\n        [if test x$enableval = xno ; then\n                am_cv_func_iconv=no\n        fi\n])\n\nMUTT_AM_GNU_GETTEXT\n\nif test \"$am_cv_func_iconv\" != \"yes\"\nthen\n  AC_MSG_WARN([Configuring without iconv support. See INSTALL for details])\nelse\n\nAC_CHECK_HEADERS(iconv.h,\n        [AC_MSG_CHECKING(whether iconv.h defines iconv_t)\n         AC_EGREP_HEADER([typedef.*iconv_t],iconv.h,\n                [AC_MSG_RESULT(yes)\n                 AC_DEFINE(HAVE_ICONV_T_DEF, 1,\n                        [Define if <iconv.h> defines iconv_t.])],\n                 AC_MSG_RESULT(no))])\n\ndnl (1) Some implementations of iconv won't convert from UTF-8 to UTF-8.\ndnl (2) In glibc-2.1.2 and earlier there is a bug that messes up ob and\ndnl     obl when args 2 and 3 are 0 (fixed in glibc-2.1.3).\nAC_CACHE_CHECK([whether this iconv is good enough], mutt_cv_iconv_good,\n        mutt_save_LIBS=\"$LIBS\"\n        LIBS=\"$LIBS $LIBICONV\"\n        AC_RUN_IFELSE([AC_LANG_SOURCE([[\n#include <iconv.h>\nint main()\n{\n  iconv_t cd;\nchangequote(, )dnl\n  char buf[4];\nchangequote([, ])dnl\n  char *ob;\n  size_t obl;\n  ob = buf, obl = sizeof(buf);\n  return ((cd = iconv_open(\"UTF-8\", \"UTF-8\")) != (iconv_t)(-1) &&\n          (iconv(cd, 0, 0, &ob, &obl) ||\n           !(ob == buf && obl == sizeof(buf)) ||\n           iconv_close(cd)));\n}\n                ]])],[mutt_cv_iconv_good=yes],[mutt_cv_iconv_good=no],[mutt_cv_iconv_good=yes])\n        LIBS=\"$mutt_save_LIBS\")\nif test \"$mutt_cv_iconv_good\" = no; then\n  AC_MSG_ERROR(Try using libiconv instead)\nfi\n\ndnl This is to detect implementations such as the one in glibc-2.1,\ndnl which always convert exactly but return the number of characters\ndnl converted instead of the number converted inexactly.\nAC_CACHE_CHECK([whether iconv is non-transcribing], mutt_cv_iconv_nontrans,\n        mutt_save_LIBS=\"$LIBS\"\n        LIBS=\"$LIBS $LIBICONV\"\n        AC_RUN_IFELSE([AC_LANG_SOURCE([[\n#include <iconv.h>\n#include <string.h>\nint main()\n{\n  iconv_t cd;\n  const char *ib;\n  char *ob;\n  size_t ibl, obl;\n  const char *s = \"\\304\\211\";\nchangequote(, )dnl\n  char t[3];\nchangequote([, ])dnl\n  ib = s, ibl = 2, ob = t, obl = 3;\n  return ((cd = iconv_open(\"UTF-8\", \"UTF-8\")) == (iconv_t)(-1) ||\n          iconv(cd, &ib, &ibl, &ob, &obl));\n}\n                ]])],[mutt_cv_iconv_nontrans=no],[mutt_cv_iconv_nontrans=yes],[mutt_cv_iconv_nontrans=no])\n        LIBS=\"$mutt_save_LIBS\")\nif test \"$mutt_cv_iconv_nontrans\" = yes; then\n  AC_DEFINE(ICONV_NONTRANS, 1)\nelse\n  AC_DEFINE(ICONV_NONTRANS, 0)\nfi\n\nCPPFLAGS=\"$CPPFLAGS -I\\$(top_srcdir)/intl\"\n\nif test \"$BUILD_INCLUDED_LIBINTL\" = \"yes\"; then\n  AC_DEFINE(HAVE_BIND_TEXTDOMAIN_CODESET,1,\n          [ Define if your gettext has bind_textdomain_codeset. ])\nelse\n  mutt_save_LIBS=\"$LIBS\"\n  LIBS=\"$LIBS $INTLLIBS\"\n  AC_CHECK_FUNCS(bind_textdomain_codeset)\n  LIBS=\"$mutt_save_LIBS\"\nfi\n\nfi # libiconv\n\ndnl -- IDN depends on iconv\n\nAC_ARG_WITH(idn, AS_HELP_STRING([--with-idn=@<:@PFX@:>@],[Use GNU libidn for internationalized domain names]),\n\t\t [\n\t\t  if test \"$with_idn\" != \"no\" ; then\n\t\t  \tif test \"$with_idn\" != \"yes\" ; then\n\t\t\t   CPPFLAGS=\"$CPPFLAGS -I$with_idn/include\"\n\t\t\t   LDFLAGS=\"$LDFLAGS -L$with_idn/lib\"\n\t\t\tfi\n\t\t  fi\n\t\t ],\n\t\t [with_idn=auto])\n\nif test \"x$with_idn\" != \"xno\"; then\n  if test \"$am_cv_func_iconv\" != \"yes\"; then\n    if test \"$with_idn\" != \"auto\"; then\n      AC_MSG_ERROR([IDN requested but iconv is disabled or unavailable])\n    fi\n  else\n    dnl Solaris 11 has /usr/include/idn\n    have_stringprep_h=no\n    AC_CHECK_HEADERS([stringprep.h idn/stringprep.h], [\n\t\t      have_stringprep_h=yes\n\t\t      break])\n    have_idna_h=no\n    AC_CHECK_HEADERS([idna.h idn/idna.h], [\n\t\t      have_idna_h=yes\n\t\t      break])\n\n    mutt_save_LIBS=\"$LIBS\"\n    LIBS=\n\n    AC_SEARCH_LIBS([stringprep_check_version], [idn], [\n      AC_DEFINE([HAVE_LIBIDN], 1, [Define to 1 if you have the GNU idn library])\n      MUTTLIBS=\"$MUTTLIBS $LIBS\"\n\n      LIBS=\"$LIBS $LIBICONV\"\n      AC_CHECK_FUNCS(idna_to_unicode_utf8_from_utf8 idna_to_unicode_8z8z)\n      AC_CHECK_FUNCS(idna_to_ascii_from_utf8 idna_to_ascii_8z)\n      AC_CHECK_FUNCS(idna_to_ascii_lz idna_to_ascii_from_locale)\n    ])\n\n    LIBS=\"$mutt_save_LIBS\"\n\n    if test \"$with_idn\" != auto; then\n      if test $have_stringprep_h = no || test $have_idna_h = no || test $ac_cv_search_stringprep_check_version = no; then\n\tAC_MSG_ERROR([IDN was requested, but libidn was not usable on this system])\n      fi\n    fi\n  fi\nfi\n\ndnl -- locales --\n\nAC_CHECK_HEADERS(wchar.h)\n\nAC_CACHE_CHECK([for wchar_t], mutt_cv_wchar_t,\n        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[\n#include <stddef.h>\n#include <stdlib.h>\n#ifdef HAVE_WCHAR_H\n#include <wchar.h>\n#endif\n                ]], [[ wchar_t wc; return 0; ]])],[mutt_cv_wchar_t=yes],[mutt_cv_wchar_t=no]))\n\nif test \"$mutt_cv_wchar_t\" = no; then\n        AC_DEFINE(wchar_t,int,[ Define to 'int' if system headers don't define. ])\nfi\n\nAC_CACHE_CHECK([for wint_t], mutt_cv_wint_t,\n        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[\n#include <stddef.h>\n#include <stdlib.h>\n#ifdef HAVE_WCHAR_H\n#include <wchar.h>\n#endif\n                ]], [[ wint_t wc; return 0; ]])],[mutt_cv_wint_t=yes],[mutt_cv_wint_t=no]))\n\nif test \"$mutt_cv_wint_t\" = no; then\n        AC_DEFINE(wint_t,int,[ Define to 'int' if system headers don't define. ])\nfi\n\nAC_CHECK_HEADERS(wctype.h)\nAC_CHECK_FUNCS(iswalnum iswalpha iswblank iswcntrl iswdigit)\nAC_CHECK_FUNCS(iswgraph iswlower iswprint iswpunct iswspace iswupper)\nAC_CHECK_FUNCS(iswxdigit towupper towlower)\n\nAC_CACHE_CHECK([for mbstate_t], mutt_cv_mbstate_t,\n        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[\n#include <stddef.h>\n#include <stdlib.h>\n#ifdef HAVE_WCHAR_H\n#include <wchar.h>\n#endif\n                ]], [[ mbstate_t s; return 0; ]])],[mutt_cv_mbstate_t=yes],[mutt_cv_mbstate_t=no]))\n\nif test \"$mutt_cv_mbstate_t\" = no; then\n        AC_DEFINE(mbstate_t,int,[ Define to 'int' if system headers don't define. ])\nfi\n\nwc_funcs=maybe\nAC_ARG_WITH(wc-funcs, AS_HELP_STRING([--without-wc-funcs],[Do not use the system's wchar_t functions]),\n        wc_funcs=$withval)\n\nif test \"$wc_funcs\" != yes && test \"$wc_funcs\" != no; then\n        AC_CACHE_CHECK([for wchar_t functions], mutt_cv_wc_funcs,\n                mutt_cv_wc_funcs=no\n                AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n#define _XOPEN_SOURCE 600\n#include <stddef.h>\n#include <stdlib.h>\n#ifdef HAVE_WCHAR_H\n#include <wchar.h>\n#endif\n#ifdef HAVE_WCTYPE_H\n#include <wctype.h>\n#endif]], [[mbrtowc(0, 0, 0, 0); wctomb(0, 0); wcwidth(0);\n        iswprint(0); iswspace(0); towlower(0); towupper(0); iswalnum(0)]])],[mutt_cv_wc_funcs=yes],[]))\n        wc_funcs=$mutt_cv_wc_funcs\nfi\n\nif test $wc_funcs = yes; then\n        AC_DEFINE(HAVE_WC_FUNCS,1,[ Define if you are using the system's wchar_t functions. ])\nelse\n\tMUTT_LIB_OBJECTS=\"$MUTT_LIB_OBJECTS utf8.o wcwidth.o\"\nfi\n\nAC_CACHE_CHECK([for nl_langinfo and CODESET], mutt_cv_langinfo_codeset,\n  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], [[char* cs = nl_langinfo(CODESET);]])],[mutt_cv_langinfo_codeset=yes],[mutt_cv_langinfo_codeset=no])])\nif test $mutt_cv_langinfo_codeset = yes; then\n  AC_DEFINE(HAVE_LANGINFO_CODESET,1,[ Define if you have <langinfo.h> and nl_langinfo(CODESET). ])\nfi\n\nAC_CACHE_CHECK([for nl_langinfo and YESEXPR], mutt_cv_langinfo_yesexpr,\n  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], [[char* cs = nl_langinfo(YESEXPR);]])],[mutt_cv_langinfo_yesexpr=yes],[mutt_cv_langinfo_yesexpr=no])])\nif test $mutt_cv_langinfo_yesexpr = yes; then\n  AC_DEFINE(HAVE_LANGINFO_YESEXPR,1,[ Define if you have <langinfo.h> and nl_langinfo(YESEXPR). ])\nfi\n\ndnl Documentation tools\nhave_openjade=\"no\"\nAC_PATH_PROG([OSPCAT], [ospcat], [none])\nif test \"$OSPCAT\" != \"none\"\nthen\n  AC_MSG_CHECKING([for openjade docbook stylesheets])\n  dslosfile=`ospcat --public-id=\"-//Norman Walsh//DOCUMENT DocBook Print Stylesheet//EN\"`\n  DSLROOT=`echo $dslosfile | sed -n -e \"s/.*SOIBASE='\\(@<:@^'@:>@*\\)\\/catalog'.*/\\1/p\"`\n  # ospcat may spit out an absolute path without an SOIBASE\n  if test -z \"$DSLROOT\"\n  then\n    DSLROOT=`echo $dslosfile | sed -e 's|<OSFILE>\\(.*\\)/print/docbook.dsl|\\1|'`\n  fi\n  if test -f $DSLROOT/print/docbook.dsl\n  then\n    AC_MSG_RESULT([in $DSLROOT])\n    have_openjade=\"yes\"\n  else\n    AC_MSG_RESULT([not found: PDF documentation will not be built.])\n  fi\nfi\nAC_SUBST(DSLROOT)\n\nAC_ARG_ENABLE(full_doc,\n\t      AS_HELP_STRING([--disable-full-doc],[Omit disabled variables]),\n[       if test x$enableval = xno ; then\n                full_doc=no\n        fi\n])\nif test x$full_doc != xno ; then\n  AC_DEFINE(MAKEDOC_FULL,1, [Define if you want complete documentation.])\nfi\n\nAC_CONFIG_FILES(Makefile contrib/Makefile doc/Makefile imap/Makefile\n        intl/Makefile m4/Makefile po/Makefile.in\n        hcachever.sh muttbug.sh doc/instdoc.sh)\nAC_OUTPUT\n"
  },
  {
    "path": "contrib/Makefile.am",
    "content": "# $Id$\n\nsubdir = contrib\n\nSAMPLES = Mush.rc Pine.rc gpg.rc pgp2.rc pgp5.rc pgp6.rc Tin.rc \\\n\tsample.muttrc  sample.mailcap sample.muttrc-tlr \\\n\tcolors.default colors.linux smime.rc \\\n\tca-bundle.crt smime_keys_test.pl mutt_xtitle\n\nEXTRA_DIST = language.txt language50.txt  \\\n\tpatch.slang-1.2.2.keypad.1\t\\\n\t$(SAMPLES) \\\n\ticonv/README \\\n\ticonv/make.sh\n\ninstall-data-local:\n\t$(MKDIR_P) $(DESTDIR)$(docdir)/samples $(DESTDIR)$(docdir)/samples/iconv\n\tfor f in $(SAMPLES) ; do \\\n\t\t$(INSTALL) -m 644 $(srcdir)/$$f $(DESTDIR)$(docdir)/samples ;\t\\\n\tdone\n\tfor f in $(srcdir)/iconv/*.rc ; do\t\t\t\t\t\\\n\t\t$(INSTALL) -m 644 $$f $(DESTDIR)$(docdir)/samples/iconv\t  ;\t\\\n\tdone\n\nuninstall-local:\n\tfor f in $(SAMPLES) ; do \\\n\t\trm -f $(DESTDIR)$(docdir)/samples/$$f ; \\\n\tdone\n\t-rm -rf $(DESTDIR)$(docdir)/samples/iconv\n\t-rmdir $(DESTDIR)$(docdir)/samples\n\t-rmdir $(DESTDIR)$(docdir)\n\ndistdir = ../$(PACKAGE)-$(VERSION)/$(subdir)\ndist-hook: Makefile $(DISTFILES)\n\tmkdir -p $(distdir)/iconv\n\tfor file in $(srcdir)/iconv/*.rc ; do\t\t\t\t\t\\\n\t\tln $$file $(distdir)/iconv 2> /dev/null\t\t\t\t\\\n\t\t\t|| cp -p $$file $(distdir)/iconv ;\t\t\t\\\n\tdone\n"
  },
  {
    "path": "contrib/Mush.rc",
    "content": "#\n# Key bindings similar to those of MUSH\n#\n\n# $Id$\n\nbind index . display-message\nbind index t display-message\nmacro index n \"<next-entry><display-message>\"\nbind index + next-entry\nbind index j next-entry\nbind index J next-entry\nbind index - previous-entry\nbind index k previous-entry\nbind index K previous-entry\nbind index { top-page\nbind index } bottom-page\nbind index f change-folder\nbind index \\cu sync-mailbox\nbind index * flag-message\n"
  },
  {
    "path": "contrib/Pine.rc",
    "content": "#\n# This file contains commands to change the keybindings in Mutt to be\n# similar to those of PINE 3.95.\n#\n\n#\n# $Id$\n#\n\nbind index v display-message\nbind index p previous-undeleted\nbind index n next-undeleted\nbind index ' ' next-page\nbind index c mail\nbind index g change-folder\nbind index w search\nbind index y print-message\nbind index x sync-mailbox\nbind index $ sort-mailbox\nbind index a tag-prefix\nbind index \\; tag-entry\n\n# Not possible to simulate zoom-out...\nmacro index z \"<limit>~T<Enter>\"\n\nbind pager p previous-undeleted\nbind pager n next-undeleted\nbind pager ' ' next-page\nbind pager g change-folder\nbind pager c mail\nbind pager w search\nbind pager y print-message\nbind pager \\n noop\t# PINE prints \"No default action for this menu.\"\nbind pager <up> previous-line\nbind pager <down> next-line\n\nbind compose \\cx send-message\n\n# PINE has different defaults for this variables\nset folder=~/mail\nset record=+sent-mail\nset nosave_name\nset postponed=~/postponed-msgs\nset hdr_format=\"%Z %3C %{%b %d} %-19.19L (%5c) %s\"\n"
  },
  {
    "path": "contrib/Tin.rc",
    "content": "# From: Tom Gilbert <gilbertt@tomgilbert.freeserve.co.uk>\n# To: mutt-users@mutt.org\n# Subject: Re: Lynx-like movements\n# Date: Sat, 4 Sep 1999 21:09:00 +0000\n\n\n#\n# These key bindings may be nice for notorious lynx or tin users.\n#\n\nbind  pager   <up>     previous-line\nbind  pager   <down>   next-line\nbind  pager   <left>   exit\nbind  pager   <right>  view-attachments\nbind  attach  <left>   exit\nbind  attach  <right>  view-attach\nbind  index   <right>  display-message\nmacro index   <left>   \"<change-folder>?\"\nbind  browser <right>  select-entry\nmacro browser <left>   \"<exit><change-folder>!<Enter>\"\n\n\n"
  },
  {
    "path": "contrib/ca-bundle.crt",
    "content": "##\n##  ca-bundle.crt -- Bundle of CA Root Certificates\n##  Last Modified: Thu Mar  2 09:32:46 CET 2000\n##\n##  This is a bundle of X.509 certificates of public\n##  Certificate Authorities (CA). These were automatically\n##  extracted from Netscape Communicator 4.72's certificate database\n##  (the file `cert7.db'). It contains the certificates in both\n##  plain text and PEM format and therefore can be directly used\n##  with an Apache+mod_ssl webserver for SSL client authentication.\n##  Just configure this file as the SSLCACertificateFile.\n##\n##  (SKIPME)\n##\n\nABAecom (sub., Am. Bankers Assn.) Root CA\n=========================================\nMD5 Fingerprint: 82:12:F7:89:E1:0B:91:60:A4:B6:22:9F:94:68:11:92\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIID+DCCAuCgAwIBAgIRANAeQJAAACdLAAAAAQAAAAQwDQYJKoZIhvcNAQEFBQAw\ngYwxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIEwRVdGFoMRcwFQYDVQQHEw5TYWx0IExh\na2UgQ2l0eTEYMBYGA1UEChMPWGNlcnQgRVogYnkgRFNUMRgwFgYDVQQDEw9YY2Vy\ndCBFWiBieSBEU1QxITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAe\nFw05OTA3MTQxNjE0MThaFw0wOTA3MTExNjE0MThaMIGMMQswCQYDVQQGEwJVUzEN\nMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxGDAWBgNVBAoT\nD1hjZXJ0IEVaIGJ5IERTVDEYMBYGA1UEAxMPWGNlcnQgRVogYnkgRFNUMSEwHwYJ\nKoZIhvcNAQkBFhJjYUBkaWdzaWd0cnVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUA\nA4IBDwAwggEKAoIBAQCtVBjetL/3reh0qu2LfI/C1HUa1YS5tmL8ie/kl2GS+x24\n4VpHNJ6eBiL70+o4y7iLB/caoBd3B1owHNQpOCDXJ0DYUJNDv9IYoil2BXKqa7Zp\nmKt5Hhxl9WqL/MUWqqJy2mDtTm4ZJXoKHTDjUJtCPETrobAgHtsCfv49H7/QAIrb\nQHamGKUVp1e2UsIBF5h3j4qBxhq0airmr6nWAKzP2BVJfNsbof6B+of505DBAsD5\n0ELpkWglX8a/hznplQBgKL+DLMDnXrbXNhbnYId26OcnsiUNi3rlqh3lWc3OCw5v\nxsic4xDZhTnTt5v6xrp8dNJddVardKSiUb9SfO5xAgMBAAGjUzBRMA8GA1UdEwEB\n/wQFMAMBAf8wHwYDVR0jBBgwFoAUCCBsZuuBCmxc1bWmPEHdHJaRJ3cwHQYDVR0O\nBBYEFAggbGbrgQpsXNW1pjxB3RyWkSd3MA0GCSqGSIb3DQEBBQUAA4IBAQBah1iP\nLat2IWtUDNnxQfZOzSue4x+boy1/2St9WMhnpCn16ezVvZY/o3P4xFs2fNBjLDQ5\nm0i4PW/2FMWeY+anNG7T6DOzxzwYbiOuQ5KZP5jFaTDxNjutuTCC1rZZFpYCCykS\nYbQRifcML5SQhZgonFNsfmPdc/QZ/0qB0bJSI/08SjTOWhvgUIrtT4GV2GDn5MQN\nu1g+WPdOaG8+Z8nLepcWJ+xCYRR2uwDF6wg9FX9LtiJdhzuQ9PPA/jez6dliDMDD\nWa9gvR8N26E0HzDEPYutsB0Ek+1f1eS/IDAE9EjpMwHRLpAnUrOb3jocq6mXf5vr\nwo3CbezcE9NGxXl8\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number:\n            d0:1e:40:90:00:00:27:4b:00:00:00:01:00:00:00:04\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, ST=Utah, L=Salt Lake City, O=Xcert EZ by DST, CN=Xcert EZ by DST/Email=ca@digsigtrust.com\n        Validity\n            Not Before: Jul 14 16:14:18 1999 GMT\n            Not After : Jul 11 16:14:18 2009 GMT\n        Subject: C=US, ST=Utah, L=Salt Lake City, O=Xcert EZ by DST, CN=Xcert EZ by DST/Email=ca@digsigtrust.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:ad:54:18:de:b4:bf:f7:ad:e8:74:aa:ed:8b:7c:\n                    8f:c2:d4:75:1a:d5:84:b9:b6:62:fc:89:ef:e4:97:\n                    61:92:fb:1d:b8:e1:5a:47:34:9e:9e:06:22:fb:d3:\n                    ea:38:cb:b8:8b:07:f7:1a:a0:17:77:07:5a:30:1c:\n                    d4:29:38:20:d7:27:40:d8:50:93:43:bf:d2:18:a2:\n                    29:76:05:72:aa:6b:b6:69:98:ab:79:1e:1c:65:f5:\n                    6a:8b:fc:c5:16:aa:a2:72:da:60:ed:4e:6e:19:25:\n                    7a:0a:1d:30:e3:50:9b:42:3c:44:eb:a1:b0:20:1e:\n                    db:02:7e:fe:3d:1f:bf:d0:00:8a:db:40:76:a6:18:\n                    a5:15:a7:57:b6:52:c2:01:17:98:77:8f:8a:81:c6:\n                    1a:b4:6a:2a:e6:af:a9:d6:00:ac:cf:d8:15:49:7c:\n                    db:1b:a1:fe:81:fa:87:f9:d3:90:c1:02:c0:f9:d0:\n                    42:e9:91:68:25:5f:c6:bf:87:39:e9:95:00:60:28:\n                    bf:83:2c:c0:e7:5e:b6:d7:36:16:e7:60:87:76:e8:\n                    e7:27:b2:25:0d:8b:7a:e5:aa:1d:e5:59:cd:ce:0b:\n                    0e:6f:c6:c8:9c:e3:10:d9:85:39:d3:b7:9b:fa:c6:\n                    ba:7c:74:d2:5d:75:56:ab:74:a4:a2:51:bf:52:7c:\n                    ee:71\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n            X509v3 Authority Key Identifier: \n                keyid:08:20:6C:66:EB:81:0A:6C:5C:D5:B5:A6:3C:41:DD:1C:96:91:27:77\n\n            X509v3 Subject Key Identifier: \n                08:20:6C:66:EB:81:0A:6C:5C:D5:B5:A6:3C:41:DD:1C:96:91:27:77\n    Signature Algorithm: sha1WithRSAEncryption\n        5a:87:58:8f:2d:ab:76:21:6b:54:0c:d9:f1:41:f6:4e:cd:2b:\n        9e:e3:1f:9b:a3:2d:7f:d9:2b:7d:58:c8:67:a4:29:f5:e9:ec:\n        d5:bd:96:3f:a3:73:f8:c4:5b:36:7c:d0:63:2c:34:39:9b:48:\n        b8:3d:6f:f6:14:c5:9e:63:e6:a7:34:6e:d3:e8:33:b3:c7:3c:\n        18:6e:23:ae:43:92:99:3f:98:c5:69:30:f1:36:3b:ad:b9:30:\n        82:d6:b6:59:16:96:02:0b:29:12:61:b4:11:89:f7:0c:2f:94:\n        90:85:98:28:9c:53:6c:7e:63:dd:73:f4:19:ff:4a:81:d1:b2:\n        52:23:fd:3c:4a:34:ce:5a:1b:e0:50:8a:ed:4f:81:95:d8:60:\n        e7:e4:c4:0d:bb:58:3e:58:f7:4e:68:6f:3e:67:c9:cb:7a:97:\n        16:27:ec:42:61:14:76:bb:00:c5:eb:08:3d:15:7f:4b:b6:22:\n        5d:87:3b:90:f4:f3:c0:fe:37:b3:e9:d9:62:0c:c0:c3:59:af:\n        60:bd:1f:0d:db:a1:34:1f:30:c4:3d:8b:ad:b0:1d:04:93:ed:\n        5f:d5:e4:bf:20:30:04:f4:48:e9:33:01:d1:2e:90:27:52:b3:\n        9b:de:3a:1c:ab:a9:97:7f:9b:eb:c2:8d:c2:6d:ec:dc:13:d3:\n        46:c5:79:7c\n\nANX Network CA by DST\n=====================\nMD5 Fingerprint: A8:ED:DE:EB:93:88:66:D8:2F:C3:BD:1D:BE:45:BE:4D\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDTTCCAragAwIBAgIENm6ibzANBgkqhkiG9w0BAQUFADBSMQswCQYDVQQGEwJV\nUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMR0wGwYDVQQL\nExREU1QgKEFOWCBOZXR3b3JrKSBDQTAeFw05ODEyMDkxNTQ2NDhaFw0xODEyMDkx\nNjE2NDhaMFIxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVy\nZSBUcnVzdCBDby4xHTAbBgNVBAsTFERTVCAoQU5YIE5ldHdvcmspIENBMIGdMA0G\nCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC0SBGAWKDVpZkP9jcsRLZu0XzzKmueEbaI\nIwRccSWeahJ3EW6/aDllqPay9qIYsokVoGe3eowiSGv2hDQftsr3G3LL8ltI04ce\nInYTBLSsbJZ/5w4IyTJRMC3VgOghZ7rzXggkLAdZnZAa7kbJtaQelrRBkdR/0o04\nJrBvQ24JfQIBA6OCATAwggEsMBEGCWCGSAGG+EIBAQQEAwIABzB0BgNVHR8EbTBr\nMGmgZ6BlpGMwYTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0\ndXJlIFRydXN0IENvLjEdMBsGA1UECxMURFNUIChBTlggTmV0d29yaykgQ0ExDTAL\nBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxNTQ2NDhagQ8yMDE4MTIw\nOTE1NDY0OFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFIwWVXDMFgpTZMKlhKqz\nZBdDP4I2MB0GA1UdDgQWBBSMFlVwzBYKU2TCpYSqs2QXQz+CNjAMBgNVHRMEBTAD\nAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB\nAEklyWCxDF+pORDTxTRVfc95wynr3vnCQPnoVsXwL+z02exIUbhjOF6TbhiWhbnK\nUJykuOpmJmiThW9vTHHQvnoLPDG5975pnhDX0UDorBZxq66rOOFwscqSFuBdhaYY\ngAYAnOGmGEJRp2hoWe8mlF+tMQz+KR4XAYQ3W+gSMqNd\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 913220207 (0x366ea26f)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=Digital Signature Trust Co., OU=DST (ANX Network) CA\n        Validity\n            Not Before: Dec  9 15:46:48 1998 GMT\n            Not After : Dec  9 16:16:48 2018 GMT\n        Subject: C=US, O=Digital Signature Trust Co., OU=DST (ANX Network) CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:b4:48:11:80:58:a0:d5:a5:99:0f:f6:37:2c:44:\n                    b6:6e:d1:7c:f3:2a:6b:9e:11:b6:88:23:04:5c:71:\n                    25:9e:6a:12:77:11:6e:bf:68:39:65:a8:f6:b2:f6:\n                    a2:18:b2:89:15:a0:67:b7:7a:8c:22:48:6b:f6:84:\n                    34:1f:b6:ca:f7:1b:72:cb:f2:5b:48:d3:87:1e:22:\n                    76:13:04:b4:ac:6c:96:7f:e7:0e:08:c9:32:51:30:\n                    2d:d5:80:e8:21:67:ba:f3:5e:08:24:2c:07:59:9d:\n                    90:1a:ee:46:c9:b5:a4:1e:96:b4:41:91:d4:7f:d2:\n                    8d:38:26:b0:6f:43:6e:09:7d\n                Exponent: 3 (0x3)\n        X509v3 extensions:\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n            X509v3 CRL Distribution Points: \n                DirName:/C=US/O=Digital Signature Trust Co./OU=DST (ANX Network) CA/CN=CRL1\n\n            X509v3 Private Key Usage Period: \n                Not Before: Dec  9 15:46:48 1998 GMT, Not After: Dec  9 15:46:48 2018 GMT\n            X509v3 Key Usage: \n                Certificate Sign, CRL Sign\n            X509v3 Authority Key Identifier: \n                keyid:8C:16:55:70:CC:16:0A:53:64:C2:A5:84:AA:B3:64:17:43:3F:82:36\n\n            X509v3 Subject Key Identifier: \n                8C:16:55:70:CC:16:0A:53:64:C2:A5:84:AA:B3:64:17:43:3F:82:36\n            X509v3 Basic Constraints: \n                CA:TRUE\n            1.2.840.113533.7.65.0: \n                0\n..V4.0....\n    Signature Algorithm: sha1WithRSAEncryption\n        49:25:c9:60:b1:0c:5f:a9:39:10:d3:c5:34:55:7d:cf:79:c3:\n        29:eb:de:f9:c2:40:f9:e8:56:c5:f0:2f:ec:f4:d9:ec:48:51:\n        b8:63:38:5e:93:6e:18:96:85:b9:ca:50:9c:a4:b8:ea:66:26:\n        68:93:85:6f:6f:4c:71:d0:be:7a:0b:3c:31:b9:f7:be:69:9e:\n        10:d7:d1:40:e8:ac:16:71:ab:ae:ab:38:e1:70:b1:ca:92:16:\n        e0:5d:85:a6:18:80:06:00:9c:e1:a6:18:42:51:a7:68:68:59:\n        ef:26:94:5f:ad:31:0c:fe:29:1e:17:01:84:37:5b:e8:12:32:\n        a3:5d\n\nAmerican Express CA\n===================\nMD5 Fingerprint: 1C:D5:8E:82:BE:70:55:8E:39:61:DF:AD:51:DB:6B:A0\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICkDCCAfkCAgCNMA0GCSqGSIb3DQEBBAUAMIGPMQswCQYDVQQGEwJVUzEnMCUG\nA1UEChMeQW1lcmljYW4gRXhwcmVzcyBDb21wYW55LCBJbmMuMSYwJAYDVQQLEx1B\nbWVyaWNhbiBFeHByZXNzIFRlY2hub2xvZ2llczEvMC0GA1UEAxMmQW1lcmljYW4g\nRXhwcmVzcyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNOTgwODE0MjIwMTAwWhcN\nMDYwODE0MjM1OTAwWjCBjzELMAkGA1UEBhMCVVMxJzAlBgNVBAoTHkFtZXJpY2Fu\nIEV4cHJlc3MgQ29tcGFueSwgSW5jLjEmMCQGA1UECxMdQW1lcmljYW4gRXhwcmVz\ncyBUZWNobm9sb2dpZXMxLzAtBgNVBAMTJkFtZXJpY2FuIEV4cHJlc3MgQ2VydGlm\naWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ8kmS\nhcr9FSm1BrZE7PyIo/KGzv8UTyQckvnCI8HOQ99dNMi4FOzVKnCRSZXXVs2U8amT\n0Ggi3E19oApyKkfqJfCFAF82VGHPC/k3Wmed6R/pZD9wlWGn0DAC3iYopGYDBOkw\n+48zB/lvYYeictvzaHhjZlmpybdm4RWySDYs+QIDAQABMA0GCSqGSIb3DQEBBAUA\nA4GBAGgXYrhzi0xs60qlPqvlnS7SzYoHV/PGWZd2Fxf4Uo4nk9hY2Chs9KIEeorC\ndiSxArTfKPL386infiNIYYj0EWiuJl32oUtTJWrYKhQCDuCHIG6eGVxzkAsj4jGX\nIz/VIqLTBnvaN/XXtUFEF3pFAtmFRWbWjsfwegyZYiJpW+3S\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 141 (0x8d)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Certificate Authority\n        Validity\n            Not Before: Aug 14 22:01:00 1998 GMT\n            Not After : Aug 14 23:59:00 2006 GMT\n        Subject: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Certificate Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:c9:f2:49:92:85:ca:fd:15:29:b5:06:b6:44:ec:\n                    fc:88:a3:f2:86:ce:ff:14:4f:24:1c:92:f9:c2:23:\n                    c1:ce:43:df:5d:34:c8:b8:14:ec:d5:2a:70:91:49:\n                    95:d7:56:cd:94:f1:a9:93:d0:68:22:dc:4d:7d:a0:\n                    0a:72:2a:47:ea:25:f0:85:00:5f:36:54:61:cf:0b:\n                    f9:37:5a:67:9d:e9:1f:e9:64:3f:70:95:61:a7:d0:\n                    30:02:de:26:28:a4:66:03:04:e9:30:fb:8f:33:07:\n                    f9:6f:61:87:a2:72:db:f3:68:78:63:66:59:a9:c9:\n                    b7:66:e1:15:b2:48:36:2c:f9\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md5WithRSAEncryption\n        68:17:62:b8:73:8b:4c:6c:eb:4a:a5:3e:ab:e5:9d:2e:d2:cd:\n        8a:07:57:f3:c6:59:97:76:17:17:f8:52:8e:27:93:d8:58:d8:\n        28:6c:f4:a2:04:7a:8a:c2:76:24:b1:02:b4:df:28:f2:f7:f3:\n        a8:a7:7e:23:48:61:88:f4:11:68:ae:26:5d:f6:a1:4b:53:25:\n        6a:d8:2a:14:02:0e:e0:87:20:6e:9e:19:5c:73:90:0b:23:e2:\n        31:97:23:3f:d5:22:a2:d3:06:7b:da:37:f5:d7:b5:41:44:17:\n        7a:45:02:d9:85:45:66:d6:8e:c7:f0:7a:0c:99:62:22:69:5b:\n        ed:d2\n\nAmerican Express Global CA\n==========================\nMD5 Fingerprint: 63:1B:66:93:8C:F3:66:CB:3C:79:57:DC:05:49:EA:DB\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIEBDCCAuygAwIBAgICAIUwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNVBAYTAlVT\nMScwJQYDVQQKEx5BbWVyaWNhbiBFeHByZXNzIENvbXBhbnksIEluYy4xJjAkBgNV\nBAsTHUFtZXJpY2FuIEV4cHJlc3MgVGVjaG5vbG9naWVzMTYwNAYDVQQDEy1BbWVy\naWNhbiBFeHByZXNzIEdsb2JhbCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNOTgw\nODE0MTkwNjAwWhcNMTMwODE0MjM1OTAwWjCBljELMAkGA1UEBhMCVVMxJzAlBgNV\nBAoTHkFtZXJpY2FuIEV4cHJlc3MgQ29tcGFueSwgSW5jLjEmMCQGA1UECxMdQW1l\ncmljYW4gRXhwcmVzcyBUZWNobm9sb2dpZXMxNjA0BgNVBAMTLUFtZXJpY2FuIEV4\ncHJlc3MgR2xvYmFsIENlcnRpZmljYXRlIEF1dGhvcml0eTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAPAkJmYu++tKc3FTiUfLJjxTkpRMysKFtQ34w1e9\nLyofahi3V68MABb6oLaQpvcaoS5mJsdoo4qTaWa1RlYtHYLqkAwKIsKJUI0F89Sr\nc0HwzxKsKLRvFJSWWUuekHWG3+JH6+HpT0N+h8onGGaetcFAZX38YW+tm3LPqV7Y\n8/nabpEQ+ky16n4g3qk5L/WI5IpvNcYgnCuGRjMK/DFVpWusFkDpzTVZbzIEw3u1\nD3t3cPNIuypSgs6vKW3xEW9t5gcAAe+a8yYNpnkTZ6/4qxx1rJG1a75AsN6cDLFp\nhRlxkRNFyt/R/eayypaDedvFuKpbepALeFY+xteflEgR9a0CAwEAAaNaMFgwEgYD\nVR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMCAQYwFwYDVR0gBBAwDjAMBgoq\nhkiG+Q8KAQUBMBkGA1UdDgQSBBBXRzV7NicRqAj8L0Yl6yRpMA0GCSqGSIb3DQEB\nBQUAA4IBAQDHYUWoinG5vjTpIXshzVYTmNUwY+kYqkuSFb8LHbvskmnFLsNhi+gw\nRcsQRsFzOFyLGdIr80DrfHKzLh4n43WVihybLsSVBYZy0FX0oZJSeVzb9Pjc5dcS\nsUDHPIbkMWVKyjfG3nZXGWlMRmn8Kq0WN3qTrPchSy3766lQy8HRQAjaA2mHpzde\nVcHF7cTjjgwml5tcV0ty4/IDBdACOyYDQJCevgtbSQx48dVMVSng9v1MA6lUAjLR\nV1qFrEPtWzsWX6C/NdtLnnvo/+cNPDuom0lBRvVzTv+SZSGDE1Vx60k8f4gawhIo\nJaFGS0E3l3/sjvHUoZbCILZerakcHhGg\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 133 (0x85)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Global Certificate Authority\n        Validity\n            Not Before: Aug 14 19:06:00 1998 GMT\n            Not After : Aug 14 23:59:00 2013 GMT\n        Subject: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Global Certificate Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:f0:24:26:66:2e:fb:eb:4a:73:71:53:89:47:cb:\n                    26:3c:53:92:94:4c:ca:c2:85:b5:0d:f8:c3:57:bd:\n                    2f:2a:1f:6a:18:b7:57:af:0c:00:16:fa:a0:b6:90:\n                    a6:f7:1a:a1:2e:66:26:c7:68:a3:8a:93:69:66:b5:\n                    46:56:2d:1d:82:ea:90:0c:0a:22:c2:89:50:8d:05:\n                    f3:d4:ab:73:41:f0:cf:12:ac:28:b4:6f:14:94:96:\n                    59:4b:9e:90:75:86:df:e2:47:eb:e1:e9:4f:43:7e:\n                    87:ca:27:18:66:9e:b5:c1:40:65:7d:fc:61:6f:ad:\n                    9b:72:cf:a9:5e:d8:f3:f9:da:6e:91:10:fa:4c:b5:\n                    ea:7e:20:de:a9:39:2f:f5:88:e4:8a:6f:35:c6:20:\n                    9c:2b:86:46:33:0a:fc:31:55:a5:6b:ac:16:40:e9:\n                    cd:35:59:6f:32:04:c3:7b:b5:0f:7b:77:70:f3:48:\n                    bb:2a:52:82:ce:af:29:6d:f1:11:6f:6d:e6:07:00:\n                    01:ef:9a:f3:26:0d:a6:79:13:67:af:f8:ab:1c:75:\n                    ac:91:b5:6b:be:40:b0:de:9c:0c:b1:69:85:19:71:\n                    91:13:45:ca:df:d1:fd:e6:b2:ca:96:83:79:db:c5:\n                    b8:aa:5b:7a:90:0b:78:56:3e:c6:d7:9f:94:48:11:\n                    f5:ad\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: critical\n                CA:TRUE, pathlen:5\n            X509v3 Key Usage: critical\n                Certificate Sign, CRL Sign\n            X509v3 Certificate Policies: \n                Policy: 1.2.840.113807.10.1.5.1\n\n            X509v3 Subject Key Identifier: \n                57:47:35:7B:36:27:11:A8:08:FC:2F:46:25:EB:24:69\n    Signature Algorithm: sha1WithRSAEncryption\n        c7:61:45:a8:8a:71:b9:be:34:e9:21:7b:21:cd:56:13:98:d5:\n        30:63:e9:18:aa:4b:92:15:bf:0b:1d:bb:ec:92:69:c5:2e:c3:\n        61:8b:e8:30:45:cb:10:46:c1:73:38:5c:8b:19:d2:2b:f3:40:\n        eb:7c:72:b3:2e:1e:27:e3:75:95:8a:1c:9b:2e:c4:95:05:86:\n        72:d0:55:f4:a1:92:52:79:5c:db:f4:f8:dc:e5:d7:12:b1:40:\n        c7:3c:86:e4:31:65:4a:ca:37:c6:de:76:57:19:69:4c:46:69:\n        fc:2a:ad:16:37:7a:93:ac:f7:21:4b:2d:fb:eb:a9:50:cb:c1:\n        d1:40:08:da:03:69:87:a7:37:5e:55:c1:c5:ed:c4:e3:8e:0c:\n        26:97:9b:5c:57:4b:72:e3:f2:03:05:d0:02:3b:26:03:40:90:\n        9e:be:0b:5b:49:0c:78:f1:d5:4c:55:29:e0:f6:fd:4c:03:a9:\n        54:02:32:d1:57:5a:85:ac:43:ed:5b:3b:16:5f:a0:bf:35:db:\n        4b:9e:7b:e8:ff:e7:0d:3c:3b:a8:9b:49:41:46:f5:73:4e:ff:\n        92:65:21:83:13:55:71:eb:49:3c:7f:88:1a:c2:12:28:25:a1:\n        46:4b:41:37:97:7f:ec:8e:f1:d4:a1:96:c2:20:b6:5e:ad:a9:\n        1c:1e:11:a0\n\nBelSign Object Publishing CA\n============================\nMD5 Fingerprint: 8A:02:F8:DF:B8:E1:84:9F:5A:C2:60:24:65:D1:73:FB\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDAzCCAmygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBuzELMAkGA1UEBhMCQkUx\nETAPBgNVBAcTCEJydXNzZWxzMRMwEQYDVQQKEwpCZWxTaWduIE5WMTgwNgYDVQQL\nEy9CZWxTaWduIE9iamVjdCBQdWJsaXNoaW5nIENlcnRpZmljYXRlIEF1dGhvcml0\neTElMCMGA1UEAxMcQmVsU2lnbiBPYmplY3QgUHVibGlzaGluZyBDQTEjMCEGCSqG\nSIb3DQEJARYUd2VibWFzdGVyQGJlbHNpZ24uYmUwHhcNOTcwOTE5MjIwMzAwWhcN\nMDcwOTE5MjIwMzAwWjCBuzELMAkGA1UEBhMCQkUxETAPBgNVBAcTCEJydXNzZWxz\nMRMwEQYDVQQKEwpCZWxTaWduIE5WMTgwNgYDVQQLEy9CZWxTaWduIE9iamVjdCBQ\ndWJsaXNoaW5nIENlcnRpZmljYXRlIEF1dGhvcml0eTElMCMGA1UEAxMcQmVsU2ln\nbiBPYmplY3QgUHVibGlzaGluZyBDQTEjMCEGCSqGSIb3DQEJARYUd2VibWFzdGVy\nQGJlbHNpZ24uYmUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMQuH7a/7oJA\n3fm3LkHVngWxWtAmfGJVA5v8y2HeS+/+6Jn+h7mIz5DaDwk8dt8Xl7bLPyVF/bS8\nWAC+sFq2FIeP7mdkrR2Ig7tnn2VhAFgIgFCfgMkx9iqQHC33SmwQ9iNDXTgJYIhX\nAs0WbBj8zfuSKnfQnpOjXYhk0Mj4XVRRAgMBAAGjFTATMBEGCWCGSAGG+EIBAQQE\nAwIABzANBgkqhkiG9w0BAQQFAAOBgQBjdhd8lvBTpV0BHFPOKcJ+daxMDaIIc7Rq\nMf0CBhSZ3FQEpL/IloafMUMyJVf2hfYluze+oXkjyVcGJXFrRU/49AJAFoIir1Tq\nMij2De6ZuksIUQ9uhiMhTC0liIHELg7xEyw4ipUCJMM6lWPkk45IuwhHcl+u5jpa\nR9Zxxp6aUg==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Object Publishing Certificate Authority, CN=BelSign Object Publishing CA/Email=webmaster@belsign.be\n        Validity\n            Not Before: Sep 19 22:03:00 1997 GMT\n            Not After : Sep 19 22:03:00 2007 GMT\n        Subject: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Object Publishing Certificate Authority, CN=BelSign Object Publishing CA/Email=webmaster@belsign.be\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:c4:2e:1f:b6:bf:ee:82:40:dd:f9:b7:2e:41:d5:\n                    9e:05:b1:5a:d0:26:7c:62:55:03:9b:fc:cb:61:de:\n                    4b:ef:fe:e8:99:fe:87:b9:88:cf:90:da:0f:09:3c:\n                    76:df:17:97:b6:cb:3f:25:45:fd:b4:bc:58:00:be:\n                    b0:5a:b6:14:87:8f:ee:67:64:ad:1d:88:83:bb:67:\n                    9f:65:61:00:58:08:80:50:9f:80:c9:31:f6:2a:90:\n                    1c:2d:f7:4a:6c:10:f6:23:43:5d:38:09:60:88:57:\n                    02:cd:16:6c:18:fc:cd:fb:92:2a:77:d0:9e:93:a3:\n                    5d:88:64:d0:c8:f8:5d:54:51\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n    Signature Algorithm: md5WithRSAEncryption\n        63:76:17:7c:96:f0:53:a5:5d:01:1c:53:ce:29:c2:7e:75:ac:\n        4c:0d:a2:08:73:b4:6a:31:fd:02:06:14:99:dc:54:04:a4:bf:\n        c8:96:86:9f:31:43:32:25:57:f6:85:f6:25:bb:37:be:a1:79:\n        23:c9:57:06:25:71:6b:45:4f:f8:f4:02:40:16:82:22:af:54:\n        ea:32:28:f6:0d:ee:99:ba:4b:08:51:0f:6e:86:23:21:4c:2d:\n        25:88:81:c4:2e:0e:f1:13:2c:38:8a:95:02:24:c3:3a:95:63:\n        e4:93:8e:48:bb:08:47:72:5f:ae:e6:3a:5a:47:d6:71:c6:9e:\n        9a:52\n\nBelSign Secure Server CA\n========================\nMD5 Fingerprint: 3D:5E:82:C6:D9:AD:D9:8B:93:6B:0C:10:B9:49:0A:B1\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIC8zCCAlygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBszELMAkGA1UEBhMCQkUx\nETAPBgNVBAcTCEJydXNzZWxzMRMwEQYDVQQKEwpCZWxTaWduIE5WMTQwMgYDVQQL\nEytCZWxTaWduIFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSEw\nHwYDVQQDExhCZWxTaWduIFNlY3VyZSBTZXJ2ZXIgQ0ExIzAhBgkqhkiG9w0BCQEW\nFHdlYm1hc3RlckBiZWxzaWduLmJlMB4XDTk3MDcxNjIyMDA1NFoXDTA3MDcxNjIy\nMDA1NFowgbMxCzAJBgNVBAYTAkJFMREwDwYDVQQHEwhCcnVzc2VsczETMBEGA1UE\nChMKQmVsU2lnbiBOVjE0MDIGA1UECxMrQmVsU2lnbiBTZWN1cmUgU2VydmVyIENl\ncnRpZmljYXRlIEF1dGhvcml0eTEhMB8GA1UEAxMYQmVsU2lnbiBTZWN1cmUgU2Vy\ndmVyIENBMSMwIQYJKoZIhvcNAQkBFhR3ZWJtYXN0ZXJAYmVsc2lnbi5iZTCBnzAN\nBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1gESeJL4BEJ/yccig/x8R3AwK0kLPjZA\nkCjaIXODU/LE0RZAwFP/rqbGJLMnbaWzPTl3XagG9ubpvGMRTgZlcAqdk/miQIt/\nSoQOjRax1swIZBIM4ChLyKWEkBf7EUYu1qeFGMsYrmOasFgG9ADP+MQJGjUMofnu\nSv1t3v4mpTsCAwEAAaMVMBMwEQYJYIZIAYb4QgEBBAQDAgCgMA0GCSqGSIb3DQEB\nBAUAA4GBAGw9mcMF4h3K5S2qaIWLQDEgZhNo5lg6idCNdbLFYth9go/32TKBd/Y1\nW4UpzmeyubwrGXjP84f9RvGVdbIJVwMwwXrNckdxgMp9ncllPEcRIn36BwsoeKGT\n6AVFSOIyMko96FMcELfHc4wHUOH5yStTQfWDjeUJOUqOA2KqQGOL\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Secure Server Certificate Authority, CN=BelSign Secure Server CA/Email=webmaster@belsign.be\n        Validity\n            Not Before: Jul 16 22:00:54 1997 GMT\n            Not After : Jul 16 22:00:54 2007 GMT\n        Subject: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Secure Server Certificate Authority, CN=BelSign Secure Server CA/Email=webmaster@belsign.be\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:d6:01:12:78:92:f8:04:42:7f:c9:c7:22:83:fc:\n                    7c:47:70:30:2b:49:0b:3e:36:40:90:28:da:21:73:\n                    83:53:f2:c4:d1:16:40:c0:53:ff:ae:a6:c6:24:b3:\n                    27:6d:a5:b3:3d:39:77:5d:a8:06:f6:e6:e9:bc:63:\n                    11:4e:06:65:70:0a:9d:93:f9:a2:40:8b:7f:4a:84:\n                    0e:8d:16:b1:d6:cc:08:64:12:0c:e0:28:4b:c8:a5:\n                    84:90:17:fb:11:46:2e:d6:a7:85:18:cb:18:ae:63:\n                    9a:b0:58:06:f4:00:cf:f8:c4:09:1a:35:0c:a1:f9:\n                    ee:4a:fd:6d:de:fe:26:a5:3b\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            Netscape Cert Type: \n                SSL Client, S/MIME\n    Signature Algorithm: md5WithRSAEncryption\n        6c:3d:99:c3:05:e2:1d:ca:e5:2d:aa:68:85:8b:40:31:20:66:\n        13:68:e6:58:3a:89:d0:8d:75:b2:c5:62:d8:7d:82:8f:f7:d9:\n        32:81:77:f6:35:5b:85:29:ce:67:b2:b9:bc:2b:19:78:cf:f3:\n        87:fd:46:f1:95:75:b2:09:57:03:30:c1:7a:cd:72:47:71:80:\n        ca:7d:9d:c9:65:3c:47:11:22:7d:fa:07:0b:28:78:a1:93:e8:\n        05:45:48:e2:32:32:4a:3d:e8:53:1c:10:b7:c7:73:8c:07:50:\n        e1:f9:c9:2b:53:41:f5:83:8d:e5:09:39:4a:8e:03:62:aa:40:\n        63:8b\n\nDeutsche Telekom AG Root CA\n===========================\nMD5 Fingerprint: 77:DE:04:94:77:D0:0C:5F:A7:B1:F4:30:18:87:FB:55\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICjjCCAfegAwIBAgIBBjANBgkqhkiG9w0BAQQFADBtMQswCQYDVQQGEwJERTEc\nMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEdMBsGA1UECxMUVGVsZVNlYyBU\ncnVzdCBDZW50ZXIxITAfBgNVBAMTGERldXRzY2hlIFRlbGVrb20gUm9vdCBDQTAe\nFw05ODEyMDkwOTExMDBaFw0wNDEyMDkyMzU5MDBaMG0xCzAJBgNVBAYTAkRFMRww\nGgYDVQQKExNEZXV0c2NoZSBUZWxla29tIEFHMR0wGwYDVQQLExRUZWxlU2VjIFRy\ndXN0IENlbnRlcjEhMB8GA1UEAxMYRGV1dHNjaGUgVGVsZWtvbSBSb290IENBMIGf\nMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdBSz5BbO5EtdpcffqVjAIVxRDe7sa\nnG0vV2HX4vVEa+42QZb2ZM7hwbK5pBQEmFDocPiONZp9ScFhHVmu2gYYlX2tzuyp\nvtEYD0CRdiqj5f3+iRX0V/fgVdp1rQD0LME1zLRDJlViRC4BJZyKW/DB0AA1eP41\n3pRAZHiDocw5iQIDAQABoz4wPDAPBgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQE\nAwIBBjAZBgNVHQ4EEgQQLIdZH4sTgLL5hp0+En5YljANBgkqhkiG9w0BAQQFAAOB\ngQAP/nO1B4hvoAuJ6spQH5TelCsLJ15P9RyVJtqMllStGZE3Q12ryYuzzW+YOT3t\n3TXjcbftE5OD6IblKTMTE7w1e/0oL3BZ1dO0jSgTWTvI1XT5RcIHYKq4GFT5pWj/\n1wXVj7YFMS5BSvQQH2BHGguLGU2SVyDS71AZ6M3QcLy8Ng==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 6 (0x6)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=DE, O=Deutsche Telekom AG, OU=TeleSec Trust Center, CN=Deutsche Telekom Root CA\n        Validity\n            Not Before: Dec  9 09:11:00 1998 GMT\n            Not After : Dec  9 23:59:00 2004 GMT\n        Subject: C=DE, O=Deutsche Telekom AG, OU=TeleSec Trust Center, CN=Deutsche Telekom Root CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:dd:05:2c:f9:05:b3:b9:12:d7:69:71:f7:ea:56:\n                    30:08:57:14:43:7b:bb:1a:9c:6d:2f:57:61:d7:e2:\n                    f5:44:6b:ee:36:41:96:f6:64:ce:e1:c1:b2:b9:a4:\n                    14:04:98:50:e8:70:f8:8e:35:9a:7d:49:c1:61:1d:\n                    59:ae:da:06:18:95:7d:ad:ce:ec:a9:be:d1:18:0f:\n                    40:91:76:2a:a3:e5:fd:fe:89:15:f4:57:f7:e0:55:\n                    da:75:ad:00:f4:2c:c1:35:cc:b4:43:26:55:62:44:\n                    2e:01:25:9c:8a:5b:f0:c1:d0:00:35:78:fe:35:de:\n                    94:40:64:78:83:a1:cc:39:89\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: \n                CA:TRUE, pathlen:5\n            X509v3 Key Usage: critical\n                Certificate Sign, CRL Sign\n            X509v3 Subject Key Identifier: \n                2C:87:59:1F:8B:13:80:B2:F9:86:9D:3E:12:7E:58:96\n    Signature Algorithm: md5WithRSAEncryption\n        0f:fe:73:b5:07:88:6f:a0:0b:89:ea:ca:50:1f:94:de:94:2b:\n        0b:27:5e:4f:f5:1c:95:26:da:8c:96:54:ad:19:91:37:43:5d:\n        ab:c9:8b:b3:cd:6f:98:39:3d:ed:dd:35:e3:71:b7:ed:13:93:\n        83:e8:86:e5:29:33:13:13:bc:35:7b:fd:28:2f:70:59:d5:d3:\n        b4:8d:28:13:59:3b:c8:d5:74:f9:45:c2:07:60:aa:b8:18:54:\n        f9:a5:68:ff:d7:05:d5:8f:b6:05:31:2e:41:4a:f4:10:1f:60:\n        47:1a:0b:8b:19:4d:92:57:20:d2:ef:50:19:e8:cd:d0:70:bc:\n        bc:36\n\nDigital Signature Trust Co. Global CA 1\n=======================================\nMD5 Fingerprint: 25:7A:BA:83:2E:B6:A2:0B:DA:FE:F5:02:0F:08:D7:AD\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV\nUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL\nEwhEU1RDQSBFMTAeFw05ODEyMTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJ\nBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x\nETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCg\nbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJENySZ\nj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlV\nSn5JTe2io74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCG\nSAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx\nJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI\nRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMTAxODEw\nMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFGp5\nfpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i\n+DAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG\nSIb3DQEBBQUAA4GBACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lN\nQseSJqBcNJo4cvj9axY+IO6CizEqkzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+\ngG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4RbyhkwS7hp86W0N6w4pl\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 913315222 (0x36701596)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=Digital Signature Trust Co., OU=DSTCA E1\n        Validity\n            Not Before: Dec 10 18:10:23 1998 GMT\n            Not After : Dec 10 18:40:23 2018 GMT\n        Subject: C=US, O=Digital Signature Trust Co., OU=DSTCA E1\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:a0:6c:81:a9:cf:34:1e:24:dd:fe:86:28:cc:de:\n                    83:2f:f9:5e:d4:42:d2:e8:74:60:66:13:98:06:1c:\n                    a9:51:12:69:6f:31:55:b9:49:72:00:08:7e:d3:a5:\n                    62:44:37:24:99:8f:d9:83:48:8f:99:6d:95:13:bb:\n                    43:3b:2e:49:4e:88:37:c1:bb:58:7f:fe:e1:bd:f8:\n                    bb:61:cd:f3:47:c0:99:a6:f1:f3:91:e8:78:7c:00:\n                    cb:61:c9:44:27:71:69:55:4a:7e:49:4d:ed:a2:a3:\n                    be:02:4c:00:ca:02:a8:ee:01:02:31:64:0f:52:2d:\n                    13:74:76:36:b5:7a:b4:2d:71\n                Exponent: 3 (0x3)\n        X509v3 extensions:\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n            X509v3 CRL Distribution Points: \n                DirName:/C=US/O=Digital Signature Trust Co./OU=DSTCA E1/CN=CRL1\n\n            X509v3 Private Key Usage Period: \n                Not Before: Dec 10 18:10:23 1998 GMT, Not After: Dec 10 18:10:23 2018 GMT\n            X509v3 Key Usage: \n                Certificate Sign, CRL Sign\n            X509v3 Authority Key Identifier: \n                keyid:6A:79:7E:91:69:46:18:13:0A:02:77:A5:59:5B:60:98:25:0E:A2:F8\n\n            X509v3 Subject Key Identifier: \n                6A:79:7E:91:69:46:18:13:0A:02:77:A5:59:5B:60:98:25:0E:A2:F8\n            X509v3 Basic Constraints: \n                CA:TRUE\n            1.2.840.113533.7.65.0: \n                0\n..V4.0....\n    Signature Algorithm: sha1WithRSAEncryption\n        22:12:d8:7a:1d:dc:81:06:b6:09:65:b2:87:c8:1f:5e:b4:2f:\n        e9:c4:1e:f2:3c:c1:bb:04:90:11:4a:83:4e:7e:93:b9:4d:42:\n        c7:92:26:a0:5c:34:9a:38:72:f8:fd:6b:16:3e:20:ee:82:8b:\n        31:2a:93:36:85:23:88:8a:3c:03:68:d3:c9:09:0f:4d:fc:6c:\n        a4:da:28:72:93:0e:89:80:b0:7d:fe:80:6f:65:6d:18:33:97:\n        8b:c2:6b:89:ee:60:3d:c8:9b:ef:7f:2b:32:62:73:93:cb:3c:\n        e3:7b:e2:76:78:45:bc:a1:93:04:bb:86:9f:3a:5b:43:7a:c3:\n        8a:65\n\nDigital Signature Trust Co. Global CA 2\n=======================================\nMD5 Fingerprint: 6C:C9:A7:6E:47:F1:0C:E3:53:3B:78:4C:4D:C2:6A:C5\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIID2DCCAsACEQDQHkCLAAACfAAAAAIAAAABMA0GCSqGSIb3DQEBBQUAMIGpMQsw\nCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp\ndHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UE\nCxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDExITAfBgkqhkiG9w0B\nCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODEyMDExODE4NTVaFw0wODExMjgx\nODE4NTVaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMO\nU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0\nIENvLjERMA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDEx\nITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBANLGJrbnpT3BxGjVUG9TxW9JEwm4ryxIjRRqoxdf\nWvnTLnUv2Chi0ZMv/E3Uq4flCMeZ55I/db3rJbQVwZsZPdJEjdd0IG03Ao9pk1uK\nxBmd9LIO/BZsubEFkoPRhSxglD5FVaDZqwgh5mDoO3TymVBRaNADLbGAvqPYUrBE\nzUNKcI5YhZXhTizWLUFv1oTnyJhEykfbLCSlaSbPa7gnYsP0yXqSI+0TZ4KuRS5F\n5X5yP4WdlGIQ5jyRoa13AOAV7POEgHJ6jm5gl8ckWRA0g1vhpaRptlc1HHhZxtMv\nOnNn7pTKBBMFYgZwI7P0fO5F2WQLW0mqpEPOJsREEmy43XkCAwEAATANBgkqhkiG\n9w0BAQUFAAOCAQEAojeyP2n714Z5VEkxlTMr89EJFEliYIalsBHiUMIdBlc+Legz\nZL6bqq1fG03UmZWii5rJYnK1aerZWKs17RWiQ9a2vAd5ZWRzfdd5ynvVWlHG4VME\nlo04z6MXrDlxawHDi1M8Y+nuecDkvpIyZHqzH5eUYr3qsiAVlfuX8ngvYzZAOONG\nDx3drJXK50uQe7FLqdTF65raqtWjlBRGjS0f8zrWkzr2Pnn86Oawde3uPclwx12q\ngUtGJRzHbBXjlU4PqjI3lAoXJJIThFjSY28r9+ZbYgsTF7ANUkz+/m9c4pFuHf2k\nYtdo+o56T9II2pPc8JIRetDccpMMc5NihWjQ9A==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            d0:1e:40:8b:00:00:02:7c:00:00:00:02:00:00:00:01\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X1, CN=DST RootCA X1/Email=ca@digsigtrust.com\n        Validity\n            Not Before: Dec  1 18:18:55 1998 GMT\n            Not After : Nov 28 18:18:55 2008 GMT\n        Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X1, CN=DST RootCA X1/Email=ca@digsigtrust.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:d2:c6:26:b6:e7:a5:3d:c1:c4:68:d5:50:6f:53:\n                    c5:6f:49:13:09:b8:af:2c:48:8d:14:6a:a3:17:5f:\n                    5a:f9:d3:2e:75:2f:d8:28:62:d1:93:2f:fc:4d:d4:\n                    ab:87:e5:08:c7:99:e7:92:3f:75:bd:eb:25:b4:15:\n                    c1:9b:19:3d:d2:44:8d:d7:74:20:6d:37:02:8f:69:\n                    93:5b:8a:c4:19:9d:f4:b2:0e:fc:16:6c:b9:b1:05:\n                    92:83:d1:85:2c:60:94:3e:45:55:a0:d9:ab:08:21:\n                    e6:60:e8:3b:74:f2:99:50:51:68:d0:03:2d:b1:80:\n                    be:a3:d8:52:b0:44:cd:43:4a:70:8e:58:85:95:e1:\n                    4e:2c:d6:2d:41:6f:d6:84:e7:c8:98:44:ca:47:db:\n                    2c:24:a5:69:26:cf:6b:b8:27:62:c3:f4:c9:7a:92:\n                    23:ed:13:67:82:ae:45:2e:45:e5:7e:72:3f:85:9d:\n                    94:62:10:e6:3c:91:a1:ad:77:00:e0:15:ec:f3:84:\n                    80:72:7a:8e:6e:60:97:c7:24:59:10:34:83:5b:e1:\n                    a5:a4:69:b6:57:35:1c:78:59:c6:d3:2f:3a:73:67:\n                    ee:94:ca:04:13:05:62:06:70:23:b3:f4:7c:ee:45:\n                    d9:64:0b:5b:49:aa:a4:43:ce:26:c4:44:12:6c:b8:\n                    dd:79\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        a2:37:b2:3f:69:fb:d7:86:79:54:49:31:95:33:2b:f3:d1:09:\n        14:49:62:60:86:a5:b0:11:e2:50:c2:1d:06:57:3e:2d:e8:33:\n        64:be:9b:aa:ad:5f:1b:4d:d4:99:95:a2:8b:9a:c9:62:72:b5:\n        69:ea:d9:58:ab:35:ed:15:a2:43:d6:b6:bc:07:79:65:64:73:\n        7d:d7:79:ca:7b:d5:5a:51:c6:e1:53:04:96:8d:38:cf:a3:17:\n        ac:39:71:6b:01:c3:8b:53:3c:63:e9:ee:79:c0:e4:be:92:32:\n        64:7a:b3:1f:97:94:62:bd:ea:b2:20:15:95:fb:97:f2:78:2f:\n        63:36:40:38:e3:46:0f:1d:dd:ac:95:ca:e7:4b:90:7b:b1:4b:\n        a9:d4:c5:eb:9a:da:aa:d5:a3:94:14:46:8d:2d:1f:f3:3a:d6:\n        93:3a:f6:3e:79:fc:e8:e6:b0:75:ed:ee:3d:c9:70:c7:5d:aa:\n        81:4b:46:25:1c:c7:6c:15:e3:95:4e:0f:aa:32:37:94:0a:17:\n        24:92:13:84:58:d2:63:6f:2b:f7:e6:5b:62:0b:13:17:b0:0d:\n        52:4c:fe:fe:6f:5c:e2:91:6e:1d:fd:a4:62:d7:68:fa:8e:7a:\n        4f:d2:08:da:93:dc:f0:92:11:7a:d0:dc:72:93:0c:73:93:62:\n        85:68:d0:f4\n\nDigital Signature Trust Co. Global CA 3\n=======================================\nMD5 Fingerprint: 93:C2:8E:11:7B:D4:F3:03:19:BD:28:75:13:4A:45:4A\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV\nUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL\nEwhEU1RDQSBFMjAeFw05ODEyMDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJ\nBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x\nETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC/\nk48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGODVvso\nLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3o\nTQPMx7JSxhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCG\nSAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx\nJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI\nRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxOTE3\nMjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFB6C\nTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5\nWzAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG\nSIb3DQEBBQUAA4GBAEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHR\nxdf0CiUPPXiBng+xZ8SQTGPdXqfiup/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVL\nB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1mPnHfxsb1gYgAlihw6ID\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 913232846 (0x366ed3ce)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=Digital Signature Trust Co., OU=DSTCA E2\n        Validity\n            Not Before: Dec  9 19:17:26 1998 GMT\n            Not After : Dec  9 19:47:26 2018 GMT\n        Subject: C=US, O=Digital Signature Trust Co., OU=DSTCA E2\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:bf:93:8f:17:92:ef:33:13:18:eb:10:7f:4e:16:\n                    bf:ff:06:8f:2a:85:bc:5e:f9:24:a6:24:88:b6:03:\n                    b7:c1:c3:5f:03:5b:d1:6f:ae:7e:42:ea:66:23:b8:\n                    63:83:56:fb:28:2d:e1:38:8b:b4:ee:a8:01:e1:ce:\n                    1c:b6:88:2a:22:46:85:fb:9f:a7:70:a9:47:14:3f:\n                    ce:de:65:f0:a8:71:f7:4f:26:6c:8c:bc:c6:b5:ef:\n                    de:49:27:ff:48:2a:7d:e8:4d:03:cc:c7:b2:52:c6:\n                    17:31:13:3b:b5:4d:db:c8:c4:f6:c3:0f:24:2a:da:\n                    0c:9d:e7:91:5b:80:cd:94:9d\n                Exponent: 3 (0x3)\n        X509v3 extensions:\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n            X509v3 CRL Distribution Points: \n                DirName:/C=US/O=Digital Signature Trust Co./OU=DSTCA E2/CN=CRL1\n\n            X509v3 Private Key Usage Period: \n                Not Before: Dec  9 19:17:26 1998 GMT, Not After: Dec  9 19:17:26 2018 GMT\n            X509v3 Key Usage: \n                Certificate Sign, CRL Sign\n            X509v3 Authority Key Identifier: \n                keyid:1E:82:4D:28:65:80:3C:C9:41:6E:AC:35:2E:5A:CB:DE:EE:F8:39:5B\n\n            X509v3 Subject Key Identifier: \n                1E:82:4D:28:65:80:3C:C9:41:6E:AC:35:2E:5A:CB:DE:EE:F8:39:5B\n            X509v3 Basic Constraints: \n                CA:TRUE\n            1.2.840.113533.7.65.0: \n                0\n..V4.0....\n    Signature Algorithm: sha1WithRSAEncryption\n        47:8d:83:ad:62:f2:db:b0:9e:45:22:05:b9:a2:d6:03:0e:38:\n        72:e7:9e:fc:7b:e6:93:b6:9a:a5:a2:94:c8:34:1d:91:d1:c5:\n        d7:f4:0a:25:0f:3d:78:81:9e:0f:b1:67:c4:90:4c:63:dd:5e:\n        a7:e2:ba:9f:f5:f7:4d:a5:31:7b:9c:29:2d:4c:fe:64:3e:ec:\n        b6:53:fe:ea:9b:ed:82:db:74:75:4b:07:79:6e:1e:d8:19:83:\n        73:de:f5:3e:d0:b5:de:e7:4b:68:7d:43:2e:2a:20:e1:7e:a0:\n        78:44:9e:08:f5:98:f9:c7:7f:1b:1b:d6:06:20:02:58:a1:c3:\n        a2:03\n\nDigital Signature Trust Co. Global CA 4\n=======================================\nMD5 Fingerprint: CD:3B:3D:62:5B:09:B8:09:36:87:9E:12:2F:71:64:BA\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIID2DCCAsACEQDQHkCLAAB3bQAAAAEAAAAEMA0GCSqGSIb3DQEBBQUAMIGpMQsw\nCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp\ndHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UE\nCxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIxITAfBgkqhkiG9w0B\nCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODExMzAyMjQ2MTZaFw0wODExMjcy\nMjQ2MTZaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMO\nU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0\nIENvLjERMA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIx\nITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBANx18IzAdZaawGIfJvfE4Zrq4FZzW5nNAUSoCLbV\np9oaBBg5kkp4o4HC9Xd6ULRw/5qrxsfKboNPQpj7Jgva3G3WqZlVUmfpKAOS3OWw\nBZoPFflrWXJW8vo5/Kpo7g8fEIMv/J36F5bdguPmRX3AS4BEH+0s4IT9kVySVGkl\n5WJp3OXuAFK9MwutdQKFp2RQLcUZGTDAJtvJ0/0uma1ZtQtN1EGuhUhDWdy3qOKi\n3sOP17ihYqZoUFLkzzGnlIXan0YyF1bl8utmPRL/Q9uY73fPy4GNNLHGUEom0eQ+\nQVCvbK4iNC7Va26Dunm4dmVI2gkpZGMiuftHdoWMhkTLCdsCAwEAATANBgkqhkiG\n9w0BAQUFAAOCAQEAtTYOXeFhKFoRZcA/gwN5Tb4opgsHAlKFzfiR0BBstWogWxyQ\n2TA8xkieil5k+aFxd+8EJx8H6+Qm93N0yUQYGmbT4EOvkTvRyyzYdFQ6HE3K1GjN\nI3wdEJ5F6fYAbqbNGf9PLCmPV03Ed5K+4EwJ+11EhmYhqLkyolbV6YyDfFk/xPEL\n553snr2cGA4+wjl5KLcDDQjLxufZATdQEOzMYRZA1K8xdHv8PzGn0EdzMzkbzE5q\n10mDEQb+64JYMzJM8FasHpwvVpp7wUocpf1VNs78lk30sPDst2yC7S8xmUJMqbIN\nuBVd8d+6ybVK1GSYsyapMMj9puyrliGtf8J4tg==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            d0:1e:40:8b:00:00:77:6d:00:00:00:01:00:00:00:04\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X2, CN=DST RootCA X2/Email=ca@digsigtrust.com\n        Validity\n            Not Before: Nov 30 22:46:16 1998 GMT\n            Not After : Nov 27 22:46:16 2008 GMT\n        Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X2, CN=DST RootCA X2/Email=ca@digsigtrust.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:dc:75:f0:8c:c0:75:96:9a:c0:62:1f:26:f7:c4:\n                    e1:9a:ea:e0:56:73:5b:99:cd:01:44:a8:08:b6:d5:\n                    a7:da:1a:04:18:39:92:4a:78:a3:81:c2:f5:77:7a:\n                    50:b4:70:ff:9a:ab:c6:c7:ca:6e:83:4f:42:98:fb:\n                    26:0b:da:dc:6d:d6:a9:99:55:52:67:e9:28:03:92:\n                    dc:e5:b0:05:9a:0f:15:f9:6b:59:72:56:f2:fa:39:\n                    fc:aa:68:ee:0f:1f:10:83:2f:fc:9d:fa:17:96:dd:\n                    82:e3:e6:45:7d:c0:4b:80:44:1f:ed:2c:e0:84:fd:\n                    91:5c:92:54:69:25:e5:62:69:dc:e5:ee:00:52:bd:\n                    33:0b:ad:75:02:85:a7:64:50:2d:c5:19:19:30:c0:\n                    26:db:c9:d3:fd:2e:99:ad:59:b5:0b:4d:d4:41:ae:\n                    85:48:43:59:dc:b7:a8:e2:a2:de:c3:8f:d7:b8:a1:\n                    62:a6:68:50:52:e4:cf:31:a7:94:85:da:9f:46:32:\n                    17:56:e5:f2:eb:66:3d:12:ff:43:db:98:ef:77:cf:\n                    cb:81:8d:34:b1:c6:50:4a:26:d1:e4:3e:41:50:af:\n                    6c:ae:22:34:2e:d5:6b:6e:83:ba:79:b8:76:65:48:\n                    da:09:29:64:63:22:b9:fb:47:76:85:8c:86:44:cb:\n                    09:db\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        b5:36:0e:5d:e1:61:28:5a:11:65:c0:3f:83:03:79:4d:be:28:\n        a6:0b:07:02:52:85:cd:f8:91:d0:10:6c:b5:6a:20:5b:1c:90:\n        d9:30:3c:c6:48:9e:8a:5e:64:f9:a1:71:77:ef:04:27:1f:07:\n        eb:e4:26:f7:73:74:c9:44:18:1a:66:d3:e0:43:af:91:3b:d1:\n        cb:2c:d8:74:54:3a:1c:4d:ca:d4:68:cd:23:7c:1d:10:9e:45:\n        e9:f6:00:6e:a6:cd:19:ff:4f:2c:29:8f:57:4d:c4:77:92:be:\n        e0:4c:09:fb:5d:44:86:66:21:a8:b9:32:a2:56:d5:e9:8c:83:\n        7c:59:3f:c4:f1:0b:e7:9d:ec:9e:bd:9c:18:0e:3e:c2:39:79:\n        28:b7:03:0d:08:cb:c6:e7:d9:01:37:50:10:ec:cc:61:16:40:\n        d4:af:31:74:7b:fc:3f:31:a7:d0:47:73:33:39:1b:cc:4e:6a:\n        d7:49:83:11:06:fe:eb:82:58:33:32:4c:f0:56:ac:1e:9c:2f:\n        56:9a:7b:c1:4a:1c:a5:fd:55:36:ce:fc:96:4d:f4:b0:f0:ec:\n        b7:6c:82:ed:2f:31:99:42:4c:a9:b2:0d:b8:15:5d:f1:df:ba:\n        c9:b5:4a:d4:64:98:b3:26:a9:30:c8:fd:a6:ec:ab:96:21:ad:\n        7f:c2:78:b6\n\nEntrust Worldwide by DST\n========================\nMD5 Fingerprint: B4:65:22:0A:7C:AD:DF:41:B7:D5:44:D5:AD:FA:9A:75\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDRzCCArCgAwIBAgIENm3FGDANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJV\nUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRswGQYDVQQL\nExJEU1QtRW50cnVzdCBHVEkgQ0EwHhcNOTgxMjA5MDAwMjI0WhcNMTgxMjA5MDAz\nMjI0WjBQMQswCQYDVQQGEwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUg\nVHJ1c3QgQ28uMRswGQYDVQQLExJEU1QtRW50cnVzdCBHVEkgQ0EwgZ0wDQYJKoZI\nhvcNAQEBBQADgYsAMIGHAoGBALYd90uNDxPjEvUJ/gYyDq9MQfV91Ec9KgrfgwXe\n3n3mAxb2UTrLRxpKrX7E/R20vnSKeN0Lg460hBPE+/htKa6h4Q8PQ+O1XmBp+oOU\n/Hnm3Hbt0UQrjv0Su/4XdxcMie2n71F9xO04wzujevviTaBgtfL9E2XTxuw/vjWc\nPSLvAgEDo4IBLjCCASowEQYJYIZIAYb4QgEBBAQDAgAHMHIGA1UdHwRrMGkwZ6Bl\noGOkYTBfMQswCQYDVQQGEwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUg\nVHJ1c3QgQ28uMRswGQYDVQQLExJEU1QtRW50cnVzdCBHVEkgQ0ExDTALBgNVBAMT\nBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkwMDAyMjRagQ8yMDE4MTIwOTAwMDIy\nNFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFJOaRMrQeFOAKUkE38evMz+ZdV+u\nMB0GA1UdDgQWBBSTmkTK0HhTgClJBN/HrzM/mXVfrjAMBgNVHRMEBTADAQH/MBkG\nCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GBAGSJzAOn\n3AryWCDn/RegKHLNh7DNmLUkR2MzMRAQsu+KV3KuTAPgZ5+sYEOEIsGpo+Wxp94J\n1M8NeEYjW49Je/4TIpeU6nJI4SwgeJbpZkUZywllY2E/0UmYsXYQVdVjSmZLpAdr\n3nt/ueaTWxoCW4AO3Y0Y1Iqjwmjxo+AY0U5M\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 913163544 (0x366dc518)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=Digital Signature Trust Co., OU=DST-Entrust GTI CA\n        Validity\n            Not Before: Dec  9 00:02:24 1998 GMT\n            Not After : Dec  9 00:32:24 2018 GMT\n        Subject: C=US, O=Digital Signature Trust Co., OU=DST-Entrust GTI CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:b6:1d:f7:4b:8d:0f:13:e3:12:f5:09:fe:06:32:\n                    0e:af:4c:41:f5:7d:d4:47:3d:2a:0a:df:83:05:de:\n                    de:7d:e6:03:16:f6:51:3a:cb:47:1a:4a:ad:7e:c4:\n                    fd:1d:b4:be:74:8a:78:dd:0b:83:8e:b4:84:13:c4:\n                    fb:f8:6d:29:ae:a1:e1:0f:0f:43:e3:b5:5e:60:69:\n                    fa:83:94:fc:79:e6:dc:76:ed:d1:44:2b:8e:fd:12:\n                    bb:fe:17:77:17:0c:89:ed:a7:ef:51:7d:c4:ed:38:\n                    c3:3b:a3:7a:fb:e2:4d:a0:60:b5:f2:fd:13:65:d3:\n                    c6:ec:3f:be:35:9c:3d:22:ef\n                Exponent: 3 (0x3)\n        X509v3 extensions:\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n            X509v3 CRL Distribution Points: \n                DirName:/C=US/O=Digital Signature Trust Co./OU=DST-Entrust GTI CA/CN=CRL1\n\n            X509v3 Private Key Usage Period: \n                Not Before: Dec  9 00:02:24 1998 GMT, Not After: Dec  9 00:02:24 2018 GMT\n            X509v3 Key Usage: \n                Certificate Sign, CRL Sign\n            X509v3 Authority Key Identifier: \n                keyid:93:9A:44:CA:D0:78:53:80:29:49:04:DF:C7:AF:33:3F:99:75:5F:AE\n\n            X509v3 Subject Key Identifier: \n                93:9A:44:CA:D0:78:53:80:29:49:04:DF:C7:AF:33:3F:99:75:5F:AE\n            X509v3 Basic Constraints: \n                CA:TRUE\n            1.2.840.113533.7.65.0: \n                0\n..V4.0....\n    Signature Algorithm: sha1WithRSAEncryption\n        64:89:cc:03:a7:dc:0a:f2:58:20:e7:fd:17:a0:28:72:cd:87:\n        b0:cd:98:b5:24:47:63:33:31:10:10:b2:ef:8a:57:72:ae:4c:\n        03:e0:67:9f:ac:60:43:84:22:c1:a9:a3:e5:b1:a7:de:09:d4:\n        cf:0d:78:46:23:5b:8f:49:7b:fe:13:22:97:94:ea:72:48:e1:\n        2c:20:78:96:e9:66:45:19:cb:09:65:63:61:3f:d1:49:98:b1:\n        76:10:55:d5:63:4a:66:4b:a4:07:6b:de:7b:7f:b9:e6:93:5b:\n        1a:02:5b:80:0e:dd:8d:18:d4:8a:a3:c2:68:f1:a3:e0:18:d1:\n        4e:4c\n\nEntrust.net Premium 2048 Secure Server CA\n=========================================\nMD5 Fingerprint: BA:21:EA:20:D6:DD:DB:8F:C1:57:8B:40:AD:A1:FC:FC\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML\nRW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp\nbmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5\nIEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp\nZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy\nMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3\nLmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp\nYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG\nA1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq\nK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe\nsYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX\nMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT\nXTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/\nHoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH\n4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA\nvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G\nCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA\nWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo\noPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ\nh7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18\nf3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN\nB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy\nvUxFnmG6v4SBkgPR0ml8xQ==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 946059622 (0x3863b966)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: O=Entrust.net, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Certification Authority (2048)\n        Validity\n            Not Before: Dec 24 17:50:51 1999 GMT\n            Not After : Dec 24 18:20:51 2019 GMT\n        Subject: O=Entrust.net, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Certification Authority (2048)\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:ad:4d:4b:a9:12:86:b2:ea:a3:20:07:15:16:64:\n                    2a:2b:4b:d1:bf:0b:4a:4d:8e:ed:80:76:a5:67:b7:\n                    78:40:c0:73:42:c8:68:c0:db:53:2b:dd:5e:b8:76:\n                    98:35:93:8b:1a:9d:7c:13:3a:0e:1f:5b:b7:1e:cf:\n                    e5:24:14:1e:b1:81:a9:8d:7d:b8:cc:6b:4b:03:f1:\n                    02:0c:dc:ab:a5:40:24:00:7f:74:94:a1:9d:08:29:\n                    b3:88:0b:f5:87:77:9d:55:cd:e4:c3:7e:d7:6a:64:\n                    ab:85:14:86:95:5b:97:32:50:6f:3d:c8:ba:66:0c:\n                    e3:fc:bd:b8:49:c1:76:89:49:19:fd:c0:a8:bd:89:\n                    a3:67:2f:c6:9f:bc:71:19:60:b8:2d:e9:2c:c9:90:\n                    76:66:7b:94:e2:af:78:d6:65:53:5d:3c:d6:9c:b2:\n                    cf:29:03:f9:2f:a4:50:b2:d4:48:ce:05:32:55:8a:\n                    fd:b2:64:4c:0e:e4:98:07:75:db:7f:df:b9:08:55:\n                    60:85:30:29:f9:7b:48:a4:69:86:e3:35:3f:1e:86:\n                    5d:7a:7a:15:bd:ef:00:8e:15:22:54:17:00:90:26:\n                    93:bc:0e:49:68:91:bf:f8:47:d3:9d:95:42:c1:0e:\n                    4d:df:6f:26:cf:c3:18:21:62:66:43:70:d6:d5:c0:\n                    07:e1\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n            X509v3 Authority Key Identifier: \n                keyid:55:E4:81:D1:11:80:BE:D8:89:B9:08:A3:31:F9:A1:24:09:16:B9:70\n\n            X509v3 Subject Key Identifier: \n                55:E4:81:D1:11:80:BE:D8:89:B9:08:A3:31:F9:A1:24:09:16:B9:70\n            1.2.840.113533.7.65.0: \n                0...V5.0:4.0....\n    Signature Algorithm: sha1WithRSAEncryption\n        59:47:ac:21:84:8a:17:c9:9c:89:53:1e:ba:80:85:1a:c6:3c:\n        4e:3e:b1:9c:b6:7c:c6:92:5d:18:64:02:e3:d3:06:08:11:61:\n        7c:63:e3:2b:9d:31:03:70:76:d2:a3:28:a0:f4:bb:9a:63:73:\n        ed:6d:e5:2a:db:ed:14:a9:2b:c6:36:11:d0:2b:eb:07:8b:a5:\n        da:9e:5c:19:9d:56:12:f5:54:29:c8:05:ed:b2:12:2a:8d:f4:\n        03:1b:ff:e7:92:10:87:b0:3a:b5:c3:9d:05:37:12:a3:c7:f4:\n        15:b9:d5:a4:39:16:9b:53:3a:23:91:f1:a8:82:a2:6a:88:68:\n        c1:79:02:22:bc:aa:a6:d6:ae:df:b0:14:5f:b8:87:d0:dd:7c:\n        7f:7b:ff:af:1c:cf:e6:db:07:ad:5e:db:85:9d:d0:2b:0d:33:\n        db:04:d1:e6:49:40:13:2b:76:fb:3e:e9:9c:89:0f:15:ce:18:\n        b0:85:78:21:4f:6b:4f:0e:fa:36:67:cd:07:f2:ff:08:d0:e2:\n        de:d9:bf:2a:af:b8:87:86:21:3c:04:ca:b7:94:68:7f:cf:3c:\n        e9:98:d7:38:ff:ec:c0:d9:50:f0:2e:4b:58:ae:46:6f:d0:2e:\n        c3:60:da:72:55:72:bd:4c:45:9e:61:ba:bf:84:81:92:03:d1:\n        d2:69:7c:c5\n\nEntrust.net Secure Personal CA\n==============================\nMD5 Fingerprint: 0C:41:2F:13:5B:A0:54:F5:96:66:2D:7E:CD:0E:03:F4\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMC\nVVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5u\nZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlh\nYi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV\nBAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe\nFw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJVUzEU\nMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9D\nbGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjEl\nMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMq\nRW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0G\nCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo\n6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux\n5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zm\nAqTmT173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSC\nARkwggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50\ncnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5m\nby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMp\nIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQg\nQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg\nKqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNV\nHRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8E\nBAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYE\nFMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA\nBAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7\npFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzz\nwy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/a\nEkP/TOYGJqibGapEPHayXOw=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 939758062 (0x380391ee)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=US, O=Entrust.net, OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab., OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Client Certification Authority\n        Validity\n            Not Before: Oct 12 19:24:30 1999 GMT\n            Not After : Oct 12 19:54:30 2019 GMT\n        Subject: C=US, O=Entrust.net, OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab., OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Client Certification Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:c8:3a:99:5e:31:17:df:ac:27:6f:90:7b:e4:19:\n                    ff:45:a3:34:c2:db:c1:a8:4f:f0:68:ea:84:fd:9f:\n                    75:79:cf:c1:8a:51:94:af:c7:57:03:47:64:9e:ad:\n                    82:1b:5a:da:7f:37:78:47:bb:37:98:12:96:ce:c6:\n                    13:7d:ef:d2:0c:30:51:a9:39:9e:55:f8:fb:b1:e7:\n                    30:de:83:b2:ba:3e:f1:d5:89:3b:3b:85:ba:aa:74:\n                    2c:fe:3f:31:6e:af:91:95:6e:06:d4:07:4d:4b:2c:\n                    56:47:18:04:52:da:0e:10:93:bf:63:90:9b:e1:df:\n                    8c:e6:02:a4:e6:4f:5e:f7:8b\n                Exponent: 3 (0x3)\n        X509v3 extensions:\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n            X509v3 CRL Distribution Points: \n                DirName:/C=US/O=Entrust.net/OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab./OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Client Certification Authority/CN=CRL1\n                URI:http://www.entrust.net/CRL/Client1.crl\n\n            X509v3 Private Key Usage Period: \n                Not Before: Oct 12 19:24:30 1999 GMT, Not After: Oct 12 19:24:30 2019 GMT\n            X509v3 Key Usage: \n                Certificate Sign, CRL Sign\n            X509v3 Authority Key Identifier: \n                keyid:C4:FB:9C:29:7B:97:CD:4C:96:FC:EE:5B:B3:CA:99:74:8B:95:EA:4C\n\n            X509v3 Subject Key Identifier: \n                C4:FB:9C:29:7B:97:CD:4C:96:FC:EE:5B:B3:CA:99:74:8B:95:EA:4C\n            X509v3 Basic Constraints: \n                CA:TRUE\n            1.2.840.113533.7.65.0: \n                0\n..V4.0....\n    Signature Algorithm: md5WithRSAEncryption\n        3f:ae:8a:f1:d7:66:03:05:9e:3e:fa:ea:1c:46:bb:a4:5b:8f:\n        78:9a:12:48:99:f9:f4:35:de:0c:36:07:02:6b:10:3a:89:14:\n        81:9c:31:a6:7c:b2:41:b2:6a:e7:07:01:a1:4b:f9:9f:25:3b:\n        96:ca:99:c3:3e:a1:51:1c:f3:c3:2e:44:f7:b0:67:46:aa:92:\n        e5:3b:da:1c:19:14:38:30:d5:e2:a2:31:25:2e:f1:ec:45:38:\n        ed:f8:06:58:03:73:62:b0:10:31:8f:40:bf:64:e0:5c:3e:c5:\n        4f:1f:da:12:43:ff:4c:e6:06:26:a8:9b:19:aa:44:3c:76:b2:\n        5c:ec\n\nEntrust.net Secure Server CA\n============================\nMD5 Fingerprint: DF:F2:80:73:CC:F1:E6:61:73:FC:F5:42:E9:C5:7C:EE\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC\nVVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u\nZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc\nKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u\nZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1\nMjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE\nChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j\nb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF\nbnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg\nU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA\nA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/\nI0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3\nwkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC\nAdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb\noIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5\nBgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p\ndHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk\nMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp\nb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu\ndHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0\nMFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi\nE1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa\nMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI\nhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN\n95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd\n2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 927650371 (0x374ad243)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority\n        Validity\n            Not Before: May 25 16:09:40 1999 GMT\n            Not After : May 25 16:39:40 2019 GMT\n        Subject: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:cd:28:83:34:54:1b:89:f3:0f:af:37:91:31:ff:\n                    af:31:60:c9:a8:e8:b2:10:68:ed:9f:e7:93:36:f1:\n                    0a:64:bb:47:f5:04:17:3f:23:47:4d:c5:27:19:81:\n                    26:0c:54:72:0d:88:2d:d9:1f:9a:12:9f:bc:b3:71:\n                    d3:80:19:3f:47:66:7b:8c:35:28:d2:b9:0a:df:24:\n                    da:9c:d6:50:79:81:7a:5a:d3:37:f7:c2:4a:d8:29:\n                    92:26:64:d1:e4:98:6c:3a:00:8a:f5:34:9b:65:f8:\n                    ed:e3:10:ff:fd:b8:49:58:dc:a0:de:82:39:6b:81:\n                    b1:16:19:61:b9:54:b6:e6:43\n                Exponent: 3 (0x3)\n        X509v3 extensions:\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n            X509v3 CRL Distribution Points: \n                DirName:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority/CN=CRL1\n                URI:http://www.entrust.net/CRL/net1.crl\n\n            X509v3 Private Key Usage Period: \n                Not Before: May 25 16:09:40 1999 GMT, Not After: May 25 16:09:40 2019 GMT\n            X509v3 Key Usage: \n                Certificate Sign, CRL Sign\n            X509v3 Authority Key Identifier: \n                keyid:F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A\n\n            X509v3 Subject Key Identifier: \n                F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A\n            X509v3 Basic Constraints: \n                CA:TRUE\n            1.2.840.113533.7.65.0: \n                0\n..V4.0....\n    Signature Algorithm: sha1WithRSAEncryption\n        90:dc:30:02:fa:64:74:c2:a7:0a:a5:7c:21:8d:34:17:a8:fb:\n        47:0e:ff:25:7c:8d:13:0a:fb:e4:98:b5:ef:8c:f8:c5:10:0d:\n        f7:92:be:f1:c3:d5:d5:95:6a:04:bb:2c:ce:26:36:65:c8:31:\n        c6:e7:ee:3f:e3:57:75:84:7a:11:ef:46:4f:18:f4:d3:98:bb:\n        a8:87:32:ba:72:f6:3c:e2:3d:9f:d7:1d:d9:c3:60:43:8c:58:\n        0e:22:96:2f:62:a3:2c:1f:ba:ad:05:ef:ab:32:78:87:a0:54:\n        73:19:b5:5c:05:f9:52:3e:6d:2d:45:0b:f7:0a:93:ea:ed:06:\n        f9:b2\n\nEquifax Premium CA\n==================\nMD5 Fingerprint: A9:E9:A8:9D:0E:73:E3:B1:2F:37:0D:E8:48:3F:86:ED\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDIzCCAoygAwIBAgIENeHvHjANBgkqhkiG9w0BAQUFADBPMQswCQYDVQQGEwJV\nUzEQMA4GA1UEChMHRXF1aWZheDEuMCwGA1UECxMlRXF1aWZheCBQcmVtaXVtIENl\ncnRpZmljYXRlIEF1dGhvcml0eTAeFw05ODA4MjQyMjU0MjNaFw0xODA4MjQyMjU0\nMjNaME8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFcXVpZmF4MS4wLAYDVQQLEyVF\ncXVpZmF4IFByZW1pdW0gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3\nDQEBAQUAA4GNADCBiQKBgQDOoQaOBswIC8GGqN4g1Q0O0Q3En+pq2bPCMkdAb4qI\npAm9OCwd5svmpPM269rrvPxkswf2Lbyqzp8ZSGhK/PWiRX4JEPWPs0lcIwY56hOL\nuAvNkR12X9k3oUT7X5DyZ7PNGJlDH3YSawLylYM4Q8L2YjTKyXhdX9LYupr/vhBg\nWwIDAQABo4IBCjCCAQYwcQYDVR0fBGowaDBmoGSgYqRgMF4xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQKEwdFcXVpZmF4MS4wLAYDVQQLEyVFcXVpZmF4IFByZW1pdW0gQ2Vy\ndGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIw\nMTgwODI0MjI1NDIzWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUFe6yKFmrbuX4\nz4uB9CThrj91G5gwHQYDVR0OBBYEFBXusihZq27l+M+LgfQk4a4/dRuYMAwGA1Ud\nEwQFMAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEB\nBQUAA4GBAL0LnCepA9so3JipS9DRjqeoGlqR4Jzx9xh8LiKeNh/JqLXNRkpu+jUH\nG4YI65/iqPmdQS06rlxctl80BOv8KmCw+3TkhellOJbuFcfGd2MSvYpoH6tsfdrK\nXBPO6snrCVzFc+cSAdXZUwee4A+W8Iu0u0VIn4bFGVWgy5bFA/xI\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 903999262 (0x35e1ef1e)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=Equifax, OU=Equifax Premium Certificate Authority\n        Validity\n            Not Before: Aug 24 22:54:23 1998 GMT\n            Not After : Aug 24 22:54:23 2018 GMT\n        Subject: C=US, O=Equifax, OU=Equifax Premium Certificate Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:ce:a1:06:8e:06:cc:08:0b:c1:86:a8:de:20:d5:\n                    0d:0e:d1:0d:c4:9f:ea:6a:d9:b3:c2:32:47:40:6f:\n                    8a:88:a4:09:bd:38:2c:1d:e6:cb:e6:a4:f3:36:eb:\n                    da:eb:bc:fc:64:b3:07:f6:2d:bc:aa:ce:9f:19:48:\n                    68:4a:fc:f5:a2:45:7e:09:10:f5:8f:b3:49:5c:23:\n                    06:39:ea:13:8b:b8:0b:cd:91:1d:76:5f:d9:37:a1:\n                    44:fb:5f:90:f2:67:b3:cd:18:99:43:1f:76:12:6b:\n                    02:f2:95:83:38:43:c2:f6:62:34:ca:c9:78:5d:5f:\n                    d2:d8:ba:9a:ff:be:10:60:5b\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 CRL Distribution Points: \n                DirName:/C=US/O=Equifax/OU=Equifax Premium Certificate Authority/CN=CRL1\n\n            X509v3 Private Key Usage Period: \n                Not After: Aug 24 22:54:23 2018 GMT\n            X509v3 Key Usage: \n                Certificate Sign, CRL Sign\n            X509v3 Authority Key Identifier: \n                keyid:15:EE:B2:28:59:AB:6E:E5:F8:CF:8B:81:F4:24:E1:AE:3F:75:1B:98\n\n            X509v3 Subject Key Identifier: \n                15:EE:B2:28:59:AB:6E:E5:F8:CF:8B:81:F4:24:E1:AE:3F:75:1B:98\n            X509v3 Basic Constraints: \n                CA:TRUE\n            1.2.840.113533.7.65.0: \n                0...V3.0c....\n    Signature Algorithm: sha1WithRSAEncryption\n        bd:0b:9c:27:a9:03:db:28:dc:98:a9:4b:d0:d1:8e:a7:a8:1a:\n        5a:91:e0:9c:f1:f7:18:7c:2e:22:9e:36:1f:c9:a8:b5:cd:46:\n        4a:6e:fa:35:07:1b:86:08:eb:9f:e2:a8:f9:9d:41:2d:3a:ae:\n        5c:5c:b6:5f:34:04:eb:fc:2a:60:b0:fb:74:e4:85:e9:65:38:\n        96:ee:15:c7:c6:77:63:12:bd:8a:68:1f:ab:6c:7d:da:ca:5c:\n        13:ce:ea:c9:eb:09:5c:c5:73:e7:12:01:d5:d9:53:07:9e:e0:\n        0f:96:f0:8b:b4:bb:45:48:9f:86:c5:19:55:a0:cb:96:c5:03:\n        fc:48\n\nEquifax Secure CA\n=================\nMD5 Fingerprint: 67:CB:9D:C0:13:24:8A:82:9B:B2:17:1E:D1:1B:EC:D4\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV\nUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy\ndGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1\nMVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx\ndWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B\nAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f\nBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A\ncJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC\nAwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ\nMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm\naWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw\nODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj\nIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF\nMAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA\nA4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y\n7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh\n1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 903804111 (0x35def4cf)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority\n        Validity\n            Not Before: Aug 22 16:41:51 1998 GMT\n            Not After : Aug 22 16:41:51 2018 GMT\n        Subject: C=US, O=Equifax, OU=Equifax Secure Certificate Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:c1:5d:b1:58:67:08:62:ee:a0:9a:2d:1f:08:6d:\n                    91:14:68:98:0a:1e:fe:da:04:6f:13:84:62:21:c3:\n                    d1:7c:ce:9f:05:e0:b8:01:f0:4e:34:ec:e2:8a:95:\n                    04:64:ac:f1:6b:53:5f:05:b3:cb:67:80:bf:42:02:\n                    8e:fe:dd:01:09:ec:e1:00:14:4f:fc:fb:f0:0c:dd:\n                    43:ba:5b:2b:e1:1f:80:70:99:15:57:93:16:f1:0f:\n                    97:6a:b7:c2:68:23:1c:cc:4d:59:30:ac:51:1e:3b:\n                    af:2b:d6:ee:63:45:7b:c5:d9:5f:50:d2:e3:50:0f:\n                    3a:88:e7:bf:14:fd:e0:c7:b9\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 CRL Distribution Points: \n                DirName:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority/CN=CRL1\n\n            X509v3 Private Key Usage Period: \n                Not After: Aug 22 16:41:51 2018 GMT\n            X509v3 Key Usage: \n                Certificate Sign, CRL Sign\n            X509v3 Authority Key Identifier: \n                keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4\n\n            X509v3 Subject Key Identifier: \n                48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4\n            X509v3 Basic Constraints: \n                CA:TRUE\n            1.2.840.113533.7.65.0: \n                0...V3.0c....\n    Signature Algorithm: sha1WithRSAEncryption\n        58:ce:29:ea:fc:f7:de:b5:ce:02:b9:17:b5:85:d1:b9:e3:e0:\n        95:cc:25:31:0d:00:a6:92:6e:7f:b6:92:63:9e:50:95:d1:9a:\n        6f:e4:11:de:63:85:6e:98:ee:a8:ff:5a:c8:d3:55:b2:66:71:\n        57:de:c0:21:eb:3d:2a:a7:23:49:01:04:86:42:7b:fc:ee:7f:\n        a2:16:52:b5:67:67:d3:40:db:3b:26:58:b2:28:77:3d:ae:14:\n        77:61:d6:fa:2a:66:27:a0:0d:fa:a7:73:5c:ea:70:f1:94:21:\n        65:44:5f:fa:fc:ef:29:68:a9:a2:87:79:ef:79:ef:4f:ac:07:\n        77:38\n\nGTE CyberTrust Global Root\n==========================\nMD5 Fingerprint: CA:3D:D3:68:F1:03:5C:D0:32:FA:B8:2B:59:E8:5A:DB\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD\nVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv\nbHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv\nb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV\nUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU\ncnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds\nb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH\niM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS\nr41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4\n04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r\nGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9\n3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P\nlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 421 (0x1a5)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root\n        Validity\n            Not Before: Aug 13 00:29:00 1998 GMT\n            Not After : Aug 13 23:59:00 2018 GMT\n        Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:95:0f:a0:b6:f0:50:9c:e8:7a:c7:88:cd:dd:17:\n                    0e:2e:b0:94:d0:1b:3d:0e:f6:94:c0:8a:94:c7:06:\n                    c8:90:97:c8:b8:64:1a:7a:7e:6c:3c:53:e1:37:28:\n                    73:60:7f:b2:97:53:07:9f:53:f9:6d:58:94:d2:af:\n                    8d:6d:88:67:80:e6:ed:b2:95:cf:72:31:ca:a5:1c:\n                    72:ba:5c:02:e7:64:42:e7:f9:a9:2c:d6:3a:0d:ac:\n                    8d:42:aa:24:01:39:e6:9c:3f:01:85:57:0d:58:87:\n                    45:f8:d3:85:aa:93:69:26:85:70:48:80:3f:12:15:\n                    c7:79:b4:1f:05:2f:3b:62:99\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md5WithRSAEncryption\n        6d:eb:1b:09:e9:5e:d9:51:db:67:22:61:a4:2a:3c:48:77:e3:\n        a0:7c:a6:de:73:a2:14:03:85:3d:fb:ab:0e:30:c5:83:16:33:\n        81:13:08:9e:7b:34:4e:df:40:c8:74:d7:b9:7d:dc:f4:76:55:\n        7d:9b:63:54:18:e9:f0:ea:f3:5c:b1:d9:8b:42:1e:b9:c0:95:\n        4e:ba:fa:d5:e2:7c:f5:68:61:bf:8e:ec:05:97:5f:5b:b0:d7:\n        a3:85:34:c4:24:a7:0d:0f:95:93:ef:cb:94:d8:9e:1f:9d:5c:\n        85:6d:c7:aa:ae:4f:1f:22:b5:cd:95:ad:ba:a7:cc:f9:ab:0b:\n        7a:7f\n\nGTE CyberTrust Japan Root CA\n============================\nMD5 Fingerprint: DE:AB:FF:43:2A:65:37:06:9B:28:B5:7A:E8:84:D3:8E\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICETCCAXoCAU4wDQYJKoZIhvcNAQEEBQAwUTELMAkGA1UEBhMCSlAxHzAdBgNV\nBAoTFkN5YmVyVHJ1c3QgSmFwYW4sIEluYy4xITAfBgNVBAMTGEN5YmVyVHJ1c3Qg\nSkFQQU4gUm9vdCBDQTAeFw05ODA4MDQwNzU3MDBaFw0wMzA4MDQyMzU5MDBaMFEx\nCzAJBgNVBAYTAkpQMR8wHQYDVQQKExZDeWJlclRydXN0IEphcGFuLCBJbmMuMSEw\nHwYDVQQDExhDeWJlclRydXN0IEpBUEFOIFJvb3QgQ0EwgZ8wDQYJKoZIhvcNAQEB\nBQADgY0AMIGJAoGBALet/MpHEHaJ/Wes5HMGfIFLHda1fA5Hr+ymVHWoxP1lr+fI\nsbFsNDWN97lkVygLIVredP7ceC6GRhJMfxEf3JO9X75mmIa4t+xtSdOQ2eF5AFZo\nuq1sHyw7H8ksjEOwBELqgXOmzjN1RQ2KRXIvqldV5AfDQ+J1Og+8PNCEzrrvAgMB\nAAEwDQYJKoZIhvcNAQEEBQADgYEAt6ZkowyAPBzE2O5BO+WGpJ5gXdYBMqhqZC0g\ncEC6ck5m+gdlTgOOC/1W4K07IKcy+rISHoDfHuN6GMxX2+bJNGDvdesQFtCkLnDY\nJCO4pXdzQvkHOt0BbAiTBzUmECVgKf8J5WSfabkWSfNc3SRjRpMNsFM2dbxIILsZ\nto/QIv0=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 78 (0x4e)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=JP, O=CyberTrust Japan, Inc., CN=CyberTrust JAPAN Root CA\n        Validity\n            Not Before: Aug  4 07:57:00 1998 GMT\n            Not After : Aug  4 23:59:00 2003 GMT\n        Subject: C=JP, O=CyberTrust Japan, Inc., CN=CyberTrust JAPAN Root CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:b7:ad:fc:ca:47:10:76:89:fd:67:ac:e4:73:06:\n                    7c:81:4b:1d:d6:b5:7c:0e:47:af:ec:a6:54:75:a8:\n                    c4:fd:65:af:e7:c8:b1:b1:6c:34:35:8d:f7:b9:64:\n                    57:28:0b:21:5a:de:74:fe:dc:78:2e:86:46:12:4c:\n                    7f:11:1f:dc:93:bd:5f:be:66:98:86:b8:b7:ec:6d:\n                    49:d3:90:d9:e1:79:00:56:68:ba:ad:6c:1f:2c:3b:\n                    1f:c9:2c:8c:43:b0:04:42:ea:81:73:a6:ce:33:75:\n                    45:0d:8a:45:72:2f:aa:57:55:e4:07:c3:43:e2:75:\n                    3a:0f:bc:3c:d0:84:ce:ba:ef\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md5WithRSAEncryption\n        b7:a6:64:a3:0c:80:3c:1c:c4:d8:ee:41:3b:e5:86:a4:9e:60:\n        5d:d6:01:32:a8:6a:64:2d:20:70:40:ba:72:4e:66:fa:07:65:\n        4e:03:8e:0b:fd:56:e0:ad:3b:20:a7:32:fa:b2:12:1e:80:df:\n        1e:e3:7a:18:cc:57:db:e6:c9:34:60:ef:75:eb:10:16:d0:a4:\n        2e:70:d8:24:23:b8:a5:77:73:42:f9:07:3a:dd:01:6c:08:93:\n        07:35:26:10:25:60:29:ff:09:e5:64:9f:69:b9:16:49:f3:5c:\n        dd:24:63:46:93:0d:b0:53:36:75:bc:48:20:bb:19:b6:8f:d0:\n        22:fd\n\nGTE CyberTrust Japan Secure Server CA\n=====================================\nMD5 Fingerprint: DD:0D:0D:B4:78:4B:7D:CE:30:0A:A6:35:C6:AB:4C:88\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICIzCCAYwCAU8wDQYJKoZIhvcNAQEEBQAwWjELMAkGA1UEBhMCSlAxHzAdBgNV\nBAoTFkN5YmVyVHJ1c3QgSmFwYW4sIEluYy4xKjAoBgNVBAMTIUN5YmVyVHJ1c3Qg\nSkFQQU4gU2VjdXJlIFNlcnZlciBDQTAeFw05ODA4MDQwODA2MzJaFw0wMzA4MDQy\nMzU5MDBaMFoxCzAJBgNVBAYTAkpQMR8wHQYDVQQKExZDeWJlclRydXN0IEphcGFu\nLCBJbmMuMSowKAYDVQQDEyFDeWJlclRydXN0IEpBUEFOIFNlY3VyZSBTZXJ2ZXIg\nQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKwmo6G4b2rALBL52zEFkuf9\n+tSBtLjVKtWQ+vBDZfwSFcrs27lh3jNjN0+vADx/kjcbGHPlnzyI8RoTRP558sMm\nlQ8L8J4UByFsV8Jdw+JRsM2LX81fhjj4eZc57Oi/Ui6xXqqprozt7tfIty4xi7Q5\nkjt8gScHGgFEL0lzILbJAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAaB17Eu5aeSkx\nygGsi1CpJ5ksAPw4Ghz/wtXwE/4bpzn1gBTrUfrAjXuEG1musTVRbqE+1xvsoJ7f\n4KWCluOxP9io8ct5gI738ESZfhT1I6MR42hLBTZuiOOrhqo4UwNCO9O5+eC/BenT\nX8NKp7b9t12QSfiasq1mpoIAk65g/yA=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 79 (0x4f)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=JP, O=CyberTrust Japan, Inc., CN=CyberTrust JAPAN Secure Server CA\n        Validity\n            Not Before: Aug  4 08:06:32 1998 GMT\n            Not After : Aug  4 23:59:00 2003 GMT\n        Subject: C=JP, O=CyberTrust Japan, Inc., CN=CyberTrust JAPAN Secure Server CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:ac:26:a3:a1:b8:6f:6a:c0:2c:12:f9:db:31:05:\n                    92:e7:fd:fa:d4:81:b4:b8:d5:2a:d5:90:fa:f0:43:\n                    65:fc:12:15:ca:ec:db:b9:61:de:33:63:37:4f:af:\n                    00:3c:7f:92:37:1b:18:73:e5:9f:3c:88:f1:1a:13:\n                    44:fe:79:f2:c3:26:95:0f:0b:f0:9e:14:07:21:6c:\n                    57:c2:5d:c3:e2:51:b0:cd:8b:5f:cd:5f:86:38:f8:\n                    79:97:39:ec:e8:bf:52:2e:b1:5e:aa:a9:ae:8c:ed:\n                    ee:d7:c8:b7:2e:31:8b:b4:39:92:3b:7c:81:27:07:\n                    1a:01:44:2f:49:73:20:b6:c9\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md5WithRSAEncryption\n        68:1d:7b:12:ee:5a:79:29:31:ca:01:ac:8b:50:a9:27:99:2c:\n        00:fc:38:1a:1c:ff:c2:d5:f0:13:fe:1b:a7:39:f5:80:14:eb:\n        51:fa:c0:8d:7b:84:1b:59:ae:b1:35:51:6e:a1:3e:d7:1b:ec:\n        a0:9e:df:e0:a5:82:96:e3:b1:3f:d8:a8:f1:cb:79:80:8e:f7:\n        f0:44:99:7e:14:f5:23:a3:11:e3:68:4b:05:36:6e:88:e3:ab:\n        86:aa:38:53:03:42:3b:d3:b9:f9:e0:bf:05:e9:d3:5f:c3:4a:\n        a7:b6:fd:b7:5d:90:49:f8:9a:b2:ad:66:a6:82:00:93:ae:60:\n        ff:20\n\nGTE CyberTrust Root 2\n=====================\nMD5 Fingerprint: BA:ED:17:57:9A:4B:FF:7C:F9:C9:1F:A2:CD:1A:D6:87\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICUDCCAbkCAgGbMA0GCSqGSIb3DQEBBAUAMHAxCzAJBgNVBAYTAlVTMRgwFgYD\nVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv\nbHV0aW9ucywgSW5jLjEeMBwGA1UEAxMVR1RFIEN5YmVyVHJ1c3QgUm9vdCAyMB4X\nDTk4MDgxMTExMzUwN1oXDTA4MDgxMTExMjIxNlowcDELMAkGA1UEBhMCVVMxGDAW\nBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3Qg\nU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290IDIw\ngZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANksTE4vaRoj41a6886EwAnAefFE\nXzMfFZF/iogouCRFzI8YzR900bWPcUzWMfZzloSUQMWpg2Akfa9vNLdLTMIJgDtF\nBJ7EPMQndXsADKFkR7UUXYJLUTpYu0RMPdPlBjjoYVyYeLuAs5zacoJioN+cX+v5\nT3fCzGAYAGs0giWzAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAo2SRbxDt526iQkCU\neM74FAjR+kOF60bNkhTQ7y4tNjkY2brJJ4gp6UgXb/jBqshhbS39QC11QzCXOfgU\nZL1v72OoK0LfsloNJex7N9jOkSmCFvnoYqLhdsQCfd0li5jh9g1gjPZZkEBRRNHC\n+xkkHhc5a3QhFTPWVdeCHnAsJ6g=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 411 (0x19b)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 2\n        Validity\n            Not Before: Aug 11 11:35:07 1998 GMT\n            Not After : Aug 11 11:22:16 2008 GMT\n        Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 2\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:d9:2c:4c:4e:2f:69:1a:23:e3:56:ba:f3:ce:84:\n                    c0:09:c0:79:f1:44:5f:33:1f:15:91:7f:8a:88:28:\n                    b8:24:45:cc:8f:18:cd:1f:74:d1:b5:8f:71:4c:d6:\n                    31:f6:73:96:84:94:40:c5:a9:83:60:24:7d:af:6f:\n                    34:b7:4b:4c:c2:09:80:3b:45:04:9e:c4:3c:c4:27:\n                    75:7b:00:0c:a1:64:47:b5:14:5d:82:4b:51:3a:58:\n                    bb:44:4c:3d:d3:e5:06:38:e8:61:5c:98:78:bb:80:\n                    b3:9c:da:72:82:62:a0:df:9c:5f:eb:f9:4f:77:c2:\n                    cc:60:18:00:6b:34:82:25:b3\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md5WithRSAEncryption\n        a3:64:91:6f:10:ed:e7:6e:a2:42:40:94:78:ce:f8:14:08:d1:\n        fa:43:85:eb:46:cd:92:14:d0:ef:2e:2d:36:39:18:d9:ba:c9:\n        27:88:29:e9:48:17:6f:f8:c1:aa:c8:61:6d:2d:fd:40:2d:75:\n        43:30:97:39:f8:14:64:bd:6f:ef:63:a8:2b:42:df:b2:5a:0d:\n        25:ec:7b:37:d8:ce:91:29:82:16:f9:e8:62:a2:e1:76:c4:02:\n        7d:dd:25:8b:98:e1:f6:0d:60:8c:f6:59:90:40:51:44:d1:c2:\n        fb:19:24:1e:17:39:6b:74:21:15:33:d6:55:d7:82:1e:70:2c:\n        27:a8\n\nGTE CyberTrust Root 3\n=====================\nMD5 Fingerprint: DB:81:96:57:AE:64:61:EF:77:A7:83:C4:51:24:3C:87\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICUDCCAbkCAgGXMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNVBAYTAlVTMRgwFgYD\nVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv\nbHV0aW9ucywgSW5jLjEeMBwGA1UEAxMVR1RFIEN5YmVyVHJ1c3QgUm9vdCAzMB4X\nDTk4MDgxMDE5NTkwOFoXDTA4MDgxMDE5MzYzOVowcDELMAkGA1UEBhMCVVMxGDAW\nBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3Qg\nU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290IDMw\ngZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOHzsSsLztwU2TSXYlASVmOETFP6\nwIXP+sHdD955E39T+6oOYN3iYr/G7k6ZNKpoQzWZ+KP982O9AVRqnrI6lix7eCjG\nWrWNGhUY/eOMLqJQCVtx1g21GB8ZjgQpk5N4q18U53NC8gMMV6IbUDsLu1ngoDoD\n7icbWky5sAjKuRqJAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAheutlCAG6bKiazvy\nZuvjS7gSJgXl9JGo3IfcmPSUwfRhvdWcbFFzlV7QvdfmRdw8z0aE1ee57ORnY24A\nKHdxXUoF6bl8hszCRLveKUja6t29F58dUQGo6BResVf3/9qPzpX+Le0yEnf/fGph\nla4xcgYI8PnzDY7i76hTXZEDg94=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 407 (0x197)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 3\n        Validity\n            Not Before: Aug 10 19:59:08 1998 GMT\n            Not After : Aug 10 19:36:39 2008 GMT\n        Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 3\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:e1:f3:b1:2b:0b:ce:dc:14:d9:34:97:62:50:12:\n                    56:63:84:4c:53:fa:c0:85:cf:fa:c1:dd:0f:de:79:\n                    13:7f:53:fb:aa:0e:60:dd:e2:62:bf:c6:ee:4e:99:\n                    34:aa:68:43:35:99:f8:a3:fd:f3:63:bd:01:54:6a:\n                    9e:b2:3a:96:2c:7b:78:28:c6:5a:b5:8d:1a:15:18:\n                    fd:e3:8c:2e:a2:50:09:5b:71:d6:0d:b5:18:1f:19:\n                    8e:04:29:93:93:78:ab:5f:14:e7:73:42:f2:03:0c:\n                    57:a2:1b:50:3b:0b:bb:59:e0:a0:3a:03:ee:27:1b:\n                    5a:4c:b9:b0:08:ca:b9:1a:89\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        85:eb:ad:94:20:06:e9:b2:a2:6b:3b:f2:66:eb:e3:4b:b8:12:\n        26:05:e5:f4:91:a8:dc:87:dc:98:f4:94:c1:f4:61:bd:d5:9c:\n        6c:51:73:95:5e:d0:bd:d7:e6:45:dc:3c:cf:46:84:d5:e7:b9:\n        ec:e4:67:63:6e:00:28:77:71:5d:4a:05:e9:b9:7c:86:cc:c2:\n        44:bb:de:29:48:da:ea:dd:bd:17:9f:1d:51:01:a8:e8:14:5e:\n        b1:57:f7:ff:da:8f:ce:95:fe:2d:ed:32:12:77:ff:7c:6a:61:\n        95:ae:31:72:06:08:f0:f9:f3:0d:8e:e2:ef:a8:53:5d:91:03:\n        83:de\n\nGTE CyberTrust Root 4\n=====================\nMD5 Fingerprint: 33:43:02:B1:B9:E0:73:B1:B1:20:CA:CB:C7:84:03:50\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDVTCCAj0CAgGoMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNVBAYTAlVTMRgwFgYD\nVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv\nbHV0aW9ucywgSW5jLjEeMBwGA1UEAxMVR1RFIEN5YmVyVHJ1c3QgUm9vdCA0MB4X\nDTk4MDgxMzEzNTEwMFoXDTEzMDgxMzIzNTkwMFowcDELMAkGA1UEBhMCVVMxGDAW\nBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3Qg\nU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290IDQw\nggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6nSJuf9pmPDlCsaMqb9P3\nvK6sMVrXEZBHuZ0ZLvnzGyKgw+GnusT8XgqUS5haSybkH/Tc8/6OiNxsLXx3hyZQ\nwF5OqCih6hdpT03GAQ7amg0GViYVtqRdejWvje14Uob5OKuzAdPaBZaxtlCrwKGu\nF1P6QzkgcWUj223Etu2YRYPX0vbiqWv7+XXM78WrcZY16N+OkZuoEHUft84Tjmuz\nlneXGpEvxyxpmfAPKmgAmHZEG4wo0uuO9IO0f6QlXmw72cZo1WG41F4xB7VbkDVS\nV3sXIO0tuB6OiDk+Usvf8FyxZbulErSQY79xnTLB2r9QSpW+BjrEK+vNmHZETQvl\nAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAEOvHIfJSbpliTRJPOoHO0eiedSgO5Bs\n3n+oVMPoTEAyvMjsHOXZrEC6/Iw/wnOc9GTq36ntTlvIAWDuOW1DJ/N/qgjS/k5v\nFDJNfeQ0gKU1xNZGULQ7oC1lH09lfjQoLcCndn0xyQ0zFvYgGSARULsDzHBtlrfv\nTKfaNhXPu03UltyITWyY7blz/ihXoO1k+AqBKXP29pcyhzm0ge/ZTRoHNPe6QjXe\nV9xc1vfF6wonDIGmwtBoTv2SW0iD9haKjzZb7TFsP0F6cfeSPzGkCkBM84biYcE8\nSYEtpbjvupcPvCsdm4ny0o4eTYbywqv2LZnAGyoNobZP+SxYTT19Nwo=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 424 (0x1a8)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 4\n        Validity\n            Not Before: Aug 13 13:51:00 1998 GMT\n            Not After : Aug 13 23:59:00 2013 GMT\n        Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 4\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:ba:9d:22:6e:7f:da:66:3c:39:42:b1:a3:2a:6f:\n                    d3:f7:bc:ae:ac:31:5a:d7:11:90:47:b9:9d:19:2e:\n                    f9:f3:1b:22:a0:c3:e1:a7:ba:c4:fc:5e:0a:94:4b:\n                    98:5a:4b:26:e4:1f:f4:dc:f3:fe:8e:88:dc:6c:2d:\n                    7c:77:87:26:50:c0:5e:4e:a8:28:a1:ea:17:69:4f:\n                    4d:c6:01:0e:da:9a:0d:06:56:26:15:b6:a4:5d:7a:\n                    35:af:8d:ed:78:52:86:f9:38:ab:b3:01:d3:da:05:\n                    96:b1:b6:50:ab:c0:a1:ae:17:53:fa:43:39:20:71:\n                    65:23:db:6d:c4:b6:ed:98:45:83:d7:d2:f6:e2:a9:\n                    6b:fb:f9:75:cc:ef:c5:ab:71:96:35:e8:df:8e:91:\n                    9b:a8:10:75:1f:b7:ce:13:8e:6b:b3:96:77:97:1a:\n                    91:2f:c7:2c:69:99:f0:0f:2a:68:00:98:76:44:1b:\n                    8c:28:d2:eb:8e:f4:83:b4:7f:a4:25:5e:6c:3b:d9:\n                    c6:68:d5:61:b8:d4:5e:31:07:b5:5b:90:35:52:57:\n                    7b:17:20:ed:2d:b8:1e:8e:88:39:3e:52:cb:df:f0:\n                    5c:b1:65:bb:a5:12:b4:90:63:bf:71:9d:32:c1:da:\n                    bf:50:4a:95:be:06:3a:c4:2b:eb:cd:98:76:44:4d:\n                    0b:e5\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        43:af:1c:87:c9:49:ba:65:89:34:49:3c:ea:07:3b:47:a2:79:\n        d4:a0:3b:90:6c:de:7f:a8:54:c3:e8:4c:40:32:bc:c8:ec:1c:\n        e5:d9:ac:40:ba:fc:8c:3f:c2:73:9c:f4:64:ea:df:a9:ed:4e:\n        5b:c8:01:60:ee:39:6d:43:27:f3:7f:aa:08:d2:fe:4e:6f:14:\n        32:4d:7d:e4:34:80:a5:35:c4:d6:46:50:b4:3b:a0:2d:65:1f:\n        4f:65:7e:34:28:2d:c0:a7:76:7d:31:c9:0d:33:16:f6:20:19:\n        20:11:50:bb:03:cc:70:6d:96:b7:ef:4c:a7:da:36:15:cf:bb:\n        4d:d4:96:dc:88:4d:6c:98:ed:b9:73:fe:28:57:a0:ed:64:f8:\n        0a:81:29:73:f6:f6:97:32:87:39:b4:81:ef:d9:4d:1a:07:34:\n        f7:ba:42:35:de:57:dc:5c:d6:f7:c5:eb:0a:27:0c:81:a6:c2:\n        d0:68:4e:fd:92:5b:48:83:f6:16:8a:8f:36:5b:ed:31:6c:3f:\n        41:7a:71:f7:92:3f:31:a4:0a:40:4c:f3:86:e2:61:c1:3c:49:\n        81:2d:a5:b8:ef:ba:97:0f:bc:2b:1d:9b:89:f2:d2:8e:1e:4d:\n        86:f2:c2:ab:f6:2d:99:c0:1b:2a:0d:a1:b6:4f:f9:2c:58:4d:\n        3d:7d:37:0a\n\nGTE CyberTrust Root 5\n=====================\nMD5 Fingerprint: 7D:6C:86:E4:FC:4D:D1:0B:00:BA:22:BB:4E:7C:6A:8E\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDtjCCAp6gAwIBAgICAbYwDQYJKoZIhvcNAQEFBQAwcDELMAkGA1UEBhMCVVMx\nGDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1\nc3QgU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290\nIDUwHhcNOTgwODE0MTQ1MDAwWhcNMTMwODE0MjM1OTAwWjBwMQswCQYDVQQGEwJV\nUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU\ncnVzdCBTb2x1dGlvbnMsIEluYy4xHjAcBgNVBAMTFUdURSBDeWJlclRydXN0IFJv\nb3QgNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALwSbj+KfHqXAewe\nuzlaAvR4RKJIG457SVJ6uHtHs6+Um2+7lvoramVcuByUc76/iQoigO5X/IwFu3Cf\nlzkE2qOHXKjlyq/AM5rVN1xLrOSA0KYjYPv9ci6UncfOwgQy73hgXe2thw9FZR48\nmgqavl0dmezn8tHGehfZrZtUln/EfGC/haoVNR1A2hG87FQhKC0joajwzy3N3fx+\nD17hZQdWywe00lboXjHMGGPEhtIthc+Tkqtt/mg5+95zvYb45EZ66p8My/QZ/mO8\n0Sx7iDM29uThnAxTgWAc2i6rlqkWiBNQmbK9Vd8VMH7o5Zj7cH5stQf8/Ea30O03\nln4y/iECAwEAAaNaMFgwEgYDVR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMC\nAQYwFwYDVR0gBBAwDjAMBgoqhkiG+GMBAgEDMBkGA1UdDgQSBBB2CkkhOEyf3vjE\nScdxcZGdMA0GCSqGSIb3DQEBBQUAA4IBAQBBOtQYW9q43iEc4Y4J5fFoNP/elvQH\n9ac886xKsZv6kvqb7eYyIapKdsXcTzjl39WG5NXIdn2Y17HNj021kSNsi4rr6nzv\nFJTExvAfSi0ycWMrY5EmAgm2gB3t4sy4f9uHY8jh0GwmsTUdQGYQG82VVBgzYewT\nT9oT95mvPtDPjqZyorPDBZrJJ32SzH5SjbOrcG2eiZ9N6xp1wpiq1QIW1wyKvyXk\n6y28mOlYOBl8uTf+2+KZCHMGx5eDan0QAS8yuRcFSmXmL86+XlOmgumaUwqEdC2D\nysiUFnZflGEo8IWnObvXi9moshMdVAk0JH0ggX1mfqKQdFwQxr3sqxvC\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 438 (0x1b6)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 5\n        Validity\n            Not Before: Aug 14 14:50:00 1998 GMT\n            Not After : Aug 14 23:59:00 2013 GMT\n        Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 5\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:bc:12:6e:3f:8a:7c:7a:97:01:ec:1e:bb:39:5a:\n                    02:f4:78:44:a2:48:1b:8e:7b:49:52:7a:b8:7b:47:\n                    b3:af:94:9b:6f:bb:96:fa:2b:6a:65:5c:b8:1c:94:\n                    73:be:bf:89:0a:22:80:ee:57:fc:8c:05:bb:70:9f:\n                    97:39:04:da:a3:87:5c:a8:e5:ca:af:c0:33:9a:d5:\n                    37:5c:4b:ac:e4:80:d0:a6:23:60:fb:fd:72:2e:94:\n                    9d:c7:ce:c2:04:32:ef:78:60:5d:ed:ad:87:0f:45:\n                    65:1e:3c:9a:0a:9a:be:5d:1d:99:ec:e7:f2:d1:c6:\n                    7a:17:d9:ad:9b:54:96:7f:c4:7c:60:bf:85:aa:15:\n                    35:1d:40:da:11:bc:ec:54:21:28:2d:23:a1:a8:f0:\n                    cf:2d:cd:dd:fc:7e:0f:5e:e1:65:07:56:cb:07:b4:\n                    d2:56:e8:5e:31:cc:18:63:c4:86:d2:2d:85:cf:93:\n                    92:ab:6d:fe:68:39:fb:de:73:bd:86:f8:e4:46:7a:\n                    ea:9f:0c:cb:f4:19:fe:63:bc:d1:2c:7b:88:33:36:\n                    f6:e4:e1:9c:0c:53:81:60:1c:da:2e:ab:96:a9:16:\n                    88:13:50:99:b2:bd:55:df:15:30:7e:e8:e5:98:fb:\n                    70:7e:6c:b5:07:fc:fc:46:b7:d0:ed:37:96:7e:32:\n                    fe:21\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: critical\n                CA:TRUE, pathlen:5\n            X509v3 Key Usage: critical\n                Certificate Sign, CRL Sign\n            X509v3 Certificate Policies: \n                Policy: 1.2.840.113763.1.2.1.3\n\n            X509v3 Subject Key Identifier: \n                76:0A:49:21:38:4C:9F:DE:F8:C4:49:C7:71:71:91:9D\n    Signature Algorithm: sha1WithRSAEncryption\n        41:3a:d4:18:5b:da:b8:de:21:1c:e1:8e:09:e5:f1:68:34:ff:\n        de:96:f4:07:f5:a7:3c:f3:ac:4a:b1:9b:fa:92:fa:9b:ed:e6:\n        32:21:aa:4a:76:c5:dc:4f:38:e5:df:d5:86:e4:d5:c8:76:7d:\n        98:d7:b1:cd:8f:4d:b5:91:23:6c:8b:8a:eb:ea:7c:ef:14:94:\n        c4:c6:f0:1f:4a:2d:32:71:63:2b:63:91:26:02:09:b6:80:1d:\n        ed:e2:cc:b8:7f:db:87:63:c8:e1:d0:6c:26:b1:35:1d:40:66:\n        10:1b:cd:95:54:18:33:61:ec:13:4f:da:13:f7:99:af:3e:d0:\n        cf:8e:a6:72:a2:b3:c3:05:9a:c9:27:7d:92:cc:7e:52:8d:b3:\n        ab:70:6d:9e:89:9f:4d:eb:1a:75:c2:98:aa:d5:02:16:d7:0c:\n        8a:bf:25:e4:eb:2d:bc:98:e9:58:38:19:7c:b9:37:fe:db:e2:\n        99:08:73:06:c7:97:83:6a:7d:10:01:2f:32:b9:17:05:4a:65:\n        e6:2f:ce:be:5e:53:a6:82:e9:9a:53:0a:84:74:2d:83:ca:c8:\n        94:16:76:5f:94:61:28:f0:85:a7:39:bb:d7:8b:d9:a8:b2:13:\n        1d:54:09:34:24:7d:20:81:7d:66:7e:a2:90:74:5c:10:c6:bd:\n        ec:ab:1b:c2\n\nGTE CyberTrust Root CA\n======================\nMD5 Fingerprint: C4:D7:F0:B2:A3:C5:7D:61:67:F0:04:CD:43:D3:BA:58\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD\nVQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv\nb3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV\nUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU\ncnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv\nRLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M\nypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5\n1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz\ndcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl\nIjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy\nbW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 419 (0x1a3)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root\n        Validity\n            Not Before: Feb 23 23:01:00 1996 GMT\n            Not After : Feb 23 23:59:00 2006 GMT\n        Subject: C=US, O=GTE Corporation, CN=GTE CyberTrust Root\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:b8:e6:4f:ba:db:98:7c:71:7c:af:44:b7:d3:0f:\n                    46:d9:64:e5:93:c1:42:8e:c7:ba:49:8d:35:2d:7a:\n                    e7:8b:bd:e5:05:31:59:c6:b1:2f:0a:0c:fb:9f:a7:\n                    3f:a2:09:66:84:56:1e:37:29:1b:87:e9:7e:0c:ca:\n                    9a:9f:a5:7f:f5:15:94:a3:d5:a2:46:82:d8:68:4c:\n                    d1:37:15:06:68:af:bd:f8:b0:b3:f0:29:f5:95:5a:\n                    09:16:61:77:0a:22:25:d4:4f:45:aa:c7:bd:e5:96:\n                    df:f9:d4:a8:8e:42:cc:24:c0:1e:91:27:4a:b5:6d:\n                    06:80:63:39:c4:a2:5e:38:03\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md5WithRSAEncryption\n        12:b3:75:c6:5f:1d:e1:61:55:80:00:d4:81:4b:7b:31:0f:23:\n        63:e7:3d:f3:03:f9:f4:36:a8:bb:d9:e3:a5:97:4d:ea:2b:29:\n        e0:d6:6a:73:81:e6:c0:89:a3:d3:f1:e0:a5:a5:22:37:9a:63:\n        c2:48:20:b4:db:72:e3:c8:f6:d9:7c:be:b1:af:53:da:14:b4:\n        21:b8:d6:d5:96:e3:fe:4e:0c:59:62:b6:9a:4a:f9:42:dd:8c:\n        6f:81:a9:71:ff:f4:0a:72:6d:6d:44:0e:9d:f3:74:74:a8:d5:\n        34:49:e9:5e:9e:e9:b4:7a:e1:e5:5a:1f:84:30:9c:d3:9f:a5:\n        25:d8\n\nGlobalSign Partners CA\n======================\nMD5 Fingerprint: 3C:75:CD:4C:BD:A9:D0:8A:79:4F:50:16:37:84:F4:2B\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDnjCCAoagAwIBAgILAgAAAAAA1ni50a8wDQYJKoZIhvcNAQEEBQAwVzELMAkG\nA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\nb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05OTAxMjgxMjAw\nMDBaFw0wOTAxMjgxMjAwMDBaMF8xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\nYWxTaWduIG52LXNhMRQwEgYDVQQLEwtQYXJ0bmVycyBDQTEfMB0GA1UEAxMWR2xv\nYmFsU2lnbiBQYXJ0bmVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBANIs+DKsShJ6N8gpkaWujG4eDsA0M4jlM3EWHHiEaMMYNFAuFj6xlIJPsZqf\nAPjGETXGaXuYAq0ABohs50wzKACIJ0Yfh7NxdWO8MruI3mYYDlAGk7T2vBQ3MD0i\n3z3/dX7ZChrFn7P80KyzCHqJ0wHoAFznSgs9TXsmordiBovaRt2TFz8/WwJLC7aI\nIBGSAK27xy7U40Wu9YlafI2krYVkMsAnjMbyioCShiRWWY10aKKDQrOePVBBhm8g\nbvb9ztMZ4zLMj+2aXm0fKPVSrG4YXvg90ZLlumwBiEsK8i3eZTMFQqBMqjF2vv2/\ngXj5cRxGXi0VlS0wWY5MQdFiqz0CAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgAGMB0G\nA1UdDgQWBBRDJI1wFQhiVZxPDEAXXYZeD6JM+zAfBgNVHSMEGDAWgBRge2YaRQ2X\nyolQL30EzTSo//z9SzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IB\nAQBm7bSIaRGZgiGDrKFti5uErQ8tyB6Mynt+rarUjt4H1p5Fx6W4nAc5YCVVGsBP\nGeXPFylJiRg1ZuXrKEBOV8mvs+S4IAWjO5VQkUmUKX0s5YhBpUWIXp2CJ/fS71u1\nT5++/jVlLFVkn+FR2iJhd7pYTo/GeVlZbjCAok+QbiELrdBoOZAQm+0iZW8eETjm\nf4zS8zltR9Uh6Op1OkHRrfYWnV0LIb3zH2MGJR3BHzVxLOsgGdXBsOw95W/tAgc/\nE3tmktZEwZj3X1CLelvCb22w0fjldKBAN6MlD+Q9ymQxk5BcMHu5OTGaXkzNuUFP\nUOQ9OK7IZtnHO11RR6ybq/Kt\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number:\n            02:00:00:00:00:00:d6:78:b9:d1:af\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA\n        Validity\n            Not Before: Jan 28 12:00:00 1999 GMT\n            Not After : Jan 28 12:00:00 2009 GMT\n        Subject: C=BE, O=GlobalSign nv-sa, OU=Partners CA, CN=GlobalSign Partners CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:d2:2c:f8:32:ac:4a:12:7a:37:c8:29:91:a5:ae:\n                    8c:6e:1e:0e:c0:34:33:88:e5:33:71:16:1c:78:84:\n                    68:c3:18:34:50:2e:16:3e:b1:94:82:4f:b1:9a:9f:\n                    00:f8:c6:11:35:c6:69:7b:98:02:ad:00:06:88:6c:\n                    e7:4c:33:28:00:88:27:46:1f:87:b3:71:75:63:bc:\n                    32:bb:88:de:66:18:0e:50:06:93:b4:f6:bc:14:37:\n                    30:3d:22:df:3d:ff:75:7e:d9:0a:1a:c5:9f:b3:fc:\n                    d0:ac:b3:08:7a:89:d3:01:e8:00:5c:e7:4a:0b:3d:\n                    4d:7b:26:a2:b7:62:06:8b:da:46:dd:93:17:3f:3f:\n                    5b:02:4b:0b:b6:88:20:11:92:00:ad:bb:c7:2e:d4:\n                    e3:45:ae:f5:89:5a:7c:8d:a4:ad:85:64:32:c0:27:\n                    8c:c6:f2:8a:80:92:86:24:56:59:8d:74:68:a2:83:\n                    42:b3:9e:3d:50:41:86:6f:20:6e:f6:fd:ce:d3:19:\n                    e3:32:cc:8f:ed:9a:5e:6d:1f:28:f5:52:ac:6e:18:\n                    5e:f8:3d:d1:92:e5:ba:6c:01:88:4b:0a:f2:2d:de:\n                    65:33:05:42:a0:4c:aa:31:76:be:fd:bf:81:78:f9:\n                    71:1c:46:5e:2d:15:95:2d:30:59:8e:4c:41:d1:62:\n                    ab:3d\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Key Usage: critical\n                Certificate Sign, CRL Sign\n            X509v3 Subject Key Identifier: \n                43:24:8D:70:15:08:62:55:9C:4F:0C:40:17:5D:86:5E:0F:A2:4C:FB\n            X509v3 Authority Key Identifier: \n                keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B\n\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        66:ed:b4:88:69:11:99:82:21:83:ac:a1:6d:8b:9b:84:ad:0f:\n        2d:c8:1e:8c:ca:7b:7e:ad:aa:d4:8e:de:07:d6:9e:45:c7:a5:\n        b8:9c:07:39:60:25:55:1a:c0:4f:19:e5:cf:17:29:49:89:18:\n        35:66:e5:eb:28:40:4e:57:c9:af:b3:e4:b8:20:05:a3:3b:95:\n        50:91:49:94:29:7d:2c:e5:88:41:a5:45:88:5e:9d:82:27:f7:\n        d2:ef:5b:b5:4f:9f:be:fe:35:65:2c:55:64:9f:e1:51:da:22:\n        61:77:ba:58:4e:8f:c6:79:59:59:6e:30:80:a2:4f:90:6e:21:\n        0b:ad:d0:68:39:90:10:9b:ed:22:65:6f:1e:11:38:e6:7f:8c:\n        d2:f3:39:6d:47:d5:21:e8:ea:75:3a:41:d1:ad:f6:16:9d:5d:\n        0b:21:bd:f3:1f:63:06:25:1d:c1:1f:35:71:2c:eb:20:19:d5:\n        c1:b0:ec:3d:e5:6f:ed:02:07:3f:13:7b:66:92:d6:44:c1:98:\n        f7:5f:50:8b:7a:5b:c2:6f:6d:b0:d1:f8:e5:74:a0:40:37:a3:\n        25:0f:e4:3d:ca:64:31:93:90:5c:30:7b:b9:39:31:9a:5e:4c:\n        cd:b9:41:4f:50:e4:3d:38:ae:c8:66:d9:c7:3b:5d:51:47:ac:\n        9b:ab:f2:ad\n\nGlobalSign Primary Class 1 CA\n=============================\nMD5 Fingerprint: 5C:AC:59:01:A4:86:53:CB:10:66:B5:D6:D6:71:FF:01\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDrDCCApSgAwIBAgILAgAAAAAA1ni4N88wDQYJKoZIhvcNAQEEBQAwVzELMAkG\nA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\nb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MTUxMjAw\nMDBaFw0wOTAxMjgxMjAwMDBaMG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\nYWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDEgQ0ExJjAkBgNV\nBAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAxIENBMIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEAvSA1R9Eo1gijEjkjRw29cCFSDlcxlaY0V2vsfkN5\nwwZSSM28taGZvdgfMrzP125ybS53IpCCTkuPmgwBQprZcFm2nR/mY9EMrR1O+IWB\n+a7vn6ZSYUR5GnVF4GFWRW1CjD1yy6akErea9dZg0GBQs46mpuy09BLNf6jO77Ph\nhTD+csTm53eznlhB1lGDiAfGtmlPNt7RC0g/vdafIXRkbycGPkv9Dqabv6RIV4yQ\n7okYCwKBGL5n/lNgiCe6o3M0S1pWtN5zBe2Yll3sSudA/EsJYuvQ4zFPhdF6q1ln\nK/uID+uqg701/WEn7GYOQlf3acIM7/xqwm5J2o9BOK5IqQIDAQABo2MwYTAOBgNV\nHQ8BAf8EBAMCAAYwHQYDVR0OBBYEFPzgZvZaNZnrQB7SuB5DvJiOH4rDMB8GA1Ud\nIwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA8GA1UdEwEB/wQFMAMBAf8wDQYJ\nKoZIhvcNAQEEBQADggEBAJujCETO8pCdcfMyswVqterPKZjeVT6gFn0GekTWr9L6\nE1iM+BzHqx20G+9paJhcCDmP4Pf7SMwh57gz2wWqNCRsSuXpe2Deg7MfCr5BdfzM\nMEi3wSYdBDOqtnjtKsu6VpcybvcxlS5G8hTuJ8f3Yom5XFrTOIpk9Te08bM0ctXV\nIT1L13iT1zFmNR6j2EdJbxyt4YB/+JgkbHOsDsIadwKjJge3x2tdvILVKkgdY89Q\nMqb7HBhHFQpbDFw4JJoEmKgISF98NIdjqy2NTAB3lBt2uvUWGKMVry+U9ikAdsEV\nF9PpN0121MtLKVkkrNpKoOpj3l9Usfrz0UXLxWS0cyE=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number:\n            02:00:00:00:00:00:d6:78:b8:37:cf\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA\n        Validity\n            Not Before: Sep 15 12:00:00 1998 GMT\n            Not After : Jan 28 12:00:00 2009 GMT\n        Subject: C=BE, O=GlobalSign nv-sa, OU=Primary Class 1 CA, CN=GlobalSign Primary Class 1 CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:bd:20:35:47:d1:28:d6:08:a3:12:39:23:47:0d:\n                    bd:70:21:52:0e:57:31:95:a6:34:57:6b:ec:7e:43:\n                    79:c3:06:52:48:cd:bc:b5:a1:99:bd:d8:1f:32:bc:\n                    cf:d7:6e:72:6d:2e:77:22:90:82:4e:4b:8f:9a:0c:\n                    01:42:9a:d9:70:59:b6:9d:1f:e6:63:d1:0c:ad:1d:\n                    4e:f8:85:81:f9:ae:ef:9f:a6:52:61:44:79:1a:75:\n                    45:e0:61:56:45:6d:42:8c:3d:72:cb:a6:a4:12:b7:\n                    9a:f5:d6:60:d0:60:50:b3:8e:a6:a6:ec:b4:f4:12:\n                    cd:7f:a8:ce:ef:b3:e1:85:30:fe:72:c4:e6:e7:77:\n                    b3:9e:58:41:d6:51:83:88:07:c6:b6:69:4f:36:de:\n                    d1:0b:48:3f:bd:d6:9f:21:74:64:6f:27:06:3e:4b:\n                    fd:0e:a6:9b:bf:a4:48:57:8c:90:ee:89:18:0b:02:\n                    81:18:be:67:fe:53:60:88:27:ba:a3:73:34:4b:5a:\n                    56:b4:de:73:05:ed:98:96:5d:ec:4a:e7:40:fc:4b:\n                    09:62:eb:d0:e3:31:4f:85:d1:7a:ab:59:67:2b:fb:\n                    88:0f:eb:aa:83:bd:35:fd:61:27:ec:66:0e:42:57:\n                    f7:69:c2:0c:ef:fc:6a:c2:6e:49:da:8f:41:38:ae:\n                    48:a9\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Key Usage: critical\n                Certificate Sign, CRL Sign\n            X509v3 Subject Key Identifier: \n                FC:E0:66:F6:5A:35:99:EB:40:1E:D2:B8:1E:43:BC:98:8E:1F:8A:C3\n            X509v3 Authority Key Identifier: \n                keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B\n\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        9b:a3:08:44:ce:f2:90:9d:71:f3:32:b3:05:6a:b5:ea:cf:29:\n        98:de:55:3e:a0:16:7d:06:7a:44:d6:af:d2:fa:13:58:8c:f8:\n        1c:c7:ab:1d:b4:1b:ef:69:68:98:5c:08:39:8f:e0:f7:fb:48:\n        cc:21:e7:b8:33:db:05:aa:34:24:6c:4a:e5:e9:7b:60:de:83:\n        b3:1f:0a:be:41:75:fc:cc:30:48:b7:c1:26:1d:04:33:aa:b6:\n        78:ed:2a:cb:ba:56:97:32:6e:f7:31:95:2e:46:f2:14:ee:27:\n        c7:f7:62:89:b9:5c:5a:d3:38:8a:64:f5:37:b4:f1:b3:34:72:\n        d5:d5:21:3d:4b:d7:78:93:d7:31:66:35:1e:a3:d8:47:49:6f:\n        1c:ad:e1:80:7f:f8:98:24:6c:73:ac:0e:c2:1a:77:02:a3:26:\n        07:b7:c7:6b:5d:bc:82:d5:2a:48:1d:63:cf:50:32:a6:fb:1c:\n        18:47:15:0a:5b:0c:5c:38:24:9a:04:98:a8:08:48:5f:7c:34:\n        87:63:ab:2d:8d:4c:00:77:94:1b:76:ba:f5:16:18:a3:15:af:\n        2f:94:f6:29:00:76:c1:15:17:d3:e9:37:4d:76:d4:cb:4b:29:\n        59:24:ac:da:4a:a0:ea:63:de:5f:54:b1:fa:f3:d1:45:cb:c5:\n        64:b4:73:21\n\nGlobalSign Primary Class 2 CA\n=============================\nMD5 Fingerprint: A9:A9:42:59:7E:BE:5A:94:E4:2C:C6:8B:1C:2A:44:B6\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDrDCCApSgAwIBAgILAgAAAAAA1ni4jY0wDQYJKoZIhvcNAQEEBQAwVzELMAkG\nA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\nb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05OTAxMjgxMjAw\nMDBaFw0wOTAxMjgxMjAwMDBaMG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\nYWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDIgQ0ExJjAkBgNV\nBAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAyIENBMIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEAkoz+7/RFjhdBbvzYvyFvqwadUsEsAJ0/joW4f0qP\nvaBjKspJJ65agvR04lWS/8LRqnmitvrVnYIET8ayxl5jpzq62O7rim+ftrsoQcAi\n+05IGgaS17/Xz7nZvThPOw1EblVB/vwJ29i/844h8egStfYTpdPGTJMisAL/7h0M\nxKhrT3VoVujcKBJQ96gknS4kOfsJBd7lo2RJIdBofnEwkbFg4Dn0UPh6TZgAa3x5\nuk7OSuK6Nh23xTYVlZxkQupfxLr1QAW+4TpZvYSnGbjeTVNQzgfR0lHT7w2BbObn\nbctdfD98zOxPgycl/3BQ9oNZdYQGZlgs3omNAKZJ+aVDdwIDAQABo2MwYTAOBgNV\nHQ8BAf8EBAMCAAYwHQYDVR0OBBYEFHznsrEs3rGna+l2DOGj/U5sx7n2MB8GA1Ud\nIwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA8GA1UdEwEB/wQFMAMBAf8wDQYJ\nKoZIhvcNAQEEBQADggEBAGPdWc6KeaqYnU7FiWQ3foqTZy8Q6m8nw413bfJcVpQZ\nGmlgMEZdj/JtRTyONZd8L7hR4uiJvYjPJxwINFyIwWgk25GF5M/7+0ON6CUBG8QO\n9wBCSIYfJAhYWoyN8mtHLGiRsWlC/Q2NySbmkoamZG6Sxc4+PH1x4yOkq8fVqKnf\ngqc76IbVw08Y40TQ4NzzxWgu/qUvBYTIfkdCU2uHSv4y/14+cIy3qBXMF8L/RuzQ\n7C20bhIoqflA6evUZpdTqWlVwKmqsi7N0Wn0vvi7fGnuVKbbnvtapj7+mu+UUUt1\n7tjU4ZrxAlYTiQ6nQouWi4UMG4W+Jq6rppm8IvFz30I=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number:\n            02:00:00:00:00:00:d6:78:b8:8d:8d\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA\n        Validity\n            Not Before: Jan 28 12:00:00 1999 GMT\n            Not After : Jan 28 12:00:00 2009 GMT\n        Subject: C=BE, O=GlobalSign nv-sa, OU=Primary Class 2 CA, CN=GlobalSign Primary Class 2 CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:92:8c:fe:ef:f4:45:8e:17:41:6e:fc:d8:bf:21:\n                    6f:ab:06:9d:52:c1:2c:00:9d:3f:8e:85:b8:7f:4a:\n                    8f:bd:a0:63:2a:ca:49:27:ae:5a:82:f4:74:e2:55:\n                    92:ff:c2:d1:aa:79:a2:b6:fa:d5:9d:82:04:4f:c6:\n                    b2:c6:5e:63:a7:3a:ba:d8:ee:eb:8a:6f:9f:b6:bb:\n                    28:41:c0:22:fb:4e:48:1a:06:92:d7:bf:d7:cf:b9:\n                    d9:bd:38:4f:3b:0d:44:6e:55:41:fe:fc:09:db:d8:\n                    bf:f3:8e:21:f1:e8:12:b5:f6:13:a5:d3:c6:4c:93:\n                    22:b0:02:ff:ee:1d:0c:c4:a8:6b:4f:75:68:56:e8:\n                    dc:28:12:50:f7:a8:24:9d:2e:24:39:fb:09:05:de:\n                    e5:a3:64:49:21:d0:68:7e:71:30:91:b1:60:e0:39:\n                    f4:50:f8:7a:4d:98:00:6b:7c:79:ba:4e:ce:4a:e2:\n                    ba:36:1d:b7:c5:36:15:95:9c:64:42:ea:5f:c4:ba:\n                    f5:40:05:be:e1:3a:59:bd:84:a7:19:b8:de:4d:53:\n                    50:ce:07:d1:d2:51:d3:ef:0d:81:6c:e6:e7:6d:cb:\n                    5d:7c:3f:7c:cc:ec:4f:83:27:25:ff:70:50:f6:83:\n                    59:75:84:06:66:58:2c:de:89:8d:00:a6:49:f9:a5:\n                    43:77\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Key Usage: critical\n                Certificate Sign, CRL Sign\n            X509v3 Subject Key Identifier: \n                7C:E7:B2:B1:2C:DE:B1:A7:6B:E9:76:0C:E1:A3:FD:4E:6C:C7:B9:F6\n            X509v3 Authority Key Identifier: \n                keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B\n\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        63:dd:59:ce:8a:79:aa:98:9d:4e:c5:89:64:37:7e:8a:93:67:\n        2f:10:ea:6f:27:c3:8d:77:6d:f2:5c:56:94:19:1a:69:60:30:\n        46:5d:8f:f2:6d:45:3c:8e:35:97:7c:2f:b8:51:e2:e8:89:bd:\n        88:cf:27:1c:08:34:5c:88:c1:68:24:db:91:85:e4:cf:fb:fb:\n        43:8d:e8:25:01:1b:c4:0e:f7:00:42:48:86:1f:24:08:58:5a:\n        8c:8d:f2:6b:47:2c:68:91:b1:69:42:fd:0d:8d:c9:26:e6:92:\n        86:a6:64:6e:92:c5:ce:3e:3c:7d:71:e3:23:a4:ab:c7:d5:a8:\n        a9:df:82:a7:3b:e8:86:d5:c3:4f:18:e3:44:d0:e0:dc:f3:c5:\n        68:2e:fe:a5:2f:05:84:c8:7e:47:42:53:6b:87:4a:fe:32:ff:\n        5e:3e:70:8c:b7:a8:15:cc:17:c2:ff:46:ec:d0:ec:2d:b4:6e:\n        12:28:a9:f9:40:e9:eb:d4:66:97:53:a9:69:55:c0:a9:aa:b2:\n        2e:cd:d1:69:f4:be:f8:bb:7c:69:ee:54:a6:db:9e:fb:5a:a6:\n        3e:fe:9a:ef:94:51:4b:75:ee:d8:d4:e1:9a:f1:02:56:13:89:\n        0e:a7:42:8b:96:8b:85:0c:1b:85:be:26:ae:ab:a6:99:bc:22:\n        f1:73:df:42\n\nGlobalSign Primary Class 3 CA\n=============================\nMD5 Fingerprint: 98:12:A3:4B:95:A9:96:64:94:E7:50:8C:3E:E1:83:5A\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDrDCCApSgAwIBAgILAgAAAAAA1ni41sMwDQYJKoZIhvcNAQEEBQAwVzELMAkG\nA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\nb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05OTAxMjgxMjAw\nMDBaFw0wOTAxMjgxMjAwMDBaMG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\nYWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDMgQ0ExJjAkBgNV\nBAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAzIENBMIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEAkV5WZdbAwAScv0fEXHt6MQH5WJaZ4xyEL9xWj631\nWYHVQ2ZdWpOMdcqp5xHBURAUYMks1HuvxneGq3onrm+VuQvKtkb7fhr0DRRt0slO\nsq7wVPZcQEw2SHToVIxlZhCnvSu3II0FSa14fdIkI1Dj8LR5mwE5/6870y3u4UmN\njS88akFFL5vjPeES5JF1ns+gPjySgW+KLhjc4PKMjP2H2Qf0QJTJTk9D32dWb70D\nUHyZZ6S5PJFsAm6E1vxG98xvGD4X8O8LZBZX5qyG8UiqQ8HJJ3hzREXihX26/7Ph\n+xsFpEs7mRIlAVAUaq9d6sgM7uTa7EuLXGgTldzDtTA61wIDAQABo2MwYTAOBgNV\nHQ8BAf8EBAMCAAYwHQYDVR0OBBYEFMw2zBe0RZEv7c87MEh3+7UUmb7jMB8GA1Ud\nIwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA8GA1UdEwEB/wQFMAMBAf8wDQYJ\nKoZIhvcNAQEEBQADggEBAFeyVMy9lRdkYIm2U5EMRZLDPahsw8yyGPV4QXTYfaMn\nr3cNWT6UHWn6idMMvRoB9D/o4Hcagiha5mLXt+M2yQ6feuPC08xZiQzvFovwNnci\nyqS2t8FCZwFAY8znOGSHWxSWZnstFO69SW3/d9DiTlvTgMJND8q4nYGXpzRux+Oc\nSOW0qkX19mVMSPISwtKTjMIVJPMrUv/jCK64btYsEs85yxIq56l7X5g9o+HMpmOJ\nXH0xdfnV1l3y0NQ9355xqA7c5CCXeOZ/U6QNUU+OOwOuow1aTcN55zVYcELJXqFe\ntNkio0RTNaTQz3OAxc+fVph2+RRMd4eCydx+XTTVNnU=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number:\n            02:00:00:00:00:00:d6:78:b8:d6:c3\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA\n        Validity\n            Not Before: Jan 28 12:00:00 1999 GMT\n            Not After : Jan 28 12:00:00 2009 GMT\n        Subject: C=BE, O=GlobalSign nv-sa, OU=Primary Class 3 CA, CN=GlobalSign Primary Class 3 CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:91:5e:56:65:d6:c0:c0:04:9c:bf:47:c4:5c:7b:\n                    7a:31:01:f9:58:96:99:e3:1c:84:2f:dc:56:8f:ad:\n                    f5:59:81:d5:43:66:5d:5a:93:8c:75:ca:a9:e7:11:\n                    c1:51:10:14:60:c9:2c:d4:7b:af:c6:77:86:ab:7a:\n                    27:ae:6f:95:b9:0b:ca:b6:46:fb:7e:1a:f4:0d:14:\n                    6d:d2:c9:4e:b2:ae:f0:54:f6:5c:40:4c:36:48:74:\n                    e8:54:8c:65:66:10:a7:bd:2b:b7:20:8d:05:49:ad:\n                    78:7d:d2:24:23:50:e3:f0:b4:79:9b:01:39:ff:af:\n                    3b:d3:2d:ee:e1:49:8d:8d:2f:3c:6a:41:45:2f:9b:\n                    e3:3d:e1:12:e4:91:75:9e:cf:a0:3e:3c:92:81:6f:\n                    8a:2e:18:dc:e0:f2:8c:8c:fd:87:d9:07:f4:40:94:\n                    c9:4e:4f:43:df:67:56:6f:bd:03:50:7c:99:67:a4:\n                    b9:3c:91:6c:02:6e:84:d6:fc:46:f7:cc:6f:18:3e:\n                    17:f0:ef:0b:64:16:57:e6:ac:86:f1:48:aa:43:c1:\n                    c9:27:78:73:44:45:e2:85:7d:ba:ff:b3:e1:fb:1b:\n                    05:a4:4b:3b:99:12:25:01:50:14:6a:af:5d:ea:c8:\n                    0c:ee:e4:da:ec:4b:8b:5c:68:13:95:dc:c3:b5:30:\n                    3a:d7\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Key Usage: critical\n                Certificate Sign, CRL Sign\n            X509v3 Subject Key Identifier: \n                CC:36:CC:17:B4:45:91:2F:ED:CF:3B:30:48:77:FB:B5:14:99:BE:E3\n            X509v3 Authority Key Identifier: \n                keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B\n\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        57:b2:54:cc:bd:95:17:64:60:89:b6:53:91:0c:45:92:c3:3d:\n        a8:6c:c3:cc:b2:18:f5:78:41:74:d8:7d:a3:27:af:77:0d:59:\n        3e:94:1d:69:fa:89:d3:0c:bd:1a:01:f4:3f:e8:e0:77:1a:82:\n        28:5a:e6:62:d7:b7:e3:36:c9:0e:9f:7a:e3:c2:d3:cc:59:89:\n        0c:ef:16:8b:f0:36:77:22:ca:a4:b6:b7:c1:42:67:01:40:63:\n        cc:e7:38:64:87:5b:14:96:66:7b:2d:14:ee:bd:49:6d:ff:77:\n        d0:e2:4e:5b:d3:80:c2:4d:0f:ca:b8:9d:81:97:a7:34:6e:c7:\n        e3:9c:48:e5:b4:aa:45:f5:f6:65:4c:48:f2:12:c2:d2:93:8c:\n        c2:15:24:f3:2b:52:ff:e3:08:ae:b8:6e:d6:2c:12:cf:39:cb:\n        12:2a:e7:a9:7b:5f:98:3d:a3:e1:cc:a6:63:89:5c:7d:31:75:\n        f9:d5:d6:5d:f2:d0:d4:3d:df:9e:71:a8:0e:dc:e4:20:97:78:\n        e6:7f:53:a4:0d:51:4f:8e:3b:03:ae:a3:0d:5a:4d:c3:79:e7:\n        35:58:70:42:c9:5e:a1:5e:b4:d9:22:a3:44:53:35:a4:d0:cf:\n        73:80:c5:cf:9f:56:98:76:f9:14:4c:77:87:82:c9:dc:7e:5d:\n        34:d5:36:75\n\nGlobalSign Root CA\n==================\nMD5 Fingerprint: AB:BF:EA:E3:6B:29:A6:CC:A6:78:35:99:EF:AD:2B:80\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDdTCCAl2gAwIBAgILAgAAAAAA1ni3lAUwDQYJKoZIhvcNAQEEBQAwVzELMAkG\nA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\nb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw\nMDBaFw0xNDAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\nYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT\naWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ\njc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp\nxy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp\n1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG\nsnUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ\nU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8\n9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIABjAdBgNVHQ4EFgQU\nYHtmGkUNl8qJUC99BM00qP/8/UswDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B\nAQQFAAOCAQEArqqf/LfSyx9fOSkoGJ40yWxPbxrwZKJwSk8ThptgKJ7ogUmYfQq7\n5bCdPTbbjwVR/wkxKh/diXeeDy5slQTthsu0AD+EAk2AaioteAuubyuig0SDH81Q\ngkwkr733pbTIWg/050deSY43lv6aiAU62cDbKYfmGZZHpzqmjIs8d/5GY6dT2iHR\nrH5Jokvmw2dZL7OKDrssvamqQnw1wdh/1acxOk5jQzmvCLBhNIzTmKlDNPYPhyk7\nncJWWJh3w/cbrPad+D6qp1RF8PX51TFl/mtYnHGzHtdS6jIX/EBgHcl5JLL2bP2o\nZg6C3ZjL2sJETy6ge/L3ayx2EYRGinij4w==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number:\n            02:00:00:00:00:00:d6:78:b7:94:05\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA\n        Validity\n            Not Before: Sep  1 12:00:00 1998 GMT\n            Not After : Jan 28 12:00:00 2014 GMT\n        Subject: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:da:0e:e6:99:8d:ce:a3:e3:4f:8a:7e:fb:f1:8b:\n                    83:25:6b:ea:48:1f:f1:2a:b0:b9:95:11:04:bd:f0:\n                    63:d1:e2:67:66:cf:1c:dd:cf:1b:48:2b:ee:8d:89:\n                    8e:9a:af:29:80:65:ab:e9:c7:2d:12:cb:ab:1c:4c:\n                    70:07:a1:3d:0a:30:cd:15:8d:4f:f8:dd:d4:8c:50:\n                    15:1c:ef:50:ee:c4:2e:f7:fc:e9:52:f2:91:7d:e0:\n                    6d:d5:35:30:8e:5e:43:73:f2:41:e9:d5:6a:e3:b2:\n                    89:3a:56:39:38:6f:06:3c:88:69:5b:2a:4d:c5:a7:\n                    54:b8:6c:89:cc:9b:f9:3c:ca:e5:fd:89:f5:12:3c:\n                    92:78:96:d6:dc:74:6e:93:44:61:d1:8d:c7:46:b2:\n                    75:0e:86:e8:19:8a:d5:6d:6c:d5:78:16:95:a2:e9:\n                    c8:0a:38:eb:f2:24:13:4f:73:54:93:13:85:3a:1b:\n                    bc:1e:34:b5:8b:05:8c:b9:77:8b:b1:db:1f:20:91:\n                    ab:09:53:6e:90:ce:7b:37:74:b9:70:47:91:22:51:\n                    63:16:79:ae:b1:ae:41:26:08:c8:19:2b:d1:46:aa:\n                    48:d6:64:2a:d7:83:34:ff:2c:2a:c1:6c:19:43:4a:\n                    07:85:e7:d3:7c:f6:21:68:ef:ea:f2:52:9f:7f:93:\n                    90:cf\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Key Usage: critical\n                Certificate Sign, CRL Sign\n            X509v3 Subject Key Identifier: \n                60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        ae:aa:9f:fc:b7:d2:cb:1f:5f:39:29:28:18:9e:34:c9:6c:4f:\n        6f:1a:f0:64:a2:70:4a:4f:13:86:9b:60:28:9e:e8:81:49:98:\n        7d:0a:bb:e5:b0:9d:3d:36:db:8f:05:51:ff:09:31:2a:1f:dd:\n        89:77:9e:0f:2e:6c:95:04:ed:86:cb:b4:00:3f:84:02:4d:80:\n        6a:2a:2d:78:0b:ae:6f:2b:a2:83:44:83:1f:cd:50:82:4c:24:\n        af:bd:f7:a5:b4:c8:5a:0f:f4:e7:47:5e:49:8e:37:96:fe:9a:\n        88:05:3a:d9:c0:db:29:87:e6:19:96:47:a7:3a:a6:8c:8b:3c:\n        77:fe:46:63:a7:53:da:21:d1:ac:7e:49:a2:4b:e6:c3:67:59:\n        2f:b3:8a:0e:bb:2c:bd:a9:aa:42:7c:35:c1:d8:7f:d5:a7:31:\n        3a:4e:63:43:39:af:08:b0:61:34:8c:d3:98:a9:43:34:f6:0f:\n        87:29:3b:9d:c2:56:58:98:77:c3:f7:1b:ac:f6:9d:f8:3e:aa:\n        a7:54:45:f0:f5:f9:d5:31:65:fe:6b:58:9c:71:b3:1e:d7:52:\n        ea:32:17:fc:40:60:1d:c9:79:24:b2:f6:6c:fd:a8:66:0e:82:\n        dd:98:cb:da:c2:44:4f:2e:a0:7b:f2:f7:6b:2c:76:11:84:46:\n        8a:78:a3:e3\n\nNational Retail Federation by DST\n=================================\nMD5 Fingerprint: AD:8E:0F:9E:01:6B:A0:C5:74:D5:0C:D3:68:65:4F:1E\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIEAjCCAuoCEQDQHkCKAAACfAAAAAMAAAABMA0GCSqGSIb3DQEBBQUAMIG+MQsw\nCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp\ndHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEjMCEGA1UE\nCxMaTmF0aW9uYWwgUmV0YWlsIEZlZGVyYXRpb24xGTAXBgNVBAMTEERTVCAoTlJG\nKSBSb290Q0ExITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05\nODEyMTExNjE0MTZaFw0wODEyMDgxNjE0MTZaMIG+MQswCQYDVQQGEwJ1czENMAsG\nA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0Rp\nZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEjMCEGA1UECxMaTmF0aW9uYWwgUmV0\nYWlsIEZlZGVyYXRpb24xGTAXBgNVBAMTEERTVCAoTlJGKSBSb290Q0ExITAfBgkq\nhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBANmsm3f6UNPM3LlArLlyagCHI/wPliHQJq/k4rVf+tOmfSEw\nLswXgo+YdPxnpKbfiJeiQin1p9sRk/teIzDCqrwi50Eb5e0l3sg/295XRXhARoOy\n1Ro93w9FbdVjAnXYL8Zuq5WRdDcNy00JXNHUWzra3Q7Ia5nY1TnM34VVxJJTAqPh\n94DJcKPa3DPEf6JHCBw1lh+hAxwwg/TEzP+Yw7BGRKLAv63b0oH2TJgsp14k84bK\nY9W6ffCawErQG1ju7Klnz2kCbCLAYCws0cgg6sgt+92cu8tRTNznVwQ7VJsRpTJ0\n7HQB85AVWy98LJNluWZntIGINeWekRh/gahByMsCAwEAATANBgkqhkiG9w0BAQUF\nAAOCAQEAhF4LO+ygjRyb0DwdcWnkGn9kvoFlYcWMatd8AHTgemJV7SR84GHj8t0U\n5hFugw7h6qmegK2aIL/gV37V0LWEYy3ZGOS9GzUsXq5hdqpnhTs44TGBHzF/5tf4\nW9K7Y3mGxIzF3gqu19H8AXT/trYNYoFnHLsm+CSA4Fxe2KSKOo99y/+So/18qTJp\nB1hYYUKZUgOxOD3GcW9s8uh9BqrBfFPLGi2IT8mpp6xpb/ekH9h0gfVKv7FVt9N3\nOKdvwkrI4nOJ01dy4UMvcjz2H7f4BEpuwemUF+SXF/QOE4ZvjavoXy20/2zWorQf\n7LmUaqoSTxrd9Xe1JYzyigrx/FJbWA==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            d0:1e:40:8a:00:00:02:7c:00:00:00:03:00:00:00:01\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=National Retail Federation, CN=DST (NRF) RootCA/Email=ca@digsigtrust.com\n        Validity\n            Not Before: Dec 11 16:14:16 1998 GMT\n            Not After : Dec  8 16:14:16 2008 GMT\n        Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=National Retail Federation, CN=DST (NRF) RootCA/Email=ca@digsigtrust.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:d9:ac:9b:77:fa:50:d3:cc:dc:b9:40:ac:b9:72:\n                    6a:00:87:23:fc:0f:96:21:d0:26:af:e4:e2:b5:5f:\n                    fa:d3:a6:7d:21:30:2e:cc:17:82:8f:98:74:fc:67:\n                    a4:a6:df:88:97:a2:42:29:f5:a7:db:11:93:fb:5e:\n                    23:30:c2:aa:bc:22:e7:41:1b:e5:ed:25:de:c8:3f:\n                    db:de:57:45:78:40:46:83:b2:d5:1a:3d:df:0f:45:\n                    6d:d5:63:02:75:d8:2f:c6:6e:ab:95:91:74:37:0d:\n                    cb:4d:09:5c:d1:d4:5b:3a:da:dd:0e:c8:6b:99:d8:\n                    d5:39:cc:df:85:55:c4:92:53:02:a3:e1:f7:80:c9:\n                    70:a3:da:dc:33:c4:7f:a2:47:08:1c:35:96:1f:a1:\n                    03:1c:30:83:f4:c4:cc:ff:98:c3:b0:46:44:a2:c0:\n                    bf:ad:db:d2:81:f6:4c:98:2c:a7:5e:24:f3:86:ca:\n                    63:d5:ba:7d:f0:9a:c0:4a:d0:1b:58:ee:ec:a9:67:\n                    cf:69:02:6c:22:c0:60:2c:2c:d1:c8:20:ea:c8:2d:\n                    fb:dd:9c:bb:cb:51:4c:dc:e7:57:04:3b:54:9b:11:\n                    a5:32:74:ec:74:01:f3:90:15:5b:2f:7c:2c:93:65:\n                    b9:66:67:b4:81:88:35:e5:9e:91:18:7f:81:a8:41:\n                    c8:cb\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        84:5e:0b:3b:ec:a0:8d:1c:9b:d0:3c:1d:71:69:e4:1a:7f:64:\n        be:81:65:61:c5:8c:6a:d7:7c:00:74:e0:7a:62:55:ed:24:7c:\n        e0:61:e3:f2:dd:14:e6:11:6e:83:0e:e1:ea:a9:9e:80:ad:9a:\n        20:bf:e0:57:7e:d5:d0:b5:84:63:2d:d9:18:e4:bd:1b:35:2c:\n        5e:ae:61:76:aa:67:85:3b:38:e1:31:81:1f:31:7f:e6:d7:f8:\n        5b:d2:bb:63:79:86:c4:8c:c5:de:0a:ae:d7:d1:fc:01:74:ff:\n        b6:b6:0d:62:81:67:1c:bb:26:f8:24:80:e0:5c:5e:d8:a4:8a:\n        3a:8f:7d:cb:ff:92:a3:fd:7c:a9:32:69:07:58:58:61:42:99:\n        52:03:b1:38:3d:c6:71:6f:6c:f2:e8:7d:06:aa:c1:7c:53:cb:\n        1a:2d:88:4f:c9:a9:a7:ac:69:6f:f7:a4:1f:d8:74:81:f5:4a:\n        bf:b1:55:b7:d3:77:38:a7:6f:c2:4a:c8:e2:73:89:d3:57:72:\n        e1:43:2f:72:3c:f6:1f:b7:f8:04:4a:6e:c1:e9:94:17:e4:97:\n        17:f4:0e:13:86:6f:8d:ab:e8:5f:2d:b4:ff:6c:d6:a2:b4:1f:\n        ec:b9:94:6a:aa:12:4f:1a:dd:f5:77:b5:25:8c:f2:8a:0a:f1:\n        fc:52:5b:58\n\nTC TrustCenter, Germany, Class 0 CA\n===================================\nMD5 Fingerprint: 35:85:49:8E:6E:57:FE:BD:97:F1:C9:46:23:3A:B6:7D\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIENTCCA56gAwIBAgIBATANBgkqhkiG9w0BAQQFADCBvDELMAkGA1UEBhMCREUx\nEDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxOjA4BgNVBAoTMVRD\nIFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRhIE5ldHdvcmtzIEdtYkgx\nIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDAgQ0ExKTAnBgkqhkiG9w0B\nCQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlMB4XDTk4MDMwOTEzNTQ0OFoX\nDTA1MTIzMTEzNTQ0OFowgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJn\nMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig\nU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVz\ndENlbnRlciBDbGFzcyAwIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0\ncnVzdGNlbnRlci5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA333mvr/V\n8C9tTg7R4I0LfztU6IrisJ8oxYrGubMzJ/UnyhpMVBJrtLJGsx1Ls/QhC0sCLqHC\nNJyFoMR4EdvbaycrCSoYTkDMn3EZZ5l0onw/wdiLI8hjO4ohq1zeHvSN3LQYwwVz\n9Gq0ofoBCCsBD203W6o4hmc51+Vf+uR+zKMCAwEAAaOCAUMwggE/MEAGCWCGSAGG\n+EIBAwQzFjFodHRwczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNr\nLXJldi5jZ2k/MEAGCWCGSAGG+EIBBAQzFjFodHRwczovL3d3dy50cnVzdGNlbnRl\nci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2k/MDwGCWCGSAGG+EIBBwQvFi1odHRw\nczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL1JlbmV3LmNnaT8wPgYJYIZI\nAYb4QgEIBDEWL2h0dHA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvZ3VpZGVsaW5lcy9p\nbmRleC5odG1sMCgGCWCGSAGG+EIBDQQbFhlUQyBUcnVzdENlbnRlciBDbGFzcyAw\nIENBMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQQFAAOBgQBNB39fCTAZ\nkqoFR3qUdVQqrs/82AxC4UU4KySVssqHynnEw5eQXmIYxsk4YUxoNdNMFBHrxM2h\nqdjFnmgnMgc1RQT4XyGgYB4cAEgEWNLFy65tMm49d5WMhcflrlCddUp7/wsneepN\npFn/7FrqJqU5g6TReM6nqX683SvKEpMDSg==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 0 CA/Email=certificate@trustcenter.de\n        Validity\n            Not Before: Mar  9 13:54:48 1998 GMT\n            Not After : Dec 31 13:54:48 2005 GMT\n        Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 0 CA/Email=certificate@trustcenter.de\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:df:7d:e6:be:bf:d5:f0:2f:6d:4e:0e:d1:e0:8d:\n                    0b:7f:3b:54:e8:8a:e2:b0:9f:28:c5:8a:c6:b9:b3:\n                    33:27:f5:27:ca:1a:4c:54:12:6b:b4:b2:46:b3:1d:\n                    4b:b3:f4:21:0b:4b:02:2e:a1:c2:34:9c:85:a0:c4:\n                    78:11:db:db:6b:27:2b:09:2a:18:4e:40:cc:9f:71:\n                    19:67:99:74:a2:7c:3f:c1:d8:8b:23:c8:63:3b:8a:\n                    21:ab:5c:de:1e:f4:8d:dc:b4:18:c3:05:73:f4:6a:\n                    b4:a1:fa:01:08:2b:01:0f:6d:37:5b:aa:38:86:67:\n                    39:d7:e5:5f:fa:e4:7e:cc:a3\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            Netscape Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape CA Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape Renewal Url: \n                https://www.trustcenter.de/cgi-bin/Renew.cgi?\n            Netscape CA Policy Url: \n                http://www.trustcenter.de/guidelines/index.html\n            Netscape Comment: \n                TC TrustCenter Class 0 CA\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n    Signature Algorithm: md5WithRSAEncryption\n        4d:07:7f:5f:09:30:19:92:aa:05:47:7a:94:75:54:2a:ae:cf:\n        fc:d8:0c:42:e1:45:38:2b:24:95:b2:ca:87:ca:79:c4:c3:97:\n        90:5e:62:18:c6:c9:38:61:4c:68:35:d3:4c:14:11:eb:c4:cd:\n        a1:a9:d8:c5:9e:68:27:32:07:35:45:04:f8:5f:21:a0:60:1e:\n        1c:00:48:04:58:d2:c5:cb:ae:6d:32:6e:3d:77:95:8c:85:c7:\n        e5:ae:50:9d:75:4a:7b:ff:0b:27:79:ea:4d:a4:59:ff:ec:5a:\n        ea:26:a5:39:83:a4:d1:78:ce:a7:a9:7e:bc:dd:2b:ca:12:93:\n        03:4a\n\nTC TrustCenter, Germany, Class 1 CA\n===================================\nMD5 Fingerprint: 64:3F:F8:3E:52:14:4A:59:BA:93:56:04:0B:23:02:D1\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIENTCCA56gAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBvDELMAkGA1UEBhMCREUx\nEDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxOjA4BgNVBAoTMVRD\nIFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRhIE5ldHdvcmtzIEdtYkgx\nIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDEgQ0ExKTAnBgkqhkiG9w0B\nCQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlMB4XDTk4MDMwOTEzNTYzM1oX\nDTA1MTIzMTEzNTYzM1owgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJn\nMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig\nU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVz\ndENlbnRlciBDbGFzcyAxIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0\ncnVzdGNlbnRlci5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsCnrtHaz\nrte2W7Re573jsZxJBFdboavZfxMb/bphq9jncd8tAJRdUUh9I+91YoSQPAofWRF0\nL46Apf0wAj0pUs1yGkkhnLzLUo5IoWOWyBCFMGlXdEXAWobG1T3gaFd9MWokjUWX\nPjF+aGYybiRt7DI2yUHK8DFEyKNhyhugNh8CAwEAAaOCAUMwggE/MEAGCWCGSAGG\n+EIBAwQzFjFodHRwczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNr\nLXJldi5jZ2k/MEAGCWCGSAGG+EIBBAQzFjFodHRwczovL3d3dy50cnVzdGNlbnRl\nci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2k/MDwGCWCGSAGG+EIBBwQvFi1odHRw\nczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL1JlbmV3LmNnaT8wPgYJYIZI\nAYb4QgEIBDEWL2h0dHA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvZ3VpZGVsaW5lcy9p\nbmRleC5odG1sMCgGCWCGSAGG+EIBDQQbFhlUQyBUcnVzdENlbnRlciBDbGFzcyAx\nIENBMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQQFAAOBgQAFQlImpAwn\nAUSsXCUowkRCVAi5HcU+bFlmxLNOUKf4+JZ1oZZ16BY4oM1dbvp5pxt7HR7DALlm\nvlrWYg/n8nu470zgwD9Zrjm3hAmeq/GpLmtp4q3M8up4CQUgOEJxGH7Hspfm1QIF\nBlajX/GqwsRP/vfvFg+d7KqFzz0pJPEEzQ==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 2 (0x2)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 1 CA/Email=certificate@trustcenter.de\n        Validity\n            Not Before: Mar  9 13:56:33 1998 GMT\n            Not After : Dec 31 13:56:33 2005 GMT\n        Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 1 CA/Email=certificate@trustcenter.de\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:b0:29:eb:b4:76:b3:ae:d7:b6:5b:b4:5e:e7:bd:\n                    e3:b1:9c:49:04:57:5b:a1:ab:d9:7f:13:1b:fd:ba:\n                    61:ab:d8:e7:71:df:2d:00:94:5d:51:48:7d:23:ef:\n                    75:62:84:90:3c:0a:1f:59:11:74:2f:8e:80:a5:fd:\n                    30:02:3d:29:52:cd:72:1a:49:21:9c:bc:cb:52:8e:\n                    48:a1:63:96:c8:10:85:30:69:57:74:45:c0:5a:86:\n                    c6:d5:3d:e0:68:57:7d:31:6a:24:8d:45:97:3e:31:\n                    7e:68:66:32:6e:24:6d:ec:32:36:c9:41:ca:f0:31:\n                    44:c8:a3:61:ca:1b:a0:36:1f\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            Netscape Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape CA Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape Renewal Url: \n                https://www.trustcenter.de/cgi-bin/Renew.cgi?\n            Netscape CA Policy Url: \n                http://www.trustcenter.de/guidelines/index.html\n            Netscape Comment: \n                TC TrustCenter Class 1 CA\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n    Signature Algorithm: md5WithRSAEncryption\n        05:42:52:26:a4:0c:27:01:44:ac:5c:25:28:c2:44:42:54:08:\n        b9:1d:c5:3e:6c:59:66:c4:b3:4e:50:a7:f8:f8:96:75:a1:96:\n        75:e8:16:38:a0:cd:5d:6e:fa:79:a7:1b:7b:1d:1e:c3:00:b9:\n        66:be:5a:d6:62:0f:e7:f2:7b:b8:ef:4c:e0:c0:3f:59:ae:39:\n        b7:84:09:9e:ab:f1:a9:2e:6b:69:e2:ad:cc:f2:ea:78:09:05:\n        20:38:42:71:18:7e:c7:b2:97:e6:d5:02:05:06:56:a3:5f:f1:\n        aa:c2:c4:4f:fe:f7:ef:16:0f:9d:ec:aa:85:cf:3d:29:24:f1:\n        04:cd\n\nTC TrustCenter, Germany, Class 2 CA\n===================================\nMD5 Fingerprint: E1:E9:96:53:77:E1:F0:38:A0:02:AB:94:C6:95:7B:FC\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIENTCCA56gAwIBAgIBAzANBgkqhkiG9w0BAQQFADCBvDELMAkGA1UEBhMCREUx\nEDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxOjA4BgNVBAoTMVRD\nIFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRhIE5ldHdvcmtzIEdtYkgx\nIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExKTAnBgkqhkiG9w0B\nCQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlMB4XDTk4MDMwOTEzNTc0NFoX\nDTA1MTIzMTEzNTc0NFowgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJn\nMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig\nU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVz\ndENlbnRlciBDbGFzcyAyIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0\ncnVzdGNlbnRlci5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA2jjo7TIA\nKXGDAQ2/jAHc2satOaSpii/Vi1xoX1DGYvVmvcqRIuyqHVHXPbNRsoNOXctJsPBM\nVeVrLceFCzAckk6C1MoC7fdvvtzg4xS4BVPymvRWi1qehZPRtIJWrk27qEtXFrz+\n+Fie+CmNsHvNeMlPrItnDPGc+/xXm1dcTw0CAwEAAaOCAUMwggE/MEAGCWCGSAGG\n+EIBAwQzFjFodHRwczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNr\nLXJldi5jZ2k/MEAGCWCGSAGG+EIBBAQzFjFodHRwczovL3d3dy50cnVzdGNlbnRl\nci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2k/MDwGCWCGSAGG+EIBBwQvFi1odHRw\nczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL1JlbmV3LmNnaT8wPgYJYIZI\nAYb4QgEIBDEWL2h0dHA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvZ3VpZGVsaW5lcy9p\nbmRleC5odG1sMCgGCWCGSAGG+EIBDQQbFhlUQyBUcnVzdENlbnRlciBDbGFzcyAy\nIENBMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQQFAAOBgQCJG/Tv6Tji\nbAz2zW9JzinM+6YP+Y0+lUbW/EcyibLIBmF60ucNEwKUC9mLVkf0u+fFX3v0Y0yu\nfDTqDaKpsyyF8+P+J1QQkrCPksGYQhhwSNtOLOsNJGjk0fe+Cakph7vo2tw+o4hC\nMfXR43+u2I4AWnSYsE/G/yN7XHMAeMnbTg==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 3 (0x3)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 2 CA/Email=certificate@trustcenter.de\n        Validity\n            Not Before: Mar  9 13:57:44 1998 GMT\n            Not After : Dec 31 13:57:44 2005 GMT\n        Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 2 CA/Email=certificate@trustcenter.de\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:da:38:e8:ed:32:00:29:71:83:01:0d:bf:8c:01:\n                    dc:da:c6:ad:39:a4:a9:8a:2f:d5:8b:5c:68:5f:50:\n                    c6:62:f5:66:bd:ca:91:22:ec:aa:1d:51:d7:3d:b3:\n                    51:b2:83:4e:5d:cb:49:b0:f0:4c:55:e5:6b:2d:c7:\n                    85:0b:30:1c:92:4e:82:d4:ca:02:ed:f7:6f:be:dc:\n                    e0:e3:14:b8:05:53:f2:9a:f4:56:8b:5a:9e:85:93:\n                    d1:b4:82:56:ae:4d:bb:a8:4b:57:16:bc:fe:f8:58:\n                    9e:f8:29:8d:b0:7b:cd:78:c9:4f:ac:8b:67:0c:f1:\n                    9c:fb:fc:57:9b:57:5c:4f:0d\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            Netscape Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape CA Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape Renewal Url: \n                https://www.trustcenter.de/cgi-bin/Renew.cgi?\n            Netscape CA Policy Url: \n                http://www.trustcenter.de/guidelines/index.html\n            Netscape Comment: \n                TC TrustCenter Class 2 CA\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n    Signature Algorithm: md5WithRSAEncryption\n        89:1b:f4:ef:e9:38:e2:6c:0c:f6:cd:6f:49:ce:29:cc:fb:a6:\n        0f:f9:8d:3e:95:46:d6:fc:47:32:89:b2:c8:06:61:7a:d2:e7:\n        0d:13:02:94:0b:d9:8b:56:47:f4:bb:e7:c5:5f:7b:f4:63:4c:\n        ae:7c:34:ea:0d:a2:a9:b3:2c:85:f3:e3:fe:27:54:10:92:b0:\n        8f:92:c1:98:42:18:70:48:db:4e:2c:eb:0d:24:68:e4:d1:f7:\n        be:09:a9:29:87:bb:e8:da:dc:3e:a3:88:42:31:f5:d1:e3:7f:\n        ae:d8:8e:00:5a:74:98:b0:4f:c6:ff:23:7b:5c:73:00:78:c9:\n        db:4e\n\nTC TrustCenter, Germany, Class 3 CA\n===================================\nMD5 Fingerprint: 62:AB:B6:15:4A:B4:B0:16:77:FF:AE:CF:16:16:2B:8C\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIENTCCA56gAwIBAgIBBDANBgkqhkiG9w0BAQQFADCBvDELMAkGA1UEBhMCREUx\nEDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxOjA4BgNVBAoTMVRD\nIFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRhIE5ldHdvcmtzIEdtYkgx\nIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExKTAnBgkqhkiG9w0B\nCQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlMB4XDTk4MDMwOTEzNTg0OVoX\nDTA1MTIzMTEzNTg0OVowgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJn\nMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig\nU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVz\ndENlbnRlciBDbGFzcyAzIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0\ncnVzdGNlbnRlci5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtrTBNQUu\nDY3soEBqHA4nplCSa1AbB94u53bM4Nr8hKhejGNqK03ZTgJ2EcEL8o15ygC28bAO\n1/ukFz2vq2l6lie/rzOhmipZqsS1NwjyEqUxtkP1MpZxKCirjSiG37vu4wx9MNbD\nUquPXSeca8Cj5wVrV0lEs27qZM/SjnpQd3cCAwEAAaOCAUMwggE/MEAGCWCGSAGG\n+EIBAwQzFjFodHRwczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNr\nLXJldi5jZ2k/MEAGCWCGSAGG+EIBBAQzFjFodHRwczovL3d3dy50cnVzdGNlbnRl\nci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2k/MDwGCWCGSAGG+EIBBwQvFi1odHRw\nczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL1JlbmV3LmNnaT8wPgYJYIZI\nAYb4QgEIBDEWL2h0dHA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvZ3VpZGVsaW5lcy9p\nbmRleC5odG1sMCgGCWCGSAGG+EIBDQQbFhlUQyBUcnVzdENlbnRlciBDbGFzcyAz\nIENBMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQQFAAOBgQCEhlBieaAn\n4SW6CbE0DxMJ7S3Ko+aV+TCszRelzj2Xnex8jyZ/wGHKIveR3Tw2WZqbdfe85Mjt\n7AK2IqfzLPHIknhttu7FKOyAIE+5awjnL6eGHn2xCJ9UuQA3PKDYGsiWHPQyFJw5\nlbfu8ENJwl7oy3lvU7/7SYos2EvZVfIScA==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 4 (0x4)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 3 CA/Email=certificate@trustcenter.de\n        Validity\n            Not Before: Mar  9 13:58:49 1998 GMT\n            Not After : Dec 31 13:58:49 2005 GMT\n        Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 3 CA/Email=certificate@trustcenter.de\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:b6:b4:c1:35:05:2e:0d:8d:ec:a0:40:6a:1c:0e:\n                    27:a6:50:92:6b:50:1b:07:de:2e:e7:76:cc:e0:da:\n                    fc:84:a8:5e:8c:63:6a:2b:4d:d9:4e:02:76:11:c1:\n                    0b:f2:8d:79:ca:00:b6:f1:b0:0e:d7:fb:a4:17:3d:\n                    af:ab:69:7a:96:27:bf:af:33:a1:9a:2a:59:aa:c4:\n                    b5:37:08:f2:12:a5:31:b6:43:f5:32:96:71:28:28:\n                    ab:8d:28:86:df:bb:ee:e3:0c:7d:30:d6:c3:52:ab:\n                    8f:5d:27:9c:6b:c0:a3:e7:05:6b:57:49:44:b3:6e:\n                    ea:64:cf:d2:8e:7a:50:77:77\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            Netscape Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape CA Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape Renewal Url: \n                https://www.trustcenter.de/cgi-bin/Renew.cgi?\n            Netscape CA Policy Url: \n                http://www.trustcenter.de/guidelines/index.html\n            Netscape Comment: \n                TC TrustCenter Class 3 CA\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n    Signature Algorithm: md5WithRSAEncryption\n        84:86:50:62:79:a0:27:e1:25:ba:09:b1:34:0f:13:09:ed:2d:\n        ca:a3:e6:95:f9:30:ac:cd:17:a5:ce:3d:97:9d:ec:7c:8f:26:\n        7f:c0:61:ca:22:f7:91:dd:3c:36:59:9a:9b:75:f7:bc:e4:c8:\n        ed:ec:02:b6:22:a7:f3:2c:f1:c8:92:78:6d:b6:ee:c5:28:ec:\n        80:20:4f:b9:6b:08:e7:2f:a7:86:1e:7d:b1:08:9f:54:b9:00:\n        37:3c:a0:d8:1a:c8:96:1c:f4:32:14:9c:39:95:b7:ee:f0:43:\n        49:c2:5e:e8:cb:79:6f:53:bf:fb:49:8a:2c:d8:4b:d9:55:f2:\n        12:70\n\nTC TrustCenter, Germany, Class 4 CA\n===================================\nMD5 Fingerprint: BF:AF:EC:C4:DA:F9:30:F9:CA:35:CA:25:E4:3F:8D:89\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIENTCCA56gAwIBAgIBBTANBgkqhkiG9w0BAQQFADCBvDELMAkGA1UEBhMCREUx\nEDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxOjA4BgNVBAoTMVRD\nIFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRhIE5ldHdvcmtzIEdtYkgx\nIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDQgQ0ExKTAnBgkqhkiG9w0B\nCQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlMB4XDTk4MDMwOTE0MDAyMFoX\nDTA1MTIzMTE0MDAyMFowgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJn\nMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig\nU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVz\ndENlbnRlciBDbGFzcyA0IENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0\ncnVzdGNlbnRlci5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvy9j1jZ7\nsg3TVfVkbOYlXca0yBS6JTiD61ZipVWpZaP0I5nCS7nQzVRnpqOgo6kzK3bkva13\nsu1cEnTDxbYPUppyk0OQYmYVD0Wl3eDduG9AblfBeXKjYKq6dh0SiVNa/AK+4QkT\nxUov3D2LGa3XiyRF+0z0zVw1HSlMUfPybFUCAwEAAaOCAUMwggE/MEAGCWCGSAGG\n+EIBAwQzFjFodHRwczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNr\nLXJldi5jZ2k/MEAGCWCGSAGG+EIBBAQzFjFodHRwczovL3d3dy50cnVzdGNlbnRl\nci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2k/MDwGCWCGSAGG+EIBBwQvFi1odHRw\nczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL1JlbmV3LmNnaT8wPgYJYIZI\nAYb4QgEIBDEWL2h0dHA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvZ3VpZGVsaW5lcy9p\nbmRleC5odG1sMCgGCWCGSAGG+EIBDQQbFhlUQyBUcnVzdENlbnRlciBDbGFzcyA0\nIENBMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQQFAAOBgQCUaBQbJZ4p\nmbGyI9JEs5Wf0Z5VBN3jL4IzVZZ3GZ0rnmUc+orjx48l/LEeVUYPj/9PNy+kdlmm\nZOvVFnC93ZUzDKQNJOtkULRDEfJDvg1xmCLsAa/s98dcccN1kVgZ6N2g9LTxvBBK\n85O0Bkm7H2bSvXRH4Zr569erbR+64R0s2g==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 5 (0x5)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 4 CA/Email=certificate@trustcenter.de\n        Validity\n            Not Before: Mar  9 14:00:20 1998 GMT\n            Not After : Dec 31 14:00:20 2005 GMT\n        Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 4 CA/Email=certificate@trustcenter.de\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:bf:2f:63:d6:36:7b:b2:0d:d3:55:f5:64:6c:e6:\n                    25:5d:c6:b4:c8:14:ba:25:38:83:eb:56:62:a5:55:\n                    a9:65:a3:f4:23:99:c2:4b:b9:d0:cd:54:67:a6:a3:\n                    a0:a3:a9:33:2b:76:e4:bd:ad:77:b2:ed:5c:12:74:\n                    c3:c5:b6:0f:52:9a:72:93:43:90:62:66:15:0f:45:\n                    a5:dd:e0:dd:b8:6f:40:6e:57:c1:79:72:a3:60:aa:\n                    ba:76:1d:12:89:53:5a:fc:02:be:e1:09:13:c5:4a:\n                    2f:dc:3d:8b:19:ad:d7:8b:24:45:fb:4c:f4:cd:5c:\n                    35:1d:29:4c:51:f3:f2:6c:55\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            Netscape Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape CA Revocation Url: \n                https://www.trustcenter.de/cgi-bin/check-rev.cgi?\n            Netscape Renewal Url: \n                https://www.trustcenter.de/cgi-bin/Renew.cgi?\n            Netscape CA Policy Url: \n                http://www.trustcenter.de/guidelines/index.html\n            Netscape Comment: \n                TC TrustCenter Class 4 CA\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n    Signature Algorithm: md5WithRSAEncryption\n        94:68:14:1b:25:9e:29:99:b1:b2:23:d2:44:b3:95:9f:d1:9e:\n        55:04:dd:e3:2f:82:33:55:96:77:19:9d:2b:9e:65:1c:fa:8a:\n        e3:c7:8f:25:fc:b1:1e:55:46:0f:8f:ff:4f:37:2f:a4:76:59:\n        a6:64:eb:d5:16:70:bd:dd:95:33:0c:a4:0d:24:eb:64:50:b4:\n        43:11:f2:43:be:0d:71:98:22:ec:01:af:ec:f7:c7:5c:71:c3:\n        75:91:58:19:e8:dd:a0:f4:b4:f1:bc:10:4a:f3:93:b4:06:49:\n        bb:1f:66:d2:bd:74:47:e1:9a:f9:eb:d7:ab:6d:1f:ba:e1:1d:\n        2c:da\n\nThawte Personal Basic CA\n========================\nMD5 Fingerprint: E6:0B:D2:C9:CA:2D:88:DB:1A:71:0E:4B:78:EB:02:41\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx\nFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD\nVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT\nZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj\nIENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X\nDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw\nEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE\nChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy\ndmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD\nQTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN\nBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53\ndXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK\nwPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7\nG1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF\nAAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7\nc8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P\n9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 0 (0x0)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Basic CA/Email=personal-basic@thawte.com\n        Validity\n            Not Before: Jan  1 00:00:00 1996 GMT\n            Not After : Dec 31 23:59:59 2020 GMT\n        Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Basic CA/Email=personal-basic@thawte.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:bc:bc:93:53:6d:c0:50:4f:82:15:e6:48:94:35:\n                    a6:5a:be:6f:42:fa:0f:47:ee:77:75:72:dd:8d:49:\n                    9b:96:57:a0:78:d4:ca:3f:51:b3:69:0b:91:76:17:\n                    22:07:97:6a:c4:51:93:4b:e0:8d:ef:37:95:a1:0c:\n                    4d:da:34:90:1d:17:89:97:e0:35:38:57:4a:c0:f4:\n                    08:70:e9:3c:44:7b:50:7e:61:9a:90:e3:23:d3:88:\n                    11:46:27:f5:0b:07:0e:bb:dd:d1:7f:20:0a:88:b9:\n                    56:0b:2e:1c:80:da:f1:e3:9e:29:ef:14:bd:0a:44:\n                    fb:1b:5b:18:d1:bf:23:93:21\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        2d:e2:99:6b:b0:3d:7a:89:d7:59:a2:94:01:1f:2b:dd:12:4b:\n        53:c2:ad:7f:aa:a7:00:5c:91:40:57:25:4a:38:aa:84:70:b9:\n        d9:80:0f:a5:7b:5c:fb:73:c6:bd:d7:8a:61:5c:03:e3:2d:27:\n        a8:17:e0:84:85:42:dc:5e:9b:c6:b7:b2:6d:bb:74:af:e4:3f:\n        cb:a7:b7:b0:e0:5d:be:78:83:25:94:d2:db:81:0f:79:07:6d:\n        4f:f4:39:15:5a:52:01:7b:de:32:d6:4d:38:f6:12:5c:06:50:\n        df:05:5b:bd:14:4b:a1:df:29:ba:3b:41:8d:f7:63:56:a1:df:\n        22:b1\n\nThawte Personal Freemail CA\n===========================\nMD5 Fingerprint: 1E:74:C3:86:3C:0C:35:C5:3E:C2:7F:EF:3C:AA:3C:D9\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx\nFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD\nVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT\nZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt\nYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu\nY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT\nAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa\nMBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp\nb24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG\ncmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh\nd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY\nDFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E\nrHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq\nuzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN\nBgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP\nMPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa\n/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei\ngQ==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 0 (0x0)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Freemail CA/Email=personal-freemail@thawte.com\n        Validity\n            Not Before: Jan  1 00:00:00 1996 GMT\n            Not After : Dec 31 23:59:59 2020 GMT\n        Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Freemail CA/Email=personal-freemail@thawte.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:d4:69:d7:d4:b0:94:64:5b:71:e9:47:d8:0c:51:\n                    b6:ea:72:91:b0:84:5e:7d:2d:0d:8f:7b:12:df:85:\n                    25:75:28:74:3a:42:2c:63:27:9f:95:7b:4b:ef:7e:\n                    19:87:1d:86:ea:a3:dd:b9:ce:96:64:1a:c2:14:6e:\n                    44:ac:7c:e6:8f:e8:4d:0f:71:1f:40:38:a6:00:a3:\n                    87:78:f6:f9:94:86:5e:ad:ea:c0:5e:76:eb:d9:14:\n                    a3:5d:6e:7a:7c:0c:a5:4b:55:7f:06:19:29:7f:9e:\n                    9a:26:d5:6a:bb:38:24:08:6a:98:c7:b1:da:a3:98:\n                    91:fd:79:db:e5:5a:c4:1c:b9\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        c7:ec:92:7e:4e:f8:f5:96:a5:67:62:2a:a4:f0:4d:11:60:d0:\n        6f:8d:60:58:61:ac:26:bb:52:35:5c:08:cf:30:fb:a8:4a:96:\n        8a:1f:62:42:23:8c:17:0f:f4:ba:64:9c:17:ac:47:29:df:9d:\n        98:5e:d2:6c:60:71:5c:a2:ac:dc:79:e3:e7:6e:00:47:1f:b5:\n        0d:28:e8:02:9d:e4:9a:fd:13:f4:a6:d9:7c:b1:f8:dc:5f:23:\n        26:09:91:80:73:d0:14:1b:de:43:a9:83:25:f2:e6:9c:2f:15:\n        ca:fe:a6:ab:8a:07:75:8b:0c:dd:51:84:6b:e4:f8:d1:ce:77:\n        a2:81\n\nThawte Personal Premium CA\n==========================\nMD5 Fingerprint: 3A:B2:DE:22:9A:20:93:49:F9:ED:C8:D2:8A:E7:68:0D\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx\nFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD\nVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT\nZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p\ndW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv\nbTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa\nQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY\nBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u\nIFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl\nbWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu\nY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs\nBd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI\nEt12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD\nZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG\nSIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH\nb4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh\nKXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 0 (0x0)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Premium CA/Email=personal-premium@thawte.com\n        Validity\n            Not Before: Jan  1 00:00:00 1996 GMT\n            Not After : Dec 31 23:59:59 2020 GMT\n        Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Premium CA/Email=personal-premium@thawte.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:c9:66:d9:f8:07:44:cf:b9:8c:2e:f0:a1:ef:13:\n                    45:6c:05:df:de:27:16:51:36:41:11:6c:6c:3b:ed:\n                    fe:10:7d:12:9e:e5:9b:42:9a:fe:60:31:c3:66:b7:\n                    73:3a:48:ae:4e:d0:32:37:94:88:b5:0d:b6:d9:f3:\n                    f2:44:d9:d5:88:12:dd:76:4d:f2:1a:fc:6f:23:1e:\n                    7a:f1:d8:98:45:4e:07:10:ef:16:42:d0:43:75:6d:\n                    4a:de:e2:aa:c9:31:ff:1f:00:70:7c:66:cf:10:25:\n                    08:ba:fa:ee:00:e9:46:03:66:27:11:15:3b:aa:5b:\n                    f2:98:dd:36:42:b2:da:88:75\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        69:36:89:f7:34:2a:33:72:2f:6d:3b:d4:22:b2:b8:6f:9a:c5:\n        36:66:0e:1b:3c:a1:b1:75:5a:e6:fd:35:d3:f8:a8:f2:07:6f:\n        85:67:8e:de:2b:b9:e2:17:b0:3a:a0:f0:0e:a2:00:9a:df:f3:\n        14:15:6e:bb:c8:85:5a:98:80:f9:ff:be:74:1d:3d:f3:fe:30:\n        25:d1:37:34:67:fa:a5:71:79:30:61:29:72:c0:e0:2c:4c:fb:\n        56:e4:3a:a8:6f:e5:32:59:52:db:75:28:50:59:0c:f8:0b:19:\n        e4:ac:d9:af:96:8d:2f:50:db:07:c3:ea:1f:ab:33:e0:f5:2b:\n        31:89\n\nThawte Premium Server CA\n========================\nMD5 Fingerprint: 06:9F:69:79:16:66:90:02:1B:8C:8C:A2:C3:07:6F:3A\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx\nFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD\nVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv\nbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy\ndmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t\nMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB\nMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG\nA1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp\nb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl\ncnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv\nbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE\nVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ\nug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR\nuHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG\n9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI\nhfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM\npAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/Email=premium-server@thawte.com\n        Validity\n            Not Before: Aug  1 00:00:00 1996 GMT\n            Not After : Dec 31 23:59:59 2020 GMT\n        Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/Email=premium-server@thawte.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:d2:36:36:6a:8b:d7:c2:5b:9e:da:81:41:62:8f:\n                    38:ee:49:04:55:d6:d0:ef:1c:1b:95:16:47:ef:18:\n                    48:35:3a:52:f4:2b:6a:06:8f:3b:2f:ea:56:e3:af:\n                    86:8d:9e:17:f7:9e:b4:65:75:02:4d:ef:cb:09:a2:\n                    21:51:d8:9b:d0:67:d0:ba:0d:92:06:14:73:d4:93:\n                    cb:97:2a:00:9c:5c:4e:0c:bc:fa:15:52:fc:f2:44:\n                    6e:da:11:4a:6e:08:9f:2f:2d:e3:f9:aa:3a:86:73:\n                    b6:46:53:58:c8:89:05:bd:83:11:b8:73:3f:aa:07:\n                    8d:f4:42:4d:e7:40:9d:1c:37\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        26:48:2c:16:c2:58:fa:e8:16:74:0c:aa:aa:5f:54:3f:f2:d7:\n        c9:78:60:5e:5e:6e:37:63:22:77:36:7e:b2:17:c4:34:b9:f5:\n        08:85:fc:c9:01:38:ff:4d:be:f2:16:42:43:e7:bb:5a:46:fb:\n        c1:c6:11:1f:f1:4a:b0:28:46:c9:c3:c4:42:7d:bc:fa:ab:59:\n        6e:d5:b7:51:88:11:e3:a4:85:19:6b:82:4c:a4:0c:12:ad:e9:\n        a4:ae:3f:f1:c3:49:65:9a:8c:c5:c8:3e:25:b7:94:99:bb:92:\n        32:71:07:f0:86:5e:ed:50:27:a6:0d:a6:23:f9:bb:cb:a6:07:\n        14:42\n\nThawte Server CA\n================\nMD5 Fingerprint: C5:70:C4:A2:ED:53:78:0C:C8:10:53:81:64:CB:D0:1D\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx\nFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD\nVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv\nbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm\nMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx\nMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT\nDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3\ndGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl\ncyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3\nDQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD\ngY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91\nyekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX\nL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj\nEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG\n7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e\nQNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ\nqdq5snUb9kLy78fyGPmJvKP/iiMucEc=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/Email=server-certs@thawte.com\n        Validity\n            Not Before: Aug  1 00:00:00 1996 GMT\n            Not After : Dec 31 23:59:59 2020 GMT\n        Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/Email=server-certs@thawte.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:d3:a4:50:6e:c8:ff:56:6b:e6:cf:5d:b6:ea:0c:\n                    68:75:47:a2:aa:c2:da:84:25:fc:a8:f4:47:51:da:\n                    85:b5:20:74:94:86:1e:0f:75:c9:e9:08:61:f5:06:\n                    6d:30:6e:15:19:02:e9:52:c0:62:db:4d:99:9e:e2:\n                    6a:0c:44:38:cd:fe:be:e3:64:09:70:c5:fe:b1:6b:\n                    29:b6:2f:49:c8:3b:d4:27:04:25:10:97:2f:e7:90:\n                    6d:c0:28:42:99:d7:4c:43:de:c3:f5:21:6d:54:9f:\n                    5d:c3:58:e1:c0:e4:d9:5b:b0:b8:dc:b4:7b:df:36:\n                    3a:c2:b5:66:22:12:d6:87:0d\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n    Signature Algorithm: md5WithRSAEncryption\n        07:fa:4c:69:5c:fb:95:cc:46:ee:85:83:4d:21:30:8e:ca:d9:\n        a8:6f:49:1a:e6:da:51:e3:60:70:6c:84:61:11:a1:1a:c8:48:\n        3e:59:43:7d:4f:95:3d:a1:8b:b7:0b:62:98:7a:75:8a:dd:88:\n        4e:4e:9e:40:db:a8:cc:32:74:b9:6f:0d:c6:e3:b3:44:0b:d9:\n        8a:6f:9a:29:9b:99:18:28:3b:d1:e3:40:28:9a:5a:3c:d5:b5:\n        e7:20:1b:8b:ca:a4:ab:8d:e9:51:d9:e2:4c:2c:59:a9:da:b9:\n        b2:75:1b:f6:42:f2:ef:c7:f2:18:f9:89:bc:a3:ff:8a:23:2e:\n        70:47\n\nThawte Universal CA Root\n========================\nMD5 Fingerprint: 17:AF:71:16:52:7B:73:65:22:05:29:28:84:71:9D:13\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIRIjCCCQoCAQAwDQYJKoZIhvcNAQEFBQAwVzEPMA0GA1UEChMGVGhhd3RlMSEw\nHwYDVQQLExhUaGF3dGUgVW5pdmVyc2FsIENBIFJvb3QxITAfBgNVBAMTGFRoYXd0\nZSBVbml2ZXJzYWwgQ0EgUm9vdDAeFw05OTEyMDUxMzU2MDVaFw0zNzA0MDMxMzU2\nMDVaMFcxDzANBgNVBAoTBlRoYXd0ZTEhMB8GA1UECxMYVGhhd3RlIFVuaXZlcnNh\nbCBDQSBSb290MSEwHwYDVQQDExhUaGF3dGUgVW5pdmVyc2FsIENBIFJvb3Qwgggi\nMA0GCSqGSIb3DQEBAQUAA4IIDwAwgggKAoIIAQDiiQVtw3+tpok6/7vHzZ03seHS\nIR6bYSoV53tXT1U80Lv52T0+przstK1TmhYC6wty/Yryj0QFxevT5b22RDnm+0e/\nap4KlRjiaOLWltYhrYj99Rf109pCpZDtKZWWdTrah6HU9dOH3gVipuNmdJLPpby7\n32j/cXVWQVk16zNaZlHy0qMKwYzOc1wRby2MlYyRsf3P5a1WlcyFkoOQVUHJwnft\n+aN0QgpoCPPQ0WX9Zyw0/yR/53nIBzslV92kDJg9vuDMGWXb8lSir0LUneKuhCMl\nCTMStWoedsSL2UkAbF66H/Ib2mfKJ6qjRCMbg4LO8qsz7VSk3MmrWWXROA7BPhtn\nj9Z1AeBVIt12d+yO3fTPeSJtuVcD9ZkIpzw+NPvEF64jWM0k8yPKagIolAGBNLRs\na66LGsOj0gk8FlT1Nl8k459KoeJkxhbDpoF6JDZHjsFeDvv5FXgE1g5Z2Z1YZmLS\nlCkyMsh4uWb2tVbhbMYUS5ZSWZECJGpVR9c/tiMaYHeXLuJAr54EV56tEcXJQ3Dv\nSLRerBxpLi6C1VuLvoK+GRRe5w0ix1Eb/x6b8TCPcTEGszQnj196ZoJPii0Tq0LP\nIVael45mNg+Wm+Ur9AKpKmqMLMTDuHAsLSkeP1B3Hm0qVORVCpE4ocW1ZqJ2Wu4P\nv7Rn4ShuD+E2oYLRv9R34cRnMpN4yOdUU/4jeeZozCaQ9hBjXSpvkS2kczJRIfK7\nFd+qJAhIBt6hnia/uoO/fKTIoIy90v+8hGknEyQYxEUYIyZeGBTKLoiHYqNT5iG3\nuIV7moW7FSZy+Ln3anQPST+SvqkFt5knv78JF0uZTK0REHzfdDH2jyZfqoiuOFfI\nVS3T+9gbUZm+JRs6usB9G+3O0km5z/PFfYmQgdhpSCAQo/jvklEYMosRGMA/G4VW\nzlfJ8oJkxt8CCS5KES+xJ203UvDwFmHxZ43fh3Kvh9rP+1CUbtSUheuKLOoh9ZZK\nRNXgzmp0RE3QBdOHFe020KSLZlVwk+5HBsF+LqUYeWfzKIXxcPcOg6R+VJ5adjLL\nZRu4zfvIKAPSVJHRp8WFQwgXdqXmL2cI2KGigi0M+MGvY9RQd21rRkpBhdWQX3kt\nxOzXEYdAiuFo4mT4VTL7b5Ms2nfZIcEX5TYsTn6Qf6yUKzJnvjhQdriuQbnXIcUJ\nTGDIo1HENJtXN9/LyTNXi+v7dp8ZTcVqHypFrivtL42npQDLBPolYi50SBvKKoy6\n27Z+9rsCfKnD21h4ob/w/hoQVRHO6GlOlmXGFwPWB2iMVIKuHCJVP/H0CZcowEb3\nTgslHfcH1wkdOhhXODvoMwbnj3hGHlv1BrbsuKYN8boTS9YYIN1pM0ozFa64yJiK\nJyyTvC377jO/ZuZNurabBlVgl0u8RM1+9KHYqi/AAighFmJ42whU8vz0NOPGjxxD\nV86QGkvcLjsokYk/eto1HY4s7kns9DOtyVOojJ8EUz4kHFLJEvliV6O87izrQHwg\nI3ArlflzF4rRwRxpprc4mmf3cB16WgxAz2IPhTzCAk5+tfbFKimEsx83KuGqckLE\n7Wsaj5IcXb7R8lvyq6qp0vW4pEErK5FuEkjKmNg3jcjtADC1tgROfpzahOzA+nvl\nHYikU0awlORcG6ElLA9IUneXCWzsWxgzgwLlgn7NhSEwEf0nT8/kHuw/pVds6Sow\nGSqI5cNpOKtvOXF/hOFBw+HMKokgUi6DD2w5P0stFqwt8CSsAHP0m7MGPwW4FIUf\nq55cPJ5inQ5tO4AJ/ALqopd0ysf541bhw8qlpprAkOAkElPSwovavu0CQ15n4YmY\nee7LqsrDG9znpUalfGsWh7ZaKNfbJzxepb22Ud0fQ887Jsg6jSVhwUn0PBvJROqv\nHMIrlAEqDjDRW4srR+XD0QQDmw45LNYn1OZwWtl1zyrYyQAF5BOI7MM5+4dhMDZD\nA8ienKIGwi/F/PCAY7FUBKBMqS7G9XZ62NDk1JQR5RW1eAbcuICPmakgMz0QhUxl\nCco+WF5gk5qqYl3AUQYcXWCgDZxLQ/anFiGkh6rywS7ukjC4nt/fEAGLhglw2Gyo\nt1AeFpa092f9NTohkCoyxwB7TQcQCbkvc9gYfmeZBE8G/FDHhZudQJ2zljf6pdyy\nck7vTgks/ZH9Tfe7pqE+q3uiA0CmqVUn4vr5Gc6HdarxdTbz87iR+JHDi3UTjkxl\nmhY5auU06HqWWX81sAD9W2n8Qyb69Shu/ofZfiT7tKCCblSi/66/YrT0cgHCy5hH\nmOFMtReAgM6PpijuHkVq+9/xHfxaO9bq9GwdYklXO4qPhurwUwTOnBZo/7q5/IgP\nR/cCRHJAuMo7LVOd3DxWjFl7aBosjXG7bADHGs5vQJKxoy8P2UTyo3Aunu4OrjLQ\nOz6LB+rmebNcKeJ9a6he+Vox6AiWoowDmEbxuH2QVCbtdmL+numabl7JScdcNFMp\nVNns5EbhgDt12d/7edWH8bqe6xnOTFJz5luHriVPOXnMxrj5EHvs8JtxpAWg0ynT\nTn8f9C0oeMxVlXsekS/MVhhzi7LbvGkH5tDYT+2i/1iFo23gSlO3Z32NDFxbe3co\nAjVEegTTKEPIazAXXTK4KTW6dto7FEp2GFik+JI8nk0zb0ZrCNkxSGjd9PskVjSy\nz2lmvkjSimYizfJpzcJTE0UpQSLWXZgftqSyo8LuAi9RG9yDpOxwJajUCGEyb+Sh\ngS58Y3L6KWW8cETPXQIDAQABMA0GCSqGSIb3DQEBBQUAA4IIAQBVmjRqIgZpCUUz\nx66pXMcJTpuGvEGQ1JRS9s0jKZRLIs3ovf6dzVLyve2rh8mrq0YEtL2iPyIwR1DA\nS4x2DwP1ktKxLcR6NZzJc4frpp/eD3ON03+Z2LqPb8Tzvhqui6KUNpDi5euNBfT8\nZd+V8cSUTRdW1588j1A853e/lYYmZPtq/8ba6YyuQrtp5TPG2OkNxlUhScEMtKP5\nm0tc3oNPQQPOKnloOH3wVEkg9bYQ/wjcM2aWm/8G3gCe185WQ5pR/HDN9vBRo7fN\ntFyFYs1xt8YrIyvdw25AQvo3/zcc9npXlIeFI9fUycdfwU0vyQ3XXOycJe6eMIKR\nlnK4dR34CWhXl7ItS+4l7HokKe5y1JwT26vcAwrYShTJCFdEXaG1U4A08hSXz1Le\nog6KEOkU79BgvmGh8SVd1RhzP5MQypbus0DS26NVz1dapQ5PdUff6veQmm31cC4d\nFBw3ZARZULDccoZvnDc9XSivc1Xv0u4kdHQT79zbMUn7P2P10wg+M6XnnQreUyxR\njmfbm0FlQVC91KSWbIe8EuCUx9PA5MtzWACD4awnhdadU51cvQo+A0OcDJH1bXv4\nQHJ1qxF2kSvhxqofcGl2cBUJ/pPQ1i23FWqbZ1y0aZ8lpn2K+30iqXHyzk6MuCEt\n3v5BcQ3/nexzprsHT4gOWEcufqnCx3jdunqeTuAwTmNvhdQgQen6/kNF5/uverLO\npAUdIppYht/kzkyp/tgWpW/72M5We/XWIO/kR81jJP+5vvFIo8EBcua9wK3tJg3K\nNJ/8Ai0gTwUgriE9DMIgPD/wBITcz4n9uSWRjtBD5rMgq1wt1UCeoEvY9LLMffFY\nCo6H7YisNpbkVqARivKa0LNXozS7Gas44XRrIsQxzgHVGzbjHjhMM5PfQONZV06s\nbnseWj3FHVusyBCCNQIisvx16BCRjcR9eJNHnhydrGtiAliM1hwj1q94woCcpKok\nVBS1FJjG+CsaJMtxMgrimw5pa91+jGTRLmPvDn+xPohMnVXlyW4XBLdB/72KQcsl\nMW9Edz9HsfyBiAeOBUkgtxHZaQMqA525M4Sa399640Zzo9iijFMZiFVMdLj2RIQr\n0RQtTjkukmj/afyFYhvrVU/vJYRiRZnW2E5vP1MIfR0GlYGAf09OdDaYteKHcJjc\n1/XcUhXmxtZ5ljl/j5XPq4BTrRsLRUAO1Bi9LN6Kd3b98kRHxiHQ5HTw2BgFyHww\ncsff8bv8AjCp9EImWQ2TBYKhc+005ThdzVCQ/pT8E7y9/KiiiKdzxLKo0V2IxAKi\nevEEyf6MdMnvHWRBn6welmdkrKsoQced98CYG24HwmR9WoNmVig2nOf7HHcOKKDE\n92t5OQQghMdXk7wboOq860LlqBH+/KxlzP34KIj0pZrlc1HgqJsNA3dO5eCYs4ja\nfebGnnwUZsEuU0qSBzegfuk9CeQVfM/9uEGl755mncReBx2H+EGt6ucv0kFjGDf5\nFONN0OX3Q/0V4/k2cwYm3wFPqcNO3iBGd5i0eiQrO3UrTliNm12kxxagvDKIP6GD\n8wDI+NhY6WNdTCu18HJB2Kt3N9ZydK62NpzIpoNJS+DJVgspvgAwy93WyEKKANns\nFdE0cfJbZIf2J9K364awkL8p2yGeNozjIC+VI1FsG8Kk1ebYAkNnoP6bUANEf7vk\nctXR5NqPkhRk+10UEBJKlQbJZQgpyiGjJjgRySffcGcE/cpIMn9jskV0MVBPh9kg\ncNIhcLHWEJ0zXXiDkW1Vguza5GJjx4FG1xllcipDGZC41yNNTBzgRKlmZ6zucXkn\nJnhtcg71XUsjtXx8ZekXxjoLDd1eHlHDhrjsf8cnSqVG6GotGcGHo8uZk4dkolUU\nTLdDpZPX59JOeUDKZZlGPT96gHqIaswe5WszRvRQwNUfCbjNii6hJ+tdc6foawrl\nV4IqsPziVFJW8KupEsYjlgcknOC8RqW0IATaCZNj5dQuwn7FMe21FXSGF7mz8yaK\nHQJq2ho/6LrxBG2UUVTiWrRZgx1g0C1zzAe1Joz518aIke+Az10PoWDLRdRCItGx\ncB390LcwkDrGSG1n5TLaj9vjqOMdICWiHOFMuaT2xj9cWA27xrJ3ARaRnxcGDbdA\nPsyPjpxL4J1+mx4Fq4gi+tMoG1cUZEo+JCw4TSFpAHMu0FUtdPIV6JRDPkAqxsa5\nalveoswYUFRdTiqFbPaSiykZfufqSuAiKyW892bPd5pBdPI8FA10afVQg83NLyHb\nIkaK0PdRGpVX8gWLGhntO0XoNsJufvtXIgAfBlOprpPGj3EqMUWS545t5pkiwIP8\n79xXZndPojYx+6ETjeXKo5V9AQxkcDtTQmiAx7udqAA1aZgMqGfYQ+Wqz5XgUZWk\nFz9CnbgEztN5ecjTihYykuDXou7XN0wvrLh7vkX28RgznHs3piTZvECrAOnDN4ur\n2LbzXoFOsBRrBz4f7ML2RCKVu7Pmb9b5cGW6CoNlqg4TL4MTI1OLQBb6zi/8TQT4\n69isxTbCFVdIOOxVs7Qeuq3SQgYXDXPIV6a+lk2p8sD7eiEc9clwqYKQtfEM1HkQ\nvoGm6VxhnHd5mqTDNyZXN8lSLPoI/9BfxmHA9Ha+/N5Oz6tRmXHH33701s8GVhkT\nUwttdFlIGZtTBS2dMlTT5SxTi2Q+1GR744AJFMz+FkZja3Fp+PnLJ/aIVLxFs84C\nyJTuQFv5QgLC/7DYLOsof17JJgGZpw==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 0 (0x0)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: O=Thawte, OU=Thawte Universal CA Root, CN=Thawte Universal CA Root\n        Validity\n            Not Before: Dec  5 13:56:05 1999 GMT\n            Not After : Apr  3 13:56:05 2037 GMT\n        Subject: O=Thawte, OU=Thawte Universal CA Root, CN=Thawte Universal CA Root\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (16384 bit)\n                Modulus (16384 bit):\n                    00:e2:89:05:6d:c3:7f:ad:a6:89:3a:ff:bb:c7:cd:\n                    9d:37:b1:e1:d2:21:1e:9b:61:2a:15:e7:7b:57:4f:\n                    55:3c:d0:bb:f9:d9:3d:3e:a6:bc:ec:b4:ad:53:9a:\n                    16:02:eb:0b:72:fd:8a:f2:8f:44:05:c5:eb:d3:e5:\n                    bd:b6:44:39:e6:fb:47:bf:6a:9e:0a:95:18:e2:68:\n                    e2:d6:96:d6:21:ad:88:fd:f5:17:f5:d3:da:42:a5:\n                    90:ed:29:95:96:75:3a:da:87:a1:d4:f5:d3:87:de:\n                    05:62:a6:e3:66:74:92:cf:a5:bc:bb:df:68:ff:71:\n                    75:56:41:59:35:eb:33:5a:66:51:f2:d2:a3:0a:c1:\n                    8c:ce:73:5c:11:6f:2d:8c:95:8c:91:b1:fd:cf:e5:\n                    ad:56:95:cc:85:92:83:90:55:41:c9:c2:77:ed:f9:\n                    a3:74:42:0a:68:08:f3:d0:d1:65:fd:67:2c:34:ff:\n                    24:7f:e7:79:c8:07:3b:25:57:dd:a4:0c:98:3d:be:\n                    e0:cc:19:65:db:f2:54:a2:af:42:d4:9d:e2:ae:84:\n                    23:25:09:33:12:b5:6a:1e:76:c4:8b:d9:49:00:6c:\n                    5e:ba:1f:f2:1b:da:67:ca:27:aa:a3:44:23:1b:83:\n                    82:ce:f2:ab:33:ed:54:a4:dc:c9:ab:59:65:d1:38:\n                    0e:c1:3e:1b:67:8f:d6:75:01:e0:55:22:dd:76:77:\n                    ec:8e:dd:f4:cf:79:22:6d:b9:57:03:f5:99:08:a7:\n                    3c:3e:34:fb:c4:17:ae:23:58:cd:24:f3:23:ca:6a:\n                    02:28:94:01:81:34:b4:6c:6b:ae:8b:1a:c3:a3:d2:\n                    09:3c:16:54:f5:36:5f:24:e3:9f:4a:a1:e2:64:c6:\n                    16:c3:a6:81:7a:24:36:47:8e:c1:5e:0e:fb:f9:15:\n                    78:04:d6:0e:59:d9:9d:58:66:62:d2:94:29:32:32:\n                    c8:78:b9:66:f6:b5:56:e1:6c:c6:14:4b:96:52:59:\n                    91:02:24:6a:55:47:d7:3f:b6:23:1a:60:77:97:2e:\n                    e2:40:af:9e:04:57:9e:ad:11:c5:c9:43:70:ef:48:\n                    b4:5e:ac:1c:69:2e:2e:82:d5:5b:8b:be:82:be:19:\n                    14:5e:e7:0d:22:c7:51:1b:ff:1e:9b:f1:30:8f:71:\n                    31:06:b3:34:27:8f:5f:7a:66:82:4f:8a:2d:13:ab:\n                    42:cf:21:56:9e:97:8e:66:36:0f:96:9b:e5:2b:f4:\n                    02:a9:2a:6a:8c:2c:c4:c3:b8:70:2c:2d:29:1e:3f:\n                    50:77:1e:6d:2a:54:e4:55:0a:91:38:a1:c5:b5:66:\n                    a2:76:5a:ee:0f:bf:b4:67:e1:28:6e:0f:e1:36:a1:\n                    82:d1:bf:d4:77:e1:c4:67:32:93:78:c8:e7:54:53:\n                    fe:23:79:e6:68:cc:26:90:f6:10:63:5d:2a:6f:91:\n                    2d:a4:73:32:51:21:f2:bb:15:df:aa:24:08:48:06:\n                    de:a1:9e:26:bf:ba:83:bf:7c:a4:c8:a0:8c:bd:d2:\n                    ff:bc:84:69:27:13:24:18:c4:45:18:23:26:5e:18:\n                    14:ca:2e:88:87:62:a3:53:e6:21:b7:b8:85:7b:9a:\n                    85:bb:15:26:72:f8:b9:f7:6a:74:0f:49:3f:92:be:\n                    a9:05:b7:99:27:bf:bf:09:17:4b:99:4c:ad:11:10:\n                    7c:df:74:31:f6:8f:26:5f:aa:88:ae:38:57:c8:55:\n                    2d:d3:fb:d8:1b:51:99:be:25:1b:3a:ba:c0:7d:1b:\n                    ed:ce:d2:49:b9:cf:f3:c5:7d:89:90:81:d8:69:48:\n                    20:10:a3:f8:ef:92:51:18:32:8b:11:18:c0:3f:1b:\n                    85:56:ce:57:c9:f2:82:64:c6:df:02:09:2e:4a:11:\n                    2f:b1:27:6d:37:52:f0:f0:16:61:f1:67:8d:df:87:\n                    72:af:87:da:cf:fb:50:94:6e:d4:94:85:eb:8a:2c:\n                    ea:21:f5:96:4a:44:d5:e0:ce:6a:74:44:4d:d0:05:\n                    d3:87:15:ed:36:d0:a4:8b:66:55:70:93:ee:47:06:\n                    c1:7e:2e:a5:18:79:67:f3:28:85:f1:70:f7:0e:83:\n                    a4:7e:54:9e:5a:76:32:cb:65:1b:b8:cd:fb:c8:28:\n                    03:d2:54:91:d1:a7:c5:85:43:08:17:76:a5:e6:2f:\n                    67:08:d8:a1:a2:82:2d:0c:f8:c1:af:63:d4:50:77:\n                    6d:6b:46:4a:41:85:d5:90:5f:79:2d:c4:ec:d7:11:\n                    87:40:8a:e1:68:e2:64:f8:55:32:fb:6f:93:2c:da:\n                    77:d9:21:c1:17:e5:36:2c:4e:7e:90:7f:ac:94:2b:\n                    32:67:be:38:50:76:b8:ae:41:b9:d7:21:c5:09:4c:\n                    60:c8:a3:51:c4:34:9b:57:37:df:cb:c9:33:57:8b:\n                    eb:fb:76:9f:19:4d:c5:6a:1f:2a:45:ae:2b:ed:2f:\n                    8d:a7:a5:00:cb:04:fa:25:62:2e:74:48:1b:ca:2a:\n                    8c:ba:db:b6:7e:f6:bb:02:7c:a9:c3:db:58:78:a1:\n                    bf:f0:fe:1a:10:55:11:ce:e8:69:4e:96:65:c6:17:\n                    03:d6:07:68:8c:54:82:ae:1c:22:55:3f:f1:f4:09:\n                    97:28:c0:46:f7:4e:0b:25:1d:f7:07:d7:09:1d:3a:\n                    18:57:38:3b:e8:33:06:e7:8f:78:46:1e:5b:f5:06:\n                    b6:ec:b8:a6:0d:f1:ba:13:4b:d6:18:20:dd:69:33:\n                    4a:33:15:ae:b8:c8:98:8a:27:2c:93:bc:2d:fb:ee:\n                    33:bf:66:e6:4d:ba:b6:9b:06:55:60:97:4b:bc:44:\n                    cd:7e:f4:a1:d8:aa:2f:c0:02:28:21:16:62:78:db:\n                    08:54:f2:fc:f4:34:e3:c6:8f:1c:43:57:ce:90:1a:\n                    4b:dc:2e:3b:28:91:89:3f:7a:da:35:1d:8e:2c:ee:\n                    49:ec:f4:33:ad:c9:53:a8:8c:9f:04:53:3e:24:1c:\n                    52:c9:12:f9:62:57:a3:bc:ee:2c:eb:40:7c:20:23:\n                    70:2b:95:f9:73:17:8a:d1:c1:1c:69:a6:b7:38:9a:\n                    67:f7:70:1d:7a:5a:0c:40:cf:62:0f:85:3c:c2:02:\n                    4e:7e:b5:f6:c5:2a:29:84:b3:1f:37:2a:e1:aa:72:\n                    42:c4:ed:6b:1a:8f:92:1c:5d:be:d1:f2:5b:f2:ab:\n                    aa:a9:d2:f5:b8:a4:41:2b:2b:91:6e:12:48:ca:98:\n                    d8:37:8d:c8:ed:00:30:b5:b6:04:4e:7e:9c:da:84:\n                    ec:c0:fa:7b:e5:1d:88:a4:53:46:b0:94:e4:5c:1b:\n                    a1:25:2c:0f:48:52:77:97:09:6c:ec:5b:18:33:83:\n                    02:e5:82:7e:cd:85:21:30:11:fd:27:4f:cf:e4:1e:\n                    ec:3f:a5:57:6c:e9:2a:30:19:2a:88:e5:c3:69:38:\n                    ab:6f:39:71:7f:84:e1:41:c3:e1:cc:2a:89:20:52:\n                    2e:83:0f:6c:39:3f:4b:2d:16:ac:2d:f0:24:ac:00:\n                    73:f4:9b:b3:06:3f:05:b8:14:85:1f:ab:9e:5c:3c:\n                    9e:62:9d:0e:6d:3b:80:09:fc:02:ea:a2:97:74:ca:\n                    c7:f9:e3:56:e1:c3:ca:a5:a6:9a:c0:90:e0:24:12:\n                    53:d2:c2:8b:da:be:ed:02:43:5e:67:e1:89:98:79:\n                    ee:cb:aa:ca:c3:1b:dc:e7:a5:46:a5:7c:6b:16:87:\n                    b6:5a:28:d7:db:27:3c:5e:a5:bd:b6:51:dd:1f:43:\n                    cf:3b:26:c8:3a:8d:25:61:c1:49:f4:3c:1b:c9:44:\n                    ea:af:1c:c2:2b:94:01:2a:0e:30:d1:5b:8b:2b:47:\n                    e5:c3:d1:04:03:9b:0e:39:2c:d6:27:d4:e6:70:5a:\n                    d9:75:cf:2a:d8:c9:00:05:e4:13:88:ec:c3:39:fb:\n                    87:61:30:36:43:03:c8:9e:9c:a2:06:c2:2f:c5:fc:\n                    f0:80:63:b1:54:04:a0:4c:a9:2e:c6:f5:76:7a:d8:\n                    d0:e4:d4:94:11:e5:15:b5:78:06:dc:b8:80:8f:99:\n                    a9:20:33:3d:10:85:4c:65:09:ca:3e:58:5e:60:93:\n                    9a:aa:62:5d:c0:51:06:1c:5d:60:a0:0d:9c:4b:43:\n                    f6:a7:16:21:a4:87:aa:f2:c1:2e:ee:92:30:b8:9e:\n                    df:df:10:01:8b:86:09:70:d8:6c:a8:b7:50:1e:16:\n                    96:b4:f7:67:fd:35:3a:21:90:2a:32:c7:00:7b:4d:\n                    07:10:09:b9:2f:73:d8:18:7e:67:99:04:4f:06:fc:\n                    50:c7:85:9b:9d:40:9d:b3:96:37:fa:a5:dc:b2:72:\n                    4e:ef:4e:09:2c:fd:91:fd:4d:f7:bb:a6:a1:3e:ab:\n                    7b:a2:03:40:a6:a9:55:27:e2:fa:f9:19:ce:87:75:\n                    aa:f1:75:36:f3:f3:b8:91:f8:91:c3:8b:75:13:8e:\n                    4c:65:9a:16:39:6a:e5:34:e8:7a:96:59:7f:35:b0:\n                    00:fd:5b:69:fc:43:26:fa:f5:28:6e:fe:87:d9:7e:\n                    24:fb:b4:a0:82:6e:54:a2:ff:ae:bf:62:b4:f4:72:\n                    01:c2:cb:98:47:98:e1:4c:b5:17:80:80:ce:8f:a6:\n                    28:ee:1e:45:6a:fb:df:f1:1d:fc:5a:3b:d6:ea:f4:\n                    6c:1d:62:49:57:3b:8a:8f:86:ea:f0:53:04:ce:9c:\n                    16:68:ff:ba:b9:fc:88:0f:47:f7:02:44:72:40:b8:\n                    ca:3b:2d:53:9d:dc:3c:56:8c:59:7b:68:1a:2c:8d:\n                    71:bb:6c:00:c7:1a:ce:6f:40:92:b1:a3:2f:0f:d9:\n                    44:f2:a3:70:2e:9e:ee:0e:ae:32:d0:3b:3e:8b:07:\n                    ea:e6:79:b3:5c:29:e2:7d:6b:a8:5e:f9:5a:31:e8:\n                    08:96:a2:8c:03:98:46:f1:b8:7d:90:54:26:ed:76:\n                    62:fe:9e:e9:9a:6e:5e:c9:49:c7:5c:34:53:29:54:\n                    d9:ec:e4:46:e1:80:3b:75:d9:df:fb:79:d5:87:f1:\n                    ba:9e:eb:19:ce:4c:52:73:e6:5b:87:ae:25:4f:39:\n                    79:cc:c6:b8:f9:10:7b:ec:f0:9b:71:a4:05:a0:d3:\n                    29:d3:4e:7f:1f:f4:2d:28:78:cc:55:95:7b:1e:91:\n                    2f:cc:56:18:73:8b:b2:db:bc:69:07:e6:d0:d8:4f:\n                    ed:a2:ff:58:85:a3:6d:e0:4a:53:b7:67:7d:8d:0c:\n                    5c:5b:7b:77:28:02:35:44:7a:04:d3:28:43:c8:6b:\n                    30:17:5d:32:b8:29:35:ba:76:da:3b:14:4a:76:18:\n                    58:a4:f8:92:3c:9e:4d:33:6f:46:6b:08:d9:31:48:\n                    68:dd:f4:fb:24:56:34:b2:cf:69:66:be:48:d2:8a:\n                    66:22:cd:f2:69:cd:c2:53:13:45:29:41:22:d6:5d:\n                    98:1f:b6:a4:b2:a3:c2:ee:02:2f:51:1b:dc:83:a4:\n                    ec:70:25:a8:d4:08:61:32:6f:e4:a1:81:2e:7c:63:\n                    72:fa:29:65:bc:70:44:cf:5d\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        55:9a:34:6a:22:06:69:09:45:33:c7:ae:a9:5c:c7:09:4e:9b:\n        86:bc:41:90:d4:94:52:f6:cd:23:29:94:4b:22:cd:e8:bd:fe:\n        9d:cd:52:f2:bd:ed:ab:87:c9:ab:ab:46:04:b4:bd:a2:3f:22:\n        30:47:50:c0:4b:8c:76:0f:03:f5:92:d2:b1:2d:c4:7a:35:9c:\n        c9:73:87:eb:a6:9f:de:0f:73:8d:d3:7f:99:d8:ba:8f:6f:c4:\n        f3:be:1a:ae:8b:a2:94:36:90:e2:e5:eb:8d:05:f4:fc:65:df:\n        95:f1:c4:94:4d:17:56:d7:9f:3c:8f:50:3c:e7:77:bf:95:86:\n        26:64:fb:6a:ff:c6:da:e9:8c:ae:42:bb:69:e5:33:c6:d8:e9:\n        0d:c6:55:21:49:c1:0c:b4:a3:f9:9b:4b:5c:de:83:4f:41:03:\n        ce:2a:79:68:38:7d:f0:54:49:20:f5:b6:10:ff:08:dc:33:66:\n        96:9b:ff:06:de:00:9e:d7:ce:56:43:9a:51:fc:70:cd:f6:f0:\n        51:a3:b7:cd:b4:5c:85:62:cd:71:b7:c6:2b:23:2b:dd:c3:6e:\n        40:42:fa:37:ff:37:1c:f6:7a:57:94:87:85:23:d7:d4:c9:c7:\n        5f:c1:4d:2f:c9:0d:d7:5c:ec:9c:25:ee:9e:30:82:91:96:72:\n        b8:75:1d:f8:09:68:57:97:b2:2d:4b:ee:25:ec:7a:24:29:ee:\n        72:d4:9c:13:db:ab:dc:03:0a:d8:4a:14:c9:08:57:44:5d:a1:\n        b5:53:80:34:f2:14:97:cf:52:de:a2:0e:8a:10:e9:14:ef:d0:\n        60:be:61:a1:f1:25:5d:d5:18:73:3f:93:10:ca:96:ee:b3:40:\n        d2:db:a3:55:cf:57:5a:a5:0e:4f:75:47:df:ea:f7:90:9a:6d:\n        f5:70:2e:1d:14:1c:37:64:04:59:50:b0:dc:72:86:6f:9c:37:\n        3d:5d:28:af:73:55:ef:d2:ee:24:74:74:13:ef:dc:db:31:49:\n        fb:3f:63:f5:d3:08:3e:33:a5:e7:9d:0a:de:53:2c:51:8e:67:\n        db:9b:41:65:41:50:bd:d4:a4:96:6c:87:bc:12:e0:94:c7:d3:\n        c0:e4:cb:73:58:00:83:e1:ac:27:85:d6:9d:53:9d:5c:bd:0a:\n        3e:03:43:9c:0c:91:f5:6d:7b:f8:40:72:75:ab:11:76:91:2b:\n        e1:c6:aa:1f:70:69:76:70:15:09:fe:93:d0:d6:2d:b7:15:6a:\n        9b:67:5c:b4:69:9f:25:a6:7d:8a:fb:7d:22:a9:71:f2:ce:4e:\n        8c:b8:21:2d:de:fe:41:71:0d:ff:9d:ec:73:a6:bb:07:4f:88:\n        0e:58:47:2e:7e:a9:c2:c7:78:dd:ba:7a:9e:4e:e0:30:4e:63:\n        6f:85:d4:20:41:e9:fa:fe:43:45:e7:fb:af:7a:b2:ce:a4:05:\n        1d:22:9a:58:86:df:e4:ce:4c:a9:fe:d8:16:a5:6f:fb:d8:ce:\n        56:7b:f5:d6:20:ef:e4:47:cd:63:24:ff:b9:be:f1:48:a3:c1:\n        01:72:e6:bd:c0:ad:ed:26:0d:ca:34:9f:fc:02:2d:20:4f:05:\n        20:ae:21:3d:0c:c2:20:3c:3f:f0:04:84:dc:cf:89:fd:b9:25:\n        91:8e:d0:43:e6:b3:20:ab:5c:2d:d5:40:9e:a0:4b:d8:f4:b2:\n        cc:7d:f1:58:0a:8e:87:ed:88:ac:36:96:e4:56:a0:11:8a:f2:\n        9a:d0:b3:57:a3:34:bb:19:ab:38:e1:74:6b:22:c4:31:ce:01:\n        d5:1b:36:e3:1e:38:4c:33:93:df:40:e3:59:57:4e:ac:6e:7b:\n        1e:5a:3d:c5:1d:5b:ac:c8:10:82:35:02:22:b2:fc:75:e8:10:\n        91:8d:c4:7d:78:93:47:9e:1c:9d:ac:6b:62:02:58:8c:d6:1c:\n        23:d6:af:78:c2:80:9c:a4:aa:24:54:14:b5:14:98:c6:f8:2b:\n        1a:24:cb:71:32:0a:e2:9b:0e:69:6b:dd:7e:8c:64:d1:2e:63:\n        ef:0e:7f:b1:3e:88:4c:9d:55:e5:c9:6e:17:04:b7:41:ff:bd:\n        8a:41:cb:25:31:6f:44:77:3f:47:b1:fc:81:88:07:8e:05:49:\n        20:b7:11:d9:69:03:2a:03:9d:b9:33:84:9a:df:df:7a:e3:46:\n        73:a3:d8:a2:8c:53:19:88:55:4c:74:b8:f6:44:84:2b:d1:14:\n        2d:4e:39:2e:92:68:ff:69:fc:85:62:1b:eb:55:4f:ef:25:84:\n        62:45:99:d6:d8:4e:6f:3f:53:08:7d:1d:06:95:81:80:7f:4f:\n        4e:74:36:98:b5:e2:87:70:98:dc:d7:f5:dc:52:15:e6:c6:d6:\n        79:96:39:7f:8f:95:cf:ab:80:53:ad:1b:0b:45:40:0e:d4:18:\n        bd:2c:de:8a:77:76:fd:f2:44:47:c6:21:d0:e4:74:f0:d8:18:\n        05:c8:7c:30:72:c7:df:f1:bb:fc:02:30:a9:f4:42:26:59:0d:\n        93:05:82:a1:73:ed:34:e5:38:5d:cd:50:90:fe:94:fc:13:bc:\n        bd:fc:a8:a2:88:a7:73:c4:b2:a8:d1:5d:88:c4:02:a2:7a:f1:\n        04:c9:fe:8c:74:c9:ef:1d:64:41:9f:ac:1e:96:67:64:ac:ab:\n        28:41:c7:9d:f7:c0:98:1b:6e:07:c2:64:7d:5a:83:66:56:28:\n        36:9c:e7:fb:1c:77:0e:28:a0:c4:f7:6b:79:39:04:20:84:c7:\n        57:93:bc:1b:a0:ea:bc:eb:42:e5:a8:11:fe:fc:ac:65:cc:fd:\n        f8:28:88:f4:a5:9a:e5:73:51:e0:a8:9b:0d:03:77:4e:e5:e0:\n        98:b3:88:da:7d:e6:c6:9e:7c:14:66:c1:2e:53:4a:92:07:37:\n        a0:7e:e9:3d:09:e4:15:7c:cf:fd:b8:41:a5:ef:9e:66:9d:c4:\n        5e:07:1d:87:f8:41:ad:ea:e7:2f:d2:41:63:18:37:f9:14:e3:\n        4d:d0:e5:f7:43:fd:15:e3:f9:36:73:06:26:df:01:4f:a9:c3:\n        4e:de:20:46:77:98:b4:7a:24:2b:3b:75:2b:4e:58:8d:9b:5d:\n        a4:c7:16:a0:bc:32:88:3f:a1:83:f3:00:c8:f8:d8:58:e9:63:\n        5d:4c:2b:b5:f0:72:41:d8:ab:77:37:d6:72:74:ae:b6:36:9c:\n        c8:a6:83:49:4b:e0:c9:56:0b:29:be:00:30:cb:dd:d6:c8:42:\n        8a:00:d9:ec:15:d1:34:71:f2:5b:64:87:f6:27:d2:b7:eb:86:\n        b0:90:bf:29:db:21:9e:36:8c:e3:20:2f:95:23:51:6c:1b:c2:\n        a4:d5:e6:d8:02:43:67:a0:fe:9b:50:03:44:7f:bb:e4:72:d5:\n        d1:e4:da:8f:92:14:64:fb:5d:14:10:12:4a:95:06:c9:65:08:\n        29:ca:21:a3:26:38:11:c9:27:df:70:67:04:fd:ca:48:32:7f:\n        63:b2:45:74:31:50:4f:87:d9:20:70:d2:21:70:b1:d6:10:9d:\n        33:5d:78:83:91:6d:55:82:ec:da:e4:62:63:c7:81:46:d7:19:\n        65:72:2a:43:19:90:b8:d7:23:4d:4c:1c:e0:44:a9:66:67:ac:\n        ee:71:79:27:26:78:6d:72:0e:f5:5d:4b:23:b5:7c:7c:65:e9:\n        17:c6:3a:0b:0d:dd:5e:1e:51:c3:86:b8:ec:7f:c7:27:4a:a5:\n        46:e8:6a:2d:19:c1:87:a3:cb:99:93:87:64:a2:55:14:4c:b7:\n        43:a5:93:d7:e7:d2:4e:79:40:ca:65:99:46:3d:3f:7a:80:7a:\n        88:6a:cc:1e:e5:6b:33:46:f4:50:c0:d5:1f:09:b8:cd:8a:2e:\n        a1:27:eb:5d:73:a7:e8:6b:0a:e5:57:82:2a:b0:fc:e2:54:52:\n        56:f0:ab:a9:12:c6:23:96:07:24:9c:e0:bc:46:a5:b4:20:04:\n        da:09:93:63:e5:d4:2e:c2:7e:c5:31:ed:b5:15:74:86:17:b9:\n        b3:f3:26:8a:1d:02:6a:da:1a:3f:e8:ba:f1:04:6d:94:51:54:\n        e2:5a:b4:59:83:1d:60:d0:2d:73:cc:07:b5:26:8c:f9:d7:c6:\n        88:91:ef:80:cf:5d:0f:a1:60:cb:45:d4:42:22:d1:b1:70:1d:\n        fd:d0:b7:30:90:3a:c6:48:6d:67:e5:32:da:8f:db:e3:a8:e3:\n        1d:20:25:a2:1c:e1:4c:b9:a4:f6:c6:3f:5c:58:0d:bb:c6:b2:\n        77:01:16:91:9f:17:06:0d:b7:40:3e:cc:8f:8e:9c:4b:e0:9d:\n        7e:9b:1e:05:ab:88:22:fa:d3:28:1b:57:14:64:4a:3e:24:2c:\n        38:4d:21:69:00:73:2e:d0:55:2d:74:f2:15:e8:94:43:3e:40:\n        2a:c6:c6:b9:6a:5b:de:a2:cc:18:50:54:5d:4e:2a:85:6c:f6:\n        92:8b:29:19:7e:e7:ea:4a:e0:22:2b:25:bc:f7:66:cf:77:9a:\n        41:74:f2:3c:14:0d:74:69:f5:50:83:cd:cd:2f:21:db:22:46:\n        8a:d0:f7:51:1a:95:57:f2:05:8b:1a:19:ed:3b:45:e8:36:c2:\n        6e:7e:fb:57:22:00:1f:06:53:a9:ae:93:c6:8f:71:2a:31:45:\n        92:e7:8e:6d:e6:99:22:c0:83:fc:ef:dc:57:66:77:4f:a2:36:\n        31:fb:a1:13:8d:e5:ca:a3:95:7d:01:0c:64:70:3b:53:42:68:\n        80:c7:bb:9d:a8:00:35:69:98:0c:a8:67:d8:43:e5:aa:cf:95:\n        e0:51:95:a4:17:3f:42:9d:b8:04:ce:d3:79:79:c8:d3:8a:16:\n        32:92:e0:d7:a2:ee:d7:37:4c:2f:ac:b8:7b:be:45:f6:f1:18:\n        33:9c:7b:37:a6:24:d9:bc:40:ab:00:e9:c3:37:8b:ab:d8:b6:\n        f3:5e:81:4e:b0:14:6b:07:3e:1f:ec:c2:f6:44:22:95:bb:b3:\n        e6:6f:d6:f9:70:65:ba:0a:83:65:aa:0e:13:2f:83:13:23:53:\n        8b:40:16:fa:ce:2f:fc:4d:04:f8:eb:d8:ac:c5:36:c2:15:57:\n        48:38:ec:55:b3:b4:1e:ba:ad:d2:42:06:17:0d:73:c8:57:a6:\n        be:96:4d:a9:f2:c0:fb:7a:21:1c:f5:c9:70:a9:82:90:b5:f1:\n        0c:d4:79:10:be:81:a6:e9:5c:61:9c:77:79:9a:a4:c3:37:26:\n        57:37:c9:52:2c:fa:08:ff:d0:5f:c6:61:c0:f4:76:be:fc:de:\n        4e:cf:ab:51:99:71:c7:df:7e:f4:d6:cf:06:56:19:13:53:0b:\n        6d:74:59:48:19:9b:53:05:2d:9d:32:54:d3:e5:2c:53:8b:64:\n        3e:d4:64:7b:e3:80:09:14:cc:fe:16:46:63:6b:71:69:f8:f9:\n        cb:27:f6:88:54:bc:45:b3:ce:02:c8:94:ee:40:5b:f9:42:02:\n        c2:ff:b0:d8:2c:eb:28:7f:5e:c9:26:01:99:a7\n\nUPS Document Exchange by DST\n============================\nMD5 Fingerprint: 78:A5:FB:10:4B:E4:63:2E:D2:6B:FB:F2:B6:C2:4B:8E\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIID+DCCAuACEQDQHkCLAAACfAAAAAcAAAABMA0GCSqGSIb3DQEBBQUAMIG5MQsw\nCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp\ndHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEeMBwGA1UE\nCxMVVW5pdGVkIFBhcmNlbCBTZXJ2aWNlMRkwFwYDVQQDExBEU1QgKFVQUykgUm9v\ndENBMSEwHwYJKoZIhvcNAQkBFhJjYUBkaWdzaWd0cnVzdC5jb20wHhcNOTgxMjEw\nMDAyNTQ2WhcNMDgxMjA3MDAyNTQ2WjCBuTELMAkGA1UEBhMCdXMxDTALBgNVBAgT\nBFV0YWgxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MSQwIgYDVQQKExtEaWdpdGFs\nIFNpZ25hdHVyZSBUcnVzdCBDby4xHjAcBgNVBAsTFVVuaXRlZCBQYXJjZWwgU2Vy\ndmljZTEZMBcGA1UEAxMQRFNUIChVUFMpIFJvb3RDQTEhMB8GCSqGSIb3DQEJARYS\nY2FAZGlnc2lndHJ1c3QuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\nAQEA7xfsrynm2SsnwNt7JJ9m9ASjwq0KyrDNhCuqN/OAoWDvQo/lXXdfV0JU3Svb\nYbJxXpN7b1/rJCvnpPLr8XOzC431Wdcy36yQjk4xuiVNtgym8eWvDOHlb1IDFcHf\nvn5KpqYYRnA/76dNqNz1dNlhekA8oZQo6sKUiMs3FQUZPJViuhwt+yiM0ciekjxb\nEVQ7eNlHO5stSuY+e2vf9PYFzyj2upg2AJ48N4UKnN63pIXFY/23YhRtFx7MioCF\nQjIRsCHinXfJgBZBnuvlFIl/t8O8T8Gfh5uW7GP2+ZBWDpWjIwqMZNqbuxx3sExd\n5sjo9X15LVckP8zjPSyYzxKfFwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQC7OI4E\nIiZYDiFEVsy9WXwpaMtcD8iGVD+BeKetj8xG9xxUuHktW3IFaugh0OwdHf6kNFG+\n7u3OzJwWaOJddXMIQzGRahArEMJLafjJrZio/bjv9qvwXyHvy4VrCe0vSGa1YHLA\n6KDHmNsO9xtzjTQICnvFd2KqMCObsB6LgJhU3AWHs6liWfyLtxWarETszzUa9w8u\nXZJLAch77qA37eQdgg2ZQUMXrdTVyuP5fReiAdAwD0C53LkEgmmDtvkP+gaS96j0\n1hcc8F5/xCnI5uHi/zZoIVGu/6m6hJKtinsz2JDSwXltMzM5dKwbOHGfLAeQ6h3g\n04lfy+8UjSdUpb1G\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            d0:1e:40:8b:00:00:02:7c:00:00:00:07:00:00:00:01\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=United Parcel Service, CN=DST (UPS) RootCA/Email=ca@digsigtrust.com\n        Validity\n            Not Before: Dec 10 00:25:46 1998 GMT\n            Not After : Dec  7 00:25:46 2008 GMT\n        Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=United Parcel Service, CN=DST (UPS) RootCA/Email=ca@digsigtrust.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:ef:17:ec:af:29:e6:d9:2b:27:c0:db:7b:24:9f:\n                    66:f4:04:a3:c2:ad:0a:ca:b0:cd:84:2b:aa:37:f3:\n                    80:a1:60:ef:42:8f:e5:5d:77:5f:57:42:54:dd:2b:\n                    db:61:b2:71:5e:93:7b:6f:5f:eb:24:2b:e7:a4:f2:\n                    eb:f1:73:b3:0b:8d:f5:59:d7:32:df:ac:90:8e:4e:\n                    31:ba:25:4d:b6:0c:a6:f1:e5:af:0c:e1:e5:6f:52:\n                    03:15:c1:df:be:7e:4a:a6:a6:18:46:70:3f:ef:a7:\n                    4d:a8:dc:f5:74:d9:61:7a:40:3c:a1:94:28:ea:c2:\n                    94:88:cb:37:15:05:19:3c:95:62:ba:1c:2d:fb:28:\n                    8c:d1:c8:9e:92:3c:5b:11:54:3b:78:d9:47:3b:9b:\n                    2d:4a:e6:3e:7b:6b:df:f4:f6:05:cf:28:f6:ba:98:\n                    36:00:9e:3c:37:85:0a:9c:de:b7:a4:85:c5:63:fd:\n                    b7:62:14:6d:17:1e:cc:8a:80:85:42:32:11:b0:21:\n                    e2:9d:77:c9:80:16:41:9e:eb:e5:14:89:7f:b7:c3:\n                    bc:4f:c1:9f:87:9b:96:ec:63:f6:f9:90:56:0e:95:\n                    a3:23:0a:8c:64:da:9b:bb:1c:77:b0:4c:5d:e6:c8:\n                    e8:f5:7d:79:2d:57:24:3f:cc:e3:3d:2c:98:cf:12:\n                    9f:17\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        bb:38:8e:04:22:26:58:0e:21:44:56:cc:bd:59:7c:29:68:cb:\n        5c:0f:c8:86:54:3f:81:78:a7:ad:8f:cc:46:f7:1c:54:b8:79:\n        2d:5b:72:05:6a:e8:21:d0:ec:1d:1d:fe:a4:34:51:be:ee:ed:\n        ce:cc:9c:16:68:e2:5d:75:73:08:43:31:91:6a:10:2b:10:c2:\n        4b:69:f8:c9:ad:98:a8:fd:b8:ef:f6:ab:f0:5f:21:ef:cb:85:\n        6b:09:ed:2f:48:66:b5:60:72:c0:e8:a0:c7:98:db:0e:f7:1b:\n        73:8d:34:08:0a:7b:c5:77:62:aa:30:23:9b:b0:1e:8b:80:98:\n        54:dc:05:87:b3:a9:62:59:fc:8b:b7:15:9a:ac:44:ec:cf:35:\n        1a:f7:0f:2e:5d:92:4b:01:c8:7b:ee:a0:37:ed:e4:1d:82:0d:\n        99:41:43:17:ad:d4:d5:ca:e3:f9:7d:17:a2:01:d0:30:0f:40:\n        b9:dc:b9:04:82:69:83:b6:f9:0f:fa:06:92:f7:a8:f4:d6:17:\n        1c:f0:5e:7f:c4:29:c8:e6:e1:e2:ff:36:68:21:51:ae:ff:a9:\n        ba:84:92:ad:8a:7b:33:d8:90:d2:c1:79:6d:33:33:39:74:ac:\n        1b:38:71:9f:2c:07:90:ea:1d:e0:d3:89:5f:cb:ef:14:8d:27:\n        54:a5:bd:46\n\nValiCert Class 1 VA\n===================\nMD5 Fingerprint: 65:58:AB:15:AD:57:6C:1E:A8:A7:B5:69:AC:BF:FF:EB\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0\nIFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz\nBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y\naXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG\n9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy\nNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y\nazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs\nYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw\nOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl\ncnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y\nLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+\nTunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y\nTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0\nLBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW\nI8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw\nnXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 1 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com\n        Validity\n            Not Before: Jun 25 22:23:48 1999 GMT\n            Not After : Jun 25 22:23:48 2019 GMT\n        Subject: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 1 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:d8:59:82:7a:89:b8:96:ba:a6:2f:68:6f:58:2e:\n                    a7:54:1c:06:6e:f4:ea:8d:48:bc:31:94:17:f0:f3:\n                    4e:bc:b2:b8:35:92:76:b0:d0:a5:a5:01:d7:00:03:\n                    12:22:19:08:f8:ff:11:23:9b:ce:07:f5:bf:69:1a:\n                    26:fe:4e:e9:d1:7f:9d:2c:40:1d:59:68:6e:a6:f8:\n                    58:b0:9d:1a:8f:d3:3f:f1:dc:19:06:81:a8:0e:e0:\n                    3a:dd:c8:53:45:09:06:e6:0f:70:c3:fa:40:a6:0e:\n                    e2:56:05:0f:18:4d:fc:20:82:d1:73:55:74:8d:76:\n                    72:a0:1d:9d:1d:c0:dd:3f:71\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        50:68:3d:49:f4:2c:1c:06:94:df:95:60:7f:96:7b:17:fe:4f:\n        71:ad:64:c8:dd:77:d2:ef:59:55:e8:3f:e8:8e:05:2a:21:f2:\n        07:d2:b5:a7:52:fe:9c:b1:b6:e2:5b:77:17:40:ea:72:d6:23:\n        cb:28:81:32:c3:00:79:18:ec:59:17:89:c9:c6:6a:1e:71:c9:\n        fd:b7:74:a5:25:45:69:c5:48:ab:19:e1:45:8a:25:6b:19:ee:\n        e5:bb:12:f5:7f:f7:a6:8d:51:c3:f0:9d:74:b7:a9:3e:a0:a5:\n        ff:b6:49:03:13:da:22:cc:ed:71:82:2b:99:cf:3a:b7:f5:2d:\n        72:c8\n\nValiCert Class 2 VA\n===================\nMD5 Fingerprint: A9:23:75:9B:BA:49:36:6E:31:C2:DB:F2:E7:66:BA:87\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0\nIFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz\nBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y\naXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG\n9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy\nNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y\nazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs\nYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw\nOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl\ncnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY\ndA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9\nWlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS\nv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v\nUJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu\nIYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC\nW/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com\n        Validity\n            Not Before: Jun 26 00:19:54 1999 GMT\n            Not After : Jun 26 00:19:54 2019 GMT\n        Subject: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:ce:3a:71:ca:e5:ab:c8:59:92:55:d7:ab:d8:74:\n                    0e:f9:ee:d9:f6:55:47:59:65:47:0e:05:55:dc:eb:\n                    98:36:3c:5c:53:5d:d3:30:cf:38:ec:bd:41:89:ed:\n                    25:42:09:24:6b:0a:5e:b3:7c:dd:52:2d:4c:e6:d4:\n                    d6:7d:5a:59:a9:65:d4:49:13:2d:24:4d:1c:50:6f:\n                    b5:c1:85:54:3b:fe:71:e4:d3:5c:42:f9:80:e0:91:\n                    1a:0a:5b:39:36:67:f3:3f:55:7c:1b:3f:b4:5f:64:\n                    73:34:e3:b4:12:bf:87:64:f8:da:12:ff:37:27:c1:\n                    b3:43:bb:ef:7b:6e:2e:69:f7\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        3b:7f:50:6f:6f:50:94:99:49:62:38:38:1f:4b:f8:a5:c8:3e:\n        a7:82:81:f6:2b:c7:e8:c5:ce:e8:3a:10:82:cb:18:00:8e:4d:\n        bd:a8:58:7f:a1:79:00:b5:bb:e9:8d:af:41:d9:0f:34:ee:21:\n        81:19:a0:32:49:28:f4:c4:8e:56:d5:52:33:fd:50:d5:7e:99:\n        6c:03:e4:c9:4c:fc:cb:6c:ab:66:b3:4a:21:8c:e5:b5:0c:32:\n        3e:10:b2:cc:6c:a1:dc:9a:98:4c:02:5b:f3:ce:b9:9e:a5:72:\n        0e:4a:b7:3f:3c:e6:16:68:f8:be:ed:74:4c:bc:5b:d5:62:1f:\n        43:dd\n\nValiCert Class 3 VA\n===================\nMD5 Fingerprint: A2:6F:53:B7:EE:40:DB:4A:68:E7:FA:18:D9:10:4B:72\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0\nIFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz\nBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y\naXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG\n9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy\nNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y\nazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs\nYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw\nOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl\ncnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD\ncnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs\n2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY\nJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE\nZwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ\nn0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A\nPhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 3 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com\n        Validity\n            Not Before: Jun 26 00:22:33 1999 GMT\n            Not After : Jun 26 00:22:33 2019 GMT\n        Subject: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 3 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:e3:98:51:96:1c:e8:d5:b1:06:81:6a:57:c3:72:\n                    75:93:ab:cf:9e:a6:fc:f3:16:52:d6:2d:4d:9f:35:\n                    44:a8:2e:04:4d:07:49:8a:38:29:f5:77:37:e7:b7:\n                    ab:5d:df:36:71:14:99:8f:dc:c2:92:f1:e7:60:92:\n                    97:ec:d8:48:dc:bf:c1:02:20:c6:24:a4:28:4c:30:\n                    5a:76:6d:b1:5c:f3:dd:de:9e:10:71:a1:88:c7:5b:\n                    9b:41:6d:ca:b0:b8:8e:15:ee:ad:33:2b:cf:47:04:\n                    5c:75:71:0a:98:24:98:29:a7:49:59:a5:dd:f8:b7:\n                    43:62:61:f3:d3:e2:d0:55:3f\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        56:bb:02:58:84:67:08:2c:df:1f:db:7b:49:33:f5:d3:67:9d:\n        f4:b4:0a:10:b3:c9:c5:2c:e2:92:6a:71:78:27:f2:70:83:42:\n        d3:3e:cf:a9:54:f4:f1:d8:92:16:8c:d1:04:cb:4b:ab:c9:9f:\n        45:ae:3c:8a:a9:b0:71:33:5d:c8:c5:57:df:af:a8:35:b3:7f:\n        89:87:e9:e8:25:92:b8:7f:85:7a:ae:d6:bc:1e:37:58:2a:67:\n        c9:91:cf:2a:81:3e:ed:c6:39:df:c0:3e:19:9c:19:cc:13:4d:\n        82:41:b5:8c:de:e0:3d:60:08:20:0f:45:7e:6b:a2:7f:a3:8c:\n        15:ee\n\nVeriSign Class 4 Primary CA\n===========================\nMD5 Fingerprint: 1B:D1:AD:17:8B:7F:22:13:24:F5:26:E2:5D:4E:B9:10\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICMTCCAZoCBQKmAAABMA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMRcw\nFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgNCBQdWJsaWMg\nUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NjAxMjkwMDAwMDBa\nFw05OTEyMzEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2ln\nbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZp\nY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0LJ1\n9njQrlpQ9OlQqZ+M1++RlHDo0iSQdomF1t+s5gEXMoDwnZNHvJplnR+Xrr/phnVj\nIIm9gFidBAydqMEk6QvlMXi9/C0MN2qeeIDpRnX57aP7E3vIwUzSo+/1PLBij0pd\nO92VZ48TucE81qcmm+zDO3rZTbxtm+gVAePwR6kCAwEAATANBgkqhkiG9w0BAQIF\nAAOBgQBT3dPwnCR+QKri/AAa19oM/DJhuBUNlvP6Vxt/M3yv6ZiaYch6s7f/sdyZ\ng9ysEvxwyR84Qu1E9oAuW2szaayc01znX1oYx7EteQSWQZGZQbE8DbqEOcY7l/Am\nyY7uvcxClf8exwI/VAx49byqYHwCaejcrOICdmHEPgPq0ook0Q==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            02:a6:00:00:01\n        Signature Algorithm: md2WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority\n        Validity\n            Not Before: Jan 29 00:00:00 1996 GMT\n            Not After : Dec 31 23:59:59 1999 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:d0:b2:75:f6:78:d0:ae:5a:50:f4:e9:50:a9:9f:\n                    8c:d7:ef:91:94:70:e8:d2:24:90:76:89:85:d6:df:\n                    ac:e6:01:17:32:80:f0:9d:93:47:bc:9a:65:9d:1f:\n                    97:ae:bf:e9:86:75:63:20:89:bd:80:58:9d:04:0c:\n                    9d:a8:c1:24:e9:0b:e5:31:78:bd:fc:2d:0c:37:6a:\n                    9e:78:80:e9:46:75:f9:ed:a3:fb:13:7b:c8:c1:4c:\n                    d2:a3:ef:f5:3c:b0:62:8f:4a:5d:3b:dd:95:67:8f:\n                    13:b9:c1:3c:d6:a7:26:9b:ec:c3:3b:7a:d9:4d:bc:\n                    6d:9b:e8:15:01:e3:f0:47:a9\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md2WithRSAEncryption\n        53:dd:d3:f0:9c:24:7e:40:aa:e2:fc:00:1a:d7:da:0c:fc:32:\n        61:b8:15:0d:96:f3:fa:57:1b:7f:33:7c:af:e9:98:9a:61:c8:\n        7a:b3:b7:ff:b1:dc:99:83:dc:ac:12:fc:70:c9:1f:38:42:ed:\n        44:f6:80:2e:5b:6b:33:69:ac:9c:d3:5c:e7:5f:5a:18:c7:b1:\n        2d:79:04:96:41:91:99:41:b1:3c:0d:ba:84:39:c6:3b:97:f0:\n        26:c9:8e:ee:bd:cc:42:95:ff:1e:c7:02:3f:54:0c:78:f5:bc:\n        aa:60:7c:02:69:e8:dc:ac:e2:02:76:61:c4:3e:03:ea:d2:8a:\n        24:d1\n\nVerisign Class 1 Public Primary Certification Authority\n=======================================================\nMD5 Fingerprint: 97:60:E8:57:5F:D3:50:47:E5:43:0C:94:36:8A:B0:62\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ\nBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh\nc3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05\nNjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD\nVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp\nbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB\njQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N\nH8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR\n4k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN\nBgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo\nEWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5\nFvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx\nlA==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            cd:ba:7f:56:f0:df:e4:bc:54:fe:22:ac:b3:72:aa:55\n        Signature Algorithm: md2WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority\n        Validity\n            Not Before: Jan 29 00:00:00 1996 GMT\n            Not After : Aug  1 23:59:59 2028 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:e5:19:bf:6d:a3:56:61:2d:99:48:71:f6:67:de:\n                    b9:8d:eb:b7:9e:86:80:0a:91:0e:fa:38:25:af:46:\n                    88:82:e5:73:a8:a0:9b:24:5d:0d:1f:cc:65:6e:0c:\n                    b0:d0:56:84:18:87:9a:06:9b:10:a1:73:df:b4:58:\n                    39:6b:6e:c1:f6:15:d5:a8:a8:3f:aa:12:06:8d:31:\n                    ac:7f:b0:34:d7:8f:34:67:88:09:cd:14:11:e2:4e:\n                    45:56:69:1f:78:02:80:da:dc:47:91:29:bb:36:c9:\n                    63:5c:c5:e0:d7:2d:87:7b:a1:b7:32:b0:7b:30:ba:\n                    2a:2f:31:aa:ee:a3:67:da:db\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md2WithRSAEncryption\n        4c:3f:b8:8b:c6:68:df:ee:43:33:0e:5d:e9:a6:cb:07:84:4d:\n        7a:33:ff:92:1b:f4:36:ad:d8:95:22:36:68:11:6c:7c:42:cc:\n        f3:9c:2e:c4:07:3f:14:b0:0f:4f:ff:90:92:76:f9:e2:bc:4a:\n        e9:8f:cd:a0:80:0a:f7:c5:29:f1:82:22:5d:b8:b1:dd:81:23:\n        a3:7b:25:15:46:30:79:16:f8:ea:05:4b:94:7f:1d:c2:1c:c8:\n        e3:b7:f4:10:40:3c:13:c3:5f:1f:53:e8:48:e4:86:b4:7b:a1:\n        35:b0:7b:25:ba:b8:d3:8e:ab:3f:38:9d:00:34:00:98:f3:d1:\n        71:94\n\nVerisign Class 1 Public Primary Certification Authority - G2\n============================================================\nMD5 Fingerprint: F2:7D:E9:54:E4:A3:22:0D:76:9F:E7:0B:BB:B3:24:2B\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDAjCCAmsCEDnKVIn+UCIy/jLZ2/sbhBkwDQYJKoZIhvcNAQEFBQAwgcExCzAJ\nBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh\nc3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy\nMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp\nemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X\nDTk4MDUxODAwMDAwMFoXDTE4MDUxODIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw\nFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg\nUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo\nYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5\nMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB\nAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK\nVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm\nFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID\nAQABMA0GCSqGSIb3DQEBBQUAA4GBAIv3GhDOdlwHq4OZ3BeAbzQ5XZg+a3Is4cei\ne0ApuXiIukzFo2penm574/ICQQxmvq37rqIUzpLzojSLtLK2JPLl1eDI5WJthHvL\nvrsDi3xXyvA3qZCviu4Dvh0onNkmdqDNxJ1O8K4HFtW+r1cIatCgQkJCHvQgzKV4\ngpUmOIpH\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            39:ca:54:89:fe:50:22:32:fe:32:d9:db:fb:1b:84:19\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network\n        Validity\n            Not Before: May 18 00:00:00 1998 GMT\n            Not After : May 18 23:59:59 2018 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:aa:d0:ba:be:16:2d:b8:83:d4:ca:d2:0f:bc:76:\n                    31:ca:94:d8:1d:93:8c:56:02:bc:d9:6f:1a:6f:52:\n                    36:6e:75:56:0a:55:d3:df:43:87:21:11:65:8a:7e:\n                    8f:bd:21:de:6b:32:3f:1b:84:34:95:05:9d:41:35:\n                    eb:92:eb:96:dd:aa:59:3f:01:53:6d:99:4f:ed:e5:\n                    e2:2a:5a:90:c1:b9:c4:a6:15:cf:c8:45:eb:a6:5d:\n                    8e:9c:3e:f0:64:24:76:a5:cd:ab:1a:6f:b6:d8:7b:\n                    51:61:6e:a6:7f:87:c8:e2:b7:e5:34:dc:41:88:ea:\n                    09:40:be:73:92:3d:6b:e7:75\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        8b:f7:1a:10:ce:76:5c:07:ab:83:99:dc:17:80:6f:34:39:5d:\n        98:3e:6b:72:2c:e1:c7:a2:7b:40:29:b9:78:88:ba:4c:c5:a3:\n        6a:5e:9e:6e:7b:e3:f2:02:41:0c:66:be:ad:fb:ae:a2:14:ce:\n        92:f3:a2:34:8b:b4:b2:b6:24:f2:e5:d5:e0:c8:e5:62:6d:84:\n        7b:cb:be:bb:03:8b:7c:57:ca:f0:37:a9:90:af:8a:ee:03:be:\n        1d:28:9c:d9:26:76:a0:cd:c4:9d:4e:f0:ae:07:16:d5:be:af:\n        57:08:6a:d0:a0:42:42:42:1e:f4:20:cc:a5:78:82:95:26:38:\n        8a:47\n\nVerisign Class 1 Public Primary Certification Authority - G3\n============================================================\nMD5 Fingerprint: B1:47:BC:18:57:D1:18:A0:78:2D:EC:71:E8:2A:95:73\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw\nCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl\ncmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu\nLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT\naWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD\nVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT\naWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ\nbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu\nIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg\nLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4\nnN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO\n8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV\nojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb\nPG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2\n6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr\nn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a\nqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4\nwTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3\nns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs\npSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4\nE1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            8b:5b:75:56:84:54:85:0b:00:cf:af:38:48:ce:b1:a4\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 1 Public Primary Certification Authority - G3\n        Validity\n            Not Before: Oct  1 00:00:00 1999 GMT\n            Not After : Jul 16 23:59:59 2036 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 1 Public Primary Certification Authority - G3\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:dd:84:d4:b9:b4:f9:a7:d8:f3:04:78:9c:de:3d:\n                    dc:6c:13:16:d9:7a:dd:24:51:66:c0:c7:26:59:0d:\n                    ac:06:08:c2:94:d1:33:1f:f0:83:35:1f:6e:1b:c8:\n                    de:aa:6e:15:4e:54:27:ef:c4:6d:1a:ec:0b:e3:0e:\n                    f0:44:a5:57:c7:40:58:1e:a3:47:1f:71:ec:60:f6:\n                    6d:94:c8:18:39:ed:fe:42:18:56:df:e4:4c:49:10:\n                    78:4e:01:76:35:63:12:36:dd:66:bc:01:04:36:a3:\n                    55:68:d5:a2:36:09:ac:ab:21:26:54:06:ad:3f:ca:\n                    14:e0:ac:ca:ad:06:1d:95:e2:f8:9d:f1:e0:60:ff:\n                    c2:7f:75:2b:4c:cc:da:fe:87:99:21:ea:ba:fe:3e:\n                    54:d7:d2:59:78:db:3c:6e:cf:a0:13:00:1a:b8:27:\n                    a1:e4:be:67:96:ca:a0:c5:b3:9c:dd:c9:75:9e:eb:\n                    30:9a:5f:a3:cd:d9:ae:78:19:3f:23:e9:5c:db:29:\n                    bd:ad:55:c8:1b:54:8c:63:f6:e8:a6:ea:c7:37:12:\n                    5c:a3:29:1e:02:d9:db:1f:3b:b4:d7:0f:56:47:81:\n                    15:04:4a:af:83:27:d1:c5:58:88:c1:dd:f6:aa:a7:\n                    a3:18:da:68:aa:6d:11:51:e1:bf:65:6b:9f:96:76:\n                    d1:3d\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        ab:66:8d:d7:b3:ba:c7:9a:b6:e6:55:d0:05:f1:9f:31:8d:5a:\n        aa:d9:aa:46:26:0f:71:ed:a5:ad:53:56:62:01:47:2a:44:e9:\n        fe:3f:74:0b:13:9b:b9:f4:4d:1b:b2:d1:5f:b2:b6:d2:88:5c:\n        b3:9f:cd:cb:d4:a7:d9:60:95:84:3a:f8:c1:37:1d:61:ca:e7:\n        b0:c5:e5:91:da:54:a6:ac:31:81:ae:97:de:cd:08:ac:b8:c0:\n        97:80:7f:6e:72:a4:e7:69:13:95:65:1f:c4:93:3c:fd:79:8f:\n        04:d4:3e:4f:ea:f7:9e:ce:cd:67:7c:4f:65:02:ff:91:85:54:\n        73:c7:ff:36:f7:86:2d:ec:d0:5e:4f:ff:11:9f:72:06:d6:b8:\n        1a:f1:4c:0d:26:65:e2:44:80:1e:c7:9f:e3:dd:e8:0a:da:ec:\n        a5:20:80:69:68:a1:4f:7e:e1:6b:cf:07:41:fa:83:8e:bc:38:\n        dd:b0:2e:11:b1:6b:b2:42:cc:9a:bc:f9:48:22:79:4a:19:0f:\n        b2:1c:3e:20:74:d9:6a:c3:be:f2:28:78:13:56:79:4f:6d:50:\n        ea:1b:b0:b5:57:b1:37:66:58:23:f3:dc:0f:df:0a:87:c4:ef:\n        86:05:d5:38:14:60:99:a3:4b:de:06:96:71:2c:f2:db:b6:1f:\n        a4:ef:3f:ee\n\nVerisign Class 2 Public Primary Certification Authority\n=======================================================\nMD5 Fingerprint: B3:9C:25:B1:C3:2E:32:53:80:15:30:9D:4D:02:77:3E\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG\nA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\ncyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\nMDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\nBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt\nYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\nADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh\nYGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7\nFYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G\nCSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg\nJ8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc\nr6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            2d:1b:fc:4a:17:8d:a3:91:eb:e7:ff:f5:8b:45:be:0b\n        Signature Algorithm: md2WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority\n        Validity\n            Not Before: Jan 29 00:00:00 1996 GMT\n            Not After : Aug  1 23:59:59 2028 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:b6:5a:8b:a3:0d:6a:23:83:80:6b:cf:39:87:f4:\n                    21:13:33:06:4c:25:a2:ed:55:12:97:c5:a7:80:b9:\n                    fa:83:c1:20:a0:fa:2f:15:0d:7c:a1:60:6b:7e:79:\n                    2c:fa:06:0f:3a:ae:f6:1b:6f:b1:d2:ff:2f:28:52:\n                    5f:83:7d:4b:c4:7a:b7:f8:66:1f:80:54:fc:b7:c2:\n                    8e:59:4a:14:57:46:d1:9a:93:be:41:91:03:bb:15:\n                    80:93:5c:eb:e7:cc:08:6c:3f:3e:b3:4a:fc:ff:4b:\n                    6c:23:d5:50:82:26:44:19:8e:23:c3:71:ea:19:24:\n                    47:04:9e:75:bf:c8:a6:00:1f\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md2WithRSAEncryption\n        8a:1b:2b:fa:39:c1:74:d7:5e:d8:19:64:a2:58:4a:2d:37:e0:\n        33:47:0f:ac:ed:f7:aa:db:1e:e4:8b:06:5c:60:27:ca:45:52:\n        ce:16:ef:3f:06:64:e7:94:68:7c:60:33:15:11:69:af:9d:62:\n        8d:a3:03:54:6b:a6:be:e5:ee:05:18:60:04:bf:42:80:fd:d0:\n        a8:a8:1e:01:3b:f7:a3:5c:af:a3:dc:e6:26:80:23:3c:b8:44:\n        74:f7:0a:ae:49:8b:61:78:cc:24:bf:88:8a:a7:0e:ea:73:19:\n        41:fd:4d:03:f0:88:d1:e5:78:8d:a5:2a:4f:f6:97:0d:17:77:\n        ca:d8\n\nVerisign Class 2 Public Primary Certification Authority - G2\n============================================================\nMD5 Fingerprint: 2D:BB:E5:25:D3:D1:65:82:3A:B7:0E:FA:E6:EB:E2:E1\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw\nCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns\nYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH\nMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y\naXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe\nFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX\nMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj\nIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx\nKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s\neTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B\nAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM\nHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw\nDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC\nAwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji\nnb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX\nrXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn\njBJ7xUS0rg==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            b9:2f:60:cc:88:9f:a1:7a:46:09:b8:5b:70:6c:8a:af\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network\n        Validity\n            Not Before: May 18 00:00:00 1998 GMT\n            Not After : Aug  1 23:59:59 2028 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:a7:88:01:21:74:2c:e7:1a:03:f0:98:e1:97:3c:\n                    0f:21:08:f1:9c:db:97:e9:9a:fc:c2:04:06:13:be:\n                    5f:52:c8:cc:1e:2c:12:56:2c:b8:01:69:2c:cc:99:\n                    1f:ad:b0:96:ae:79:04:f2:13:39:c1:7b:98:ba:08:\n                    2c:e8:c2:84:13:2c:aa:69:e9:09:f4:c7:a9:02:a4:\n                    42:c2:23:4f:4a:d8:f0:0e:a2:fb:31:6c:c9:e6:6f:\n                    99:27:07:f5:e6:f4:4c:78:9e:6d:eb:46:86:fa:b9:\n                    86:c9:54:f2:b2:c4:af:d4:46:1c:5a:c9:15:30:ff:\n                    0d:6c:f5:2d:0e:6d:ce:7f:77\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        72:2e:f9:7f:d1:f1:71:fb:c4:9e:f6:c5:5e:51:8a:40:98:b8:\n        68:f8:9b:1c:83:d8:e2:9d:bd:ff:ed:a1:e6:66:ea:2f:09:f4:\n        ca:d7:ea:a5:2b:95:f6:24:60:86:4d:44:2e:83:a5:c4:2d:a0:\n        d3:ae:78:69:6f:72:da:6c:ae:08:f0:63:92:37:e6:bb:c4:30:\n        17:ad:77:cc:49:35:aa:cf:d8:8f:d1:be:b7:18:96:47:73:6a:\n        54:22:34:64:2d:b6:16:9b:59:5b:b4:51:59:3a:b3:0b:14:f4:\n        12:df:67:a0:f4:ad:32:64:5e:b1:46:72:27:8c:12:7b:c5:44:\n        b4:ae\n\nVerisign Class 2 Public Primary Certification Authority - G3\n============================================================\nMD5 Fingerprint: F8:BE:C4:63:22:C9:A8:46:74:8B:B8:1D:1E:4A:2B:F6\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ\nBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy\naVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s\nIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp\nZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0\neSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV\nBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp\nZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu\nYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g\nQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt\nIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU\nJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO\nJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY\nwZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o\nkoqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN\nqWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E\nSrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe\nxbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u\n7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU\nsQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI\nsH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP\ncjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            61:70:cb:49:8c:5f:98:45:29:e7:b0:a6:d9:50:5b:7a\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 2 Public Primary Certification Authority - G3\n        Validity\n            Not Before: Oct  1 00:00:00 1999 GMT\n            Not After : Jul 16 23:59:59 2036 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 2 Public Primary Certification Authority - G3\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:af:0a:0d:c2:d5:2c:db:67:b9:2d:e5:94:27:dd:\n                    a5:be:e0:b0:4d:8f:b3:61:56:3c:d6:7c:c3:f4:cd:\n                    3e:86:cb:a2:88:e2:e1:d8:a4:69:c5:b5:e2:bf:c1:\n                    a6:47:50:5e:46:39:8b:d5:96:ba:b5:6f:14:bf:10:\n                    ce:27:13:9e:05:47:9b:31:7a:13:d8:1f:d9:d3:02:\n                    37:8b:ad:2c:47:f0:8e:81:06:a7:0d:30:0c:eb:f7:\n                    3c:0f:20:1d:dc:72:46:ee:a5:02:c8:5b:c3:c9:56:\n                    69:4c:c5:18:c1:91:7b:0b:d5:13:00:9b:bc:ef:c3:\n                    48:3e:46:60:20:85:2a:d5:90:b6:cd:8b:a0:cc:32:\n                    dd:b7:fd:40:55:b2:50:1c:56:ae:cc:8d:77:4d:c7:\n                    20:4d:a7:31:76:ef:68:92:8a:90:1e:08:81:56:b2:\n                    ad:69:a3:52:d0:cb:1c:c4:23:3d:1f:99:fe:4c:e8:\n                    16:63:8e:c6:08:8e:f6:31:f6:d2:fa:e5:76:dd:b5:\n                    1c:92:a3:49:cd:cd:01:cd:68:cd:a9:69:ba:a3:eb:\n                    1d:0d:9c:a4:20:a6:c1:a0:c5:d1:46:4c:17:6d:d2:\n                    ac:66:3f:96:8c:e0:84:d4:36:ff:22:59:c5:f9:11:\n                    60:a8:5f:04:7d:f2:1a:f6:25:42:61:0f:c4:4a:b8:\n                    3e:89\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        34:26:15:3c:c0:8d:4d:43:49:1d:bd:e9:21:92:d7:66:9c:b7:\n        de:c5:b8:d0:e4:5d:5f:76:22:c0:26:f9:84:3a:3a:f9:8c:b5:\n        fb:ec:60:f1:e8:ce:04:b0:c8:dd:a7:03:8f:30:f3:98:df:a4:\n        e6:a4:31:df:d3:1c:0b:46:dc:72:20:3f:ae:ee:05:3c:a4:33:\n        3f:0b:39:ac:70:78:73:4b:99:2b:df:30:c2:54:b0:a8:3b:55:\n        a1:fe:16:28:cd:42:bd:74:6e:80:db:27:44:a7:ce:44:5d:d4:\n        1b:90:98:0d:1e:42:94:b1:00:2c:04:d0:74:a3:02:05:22:63:\n        63:cd:83:b5:fb:c1:6d:62:6b:69:75:fd:5d:70:41:b9:f5:bf:\n        7c:df:be:c1:32:73:22:21:8b:58:81:7b:15:91:7a:ba:e3:64:\n        48:b0:7f:fb:36:25:da:95:d0:f1:24:14:17:dd:18:80:6b:46:\n        23:39:54:f5:8e:62:09:04:1d:94:90:a6:9b:e6:25:e2:42:45:\n        aa:b8:90:ad:be:08:8f:a9:0b:42:18:94:cf:72:39:e1:b1:43:\n        e0:28:cf:b7:e7:5a:6c:13:6b:49:b3:ff:e3:18:7c:89:8b:33:\n        5d:ac:33:d7:a7:f9:da:3a:55:c9:58:10:f9:aa:ef:5a:b6:cf:\n        4b:4b:df:2a\n\nVerisign Class 3 Public Primary Certification Authority\n=======================================================\nMD5 Fingerprint: 10:FC:63:5D:F6:26:3E:0D:F3:25:BE:5F:79:CD:67:67\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG\nA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz\ncyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2\nMDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV\nBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt\nYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN\nADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE\nBarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is\nI19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G\nCSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do\nlbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc\nAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf\n        Signature Algorithm: md2WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority\n        Validity\n            Not Before: Jan 29 00:00:00 1996 GMT\n            Not After : Aug  1 23:59:59 2028 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:c9:5c:59:9e:f2:1b:8a:01:14:b4:10:df:04:40:\n                    db:e3:57:af:6a:45:40:8f:84:0c:0b:d1:33:d9:d9:\n                    11:cf:ee:02:58:1f:25:f7:2a:a8:44:05:aa:ec:03:\n                    1f:78:7f:9e:93:b9:9a:00:aa:23:7d:d6:ac:85:a2:\n                    63:45:c7:72:27:cc:f4:4c:c6:75:71:d2:39:ef:4f:\n                    42:f0:75:df:0a:90:c6:8e:20:6f:98:0f:f8:ac:23:\n                    5f:70:29:36:a4:c9:86:e7:b1:9a:20:cb:53:a5:85:\n                    e7:3d:be:7d:9a:fe:24:45:33:dc:76:15:ed:0f:a2:\n                    71:64:4c:65:2e:81:68:45:a7\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md2WithRSAEncryption\n        bb:4c:12:2b:cf:2c:26:00:4f:14:13:dd:a6:fb:fc:0a:11:84:\n        8c:f3:28:1c:67:92:2f:7c:b6:c5:fa:df:f0:e8:95:bc:1d:8f:\n        6c:2c:a8:51:cc:73:d8:a4:c0:53:f0:4e:d6:26:c0:76:01:57:\n        81:92:5e:21:f1:d1:b1:ff:e7:d0:21:58:cd:69:17:e3:44:1c:\n        9c:19:44:39:89:5c:dc:9c:00:0f:56:8d:02:99:ed:a2:90:45:\n        4c:e4:bb:10:a4:3d:f0:32:03:0e:f1:ce:f8:e8:c9:51:8c:e6:\n        62:9f:e6:9f:c0:7d:b7:72:9c:c9:36:3a:6b:9f:4e:a8:ff:64:\n        0d:64\n\nVerisign Class 3 Public Primary Certification Authority - G2\n============================================================\nMD5 Fingerprint: A2:33:9B:4C:74:78:73:D4:6C:E7:C1:F3:8D:CB:5C:E9\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ\nBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh\nc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy\nMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp\nemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X\nDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw\nFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg\nUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo\nYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5\nMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB\nAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4\npO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0\n13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID\nAQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk\nU01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i\nF6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY\noJ2daZH9\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            7d:d9:fe:07:cf:a8:1e:b7:10:79:67:fb:a7:89:34:c6\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network\n        Validity\n            Not Before: May 18 00:00:00 1998 GMT\n            Not After : Aug  1 23:59:59 2028 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:cc:5e:d1:11:5d:5c:69:d0:ab:d3:b9:6a:4c:99:\n                    1f:59:98:30:8e:16:85:20:46:6d:47:3f:d4:85:20:\n                    84:e1:6d:b3:f8:a4:ed:0c:f1:17:0f:3b:f9:a7:f9:\n                    25:d7:c1:cf:84:63:f2:7c:63:cf:a2:47:f2:c6:5b:\n                    33:8e:64:40:04:68:c1:80:b9:64:1c:45:77:c7:d8:\n                    6e:f5:95:29:3c:50:e8:34:d7:78:1f:a8:ba:6d:43:\n                    91:95:8f:45:57:5e:7e:c5:fb:ca:a4:04:eb:ea:97:\n                    37:54:30:6f:bb:01:47:32:33:cd:dc:57:9b:64:69:\n                    61:f8:9b:1d:1c:89:4f:5c:67\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        51:4d:cd:be:5c:cb:98:19:9c:15:b2:01:39:78:2e:4d:0f:67:\n        70:70:99:c6:10:5a:94:a4:53:4d:54:6d:2b:af:0d:5d:40:8b:\n        64:d3:d7:ee:de:56:61:92:5f:a6:c4:1d:10:61:36:d3:2c:27:\n        3c:e8:29:09:b9:11:64:74:cc:b5:73:9f:1c:48:a9:bc:61:01:\n        ee:e2:17:a6:0c:e3:40:08:3b:0e:e7:eb:44:73:2a:9a:f1:69:\n        92:ef:71:14:c3:39:ac:71:a7:91:09:6f:e4:71:06:b3:ba:59:\n        57:26:79:00:f6:f8:0d:a2:33:30:28:d4:aa:58:a0:9d:9d:69:\n        91:fd\n\nVerisign Class 3 Public Primary Certification Authority - G3\n============================================================\nMD5 Fingerprint: CD:68:B6:A7:C7:C4:CE:75:E0:1D:4F:57:44:61:92:09\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw\nCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl\ncmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu\nLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT\naWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD\nVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT\naWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ\nbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu\nIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg\nLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b\nN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t\nKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu\nkxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm\nCC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ\nXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu\nimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te\n2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe\nDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC\n/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p\nF4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt\nTxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            9b:7e:06:49:a3:3e:62:b9:d5:ee:90:48:71:29:ef:57\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G3\n        Validity\n            Not Before: Oct  1 00:00:00 1999 GMT\n            Not After : Jul 16 23:59:59 2036 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G3\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:cb:ba:9c:52:fc:78:1f:1a:1e:6f:1b:37:73:bd:\n                    f8:c9:6b:94:12:30:4f:f0:36:47:f5:d0:91:0a:f5:\n                    17:c8:a5:61:c1:16:40:4d:fb:8a:61:90:e5:76:20:\n                    c1:11:06:7d:ab:2c:6e:a6:f5:11:41:8e:fa:2d:ad:\n                    2a:61:59:a4:67:26:4c:d0:e8:bc:52:5b:70:20:04:\n                    58:d1:7a:c9:a4:69:bc:83:17:64:ad:05:8b:bc:d0:\n                    58:ce:8d:8c:f5:eb:f0:42:49:0b:9d:97:27:67:32:\n                    6e:e1:ae:93:15:1c:70:bc:20:4d:2f:18:de:92:88:\n                    e8:6c:85:57:11:1a:e9:7e:e3:26:11:54:a2:45:96:\n                    55:83:ca:30:89:e8:dc:d8:a3:ed:2a:80:3f:7f:79:\n                    65:57:3e:15:20:66:08:2f:95:93:bf:aa:47:2f:a8:\n                    46:97:f0:12:e2:fe:c2:0a:2b:51:e6:76:e6:b7:46:\n                    b7:e2:0d:a6:cc:a8:c3:4c:59:55:89:e6:e8:53:5c:\n                    1c:ea:9d:f0:62:16:0b:a7:c9:5f:0c:f0:de:c2:76:\n                    ce:af:f7:6a:f2:fa:41:a6:a2:33:14:c9:e5:7a:63:\n                    d3:9e:62:37:d5:85:65:9e:0e:e6:53:24:74:1b:5e:\n                    1d:12:53:5b:c7:2c:e7:83:49:3b:15:ae:8a:68:b9:\n                    57:97\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        11:14:96:c1:ab:92:08:f7:3f:2f:c9:b2:fe:e4:5a:9f:64:de:\n        db:21:4f:86:99:34:76:36:57:dd:d0:15:2f:c5:ad:7f:15:1f:\n        37:62:73:3e:d4:e7:5f:ce:17:03:db:35:fa:2b:db:ae:60:09:\n        5f:1e:5f:8f:6e:bb:0b:3d:ea:5a:13:1e:0c:60:6f:b5:c0:b5:\n        23:22:2e:07:0b:cb:a9:74:cb:47:bb:1d:c1:d7:a5:6b:cc:2f:\n        d2:42:fd:49:dd:a7:89:cf:53:ba:da:00:5a:28:bf:82:df:f8:\n        ba:13:1d:50:86:82:fd:8e:30:8f:29:46:b0:1e:3d:35:da:38:\n        62:16:18:4a:ad:e6:b6:51:6c:de:af:62:eb:01:d0:1e:24:fe:\n        7a:8f:12:1a:12:68:b8:fb:66:99:14:14:45:5c:ae:e7:ae:69:\n        17:81:2b:5a:37:c9:5e:2a:f4:c6:e2:a1:5c:54:9b:a6:54:00:\n        cf:f0:f1:c1:c7:98:30:1a:3b:36:16:db:a3:6e:ea:fd:ad:b2:\n        c2:da:ef:02:47:13:8a:c0:f1:b3:31:ad:4f:1c:e1:4f:9c:af:\n        0f:0c:9d:f7:78:0d:d8:f4:35:56:80:da:b7:6d:17:8f:9d:1e:\n        81:64:e1:fe:c5:45:ba:ad:6b:b9:0a:7a:4e:4f:4b:84:ee:4b:\n        f1:7d:dd:11\n\nVerisign Class 4 Public Primary Certification Authority - G2\n============================================================\nMD5 Fingerprint: 26:6D:2C:19:98:B6:70:68:38:50:54:19:EC:90:34:60\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJ\nBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh\nc3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy\nMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp\nemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X\nDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw\nFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMg\nUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo\nYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5\nMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB\nAQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4xBewRNzjMHPVKmIquNDM\nHO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDHqGKB3FtK\nqsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwID\nAQABMA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwj\ncSGIL4LcY/oCRaxFWdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0y\ncyfYaT5DdPauxYma51N86Xv2S/PBZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRP\nT8qAkbYp\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            32:88:8e:9a:d2:f5:eb:13:47:f8:7f:c4:20:37:25:f8\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network\n        Validity\n            Not Before: May 18 00:00:00 1998 GMT\n            Not After : Aug  1 23:59:59 2028 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1024 bit)\n                Modulus (1024 bit):\n                    00:ba:f0:e4:cf:f9:c4:ae:85:54:b9:07:57:f9:8f:\n                    c5:7f:68:11:f8:c4:17:b0:44:dc:e3:30:73:d5:2a:\n                    62:2a:b8:d0:cc:1c:ed:28:5b:7e:bd:6a:dc:b3:91:\n                    24:ca:41:62:3c:fc:02:01:bf:1c:16:31:94:05:97:\n                    76:6e:a2:ad:bd:61:17:6c:4e:30:86:f0:51:37:2a:\n                    50:c7:a8:62:81:dc:5b:4a:aa:c1:a0:b4:6e:eb:2f:\n                    e5:57:c5:b1:2b:40:70:db:5a:4d:a1:8e:1f:bd:03:\n                    1f:d8:03:d4:8f:4c:99:71:bc:e2:82:cc:58:e8:98:\n                    3a:86:d3:86:38:f3:00:29:1f\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        85:8c:12:c1:a7:b9:50:15:7a:cb:3e:ac:b8:43:8a:dc:aa:dd:\n        14:ba:89:81:7e:01:3c:23:71:21:88:2f:82:dc:63:fa:02:45:\n        ac:45:59:d7:2a:58:44:5b:b7:9f:81:3b:92:68:3d:e2:37:24:\n        f5:7b:6c:8f:76:35:96:09:a8:59:9d:b9:ce:23:ab:74:d6:83:\n        fd:32:73:27:d8:69:3e:43:74:f6:ae:c5:89:9a:e7:53:7c:e9:\n        7b:f6:4b:f3:c1:65:83:de:8d:8a:9c:3c:88:8d:39:59:fc:aa:\n        3f:22:8d:a1:c1:66:50:81:72:4c:ed:22:64:4f:4f:ca:80:91:\n        b6:29\n\nVerisign Class 4 Public Primary Certification Authority - G3\n============================================================\nMD5 Fingerprint: DB:C8:F2:27:2E:B1:EA:6A:29:23:5D:FE:56:3E:33:DF\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw\nCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl\ncmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu\nLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT\naWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD\nVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT\naWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ\nbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu\nIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg\nLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1\nGQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ\n+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd\nU6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm\nNxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY\nufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/\nky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1\nCtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq\ng6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm\nfjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c\n2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/\nbLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            ec:a0:a7:8b:6e:75:6a:01:cf:c4:7c:cc:2f:94:5e:d7\n        Signature Algorithm: sha1WithRSAEncryption\n        Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 4 Public Primary Certification Authority - G3\n        Validity\n            Not Before: Oct  1 00:00:00 1999 GMT\n            Not After : Jul 16 23:59:59 2036 GMT\n        Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 4 Public Primary Certification Authority - G3\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (2048 bit)\n                Modulus (2048 bit):\n                    00:ad:cb:a5:11:69:c6:59:ab:f1:8f:b5:19:0f:56:\n                    ce:cc:b5:1f:20:e4:9e:26:25:4b:e0:73:65:89:59:\n                    de:d0:83:e4:f5:0f:b5:bb:ad:f1:7c:e8:21:fc:e4:\n                    e8:0c:ee:7c:45:22:19:76:92:b4:13:b7:20:5b:09:\n                    fa:61:ae:a8:f2:a5:8d:85:c2:2a:d6:de:66:36:d2:\n                    9b:02:f4:a8:92:60:7c:9c:69:b4:8f:24:1e:d0:86:\n                    52:f6:32:9c:41:58:1e:22:bd:cd:45:62:95:08:6e:\n                    d0:66:dd:53:a2:cc:f0:10:dc:54:73:8b:04:a1:46:\n                    33:33:5c:17:40:b9:9e:4d:d3:f3:be:55:83:e8:b1:\n                    89:8e:5a:7c:9a:96:22:90:3b:88:25:f2:d2:53:88:\n                    02:0c:0b:78:f2:e6:37:17:4b:30:46:07:e4:80:6d:\n                    a6:d8:96:2e:e8:2c:f8:11:b3:38:0d:66:a6:9b:ea:\n                    c9:23:5b:db:8e:e2:f3:13:8e:1a:59:2d:aa:02:f0:\n                    ec:a4:87:66:dc:c1:3f:f5:d8:b9:f4:ec:82:c6:d2:\n                    3d:95:1d:e5:c0:4f:84:c9:d9:a3:44:28:06:6a:d7:\n                    45:ac:f0:6b:6a:ef:4e:5f:f8:11:82:1e:38:63:34:\n                    66:50:d4:3e:93:73:fa:30:c3:66:ad:ff:93:2d:97:\n                    ef:03\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: sha1WithRSAEncryption\n        8f:fa:25:6b:4f:5b:e4:a4:4e:27:55:ab:22:15:59:3c:ca:b5:\n        0a:d4:4a:db:ab:dd:a1:5f:53:c5:a0:57:39:c2:ce:47:2b:be:\n        3a:c8:56:bf:c2:d9:27:10:3a:b1:05:3c:c0:77:31:bb:3a:d3:\n        05:7b:6d:9a:1c:30:8c:80:cb:93:93:2a:83:ab:05:51:82:02:\n        00:11:67:6b:f3:88:61:47:5f:03:93:d5:5b:0d:e0:f1:d4:a1:\n        32:35:85:b2:3a:db:b0:82:ab:d1:cb:0a:bc:4f:8c:5b:c5:4b:\n        00:3b:1f:2a:82:a6:7e:36:85:dc:7e:3c:67:00:b5:e4:3b:52:\n        e0:a8:eb:5d:15:f9:c6:6d:f0:ad:1d:0e:85:b7:a9:9a:73:14:\n        5a:5b:8f:41:28:c0:d5:e8:2d:4d:a4:5e:cd:aa:d9:ed:ce:dc:\n        d8:d5:3c:42:1d:17:c1:12:5d:45:38:c3:38:f3:fc:85:2e:83:\n        46:48:b2:d7:20:5f:92:36:8f:e7:79:0f:98:5e:99:e8:f0:d0:\n        a4:bb:f5:53:bd:2a:ce:59:b0:af:6e:7f:6c:bb:d2:1e:00:b0:\n        21:ed:f8:41:62:82:b9:d8:b2:c4:bb:46:50:f3:31:c5:8f:01:\n        a8:74:eb:f5:78:27:da:e7:f7:66:43:f3:9e:83:3e:20:aa:c3:\n        35:60:91:ce\n\nVerisign/RSA Commercial CA\n==========================\nMD5 Fingerprint: 5A:0B:DD:42:9E:B2:B4:62:97:32:7F:7F:0A:AA:9A:39\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICIzCCAZACBQJBAAAWMA0GCSqGSIb3DQEBAgUAMFwxCzAJBgNVBAYTAlVTMSAw\nHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjErMCkGA1UECxMiQ29tbWVy\nY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NDExMDQxODU4MzRaFw05\nOTExMDMxODU4MzRaMFwxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBT\nZWN1cml0eSwgSW5jLjErMCkGA1UECxMiQ29tbWVyY2lhbCBDZXJ0aWZpY2F0aW9u\nIEF1dGhvcml0eTCBmzANBgkqhkiG9w0BAQEFAAOBiQAwgYUCfgCk+4Fie84QJ93o\n975sbsZwmdu41QUDaSiCnHJ/lj+O7Kwpkj+KFPhCdr69XQO5kNTQvAayUTNfxMK/\ntouPmbZiImDd298ggrTKoi8tUO2UMt7gVY3UaOLgTNLNBRYulWZcYVI4HlGogqHE\n7yXpCuaLK44xZtn42f29O2nZ6wIDAQABMA0GCSqGSIb3DQEBAgUAA34AdrW2EP4j\n9/dZYkuwX5zBaLxJu7NJbyFHXSudVMQAKD+YufKKg5tgf+tQx6sFEC097TgCwaVI\n0v5loMC86qYjFmZsGySp8+x5NRhPJsjjr1BKx6cxa9B8GJ1Qv6km+iYrRpwUqbtb\nMJhCKLVLU7tDCZJAuqiqWqTGtotXTcU=\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            02:41:00:00:16\n        Signature Algorithm: md2WithRSAEncryption\n        Issuer: C=US, O=RSA Data Security, Inc., OU=Commercial Certification Authority\n        Validity\n            Not Before: Nov  4 18:58:34 1994 GMT\n            Not After : Nov  3 18:58:34 1999 GMT\n        Subject: C=US, O=RSA Data Security, Inc., OU=Commercial Certification Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1000 bit)\n                Modulus (1000 bit):\n                    00:a4:fb:81:62:7b:ce:10:27:dd:e8:f7:be:6c:6e:\n                    c6:70:99:db:b8:d5:05:03:69:28:82:9c:72:7f:96:\n                    3f:8e:ec:ac:29:92:3f:8a:14:f8:42:76:be:bd:5d:\n                    03:b9:90:d4:d0:bc:06:b2:51:33:5f:c4:c2:bf:b6:\n                    8b:8f:99:b6:62:22:60:dd:db:df:20:82:b4:ca:a2:\n                    2f:2d:50:ed:94:32:de:e0:55:8d:d4:68:e2:e0:4c:\n                    d2:cd:05:16:2e:95:66:5c:61:52:38:1e:51:a8:82:\n                    a1:c4:ef:25:e9:0a:e6:8b:2b:8e:31:66:d9:f8:d9:\n                    fd:bd:3b:69:d9:eb\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md2WithRSAEncryption\n        76:b5:b6:10:fe:23:f7:f7:59:62:4b:b0:5f:9c:c1:68:bc:49:\n        bb:b3:49:6f:21:47:5d:2b:9d:54:c4:00:28:3f:98:b9:f2:8a:\n        83:9b:60:7f:eb:50:c7:ab:05:10:2d:3d:ed:38:02:c1:a5:48:\n        d2:fe:65:a0:c0:bc:ea:a6:23:16:66:6c:1b:24:a9:f3:ec:79:\n        35:18:4f:26:c8:e3:af:50:4a:c7:a7:31:6b:d0:7c:18:9d:50:\n        bf:a9:26:fa:26:2b:46:9c:14:a9:bb:5b:30:98:42:28:b5:4b:\n        53:bb:43:09:92:40:ba:a8:aa:5a:a4:c6:b6:8b:57:4d:c5\n\nVerisign/RSA Secure Server CA\n=============================\nMD5 Fingerprint: 74:7B:82:03:43:F0:00:9E:6B:B3:EC:47:BF:85:A5:93\nPEM Data:\n-----BEGIN CERTIFICATE-----\nMIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG\nA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD\nVQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0\nMTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV\nBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy\ndmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ\nADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII\n0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI\nuR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI\nhvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3\nYQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc\n1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA==\n-----END CERTIFICATE-----\nCertificate Ingredients:\n    Data:\n        Version: 1 (0x0)\n        Serial Number:\n            02:ad:66:7e:4e:45:fe:5e:57:6f:3c:98:19:5e:dd:c0\n        Signature Algorithm: md2WithRSAEncryption\n        Issuer: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority\n        Validity\n            Not Before: Nov  9 00:00:00 1994 GMT\n            Not After : Jan  7 23:59:59 2010 GMT\n        Subject: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (1000 bit)\n                Modulus (1000 bit):\n                    00:92:ce:7a:c1:ae:83:3e:5a:aa:89:83:57:ac:25:\n                    01:76:0c:ad:ae:8e:2c:37:ce:eb:35:78:64:54:03:\n                    e5:84:40:51:c9:bf:8f:08:e2:8a:82:08:d2:16:86:\n                    37:55:e9:b1:21:02:ad:76:68:81:9a:05:a2:4b:c9:\n                    4b:25:66:22:56:6c:88:07:8f:f7:81:59:6d:84:07:\n                    65:70:13:71:76:3e:9b:77:4c:e3:50:89:56:98:48:\n                    b9:1d:a7:29:1a:13:2e:4a:11:59:9c:1e:15:d5:49:\n                    54:2c:73:3a:69:82:b1:97:39:9c:6d:70:67:48:e5:\n                    dd:2d:d6:c8:1e:7b\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md2WithRSAEncryption\n        65:dd:7e:e1:b2:ec:b0:e2:3a:e0:ec:71:46:9a:19:11:b8:d3:\n        c7:a0:b4:03:40:26:02:3e:09:9c:e1:12:b3:d1:5a:f6:37:a5:\n        b7:61:03:b6:5b:16:69:3b:c6:44:08:0c:88:53:0c:6b:97:49:\n        c7:3e:35:dc:6c:b9:bb:aa:df:5c:bb:3a:2f:93:60:b6:a9:4b:\n        4d:f2:20:f7:cd:5f:7f:64:7b:8e:dc:00:5c:d7:fa:77:ca:39:\n        16:59:6f:0e:ea:d3:b5:83:7f:4d:4d:42:56:76:b4:c9:5f:04:\n        f8:38:f8:eb:d2:5f:75:5f:cd:7b:fc:e5:8e:80:7c:fc:50\n\nCA WEB.DE TrustCenter\n=======================================\nMD5 Fingerprint=BD:D4:F5:1A:7D:70:46:50:DB:6F:4D:68:41:83:99:93\nPEM-Data:\n-----BEGIN CERTIFICATE-----\nMIIH1TCCBb2gAwIBAgIBATANBgkqhkiG9w0BAQQFADCBjTELMAkGA1UEBhMCREUx\nGjAYBgNVBAcTEUQtNzYyMjcgS2FybHNydWhlMRIwEAYDVQQKEwlXRUIuREUgQUcx\nFDASBgNVBAsTC1RydXN0Q2VudGVyMRswGQYDVQQDExJXRUIuREUgVHJ1c3RDZW50\nZXIxGzAZBgkqhkiG9w0BCQEWDHRydXN0QHdlYi5kZTAeFw05OTA2MjMwOTE5NTRa\nFw0wOTA2MjAwOTE5NTRaMIGNMQswCQYDVQQGEwJERTEaMBgGA1UEBxMRRC03NjIy\nNyBLYXJsc3J1aGUxEjAQBgNVBAoTCVdFQi5ERSBBRzEUMBIGA1UECxMLVHJ1c3RD\nZW50ZXIxGzAZBgNVBAMTEldFQi5ERSBUcnVzdENlbnRlcjEbMBkGCSqGSIb3DQEJ\nARYMdHJ1c3RAd2ViLmRlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\nwSWKmSp6XW+aYJsfYWhvxNgo3uViORtbNcpnkcLeAA4zobLEdqno80YInjFgWq8d\nf5U6jOFIAzPdRCFqsj6LQDppQq22q/sal4rOVVt3t6XlWgDBfF8K+iQEQQd2TNMS\nJ7pd+MUY2IyBGjGqGINRKsoU/sd1nwPRm2tv3VhIlDOcxhJIx9pm2+hNmaJEz55a\nma+sQl8+odtfsNNrYv1LitbqELP/hsRwWzE30m1cHvcy6yczH0GmKB8seSD69qjK\nHJlYa+qPrSjIwEhhUNOcoNx227B9ZJFETrTdW2q5vp4BAPoX2nvRm5ynAdaHn0LI\npYrhwpEiTb121ksguyDH+AasBMZ6gVP0qTvI9awRfUPyZsxWXeBDaNpw2zkqnIaj\nQIlXzVYKSBaR4TSDQ9L+bYNDSCyERdSFyJeQ2UPL/jxuS94jIbGiWE07X7wuSoA2\nBB0NKtUviZT/jyNzOGfu2TNcHkjc6x6NQMJanxKO5VZDfnfQUyWshQb99IelpjsS\ntPc//U04zMfEoJFvhosBIXKwthN7F7WE7KRhILTBwX2i+4d2doVA25OZHlcZI1L5\nK391IzzqeJdrM4Nrc0MnAsRY+sZJVmUi8u9lHsxCjMht3DpJ1JALGhj7hTDPsxjX\neGAUZIbq9rQ/fhN0UxXkO/wQfWVsq1ZO3XfgL4tE5OkCAwEAAaOCAjwwggI4MAwG\nA1UdEwQFMAMBAf8wSQYDVR0gBEIwQDA+BgtghkgBhvhFAQcBATAvMC0GCCsGAQUF\nBwIBFiFodHRwOi8vdHJ1c3Qud2ViLmRlL0hpbGZlL1BvbGljeS8wggEpBglghkgB\nhvhCAQ0EggEaFoIBFlRydXN0Q2VudGVyIHZvbiBXRUIuREUgLSBSb290LVplcnRp\nZmlrYXQKCkRpZSBOdXR6dW5nIGRpZXNlcyBaZXJ0aWZpa2F0ZXMgd2lyZCB2b24g\nZGVuIEFsbGdlbWVpbmVuIEdlc2No5GZ0c2JlZGluZ3VuZ2VuIChBR0IpIC8gWmVy\ndGlmaXppZXJ1bmdzcmljaHRsaW5pZW4gZGVzIFdFQi5ERSBUcnVzdENlbnRlcnMg\nZ2VyZWdlbHQuCkRpZSBBR0JzIHVuZCBaZXJ0aWZpemllcnVuZ3NyaWNodGxpbmll\nbiBzaW5kIHVudGVyIGh0dHA6Ly90cnVzdC53ZWIuZGUvSGlsZmUvIGVpbnNlaGJh\nci4KMBoGCWCGSAGG+EIBCAQNFgsvSGlsZmUvQUdCLzAWBglghkgBhvhCAQcECRYH\nL3JuLz9zPTAWBglghkgBhvhCAQMECRYHL3J2Lz9zPTAjBglghkgBhvhCAQIEFhYU\naHR0cHM6Ly90cnVzdC53ZWIuZGUwEQYJYIZIAYb4QgEBBAQDAgAHMCwGCWCGSAGG\n+EIBBAQfFh1odHRwczovL3RydXN0LndlYi5kZS9ydkNBLz9zPTANBgkqhkiG9w0B\nAQQFAAOCAgEALT0XbRQJA+pMrUUT4tm1nCnPkm3+iz6Av2tf3BcONJrNVDgQGDN4\nHL3iRMfLZvzSuvJ06BXl3ogqAkSUJxfBd7fYRi+rhgjKxuJZwUNS06a0eGlo12ol\nG4DOz2VrNFDmRzEIRv6DgnnIj7cjo9MPefFi/RJgRHQYP33dyP9dycKKsA0Q7xAI\n6JvBduOaeAx/LrGE2JkcPk26oDkpPDFOh5FoQ6LffwFv5086IIa6uK6X9QPdwtzy\napBp0YXeB/S+o2ggwA4n88Ht+U/aBbsCEoy6tbdosLqmLD2SkE4rFNJNBPLcw37o\nITLKogpZnIEYWaz0Tcavvk90ytaCP5vXmSaQSjmeUQCgK/cXJwfp1QRUhkG4UU+U\nCvsmnhmGnwQLrnpUgQehw1M/KP2bRr9akBVIabic+yjKOUJuap1uhOosaQjsThgq\n9uqYIYZGS9YjN50kRjxndbNuJVuhMgJSDCPE+74feCcySfjhVxGVJVnJUDQZoqVW\n/NqHaR07wAB6D1b+inaaKyz58Nw3D6yzBxpttZDTguWn+ry5eN6Um1Ez22Fs65Uo\neszLk3hHFUnImzdd5QtFJ40JGxuiZoCpZhyJNpAvGUwUMsbdrY+iEqisKGVF07rQ\nD2H0VMBBKfqZr4BilkYTmnnciBN7OhOg2VDnyUNHxiIr3dT12oviZU8=\n-----END CERTIFICATE-----\nCertificate:\n    Data:\n        Version: 3 (0x2)\n        Serial Number: 1 (0x1)\n        Signature Algorithm: md5WithRSAEncryption\n        Issuer: C=DE, L=D-76227 Karlsruhe, O=WEB.DE AG, OU=TrustCenter, CN=WEB.DE TrustCenter/Email=trust@web.de\n        Validity\n            Not Before: Jun 23 09:19:54 1999 GMT\n            Not After : Jun 20 09:19:54 2009 GMT\n        Subject: C=DE, L=D-76227 Karlsruhe, O=WEB.DE AG, OU=TrustCenter, CN=WEB.DE TrustCenter/Email=trust@web.de\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n            RSA Public Key: (4096 bit)\n                Modulus (4096 bit):\n                    00:c1:25:8a:99:2a:7a:5d:6f:9a:60:9b:1f:61:68:\n                    6f:c4:d8:28:de:e5:62:39:1b:5b:35:ca:67:91:c2:\n                    de:00:0e:33:a1:b2:c4:76:a9:e8:f3:46:08:9e:31:\n                    60:5a:af:1d:7f:95:3a:8c:e1:48:03:33:dd:44:21:\n                    6a:b2:3e:8b:40:3a:69:42:ad:b6:ab:fb:1a:97:8a:\n                    ce:55:5b:77:b7:a5:e5:5a:00:c1:7c:5f:0a:fa:24:\n                    04:41:07:76:4c:d3:12:27:ba:5d:f8:c5:18:d8:8c:\n                    81:1a:31:aa:18:83:51:2a:ca:14:fe:c7:75:9f:03:\n                    d1:9b:6b:6f:dd:58:48:94:33:9c:c6:12:48:c7:da:\n                    66:db:e8:4d:99:a2:44:cf:9e:5a:99:af:ac:42:5f:\n                    3e:a1:db:5f:b0:d3:6b:62:fd:4b:8a:d6:ea:10:b3:\n                    ff:86:c4:70:5b:31:37:d2:6d:5c:1e:f7:32:eb:27:\n                    33:1f:41:a6:28:1f:2c:79:20:fa:f6:a8:ca:1c:99:\n                    58:6b:ea:8f:ad:28:c8:c0:48:61:50:d3:9c:a0:dc:\n                    76:db:b0:7d:64:91:44:4e:b4:dd:5b:6a:b9:be:9e:\n                    01:00:fa:17:da:7b:d1:9b:9c:a7:01:d6:87:9f:42:\n                    c8:a5:8a:e1:c2:91:22:4d:bd:76:d6:4b:20:bb:20:\n                    c7:f8:06:ac:04:c6:7a:81:53:f4:a9:3b:c8:f5:ac:\n                    11:7d:43:f2:66:cc:56:5d:e0:43:68:da:70:db:39:\n                    2a:9c:86:a3:40:89:57:cd:56:0a:48:16:91:e1:34:\n                    83:43:d2:fe:6d:83:43:48:2c:84:45:d4:85:c8:97:\n                    90:d9:43:cb:fe:3c:6e:4b:de:23:21:b1:a2:58:4d:\n                    3b:5f:bc:2e:4a:80:36:04:1d:0d:2a:d5:2f:89:94:\n                    ff:8f:23:73:38:67:ee:d9:33:5c:1e:48:dc:eb:1e:\n                    8d:40:c2:5a:9f:12:8e:e5:56:43:7e:77:d0:53:25:\n                    ac:85:06:fd:f4:87:a5:a6:3b:12:b4:f7:3f:fd:4d:\n                    38:cc:c7:c4:a0:91:6f:86:8b:01:21:72:b0:b6:13:\n                    7b:17:b5:84:ec:a4:61:20:b4:c1:c1:7d:a2:fb:87:\n                    76:76:85:40:db:93:99:1e:57:19:23:52:f9:2b:7f:\n                    75:23:3c:ea:78:97:6b:33:83:6b:73:43:27:02:c4:\n                    58:fa:c6:49:56:65:22:f2:ef:65:1e:cc:42:8c:c8:\n                    6d:dc:3a:49:d4:90:0b:1a:18:fb:85:30:cf:b3:18:\n                    d7:78:60:14:64:86:ea:f6:b4:3f:7e:13:74:53:15:\n                    e4:3b:fc:10:7d:65:6c:ab:56:4e:dd:77:e0:2f:8b:\n                    44:e4:e9\n                Exponent: 65537 (0x10001)\n        X509v3 extensions:\n            X509v3 Basic Constraints: \n                CA:TRUE\n            X509v3 Certificate Policies: \n                Policy: 2.16.840.1.113733.1.7.1.1\n                  CPS: http://trust.web.de/Hilfe/Policy/\n\n            Netscape Comment: \n                TrustCenter von WEB.DE - Root-Zertifikat\n\nDie Nutzung dieses Zertifikates wird von den Allgemeinen Geschftsbedingungen (AGB) / Zertifizierungsrichtlinien des WEB.DE TrustCenters geregelt.\nDie AGBs und Zertifizierungsrichtlinien sind unter http://trust.web.de/Hilfe/ einsehbar.\n\n            Netscape CA Policy Url: \n                /Hilfe/AGB/\n            Netscape Renewal Url: \n                /rn/?s=\n            Netscape Revocation Url: \n                /rv/?s=\n            Netscape Base Url: \n                https://trust.web.de\n            Netscape Cert Type: \n                SSL CA, S/MIME CA, Object Signing CA\n            Netscape CA Revocation Url: \n                https://trust.web.de/rvCA/?s=\n    Signature Algorithm: md5WithRSAEncryption\n        2d:3d:17:6d:14:09:03:ea:4c:ad:45:13:e2:d9:b5:9c:29:cf:\n        92:6d:fe:8b:3e:80:bf:6b:5f:dc:17:0e:34:9a:cd:54:38:10:\n        18:33:78:1c:bd:e2:44:c7:cb:66:fc:d2:ba:f2:74:e8:15:e5:\n        de:88:2a:02:44:94:27:17:c1:77:b7:d8:46:2f:ab:86:08:ca:\n        c6:e2:59:c1:43:52:d3:a6:b4:78:69:68:d7:6a:25:1b:80:ce:\n        cf:65:6b:34:50:e6:47:31:08:46:fe:83:82:79:c8:8f:b7:23:\n        a3:d3:0f:79:f1:62:fd:12:60:44:74:18:3f:7d:dd:c8:ff:5d:\n        c9:c2:8a:b0:0d:10:ef:10:08:e8:9b:c1:76:e3:9a:78:0c:7f:\n        2e:b1:84:d8:99:1c:3e:4d:ba:a0:39:29:3c:31:4e:87:91:68:\n        43:a2:df:7f:01:6f:e7:4f:3a:20:86:ba:b8:ae:97:f5:03:dd:\n        c2:dc:f2:6a:90:69:d1:85:de:07:f4:be:a3:68:20:c0:0e:27:\n        f3:c1:ed:f9:4f:da:05:bb:02:12:8c:ba:b5:b7:68:b0:ba:a6:\n        2c:3d:92:90:4e:2b:14:d2:4d:04:f2:dc:c3:7e:e8:21:32:ca:\n        a2:0a:59:9c:81:18:59:ac:f4:4d:c6:af:be:4f:74:ca:d6:82:\n        3f:9b:d7:99:26:90:4a:39:9e:51:00:a0:2b:f7:17:27:07:e9:\n        d5:04:54:86:41:b8:51:4f:94:0a:fb:26:9e:19:86:9f:04:0b:\n        ae:7a:54:81:07:a1:c3:53:3f:28:fd:9b:46:bf:5a:90:15:48:\n        69:b8:9c:fb:28:ca:39:42:6e:6a:9d:6e:84:ea:2c:69:08:ec:\n        4e:18:2a:f6:ea:98:21:86:46:4b:d6:23:37:9d:24:46:3c:67:\n        75:b3:6e:25:5b:a1:32:02:52:0c:23:c4:fb:be:1f:78:27:32:\n        49:f8:e1:57:11:95:25:59:c9:50:34:19:a2:a5:56:fc:da:87:\n        69:1d:3b:c0:00:7a:0f:56:fe:8a:76:9a:2b:2c:f9:f0:dc:37:\n        0f:ac:b3:07:1a:6d:b5:90:d3:82:e5:a7:fa:bc:b9:78:de:94:\n        9b:51:33:db:61:6c:eb:95:28:7a:cc:cb:93:78:47:15:49:c8:\n        9b:37:5d:e5:0b:45:27:8d:09:1b:1b:a2:66:80:a9:66:1c:89:\n        36:90:2f:19:4c:14:32:c6:dd:ad:8f:a2:12:a8:ac:28:65:45:\n        d3:ba:d0:0f:61:f4:54:c0:41:29:fa:99:af:80:62:96:46:13:\n        9a:79:dc:88:13:7b:3a:13:a0:d9:50:e7:c9:43:47:c6:22:2b:\n        dd:d4:f5:da:8b:e2:65:4f\n"
  },
  {
    "path": "contrib/colors.default",
    "content": "# -*-muttrc-*-\n\n# Colors for use with xterm and the like, white background.\n\ncolor hdrdefault blue white\ncolor quoted blue white\ncolor signature red white\ncolor attachment red white\ncolor prompt brightmagenta white\ncolor message brightred white\ncolor error brightred white\ncolor indicator brightyellow red\ncolor status brightgreen blue\ncolor tree black white\ncolor normal black white\ncolor markers red white\ncolor search white black\ncolor tilde brightmagenta white\ncolor index blue white ~F\ncolor index red white \"~N|~O\"\n\n\n# color body brightblack white '\\*+[^*]+\\*+'\n# color body brightblack white '_+[^_]+_+'\n"
  },
  {
    "path": "contrib/colors.linux",
    "content": "# -*-muttrc-*-\n\n# Palette for use with the Linux console.  Black background.\n\ncolor hdrdefault blue black\ncolor quoted blue black\ncolor signature blue black\ncolor attachment red black\ncolor prompt brightmagenta black\ncolor message brightred black\ncolor error brightred black\ncolor indicator black red\ncolor status brightgreen blue\ncolor tree white black\ncolor normal white black\ncolor markers red black\ncolor search white black\ncolor tilde brightmagenta black\ncolor index blue black ~F\ncolor index red black \"~N|~O\"\n\n# color body brightwhite black '\\*+[^*]+\\*+'\n# color body brightwhite black '_+[^_]+_+'\n"
  },
  {
    "path": "contrib/gpg.rc",
    "content": "# -*-muttrc-*-\n#\n# Command formats for gpg.\n# \n# This version uses gpg-2comp from \n#   http://70t.de/download/gpg-2comp.tar.gz\n#\n# $Id$\n#\n# %p    The empty string when no passphrase is needed,\n#       the string \"PGPPASSFD=0\" if one is needed.\n#\n#       This is mostly used in conditional % sequences.\n#\n# %f    Most PGP commands operate on a single file or a file\n#       containing a message.  %f expands to this file's name.\n#\n# %s    When verifying signatures, there is another temporary file\n#       containing the detached signature.  %s expands to this\n#       file's name.\n#\n# %a    In \"signing\" contexts, this expands to the value of the\n#       configuration variable $pgp_sign_as.  You probably need to\n#       use this within a conditional % sequence.\n#\n# %r    In many contexts, mutt passes key IDs to pgp.  %r expands to\n#       a list of key IDs.\n\n# Note that we explicitly set the comment armor header since GnuPG, when used\n# in some localiaztion environments, generates 8bit data in that header, thereby\n# breaking PGP/MIME.\n\n# decode application/pgp\nset pgp_decode_command=\"gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f\"\n\n# verify a pgp/mime signature\nset pgp_verify_command=\"gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f\"\n\n# decrypt a pgp/mime attachment\nset pgp_decrypt_command=\"gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f\"\n\n# create a pgp/mime signed attachment\n# set pgp_sign_command=\"gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f\"\nset pgp_sign_command=\"gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f\"\n\n# create a application/pgp signed (old-style) message\n# set pgp_clearsign_command=\"gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f\"\nset pgp_clearsign_command=\"gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f\"\n\n# create a pgp/mime encrypted attachment\n# set pgp_encrypt_only_command=\"pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f\"\nset pgp_encrypt_only_command=\"pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f\"\n\n# create a pgp/mime encrypted and signed attachment\n# set pgp_encrypt_sign_command=\"pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f\"\nset pgp_encrypt_sign_command=\"pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f\"\n\n# import a key into the public key ring\nset pgp_import_command=\"gpg --no-verbose --import %f\"\n\n# export a key from the public key ring\nset pgp_export_command=\"gpg --no-verbose --export --armor %r\"\n\n# verify a key\nset pgp_verify_key_command=\"gpg --verbose --batch --fingerprint --check-sigs %r\"\n\n# read in the public key ring\nset pgp_list_pubring_command=\"gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-keys %r\"\n\n# read in the secret key ring\nset pgp_list_secring_command=\"gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-secret-keys %r\"\n\n# fetch keys\n# set pgp_getkeys_command=\"pkspxycwrap %r\"\n\n# pattern for good signature - may need to be adapted to locale!\n\n# set pgp_good_sign=\"^gpgv?: Good signature from \"\n\n# OK, here's a version which uses gnupg's message catalog:\n# set pgp_good_sign=\"`gettext -d gnupg -s 'Good signature from \"' | tr -d '\"'`\"\n\n# This version uses --status-fd messages\nset pgp_good_sign=\"^\\\\[GNUPG:\\\\] GOODSIG\"\n\n# pattern to verify a decryption occurred\nset pgp_decryption_okay=\"^\\\\[GNUPG:\\\\] DECRYPTION_OKAY\"\n\n"
  },
  {
    "path": "contrib/iconv/README",
    "content": "This directory contains sample collections of iconv-hooks for\nvarious platforms.  The files have been auto-generated from the\nsource code of Bruno Haible's libiconv implementation, version 1.5.1.\n\nlibiconv is available from <http://clisp.cons.org/~haible/packages-libiconv.html>.\n\nIf you want to re-generate the files from a newer version of\nlibiconv, just type:\n\n\trm -f *.rc\n\t./make.sh <top-level iconv directory>\n\nNote, however, that make.sh isn't guaranteed to run on any system\nbut the one used for generating these files.\n\n"
  },
  {
    "path": "contrib/iconv/iconv.aix-3.2.5.rc",
    "content": "iconv-hook CP850 IBM-850\niconv-hook ISO-8859-1 ISO8859-1\n"
  },
  {
    "path": "contrib/iconv/iconv.aix-4.1.5.rc",
    "content": "iconv-hook CP1046 IBM-1046\niconv-hook CP850 IBM-850\niconv-hook CP856 IBM-856\niconv-hook CP932 IBM-932\niconv-hook EUC-CN IBM-eucCN\niconv-hook EUC-JP IBM-eucJP\niconv-hook EUC-KR IBM-eucKR\niconv-hook EUC-TW IBM-eucTW\niconv-hook ISO-8859-1 ISO8859-1\niconv-hook ISO-8859-2 ISO8859-2\niconv-hook ISO-8859-5 ISO8859-5\niconv-hook ISO-8859-6 ISO8859-6\niconv-hook ISO-8859-8 ISO8859-8\n"
  },
  {
    "path": "contrib/iconv/iconv.aix-4.2.0.rc",
    "content": "iconv-hook BIG5 big5\niconv-hook CP1046 IBM-1046\niconv-hook CP850 IBM-850\niconv-hook CP856 IBM-856\niconv-hook CP922 IBM-922\niconv-hook CP932 IBM-932\niconv-hook EUC-CN IBM-eucCN\niconv-hook EUC-JP IBM-eucJP\niconv-hook EUC-KR IBM-eucKR\niconv-hook EUC-TW IBM-eucTW\niconv-hook ISO-8859-13 IBM-921\niconv-hook ISO-8859-1 ISO8859-1\niconv-hook ISO-8859-2 ISO8859-2\niconv-hook ISO-8859-5 ISO8859-5\niconv-hook ISO-8859-6 ISO8859-6\niconv-hook ISO-8859-7 ISO8859-7\niconv-hook ISO-8859-8 ISO8859-8\niconv-hook ISO-8859-9 ISO8859-9\n"
  },
  {
    "path": "contrib/iconv/iconv.aix-4.3.2.rc",
    "content": "iconv-hook BIG5 big5\niconv-hook CP1046 IBM-1046\niconv-hook CP1124 IBM-1124\niconv-hook CP1129 IBM-1129\niconv-hook CP1252 IBM-1252\niconv-hook CP850 IBM-850\niconv-hook CP856 IBM-856\niconv-hook CP922 IBM-922\niconv-hook CP932 IBM-932\niconv-hook CP943 IBM-943\niconv-hook EUC-CN IBM-eucCN\niconv-hook EUC-JP IBM-eucJP\niconv-hook EUC-KR IBM-eucKR\niconv-hook EUC-TW IBM-eucTW\niconv-hook ISO-8859-13 IBM-921\niconv-hook ISO-8859-15 ISO8859-15\niconv-hook ISO-8859-1 ISO8859-1\niconv-hook ISO-8859-2 ISO8859-2\niconv-hook ISO-8859-5 ISO8859-5\niconv-hook ISO-8859-6 ISO8859-6\niconv-hook ISO-8859-7 ISO8859-7\niconv-hook ISO-8859-8 ISO8859-8\niconv-hook ISO-8859-9 ISO8859-9\n"
  },
  {
    "path": "contrib/iconv/iconv.freebsd-3.3.rc",
    "content": "iconv-hook ASCII <error>\niconv-hook CP866 <error>\niconv-hook ISO-8859-15 <error>\niconv-hook ISO-8859-1 <error>\niconv-hook ISO-8859-2 <error>\niconv-hook KOI8-R <error>\n"
  },
  {
    "path": "contrib/iconv/iconv.glibc-2.1.3.rc",
    "content": "iconv-hook ISO-8859-1 ANSI_X3.4-1968\n"
  },
  {
    "path": "contrib/iconv/iconv.glibc-2.1.90.rc",
    "content": "iconv-hook ASCII ANSI_X3.4-1968\n"
  },
  {
    "path": "contrib/iconv/iconv.hpux-10.01.rc",
    "content": "iconv-hook EUC-CN hp15CN\niconv-hook EUC-TW eucTW\niconv-hook HP-ARABIC8 arabic8\niconv-hook HP-GREEK8 greek8\niconv-hook HP-HEBREW8 hebrew8\niconv-hook HP-ROMAN8 roman8\niconv-hook HP-TURKISH8 turkish8\niconv-hook ISO-8859-1 iso88591\niconv-hook ISO-8859-2 iso88592\niconv-hook ISO-8859-5 iso88595\niconv-hook ISO-8859-6 iso88596\niconv-hook ISO-8859-7 iso88597\niconv-hook ISO-8859-8 iso88598\niconv-hook ISO-8859-9 iso88599\niconv-hook TIS-620 tis620\n"
  },
  {
    "path": "contrib/iconv/iconv.hpux-10.20.rc",
    "content": "iconv-hook HP-ARABIC8 arabic8\niconv-hook HP-GREEK8 greek8\niconv-hook HP-HEBREW8 hebrew8\niconv-hook HP-ROMAN8 roman8\niconv-hook HP-TURKISH8 turkish8\niconv-hook ISO-8859-15 iso885915\niconv-hook ISO-8859-1 iso88591\niconv-hook ISO-8859-2 iso88592\niconv-hook ISO-8859-5 iso88595\niconv-hook ISO-8859-6 iso88596\niconv-hook ISO-8859-7 iso88597\niconv-hook ISO-8859-8 iso88598\niconv-hook ISO-8859-9 iso88599\niconv-hook TIS-620 tis620\niconv-hook UTF-8 utf8\n"
  },
  {
    "path": "contrib/iconv/iconv.hpux-11.00.rc",
    "content": "iconv-hook BIG5 big5\niconv-hook EUC-CN hp15CN\niconv-hook EUC-JP eucJP\niconv-hook EUC-KR eucKR\niconv-hook EUC-TW eucTW\niconv-hook HP-ARABIC8 arabic8\niconv-hook HP-GREEK8 greek8\niconv-hook HP-HEBREW8 hebrew8\niconv-hook HP-KANA8 kana8\niconv-hook HP-ROMAN8 roman8\niconv-hook HP-TURKISH8 turkish8\niconv-hook ISO-8859-15 iso885915\niconv-hook ISO-8859-1 iso88591\niconv-hook ISO-8859-2 iso88592\niconv-hook ISO-8859-5 iso88595\niconv-hook ISO-8859-6 iso88596\niconv-hook ISO-8859-7 iso88597\niconv-hook ISO-8859-8 iso88598\niconv-hook ISO-8859-9 iso88599\niconv-hook TIS-620 tis620\niconv-hook UTF-8 utf8\n"
  },
  {
    "path": "contrib/iconv/iconv.irix-6.5.rc",
    "content": "iconv-hook EUC-CN eucCN\niconv-hook EUC-JP eucJP\niconv-hook EUC-KR eucKR\niconv-hook EUC-TW eucTW\niconv-hook ISO-8859-1 ISO8859-1\niconv-hook ISO-8859-2 ISO8859-2\niconv-hook ISO-8859-5 ISO8859-5\niconv-hook ISO-8859-7 ISO8859-7\niconv-hook ISO-8859-9 ISO8859-9\n"
  },
  {
    "path": "contrib/iconv/iconv.osf1-4.0a.rc",
    "content": "iconv-hook ISO-8859-1 ISO8859-1\niconv-hook ISO-8859-7 ISO8859-7\niconv-hook ISO-8859-9 ISO8859-9\n"
  },
  {
    "path": "contrib/iconv/iconv.osf1-4.0d.rc",
    "content": "iconv-hook CP850 cp850\niconv-hook ISO-8859-1 ISO8859-1\niconv-hook ISO-8859-7 ISO8859-7\niconv-hook ISO-8859-9 ISO8859-9\n"
  },
  {
    "path": "contrib/iconv/iconv.solaris-2.4.rc",
    "content": "iconv-hook  bug\n"
  },
  {
    "path": "contrib/iconv/iconv.solaris-2.5.1.rc",
    "content": "iconv-hook ISO-8859-1 ISO8859-1\n"
  },
  {
    "path": "contrib/iconv/iconv.solaris-2.6-cjk.rc",
    "content": "iconv-hook EUC-CN gb2312\niconv-hook EUC-JP eucJP\niconv-hook EUC-KR 5601\niconv-hook EUC-TW cns11643\niconv-hook ISO-8859-1 ISO8859-1\niconv-hook ISO-8859-2 ISO8859-2\niconv-hook ISO-8859-4 ISO8859-4\niconv-hook ISO-8859-5 ISO8859-5\niconv-hook ISO-8859-7 ISO8859-7\niconv-hook ISO-8859-9 ISO8859-9\niconv-hook Shift_JIS PCK\n"
  },
  {
    "path": "contrib/iconv/iconv.solaris-2.6.rc",
    "content": "iconv-hook ISO-8859-1 ISO8859-1\niconv-hook ISO-8859-2 ISO8859-2\niconv-hook ISO-8859-4 ISO8859-4\niconv-hook ISO-8859-5 ISO8859-5\niconv-hook ISO-8859-7 ISO8859-7\niconv-hook ISO-8859-9 ISO8859-9\n"
  },
  {
    "path": "contrib/iconv/iconv.solaris-2.7.rc",
    "content": "iconv-hook ASCII 646\niconv-hook ISO-8859-15 ISO8859-15\niconv-hook ISO-8859-1 ISO8859-1\niconv-hook ISO-8859-2 ISO8859-2\niconv-hook ISO-8859-4 ISO8859-4\niconv-hook ISO-8859-5 ISO8859-5\niconv-hook ISO-8859-6 ISO8859-6\niconv-hook ISO-8859-7 ISO8859-7\niconv-hook ISO-8859-8 ISO8859-8\niconv-hook ISO-8859-9 ISO8859-9\niconv-hook KOI8-R koi8-r\niconv-hook TIS-620 TIS620.2533\n"
  },
  {
    "path": "contrib/iconv/make.sh",
    "content": "#!/bin/sh --\n\n#\n# Create sample configuration files from the tables contained with libiconv.\n# Copyright (C) 2001 Thomas Roessler <roessler@does-not-exist.org>\n#\n# This ugly shell script is free software; you can distribute and/or modify\n# it under the terms of the GNU General Public License version 2 or later.\n#\n\nLIBICONV=\"$1\"\ntest -d $LIBICONV/libcharset/tools || {\n\techo \"Sorry, I can't find libiconv's source!\" >&2 ; \n\texit 1 ;\n}\n\nfor f in $LIBICONV/libcharset/tools/* ; do\n\trm -f tmp.rc.\n\t( head -3 $f | grep -q 'locale name.*locale charmap.*locale_charset' ) && (\n\t\tsed '1,/^$/d' $f | awk '($4 != $3) { printf (\"iconv-hook %s %s\\n\", $4, $3); }' | \\\n\t\t\tsed -e 's/^iconv-hook SJIS /iconv-hook Shift_JIS /gi' |\n\t\t\tsort -u > tmp.rc )\n\ttest -s tmp.rc && mv tmp.rc iconv.`basename $f`.rc\n\trm -f tmp.rc\ndone\n"
  },
  {
    "path": "contrib/language.txt",
    "content": "# Translation file for PGP 2.6.3(i)n.\n\n# $Id$\n\n# ------------------------------------------------------------------\n# Character set:  ISO-Latin/1 (ISO 8859/1)\n# Date revised:   7 October 1997\n# ------------------------------------------------------------------\n# Language:       German/Deutsch (de)\n# Translator:     Frank Pruefer <F.PRUEFER@LINK-L.cl.sub.de>\n#                 (based on the German translation for PGP 2.3a by\n#                 Marc Aurel <4-tea-2@bong.saar.de>)\n# ------------------------------------------------------------------\n# Language:       Spanish/Espaol (es)\n# Translator:     Armando Ramos <armando@clerval.org>\n# ------------------------------------------------------------------\n# Language:       French/Francais (fr)\n# Translator:     Yanik Crpeau <yanik@mlink.net>\n#                 (based on the French translation for PGP 2.3a by\n#                 Jean-loup Gailly <jloup@chorus.fr>)\n# ------------------------------------------------------------------\n#\n# Additional language files may be obtained from:\n#\n# http://www.ifi.uio.no/pgp/modules.shtml\n# ftp://ftp.ifi.uio.no/pub/pgp/lang/\n#\n# ------------------------------------------------------------------\n\n\"\\nClear signature file: %s\\n\"\nde: \"\\nDateiname der Klartext-Unterschrift: %s\\n\"\nes: \"\\nFichero normal con firma: %s\\n\"\nfr: \"\\nFichier de signature en clair: %s\\n\"\nmuttde: \"\\nDateiname der Klartext-Unterschrift: %s\\n\"\n\n\"\\nTransport armor file: %s\\n\"\nde: \"\\nDateiname der Versandhlle: %s\\n\"\nes: \"\\nFichero con armadura: %s\\n\"\nfr: \"\\nFichier de transport armure: %s\\n\"\nmuttde: \"\\nDateiname der Versandhlle: %s\\n\"\n\n\"\\nTransport armor files: \"\nde: \"\\nDateinamen der Versandhllen: \"\nes: \"\\nFicheros con armadura: \"\nfr: \"\\nFichiers de transport armure: \"\nmuttde: \"\\nDateinamen der Versandhllen: \"\n\n\"Invalid ASCII armor header line: \\\"%.40s\\\"\\n\\\nASCII armor corrupted.\\n\"\nde: \"\\nUnzulssige Kopfzeile \\\"%.40s\\\"\\n\\\nin der ASCII-Versandhlle. Die Versandhlle ist deshalb ungltig.\\n\"\nes: \"Lnea incorrecta en la cabecera de la armadura ASCII:\\n\\\n\\\"%.40s\\\"\\n\\\nArmadura daada\\n\"\nfr: \"Entte enveloppe ASCII invalide: \\\"%.40s\\\"\\n\\\nl'enveloppe ASCII est corrompue\"\nmuttde: \"\\nUnzulssige Kopfzeile \\\"%.40s\\\"\\n\\\nin der ASCII-Versandhlle. Die Versandhlle ist deshalb ungltig.\\n\"\n\n\"Warning: Unrecognized ASCII armor header label \\\"%.*s:\\\" ignored.\\n\"\nde: \"\\nWARNUNG: Der unbekannte Bezeichner \\\"%.*s:\\\"\\n\\\nin der ASCII-Versandhlle wurde berlesen.\\n\"\nes: \"Advertencia: Se ignora la etiqueta  \\\"%.*s:\\\"\\n\\\nNo se reconoce como cabecera de armadura ASCII\\n\"\nfr: \"Avertissement: Type d'entte de l'envloppe ASCII \\\"%.*s:\\\" ignor\\n\"\nmuttde: \"\\nWARNUNG: Der unbekannte Bezeichner \\\"%.*s:\\\"\\n\\\nin der ASCII-Versandhlle wurde berlesen.\\n\"\n\n\"ERROR: Bad ASCII armor checksum in section %d.\\n\"\nde: \"\\nFEHLER: Falsche Prfsumme im Abschnitt %d der Versandhlle.\\n\"\nes: \"ERROR: Suma incorrecta de comprobacin en armadura ASCII,\\n\\\nseccin %d.\\n\"\nfr: \"ERREUR: mauvaise vrification de l'armure ASCII dans la section %d.\\n\"\nmuttde: \"\\nFEHLER: Falsche Prfsumme im Abschnitt %d der Versandhlle.\\n\"\n\n\"Can't find section %d.\\n\"\nde: \"\\nAbschnitt %d nicht gefunden.\\n\"\nes: \"No se encuentra la seccin %d.\\n\"\nfr: \"Section %d introuvable.\\n\"\nmuttde: \"\\nAbschnitt %d nicht gefunden.\\n\"\n\n\"Badly formed section delimiter, part %d.\\n\"\nde: \"\\nFehlerhafter Abschnitts-Begrenzer im Teil %d.\\n\"\nes: \"Delimitador de seccin mal formado, parte %d.\\n\"\nfr: \"Sparateurs de section mal forms\"\nmuttde: \"\\nFehlerhafter Abschnitts-Begrenzer im Teil %d.\\n\"\n\n\"Sections out of order, expected part %d\"\nde: \"\\nAbschnitte in falscher Reihenfolge.\\nErwartet wurde Teil %d\"\nes: \"Las secciones estn desordenadas: se esperaba la parte %d\"\nfr: \"Sections en dsordre, partie %d attendue\"\nmuttde: \"\\nAbschnitte in falscher Reihenfolge.\\nErwartet wurde Teil %d\"\n\n\", got part %d\\n\"\nde: \", angekommen ist Teil %d.\\n\"\nes: \", se encuentra la parte %d\\n\"\nfr: \", partie %d obtenue\\n\"\nmuttde: \", angekommen ist Teil %d.\\n\"\n\n\"ERROR: Hit EOF in header of section %d.\\n\"\nde: \"\\nFEHLER: EOF (Dateiende) im Header von Abschnitt %d.\\n\"\nes: \"ERROR: Hay un EOF (fin de fichero) en la cabecera de\\\nla seccin %d.\\n\"\nfr: \"ERREUR: find de fichier dans l'en-tte de la section %d.\\n\"\nmuttde: \"\\nFEHLER: EOF (Dateiende) im Header von Abschnitt %d.\\n\"\n\n\"ERROR: Badly formed ASCII armor checksum, line %d.\\n\"\nde: \"\\nFEHLER: Falsche Prfsumme in Zeile %d der Versandhlle.\\n\"\nes: \"ERROR: Suma de comprobacin mal construida en la armadura ASCII,\\n\\\nlnea %d.\\n\"\nfr: \"ERREUR: Verification de l'armure ASCII mal forme, ligne %d.\\n\"\nmuttde: \"\\nFEHLER: Falsche Prfsumme in Zeile %d der Versandhlle.\\n\"\n\n\"WARNING: No ASCII armor `END' line.\\n\"\nde: \"\\nWARNUNG: Keine 'END'-Zeile in der Versandhlle.\\n\"\nes: \"ADVERTENCIA: No hay lnea `END' en la armadura ASCII.\\n\"\nfr: \"ATTENTION: Pas de ligne `END' dans l'armure ASCII.\\n\"\nmuttde: \"\\nWARNUNG: Keine 'END'-Zeile in der Versandhlle.\\n\"\n\n\"ERROR: Bad ASCII armor character, line %d.\\n\"\nde: \"\\nFEHLER: Unerlaubtes Zeichen in Zeile %d der Versandhlle.\\n\"\nes: \"ERROR: Carcter incorrecto en la armadura ASCII, lnea %d.\\n\"\nfr: \"ERREUR: Mauvais charactre dans l'armure ASCII, ligne %d.\\n\"\nmuttde: \"\\nFEHLER: Unerlaubtes Zeichen in Zeile %d der Versandhlle.\\n\"\n\n\"ERROR: Bad ASCII armor line length %d on line %d.\\n\"\nde: \"\\nFEHLER: Falsche Zeilenlnge (%d) in Zeile %d der Versandhlle.\\n\"\nes: \"ERROR: Longitud incorrecta (%d) de lnea en la armadura ASCII,\\n\\\nlnea %d.\\n\"\nfr: \"ERREUR: Mauvais longueur de ligne %d dans l'armure ASCII, ligne %d.\\n\"\nmuttde: \"\\nFEHLER: Falsche Zeilenlnge (%d) in Zeile %d der Versandhlle.\\n\"\n\n\"ERROR: Bad ASCII armor checksum\"\nde: \"\\nFEHLER: Falsche Prfsumme der Versandhlle\"\nes: \"ERROR: Suma incorrecta de comprobacin en la armadura ASCII\"\nfr: \"ERREUR de vrification dans l'armure ASCII\"\nmuttde: \"\\nFEHLER: Falsche Prfsumme der Versandhlle\"\n\n\" in section %d\"\nde: \" im Abschnitt %d.\\n\"\nes: \" en la seccin %d\"\nfr: \" dans la section %d\"\nmuttde: \" im Abschnitt %d.\\n\"\n\n\"Warning: Transport armor lacks a checksum.\\n\"\nde: \"\\nWARNUNG: Die Prfsumme der Versandhlle fehlt.\\n\"\nes: \"Advertencia: La armadura de transporte no lleva suma de\\\ncomprobacin.\\n\"\nfr: \"Attention: l'armure de transport n'a pas de vrification.\\n\"\nmuttde: \"\\nWARNUNG: Die Prfsumme der Versandhlle fehlt.\\n\"\n\n\"ERROR: Can't find file %s\\n\"\nde: \"\\nFEHLER: Datei '%s' nicht gefunden.\\n\"\nes: \"ERROR: No se encuentra el fichero %s\\n\"\nfr: \"ERREUR: Fichier %s introuvable\\n\"\nmuttde: \"\\nFEHLER: Datei '%s' nicht gefunden.\\n\"\n\n\"ERROR: No ASCII armor `BEGIN' line!\\n\"\nde: \"\\nFEHLER: Keine 'BEGIN'-Zeile in der Versandhlle!\\n\"\nes: \"ERROR: No hay lnea 'BEGIN' en la armadura ASCII\\n\"\nfr: \"ERREUR: Pas de ligne `BEGIN' dans l'armure ASCII!\\n\"\nmuttde: \"\\nFEHLER: Keine 'BEGIN'-Zeile in der Versandhlle!\\n\"\n\n\"ERROR: ASCII armor decode input ended unexpectedly!\\n\"\nde: \"\\nFEHLER: Vorzeitiges Ende der Versandhlle!\\n\"\nes: \"ERROR: La entrada con armadura ASCII termina antes de tiempo\\n\"\nfr: \"ERREUR: fin prmature du fichier armure ASCII!\\n\"\nmuttde: \"\\nFEHLER: Vorzeitiges Ende der Versandhlle!\\n\"\n\n\"ERROR: Header line added to ASCII armor: \\\"%s\\\"\\n\\\nASCII armor corrupted.\\n\"\nde: \"\\nFEHLER: Eine Kopfzeile \\\"%s\\\" ist\\n\\\nin der ASCII-Versandhlle enthalten. Die Versandhlle ist deshalb ungltig.\\n\"\nes: \"ERROR: Lnea de cabecera aadida a la armadura ASCII:\\n\\\n\\\"%s\\\" Armadura daada\\n\"\nfr: \"Ligne d'entte ajoute  l'enveloppe ASCII: \\\"%s\\\"\\n\\\nenveloppe ASCII corrompue\"\nmuttde: \"\\nFEHLER: Eine Kopfzeile \\\"%s\\\" ist\\n\\\nin der ASCII-Versandhlle enthalten. Die Versandhlle ist deshalb ungltig.\\n\"\n\n\"\\n\\007Unable to write ciphertext output file '%s'.\\n\"\nde: \"\\n\\007FEHLER beim Schreiben der verschlsselten\\nAusgabedatei '%s'.\\n\"\nes: \"\\n\\007No puede escribirse el fichero de salida cifrado '%s'.\\n\"\nfr: \"\\n\\007Ecriture impossible dans le fichier de sortie chiffr '%s'.\\n\"\nmutt: \"\\nUnable to write ciphertext output file '%s'.\\n\"\nmuttde: \"\\nFEHLER beim Schreiben der verschlsselten\\nAusgabedatei '%s'.\\n\"\n\n\"ERROR: Hit EOF in header.\\n\"\nde: \"\\nFEHLER: EOF (Dateiende) im Header.\\n\"\nes: \"ERROR: Hay un EOF (fin de fichero) en la cabecera.\\n\"\nfr: \"ERREUR: fin de fichier dans l'en-tte.\\n\"\nmuttde: \"\\nFEHLER: EOF (Dateiende) im Header.\\n\"\n\n\"Unsupported character set: '%s'\\n\"\nde: \"\\nKeine Untersttzung fr Zeichensatz '%s'.\\n\"\nes: \"Conjunto de caracteres no admitido: '%s'\\n\"\nfr: \"Table de caractres non supporte: '%s'\\n\"\nmuttde: \"\\nKeine Untersttzung fr Zeichensatz '%s'.\\n\"\n\n\"The legal_kludge cannot be disabled in US version.\\n\"\nde: \"LEGAL_KLUDGE kann in der USA-Version nicht abgeschaltet werden!\\n\"\nes: \"'legal_kludge' no puede desactivarse en la versin para los EE.UU.\\n\"\nfr: \"Les embarras lgaux ne peuvent pas tre dsactivs aux Etats-Unis.\\n\"\nmuttde: \"LEGAL_KLUDGE kann in der USA-Version nicht abgeschaltet werden!\\n\"\n\n\"The multiple_recipients flag is unnecessary in this \\\nversion of MacPGP.\\\n\\nPlease remove this entry from your configuration file.\\n\"\nde: \"Die Kennung \\\"multiple_recipients\\\" ist in dieser Version von MacPGP nicht\\\n\\nntig. Bitte entferne diesen Eintrag aus Deiner Konfigurationsdatei.\\n\"\nes: \"No se necesita la bandera 'multiple_recipients' en esta versin\\n\\\nde MacPGP.\\\n\\nElimina esa entrada del fichero de configuracin.\\n\"\nfr: \"L'indicateur de destinataires multiples n'est pas ncessaire dans \\\nversion de MacPGP. \\\n\\nS.V.P. supprimez cette entre de votre fichier de configuration. \\n\"\nmuttde: \"Die Kennung \\\"multiple_recipients\\\" ist in dieser Version von MacPGP nicht\\\n\\nntig. Bitte entferne diesen Eintrag aus Deiner Konfigurationsdatei.\\n\"\n\n\"\\007\\nWARNING:  This key has been revoked by its owner,\\n\\\npossibly because the secret key was compromised.\\n\"\nde: \"\\007\\nWARNUNG: Dieser Schlssel wurde von seinem Besitzer zurckgezogen,\\n\\\nmglicherweise, weil sein privater Schlssel nicht mehr sicher ist.\\n\"\nes: \"\\007\\nADVERTENCIA: Esta clave ha sido revocada por su propietario;\\n\\\nes posible que la clave secreta se haya visto comprometida.\\n\"\nfr: \"\\007\\nATTENTION: cette cl a t rvoque par son propritaire,\\n\\\nprobablement parce que la cl secrte a t compromise.\\n\"\nmutt: \"\\nWARNING:  This key has been revoked by its owner,\\n\\\npossibly because the secret key was compromised.\\n\"\nmuttde: \"\\nWARNUNG: Dieser Schlssel wurde von seinem Besitzer zurckgezogen,\\n\\\nmglicherweise, weil sein privater Schlssel nicht mehr sicher ist.\\n\"\n\n\"This could mean that this signature is a forgery.\\n\"\nde: \"Dies knnte bedeuten, da diese Unterschrift eine Flschung ist.\\n\"\nes: \"Puede significar que la firma est falsificada.\\n\"\nfr: \"Ceci peut signifier que cette signature est un faux.\\n\"\nmuttde: \"Dies knnte bedeuten, da diese Unterschrift eine Flschung ist.\\n\"\n\n\"You cannot use this revoked key.\\n\"\nde: \"Du kannst diesen Schlssel nicht benutzen, weil er zurckgezogen wurde.\\n\"\nes: \"No puedes utilizar esta clave revocada.\\n\"\nfr: \"Vous ne pouvez pas utiliser cette cl rvoque.\\n\"\nmuttde: \"Du kannst diesen Schlssel nicht benutzen, weil er zurckgezogen wurde.\\n\"\n\n\"\\007\\nWARNING:  Because this public key is not certified with \\\na trusted\\nsignature, it is not known with high confidence that this \\\npublic key\\nactually belongs to: \\\"%s\\\".\\n\"\nde: \"\\007\\nWARNUNG: Da dieser ffentliche Schlssel nicht mit einer vertrauenswrdigen\\n\\\nUnterschrift beglaubigt ist, ist nicht sicher, da er wirklich zu\\n\\\"%s\\\" gehrt.\\n\"\nes: \"\\nAVISO: Esta clave pblica no est certificada con una firma\\\nde confianza,\\n\\\npor lo que no se sabe con seguridad si realmente pertenece a:\\n\\\n \\\"%s\\\".\\n\"\nfr: \"\\007\\nATTENTION: Cette cl publique n'est pas certifie avec une\\n\\\nsignature fiable. Il n'est donc pas reconnu avec un haut degr de confiance\\n\\\nque cette signature appartient effectivement : \\\"%s\\\".\\n\"\nmutt: \"\\nWARNING:  Because this public key is not certified with \\\na trusted\\nsignature, it is not known with high confidence that this \\\npublic key\\nactually belongs to: \\\"%s\\\".\\n\"\nmuttde: \"\\nWARNUNG: Da dieser ffentliche Schlssel nicht mit einer vertrauenswrdigen\\n\\\nUnterschrift beglaubigt ist, ist nicht sicher, da er wirklich zu\\n\\\"%s\\\" gehrt.\\n\"\n\n\"\\007\\nWARNING:  This public key is not trusted to actually belong \\\nto:\\n\\\"%s\\\".\\n\"\nde: \"\\007\\nWARNUNG: Es ist nicht sicher, da dieser ffentliche Schlssel wirklich\\n\\\nzu \\\"%s\\\" gehrt.\\n\"\nes: \"\\nADVERTENCIA:  No se sabe con seguridad si esta clave pblica\\n\\\npertenece realmente a: \\\"%s\\\".\\n\"\nfr: \"\\007\\nATTENTION: Cette cl publique n'est pas reconnue comme\\n\\\nappartenant : \\\"%s\\\".\\n\"\nmutt: \"\\nWARNING:  This public key is not trusted to actually belong \\\nto:\\n\\\"%s\\\".\\n\"\nmuttde: \"\\nWARNUNG: Es ist nicht sicher, da dieser ffentliche Schlssel wirklich\\n\\\nzu \\\"%s\\\" gehrt.\\n\"\n\n\"\\007\\nWARNING:  Because this public key is not certified with enough \\\ntrusted\\nsignatures, it is not known with high confidence that this \\\npublic key\\nactually belongs to: \\\"%s\\\".\\n\"\nde: \"\\007\\nWARNUNG: Da dieser ffentliche Schlssel nicht mit einer ausreichenden\\n\\\nAnzahl vertrauenswrdiger Unterschriften beglaubigt ist, ist nicht sicher,\\n\\\nda er wirklich zu \\\"%s\\\" gehrt.\\n\"\nes: \"\\nADVERTENCIA: Como esta clave no est certificada con suficientes\\n\\\nfirmas fiables, no se sabe con seguridad si realmente pertenece a:\\n\\\n \\\"%s\\\".\\n\"\nfr: \"\\007\\nATTENTION: puisque cette cl publique n'est pas certifie avec\\n\\\nsuffisament de signatures, il n'est pas connu avec un haut niveau de confiance\\\n\\nque cette cl appartient effectivement : \\\"%s\\\".\\n\"\nmutt: \"\\nWARNING:  Because this public key is not certified with enough \\\ntrusted\\nsignatures, it is not known with high confidence that this \\\npublic key\\nactually belongs to: \\\"%s\\\".\\n\"\nmuttde: \"\\nWARNUNG: Da dieser ffentliche Schlssel nicht mit einer ausreichenden\\n\\\nAnzahl vertrauenswrdiger Unterschriften beglaubigt ist, ist nicht sicher,\\n\\\nda er wirklich zu \\\"%s\\\" gehrt.\\n\"\n\n\"But you previously approved using this public key anyway.\\n\"\nde: \"Aber Du hast diesen Schlssel trotzdem bereits benutzt...\\n\"\nes: \"Ya has permitido antes que se utilice esta clave p\\372blica.\\n\"\nfr: \"Mais vous avez dj accept l'usage de cette cl publique.\\n\"\nmuttde: \"Aber Du hast diesen Schlssel trotzdem bereits benutzt...\\n\"\n\n\"\\nAre you sure you want to use this public key (y/N)? \"\nde: \"\\nBist Du sicher, da Du diesen Schlssel benutzen willst? (j/N) \"\nes: \"\\nEsts seguro de querer utilizar esta clave pblica (s/N)? \"\nfr: \"\\nEtes vous sr(e) de vouloir utiliser cette cl publique (o/N)? \"\nmuttde: \"\\nBist Du sicher, da Du diesen Schlssel benutzen willst? (j/N) \"\n\n\"\\n\\007Unsupported packet format - you need a newer version of PGP \\\nfor this file.\\n\"\nde: \"\\n\\007WARNUNG: nicht untersttztes Datenformat!\\n\\\nDu brauchst eine neuere PGP-Version fr diese Datei.\\n\"\nes: \"\\n\\007Formato desconocido -\\\nse necesita una versin ms reciente de PGP\"\nfr: \"\\n\\007Format non-support - vous devez utiliser un version nouvelle de PGP\npour ce fichier.\\n\"\nmutt: \"\\nUnsupported packet format - you need a newer version of PGP \\\nfor this file.\\n\"\nmuttde: \"\\nWARNUNG: nicht untersttztes Datenformat!\\n\\\nDu brauchst eine neuere PGP-Version fr diese Datei.\\n\"\n\n\"Preparing random session key...\"\nde: \"\\nVorbereitung des zuflligen IDEA-Schlssels...\"\nes: \"Preparando la clave aleatoria de la sesin...\"\nfr: \"Prparation de la cl alatoire...\"\nmuttde: \"\\nVorbereitung des zuflligen IDEA-Schlssels...\"\n\n\"\\n\\007Error: System clock/calendar is set wrong.\\n\"\nde: \"\\n\\007FEHLER: Die System-Zeit und/oder das System-Datum sind falsch.\\n\"\nes: \"\\n\\007Error: El reloj/calendario del sistema est equivocado.\\n\"\nfr: \"\\n\\007Erreur: L'horloge du systme est incorrecte.\\n\"\nmutt: \"\\nError: System clock/calendar is set wrong.\\n\"\nmuttde: \"\\nFEHLER: Die System-Zeit und/oder das System-Datum sind falsch.\\n\"\n\n\"Just a moment...\"\nde: \"\\nEinen Augenblick, bitte...\"\nes: \"Un momento...\"\nfr: \"Un moment...\"\nmuttde: \"\\nEinen Augenblick, bitte...\"\n\n\"\\n\\007Can't open input plaintext file '%s'\\n\"\nde: \"\\n\\007FEHLER beim ffnen der Eingabedatei '%s'.\\n\"\nes: \"\\n\\007No puede abrirse el fichero normal de entrada '%s'\\n\"\nfr: \"\\n\\007Ouverture du fichier en clair '%s' impossible.\\n\"\nmutt: \"\\nCan't open input plaintext file '%s'\\n\"\nmuttde: \"\\nFEHLER beim ffnen der Eingabedatei '%s'.\\n\"\n\n\"\\n\\007Can't open plaintext file '%s'\\n\"\nde: \"\\n\\007FEHLER beim ffnen der Klartextdatei '%s'.\\n\"\nes: \"\\n\\007No puede abrirse el fichero normal '%s'\\n\"\nfr: \"\\n\\007Ouverture du fichier en clair '%s' impossible\\n\"\nmutt: \"\\nCan't open plaintext file '%s'\\n\"\nmuttde: \"\\nFEHLER beim ffnen der Klartextdatei '%s'.\\n\"\n\n\"\\n\\007Can't create signature file '%s'\\n\"\nde: \"\\n\\007FEHLER beim Erzeugen der Unterschriftsdatei '%s'.\\n\"\nes: \"\\n\\007No puede crearse el fichero de firma '%s'\\n\"\nfr: \"\\n\\007Cration du fichier de signature '%s' impossible\\n\"\nmutt: \"\\nCan't create signature file '%s'\\n\"\nmuttde: \"\\nFEHLER beim Erzeugen der Unterschriftsdatei '%s'.\\n\"\n\n\"\\n\\007Can't open key ring file '%s'\\n\"\nde: \"\\n\\007FEHLER beim ffnen des Schlsselbunds '%s'.\\n\"\nes: \"\\n\\007No puede abrirse el anillo de claves '%s'\\n\"\nfr: \"\\n\\007Ouverture du fichier de cl '%s' impossible\\n\"\nmutt: \"\\nCan't open key ring file '%s'\\n\"\nmuttde: \"\\nFEHLER beim ffnen des Schlsselbunds '%s'.\\n\"\n\n\"This key has already been revoked.\\n\"\nde: \"Dieser Schlssel wurde bereits zurckgezogen.\\n\"\nes: \"Esta clave ya se haba revocado.\\n\"\nfr: \"Cette cl a dj t rvoque.\\n\"\nmuttde: \"Dieser Schlssel wurde bereits zurckgezogen.\\n\"\n\n\"\\n\\007Can't create output file to update key ring.\\n\"\nde: \"\\n\\007Dateifehler bei der Aktualisierung des Schlsselbunds.\\n\"\nes: \"\\n\\007No puede crearse el fichero de salida para actualizar\\\nel anillo.\\n\"\nfr: \"\\n\\007Impossible de crer le fichier de sortie pour modifier le\\\n\\nfichier de cls\\n\"\nmutt: \"\\nCan't create output file to update key ring.\\n\"\nmuttde: \"\\nDateifehler bei der Aktualisierung des Schlsselbunds.\\n\"\n\n\"\\nKey compromise certificate created.\\n\"\nde: \"\\nDie Urkunde zum Zurckziehen des Schlssels wurde erzeugt.\\n\"\nes: \"\\nCreado el certificado de compromiso de clave.\\n\"\nfr: \"\\nCertificat de compromission de cl cr.\\n\"\nmuttde: \"\\nDie Urkunde zum Zurckziehen des Schlssels wurde erzeugt.\\n\"\n\n\"\\n\\007Key is already signed by user '%s'.\\n\"\nde: \"\\n\\007Der Schlssel wurde von \\\"%s\\\"\\nbereits unterschrieben.\\n\"\nes: \"\\n\\007La clave ya ha sido firmada por '%s'.\\n\"\nfr: \"\\n\\007La cl est dj signe par l'utilisateur '%s'.\\n\"\nmutt: \"\\nKey is already signed by user '%s'.\\n\"\nmuttde: \"\\nDer Schlssel wurde von \\\"%s\\\"\\nbereits unterschrieben.\\n\"\n\n\"\\n\\nREAD CAREFULLY:  Based on your own direct first-hand knowledge, \\\nare\\nyou absolutely certain that you are prepared to solemnly certify \\\nthat\\nthe above public key actually belongs to the user specified by \\\nthe\\nabove user ID (y/N)? \"\nde: \"\\nSORGFLTIG LESEN: Bist Du, gesttzt auf eigenes, direktes Wissen aus\\n\\\nerster Hand, absolut sicher, da Du zuverlssig beglaubigen kannst, da der\\n\\\noben angezeigte ffentliche Schlssel wirklich zu der oben genannten Person\\n\\\ngehrt? (j/N) \"\nes: \"\\n\\nLEE ATENTAMENTE: Segn tu conocimiento directo,\\n\\\nests absolutamente seguro de poder certificar solemnemente que la\\n\\\nclave pblica pertenece realmente al usuario especificado por\\n\\\neste identificador (s/N)? \"\nfr: \"\\n\\nLIRE ATTENTIVEMENT: Selon votre propre connaissance directe,\\n\\\ntes vous absoluement certain(e) d'tre prt(e)  certifier\\n\\\nsolennellement que la cl publique ci-dessus appartient effectivement \\n\\\nla personne spcifie par le nom d'utilisateur ci-dessus (o/N)? \"\nmuttde: \"\\nSORGFLTIG LESEN: Bist Du, gesttzt auf eigenes, direktes Wissen aus\\n\\\nerster Hand, absolut sicher, da Du zuverlssig beglaubigen kannst, da der\\n\\\noben angezeigte ffentliche Schlssel wirklich zu der oben genannten Person\\n\\\ngehrt? (j/N) \"\n\n\"\\nKey signature certificate added.\\n\"\nde: \"\\n\\nDer Schlssel wurde mit Deiner Unterschrift beglaubigt.\\n\"\nes: \"\\nSe ha aadido el certificado de firma.\\n\"\nfr: \"\\nCertificat de signature de cl ajout.\\n\"\nmuttde: \"\\n\\nDer Schlssel wurde mit Deiner Unterschrift beglaubigt.\\n\"\n\n\"\\nError: Key for signing userid '%s'\\n\\\ndoes not appear in public keyring '%s'.\\n\\\nThus, a signature made with this key cannot be checked on this keyring.\\n\"\nde: \"\\nFEHLER: Der Schlssel fr eine Unterschrift unter die Benutzer-ID\\n\\\n\\\"%s\\\" ist nicht im ffentlichen\\n\\\nSchlsselbund '%s' enthalten. Deshalb ist eine mit diesem\\n\\\nSchlssel erzeugte Unterschrift mit diesem Schlsselbund nicht berprfbar.\\n\"\nes: \"\\nError: La clave del firmante '%s'\\n\\\nno se encuentra en el anillo '%s'.\\n\\\nNo puede comprobarse la firma realizada con esa clave.\\n\"\nfr: \"\\nErreur: La clef du signataire id '%s'\\n\\\nest absente du fichier de clefs publiques '%s'\\n\\\nen consequence, une signature faite avec cette clef ne peut etre verifiee.\\n\"\nmuttde: \"\\nFEHLER: Der Schlssel fr eine Unterschrift unter die Benutzer-ID\\n\\\n\\\"%s\\\" ist nicht im ffentlichen\\n\\\nSchlsselbund '%s' enthalten. Deshalb ist eine mit diesem\\n\\\nSchlssel erzeugte Unterschrift mit diesem Schlsselbund nicht berprfbar.\\n\"\n\n\"\\nLooking for key for user '%s':\\n\"\nde: \"\\nSuche den Schlssel fr \\\"%s\\\":\\n\"\nes: \"\\nBuscando la clave del usuario '%s':\\n\"\nfr: \"\\nRecherche de la cl pour l'utilisateur '%s':\\n\"\nmuttde: \"\\nSuche den Schlssel fr \\\"%s\\\":\\n\"\n\n\"\\n\\007Can't open ciphertext file '%s'\\n\"\nde: \"\\n\\007FEHLER beim ffnen der verschlsselten Datei '%s'.\\n\"\nes: \"\\n\\007No puede abrirse el fichero cifrado '%s'\\n\"\nfr: \"\\n\\007Ouverture du fichier chiffr '%s' impossible\\n\"\nmutt: \"\\nCan't open ciphertext file '%s'\\n\"\nmuttde: \"\\nFEHLER beim ffnen der verschlsselten Datei '%s'.\\n\"\n\n\"\\nFile '%s' has signature, but with no text.\"\nde: \"\\nDie Datei '%s' enthlt eine Unterschrift, aber keinen Text.\"\nes: \"\\nEl fichero '%s' tiene firma, pero no texto.\"\nfr: \"\\nLe fichier '%s'  une signature, mais pas de texte.\"\nmutt: \" \"\nmuttde: \" \"\n\n\"\\nText is assumed to be in file '%s'.\\n\"\nde: \"\\nDer Text knnte sich in der Datei '%s' befinden.\\n\"\nes: \"\\nSe asume que el texto se encuentra en el fichero '%s'.\\n\"\nfr: \"\\nLe texte est suppos tre dans le fichier '%s'.\\n\"\nmutt: \" \"\nmuttde: \" \"\n\n\"\\nPlease enter filename of material that signature applies to: \"\nde: \"\\nName der Datei, zu der die Unterschrift gehrt: \"\nes: \"\\nIntroduzca el nombre del fichero al que se aplica la firma: \"\nfr: \"SVP indiques le nom du fichier que vous voulez signer: \"\nmuttde: \"\\nName der Datei, zu der die Unterschrift gehrt: \"\n\n\"File signature applies to?\"\nde: \"Die Unterschrift gehrt zu welcher Datei?\"\nes: \"Dnde se aplica la firma?\"\nfr: \"Ce fichier signataire s'applique  quoi? \"\nmuttde: \"Die Unterschrift gehrt zu welcher Datei?\"\n\n\"\\n\\007Can't open file '%s'\\n\"\nde: \"\\n\\007FEHLER beim ffnen der Datei '%s'.\\n\"\nes: \"\\n\\007No puede abrirse el fichero '%s'\\n\"\nfr: \"\\n\\007Ouverture du fichier '%s' impossible\\n\"\nmutt: \"\\nCan't open file '%s'\\n\"\nmuttde: \"\\nFEHLER beim ffnen der Datei '%s'.\\n\"\n\n\"File type: '%c'\\n\"\nde: \"\\nDateityp: '%c'\\n\"\nes: \"\\nTipo de fichero: '%c'\\n\"\nfr: \"Type de fichier: '%c'\\n\"\nmuttde: \"\\nDateityp: '%c'\\n\"\n\n\"Original plaintext file name was: '%s'\\n\"\nde: \"Der ursprngliche Name der Klartextdatei war: '%s'.\\n\"\nes: \"El nombre del fichero original era: '%s'\\n\"\nfr: \"Le nom originel du fichier en clair tait: '%s'\\n\"\nmuttde: \"Der ursprngliche Name der Klartextdatei war: '%s'.\\n\"\n\n\"\\nWARNING: Can't find the right public key-- can't check signature \\\nintegrity.\\n\"\nde: \"\\nWARNUNG: Der passende ffentliche Schlssel wurde nicht gefunden.\\n\\\nEine berprfung der Unterschrift ist nicht mglich.\\n\"\nes: \"\\nAVISO: No se encuentra la clave pblica necesaria para comprobar\\n\\\nla integridad de la firma.\\n\"\nfr: \"\\nATTENTION: impossible de trouver la cl publique adquate et de\\n\\\nvrifier l'integrit de la signature.\\n\"\nmuttde: \"\\nWARNUNG: Der passende ffentliche Schlssel wurde nicht gefunden.\\n\\\nEine berprfung der Unterschrift ist nicht mglich.\\n\"\n\n\"\\007\\nUnrecognized message digest algorithm.\\n\\\nThis may require a newer version of PGP.\\n\\\nCan't check signature integrity.\\n\"\nde: \"\\007\\nDer Algorithmus fr die Textprfsumme ist unbekannt.\\n\\\nDu brauchst wahrscheinlich eine neuere Version von PGP.\\n\\\nEine berprfung der Unterschrift ist nicht mglich.\\n\"\nes: \"\\007\\nAlgoritmo desconocido de resumen de mensaje.\\n\\\nPuede necesitarse una nueva versin de PGP.\\n\\\nNo puede comprobarse la integridad de la firma.\\n\"\nfr: \"\\007Algorithme de digest inconnu.\\n\\\nCeci peut vouloir dire que vous avez besoin d'une version plus rcente\\n\\\nde PGP. Incapable de vrifier la signature.\\n\"\nmutt: \"\\nUnrecognized message digest algorithm.\\n\\\nThis may require a newer version of PGP.\\n\\\nCan't check signature integrity.\\n\"\nmuttde: \"\\nDer Algorithmus fr die Textprfsumme ist unbekannt.\\n\\\nDu brauchst wahrscheinlich eine neuere Version von PGP.\\n\\\nEine berprfung der Unterschrift ist nicht mglich.\\n\"\n\n\"\\a\\nMalformed or obsolete signature.  Can't check signature \\\nintegrity.\\n\"\nde: \"\\a\\nFehlerhafte oder veraltete Unterschrift! berprfung nicht mglich.\\n\"\nes: \"\\a\\nFirma incorrecta u obsoleta.\\n\\\nNo puede comprobarse su integridad.\\n\"\nfr: \"\\a\\nSignature dforme ou obsolte. Vrification impossible. \\n\"\nmuttde: \"\\a\\nFehlerhafte oder veraltete Unterschrift! berprfung nicht mglich.\\n\"\n\n\"\\a\\nSigning key is too large.  Can't check signature integrity.\\n\"\nde: \"\\a\\nDer unterschreibende Schlssel ist zu lang! Eine berprfung der\\n\\\nUnterschrift ist deshalb nicht mglich.\\n\"\nes: \"\\a\\nLa clave para firmar es demasiado grande.\\n\\\nNo puede comprobarse la integridad de la firma.\"\nfr: \"La clef signataire est trop grande. Incapable d'en vrifier l'intgrit. \\n\"\nmuttde: \"\\a\\nDer unterschreibende Schlssel ist zu lang! Eine berprfung der\\n\\\nUnterschrift ist deshalb nicht mglich.\\n\"\n\n\"\\n\\007Error: RSA-decrypted block is corrupted.\\n\\\nThis may be caused either by corrupted data or by using the wrong RSA key.\\n\\\n\"\nde: \"\\n\\007FEHLER: Die mit RSA entschlsselten Daten sind fehlerhaft.\\n\\\nUrsache: beschdigte Daten oder ein falscher RSA-Schlssel.\\n\"\nes: \"\\n\\007Error: El bloque desencriptado RSA est daado.\\n\\\nPuede deberse a un problema en los datos o a una clave RSA equivocada.\\n\"\nfr: \"\\n\\007Erreur: le block dechiffr par RSA est endommag.\\n\\\nCeci est peut tre caus par des donnes endommages our par\\n\\\nl'utilisation d'une mauvaise cl RSA.\\n\"\nmutt: \"\\nError: RSA-decrypted block is corrupted.\\n\\\nThis may be caused either by corrupted data or by using the wrong RSA key.\\n\\\n\"\nmuttde: \"\\nFEHLER: Die mit RSA entschlsselten Daten sind fehlerhaft.\\n\\\nUrsache: beschdigte Daten oder ein falscher RSA-Schlssel.\\n\"\n\n\"WARNING: Bad signature, doesn't match file contents!\"\nde: \"WARNUNG: Die Unterschrift stimmt nicht mit dem Datei-Inhalt berein!\"\nes: \"ADVERTENCIA: Firma incorrecta, no coincide con el contenido\\\ndel fichero\\n\"\nfr: \"ATTENTION: Mauvaise signature, ne correspond pas au contenu!\"\nmuttde: \"WARNUNG: Die Unterschrift stimmt nicht mit dem Datei-Inhalt berein!\"\n\n\"\\nBad signature from user \\\"%s\\\".\\n\"\nde: \"\\nFEHLERHAFTE Unterschrift von \\\"%s\\\",\\n\"\nes: \"\\nFirma incorrecta de \\\"%s\\\".\\n\"\nfr: \"\\nMauvaise signature de l'utilisateur \\\"%s\\\".\\n\"\nmuttde: \"\\nFEHLERHAFTE Unterschrift von \\\"%s\\\",\\n\"\n\n\"Signature made %s using %d-bit key, key ID %s\\n\"\nde: \"Unterschrift erzeugt am %s mit %d-Bit-Schlssel 0x%s.\\n\"\nes: \"Firma realizada el %s con una clave de %d bits, identificador %s\\n\"\nfr: \"Signature faite %s en utilisant un clef de %d bits. Id de la clef:%s\\n\"\nmuttde: \"Unterschrift erzeugt am %s mit %d-Bit-Schlssel 0x%s.\\n\"\n\n\"\\nPress ENTER to continue...\"\nde: \"\\nWeiter mit Return...\"\nes: \"\\nPulse 'Enter' para continuar...\"\nfr: \"\\nAppuyez sur la touche Retour ou Entre pour continuer...\"\nmuttde: \"\\nWeiter mit Return...\"\n\n\"\\nGood signature from user \\\"%s\\\".\\n\"\nde: \"\\nBESTTIGTE Unterschrift von \\\"%s\\\",\\n\"\nes: \"\\nFirma correcta de \\\"%s\\\".\\n\"\nfr: \"\\nBonne signature de l'utilisateur \\\"%s\\\".\\n\"\nmuttde: \"\\nBESTTIGTE Unterschrift von \\\"%s\\\",\\n\"\n\n\"\\nSignature and text are separate.  No output file produced. \"\nde: \"\\nUnterschrift und Text sind getrennt. Es wurde keine Ausgabedatei erzeugt.\"\nes: \"\\nLa firma y el texto estn separados.\\n\\\nNo se produce fichero de salida. \"\nfr: \"\\nLa signature et le texte sont spars. Fichier de sortie non produit.\"\nmuttde: \"\\nUnterschrift und Text sind getrennt. Es wurde keine Ausgabedatei erzeugt.\"\n\n\"\\n\\007Can't create plaintext file '%s'\\n\"\nde: \"\\n\\007FEHLER beim Erzeugen der Klartextdatei '%s'.\\n\"\nes: \"\\n\\007No puede crearse el fichero normal '%s'\\n\"\nfr: \"\\n\\007Creation du fichier en clair '%s' impossible.\\n\"\nmutt: \"\\nCan't create plaintext file '%s'\\n\"\nmuttde: \"\\nFEHLER beim Erzeugen der Klartextdatei '%s'.\\n\"\n\n\"\\n\\007Signature file '%s' already exists.  Overwrite (y/N)? \"\nde: \"\\n\\007Die Unterschriftsdatei '%s'\\nexistiert bereits. berschreiben? (j/N) \"\nes: \"\\n\\007El fichero de firma '%s' ya existe.\\n\\\nSe sobreescribe (s/N)? \"\nfr: \"\\n\\007Le fichier de signature '%s' existe dj.  A craser (o/N)? \"\nmutt: \"\\nSignature file '%s' already exists.  Overwrite (y/N)? \"\nmuttde: \"\\nDie Unterschriftsdatei '%s'\\nexistiert bereits. berschreiben? (j/N) \"\n\n\"\\nWriting signature certificate to '%s'\\n\"\nde: \"\\nDie Unterschrift wird in die Datei '%s' geschrieben.\\n\"\nes: \"\\nEscribiendo el certificado de firma para '%s'\\n\"\nfr: \"\\nEcriture du certificat de signature dans '%s'\\n\"\nmuttde: \"\\nDie Unterschrift wird in die Datei '%s' geschrieben.\\n\"\n\n\"\\n\\007Error: Badly-formed or corrupted signature certificate.\\n\"\nde: \"\\n\\007FEHLER: Format- oder Datenfehler in der Unterschrift.\\n\"\nes: \"\\n\\007Error: Certificado de firma incorrecto o daado.\\n\"\nfr: \"\\n\\007Erreur: certificat de signature mal form ou endommag\\n\"\nmutt: \"\\nError: Badly-formed or corrupted signature certificate.\\n\"\nmuttde: \"\\nFEHLER: Format- oder Datenfehler in der Unterschrift.\\n\"\n\n\"File \\\"%s\\\" does not have a properly-formed signature.\\n\"\nde: \"Die Datei '%s' hat keine formal korrekte Unterschrift.\\n\"\nes: \"El fichero \\\"%s\\\" no tiene una firma construida correctamente.\\n\"\nfr: \"Le fichier \\\"%s\\\" n'a pas une signature correctement forme.\\n\"\nmuttde: \"Die Datei '%s' hat keine formal korrekte Unterschrift.\\n\"\n\n\"compressed.  \"\nde: \"gepackt.  \"\nes: \"comprimido.  \"\nfr: \"comprim.  \"\nmuttde: \"gepackt.  \"\n\n\"\\n\\007Can't create compressed file '%s'\\n\"\nde: \"\\n\\007FEHLER beim Erzeugen der gepackten Datei '%s'.\\n\"\nes: \"\\n\\007No puede crearse el fichero comprimido '%s'\\n\"\nfr: \"\\n\\007Cration du fichier compress '%s' impossible\\n\"\nmutt: \"\\nCan't create compressed file '%s'\\n\"\nmuttde: \"\\nFEHLER beim Erzeugen der gepackten Datei '%s'.\\n\"\n\n\"Compressing file...\"\nde: \"Packen der Datei...\"\nes: \"Comprimiendo el fichero...\"\nfr: \"Compression du fichier...\"\nmuttde: \"Packen der Datei...\"\n\n\"\\n\\007Can't create ciphertext file '%s'\\n\"\nde: \"\\n\\007FEHLER beim Erzeugen der verschlsselten\\nAusgabedatei '%s'.\\n\"\nes: \"\\n\\007No puede crearse el fichero cifrado '%s'\\n\"\nfr: \"\\n\\007Cration du fichier chiffr '%s' impossible.\\n\"\nmutt: \"\\nCan't create ciphertext file '%s'\\n\"\nmuttde: \"\\nFEHLER beim Erzeugen der verschlsselten\\nAusgabedatei '%s'.\\n\"\n\n\"\\nYou need a pass phrase to encrypt the file. \"\nde: \"\\nDu brauchst ein Mantra zum Verschlsseln der Datei.\"\nes: \"\\nSe necesita una contrasea para encriptar el fichero. \"\nfr: \"\\nUn mot de passe est ncessaire pour chiffrer ce fichier. \"\nmuttde: \"\\nDu brauchst ein Mantra zum Verschlsseln der Datei.\"\n\n\"\\n\\007Cannot find the public key matching userid '%s'\\n\\\nThis user will not be able to decrypt this message.\\n\"\nde: \"\\n\\007Der ffentliche Schlssel zu Benutzer-ID \\\"%s\\\"\\n\\\nist nicht aufzufinden. Dieser Empfnger wird diese Nachricht nicht\\n\\\nentschlsseln knnen.\\n\"\nes: \"\\n\\007No puede encontrarse la clave pblica de '%s'\\n\\\nEse usuario no podr descifrar el mensaje.\\n\"\nfr: \"\\n\\007Impossible de trouver la cl publique pour l'utilisateur '%s'\\n\\\nCet utilisateur ne pourra pas dchiffrer ce message.\\n\"\nmutt: \"\\nCannot find the public key matching userid '%s'\\n\\\nThis user will not be able to decrypt this message.\\n\"\nmuttde: \"\\nDer ffentliche Schlssel zu Benutzer-ID \\\"%s\\\"\\n\\\nist nicht aufzufinden. Dieser Empfnger wird diese Nachricht nicht\\n\\\nentschlsseln knnen.\\n\"\n\n\"Skipping userid %s\\n\"\nde: \"Die Benutzer-ID \\\"%s\\\" wird bersprungen.\\n\"\nes: \"Saltando el identificador %s\\n\"\nfr: \"je passe l'utiliateur %s\\n\"\nmuttde: \"Die Benutzer-ID \\\"%s\\\" wird bersprungen.\\n\"\n\n\"\\n\\007'%s' is not a cipher file.\\n\"\nde: \"\\n\\007'%s' ist keine verschlsselte Datei.\\n\"\nes: \"\\n\\007'%s' no es un fichero cifrado.\\n\"\nfr: \"\\n\\007'%s' n'est pas un fichier chiffr.\\n\"\nmutt: \"\\n'%s' is not a cipher file.\\n\"\nmuttde: \"\\n'%s' ist keine verschlsselte Datei.\\n\"\n\n\"\\n\\007Error: RSA block is possibly malformed.  Old format, maybe?\\n\"\nde: \"\\n\\007FEHLER: RSA-Block mglicherweise fehlerhaft. Vielleicht altes Format?\\n\"\nes: \"\\n\\007Error: El bloque RSA est mal formado.\\n\\\nQuiz se trate de un formato antiguo.\\n\"\nfr: \"\\n\\007Erreur: Block RSA malform, vieux format ???\"\nmutt: \"\\nError: RSA block is possibly malformed.  Old format, maybe?\\n\"\nmuttde: \"\\nFEHLER: RSA-Block mglicherweise fehlerhaft. Vielleicht altes Format?\\n\"\n\n\"\\nThis message can only be read by:\\n\"\nde: \"\\nDiese Nachricht kann nur gelesen werden von:\\n\"\nes: \"\\nEste mensaje slo puede leerlo:\\n\"\nfr: \"\\nCe message ne peut tre lu que par:\\n\"\nmuttde: \"\\nDiese Nachricht kann nur gelesen werden von:\\n\"\n\n\"  keyID: %s\\n\"\nde: \"  Schlssel-ID: %s\\n\"\nes: \"  identificador: %s\\n\"\nfr: \"   Id de la clef: %s \\n\"\nmuttde: \"  Schlssel-ID: %s\\n\"\n\n\"\\n\\007You do not have the secret key needed to decrypt this file.\\n\"\nde: \"\\n\\007Dir fehlt der private Schlssel zum Entschlsseln dieser Datei.\\n\"\nes: \"\\n\\007No tienes la clave secreta necesaria para descifrar\\\neste fichero.\\n\"\nfr: \"\\n\\007Vous n'avez pas la cl secrte requise pour dchiffrer\\\n\\nce fichier.\\n\"\nmutt: \"\\nYou do not have the secret key needed to decrypt this file.\\n\"\nmuttde: \"\\nDir fehlt der private Schlssel zum Entschlsseln dieser Datei.\\n\"\n\n\"\\n\\007Error: Decrypted plaintext is corrupted.\\n\"\nde: \"\\n\\007FEHLER: Der entschlsselte Klartext ist fehlerhaft.\\n\"\nes: \"\\n\\007Error: El texto en claro desencriptado est daado.\\n\"\nfr: \"\\n\\007Erreur: le fichier dchiffr est endommag.\\n\"\nmutt: \"\\nError: Decrypted plaintext is corrupted.\\n\"\nmuttde: \"\\nFEHLER: Der entschlsselte Klartext ist fehlerhaft.\\n\"\n\n\"\\nYou need a pass phrase to decrypt this file. \"\nde: \"\\nDu brauchst ein Mantra zum Entschlsseln dieser Datei.\"\nes: \"\\nSe necesita la contrasea para desencriptar este fichero. \"\nfr: \"\\nUn mot de passe est ncessaire pour dchiffrer ce fichier. \"\nmuttde: \"\\nDu brauchst ein Mantra zum Entschlsseln dieser Datei.\"\n\n\"\\n\\007Error:  Bad pass phrase.\\n\"\nde: \"\\n\\007FEHLER: Falsches Mantra!\\n\"\nes: \"\\n\\007Error:  Contrasea incorrecta.\\n\"\nfr: \"\\n\\007Erreur:  Mauvais mot de passe.\\n\"\nmutt: \"\\nError:  Bad pass phrase.\\n\"\nmuttde: \"\\nFEHLER: Falsches Mantra!\\n\"\n\n\"Pass phrase appears good. \"\nde: \"\\nDas Mantra scheint zu stimmen.\\n\"\nes: \"Parece correcta. \"\nfr: \"Le mot de passe semble correct. \"\nmuttde: \"\\nDas Mantra scheint zu stimmen.\\n\"\n\n\"Decompressing plaintext...\"\nde: \"Entpacken des Klartextes...\"\nes: \"Descomprimiendo el texto normal...\"\nfr: \"Decompression du texte en clair...\"\nmuttde: \"Entpacken des Klartextes...\"\n\n\"\\n\\007Can't open compressed file '%s'\\n\"\nde: \"\\n\\007FEHLER beim ffnen der gepackten Datei '%s'.\\n\"\nes: \"\\n\\007No puede abrirse el fichero comprimido '%s'\\n\"\nfr: \"\\n\\007Ouverture du fichier compress '%s' impossible.\\n\"\nmutt: \"\\nCan't open compressed file '%s'\\n\"\nmuttde: \"\\nFEHLER beim ffnen der gepackten Datei '%s'.\\n\"\n\n\"\\007\\nUnrecognized compression algorithm.\\n\\\nThis may require a newer version of PGP.\\n\"\nde: \"\\007\\nUnbekanntes Pack-Verfahren. Eine neuere Version von PGP knnte notwendig sein.\\n\"\nes: \"\\007\\nAlgoritmo de compresin no reconocido.\\n\\\nPuede necesitarse una nueva versin de PGP.\\n\"\nfr: \"\\007\\nAlgorithme de compression non reconnu.\\n\\\nCeci peut ncessiter une nouvelle version de PGP.\\n\"\nmutt: \"\\nUnrecognized compression algorithm.\\n\\\nThis may require a newer version of PGP.\\n\"\nmuttde: \"\\nUnbekanntes Pack-Verfahren. Eine neuere Version von PGP knnte notwendig sein.\\n\"\n\n\"\\n\\007Can't create decompressed file '%s'\\n\"\nde: \"\\n\\007FEHLER beim Erzeugen der entpackten Datei '%s'.\\n\"\nes: \"\\n\\007No puede crearse el fichero descomprimido '%s'\\n\"\nfr: \"\\n\\007Cration du fichier dcompress '%s' impossible.\\n\"\nmutt: \"\\nCan't create decompressed file '%s'\\n\"\nmuttde: \"\\nFEHLER beim Erzeugen der entpackten Datei '%s'.\\n\"\n\n\"\\n\\007Decompression error.  Probable corrupted input.\\n\"\nde: \"\\n\\007FEHLER beim Entpacken! Wahrscheinlich beschdigte Eingangsdaten.\\n\"\nes: \"\\n007Error en descompresin. Probable entrada daada.\\n\"\nfr: \"\\n\\007Erreur de Decompression, entre probablement corrompue\"\nmutt: \"\\nDecompression error.  Probable corrupted input.\\n\"\nmuttde: \"\\nFEHLER beim Entpacken! Wahrscheinlich beschdigte Eingangsdaten.\\n\"\n\n\"done.  \"\nde: \"fertig.  \"\nes: \"finalizado.  \"\nfr: \"termin.  \"\nmuttde: \"fertig.  \"\n\n\"Truncating filename '%s' \"\nde: \"Krzung des Dateinamens '%s' \"\nes: \"Truncando el nombre de fichero '%s' \"\nfr: \"troncation du fichier '%s'\"\nmuttde: \"Krzung des Dateinamens '%s' \"\n\n\"y\"\nde: \"j\"\nes: \"s\"\nfr: \"o\"\nmuttde: \"j\"\n\n\"n\"\nde: \"n\"\nes: \"n\"\nfr: \"n\"\nmuttde: \"n\"\n\n\"\\nShould '%s' be renamed to '%s' (Y/n)? \"\nde: \"\\nSoll '%s' in '%s' umbenannt werden? (J/n) \"\nes: \"\\nRenombrar '%s' como '%s' (S/n)? \"\nfr: \"\\nEst-ce que '%s' doit tre renomm '%s' (O/n)? \"\nmuttde: \"\\nSoll '%s' in '%s' umbenannt werden? (J/n) \"\n\n\"\\nDisk full.\\n\"\nde: \"\\nDie Platte ist voll!\\n\"\nes: \"\\nDisco lleno.\\n\"\nfr: \"\\nDisque plein.\\n\"\nmuttde: \"\\nDie Platte ist voll!\\n\"\n\n\"\\nFile write error.\\n\"\nde: \"\\nFEHLER beim Schreiben einer Datei.\\n\"\nes: \"\\nError de escritura del fichero.\\n\"\nfr: \"\\nErreur d'criture sur fichier.\\n\"\nmuttde: \"\\nFEHLER beim Schreiben einer Datei.\\n\"\n\n\"\\007Write error on stdout.\\n\"\nde: \"\\n\\007FEHLER beim Schreiben auf stdout (Standard-Ausgabe).\\n\"\nes: \"\\007Error de escritura en la salida estndar (\\\"stdout\\\").\\n\"\nfr: \"\\007Erreur d'criture sur la sortie standard.\\n\"\nmutt: \"Write error on stdout.\\n\"\nmuttde: \"\\nFEHLER beim Schreiben auf stdout (Standard-Ausgabe).\\n\"\n\n\"\\n\\007Cannot create temporary file '%s'\\n\"\nde: \"\\n\\007FEHLER beim Erzeugen der Temporrdatei '%s'.\\n\"\nes: \"\\n\\007No puede crearse el fichero temporal '%s'\\n\"\nfr: \"\\n\\007Cration du fichier temporaire '%s' impossible\\n\"\nmutt: \"\\nCannot create temporary file '%s'\\n\"\nmuttde: \"\\nFEHLER beim Erzeugen der Temporrdatei '%s'.\\n\"\n\n\"Can't create output file '%s'\\n\"\nde: \"\\nFEHLER beim Erzeugen der Ausgabedatei '%s'.\\n\"\nes: \"No puede crearse el fichero '%s'\\n\"\nfr: \"Cration du fichier '%s' impossible.\\n\"\nmuttde: \"\\nFEHLER beim Erzeugen der Ausgabedatei '%s'.\\n\"\n\n\"\\n\\007Output file '%s' already exists.\\n\"\nde: \"\\n\\007Die Ausgabedatei '%s' existiert bereits.\\n\"\nes: \"\\n\\007El fichero de salida '%s' ya existe.\\n\"\nfr: \"\\n\\007Le ficher de sortie '%s' existe dj.\\n\"\nmutt: \"\\nOutput file '%s' already exists.\\n\"\nmuttde: \"\\nDie Ausgabedatei '%s' existiert bereits.\\n\"\n\n\"\\n\\007Output file '%s' already exists.  Overwrite (y/N)? \"\nde: \"\\n\\007Die Ausgabedatei '%s' existiert bereits. berschreiben? (j/N) \"\nes: \"\\n\\007El fichero de salida '%s' ya existe. Sobrescribir (s/N)? \"\nfr: \"\\n\\007Le fichier de sortie '%s' existe dj.  A craser (o/N)? \"\nmutt: \"\\nOutput file '%s' already exists.  Overwrite (y/N)? \"\nmuttde: \"\\nDie Ausgabedatei '%s' existiert bereits. berschreiben? (j/N) \"\n\n\"Enter new file name:\"\nde: \"Gib den neuen Dateinamen ein:\"\nes: \"Introduzca el nuevo nombre de fichero: \"\nfr: \"Donnez un nouveau nom de fichier:\"\nmuttde: \"Gib den neuen Dateinamen ein:\"\n\n\"Replacing signature from keyID %s on userid \\\"%s\\\"\\n\"\nde: \"Die Unterschrift von der Schlssel-ID %s unter der\\n\\\nBenutzer-ID \\\"%s\\\" wird ersetzt.\\n\"\nes: \"Sustituyendo la firma de la clave %s para el usuario\\n\\\n\\\"%s\\\"\\n\"\nfr: \"Remplacement la signature de keyID %s de l'utilisateur '%s'\\n\"\nmuttde: \"Die Unterschrift von der Schlssel-ID %s unter der\\n\\\nBenutzer-ID \\\"%s\\\" wird ersetzt.\\n\"\n\n\"Verifying signature from %s\\n\"\nde: \"berprfung der Unterschrift von \\\"%s\\\"\\n\"\nes: \"Verificando la firma de %s\\n\"\nfr: \"Vrification de la signature de %s\\n\"\nmuttde: \"berprfung der Unterschrift von \\\"%s\\\"\\n\"\n\n\"on userid \\\"%s\\\"\\n\"\nde: \"unter \\\"%s\\\".\\n\"\nes: \"en el identificador \\\"%s\\\"\\n\"\nfr: \"pour le nom d'utilisateur \\\"%s\\\"\\n\"\nmuttde: \"unter \\\"%s\\\".\\n\"\n\n\"Replacing signature from %s\\n\"\nde: \"Ersetzung der Unterschrift von \\\"%s\\\"\\n\"\nes: \"Sustituyendo la firma de %s\\n\"\nfr: \"Remplacement de la signature de %s\"\nmuttde: \"Ersetzung der Unterschrift von \\\"%s\\\"\\n\"\n\n\"Verification Failed\\n\"\nde: \"\\nDie berprfung ist fehlgeschlagen!\\n\"\nes: \"Verificacin fallida\\n\"\nfr: \"Echec de la vrification\"\nmuttde: \"\\nDie berprfung ist fehlgeschlagen!\\n\"\n\n\"New signature from keyID %s on userid \\\"%s\\\"\\n\"\nde: \"Neue Unterschrift von %s unter \\\"%s\\\".\\n\"\nes: \"Nueva firma de la clave %s para el usuario \\\"%s\\\"\\n\"\nfr: \"Nouvelle signature de la cl %s sur l'utilisateur \\\"%s\\\"\\n\"\nmuttde: \"Neue Unterschrift von %s unter \\\"%s\\\".\\n\"\n\n\"New signature from %s\\n\"\nde: \"Neue Unterschrift von \\\"%s\\\"\\n\"\nes: \"Nueva firma de %s\\n\"\nfr: \"\\nNouvelle signature de %s\\n\"\nmuttde: \"Neue Unterschrift von \\\"%s\\\"\\n\"\n\n\"Key revocation certificate from \\\"%s\\\".\\n\"\nde: \"Urkunde zum Zurckziehen eines Schlssels\\nvon \\\"%s\\\".\\n\"\nes: \"Certificado de revocacin de clave de \\\"%s\\\".\\n\"\nfr: \"Certificat de rvocation de cl de \\\"%s\\\".\\n\"\nmuttde: \"Urkunde zum Zurckziehen eines Schlssels\\nvon \\\"%s\\\".\\n\"\n\n\"\\n\\007WARNING:  File '%s' contains bad revocation certificate.\\n\"\nde: \"\\n\\007WARNUNG: Die Datei '%s' enthlt eine\\n\\\nfehlerhafte Urkunde zum Zurckziehen eines Schlssels.\\n\"\nes: \"\\n\\007AVISO: El fichero '%s' tiene un certificado de revocacin\\\nincorrecto.\\n\"\nfr: \"\\n\\007ATTENTION: the fichier '%s' contient de mauvais certificats\\n\\\nde rvocation.\\n\"\nmutt: \"\\nWARNING:  File '%s' contains bad revocation certificate.\\n\"\nmuttde: \"\\nWARNUNG: Die Datei '%s' enthlt eine\\n\\\nfehlerhafte Urkunde zum Zurckziehen eines Schlssels.\\n\"\n\n\"New userid: \\\"%s\\\".\\n\"\nde: \"Neue Benutzer-ID: \\\"%s\\\".\\n\"\nes: \"Nuevo identificador: \\\"%s\\\".\\n\"\nfr: \"Nouveau nom d'utilisateur: \\\"%s\\\".\\n\"\nmuttde: \"Neue Benutzer-ID: \\\"%s\\\".\\n\"\n\n\"\\nWill be added to the following key:\\n\"\nde: \"Sie wird zu dem folgenden Schlssel hinzugefgt:\\n\"\nes: \"\\nSe aadir a la clave siguiente:\\n\"\nfr: \"\\nSera ajout(e)  la cl suivante:\\n\"\nmuttde: \"Sie wird zu dem folgenden Schlssel hinzugefgt:\\n\"\n\n\"\\nAdd this userid (y/N)? \"\nde: \"\\nSoll diese Benutzer-ID hinzugefgt werden? (j/N) \"\nes: \"\\nAadir este identificador (s/N)? \"\nfr: \"\\nAjouter ce nom d'utilisateur (o/N)? \"\nmuttde: \"\\nSoll diese Benutzer-ID hinzugefgt werden? (j/N) \"\n\n\"\\n\\007Can't open key file '%s'\\n\"\nde: \"\\n\\007FEHLER beim ffnen der Schlsseldatei '%s'.\\n\"\nes: \"\\n\\007No puede abrirse el fichero de claves '%s'\\n\"\nfr: \"\\n\\007Ouverture du fichier de cl '%s' impossible\\n\"\nmutt: \"\\nCan't open key file '%s'\\n\"\nmuttde: \"\\nFEHLER beim ffnen der Schlsseldatei '%s'.\\n\"\n\n\"\\nKey ring file '%s' cannot be created.\\n\"\nde: \"\\nFEHLER beim Anlegen des Schlsselbunds '%s'.\\n\"\nes: \"\\nNo se puede crear el anillo de claves '%s'.\\n\"\nfr: \"\\nCration du fichier de cls '%s' impossible.\\n\"\nmuttde: \"\\nFEHLER beim Anlegen des Schlsselbunds '%s'.\\n\"\n\n\"\\nLooking for new keys...\\n\"\nde: \"\\nSuche nach neuen Schlsseln...\\n\"\nes: \"\\nBuscando nuevas claves...\\n\"\nfr: \"\\nRecherche des nouvelles cls...\\n\"\nmuttde: \"\\nSuche nach neuen Schlsseln...\\n\"\n\n\"\\n\\007Could not read key from file '%s'.\\n\"\nde: \"\\n\\007FEHLER beim Lesen des Schlssels aus Datei '%s'.\\n\"\nes: \"\\n\\007No ha podido leerse la clave en el fichero '%s'.\\n\"\nfr: \"\\n\\007Lecture impossible de la cl dans le fichier '%s'.\\n\"\nmutt: \"\\nCould not read key from file '%s'.\\n\"\nmuttde: \"\\nFEHLER beim Lesen des Schlssels aus Datei '%s'.\\n\"\n\n\"\\n\\007Warning: Key ID %s matches key ID of key already on \\n\\\nkey ring '%s', but the keys themselves differ.\\n\\\nThis is highly suspicious.  This key will not be added to ring.\\n\\\nAcknowledge by pressing return: \"\nde: \"\\n\\007WARNUNG: Die Schlssel-ID %s stimmt mit einem schon\\n\\\nim Schlsselbund '%s' vorhandenen Schlssel\\n\\\nberein, aber die Schlssel selbst sind nicht identisch.\\n\\\nDas ist hchst verdchtig! Dieser Schlssel wird nicht zum\\n\\\nSchlsselbund hinzugefgt. Mit Return besttigen: \"\nes: \"\\n\\007Advertencia: El identificador de clave %s coincide con otro\\n\\\nen el anillo '%s', pero las claves son distintas.\\n\\\nEs muy sospechoso. Esta clave no se incluir en el anillo.\\n\\\nConfirmar pulsando 'retorno': \"\nfr: \"\\n\\007Attention: l'identificateur de cl %s correspond  une cl\\\n\\ndj dans le fichier de cls '%s', mais les cls sont diffrentes.\\\n\\nCeci est trs suspect. Cette cl ne sera pas ajoute au fichier de cls.\\\n\\nAppuyez sur la touche Retour ou Entre: \"\nmutt: \"\\nWarning: Key ID %s matches key ID of key already on \\n\\\nkey ring '%s', but the keys themselves differ.\\n\\\nThis is highly suspicious.  This key will not be added to ring.\\n\\\nAcknowledge by pressing return: \"\nmuttde: \"\\nWARNUNG: Die Schlssel-ID %s stimmt mit einem schon\\n\\\nim Schlsselbund '%s' vorhandenen Schlssel\\n\\\nberein, aber die Schlssel selbst sind nicht identisch.\\n\\\nDas ist hchst verdchtig! Dieser Schlssel wird nicht zum\\n\\\nSchlsselbund hinzugefgt. Mit Return besttigen: \"\n\n\"\\nDo you want to add this key to keyring '%s' (y/N)? \"\nde: \"\\nMchtest Du diesen Schlssel zum Schlsselbund\\n'%s' hinzufgen? (j/N) \"\nes: \"\\nQuieres aadir esta clave al anillo '%s' (s/N)? \"\nfr: \"\\nVoulez vous ajouter cette cl au fichier de cls '%s' (o/N)? \"\nmuttde: \"\\nMchtest Du diesen Schlssel zum Schlsselbund\\n'%s' hinzufgen? (j/N) \"\n\n\"Key has been revoked.\\n\"\nde: \"Der Schlssel wurde zurckgezogen.\\n\"\nes: \"La clave se ha revocado.\\n\"\nfr: \"La cl a t rvoque.\\n\"\nmuttde: \"Der Schlssel wurde zurckgezogen.\\n\"\n\n\"\\n\\007Key file contains duplicate keys: cannot be added to keyring\\n\"\nde: \"\\n\\007Die Datei enthlt doppelte Schlssel, die nicht zum Schlsselbund\\n\\\nhinzugefgt werden.\\n\"\nes: \"\\n\\007El fichero contiene claves duplicadas: \\\nno puede aadirse al anillo\\n\"\nfr: \"\\n\\007Le fichier contient des cls dupliques: impossible\\n\\\nde l'ajouter au fichier de cls\\n\"\nmutt: \"\\nKey file contains duplicate keys: cannot be added to keyring\\n\"\nmuttde: \"\\nDie Datei enthlt doppelte Schlssel, die nicht zum Schlsselbund\\n\\\nhinzugefgt werden.\\n\"\n\n\"No new keys or signatures in keyfile.\\n\"\nde: \"Keine neuen Schlssel oder Unterschriften in der Datei.\\n\"\nes: \"No hay nuevas claves ni nuevas firmas en el fichero.\\n\"\nfr: \"Pas de nouvelles cls ou signatures dans le fichier de cls.\\n\"\nmuttde: \"Keine neuen Schlssel oder Unterschriften in der Datei.\\n\"\n\n\"\\nKeyfile contains:\\n\"\nde: \"\\nDie Datei enthlt folgende Schlssel:\\n\"\nes: \"\\nEl fichero de claves contiene:\\n\"\nfr: \"\\nLe fichier de cls contient:\\n\"\nmuttde: \"\\nDie Datei enthlt folgende Schlssel:\\n\"\n\n\"%4d new key(s)\\n\"\nde: \"%4d neue(n) Schlssel\\n\"\nes: \"%4d nueva(s) clave(s)\\n\"\nfr: \"%4d nouvelle(s) cl(s)\\n\"\nmuttde: \"%4d neue(n) Schlssel\\n\"\n\n\"%4d new signatures(s)\\n\"\nde: \"%4d neue Unterschrift(en)\\n\"\nes: \"%4d nueva(s) firma(s)\\n\"\nfr: \"%4d nouvelle(s) signatures(s)\\n\"\nmuttde: \"%4d neue Unterschrift(en)\\n\"\n\n\"%4d new user ID(s)\\n\"\nde: \"%4d neue Benutzer-ID(s)\\n\"\nes: \"%4d nuevo(s) identificador(es) de usuario\\n\"\nfr: \"%4d nouveau(x) nom(s) d'utilisateur\\n\"\nmuttde: \"%4d neue Benutzer-ID(s)\\n\"\n\n\"%4d new revocation(s)\\n\"\nde: \"%4d neue Urkunde(n) zum Zurckziehen von Schlsseln\\n\"\nes: \"%4d nueva(s) revocacion(es)\\n\"\nfr: \"%4d nouvelle(s) rvocation(s)\\n\"\nmuttde: \"%4d neue Urkunde(n) zum Zurckziehen von Schlsseln\\n\"\n\n\"\\nNo keys found in '%s'.\\n\"\nde: \"\\nKeine Schlssel in '%s' gefunden.\\n\"\nes: \"\\nNo se encuentran claves en '%s'.\\n\"\nfr: \"\\nPas de cls trouves dans '%s'.\\n\"\nmuttde: \"\\nKeine Schlssel in '%s' gefunden.\\n\"\n\n\"\\nOne or more of the new keys are not fully certified.\\n\\\nDo you want to certify any of these keys yourself (y/N)? \"\nde: \"\\nEin oder mehrere neue Schlssel sind nicht ausreichend beglaubigt.\\n\\\nWillst Du sie selbst beglaubigen? (j/N) \"\nes: \"\\nUna o ms de las nuevas claves no estn completamente certificadas.\\n\\\nQuieres certificar alguna de ellas t mismo (s/N)? \"\nfr: \"\\nUne ou plusieurs des nouvelles cls ne sont pas compltement\\\n\\ncertifies. Voulez vous certifier ces cls vous mme (o/N)? \"\nmuttde: \"\\nEin oder mehrere neue Schlssel sind nicht ausreichend beglaubigt.\\n\\\nWillst Du sie selbst beglaubigen? (j/N) \"\n\n\"\\nDo you want to certify this key yourself (y/N)? \"\nde: \"\\nWillst Du diesen Schlssel selbst beglaubigen? (j/N) \"\nes: \"\\nQuieres certificar esta clave t mismo (s/N)? \"\nfr: \"\\nVoulez vous certifier cette cl vous mme (o/N)? \"\nmuttde: \"\\nWillst Du diesen Schlssel selbst beglaubigen? (j/N) \"\n\n\"undefined\"\nde: \"undefin.\"\nes: \"sin definir\"\nfr: \"indfinie\"\nmuttde: \"undefin.\"\n\n\"unknown\"\nde: \"unbekannt\"\nes: \"desconocida\"\nfr: \"inconnu\"\nmuttde: \"unbekannt\"\n\n\"untrusted\"\nde: \"kein\"\nes: \"no fiable\"\nfr: \"non sr\"\nmuttde: \"kein\"\n\n\"marginal\"\nde: \"teilweise\"\nes: \"relativa\"\nfr: \"marginal\"\nmuttde: \"teilweise\"\n\n\"complete\"\nde: \"voll\"\nes: \"completa\"\nfr: \"complte\"\nmuttde: \"voll\"\n\n\"ultimate\"\nde: \"absolut\"\nes: \"fundamental\"\nfr: \"ultime\"\nmuttde: \"absolut\"\n\n\"\\nCan't open backup key ring file '%s'\\n\"\nde: \"\\nFEHLER beim ffnen der Schlsselbund-Kopie '%s'.\\n\"\nes: \"\\nNo se puede abrir la copia de seguridad del anillo '%s'\\n\"\nfr: \"\\nImpossible d'ouvrir le fichier de cl de sauvegarde '%s'\\n\"\nmuttde: \"\\nFEHLER beim ffnen der Schlsselbund-Kopie '%s'.\\n\"\n\n\"\\n%d \\\"trust parameter(s)\\\" need to be changed.\\n\"\nde: \"\\n%d 'Vertrauens-Einstellung(en)' mu/mssen gendert werden.\\n\"\nes: \"\\n%d \\\"parmetro(s) de confianza\\\" debe(n) cambiarse.\\n\"\nfr: \"\\n%d \\\"paramtre(s) de confiance\\\" doi(ven)t tre chang(s).\\n\"\nmuttde: \"\\n%d 'Vertrauens-Einstellung(en)' mu/mssen gendert werden.\\n\"\n\n\"Continue with '%s' (Y/n)? \"\nde: \"Weiter mit '%s'? (J/n) \"\nes: \"Seguir con '%s' (S/n)? \"\nfr: \"Continuer avec '%s' (O/n)? \"\nmuttde: \"Weiter mit '%s'? (J/n) \"\n\n\"\\n%d \\\"trust parameter(s)\\\" changed.\\n\"\nde: \"\\n%d 'Vertrauens-Einstellung(en)' gendert.\\n\"\nes: \"\\nCambiados %d \\\"parmetro(s) de confianza.\\n\"\nfr: \"\\n%d \\\"paramtre(s) de confiance\\\" chang(s).\\n\"\nmuttde: \"\\n%d 'Vertrauens-Einstellung(en)' gendert.\\n\"\n\n\"Update public keyring '%s' (Y/n)? \"\nde: \"ffentlichen Schlsselbund '%s' aktualisieren? (J/n) \"\nes: \"Actualizar el anillo de claves pblicas '%s' (S/n)? \"\nfr: \"Modifier le fichier de cls publiques '%s' (O/n)? \"\nmuttde: \"ffentlichen Schlsselbund '%s' aktualisieren? (J/n) \"\n\n\"\\nCan't open secret key ring file '%s'\\n\"\nde: \"\\nFEHLER beim ffnen des privaten Schlsselbunds '%s'.\\n\"\nes: \"\\nNo puede abrirse el anillo de claves secretas '%s'\\n\"\nfr: \"\\nOuverture du fichier de cls secrtes '%s' impossible.\\n\"\nmuttde: \"\\nFEHLER beim ffnen des privaten Schlsselbunds '%s'.\\n\"\n\n\"\\nPass 1: Looking for the \\\"ultimately-trusted\\\" keys...\\n\"\nde: \"\\nDurchlauf 1: Suche nach 'absolut vertrauenswrdigen' Schlsseln...\\n\"\nes: \"\\nProceso 1: Bsqueda de las claves \\\"fundamentalmente fiables\\\" ...\\n\"\nfr: \"\\nPasse 1: Recherche des cls \\\"de confiance ultime\\\"...\\n\"\nmuttde: \"\\nDurchlauf 1: Suche nach 'absolut vertrauenswrdigen' Schlsseln...\\n\"\n\n\"\\nPass 2: Tracing signature chains...\\n\"\nde: \"\\nDurchlauf 2: berprfung von verketteten Unterschriften...\\n\"\nes: \"\\nProceso 2: Seguimiento de las cadenas de firmas...\\n\"\nfr: \"\\nPasse 2: Vrification des chaines de signatures...\\n\"\nmuttde: \"\\nDurchlauf 2: berprfung von verketteten Unterschriften...\\n\"\n\n\"Keyring contains duplicate key: %s\\n\"\nde: \"\\nDer Schlsselbund enthlt den Schlssel %s doppelt.\\n\"\nes: \"El anillo contiene una clave duplicada: %s\\n\"\nfr: \"Le fichier de cls contient des cls dupliques: %s\\n\"\nmuttde: \"\\nDer Schlsselbund enthlt den Schlssel %s doppelt.\\n\"\n\n\"No ultimately-trusted keys.\\n\"\nde: \"Keine absolut vertrauenswrdigen Schlssel gefunden.\\n\"\nes: \"No hay ninguna clave fundamentalmente fiable.\\n\"\nfr: \"Pas de cls de confiance ultime.\\n\"\nmuttde: \"Keine absolut vertrauenswrdigen Schlssel gefunden.\\n\"\n\n\"  KeyID    Trust     Validity  User ID\\n\"\nde: \"\\n     ID    Vertrauen Gltigk.  Benutzer\\n\"\nes: \"  Clave    Confianza Validez   Identificador\\n\"\nfr: \"  IDcle    Conf.     Validit  Utilisateur\\n\"\nmuttde: \"\\n     ID    Vertrauen Gltigk.  Benutzer\\n\"\n\n\"(KeyID: %s)\\n\"\nde: \"(Schlssel-ID: %s)\\n\"\nes: \"(Identificador: %s)\\n\"\nfr: \"(IDclef: %s)\\n\"\nmuttde: \"(Schlssel-ID: %s)\\n\"\n\n\"\\nAn \\\"axiomatic\\\" key is one which does not need certifying by\\n\\\nanyone else.  Usually this special status is reserved only for your\\n\\\nown keys, which should also appear on your secret keyring.  The owner\\n\\\nof an axiomatic key (who is typically yourself) is \\\"ultimately trusted\\\"\\n\\\nby you to certify any or all other keys.\\n\"\nde: \"\\nEin 'definitionsgem vertrauenswrdiger' Schlssel braucht nicht von einer\\n\\\nanderen Person beglaubigt zu werden. Normalerweise ist dieser spezielle Status\\n\\\nnur fr Deine eigenen Schlssel reserviert, die sich auch in Deinem privaten\\n\\\nSchlsselbund befinden sollten. Der Besitzer eines 'definitionsgem vertrau-\\n\\\nenswrdigen' Schlssels (das bist in der Regel Du selbst) wird von Dir als\\n\\\n'absolut vertrauenswrdig' betrachtet, beliebige oder sogar alle anderen\\n\\\nSchlssel Dir gegenber zu beglaubigen.\\n\"\nes: \"\\nUna clave \\\"axiomatica\\\" es aquella que no necesita certificacin.\\n\\\nNormalmente este estado se reserva para tus propias claves, que deben\\n\\\naparecer tambin en tu anillo de claves secretas. El propietario de una\\n\\\nclave axiomtica (normalmente t mismo) es \\\"fundamentalmente fiable\\\"\\n\\\npara certificar cualquier clave.\\n\"\nfr: \"\\n Une clef 'axiomatique' est un clef qui n'a pas besoin d'tre\\n\\\nsign par personne. Habituellement ce statut est reserv  vos propres \\n\\\nclefs, celles qui apparaissent dans votre tousseau de clefs secrtes. \\n\\\nLe propritaire de ces clefs (vous-mme) possde votre 'confiance ultime'\\n\\\npour accorder un certificat  l'une au l'autre des autres clefs.\\n\"\nmuttde: \"\\nEin 'definitionsgem vertrauenswrdiger' Schlssel braucht nicht von einer\\n\\\nanderen Person beglaubigt zu werden. Normalerweise ist dieser spezielle Status\\n\\\nnur fr Deine eigenen Schlssel reserviert, die sich auch in Deinem privaten\\n\\\nSchlsselbund befinden sollten. Der Besitzer eines 'definitionsgem vertrau-\\n\\\nenswrdigen' Schlssels (das bist in der Regel Du selbst) wird von Dir als\\n\\\n'absolut vertrauenswrdig' betrachtet, beliebige oder sogar alle anderen\\n\\\nSchlssel Dir gegenber zu beglaubigen.\\n\"\n\n\"\\nKey for user ID \\\"%s\\\"\\n\\\nis designated as an \\\"ultimately-trusted\\\" introducer, but the key\\n\\\ndoes not appear in the secret keyring.\\n\\\nUse this key as an ultimately-trusted introducer (y/N)? \"\nde: \"\\nDer Schlssel von \\\"%s\\\"\\n\\\nsoll ein 'absolut vertrauenswrdiger Einfhrer' werden, aber er befindet\\n\\\nsich nicht im privaten Schlsselbund. Soll ich diesen Schlssel trotzdem\\n\\\nals 'absolut vertrauenswrdigen Einfhrer' behandeln? (j/N) \"\nes: \"\\nLa clave del usuario \\\"%s\\\"\\n\\\nest designada como referencia \\\"fundamentalmente fiable\\\", pero \nla clave no aparece en el anillo de claves secretas.\\n\\\nSe utiliza como referencia fundamentalmente fiable (s/N)? \"\nfr: \"\\nLa clef de l'utilisateur '%s' \\n\\\na t dsign comme ayant la 'confiance ulime', mais cette clef \\n\\\nn'apparrat pas dans le trousseau des clefs secrtes. \\n\\\nVoulez-vous utiliser cette clef comme ayant la 'confiance ultime'? (o/N) \"\nmuttde: \"\\nDer Schlssel von \\\"%s\\\"\\n\\\nsoll ein 'absolut vertrauenswrdiger Einfhrer' werden, aber er befindet\\n\\\nsich nicht im privaten Schlsselbund. Soll ich diesen Schlssel trotzdem\\n\\\nals 'absolut vertrauenswrdigen Einfhrer' behandeln? (j/N) \"\n\n\"\\n\\007Cannot read from secret keyring.\\n\"\nde: \"\\n\\007FEHLER beim Lesen des privaten Schlsselbunds.\\n\"\nes: \"\\n\\007No puede leerse el anillo de claves secretas.\\n\"\nfr: \"\\n\\007Lecture du fichier de cls secrtes impossible.\\n\"\nmutt: \"\\nCannot read from secret keyring.\\n\"\nmuttde: \"\\nFEHLER beim Lesen des privaten Schlsselbunds.\\n\"\n\n\"\\n\\007WARNING: Public key for user ID: \\\"%s\\\"\\n\\\ndoes not match the corresponding key in the secret keyring.\\n\"\nde: \"\\n\\007WARNUNG: Der ffentliche Schlssel\\nvon \\\"%s\\\" stimmt nicht\\n\\\nmit dem Gegenstck im privaten Schlsselbund berein.\\n\"\nes: \"\\n\\007AVISO: La clave pblica de \\\"%s\\\"\\n\\\nno coincide con la clave correspondiente en el anillo de claves secretas.\\n\"\nfr: \"\\n\\007ATTENTION: la cl publique pour l'utilisateur: \\\"%s\\\"\\n\\\nne correspond pas avec la cl respective dans le fichier de cls\\\nsecrtes.\\n\"\nmutt: \"\\nWARNING: Public key for user ID: \\\"%s\\\"\\n\\\ndoes not match the corresponding key in the secret keyring.\\n\"\nmuttde: \"\\nWARNUNG: Der ffentliche Schlssel\\nvon \\\"%s\\\" stimmt nicht\\n\\\nmit dem Gegenstck im privaten Schlsselbund berein.\\n\"\n\n\"This is a serious condition, indicating possible keyring tampering.\\n\"\nde: \"Dies knnte bedeuten, da die Schlsselbunde manipuliert wurden!\\n\"\nes: \"Es una situacin grave: posible manipulacin de anillos.\\n\"\nfr: \"Ceci est une condition srieuse,  indiquant une possible manipulation\\n\\\ndu fichier de cls.\\n\"\nmuttde: \"Dies knnte bedeuten, da die Schlsselbunde manipuliert wurden!\\n\"\n\n\"\\nKey for user ID \\\"%s\\\"\\n\\\nalso appears in the secret key ring.\"\nde: \"\\nDer Schlssel fr die Benutzer-ID \\\"%s\\\"\\n\\\nist auch im privaten Schlsselbund vorhanden.\"\nes: \"\\nLa clave del identificador \\\"%s\\\"\\n\\\ntambin aparece en el anillo de claves secretas.\"\nfr: \"\\nLa clef pour l'utilisateur avec id: \\\"%s\\\"\\n\\\napparait egalement dans le repertoire des clefs secretes.\"\nmuttde: \"\\nDer Schlssel fr die Benutzer-ID \\\"%s\\\"\\n\\\nist auch im privaten Schlsselbund vorhanden.\"\n\n\"\\nUse this key as an ultimately-trusted introducer (y/N)? \"\nde: \"\\nSoll dieser Schlssel als 'absolut vertrauenswrdigen Einfhrer'\\n\\\nbehandelt werden? (j/N) \"\nes: \"\\nSe utiliza esta clave como referencia fundamentalmente fiable (s/N)? \"\nfr: \"\\nUtiliser cette cl comme introducteur de confiance ultime (o/N)? \"\nmuttde: \"\\nSoll dieser Schlssel als 'absolut vertrauenswrdigen Einfhrer'\\n\\\nbehandelt werden? (j/N) \"\n\n\"Public key for: \\\"%s\\\"\\n\\\nis not present in the backup keyring '%s'.\\n\"\nde: \"Der ffentliche Schlssel von \\\"%s\\\"\\n\\\nist nicht in der Schlsselbund-Kopie '%s' enthalten.\\n\"\nes: \"La clave pblica de: \\\"%s\\\"\\n\\\nno se encuentra en la copia de seguridad del anillo '%s'.\\n\"\nfr: \"La cl publique pour: \\\"%s\\\"\\n\\\nn'est pas prsente dans le fichier de cls de sauvegarde '%s'.\\n\"\nmuttde: \"Der ffentliche Schlssel von \\\"%s\\\"\\n\\\nist nicht in der Schlsselbund-Kopie '%s' enthalten.\\n\"\n\n\"\\n\\007WARNING: Secret key for: \\\"%s\\\"\\n\\\ndoes not match the key in the backup keyring '%s'.\\n\"\nde: \"\\n\\007WARNUNG: Der private Schlssel von \\\"%s\\\"\\n\\\nentspricht nicht der Kopie im Schlsselbund '%s'.\\n\"\nes: \"\\n\\007AVISO: La clave secreta de: \\\"%s\\\"\\n\\\nno coincide con la clave en la copia de seguridad del anillo '%s'.\\n\"\nfr: \"\\n\\007ATTENTION: la cl secrte pour: \\\"%s\\\"\\n\\\nne correspond pas avec la cl dans le fichier de cls de sauvegarde.\\n\"\nmutt: \"\\nWARNING: Secret key for: \\\"%s\\\"\\n\\\ndoes not match the key in the backup keyring '%s'.\\n\"\nmuttde: \"\\nWARNUNG: Der private Schlssel von \\\"%s\\\"\\n\\\nentspricht nicht der Kopie im Schlsselbund '%s'.\\n\"\n\n\"\\nMake a determination in your own mind whether this key actually\\n\\\nbelongs to the person whom you think it belongs to, based on available\\n\\\nevidence.  If you think it does, then based on your estimate of\\n\\\nthat person's integrity and competence in key management, answer\\n\\\nthe following question:\\n\"\nde: \"\\nEntscheide fr Dich, ob dieser Schlssel tatschlich zu dieser Person gehrt.\\n\\\nTriff diese Entscheidung unter Bercksichtigung der zur Verfgung stehenden\\n\\\nInformationen. Wenn Du glaubst, da der Schlssel echt ist, dann beantworte\\n\\\nfolgende Frage aufgrund Deiner Einschtzung der Vertrauenswrdigkeit der\\n\\\nPerson und ihrer Kompetenz beim Umgang mit PGP-Schlsseln:\\n\"\nes: \"\\nDecide t mismo si esta clave realmente pertenece, segn la\\n\\\nevidencia a tu alcance, a la persona que crees.  Si es as,\\n\\\ncontesta a la siguiente pregunta, basndote en tu estimacin de la\\n\\\nintegridad de esa persona y de su conocimiento sobre gestin de claves:\\n\"\nfr: \"\\nDeterminez vous mme si cette cl appartient vraiment  la personne\\\n\\n qui vous croyez qu'elle appartient, selon les informations disponibles.\\\n\\nSi vous le croyez, alors selon votre estimation de l'intgrit de cette\\\n\\npersonne et de sa comptence dans la gestion de cls, rpondez  la\\\n\\nquestion suivante:\\n\"\nmuttde: \"\\nEntscheide fr Dich, ob dieser Schlssel tatschlich zu dieser Person gehrt.\\n\\\nTriff diese Entscheidung unter Bercksichtigung der zur Verfgung stehenden\\n\\\nInformationen. Wenn Du glaubst, da der Schlssel echt ist, dann beantworte\\n\\\nfolgende Frage aufgrund Deiner Einschtzung der Vertrauenswrdigkeit der\\n\\\nPerson und ihrer Kompetenz beim Umgang mit PGP-Schlsseln:\\n\"\n\n\"\\nWould you trust \\\"%s\\\"\\n\\\nto act as an introducer and certify other people's public keys to you?\\n\\\n(1=I don't know. 2=No. 3=Usually. 4=Yes, always.) ? \"\nde: \"\\nWrdest Du \\\"%s\\\" als 'Einfhrer'\\n\\\nund 'Beglaubiger' fr die ffentlichen Schlssel Dritter vertrauen?\\n\\\n(1=Ich wei nicht; 2=Nein; 3=In der Regel; 4=Ja, immer) : \"\nes: \"\\nConfiaras en \\\"%s\\\"\\n\\\ncomo referencia y para certificar ante ti otras claves pblicas?\\n\\\n(1=No s. 2=No. 3=Normalmente. 4=S, siempre.) ? \"\nfr: \"\\nAuriez vous confiance en \\\"%s\\\"\\n\\\npour servir d'introducteur et certifier pour vous les cls publiques d'autres\\\n\\npersonnes? (1=Ne sais pas. 2=Non. 3=Gnralement. 4=Oui, toujours.) ? \"\nmuttde: \"\\nWrdest Du \\\"%s\\\" als 'Einfhrer'\\n\\\nund 'Beglaubiger' fr die ffentlichen Schlssel Dritter vertrauen?\\n\\\n(1=Ich wei nicht; 2=Nein; 3=In der Regel; 4=Ja, immer) : \"\n\n\"This user is untrusted to certify other keys.\\n\"\nde: \"Dieser Benutzer ist nicht vertrauenswrdig genug,\\n\\\num andere Schlssel zu beglaubigen.\\n\"\nes: \"Este usuario no es fiable para certificar otras claves.\\n\"\nfr: \"Cet utilisateur n'est pas de confiance pour certifier d'autres cls.\\n\"\nmuttde: \"Dieser Benutzer ist nicht vertrauenswrdig genug,\\n\\\num andere Schlssel zu beglaubigen.\\n\"\n\n\"This user is generally trusted to certify other keys.\\n\"\nde: \"Dieser Benutzer ist in der Regel vertrauenswrdig genug,\\n\\\num andere Schlssel zu beglaubigen.\\n\"\nes: \"Este usuario es de relativa confianza para certificar otras claves.\\n\"\nfr: \"Cet utilisateur est gnralement de confiance pour certifier d'autres\\\n cls.\\n\"\nmuttde: \"Dieser Benutzer ist in der Regel vertrauenswrdig genug,\\n\\\num andere Schlssel zu beglaubigen.\\n\"\n\n\"This user is completely trusted to certify other keys.\\n\"\nde: \"Dieser Benutzer ist immer vertrauenswrdig genug,\\n\\\num andere Schlssel zu beglaubigen.\\n\"\nes: \"Este usuario es de completa confianza para certificar otras claves.\\n\"\nfr: \"Cet utilisateur est de confiance totale pour certifier d'autres cls.\\n\"\nmuttde: \"Dieser Benutzer ist immer vertrauenswrdig genug,\\n\\\num andere Schlssel zu beglaubigen.\\n\"\n\n\"This axiomatic key is ultimately trusted to certify other keys.\\n\"\nde: \"Dieser Schlssel ist definitionsgem vertrauenswrdig genug,\\n\\\num andere Schlssel zu beglaubigen.\\n\"\nes: \"Esta clave axiomtica es absolutamente fiable para certificar otras.\\n\"\nfr: \"Cette cl axiomatique est de confiance ultime pour certifier\\n\\\nd'autres cls\\n\"\nmuttde: \"Dieser Schlssel ist definitionsgem vertrauenswrdig genug,\\n\\\num andere Schlssel zu beglaubigen.\\n\"\n\n\"This key/userID association is not certified.\\n\"\nde: \"Diese Schlssel-/Benutzer-Zuordnung ist nicht besttigt.\\n\"\nes: \"Esta asociacin clave/usuario no est certificada.\\n\"\nfr: \"Cette association cl/utilisateur n'est pas certifie.\\n\"\nmuttde: \"Diese Schlssel-/Benutzer-Zuordnung ist nicht besttigt.\\n\"\n\n\"This key/userID association is marginally certified.\\n\"\nde: \"Diese Schlssel-/Benutzer-Zuordnung ist teilweise besttigt.\\n\"\nes: \"Esta asociacin clave/usuario est relativamente certificada.\\n\"\nfr: \"Cette association cl/utilisateur est marginalement certifie.\\n\"\nmuttde: \"Diese Schlssel-/Benutzer-Zuordnung ist teilweise besttigt.\\n\"\n\n\"This key/userID association is fully certified.\\n\"\nde: \"Diese Schlssel-/Benutzer-Zuordnung ist voll besttigt.\\n\"\nes: \"Esta asociacin clave/usuario est completamente certificada.\\n\"\nfr: \"Cette association cl/utilisateur est compltement certifie.\\n\"\nmuttde: \"Diese Schlssel-/Benutzer-Zuordnung ist voll besttigt.\\n\"\n\n\"  Questionable certification from:\\n  \"\nde: \"  Fragwrdige Beglaubigung von:\\n  \"\nes: \"  Certificacin cuestionable de:\\n  \"\nfr: \"  Certificat de confiance douteux de:\\n  \"\nmuttde: \"  Fragwrdige Beglaubigung von:\\n  \"\n\n\"  Untrusted certification from:\\n  \"\nde: \"  Unglaubwrdige Beglaubigung von:\\n  \"\nes: \"  Certificacin no fiable de:\\n  \"\nfr: \"  Certificat non sr de:\\n  \"\nmuttde: \"  Unglaubwrdige Beglaubigung von:\\n  \"\n\n\"  Generally trusted certification from:\\n  \"\nde: \"  Glaubwrdige Beglaubigung von:\\n  \"\nes: \"  Certificacin relativamente fiable de:\\n  \"\nfr: \"  Certificat de confiance relatif de:\\n  \"\nmuttde: \"  Glaubwrdige Beglaubigung von:\\n  \"\n\n\"  Completely trusted certification from:\\n  \"\nde: \"  Voll glaubwrdige Beglaubigung von:\\n  \"\nes: \"  Certificacin completamente fiable de:\\n  \"\nfr: \"  Certificat de confiance complet de:\\n  \"\nmuttde: \"  Voll glaubwrdige Beglaubigung von:\\n  \"\n\n\"  Axiomatically trusted certification from:\\n  \"\nde: \"  Definitionsgem glaubwrdige Beglaubigung von:\\n  \"\nes: \"  Certificacin axiomticamente fiable de:\\n  \"\nfr: \"  Certificat de confiance par axiome de:\\n  \"\nmuttde: \"  Definitionsgem glaubwrdige Beglaubigung von:\\n  \"\n\n\"\\nKey for user ID: %s\\n\"\nde: \"\\nSchlssel fr Benutzer-ID \\\"%s\\\",\\n\"\nes: \"\\nClave del usuario: %s\\n\"\nfr: \"\\nCl pour le nom d'utilisateur: %s\\n\"\nmuttde: \"\\nSchlssel fr Benutzer-ID \\\"%s\\\",\\n\"\n\n\"%d-bit key, key ID %s, created %s\\n\"\nde: \"%d-Bit-Schlssel, Schlssel-ID: %s, erzeugt am: %s.\\n\"\nes: \"Clave de %d bits, con identificador %s, creada el %\\n\"\nfr: \"Clef de %d bits. Id clef %s cr %s\\n\"\nmuttde: \"%d-Bit-Schlssel, Schlssel-ID: %s, erzeugt am: %s.\\n\"\n\n\"Bad key format.\\n\"\nde: \"Falsches Schlssel-Format.\\n\"\nes: \"Formato incorrecto de clave.\\n\"\nfr: \"Mauvais format de cl\\n\"\nmuttde: \"Falsches Schlssel-Format.\\n\"\n\n\"Unrecognized version.\\n\"\nde: \"Unbekannte Version.\\n\"\nes: \"Versin no reconocida.\\n\"\nfr: \"Version non reconnue.\\n\"\nmuttde: \"Unbekannte Version.\\n\"\n\n\"Key is disabled.\\n\"\nde: \"Der Schlssel ist gesperrt.\\n\"\nes: \"La clave est desactivada.\\n\"\nfr: \"La cl est inactive.\\n\"\nmuttde: \"Der Schlssel ist gesperrt.\\n\"\n\n\"Also known as: %s\\n\"\nde: \"Alternative Benutzer-ID: %s\\n\"\nes: \"Tambin conocido como: %s\\n\"\nfr: \"Egalement connu(e) en tant que: %s\\n\"\nmuttde: \"Alternative Benutzer-ID: %s\\n\"\n\n\"  Certified by: \"\nde: \"  Beglaubigt von: \"\nes: \"  Certificado por: \"\nfr: \"  Certifie par: \"\nmuttde: \"  Beglaubigt von: \"\n\n\"\\nWarning: keyid %4d/%s %s  has no user id!\\n\"\nde: \"\\nWARNUNG: Der Schlssel '%4d/%s %s' hat keine Benutzer-ID!\\n\"\nes: \"\\nAdvertencia: la clave %4d/%s %s no tiene identificador\\n\"\nfr: \"\\nAttention: IDclef %4d/%s %s  n'est pas associ  un utilisateur!\\n\"\nmuttde: \"\\nWARNUNG: Der Schlssel '%4d/%s %s' hat keine Benutzer-ID!\\n\"\n\n\"Updated keyID: 0x%s\\n\"\nde: \"Die Schlssel-ID 0x%s wurde aktualisiert.\\n\"\nes: \"Identificador actualizado: 0x%s\\n\"\nfr: \"Mise  jour de la clef ID: 0x%s\\n\"\nmuttde: \"Die Schlssel-ID 0x%s wurde aktualisiert.\\n\"\n\n\"\\n\\007Unable to create key file '%s'.\\n\"\nde: \"\\n\\007FEHLER beim Erzeugen der Schlsseldatei '%s'.\\n\"\nes: \"\\n\\007No puede crearse el fichero de claves '%s'.\\n\"\nfr: \"\\n\\007Impossible de crer le fichier de cls '%s'.\\n\"\nmutt: \"\\nUnable to create key file '%s'.\\n\"\nmuttde: \"\\nFEHLER beim Erzeugen der Schlsseldatei '%s'.\\n\"\n\n\"\\n\\007Keyring file '%s' does not exist. \"\nde: \"\\n\\007Der Schlsselbund '%s' existiert nicht.\\n\"\nes: \"\\n\\007El anillo '%s' no existe. \"\nfr: \"\\n\\007Le fichier de cls '%s' n'existe pas. \"\nmutt: \"\\nKeyring file '%s' does not exist. \"\nmuttde: \"\\nDer Schlsselbund '%s' existiert nicht.\\n\"\n\n\"\\n\\007Sorry, this key has been revoked by its owner.\\n\"\nde: \"\\n\\007Dieser Schlssel wurde von seinem Besitzer zurckgezogen.\\n\"\nes: \"\\n\\007Esa clave ha sido revocada por su propietario.\\n\"\nfr: \"\\n\\007Dsol, cette cl a t rvoque par son propritaire.\\n\"\nmutt: \"\\nSorry, this key has been revoked by its owner.\\n\"\nmuttde: \"\\nDieser Schlssel wurde von seinem Besitzer zurckgezogen.\\n\"\n\n\"\\nKey for user ID \\\"%s\\\"\\n\\\nhas been revoked.  You cannot use this key.\\n\"\nde: \"\\nDer Schlssel von \\\"%s\\\"\\n\\\nwurde zurckgezogen und kann nicht verwendet werden.\\n\"\nes: \"\\nLa clave del usuario \\\"%s\\\"\\n\\\nha sido revocada.  No puede utilizarse.\\n\"\nfr: \"\\nLa cl pour l'utilisateur \\\"%s\\\"\\n\\\na t rvoque. Vous ne pouvez utiliser cette cl.\\n\"\nmuttde: \"\\nDer Schlssel von \\\"%s\\\"\\n\\\nwurde zurckgezogen und kann nicht verwendet werden.\\n\"\n\n\"\\n\\007Key matching expected Key ID %s not found in file '%s'.\\n\"\nde: \"\\n\\007Der zur erwarteten Schlssel-ID %s passende Schlssel\\n\\\nist nicht in der Datei '%s' enthalten.\\n\"\nes: \"\\n\\007Se esperaba una clave %s que no se encuentra en '%s'.\\n\"\nfr: \"\\n\\007Cl correspondant  l'identificateur %s non trouve\\\n\\ndans le fichier '%s'.\\n\"\nmutt: \"\\nKey matching expected Key ID %s not found in file \\n\\\n'%s'.\\n\"\nmuttde: \"\\nDer zur erwarteten Schlssel-ID %s passende Schlssel\\n\\\nist nicht in der Datei '%s' enthalten.\\n\"\n\n\"\\n\\007Key matching userid '%s' not found in file '%s'.\\n\"\nde: \"\\n\\007Der zur Benutzer-ID \\\"%s\\\" passende Schlssel\\n\\\nist nicht in der Datei '%s' enthalten.\\n\"\nes: \"\\n\\007La clave del usuario '%s' no se encuentra en el fichero '%s'.\\n\"\nfr: \"\\n\\007Cl correspondant  l'utilisateur '%s' introuvable\\n\\\ndans le fichier '%s'.\\n\"\nmutt: \"\\nKey matching userid '%s' not found in file '%s'.\\n\"\nmuttde: \"\\nDer zur Benutzer-ID \\\"%s\\\" passende Schlssel\\n\\\nist nicht in der Datei '%s' enthalten.\\n\"\n\n\"Enter secret key filename: \"\nde: \"Dateiname des privaten Schlssels: \"\nes: \"Introduzca el nombre del anillo de claves secretas: \"\nfr: \"Entrez le nom du fichier de cls secrtes: \"\nmuttde: \"Dateiname des privaten Schlssels: \"\n\n\"Enter public key filename: \"\nde: \"Dateiname des ffentlichen Schlssels: \"\nes: \"Introduzca el nombre del anillo de claves pblicas: \"\nfr: \"Entrez le nom du fichier de cls publiques: \"\nmuttde: \"Dateiname des ffentlichen Schlssels: \"\n\n\"\\nYou need a pass phrase to unlock your RSA secret key. \"\nde: \"\\nDu brauchst ein Mantra, um Deinen privaten RSA-Schlssel zu benutzen.\"\nes: \"\\nSe necesita la contrasea para abrir la clave secreta RSA. \"\nfr: \"\\nVous devez avoir un mot de passe pour utiliser votre cl secrte RSA.\"\nmuttde: \"\\nDu brauchst ein Mantra, um Deinen privaten RSA-Schlssel zu benutzen.\"\n\n\"No passphrase; secret key unavailable.\\n\"\nde: \"\\nKein Mantra; der private Schlssel kann nicht benutzt werden.\\n\"\nes: \"\\nSin contrasea; la clave secreta no est disponible.\\n\"\nfr: \"\\nSans la phrase secrete, pas de clef secrete disponible.\\n\"\nmuttde: \"\\nKein Mantra; der private Schlssel kann nicht benutzt werden.\\n\"\n\n\"\\nAdvisory warning: This RSA secret key is not protected by a \\\npassphrase.\\n\"\nde: \"\\nHinweis: Dieser private Schlssel ist nicht durch ein Mantra geschtzt.\\n\"\nes: \"\\nAdvertencia: Esta clave secreta RSA no tiene contrasea.\\n\"\nfr: \"\\nAttention: cette cl secrte RSA n'est pas protge par un mot \\\nde passe\"\nmuttde: \"\\nHinweis: Dieser private Schlssel ist nicht durch ein Mantra geschtzt.\\n\"\n\n\"Pass phrase is good.  \"\nde: \"\\nDas Mantra ist richtig.\\n\"\nes: \"La contrasea es correcta.  \"\nfr: \"Le mot de passe est correct.  \"\nmuttde: \"\\nDas Mantra ist richtig.\\n\"\n\n\"\\n\\007Key file '%s' is not a secret key file.\\n\"\nde: \"\\n\\007Die Datei '%s' ist keine private Schlsseldatei.\\n\"\nes: \"\\n\\007El fichero '%s' no tiene claves secretas.\\n\"\nfr: \"\\n\\007Le fichier de cl '%s' n'est pas un fichier de cls secrtes.\\n\"\nmutt: \"\\nKey file '%s' is not a secret key file.\\n\"\nmuttde: \"\\nDie Datei '%s' ist keine private Schlsseldatei.\\n\"\n\n\"Key fingerprint =\"\nde: \"Fingerabdruck des Schlssels:\"\nes: \"Huella dactilar =\"\nfr: \"Empreinte de la cl =\"\nmuttde: \"Fingerabdruck des Schlssels:\"\n\n\"\\nKey ring: '%s'\"\nde: \"\\nSchlsselbund '%s':\\n\"\nes: \"\\nAnillo de claves: '%s',\\n\"\nfr: \"\\nFichier de cl: '%s'\"\nmuttde: \"\\nSchlsselbund '%s':\\n\"\n\n\", looking for user ID \\\"%s\\\".\"\nde: \"Suche nach Benutzer-ID \\\"%s\\\":\\n\"\nes: \"buscando el usuario \\\"%s\\\"\\n\"\nfr: \", recherche du nom d'utilisateur \\\"%s\\\".\"\nmuttde: \"Suche nach Benutzer-ID \\\"%s\\\":\\n\"\n\n\"1 matching key found.\\n\"\nde: \"Es wurde ein passender Schlssel gefunden.\\n\"\nes: \"Se ha encontrado una clave.\\n\"\nfr: \"1 clef trouve.\\n\"\nmuttde: \"Es wurde ein passender Schlssel gefunden.\\n\"\n\n\"%d matching keys found.\\n\"\nde: \"Es wurden %d passende Schlssel gefunden.\\n\"\nes: \"Se han encontrado %d claves.\\n\"\nfr: \"%d clefs trouves. \\n\"\nmuttde: \"Es wurden %d passende Schlssel gefunden.\\n\"\n\n\"\\nChecking signatures...\\n\"\nde: \"\\nberprfung der Unterschriften...\\n\"\nes: \"\\nComprobando las firmas...\\n\"\nfr: \"\\nVrification des signatures...\\n\"\nmuttde: \"\\nberprfung der Unterschriften...\\n\"\n\n\"*** KEY REVOKED ***\\n\"\nde: \"*** ZURCKGEZOGEN ***\\n\"\nes: \"*** CLAVE REVOCADA ***\\n\"\nfr: \"*** CLEF REVOQUE ***\\n\"\nmuttde: \"*** ZURCKGEZOGEN ***\\n\"\n\n\"(Unknown signator, can't be checked)\"\nde: \"(Unterschreibender unbekannt, keine Prfung)\"\nes: \"(Firmante desconocido, no puede comprobarse)\"\nfr: \"(Signataire inconnu, ne peut tre vrifi)\"\nmuttde: \"(Unterschreibender unbekannt, keine Prfung)\"\n\n\"(Key too long, can't be checked)\"\nde: \"(Schlssel zu lang, keine Prfung)\"\nes: \"(Clave demasiado larga, no puede comprobarse)\"\nfr: \"(Clef trop longue, ne peut etre verifie)\"\nmuttde: \"(Schlssel zu lang, keine Prfung)\"\n\n\"(Malformed or obsolete signature format)\"\nde: \"(Unterschriftsformat fehlerhaft oder veraltet)\"\nes: \"(Formato de firma obsoleto o incorrecto)\"\nfr: \"(Signature malformee ou obsolete)\"\nmuttde: \"(Unterschriftsformat fehlerhaft oder veraltet)\"\n\n\"(Unknown public-key algorithm)\"\nde: \"(unbek. Algorithmus des ffentl. Schlssels)\"\nes: \"(Algoritmo desconocido de clave pblica)\"\nfr: \"(Algorithme de clef publique inconnu)\"\nmuttde: \"(unbek. Algorithmus des ffentl. Schlssels)\"\n\n\"(Unknown hash algorithm)\"\nde: \"(unbekannter Prfsummen-Algorithmus)\"\nes: \"(Algoritmo desconocido de distribucin [hash])\"\nfr: \"(Algorithme de hash inconnu)\"\nmuttde: \"(unbekannter Prfsummen-Algorithmus)\"\n\n\"(Unknown signature packet version)\"\nde: \"(unbekannte Version des Unterschriftsblocks)\"\nes: \"(Versin desconocida de firma)\"\nfr: \"Version de paquet de signature inconnue\"\nmuttde: \"(unbekannte Version des Unterschriftsblocks)\"\n\n\"(Malformed signature)\"\nde: \"(fehlerhafte Unterschrift)\"\nes: \"(Firma mal formada)\"\nfr: \"(Signature deforme)\"\nmuttde: \"(fehlerhafte Unterschrift)\"\n\n\"(Corrupted signature packet)\"\nde: \"(beschdigter Unterschriftsblock)\"\nes: \"(Firma daada)\"\nfr: \"(Signature corrompue)\"\nmuttde: \"(beschdigter Unterschriftsblock)\"\n\n\"\\007**** BAD SIGNATURE! ****\"\nde: \"\\007**** FALSCHE UNTERSCHRIFT! ****\"\nes: \"\\007**** FIRMA INCORRECTA ****\"\nfr: \"\\007**** MAUVAISE SIGNATURE! ****\"\nmutt: \"**** BAD SIGNATURE! ****\"\nmuttde: \"**** FALSCHE UNTERSCHRIFT! ****\"\n\n\"Remove bad signatures (Y/n)? \"\nde: \"Falsche Unterschriften lschen? (J/n) \"\nes: \"Suprimir las firmas incorrectas (S/n)? \"\nfr: \"Supprimer les mauvaises signatures (O/n)? \"\nmuttde: \"Falsche Unterschriften lschen? (J/n) \"\n\n\"\\nRemoving signatures from userid '%s' in key ring '%s'\\n\"\nde: \"\\nLschen der Unterschriften unter ID \\\"%s\\\"\\naus dem Schlsselbund '%s'.\\n\"\nes: \"\\nSuprimiendo las firmas del usuario '%s' del\\n\\\nanillo de claves '%s'\\n\"\nfr: \"\\nSuppression des signatures de l'utilisateur '%s'\\n\\\ndans le fichier de cls '%s'\\n\"\nmuttde: \"\\nLschen der Unterschriften unter ID \\\"%s\\\"\\naus dem Schlsselbund '%s'.\\n\"\n\n\"\\n\\007Key not found in key ring '%s'.\\n\"\nde: \"\\n\\007Der Schlssel ist nicht im Schlsselbund\\n'%s' enthalten.\\n\"\nes: \"\\n\\007No se ha encontrado la clave en el anillo '%s'.\\n\"\nfr: \"\\n\\007Cl introuvable dans le fichier de cls '%s'.\\n\"\nmutt: \"\\nKey not found in key ring '%s'.\\n\"\nmuttde: \"\\nDer Schlssel ist nicht im Schlsselbund\\n'%s' enthalten.\\n\"\n\n\"\\nKey has no signatures to remove.\\n\"\nde: \"\\nDer Schlssel trgt keine Unterschriften, die gelscht werden knnten.\\n\"\nes: \"\\nLa clave no tiene ninguna firma por borrar.\\n\"\nfr: \"\\nLa cl n'a pas de signatures  supprimer.\\n\"\nmuttde: \"\\nDer Schlssel trgt keine Unterschriften, die gelscht werden knnten.\\n\"\n\n\"\\nKey has %d signature(s):\\n\"\nde: \"\\nDer Schlssel trgt %d Unterschrift(en):\\n\"\nes: \"\\nLa clave tiene %d firma(s):\\n\"\nfr: \"\\nLa cl a %d signature(s):\\n\"\nmuttde: \"\\nDer Schlssel trgt %d Unterschrift(en):\\n\"\n\n\"(Unknown signator, can't be checked)\\n\"\nde: \"(Unterschreibender unbekannt, keine Prfung)\\n\"\nes: \"(Firmante desconocido, no puede comprobarse)\\n\"\nfr: \"(Signataire inconnu, ne peut tre vrifi)\\n\"\nmuttde: \"(Unterschreibender unbekannt, keine Prfung)\\n\"\n\n\"Remove this signature (y/N)? \"\nde: \"Diese Unterschrift lschen? (j/N) \"\nes: \"\\277Suprimir esta firma (s/N)? \"\nfr: \"Suppression de cette signature (o/N)? \"\nmuttde: \"Diese Unterschrift lschen? (j/N) \"\n\n\"\\nNo key signatures removed.\\n\"\nde: \"\\nKeine Unterschriften gelscht.\\n\"\nes: \"\\nNo se ha suprimido ninguna firma.\\n\"\nfr: \"\\nPas de supression de signature de cl.\\n\"\nmuttde: \"\\nKeine Unterschriften gelscht.\\n\"\n\n\"\\n%d key signature(s) removed.\\n\"\nde: \"\\n%d Unterschrift(en) gelscht.\\n\"\nes: \"\\nSuprimidas %d firma(s) de clave.\\n\"\nfr: \"\\n%d signature(s) de cl supprime(s).\\n\"\nmuttde: \"\\n%d Unterschrift(en) gelscht.\\n\"\n\n\"\\nRemoving from key ring: '%s'\"\nde: \"\\nLschen aus Schlsselbund '%s'\\n\"\nes: \"\\nSuprimiendo del anillo: '%s'\"\nfr: \"\\nSuppression du ficher de cls: '%s'\"\nmuttde: \"\\nLschen aus Schlsselbund '%s'\\n\"\n\n\", userid \\\"%s\\\".\\n\"\nde: \"Benutzer-ID \\\"%s\\\".\\n\"\nes: \", identificador \\\"%s\\\".\\n\"\nfr: \", utilisateur \\\"%s\\\".\\n\"\nmuttde: \"Benutzer-ID \\\"%s\\\".\\n\"\n\n\"\\nKey has more than one user ID.\\n\\\nDo you want to remove the whole key (y/N)? \"\nde: \"\\nDer Schlssel hat mehr als eine Benutzer-ID.\\n\\\nSoll der ganze Schlssel vollstndig gelscht werden? (j/N) \"\nes: \"\\nLa clave tiene ms de un identificador de usuario.\\n\\\nQuieres suprimirla por completo (s/N)? \"\nfr: \"\\nLa cl a plus d'un nom d'utilisateur.\\n\\\nVoulez vous supprimier toute la cl (o/N)? \"\nmuttde: \"\\nDer Schlssel hat mehr als eine Benutzer-ID.\\n\\\nSoll der ganze Schlssel vollstndig gelscht werden? (j/N) \"\n\n\"\\nNo more user ID's\\n\"\nde: \"\\nKeine weiteren Benutzer-IDs.\\n\"\nes: \"\\nNo hay ms identificadores de usuario\\n\"\nfr: \"\\nPlus de noms d'utilisateur\\n\"\nmuttde: \"\\nKeine weiteren Benutzer-IDs.\\n\"\n\n\"Remove \\\"%s\\\" (y/N)? \"\nde: \"\\\"%s\\\" lschen? (j/N) \"\nes: \"Suprimir \\\"%s\\\" (s/N)? \"\nfr: \"Supprimer \\\"%s\\\" (o/N)? \"\nmuttde: \"\\\"%s\\\" lschen? (j/N) \"\n\n\"\\nAre you sure you want this key removed (y/N)? \"\nde: \"\\nBist Du sicher, da Du diesen Schlssel lschen willst? (j/N) \"\nes: \"\\nEsts seguro de querer suprimir esta clave (s/N)? \"\nfr: \"\\nEtes vous sr(e) de vouloir supprimer cette cl (o/N)? \"\nmuttde: \"\\nBist Du sicher, da Du diesen Schlssel lschen willst? (j/N) \"\n\n\"\\nUser ID removed from key ring.\\n\"\nde: \"\\nDie Benutzer-ID wurde aus dem Schlsselbund gelscht.\\n\"\nes: \"\\nIdentificador suprimido del anillo.\\n\"\nfr: \"\\nNom d'utilisateur supprim du fichier de cls.\\n\"\nmuttde: \"\\nDie Benutzer-ID wurde aus dem Schlsselbund gelscht.\\n\"\n\n\"\\nKey removed from key ring.\\n\"\nde: \"\\nDer Schlssel wurde aus dem Schlsselbund gelscht.\\n\"\nes: \"\\nClave suprimida del anillo.\\n\"\nfr: \"\\nCl supprime du fichier de cls.\\n\"\nmuttde: \"\\nDer Schlssel wurde aus dem Schlsselbund gelscht.\\n\"\n\n\"\\nKey or user ID is also present in secret keyring.\\n\\\nDo you also want to remove it from the secret keyring (y/N)? \"\nde: \"\\nDer Schlssel oder die Benutzer-ID sind auch im privaten Schlsselbund\\n\\\nenthalten. Sollen sie dort ebenfalls gelscht werden? (j/N) \"\nes: \"\\nEl identificador se encuentra adems en el anillo de\\n\\\nclaves secretas. Quieres borrarlo tambin de ah (s/N)? \"\nfr: \"\\nLa cl ou le nom d'utilisateur est aussi dans le fichier de cls\\n\\\nsecrtes. Voulez vous l'enlever du ficher de cls secrtes (o/N)? \"\nmuttde: \"\\nDer Schlssel oder die Benutzer-ID sind auch im privaten Schlsselbund\\n\\\nenthalten. Sollen sie dort ebenfalls gelscht werden? (j/N) \"\n\n\"\\nExtracting from key ring: '%s'\"\nde: \"\\nExtrahieren aus dem Schlsselbund: '%s'\\n\"\nes: \"\\nExtrayendo del anillo de claves: '%s'\"\nfr: \"\\nExtraction du fichier de cls: '%s'\"\nmuttde: \"\\nExtrahieren aus dem Schlsselbund: '%s'\\n\"\n\n\"Extract the above key into which file?\"\nde: \"Dateiname dieses extrahierten Schlssels?\"\nes: \"En qu fichero se extrae la clave anterior?\"\nfr: \"Extraire la clef suivant de quel fichier?\"\nmuttde: \"Dateiname dieses extrahierten Schlssels?\"\n\n\"Key ID %s is already included in key ring '%s'.\\n\"\nde: \"Die Schlssel-ID %s ist bereits im Schlsselbund\\n'%s' enthalten.\\n\"\nes: \"La clave %s ya est en el anillo '%s'.\\n\"\nfr: \"L'identificateur de cl %s est dj prsent\\\n\\ndans le fichier de cls '%s'.\\n\"\nmuttde: \"Die Schlssel-ID %s ist bereits im Schlsselbund\\n'%s' enthalten.\\n\"\n\n\"\\nKey extracted to file '%s'.\\n\"\nde: \"\\nSchlssel extrahiert in Datei '%s'.\\n\"\nes: \"\\nClave extrada en el fichero '%s'.\\n\"\nfr: \"\\nCl mise dans le fichier '%s'.\\n\"\nmuttde: \"\\nSchlssel extrahiert in Datei '%s'.\\n\"\n\n\"\\nThis operation may not be performed on a secret keyring.\\n\\\nDefaulting to public keyring.\"\nde: \"\\nDiese Operation kann mit einem privaten Schlsselbund nicht ausgefhrt\\n\\\nwerden. Der ffentliche Schlsselbund wird versucht.\"\nes: \"\\nEsta operacion no puede realizarse sobre el anillo de \\\nclaves secretas.\\nSe pasa al anillo de claves pblicas.\"\nfr: \"\\nCette operation ne peut pas tre effectue sur un fichier de cls\\n\\\nsecrtes. Le fichier de cls publiques sera utilis  la place.\"\nmuttde: \"\\nDiese Operation kann mit einem privaten Schlsselbund nicht ausgefhrt\\n\\\nwerden. Der ffentliche Schlsselbund wird versucht.\"\n\n\"\\nEditing userid \\\"%s\\\" in key ring: '%s'.\\n\"\nde: \"\\nBearbeitung der Benutzer-ID \\\"%s\\\"\\nim Schlsselbund '%s'.\\n\"\nes: \"\\nModificacin del identificador \\\"%s\\\"\\n\\\nen el anillo: '%s'.\\n\"\nfr: \"\\nModification du nom d'utilsateur \\\"%s\\\"\\n\\\ndans le fichier de cl: '%s'.\\n\"\nmuttde: \"\\nBearbeitung der Benutzer-ID \\\"%s\\\"\\nim Schlsselbund '%s'.\\n\"\n\n\"\\nCan't open public key ring file '%s'\\n\"\nde: \"\\nFEHLER beim ffnen des ffentlichen Schlsselbunds '%s'.\\n\"\nes: \"\\nNo puede abrirse el anillo de claves pblicas '%s'\\n\"\nfr: \"\\nOuverture du fichier de cls publiques '%s' impossible.\\n\"\nmuttde: \"\\nFEHLER beim ffnen des ffentlichen Schlsselbunds '%s'.\\n\"\n\n\"\\n\\007File '%s' is not a public keyring.\\n\"\nde: \"\\n\\007Die Datei '%s' ist kein ffentlicher Schlsselbund.\\n\"\nes: \"\\n\\007El fichero '%s' no es un anillo de claves pblicas.\\n\"\nfr: \"\\n\\007Le fichier '%s' n'est pas un fichier de cls publiques.\\n\"\nmutt: \"\\nFile '%s' is not a public keyring.\\n\"\nmuttde: \"\\nDie Datei '%s' ist kein ffentlicher Schlsselbund.\\n\"\n\n\"\\n\\007This key has been revoked by its owner.\\n\"\nde: \"\\n\\007Dieser Schlssel wurde von seinem Besitzer zurckgezogen.\\n\"\nes: \"\\n\\007Esta clave ha sido revocada por su propietario.\\n\"\nfr: \"\\n\\007Cette cl a t rvoque par son propritaire.\\n\"\nmutt: \"\\nThis key has been revoked by its owner.\\n\"\nmuttde: \"\\nDieser Schlssel wurde von seinem Besitzer zurckgezogen.\\n\"\n\n\"\\nNo secret key available.  Editing public key trust parameter.\\n\"\nde: \"\\nKein privater Schlssel vorhanden. Die 'Vertrauens-Einstellungen' des\\n\\\nffentlichen Schlssels werden bearbeitet.\\n\"\nes: \"\\nNo hay clave secreta disponible. Modificando el parmetro \\\nde confianza\\n\\\nde la clave pblica.\\n\"\nfr: \"\\nPas de cl secrte disponible. Modification du paramtre de\\n\\\nconfiance de la cl publique.\\n\"\nmuttde: \"\\nKein privater Schlssel vorhanden. Die 'Vertrauens-Einstellungen' des\\n\\\nffentlichen Schlssels werden bearbeitet.\\n\"\n\n\"Current trust for this key's owner is: %s\\n\"\nde: \"\\nAktuelles 'Vertrauen' zum Besitzer dieses Schlssels: %s\\n\"\nes: \"La confianza actual en el propietario de esta clave es: %s\\n\"\nfr: \"Le niveau de confiance courant pour le propritaire de\\n\\\ncette cl est: %s\\n\"\nmuttde: \"\\nAktuelles 'Vertrauen' zum Besitzer dieses Schlssels: %s\\n\"\n\n\"Public key ring updated.\\n\"\nde: \"\\nDer ffentliche Schlsselbund wurde aktualisiert.\\n\"\nes: \"Actualizado el anillo de claves pblicas.\\n\"\nfr: \"Fichier de cls publiques modifi...\\n\"\nmuttde: \"\\nDer ffentliche Schlsselbund wurde aktualisiert.\\n\"\n\n\"\\nCurrent user ID: %s\"\nde: \"\\nAktuelle Benutzer-ID: %s\"\nes: \"\\nIdentificador actual de usuario: %s\"\nfr: \"\\nNom d'utilisateur courant: %s\"\nmuttde: \"\\nAktuelle Benutzer-ID: %s\"\n\n\"\\nDo you want to add a new user ID (y/N)? \"\nde: \"\\nWillst Du eine neue Benutzer-ID hinzufgen? (j/N) \"\nes: \"\\nQuieres aadir un nuevo identificador de usuario (s/N)? \"\nfr: \"\\nVoulez-vous ajouter ce nouvel ID (o/N)?\"\nmuttde: \"\\nWillst Du eine neue Benutzer-ID hinzufgen? (j/N) \"\n\n\"\\nEnter the new user ID: \"\nde: \"\\nGib die neue Benutzer-ID ein: \"\nes: \"\\nIntroduzca el nuevo identificador: \"\nfr: \"\\nEntrez le nouveau nom d'utilisateur: \"\nmuttde: \"\\nGib die neue Benutzer-ID ein: \"\n\n\"\\nMake this user ID the primary user ID for this key (y/N)? \"\nde: \"\\nSoll dies die vorrangige Benutzer-ID fr diesen Schlssel werden? (j/N) \"\nes: \"\\nSe establece este identificador como primario para esta clave (s/N)? \"\nfr: \"\\nEtablir ce nom d'utilisateur comme nom principal pour cette cl \\\n(o/N)? \"\nmuttde: \"\\nSoll dies die vorrangige Benutzer-ID fr diesen Schlssel werden? (j/N) \"\n\n\"\\nDo you want to change your pass phrase (y/N)? \"\nde: \"\\nWillst Du Dein Mantra ndern? (j/N) \"\nes: \"\\nQuieres cambiar la contrasea (s/N)? \"\nfr: \"\\nVoulez vous changer votre mot de passe (o/N)? \"\nmuttde: \"\\nWillst Du Dein Mantra ndern? (j/N) \"\n\n\"(No changes will be made.)\\n\"\nde: \"\\n(Es werden keine nderungen vorgenommen.)\\n\"\nes: \"(No se efectuar ningn cambio.)\\n\"\nfr: \"(Aucun changement ne sera effectu.)\\n\"\nmuttde: \"\\n(Es werden keine nderungen vorgenommen.)\\n\"\n\n\"\\n\\007Unable to update secret key ring.\\n\"\nde: \"\\n\\007FEHLER beim Aktualisieren des privaten Schlsselbunds.\\n\"\nes: \"\\n\\007No puede actualizarse el anillo de claves secretas.\\n\"\nfr: \"\\n\\007Impossible de modifier le fichier de cls secrtes.\\n\"\nmutt: \"\\nUnable to update secret key ring.\\n\"\nmuttde: \"\\nFEHLER beim Aktualisieren des privaten Schlsselbunds.\\n\"\n\n\"\\nSecret key ring updated...\\n\"\nde: \"\\n\\nDer private Schlsselbund wurde aktualisiert.\\n\"\nes: \"\\nActualizado el anillo de claves secretas ...\\n\"\nfr: \"\\nFichier de cls secrtes modifi...\\n\"\nmuttde: \"\\n\\nDer private Schlsselbund wurde aktualisiert.\\n\"\n\n\"\\n\\007Unable to update public key ring.\\n\"\nde: \"\\n\\007FEHLER beim Aktualisieren des ffentlichen Schlsselbunds.\\n\"\nes: \"\\n\\007No puede actualizarse el anillo de claves pblicas.\\n\"\nfr: \"\\n\\007Impossible de modifier le fichier de cls publiques.\\n\"\nmutt: \"\\nUnable to update public key ring.\\n\"\nmuttde: \"\\nFEHLER beim Aktualisieren des ffentlichen Schlsselbunds.\\n\"\n\n\"(No need to update public key ring)\\n\"\nde: \"\\n(Keine nderung am ffentlichen Schlsselbund notwendig.)\\n\"\nes: \"(No es necesario actualizar el anillo de claves pblicas)\\n\"\nfr: \"(Pas besoin de modifier le fichier de cls publiques)\\n\"\nmuttde: \"\\n(Keine nderung am ffentlichen Schlsselbund notwendig.)\\n\"\n\n\"\\nDo you want to permanently revoke your public key\\n\\\nby issuing a secret key compromise certificate\\n\\\nfor \\\"%s\\\" (y/N)? \"\nde: \"\\nWillst Du Deinen ffentlichen Schlssel wirklich durch das Versenden\\n\\\neiner Widerrufs-Urkunde fr \\\"%s\\\"\\nzurckziehen, d.h. fr ungltig erklren? (j/N) \"\nes: \"\\nQuieres revocar permanentemente tu clave pblica\\n\\\nemitiendo un certificado de compromiso de clave secreta\\n\\\npara \\\"%s\\\" (s/N)? \"\nfr: \"\\nVoulez vous rvoquer de faon permanente votre cl publique\\n\\\nen mettant un certificat de compromission de cl secrte\\n\\\npour \\\"%s\\\" (o/N)? \"\nmuttde: \"\\nWillst Du Deinen ffentlichen Schlssel wirklich durch das Versenden\\n\\\neiner Widerrufs-Urkunde fr \\\"%s\\\"\\nzurckziehen, d.h. fr ungltig erklren? (j/N) \"\n\n\"You can only disable keys on your public keyring.\\n\"\nde: \"Du kannst nur Schlssel aus Deinem ffentlichen Schlsselbund sperren.\\n\"\nes: \"Slo puedes desactivar claves en el anillo de claves pblicas.\\n\"\nfr: \"Vous ne pouvez inactiver des cls que sur votre fichier de cls\\\n\\npubliques.\\n\"\nmuttde: \"Du kannst nur Schlssel aus Deinem ffentlichen Schlsselbund sperren.\\n\"\n\n\"\\nKey is already disabled.\\n\\\nDo you want to enable this key again (y/N)? \"\nde: \"\\nDieser Schlssel ist schon gesperrt.\\nMchtest Du ihn wieder freigeben? (j/N) \"\nes: \"\\nLa clave ya est desactivada.\\n\\\nQuieres activarla otra vez (s/N)? \"\nfr: \"\\nLa cl est dj inactive.\\n\\\nVoulez vous ractiver cette cl (o/N)? \"\nmuttde: \"\\nDieser Schlssel ist schon gesperrt.\\nMchtest Du ihn wieder freigeben? (j/N) \"\n\n\"\\nDisable this key (y/N)? \"\nde: \"\\nSoll dieser Schlssel gesperrt werden? (j/N) \"\nes: \"\\nDesactivar esta clave (s/N)? \"\nfr: \"Dsactiver cette cl (o/N)? \"\nmuttde: \"\\nSoll dieser Schlssel gesperrt werden? (j/N) \"\n\n\"Pick your RSA key size:\\n\\\n    1)  1024 bits- User grade, fast but less secure\\n\\\n    2)  1535 bits- Regional CA grade, medium speed, good security\\n\\\n    3)  2048 bits- Root CA grade, slow, high security\\n\\\nChoose 1, 2, or 3, or enter desired number of bits (384...8192): \"\nde: \"Whle die Lnge Deines RSA-Schlssels aus:\\\n\\n   1) 1024 Bits: fr Nutzer: schnell, aber nicht ganz so sicher\\\n\\n   2) 1535 Bits: fr regionale CAs: mittelmig schnell, recht sicher\\\n\\n   3) 2048 Bits: fr Root CAs: langsam, jedoch sehr sicher\\\n\\nAuswahl (1, 2, 3 oder die Lnge des Schlssels in Bits (384...8192)): \"\nes: \"Elija un tamao de clave RSA:\\n\\\n    1)  1024 bits- Nivel comercial bajo, r\\0341pido pero menos seguro\\n\\\n    2)  1535 bits- Nivel comercial alto, velocidad media con buena seguridad\\n\\\n    3)  2048 bits- Nivel \\\"militar\\\", lento con alta seguridad\\n\\\nEscoge 1, 2, 3, o el nmero requerido de bits (384...8192): \"\nfr: \"Choisissez la taille de votre clef RSA:\\n\\\n    1)  1024 bits- Niveau de base, rapide mais moins securitaire\\n\\\n    2)  1535 bits- Niveau de securit eleve - vitesse moyenne \\n\\\n    3)  2048 bits- Pour les militaires, les diplomates... les paranoiaques \\n\\\nChoisissez 1, 2, ou 3, ou entrez le nombre de bits desires (384...8192): \"\nmuttde: \"Whle die Lnge Deines RSA-Schlssels aus:\\\n\\n   1) 1024 Bits: fr Nutzer: schnell, aber nicht ganz so sicher\\\n\\n   2) 1535 Bits: fr regionale CAs: mittelmig schnell, recht sicher\\\n\\n   3) 2048 Bits: fr Root CAs: langsam, jedoch sehr sicher\\\n\\nAuswahl (1, 2, 3 oder die Lnge des Schlssels in Bits (384...8192)): \"\n\n\"Generating an RSA key with a %d-bit modulus.\\n\"\nde: \"Erzeugung eines RSA-Schlssels mit einem %d-Bit-Modulus.\\n\"\nes: \"Generando una clave RSA con mdulo de %d bits.\\n\"\nfr: \"Generation d'une cl RSA avec un module de %d bits.\\n\"\nmuttde: \"Erzeugung eines RSA-Schlssels mit einem %d-Bit-Modulus.\\n\"\n\n\"\\nYou need a user ID for your public key.  The desired form for this\\n\\\nuser ID is your name, followed by your E-mail address enclosed in\\n\\\n<angle brackets>, if you have an E-mail address.\\n\\\nForm: Real Name (comment) <email> (options)\\n\\\n  Optional options: ENCR, SIGN, EXPIRE:yyyy-mm-dd\\n\\\nEnter a user ID for your public key: \\n\"\nde: \"\\nDu brauchst eine Benutzer-ID fr Deinen ffentlichen Schlssel. Das bliche\\n\\\nFormat fr diese Benutzer-ID ist Dein Realname, gefolgt von Deinem Usernamen\\n\\\nin <spitzen Klammern>, falls Du per E-Mail erreichbar bist.\\n\\\nFormat: Brgerlicher Name (Kommentar) <email> (Optionen)\\n\\\n  Freiwillige Optionen: ENCR, SIGN, EXPIRE:yyyy-mm-dd\\n\\\nGib die Benutzer-ID fr Deinen ffentlichen Schlssel ein:\\n\"\nes: \"\\nNecesitas un identificador para tu clave pblica. El formato preferido\\n\\\nconsiste en tu nombre, seguido de tu direccin de correo electrnico,\\n\\\nsi tienes, entre <ngulos>.\\n\\\nForm: Real Name (comment) <email> (options)\\n\\\n  Optional options: ENCR, SIGN, EXPIRE:yyyy-mm-dd\\n\\\nIntroduce un identificador de usuario para tu clave pblica: \\n\"\nfr: \"\\nIl vous faut un nom d'utilisateur pour votre cl publique. La forme\\n\\\ndsire pour ce nom d'utilisateur est votre nom, suivi de votre addresse\\n\\\nde courrier lectronique entre <crochets>, si vous en avez une.\\n\\\nForm: Real Name (comment) <email> (options)\\n\\\n  Optional options: ENCR, SIGN, EXPIRE:yyyy-mm-dd\\n\\\nEntrez un nom d'utilisateur pour votre cl publique\\n\\\n(votre nom): \"\nmuttde: \"\\nDu brauchst eine Benutzer-ID fr Deinen ffentlichen Schlssel. Das bliche\\n\\\nFormat fr diese Benutzer-ID ist Dein Realname, gefolgt von Deinem Usernamen\\n\\\nin <spitzen Klammern>, falls Du per E-Mail erreichbar bist.\\n\\\nFormat: Brgerlicher Name (Kommentar) <email> (Optionen)\\n\\\n  Freiwillige Optionen: ENCR, SIGN, EXPIRE:yyyy-mm-dd\\n\\\nGib die Benutzer-ID fr Deinen ffentlichen Schlssel ein:\\n\"\n\n\"Generating RSA key-pair with UserID \\\"%s\\\".\\n\"\nde: \"Erzeugung eines RSA-Schlsselpaares mit der\\nBenutzer-ID \\\"%s\\\".\\n\"\nes: \"Generando el par de claves RSA con identificador \\\"%s\\\".\\n\"\nfr: \"Gnration d'une paire de clefs RSA de l'utilisateur '%s'.\\n\"\nmuttde: \"Erzeugung eines RSA-Schlsselpaares mit der\\nBenutzer-ID \\\"%s\\\".\\n\"\n\n\"\\nYou need a pass phrase to protect your RSA secret key.\\n\\\nYour pass phrase can be any sentence or phrase and may have many\\n\\\nwords, spaces, punctuation, or any other printable characters.\\n\"\nde: \"\\nDu brauchst ein Mantra, um Deinen privaten RSA-Schlssel zu schtzen.\\n\\\nDein Mantra kann jeder beliebige Satz oder Zeichenfolge sein und darf aus\\n\\\nvielen Worten, Leerzeichen oder anderen druckbaren Zeichen bestehen.\\n\"\nes: \"\\nNecesitas una contrasea para proteger tu clave secreta RSA.\\n\\\nPuede ser cualquier expresin formada por varias palabras, espacios,\\n\\\nsignos de puntuacin o cualquier otro carcter imprimible.\\n\"\nfr: \"\\nVous devez avoir un mot de passe pour protger votre cl RSA \\n\\\nsecrte. Votre mot de passe peut tre n'importe quelle phrase ou portion\\n\\\nde phrase et peut avoir plusieurs mots, espaces, caractres de ponctuation\\n\\\nou tout autre caractre imprimable.\\n\"\nmuttde: \"\\nDu brauchst ein Mantra, um Deinen privaten RSA-Schlssel zu schtzen.\\n\\\nDein Mantra kann jeder beliebige Satz oder Zeichenfolge sein und darf aus\\n\\\nvielen Worten, Leerzeichen oder anderen druckbaren Zeichen bestehen.\\n\"\n\n\"\\nNote that key generation is a lengthy process.\\n\"\nde: \"\\n\\nBeachte, da die Schlsselerzeugung eine zeitaufwendige Sache ist.\\n\"\nes: \"\\nTen en cuenta que la generacin de claves es un proceso lento.\\n\"\nfr: \"\\nNotez que la gnration de cl est une procdure lente.\\n\"\nmuttde: \"\\n\\nBeachte, da die Schlsselerzeugung eine zeitaufwendige Sache ist.\\n\"\n\n\"Key generation stopped at user request.\\n\"\nde: \"Die Schlsselerzeugung wurde durch den Benutzer abgebrochen!\\n\"\nes: \"Generacin de claves interrumpida a peticin del usuario.\\n\"\nfr: \"Le gnration de la clef a t stoppe  la demande de l'utilisateur.\\n\"\nmuttde: \"Die Schlsselerzeugung wurde durch den Benutzer abgebrochen!\\n\"\n\n\"\\n\\007Keygen failed!\\n\"\nde: \"\\n\\007FEHLER bei der Schlssel-Erzeugung!\\n\"\nes: \"\\n\\007Error en la generacin de claves\\n\"\nfr: \"\\n\\007Generation de cl non russie!\\n\"\nmutt: \"\\nKeygen failed!\\n\"\nmuttde: \"\\nFEHLER bei der Schlssel-Erzeugung!\\n\"\n\n\"Key ID %s\\n\"\nde: \"Schlssel-ID: %s\\n\"\nes: \"Identificador de clave %s\\n\"\nfr: \"Identificateur de cl %s\\n\"\nmuttde: \"Schlssel-ID: %s\\n\"\n\n\"Display secret components (y/N)?\"\nde: \"Geheime Bestandteile anzeigen? (j/N) \"\nes: \"Mostrar los componentes secretos (s/N)?\"\nfr: \"Affichier les composantes secretes (o/N)?\"\nmuttde: \"Geheime Bestandteile anzeigen? (j/N) \"\n\n\"\\007Key generation completed.\\n\"\nde: \"\\n\\007Die Erzeugung des Schlssels ist beendet.\\n\"\nes: \"\\007Finalizada la generacin de claves.\\n\"\nfr: \"\\007Gnration de cl termine.\\n\"\nmutt: \"Key generation completed.\\n\"\nmuttde: \"\\nDie Erzeugung des Schlssels ist beendet.\\n\"\n\n\"Type Bits/KeyID    Date       User ID\\n\"\nde: \"Typ  Bits/KeyID    Datum      NutzerID\\n\"\nes: \"Tipo Bits/Clave    Fecha      Identificador\\n\"\nfr: \"Type Bits/Clef     Date       ID utilisateur\\n\"\nmuttde: \"Typ  Bits/KeyID    Datum      NutzerID\\n\"\n\n\"\\n\\007File '%s' is not a text file; cannot display.\\n\"\nde: \"\\n\\007Die Datei '%s' ist keine Textdatei\\n\\\nund kann deshalb nicht angezeigt werden!\\n\"\nes: \"\\n\\007El fichero '%s' no es de texto; no puede mostrarse.\\n\"\nfr: \"\\n\\007Le fichier '%s' n'est pas un fichier de texte et ne peut tre \\\nvisualis\\n\"\nmutt: \"\\nFile '%s' is not a text file; cannot display.\\n\"\nmuttde: \"\\nDie Datei '%s' ist keine Textdatei\\n\\\nund kann deshalb nicht angezeigt werden!\\n\"\n\n\"\\nDone...hit any key\\r\"\nde: \"\\nFertig... Bitte drcke eine Taste.\\r\"\nes: \"\\nFinalizado...pulse cualquier tecla\\r\"\nfr: \"\\nTermin... appuyez sur n'importe quelle touche \\r\"\nmuttde: \"\\nFertig... Bitte drcke eine Taste.\\r\"\n\n\"-- More -- Space: next screen, Enter: next line\\\n, 'B': back, 'Q': quit --\\r\"\nde: \"-- Weiter -- Vorwrts: Leertaste oder Return; Rckwrts: 'B'; Ende: 'Q' --\\r\"\nes: \"-- ms -- espacio: otra pantalla, enter: otra lnea,\\\n B: atrs, Q: salir\\r\"\nfr: \"- Plus - Espace: procahin cran , Chariot: prochaine ligne\\\n, 'B': retour, 'Q': quitter - \\r\"\nmuttde: \"-- Weiter -- Vorwrts: Leertaste oder Return; Rckwrts: 'B'; Ende: 'Q' --\\r\"\n\n\"More -- %d%% -- Space: next screen, Enter: next line\\\n, 'B': back, 'Q': quit --\\r\"\nde: \"Weiter -- %d%% -- Vorwrts: Leertaste oder Return; Rckwrts: 'B'; Ende: 'Q' --\\r\"\nes: \"Ms -- %d%% -- espacio: otra pantalla, enter: otra lnea,\\\n B: atrs, Q: salir\\r\"\nfr: \"- Plus -  %D%% - Espace: procahin cran , Chariot: prochaine ligne\\\n, 'B': retour, 'Q': quitter - \\r\"\nmuttde: \"Weiter -- %d%% -- Vorwrts: Leertaste oder Return; Rckwrts: 'B'; Ende: 'Q' --\\r\"\n\n\"\\nEnter pass phrase: \"\nde: \"\\nGib das Mantra ein: \"\nes: \"\\nIntroduce la contrasea: \"\nfr: \"\\nEntrez votre mot de passe: \"\nmuttde: \"\\nGib das Mantra ein: \"\n\n\"\\nEnter same pass phrase again: \"\nde: \"\\nWiederhole das Mantra: \"\nes: \"\\nEscrbela otra vez: \"\nfr: \"\\nEntrez le mme mot de passe de nouveau: \"\nmuttde: \"\\nWiederhole das Mantra: \"\n\n\"\\n\\007Error: Pass phrases were different.  Try again.\"\nde: \"\\n\\007FEHLER: Die beiden Eingaben waren unterschiedlich! Bitte noch einmal.\"\nes: \"\\n\\007Error: Las contraseas son diferentes. Prueba otra vez.\"\nfr: \"\\n\\007Erreur: Les mots de passe taient diffrents. Essayez encore.\"\nmutt: \"\\nError: Pass phrases were different.  Try again.\"\nmuttde: \"\\nFEHLER: Die beiden Eingaben waren unterschiedlich! Bitte noch einmal.\"\n\n\"\\nStopped at user request\\n\"\nde: \"\\nAbbruch durch Benutzer\\n\"\nes: \"\\nInterrupcin por peticin del usuario\\n\"\nfr: \"\\nArrt par demande de l'utilisateur\\n\"\nmuttde: \"\\nAbbruch durch Benutzer\\n\"\n\n\"Pretty Good Privacy(tm) %s - Public-key encryption for the masses.\\n\"\nde: \"Pretty Good Privacy(tm) %s - Public-key-Verschlsselung fr die Massen.\\n\"\nes: \"Pretty Good Privacy(tm) %s - Criptografa de clave pblica para todos.\\n\"\nfr: \"Pretty Good Privacy(tm) %s - Cryptographie  cl publique pour tous.\\n\"\nmuttde: \"Pretty Good Privacy(tm) %s - Public-key-Verschlsselung fr die Massen.\\n\"\n\n\"(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software.\"\nde: \"(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software.\"\nes: \"(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software.\"\nfr: \"( c ) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. \"\nmuttde: \"(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software.\"\n\n\"Export of this software may be restricted by the U.S. government.\\n\"\nde: \"Der Export dieser Software aus den USA kann Beschrnkungen unterliegen.\\n\"\nes: \"La exportacin de este programa puede estar restringida por\\n\\\nel gobierno de los EE.UU.\"\nfr: \"L'exportation de ce logiciel peut tre restreint par le \\\ngouvernement des tats-Unis\"\nmuttde: \"Der Export dieser Software aus den USA kann Beschrnkungen unterliegen.\\n\"\n\n\"International version - not for use in the USA. Does not use RSAREF.\\n\"\nde: \"Internationale Version - nicht in den USA verwenden!  Benutzt nicht RSAREF.\\n\"\nes: \"Versin internacional - no apta para los EE.UU. No utiliza RSAREF.\\n\"\nfr: \"Version internationale - ne pas utiliser aux Etats-Unis. N'utilise pas le\nRSAREF.\\n\"\nmuttde: \"Internationale Version - nicht in den USA verwenden!  Benutzt nicht RSAREF.\\n\"\n\n\"Current time: %s\\n\"\nde: \"Aktuelles Datum und Uhrzeit: %s\\n\"\nes: \"Hora actual: %s\\n\"\nfr: \"Heure actuelle: %s\\n\"\nmuttde: \"Aktuelles Datum und Uhrzeit: %s\\n\"\n\n\"\\007No configuration file found.\\n\"\nde: \"\\007Keine Konfigurationsdatei gefunden!\\n\"\nes: \"\\007No se encuentra el fichero de configuracin.\\n\"\nfr: \"\\007Fichier de configuration introuvable.\\n\"\nmutt: \"No configuration file found.\\n\"\nmuttde: \"Keine Konfigurationsdatei gefunden!\\n\"\n\n\"\\007WARNING: Environmental variable TZ is not \\\ndefined, so GMT timestamps\\n\\\nmay be wrong.  See the PGP User's Guide to properly define TZ\\n\\\nin AUTOEXEC.BAT file.\\n\"\nde: \"\\007WARNUNG: Die Umgebungsvariable TZ ist nicht definiert, daher knnten\\n\\\ndie GMT-Zeitangaben falsch sein. Beachte den Abschnitt in der PGP-Anleitung\\n\\\nber das richtige Setzen von TZ in AUTOEXEC.BAT.\\n\\n\"\nes: \"\\007ADVERTENCIA: La variable TZ no est definida, por lo que\\n\\\nlos sellos de fecha GMT pueden estar equivocados. Consulta la Gua del\\n\\\nusuario de PGP para definir adecuadamente TZ en AUTOEXEC.BAT.\\n\"\nfr: \"\\007ATTENTION: La variable d'environnement TZ n'est pas dfinie, les\\n\\\ntemps GMT peuvent donc tres fausss. Voir le guide de l'utilisateur PGP pour\\n\\\ndfinir correctement TZ dans le fichier AUTOEXEC.BAT.\\n\"\nmutt: \"WARNING: Environmental variable TZ is not \\\ndefined, so GMT timestamps\\n\\\nmay be wrong.  See the PGP User's Guide to properly define TZ\\n\\\nin AUTOEXEC.BAT file.\\n\"\nmuttde: \"WARNUNG: Die Umgebungsvariable TZ ist nicht definiert, daher knnten\\n\\\ndie GMT-Zeitangaben falsch sein. Beachte den Abschnitt in der PGP-Anleitung\\n\\\nber das richtige Setzen von TZ in AUTOEXEC.BAT.\\n\\n\"\n\n\"\\nFile %s wiped and deleted. \"\nde: \"\\nDie Datei '%s' wurde berschrieben und gelscht.\"\nes: \"\\nEl fichero %s ha sido borrado y destruido. \"\nfr: \"\\nFichier %s effac et dtruit. \"\nmuttde: \"\\nDie Datei '%s' wurde berschrieben und gelscht.\"\n\n\"\\n\\007Error: Can't wipe out file '%s' - read only, maybe?\\n\"\nde: \"\\n\\007FEHLER: Die Datei '%s' kann nicht berschrieben werden.\\n\\\nIst sie vielleicht schreibgeschtzt?\\n\"\nes: \"\\n\\007Error: No puede eliminarse el fichero '%s' - \\\nquiz sea slo de lectura\\n\"\nfr: \"\\n\\007Erreur: Incapable de dtruire le fichier '%s' - lectu4re seulement peut tre?\\n\"\nmutt: \"\\nError: Can't wipe out file '%s' - read only, maybe?\\n\"\nmuttde: \"\\nFEHLER: Die Datei '%s' kann nicht berschrieben werden.\\n\\\nIst sie vielleicht schreibgeschtzt?\\n\"\n\n\"\\n\\007File '%s' does not exist.\\n\"\nde: \"\\n\\007Die Datei '%s' existiert nicht!\\n\"\nes: \"\\n\\007El fichero '%s' no existe.\\n\"\nfr: \"Le fichier '%s' n'existe pas. \\n\"\nmutt: \"\\nFile '%s' does not exist.\\n\"\nmuttde: \"\\nDie Datei '%s' existiert nicht!\\n\"\n\n\"\\nFor details on licensing and distribution, see the PGP User's Guide.\\\n\\nFor other cryptography products and custom development services, contact:\\\n\\nPhilip Zimmermann, 3021 11th St, Boulder CO 80304 USA, \\\nphone +1 303 541-0140\\n\"\nde: \"\\nInformationen ber Lizenzen und Verteilung finden sich in der PGP-Anleitung.\\\n\\nInformationen ber Verschlsselungs-Produkte und Auftrags-Entwicklungen:\\\n\\nPhilip Zimmermann, 3021 11th St, Boulder CO 80304 USA, Tel. +1-(303)-541-0140\\n\"\nes: \"\\nInformacin sobre licencia y distribucin en la Gua del usuario de PGP.\\\n\\nMs informacin sobre otros productos y servicios criptogrficos a medida:\\\n\\nPhilip Zimmermann, 3021 11th St, Boulder CO 80304 USA, tel +1 303 541-0140\\n\"\nfr: \"\\nConsulter le guide de l'utilisateur de PGP pour les dtails de\\n\\\nlicense et de distribution. Pour d'autres produits de cryptographie\\n\\\net services de dveloppement personaliss, contacter: Philip Zimmermann,\\n\\\n3021 11th St, Boulder CO 80304 USA, tlphone +1 303 541-0140\\n\"\nmuttde: \"\\nInformationen ber Lizenzen und Verteilung finden sich in der PGP-Anleitung.\\\n\\nInformationen ber Verschlsselungs-Produkte und Auftrags-Entwicklungen:\\\n\\nPhilip Zimmermann, 3021 11th St, Boulder CO 80304 USA, Tel. +1-(303)-541-0140\\n\"\n\n\"@translator@\"\nde: \"\\nbersetzer:\\\n\\n   Frank Pruefer <F.PRUEFER@LINK-L.cl.sub.de>; Stand: 07.10.1997\\\n\\n   (basierend auf der deutschen bersetzung der LANGUAGE.TXT von\\\n\\n   Marc Aurel <4-tea-2@bong.saar.de> vom 19.01.1994)\\n\"\nes: \"\\nTraducido al castellano por Armando Ramos <armando@clerval.org>.\\n\"\nfr: \"\\nTraduction franaise de Jean-loup Gailly <jloup@chorus.fr> et Yanik \\\nCrpeau <yanik@mlink.net>\\n\"\nmuttde: \"\\nbersetzer:\\\n\\n   Frank Pruefer <F.PRUEFER@LINK-L.cl.sub.de>; Stand: 07.10.1997\\\n\\n   (basierend auf der deutschen bersetzung der LANGUAGE.TXT von\\\n\\n   Marc Aurel <4-tea-2@bong.saar.de> vom 19.01.1994)\\n\"\n\n\"\\nFor a usage summary, type:  pgp -h\\n\"\nde: \"\\nEine bersicht der PGP-Befehle erhltst Du mit: pgp -h\\n\"\nes: \"\\nPara ver un resumen de las instrucciones, escribe: pgp -h\\n\"\nfr: \"\\nPour un sommaire d'utilisation, tapez:  pgp -h\\n\"\nmutt: \" \"\nmuttde: \" \"\n\n\"File %s created containing %d random bytes.\\n\"\nde: \"\\nDie Datei '%s', die %d Bytes Zufallszahlen enthlt,\\n\\\nwurde erzeugt.\\n\"\nes: \"Generado el fichero %s con %d bytes aleatorios.\\n\"\nfr: \"Le fichier %s est cr et contient %d octets alatoires\"\nmuttde: \"\\nDie Datei '%s', die %d Bytes Zufallszahlen enthlt,\\n\\\nwurde erzeugt.\\n\"\n\n\"\\007Invalid filename: '%s' too long\\n\"\nde: \"\\007Ungltiger Dateiname: '%s' ist zu lang.\\n\"\nes: \"\\007Nombre incorrecto: '%s' es demasiado largo\\n\"\nfr: \"\\007Nom incalide: '%s' trop long\\n\"\nmutt: \"Invalid filename: '%s' too long\\n\"\nmuttde: \"Ungltiger Dateiname: '%s' ist zu lang.\\n\"\n\n\"\\n\\007Input file '%s' looks like it may have been created by PGP. \"\nde: \"\\n\\007Die Eingabedatei '%s' knnte von PGP erzeugt worden sein.\"\nes: \"\\n\\007El fichero de entrada '%s' parece haber sido creado por PGP. \"\nfr: \"\\n\\007Le fichier d'entre '%s' semble avoir t cr par PGP. \"\nmutt: \"\\nInput file '%s' looks like it may have been created by PGP. \"\nmuttde: \"\\nDie Eingabedatei '%s' knnte von PGP erzeugt worden sein.\"\n\n\"\\nIs it safe to assume that it was created by PGP (y/N)? \"\nde: \"\\nWurde diese von PGP erzeugt? (j/N) \"\nes: \"\\nPuede asumirse con seguridad que ha sido as (s/N)? \"\nfr: \"\\nEtes vous sr qu'il a t cr par PGP (o/N)? \"\nmuttde: \"\\nWurde diese von PGP erzeugt? (j/N) \"\n\n\"\\nNote: '%s' is not a pure text file.\\n\\\nFile will be treated as binary data.\\n\"\nde: \"\\nHinweis: '%s' ist keine reine Textdatei.\\n\\\nDie Datei wird als Binrdatei behandelt.\\n\"\nes: \"\\nNota: '%s' no es un fichero de texto puro.\\n\\\nSe tratar como datos binarios.\\n\"\nfr: \"Note: '%s' n'est pas un fichier texte. \\n\\\nIl sera trait comme donnes binaires\"\nmuttde: \"\\nHinweis: '%s' ist keine reine Textdatei.\\n\\\nDie Datei wird als Binrdatei behandelt.\\n\"\n\n\"\\n\\007Error: Only text files may be sent as display-only.\\n\"\nde: \"\\n\\007FEHLER: Nur Textdateien knnen \\\"nur zur Ansicht\\\" verschickt werden.\\n\"\nes: \"\\n\\007Error: Slo los ficheros de texto pueden enviarse para mostrar.\\n\"\nfr: \"\\n\\007Erreur: seuls les fichiers de texte peuvent tre envoys\\n\\\npour affichage exclusivement.\\n\"\nmutt: \"\\nError: Only text files may be sent as display-only.\\n\"\nmuttde: \"\\nFEHLER: Nur Textdateien knnen \\\"nur zur Ansicht\\\" verschickt werden.\\n\"\n\n\"\\n\\007Error: MacBinary failed!\\n\"\nde: \"\\n\\007FEHLER: MacBinary fehlgeschlagen!\\n\"\nes: \"\\n\\007Error: ha fallado MacBinary\\n\"\nfr:\"\\n\\007Erreur:MacBinary a chou\\n\"\nmutt: \"\\nError: MacBinary failed!\\n\"\nmuttde: \"\\nFEHLER: MacBinary fehlgeschlagen!\\n\"\n\n\"\\nA secret key is required to make a signature. \"\nde: \"\\nFr eine Unterschrift wird ein privater Schlssel bentigt.\"\nes: \"\\nSe necesita una clave secreta para generar la firma. \"\nfr: \"\\nUne cl secrte est ncessaire pour faire une signature. \"\nmuttde: \"\\nFr eine Unterschrift wird ein privater Schlssel bentigt.\"\n\n\"\\nYou specified no user ID to select your secret key,\\n\\\nso the default user ID and key will be the most recently\\n\\\nadded key on your secret keyring.\\n\"\nde: \"\\nDa Du keine Benutzer-ID fr Deinen privaten Schlssel angegeben hast,\\n\\\nwird der letzte zum privaten Schlsselbund hinzugefgte Schlssel benutzt.\\n\"\nes: \"\\nNo has indicado ningn identificador para escoger la clave secreta,\\n\\\npor lo que el identificador y la clave por omisin sern los ltimos\\n\\\naadidos al anillo.\\n\"\nfr: \"\\nVous n'avez pas spcifi de nom d'utilisateur pour slectionner\\n\\\nvotre cl secrte, donc le nom et la cl par dfaut seront ceux les\\n\\\nplus rcemment ajouts  votre fichier de cls secrtes.\\n\"\nmuttde: \"\\nDa Du keine Benutzer-ID fr Deinen privaten Schlssel angegeben hast,\\n\\\nwird der letzte zum privaten Schlsselbund hinzugefgte Schlssel benutzt.\\n\"\n\n\"\\007Signature error\\n\"\nde: \"\\n\\007FEHLER beim Unterschreiben!\\n\"\nes: \"\\007Error de firma\\n\"\nfr: \"\\007Erreur de signature\\n\"\nmutt: \"Signature error\\n\"\nmuttde: \"\\nFEHLER beim Unterschreiben!\\n\"\n\n\"\\n\\nRecipients' public key(s) will be used to encrypt. \"\nde: \"\\n\\nVerschlsselung mit Empfnger-Schlssel(n).\\n\"\nes: \"\\n\\nSe utilizan las claves pblicas de los destinatarios para encriptar. \"\nfr: \"\\n\\nLa ou les cl(s) publique(s) du destinataire seront utilises\\\n pour chiffrer. \"\nmuttde: \"\\n\\nVerschlsselung mit Empfnger-Schlssel(n).\\n\"\n\n\"\\nA user ID is required to select the recipient's public key. \"\nde: \"\\nZur Auswahl des Empfnger-Schlssels wird eine Benutzer-ID bentigt.\"\nes: \"\\nSe necesita un identificador para encontrar la clave pblica\\n\\\ndel destinatario. \"\nfr: \"\\nUn nom d'utilisateur est ncessaire pour slectionner la cl\\n\\\npublique du destinataire. \"\nmuttde: \"\\nZur Auswahl des Empfnger-Schlssels wird eine Benutzer-ID bentigt.\"\n\n\"\\nEnter the recipient's user ID: \"\nde: \"\\nBenutzer-ID des Empfngers: \"\nes: \"\\nIntroduzca el identificador del destinatario: \"\nfr: \"\\nEntrez le nom d'utilisateur du destinataire: \"\nmuttde: \"\\nBenutzer-ID des Empfngers: \"\n\n\"\\007Encryption error\\n\"\nde: \"\\n\\007FEHLER beim Verschlsseln!\\n\"\nes: \"\\007Error en la encriptacin\\n\"\nfr: \"\\007Erreur de chiffrage\\n\"\nmutt: \"Encryption error\\n\"\nmuttde: \"\\nFEHLER beim Verschlsseln!\\n\"\n\n\"\\nCiphertext file: %s\\n\"\nde: \"\\nVerschlsselte Datei: %s\\n\"\nes: \"\\nFichero cifrado: %s\\n\"\nfr: \"\\nFichier chiffr: %s\\n\"\nmuttde: \"\\nVerschlsselte Datei: %s\\n\"\n\n\"\\nSignature file: %s\\n\"\nde: \"\\nUnterschriftsdatei: %s\\n\"\nes: \"\\nFichero de firma: %s\\n\"\nfr: \"\\nFichier de signature: %s\\n\"\nmuttde: \"\\nUnterschriftsdatei: %s\\n\"\n\n\"\\n\\007Error: Transport armor stripping failed for file %s\\n\"\nde: \"\\n\\007FEHLER beim Entfernen der Versandhlle von Datei '%s'.\\n\"\nes: \"\\n\\007Error: No se ha podido quitar la armadura de %s\\n\"\nfr: \"\\n\\007Erreur dans la suppression de la protection de transport pour\\n\\\nle fichier %s\\n\"\nmutt: \"\\nError: Transport armor stripping failed for file %s\\n\"\nmuttde: \"\\nFEHLER beim Entfernen der Versandhlle von Datei '%s'.\\n\"\n\n\"Stripped transport armor from '%s', producing '%s'.\\n\"\nde: \"\\nDie Versandhlle von Datei '%s' wurde entfernt.\\nAusgabedatei: %s\\n\"\nes: \"Quitada la armadura de '%s', produciendo '%s'.\\n\"\nfr: \"Protection de transport supprime pour '%s', produisant '%s'.\\n\"\nmuttde: \"\\nDie Versandhlle von Datei '%s' wurde entfernt.\\nAusgabedatei: %s\\n\"\n\n\"\\nLooking for next packet in '%s'...\\n\"\nde: \"\\nSuche nach dem nchsten Paket in '%s'...\\n\"\nes: \"\\nBuscando el siguiente paquete en '%s'...\\n\"\nfr: \"\\nRecherche du prochain paquet dans '%s'...\\n\"\nmuttde: \"\\nSuche nach dem nchsten Paket in '%s'...\\n\"\n\n\"\\nFile is encrypted.  Secret key is required to read it. \"\nde: \"\\nDie Datei ist verschlsselt. Zum Lesen wird der private Schlssel bentigt.\\n\"\nes: \"\\nEl fichero est encriptado. Para leerlo se necesita la clave secreta. \"\nfr: \"\\nLe fichier est chiffr. La cl secrte est ncessaire pour le lire.\"\nmuttde: \"\\nDie Datei ist verschlsselt. Zum Lesen wird der private Schlssel bentigt.\\n\"\n\n\"\\nThis file has a signature, which will be left in place.\\n\"\nde: \"\\nDiese Datei trgt eine Unterschrift, die nicht entfernt wird.\\n\"\nes: \"\\nEste fichero tiene firma, que se deja en su sitio.\\n\"\nfr: \"\\nCe fichier a une signature, qui sera garde.\\n\"\nmuttde: \"\\nDiese Datei trgt eine Unterschrift, die nicht entfernt wird.\\n\"\n\n\"\\nFile has signature.  Public key is required to check signature.\\n\"\nde: \"\\nDiese Datei trgt eine Unterschrift.\\n\\\nZur berprfung wird der ffentliche Schlssel bentigt.\\n\"\nes: \"\\nEl fichero tiene firma. Se necesita la clave pblica para comprobarla.\\n\"\nfr: \"Ce fichier est sign. Une clef publique est ncessaire pour sa vrification.\\n\"\nmuttde: \"\\nDiese Datei trgt eine Unterschrift.\\n\\\nZur berprfung wird der ffentliche Schlssel bentigt.\\n\"\n\n\"\\nFile is conventionally encrypted.  \"\nde: \"\\nDiese Datei ist konventionell verschlsselt.\\n\"\nes: \"\\nEl fichero ha sido encriptado convencionalmente.  \"\nfr: \"\\nLe fichier est chiffr de manire conventionnelle.  \"\nmuttde: \"\\nDiese Datei ist konventionell verschlsselt.\\n\"\n\n\"\\nFile contains key(s).  Contents follow...\"\nde: \"\\nDiese Datei enthlt einen oder mehrere Schlssel. Hier kommt die Liste:\\n\"\nes: \"\\nEl fichero contiene claves. Se muestran a continuacin ...\"\nfr: \"\\nLe fichier contient une ou plusieurs cls. Le contenu suit...\"\nmuttde: \"\\nDiese Datei enthlt einen oder mehrere Schlssel. Hier kommt die Liste:\\n\"\n\n\"\\nDo you want to add this keyfile to keyring '%s' (y/N)? \"\nde: \"\\nWillst Du die Schlssel dieser Datei zum Schlsselbund\\n'%s' hinzufgen? (j/N) \"\nes: \"\\nQuieres aadir este fichero de claves al anillo '%s' (s/N)? \"\nfr: \"\\nVoulez vous ajouter ce fichier de cl au fichier '%s' (o/N)? \"\nmuttde: \"\\nWillst Du die Schlssel dieser Datei zum Schlsselbund\\n'%s' hinzufgen? (j/N) \"\n\n\"\\007Keyring add error. \"\nde: \"\\n\\007FEHLER beim Hinzufgen zum Schlsselbund.\\n\"\nes: \"\\007Error al aadir en el anillo. \"\nfr: \"\\007Erreur dans l'addition au fichier de cls. \"\nmutt: \"Keyring add error. \"\nmuttde: \"\\nFEHLER beim Hinzufgen zum Schlsselbund.\\n\"\n\n\"\\007\\nError: '%s' is not a ciphertext, signature, or key file.\\n\"\nde: \"\\007\\nFEHLER: Die Datei '%s' ist nicht verschlsselt\\n\\\nund enthlt weder eine Unterschrift noch einen oder mehrere Schlssel.\\n\"\nes: \"\\007\\nError: '%s' no es un texto cifrado, una firma ni una clave.\\n\"\nfr: \"\\007\\nErreur: '%s' n'est pas un fichier chiffr, de signatures\\\n\\nou de cls.\\n\"\nmutt: \"\\nError: '%s' is not a ciphertext, signature, or key file.\\n\"\nmuttde: \"\\nFEHLER: Die Datei '%s' ist nicht verschlsselt\\n\\\nund enthlt weder eine Unterschrift noch einen oder mehrere Schlssel.\\n\"\n\n\"\\n\\nThis message is marked \\\"For your eyes only\\\".  Display now \\\n(Y/n)? \"\nde: \"\\n\\nDiese Nachricht ist als VERTRAULICH markiert! Jetzt anzeigen? (J/n) \"\nes: \"\\n\\nEste mensaje est marcado como \\\"Slo para tus ojos\\\".\\\nMostrar ahora (S/n)? \"\nfr: \"\\n\\nCe message est marqu \\\"Pour vos yeux seulement\\\".\\n\\\nAfficher maintenant (O/n)? \"\nmuttde: \"\\n\\nDiese Nachricht ist als VERTRAULICH markiert! Jetzt anzeigen? (J/n) \"\n\n\"\\n\\nPlaintext message follows...\\n\"\nde: \"\\n\\nHier kommt die Nachricht im Klartext:\\n\"\nes: \"\\n\\nMensaje en claro a continuacin...\\n\"\nfr: \"\\n\\nLe message en clair suit...\\n\"\nmuttde: \"\\n\\nHier kommt die Nachricht im Klartext:\\n\"\n\n\"Save this file permanently (y/N)? \"\nde: \"Klartext sichern? (j/N) \"\nes: \"Grabar este fichero de forma permanente (s/N)? \"\nfr: \"Sauvegarde de ce fichier de manire permanente (o/N)? \"\nmuttde: \"Klartext sichern? (j/N) \"\n\n\"Enter filename to save file as: \"\nde: \"Klartext sichern als: \"\nes: \"Introduzca el nombre para el fichero: \"\nfr: \"Entrez le nom du fichier de sauvegarde: \"\nmuttde: \"Klartext sichern als: \"\n\n\"Enter filename to save file as:\"\nde: \"Gib den Namen ein, unter dem die Datei zu sichern ist:\"\nes: \"Introduzca el nombre para el fichero:\"\nfr: \"Donner le nom de fichier pour sauvegarder sous:\"\nmuttde: \"Gib den Namen ein, unter dem die Datei zu sichern ist:\"\n\n\"\\nPlaintext filename: %s\"\nde: \"\\nDateiname des Klartextes: %s\"\nes: \"\\nNombre del fichero normal: %s\"\nfr: \"\\nNom du fichier en clair: %s\"\nmuttde: \"\\nDateiname des Klartextes: %s\"\n\n\"\\nPlaintext file '%s' looks like it contains a public key.\"\nde: \"\\nDie Klartextdatei '%s' scheint einen\\nffentlichen Schlssel zu enthalten.\"\nes: \"\\nEl fichero normal '%s' parece contener una clave pblica.\"\nfr: \"\\nLe ficher en clair '%s' semble contenir une cl publique.\"\nmuttde: \"\\nDie Klartextdatei '%s' scheint einen\\nffentlichen Schlssel zu enthalten.\"\n\n\"\\nPlaintext file '%s' looks like a %s file.\"\nde: \"\\nDie Klartextdatei '%s' scheint eine %s-Datei zu sein.\"\nes: \"\\nEl fichero normal '%s' parece un fichero %s.\"\nfr: \"\\nLe fichier en clair '%s' semble tre un fichier %s.\"\nmuttde: \"\\nDie Klartextdatei '%s' scheint eine %s-Datei zu sein.\"\n\n\"\\n\\007Output file '%s' may contain more ciphertext or signature.\"\nde: \"\\n\\007Die Ausgabedatei '%s' knnte weiteren\\n\\\nverschlsselten Text oder eine Unterschrift enthalten.\"\nes: \"\\n\\007El fichero de salida '%s' puede contener ms texto \\\ncifrado o una firma.\"\nfr: \"\\n\\007Le fichier de sortie '%s' peut contenir d'autre texte chiffr\\n\\\nou signature.\"\nmutt: \"\\nOutput file '%s' may contain more ciphertext or signature.\"\nmuttde: \"\\nDie Ausgabedatei '%s' knnte weiteren\\n\\\nverschlsselten Text oder eine Unterschrift enthalten.\"\n\n\"\\a\\nError: PGP User's Guide not found.\\n\\\nPGP looked for it in the following directories:\\n\"\nde: \"\\a\\nFEHLER: PGP-Benutzerhandbuch nicht gefunden!\\n\\\nPGP hat danach in den folgenden Verzeichnissen gesucht:\\n\"\nes: \"\\a\\nError: No se encuentra la Gua del usuario.\\n\\\nSe ha buscado en estos directorios:\\n\"\nfr: \"\\n\\aErreur: Le manuel d'utilisation de PGP est introuvable.\\n\\\nPGP a examin les repertoires suivants:\\n\"\nmuttde: \"\\a\\nFEHLER: PGP-Benutzerhandbuch nicht gefunden!\\n\\\nPGP hat danach in den folgenden Verzeichnissen gesucht:\\n\"\n\n\"and the doc subdirectory of each of the above.  Please put a copy of\\n\\\nboth volumes of the User's Guide in one of these directories.\\n\\\n\\n\\\nUnder NO CIRCUMSTANCES should PGP ever be distributed without the PGP\\n\\\nUser's Guide, which is included in the standard distribution package.\\n\\\nIf you got a copy of PGP without the manual, please inform whomever you\\n\\\ngot it from that this is an incomplete package that should not be\\n\\\ndistributed further.\\n\\\n\\n\\\nPGP will not generate a key without finding the User's Guide.\\n\\\nThere is a simple way to override this restriction.  See the\\n\\\nPGP User's Guide for details on how to do it.\\n\\\n\\n\"\nde: \"sowie jeweils im Unterverzeichnis 'DOC' der oben genannten Verzeichnisse.\\n\\\nBitte lege eine Kopie beider Teile des Benutzerhandbuches (Dateien PGPDOC1.TXT\\n\\\nund PGPDOC2.TXT) in eines der genannten Verzeichnisse.\\n\\\nUnter GAR KEINEN UMSTNDEN sollte PGP jemals ohne das PGP-Benutzerhandbuch\\n\\\nausgeliefert werden, das sich im Standard-Auslieferungspaket befindet. Wenn\\n\\\nDu eine Kopie von PGP ohne das Handbuch erhalten hast, dann informiere bitte\\n\\\ndenjenigen, von dem Du sie bekommen hast, da es sich um ein unvollstndiges\\n\\\nPaket handelt, das knftig nicht mehr ausgeliefert werden sollte.\\n\\\nPGP generiert keine Schlssel, ohne das Handbuch gefunden zu haben!\\n\\\nIm PGP-Handbuch steht brigens auch, wie diese Einschrnkung zu umgehen ist...\\n\"\nes: \"y el subdirectorio doc de cada uno de ellos. Pon una copia de\\n\\\nambos volmenes en uno de esos directorios.\\n\\\n\\n\\\nBajo *ninguna circunstancia* debe distribuirse PGP sin la Gua del usuario,\\n\\\nincluida con la distribucin habitual.\\n\\\nSi tienes una copia de PGP sin manual, informa a quien te la suministr de\\n\\\nque es un paquete incompleto que no debe seguir distribuyndose.\\n\\\n\\n\\\nPGP no genera ninguna clave si no encuentra la Gua del usuario.\\n\\\nHay una forma sencilla de saltarse esta restriccin. Consulta la\\n\\\nGua para ver cmo hacerlo.\\n\\\n\\n\"\nfr: \"et leur(s) sous-repertoire(s). Veuillez placer une copie des\\n\\\ndeux (2) documents constituant le manuel d'utilisation dans l'un de\\n\\\nces repertoires.\\n\\\nEn aucune cinconstances PGP ne devrait etre distribu sans que les\\n\\\ndocuments constituant le manuel ne soit inclus avec le reste.\\n\\\nSi vous avez obtenu PGP sans les documents constituant le manuel\\n\\\nveuillez SVP en aviser votre fournisseur que PGP est incomplet et\\n\\\nque cette maniere de distribuer PGP doit cesser.\\n\\\n\\n\\\nPGP ne fonctionnera pas sans la presence des deux documents constituant le\nmanuel \\n\\\nLa facon de circonvenir a cette restriction est de consulter le manuel\\n\\\n\\n\"\nmuttde: \"sowie jeweils im Unterverzeichnis 'DOC' der oben genannten Verzeichnisse.\\n\\\nBitte lege eine Kopie beider Teile des Benutzerhandbuches (Dateien PGPDOC1.TXT\\n\\\nund PGPDOC2.TXT) in eines der genannten Verzeichnisse.\\n\\\nUnter GAR KEINEN UMSTNDEN sollte PGP jemals ohne das PGP-Benutzerhandbuch\\n\\\nausgeliefert werden, das sich im Standard-Auslieferungspaket befindet. Wenn\\n\\\nDu eine Kopie von PGP ohne das Handbuch erhalten hast, dann informiere bitte\\n\\\ndenjenigen, von dem Du sie bekommen hast, da es sich um ein unvollstndiges\\n\\\nPaket handelt, das knftig nicht mehr ausgeliefert werden sollte.\\n\\\nPGP generiert keine Schlssel, ohne das Handbuch gefunden zu haben!\\n\\\nIm PGP-Handbuch steht brigens auch, wie diese Einschrnkung zu umgehen ist...\\n\"\n\n\"\\007Keygen error. \"\nde: \"\\n\\007FEHLER bei der Erzeugung des Schlssels.\\n\"\nes: \"\\007Error en la generacin de claves. \"\nfr: \"\\007Erreur dans la gnration de cl. \"\nmutt: \"Keygen error. \"\nmuttde: \"\\nFEHLER bei der Erzeugung des Schlssels.\\n\"\n\n\"\\007Keyring check error.\\n\"\nde: \"\\n\\007FEHLER bei der berprfung des Schlsselbunds.\\n\"\nes: \"\\007Error en la comprobacin del anillo.\\n\"\nfr: \"Erreur dans la vrification du trousseau de clef.\"\nmutt: \"Keyring check error.\\n\"\nmuttde: \"\\nFEHLER bei der berprfung des Schlsselbunds.\\n\"\n\n\"\\007Maintenance pass error. \"\nde: \"\\n\\007FEHLER beim Verwaltungsdurchgang.\\n\"\nes: \"\\007Error en el proceso de mantenimiento. \"\nfr: \"\\007Erreur dans la passe de maintenance. \"\nmutt: \"Maintenance pass error. \"\nmuttde: \"\\nFEHLER beim Verwaltungsdurchgang.\\n\"\n\n\"File '%s' is not a public keyring\\n\"\nde: \"Die Datei '%s' ist kein ffentlicher Schlsselbund.\\n\"\nes: \"El fichero '%s' no es un anillo de claves pblicas\\n\"\nfr: \"Le fichier '%s' n'est pas un fichier de cls publiques\\n\"\nmuttde: \"Die Datei '%s' ist kein ffentlicher Schlsselbund.\\n\"\n\n\"\\nA user ID is required to select the public key you want to sign. \"\nde: \"\\nZur Auswahl des zu unterschreibenden Schlssels wird\\n\\\neine Benutzer-ID bentigt.\"\nes: \"\\nSe necesita un identificador para elegir\\n\\\nla clave pblica por firmar. \"\nfr: \"\\nUn nom d'utilisateur est ncessaire pour slectionner la cl\\n\\\npublique que vous voulez signer. \"\nmuttde: \"\\nZur Auswahl des zu unterschreibenden Schlssels wird\\n\\\neine Benutzer-ID bentigt.\"\n\n\"\\nEnter the public key's user ID: \"\nde: \"\\nBenutzer-ID des ffentlichen Schlssels: \"\nes: \"\\nIntroduzca el identificador de la clave pblica: \"\nfr: \"\\nEntrez le nom d'utilisateur pour la cl publique: \"\nmuttde: \"\\nBenutzer-ID des ffentlichen Schlssels: \"\n\n\"\\007Key signature error. \"\nde: \"\\n\\007FEHLER beim Unterschreiben des Schlssels.\\n\"\nes: \"\\007Error en firma de clave. \"\nfr: \"\\007Erreur dans la signature de cl. \"\nmutt: \"Key signature error. \"\nmuttde: \"\\nFEHLER beim Unterschreiben des Schlssels.\\n\"\n\n\"\\nA user ID is required to select the key you want to revoke or \\\ndisable. \"\nde: \"\\nZur Auswahl des zurckzuziehenden oder zu sperrenden Schlssels wird\\n\\\neine Benutzer-ID bentigt.\"\nes: \"\\nSe necesita un identificador de usuario para elegir la clave \\\nque quieras\\n\\revocar o desactivar. \"\nfr: \"\\nUn nom d'utilisateur est requis pour slectionner la cl que vous\\\nvoulez rvoquer ou inactiver. \"\nmuttde: \"\\nZur Auswahl des zurckzuziehenden oder zu sperrenden Schlssels wird\\n\\\neine Benutzer-ID bentigt.\"\n\n\"\\nEnter user ID: \"\nde: \"\\nBenutzer-ID: \"\nes: \"\\nIntroduce el identificador: \"\nfr: \"\\nEntrez le nom d'utilisateur: \"\nmuttde: \"\\nBenutzer-ID: \"\n\n\"\\nA user ID is required to select the key you want to edit. \"\nde: \"\\nZur Auswahl des zu bearbeitenden Schlssels wird eine Benutzer-ID bentigt.\"\nes: \"\\nSe necesita el identificador de usuario para elegir la clave que \\\nquieras\\nmodificar. \"\nfr: \"\\nUn nom d'utilisateur est ncessaire pour slectionner la cl que\\n\\\nvous voulez modifier. \"\nmuttde: \"\\nZur Auswahl des zu bearbeitenden Schlssels wird eine Benutzer-ID bentigt.\"\n\n\"\\nEnter the key's user ID: \"\nde: \"\\nBenutzer-ID des Schlssels: \"\nes: \"\\nIntroduce el identificador: \"\nfr: \"\\nEntrez le nom d'utilisateur pour la cl: \"\nmuttde: \"\\nBenutzer-ID des Schlssels: \"\n\n\"\\007Keyring edit error. \"\nde: \"\\n\\007FEHLER beim Bearbeiten des Schlsselbunds.\\n\"\nes: \"\\007Error en la modificacin del anillo. \"\nfr: \"\\007Erreur dans la modification du fichier de cls. \"\nmutt: \"Keyring edit error. \"\nmuttde: \"\\nFEHLER beim Bearbeiten des Schlsselbunds.\\n\"\n\n\"\\n\\007Key file '%s' does not exist.\\n\"\nde: \"\\n\\007Die Datei '%s' existiert nicht.\\n\"\nes: \"\\n\\007No existe el anillo de claves '%s.\\n\"\nfr: \"\\n\\007Le fichier de cls '%s' n'existe pas.\\n\"\nmutt: \"\\nKey file '%s' does not exist.\\n\"\nmuttde: \"\\nDie Datei '%s' existiert nicht.\\n\"\n\n\"\\nA user ID is required to select the key you want to extract. \"\nde: \"\\nZur Auswahl des zu extrahierenden Schlssels wird eine Benutzer-ID bentigt.\"\nes: \"\\nSe necesita el identificador de usuario para elegir la clave que \\\nquieras\\n\\extraer. \"\nfr: \"\\nUn nom d'utilisateur est ncessaire pour slectionner la cl que\\n\\\nvous voulez extraire. \"\nmuttde: \"\\nZur Auswahl des zu extrahierenden Schlssels wird eine Benutzer-ID bentigt.\"\n\n\"\\007Keyring extract error. \"\nde: \"\\n\\007FEHLER beim Extrahieren aus dem Schlsselbund.\\n\"\nes: \"\\007Error al extraer del anillo. \"\nfr: \"\\007Erreur dans l'extraction du fichier de cls. \"\nmutt: \"Keyring extract error. \"\nmuttde: \"\\nFEHLER beim Extrahieren aus dem Schlsselbund.\\n\"\n\n\"\\nA user ID is required to select the public key you want to\\n\\\nremove certifying signatures from. \"\nde: \"\\nZur Auswahl des Schlssels, von dem Beglaubigungen entfernt werden sollen,\\n\\\nwird eine Benutzer-ID bentigt.\"\nes: \"\\nSe necesita el identificador de usuario para elegir la clave pblica\\n\\\nde la que suprimir firmas. \"\nfr: \"\\nUn nom d'utilisateur est ncessaire pour slectionner la cl\\\n publique\\n\\\npour laquelle vous voulez supprimer des signatures de certification. \"\nmuttde: \"\\nZur Auswahl des Schlssels, von dem Beglaubigungen entfernt werden sollen,\\n\\\nwird eine Benutzer-ID bentigt.\"\n\n\"\\nA user ID is required to select the key you want to remove. \"\nde: \"\\nZur Auswahl des zu lschenden Schlssels wird eine Benutzer-ID bentigt.\"\nes: \"\\nSe necesita el identificador de usuario para elegir la clave que \\\nquieras\\nsuprimir . \"\nfr: \"\\nUn nom d'utilisateur est ncessaire pour slectionner la cl que\\n\\\nvous voulez supprimer. \"\nmuttde: \"\\nZur Auswahl des zu lschenden Schlssels wird eine Benutzer-ID bentigt.\"\n\n\"\\007Key signature remove error. \"\nde: \"\\n\\007FEHLER beim Entfernen der Beglaubigung.\\n\"\nes: \"\\007Error en la supresin de la firma de una clave. \"\nfr: \"\\007Erreur dans la suppression de signature d'une cl. \"\nmutt: \"Key signature remove error. \"\nmuttde: \"\\nFEHLER beim Entfernen der Beglaubigung.\\n\"\n\n\"\\007Keyring remove error. \"\nde: \"\\n\\007FEHLER beim Lschen aus dem Schlsselbund.\\n\"\nes: \"\\007Error al suprimir del anillo. \"\nfr: \"\\007Erreur dans la suppression du fichier de cls. \"\nmutt: \"Keyring remove error. \"\nmuttde: \"\\nFEHLER beim Lschen aus dem Schlsselbund.\\n\"\n\n\"\\007Keyring view error. \"\nde: \"\\n\\007FEHLER beim Anzeigen des Schlsselbunds.\\n\"\nes: \"\\007Error al visualizar el anillo. \"\nfr: \"\\007Erreur dans la visualisation du fichier de cls. \"\nmutt: \"Keyring view error. \"\nmuttde: \"\\nFEHLER beim Anzeigen des Schlsselbunds.\\n\"\n\n\"For more detailed help, consult the PGP User's Guide.\\n\"\nde: \"Ausfhrlichere Hilfe findet sich in der PGP-Anleitung.\\n\"\nes: \"Para obtener ms ayuda, consulta la Gua del usuario de PGP.\\n\"\nfr: \"Pour une aide plus dtaille, consultez le guide de l'utilisateur de\nPGP.\\n\"\nmutt: \"\\n\"\nmuttde: \"\\n\"\n\n\"\\nInvalid arguments.\\n\"\nde: \"\\nUngltige Argumente!\\n\"\nes: \"\\nArgumentos incorrectos.\\n\"\nfr: \"\\nArguments invalides.\\n\"\nmuttde: \"\\nUngltige Argumente!\\n\"\n\n\"\\nUsage summary:\\\n\\nTo encrypt a plaintext file with recipent's public key, type:\\\n\\n   pgp -e textfile her_userid [other userids] (produces textfile.pgp)\\\n\\nTo sign a plaintext file with your secret key:\\\n\\n   pgp -s textfile [-u your_userid]           (produces textfile.pgp)\\\n\\nTo sign a plaintext file with your secret key, and then encrypt it\\\n\\n   with recipent's public key, producing a .pgp file:\\\n\\n   pgp -es textfile her_userid [other userids] [-u your_userid]\\\n\\nTo encrypt with conventional encryption only:\\\n\\n   pgp -c textfile\\\n\\nTo decrypt or check a signature for a ciphertext (.pgp) file:\\\n\\n   pgp ciphertextfile [-o plaintextfile]\\\n\\nTo produce output in ASCII for email, add the -a option to other options.\\\n\\nTo generate your own unique public/secret key pair:  pgp -kg\\\n\\nFor help on other key management functions, type:   pgp -k\\n\"\nde: \"\\nbersicht der PGP-Befehle:\\\n\\nVerschlsseln eines Textes mit dem ffentlichen Schlssel des Empfngers:\\\n\\n   pgp -e {Text} {Benutzer-ID des Empfngers}  (Ergebnis: {Text}.pgp)\\\n\\nUnterschreiben eines Textes mit Deinem privaten Schlssel:\\\n\\n   pgp -s {Text} [-u {Deine Benutzer-ID}]      (Ergebnis: {Text}.pgp)\\\n\\nUnterschreiben eines Textes mit Deinem privaten Schlssel und anschlieend\\\n\\nVerschlsseln mit dem ffentlichen Schlssel des Empfngers:\\\n\\n   pgp -es {Text} {Benutzer-ID des Empfngers} [weitere Benutzer-IDs]\\\n\\n       [-u {Deine Benutzer-ID}]                (Ergebnis: {Text}.pgp)\\\n\\nVerschlsseln mit konventioneller Verschlsselung:\\\n\\n   pgp -c {Text}\\\n\\nEntschlsseln oder berprfen der Unterschrift:\\\n\\n   pgp {verschlsselter Text} [-o {Klartext}]\\\n\\nVerpacken der Ausgabe in ASCII (fr E-Mail): pgp {...} -a {...}\\\n\\nErzeugen eines eigenen Schlssel-Paares:     pgp -kg\\\n\\nHilfe zur Schlsselverwaltung:               pgp -k\\n\"\nes: \"\\nResumen de las instrucciones:\\\n\\nEncriptar fichero normal con la clave pblica del destinatario:\\\n\\n   pgp -e ftexto su_identificador             (produce ftexto.pgp)\\\n\\nFirmar un fichero de texto normal con tu clave secreta:\\\n\\n   pgp -s ftexto [-u tu_identificador]         (produce ftexto.pgp)\\\n\\nFirmar un fichero normal con tu clave secreta y despus encriptarlo\\\n\\n   con la clave pblica del destinatario, produciendo un fichero .pgp:\\\n\\n   pgp -es ftexto su_identificador [otros] [-u tu_identificador]\\\n\\nEncriptar slo con cifrado convencional:\\\n\\n   pgp -c ftexto\\\n\\nDesencriptar o comprobar la firma en un fichero cifrado (.pgp):\\\n\\n   pgp fcifrado [-o fnormal]\\\n\\nProducir resultado en ASCII para correo electrnico: aadir la opcin -a.\\\n\\nGenerar tu propio par nico de claves pblica/secreta:      pgp -kg\\\n\\nAyuda sobre otras funciones de gestin de claves:              pgp -k\\n\"\nfr: \"\\nSommaire:\\\n\\nPour chiffrer un fichier en clair avec la cl publique du destinataire, \\\ntapez:\\\n\\n   pgp -e fichier  son_nom [autres noms]              (produit fichier.pgp)\\\n\\nPour signer un texte en clair avec votre cl secrte:\\\n\\n   pgp -s  fichier [-u votre_nom]             (produit fichier.pgp)\\\n\\nPour signer un texte en clair avec votre cl secrte, puis le chiffrer\\\n\\n   avec la cl publique du destinataire, produisant un fichier .pgp:\\\n\\n   pgp -es fichier  son_nom [autres noms] [-u votre_nom]\\\n\\nPour chiffrer de manire conventionelle seulement:\\\n\\n   pgp -c fichier\\\n\\nPour dchiffrer ou vrifier une signature pour un fichier chiffr (.pgp):\\\n\\n   pgp fichier_chiffr  [-o fichier_en_clair]\\\n\\nPour produire une sortie en ASCII pour courrier lectronique, ajouter\\\n\\nl'option -a aux autres options.\\\n\\nPour gnrer votre propre paire de cls publique/secrte:\\\n\\n   pgp -kg\\\n\\nPour de l'aide sur les autres fonctions de gestion de cl, tapez:  pgp -k\\n\"\nmuttde: \"\\nbersicht der PGP-Befehle:\\\n\\nVerschlsseln eines Textes mit dem ffentlichen Schlssel des Empfngers:\\\n\\n   pgp -e {Text} {Benutzer-ID des Empfngers}  (Ergebnis: {Text}.pgp)\\\n\\nUnterschreiben eines Textes mit Deinem privaten Schlssel:\\\n\\n   pgp -s {Text} [-u {Deine Benutzer-ID}]      (Ergebnis: {Text}.pgp)\\\n\\nUnterschreiben eines Textes mit Deinem privaten Schlssel und anschlieend\\\n\\nVerschlsseln mit dem ffentlichen Schlssel des Empfngers:\\\n\\n   pgp -es {Text} {Benutzer-ID des Empfngers} [weitere Benutzer-IDs]\\\n\\n       [-u {Deine Benutzer-ID}]                (Ergebnis: {Text}.pgp)\\\n\\nVerschlsseln mit konventioneller Verschlsselung:\\\n\\n   pgp -c {Text}\\\n\\nEntschlsseln oder berprfen der Unterschrift:\\\n\\n   pgp {verschlsselter Text} [-o {Klartext}]\\\n\\nVerpacken der Ausgabe in ASCII (fr E-Mail): pgp {...} -a {...}\\\n\\nErzeugen eines eigenen Schlssel-Paares:     pgp -kg\\\n\\nHilfe zur Schlsselverwaltung:               pgp -k\\n\"\n\n\"\\nKey management functions:\\\n\\nTo generate your own unique public/secret key pair:\\\n\\n   pgp -kg\\\n\\nTo add a key file's contents to your public or secret key ring:\\\n\\n   pgp -ka keyfile [keyring]\\\n\\nTo remove a key or a user ID from your public or secret key ring:\\\n\\n   pgp -kr userid [keyring]\\\n\\nTo edit your user ID or pass phrase:\\\n\\n   pgp -ke your_userid [keyring]\\\n\\nTo extract (copy) a key from your public or secret key ring:\\\n\\n   pgp -kx userid keyfile [keyring]\\\n\\nTo view the contents of your public key ring:\\\n\\n   pgp -kv[v] [userid] [keyring]\\\n\\nTo check signatures on your public key ring:\\\n\\n   pgp -kc [userid] [keyring]\\\n\\nTo sign someone else's public key on your public key ring:\\\n\\n   pgp -ks her_userid [-u your_userid] [keyring]\\\n\\nTo remove selected signatures from a userid on a keyring:\\\n\\n   pgp -krs userid [keyring]\\\n\\n\"\nde: \"\\nSchlssel-Verwaltung:\\\n\\nErzeugen eines eigenen, eindeutigen Schlssel-Paares (privat/ffentlich):\\\n\\n   pgp -kg\\\n\\nHinzufgen von Schlsseln zum privaten oder ffentlichen Schlsselbund:\\\n\\n   pgp -ka {Datei mit Schlsseln} [{Schlsselbund}]\\\n\\nLschen eines Schlssels oder einer Benutzer-ID aus einem Schlsselbund:\\\n\\n   pgp -kr {Benutzer-ID} [{Schlsselbund}]\\\n\\nndern Deiner Benutzer-ID oder Deines Mantras:\\\n\\n   pgp -ke {Deine Benutzer-ID} [{Schlsselbund}]\\\n\\nHerauskopieren eines Schlssels aus einem Schlsselbund:\\\n\\n   pgp -kx {Benutzer-ID} {Ausgabe-Datei} [{Schlsselbund}]\\\n\\nAnzeigen des Inhaltes des ffentlichen Schlsselbunds:\\\n\\n   pgp -kv[v] [{Benutzer-ID}] [{Schlsselbund}]\\\n\\nberprfen der Beglaubigungen im ffentlichen Schlsselbund:\\\n\\n   pgp -kc [{Benutzer-ID}] [{Schlsselbund}]\\\n\\nBeglaubigen eines ffentlichen Schlssels eines anderen Benutzers:\\\n\\n   pgp -ks {seine Benutzer-ID} [-u {Deine Benutzer-ID}] [{Schlsselbund}]\\\n\\nEntfernen ausgewhlter Beglaubigungen von einem Schlssel:\\\n\\n   pgp -krs {Benutzer-ID} [{Schlsselbund}]\\n\"\nes: \"\\nFunciones para la gestin de claves:\\\n\\nGenerar tu propio par nico de claves pblica/secreta:\\\n\\n   pgp -kg\\\n\\nAadir contenido de fichero de clave al anillo de claves pblicas o secretas:\\\n\\n   pgp -ka fdclaves [anillo]\\\n\\nSuprimir una clave o identificador de usuario de un anillo de claves:\\\n\\n   pgp -kr identificador [anillo]\\\n\\nModificar tu identificador de usuario o tu contrasea:\\\n\\n   pgp -ke tu_identificador [anillo]\\\n\\nExtraer (copiar) una clave del anillo de claves pblicas o secretas:\\\n\\n   pgp -kx identificador fdclaves [anillo]\\\n\\nVisualizar el contenido del anillo de claves pblicas:\\\n\\n   pgp -kv[v] [identificador] [anillo]\\\n\\nComprobar las firmas del anillo de claves pblicas:\\\n\\n   pgp -kc [identificador] [anillo]\\\n\\nFirmar la clave pblica de alguien en el anillo de claves correspondiente:\\\n\\n   pgp -ks otro_identificador [-u tu_identificador] [anillo]\\\n\\nSuprimir ciertas firmas de un idusuario en un anillo:\\\n\\n   pgp -krs identificador [anillo]\\\n\\n\"\nfr: \"Fonctions de gestion des cls:\\\n\\nPour gnrer votre propre paire de cls publique/secrte:\\\n\\n   pgp -kg\\\n\\nPour ajouter le contenu d'un fichier de cls  votre fichier de cls\\\n\\n   public ou secret:\\\n\\n   pgp -ka fichier_de_cls  [votre_fichier_de_cls]\\\n\\nPour retirer une cl de votre fichier de cls public ou secret:\\\n\\n   pgp -kr nom_d_utilisateur [fichier_de_cls]\\\n\\nPour extraire (copier) une cl de votre fichier de cls public ou secret:\\\n\\n   pgp -kx nom_d_utilisateur fichier_de_la_cl [fichier_de_cls]\\\n\\nPour visualiser le contenu de votre fichier de cls:\\\n\\n   pgp -kv[v]  [nom_d_utilisateur]  [ficher_de_cls]\\\n\\nPour vrifier les signatures sur votre fichier de cls publiques:\\\n\\n   pgp -kc [nom_d_utilisateur]  [ficher_de_cls]\\\n\\nPour signer la cl publique de quelqu'un d'autre sur votre fichier de\\\n\\n   cls publiques:\\\n\\n   pgp -ks  son_nom  votre_nom  [fichier_de_cls]\\\n\\nPour enlever certaines signatures d'une personne sur un fichier de cls:\\\n\\n   pgp -krs  son_nom  [fichier_de_cls]\\n\"\nmuttde: \"\\nSchlssel-Verwaltung:\\\n\\nErzeugen eines eigenen, eindeutigen Schlssel-Paares (privat/ffentlich):\\\n\\n   pgp -kg\\\n\\nHinzufgen von Schlsseln zum privaten oder ffentlichen Schlsselbund:\\\n\\n   pgp -ka {Datei mit Schlsseln} [{Schlsselbund}]\\\n\\nLschen eines Schlssels oder einer Benutzer-ID aus einem Schlsselbund:\\\n\\n   pgp -kr {Benutzer-ID} [{Schlsselbund}]\\\n\\nndern Deiner Benutzer-ID oder Deines Mantras:\\\n\\n   pgp -ke {Deine Benutzer-ID} [{Schlsselbund}]\\\n\\nHerauskopieren eines Schlssels aus einem Schlsselbund:\\\n\\n   pgp -kx {Benutzer-ID} {Ausgabe-Datei} [{Schlsselbund}]\\\n\\nAnzeigen des Inhaltes des ffentlichen Schlsselbunds:\\\n\\n   pgp -kv[v] [{Benutzer-ID}] [{Schlsselbund}]\\\n\\nberprfen der Beglaubigungen im ffentlichen Schlsselbund:\\\n\\n   pgp -kc [{Benutzer-ID}] [{Schlsselbund}]\\\n\\nBeglaubigen eines ffentlichen Schlssels eines anderen Benutzers:\\\n\\n   pgp -ks {seine Benutzer-ID} [-u {Deine Benutzer-ID}] [{Schlsselbund}]\\\n\\nEntfernen ausgewhlter Beglaubigungen von einem Schlssel:\\\n\\n   pgp -krs {Benutzer-ID} [{Schlsselbund}]\\n\"\n\n\"\\nIncluding \\\"%s\\\"...\\n\"\nde: \"\\nEmpfngerliste aus der Datei '%s' wird eingelesen...\\n\"\nes: \"\\nIncluyendo \\\"%s\\\"...\\n\"\nfr: \"\\nIncluant '%s'...\\n\"\nmuttde: \"\\nEmpfngerliste aus der Datei '%s' wird eingelesen...\\n\"\n\n\"\\nWe need to generate %u random bits.  This is done by measuring the\\\n\\ntime intervals between your keystrokes.  Please enter some random text\\\n\\non your keyboard until you hear the beep:\\n\"\nde: \"\\nWir mssen %u zufllige Bits erzeugen. Dies wird durch Messung\\\n\\nder Abstnde zwischen Deinen Anschlgen bewerkstelligt. Bitte gib\\\n\\nirgendwelchen beliebigen Text auf der Tastatur ein, bis es piepst:\\n\"\nes: \"\\nNecesitamos generar %d bits aleatorios. Se hace midiendo los\\\n\\nintervalos de tiempo entre pulsaciones de tecla. Escribe\\\n\\ntexto al azar en el teclado hasta que oigas un pitido:\\n\"\nfr: \"\\nNous devons gnrer %d bits alatoires. Ceci est fait en mesurant\\\n\\nl'intervalle de temps entre les frappes de touches. Veuillez tapper du\\\n\\ntexte alatoire sur votre clavier jusqu' ce que vous entendiez le\\\n\\nsignal sonore:\\n\"\nmuttde: \"\\nWir mssen %u zufllige Bits erzeugen. Dies wird durch Messung\\\n\\nder Abstnde zwischen Deinen Anschlgen bewerkstelligt. Bitte gib\\\n\\nirgendwelchen beliebigen Text auf der Tastatur ein, bis es piepst:\\n\"\n\n\"\\007 -Enough, thank you.\\n\"\nde: \"\\007 -Danke, das gengt!\\n\"\nes: \"\\007 -Es suficiente.\\n\"\nfr: \"\\007 -Assez, merci.\\n\"\nmutt: \" -Enough, thank you.\\n\"\nmuttde: \" -Danke, das gengt!\\n\"\n\n\"\\\nUses the RSAREF(tm) Toolkit, which is copyright RSA Data Security, Inc.\\n\\\nDistributed by the Massachusetts Institute of Technology.\\n\"\nde: \"Benutzt das RSAREF(tm) Toolkit, (c) RSA Data Security, Inc.\\n\\\nAusgeliefert vom Massachusetts Institute of Technology.\\n\"\nes: \"\\\nUtiliza RSAREF(tm), copyright de RSA Data Security, Inc.\\n\\\nDistribuido por el Massachusetts Institute of Technology.\\n\"\nfr: \"Ce logiciel utilise RSAREF(tm) Toolkit, Copyright RSA Data Security, Inc\\n\\\nDistribu par le Massachusetts Institute of Technology.\\n\"\nmuttde: \"Benutzt das RSAREF(tm) Toolkit, (c) RSA Data Security, Inc.\\n\\\nAusgeliefert vom Massachusetts Institute of Technology.\\n\"\n\n\"Out of memory\"\nde: \"Zu wenig Speicher!\"\nes: \"No queda memoria\"\nfr: \"Mmoire insufisante\"\nmuttde: \"Zu wenig Speicher!\"\n\n\"\\nOut of memory\\n\"\nde: \"\\nZu wenig Speicher!\\n\"\nes: \"\\nNo queda memoria\\n\"\nfr: \"\\nMmoire insuffisante\\n\"\nmuttde: \"\\nZu wenig Speicher!\\n\"\n\n\"\\n\\007Out of memory.\\n\"\nde: \"\\n\\007Zu wenig Speicher!\\n\"\nes: \"\\n\\007No queda memoria.\\n\"\nfr: \"\\n\\007Mmoire insuffisante.\\n\"\nmutt: \"\\nOut of memory.\\n\"\nmuttde: \"\\nZu wenig Speicher!\\n\"\n\n\"\\nCompression/decompression error\\n\"\nde: \"\\nFEHLER beim Packen/Entpacken!\\n\"\nes: \"\\nError en compresin/descompresin\\n\"\nfr: \"\\nErreur de compression/decompression\\n\"\nmuttde: \"\\nFEHLER beim Packen/Entpacken!\\n\"\n\n\"\\nERROR: unexpected end of compressed data input.\\n\"\nde: \"\\nFEHLER: vorzeitiges Ende der ZIP-gepackten Eingangsdaten.\\n\"\nes: \"\\nERROR: los datos comprimidos terminan antes de tiempo.\\n\"\nfr: \"\\nERREUR: fin innopine des donnes d'entre compresses.\\n\"\nmuttde: \"\\nFEHLER: vorzeitiges Ende der ZIP-gepackten Eingangsdaten.\\n\"\n\n# The following 4 translations MUST be exactly 3 characters long!\n\n\"pub\"\nde: \"ff\"\nmuttde: \"ff\"\n\n\"sec\"\nde: \"prv\"\nmuttde: \"prv\"\n\n\"sig\"\nde: \"Unt\"\nes: \"fir\"\nmuttde: \"Unt\"\n\n\"com\"\nde: \"Wid\"\nmuttde: \"Wid\"\n\n# IN-CH extentions. <lutz@iks-jena.de>\n\n# translation must not change the string length\n\"rev\"\nde: \"zur\"\nmuttde: \"zur\"\n\n# translation must not change the string length\n\"           Expire: %s%s\"\nde: \"          Verfall: %s%s\"\nmuttde: \"          Verfall: %s%s\"\n\n# translation must not change the string length\n\"                    no expire \"\nde: \"                 kein Verfall \"\nmuttde: \"                 kein Verfall \"\n\n\"ENCRyption only\\n\"\nde: \"*** nur Verschlsselung! ***\\n\"\nmuttde: \"*** nur Verschlsselung! ***\\n\"\n\n\"Key ID %s is SIGN only. Decryption avoided.\\n\"\nde: \"Schlssel ID %s ist nur zum Unterschreiben. Entschlsselung verhindert.\\n\"\nmuttde: \"Schlssel ID %s ist nur zum Unterschreiben. Entschlsselung verhindert.\\n\"\n\n\"Key ID %s is not valid.\\n\"\nde: \"Schlssel ID %s ist ungltig.\\n\"\nmuttde: \"Schlssel ID %s ist ungltig.\\n\"\n\n\"Key is an ENCRyption only key.\\n\"\nde: \"Der Schlssel ist nur zur Verschlsselung.\\n\"\nmuttde: \"Der Schlssel ist nur zur Verschlsselung.\\n\"\n\n\"Key is a SIGNature only key.\\n\"\nde: \"Der Schlssel ist nur fr Unterschriften.\\n\"\nmuttde: \"Der Schlssel ist nur fr Unterschriften.\\n\"\n\n\"Key is out of use.\\n\"\nde: \"Der Schlssel ist nicht mehr in Benutzung.\\n\"\nmuttde: \"Der Schlssel ist nicht mehr in Benutzung.\\n\"\n\n\"SIGNature only\\n\"\nde: \"*** nur Unterschriften! ***\\n\"\nmuttde: \"*** nur Unterschriften! ***\\n\"\n\n\"    Revoked by: \"\nde: \"        Zurckgezogen von: \"\nmuttde: \"        Zurckgezogen von: \"\n\n\"   Low Cert by: \"\nde: \"Niedrige Beglaubigung von: \"\nmuttde: \"Niedrige Beglaubigung von: \"\n\n\"Medium Cert by: \"\nde: \"Mittlere Beglaubigung von: \"\nmuttde: \"Mittlere Beglaubigung von: \"\n\n\"  High Cert by: \"\nde: \"    Hohe Beglaubigung von: \"\nmuttde: \"    Hohe Beglaubigung von: \"\n\n\"  Unknown type: \"\nde: \"          Unbekannter Typ: \"\nmuttde: \"          Unbekannter Typ: \"\n\n\"Try to obtain the corresponding SIGN key.\\n\"\nde: \"Es wird versucht, den zugehrigen Unterschriftsschlssel zu verwenden.\\n\"\nmuttde: \"Es wird versucht, den zugehrigen Unterschriftsschlssel zu verwenden.\\n\"\n\n\"\\n\\007Key cert is already revoked by user '%s'.\\n\"\nde: \"\\n\\007Die Unterschrift unter dem Schlssel wurde bereits\\n\\\nvon '%s' zurckgezogen.\\n\"\nmutt: \"\\nKey cert is already revoked by user '%s'.\\n\"\nmuttde: \"\\nDie Unterschrift unter dem Schlssel wurde bereits\\n\\\nvon '%s' zurckgezogen.\\n\"\n\n\"\\n\\007Key is not signed by user '%s'.\\n\"\nde: \"\\n\\007Der Schlssel ist nicht von '%s' unterschrieben.\\n\"\nmutt: \"\\nKey is not signed by user '%s'.\\n\"\nmuttde: \"\\nDer Schlssel ist nicht von '%s' unterschrieben.\\n\"\n\n\"\\nKey signature certificate revoked.\\n\"\nde: \"\\nDie Unterschrift unter dem Schlssel wurde zurckgezogen.\\n\"\nmuttde: \"\\nDie Unterschrift unter dem Schlssel wurde zurckgezogen.\\n\"\n\n\"This key is already out of use.\\n\"\nde: \"Dieser Schlssel ist bereits nicht mehr in Benutzung.\\n\"\nmuttde: \"Dieser Schlssel ist bereits nicht mehr in Benutzung.\\n\"\n\n\"\\007 Key ID %s is SIGN only. (protest against decryption)\\n\"\nde: \"\\007Die Schlssel-ID %s ist nur fr Unterschriften.\\n\\\nKeine Entschlsselung mglich!\\n\"\nmutt: \" Key ID %s is SIGN only. (protest against decryption)\\n\"\nmuttde: \"Die Schlssel-ID %s ist nur fr Unterschriften.\\n\\\nKeine Entschlsselung mglich!\\n\"\n\n\"Signature was made after the key ID %s was expired.\\n\"\nde: \"Unterschrift wurde mit dem verfallen Schlssel ID %s erstellt.\\n\"\nmuttde: \"Unterschrift wurde mit dem verfallen Schlssel ID %s erstellt.\\n\"\n\n\"Signature was made before the key ID %s was valid.\\n\"\nde: \"Unterschrift wurde mit dem noch ungltigen Schlssel ID %s erstellt.\\n\"\nmuttde: \"Unterschrift wurde mit dem noch ungltigen Schlssel ID %s erstellt.\\n\"\n\n\"Signature was made using the ENCR key ID %s.\\n\"\nde: \"Unterschrift wurde mit dem Verschlsselungsschlssel ID %s erstellt.\\n\"\nmuttde: \"Unterschrift wurde mit dem Verschlsselungsschlssel ID %s erstellt.\\n\"\n\n\"Something goes wrong, may be an unlucky User ID?\\n\"\nde: \"Irgendwas ist schiefgegangen. Liegt's an der NutzerID?\\n\"\nmuttde: \"Irgendwas ist schiefgegangen. Liegt's an der NutzerID?\\n\"\n\n\"Something goes wrong, may be this userid '%s' is unlucky?\\n\"\nde: \"Irgendwas ist schiefgegangen. Liegt's an der NutzerID '%s'?\\n\"\nmuttde: \"Irgendwas ist schiefgegangen. Liegt's an der NutzerID '%s'?\\n\"\n\n\"The compromise certificate might not be accepted on newer versions.\\n\\\nRevoke anyway? (y/N)\"\nde: \"Das Widerrufszertifikat kann von neueren Versionen zurckgewiesen\\\nwerden.\\nTrotzdem widerrufen? (j/N)\"\nmuttde: \"Das Widerrufszertifikat kann von neueren Versionen zurckgewiesen\\\nwerden.\\nTrotzdem widerrufen? (j/N)\"\n\n\"The key for the userid '%s' is SIGN only.\\nI'll try the corresponding ENCR key.\\n\"\nde: \"Schlssel ID '%s' ist nur zum Unterschreiben.\\n\\\nDer zugehrige Verschlsselungsschlssel wird versucht.\\n\"\nmuttde: \"Schlssel ID '%s' ist nur zum Unterschreiben.\\n\\\nDer zugehrige Verschlsselungsschlssel wird versucht.\\n\"\n\n\"The key for the userid '%s' is not valid, skipped.\\n\"\nde: \"Schlssel ID '%s' ist ungltig.\\nbersprungen.\\n\"\nmuttde: \"Schlssel ID '%s' ist ungltig.\\nbersprungen.\\n\"\n\n\"The user ID typed in has garbled options!\\n\"\nde: \"Die NutzerID enthlt fehlerhafte Optionseintrge!\\n\"\nmuttde: \"Die NutzerID enthlt fehlerhafte Optionseintrge!\\n\"\n\n\"This key is an ENCRyption only key.\\n\"\nde: \"Das ist ein Verschlsselungsschlssel.\\n\"\nmuttde: \"Das ist ein Verschlsselungsschlssel.\\n\"\n\n\"This key is too old to be revoked.\\n\"\nde: \"Der Schlssel ist zu alt, um zurckgezogen zu werden.\\n\"\nmuttde: \"Der Schlssel ist zu alt, um zurckgezogen zu werden.\\n\"\n\n\"This key is too old to be signed.\\n\"\nde: \"Der Schlssel ist zu alt, um unterschrieben zu werden.\\n\"\nmuttde: \"Der Schlssel ist zu alt, um unterschrieben zu werden.\\n\"\n\n\"This key will be generated in future. *oops*\\n\"\nde: \"Der Schlssel wird in der Zukunft erstellt. *huch*\\n\"\nmuttde: \"Der Schlssel wird in der Zukunft erstellt. *huch*\\n\"\n\n\"Your key is too old to sign with.\\n\"\nde: \"Der Schlssel ist zu alt zum unterschreiben.\\n\"\nmuttde: \"Der Schlssel ist zu alt zum unterschreiben.\\n\"\n\n\"Your key will be generated in future. *oops*\\n\"\nde: \"Dein Schlssel wird in der Zukunft erstellt. *huch*\\n\"\nmuttde: \"Dein Schlssel wird in der Zukunft erstellt. *huch*\\n\"\n\n\"\\007**** Signed with an ENCRyption only key ****\"\nde: \"\\007**** Unterschr. mit einem Verschl.-Schlssel ****\"\nmutt: \"**** Signed with an ENCRyption only key ****\"\nmuttde: \"**** Unterschr. mit einem Verschl.-Schlssel ****\"\n\n\"\\007**** Signed with an invalid key ****\"\nde: \"\\007**** Unterschr. mit einem ungltigen Schlssel ****\"\nmutt: \"**** Signed with an invalid key ****\"\nmuttde: \"**** Unterschr. mit einem ungltigen Schlssel ****\"\n\n\"\\007**** Signed with a revoked key ****\"\nde: \"\\007**** Unterschr. mit einem zurckgez. Schlssel ****\"\nmutt: \"**** Signed with a revoked key ****\"\nmuttde: \"**** Unterschr. mit einem zurckgez. Schlssel ****\"\n\n\"\\n\\nREAD CAREFULLY:  How did you prove the users real identity ?\\n\\\n\t0) What? I do not understand this question.\\n\\\n\t1) No attempt made at all to identify the user with a real name.\\n\\\n\t2) Some casual attempt made to identify user with his name.\\n\\\n\t3) Heavy-duty identification efforts, photo ID, direct contact...\\n\"\nde: \"\\n\\nSORGFLTIG LESEN:  Wie hast Du die Identitt des Nutzers geprft ?\\n\\\n\t0) Bitte? Ich verstehe die Frage nicht.\\n\\\n\t1) Keine berprfung des wirklichen Namens des Nutzers.\\n\\\n\t2) Einige Bemhungen, die Person mit diesem Namen zu identifizieren.\\n\\\n\t3) Groe Identifizierungsaufwendungen, Ausweis, direkter Kontakt...\\n\"\nmuttde: \"\\n\\nSORGFLTIG LESEN:  Wie hast Du die Identitt des Nutzers geprft ?\\n\\\n\t0) Bitte? Ich verstehe die Frage nicht.\\n\\\n\t1) Keine berprfung des wirklichen Namens des Nutzers.\\n\\\n\t2) Einige Bemhungen, die Person mit diesem Namen zu identifizieren.\\n\\\n\t3) Groe Identifizierungsaufwendungen, Ausweis, direkter Kontakt...\\n\"\n$Id$\n"
  },
  {
    "path": "contrib/language50.txt",
    "content": "#This file contains the strings used by PGP.\n\n# $Id$\n\n[DIFFERENT_EXES]\nus=\\\nPGP is now invoked from different executables for different operations:\\n\\n\\\npgpe    Encrypt (including Encrypt/Sign)\\n\\\npgps    Sign\\n\\\npgpv    Verify/Decrypt\\n\\\npgpk    Key management\\n\\\npgpo    PGP 2.6.2 command-line simulator (not yet implemented)\\n\\n\\\nSee each application's respective man page or the general PGP documentation\\n\\\nfor more information.\\n\n\n[CREATING_OUTPUT_FILE]\nus=Creating output file %s\\n\n\n#Untested\n[COPYING_KEYFILE_AND_RUNNING_PGPK]\nus=Copying key file to \\\"%s\\\", running pgpk to process it...\\n\\n\nmutt=\n\n#Untested\n[NEED_PASSPHRASE]\nus=You need a passphrase to encrypt the file\\n\n\n[MUST_SPECIFY_A_RECIPIENT]\nus=You must specify at least one recipient for encryption!\\n\n\n#Untested\n[NEED_PASSPHRASE_AGAIN]\nus=Enter same passphrase again\\n\n\n#Untested\n[PASSPHRASES_DIFFERENT]\nus=Error: Passphrases were different.  Try again.\\n\n\n#Untested\n[ZERO_LEN_PASSPHRASE]\nus=Encryption error\\n\n\n#Untested\n[TREAT_AS_PGP]\nus=This is a PGP File.  Treat it as such? [y/N]\\n\n\n#Untested\n[PRIVATE_KEY_MISSING]\nus=Cannot find a private key for signing: %s\\n\n\n#Untested\n[CANNOT_CONVERT_TO_PRIVATE_KEY]\nus=Cannot convert to private key\\n\n\n#Untested\n[PRIVATE_KEY_CANNOT_SIGN]\nus=Private Key cannot sign\\n\n\n#Untested\n[CANNOT_UNLOCK_PRIVATE_KEY]\nus=Cannot unlock private key\\n\n\n#Untested\n[NO_KEYRINGS]\nus=No keyrings to use\n\n#Untested\n[NO_ENCRYPTION_KEYS_FOUND_FOR]\nus=No encryption keys found for: %s\\n\n\n#Untested\n[CANNOT_FIND_KEY]\nus=Cannot find key: %s\\n\n\n#Untested\n[CANNOT_ADD_MY_KEY]\nus=Cannot add my key to set\\n\n\n#Untested\n[NO_VALID_RECIPIENTS]\nus=No valid keys found for any recipients, exiting...\\n\n\n#Untested\n[USING_STDIN]\nus=No files specified.  Using stdin.\\n\\n\nmutt=\n\n#Untested\n[CANNOT_OPEN_INPUT_FILE]\nus=Cannot open input file %s\\n\n\n#Untested\n[CANNOT_SETUP_PROCESSING_PIPELINE]\nus=Cannot Setup Processing Pipeline\\n\n\n#Untested\n[UNRECOGNIZED_OPTION_STRING]\nus=Unrecognized option %s\\n\n\n#Untested\n[UNRECOGNIZED_OPTION_STRING_DASH]\nus=Unrecognized option -%s\\n\n\n#Untested\n[UNRECOGNIZED_OPTION_CHAR]\nus=Unrecognized option -%c\\n\n\n#Untested\n[ARGS_INCOMPATABLE]\nus=\"Cannot use -%c and -%c together\\n\"\n\n#Untested\n[ONLY_ONE_OUTPUT_FILE]\nus=\"Only one -o option allowed\\n\"\n\n#Untested\n[ONLY_ONE_USERNAME]\nus=\"Only one -u option allowed\\n\"\n\n#Untested\n[NO_OUTPUT_FILENAME]\nus=-o option requires an output file name argument\\n\n\n[NO_RECIPIENT_SPECIFIED]\nus=-r option requires a recipient name argument\\n\n\n#Untested\n[NO_USERID_SPECIFIED]\nus=-u option requires a userid argument\\n\n\n#Untested, and probably going away\n[NO_PASSPHRASE_SPECIFIED_IN_BATCHMODE]\nus=-z option requires a passphrase argument\\n\n\n#Untested\n[CANNOT_COMBINE_CONVENTIONAL_AND_PK]\nus=Cannot combine -c and -r arguments\\n\n\n#Untested\n[PGPK_IS_SEPERATE]\nus=pgpk is a seperate program, not a symlink to pgp!\\n\n\n#Untested\n[UNKNOWN_SYMLINK]\nus=Invoked with unknown symlink\\n\n\n#Untested\n[PRIVATE_KEY_NEEDED_FOR_SIGNATURE]\nus=A private key is required to make a signature.\\n\n\n[ENTER_Y_OR_N]\nus=\"Invalid response.  Please enter Y or N [default %c]: \\n\"\n\n#Untested\n[GENERIC_KEYRING_ERROR]\nus=\"Error on keyring \\\"%s\\\":  \"\n\n#Untested\n[UNABLE_TO_OPEN_DEFAULT_KEYRINGS]\nus=\"Unable to open default keyrings:  \"\n\n#Untested\n[UNABLE_TO_OPEN_KEYRING]\nus=\"Unable to open keyring:  \"\n\n#Untested\n[KEY_CORRUPTED]\nus=\"Key Corrupted (%s):  \"\n\n#Untested\n[NEED_SIG_FILE]\nus=\"File to check signature against [%s]: \"\n\n#untested\n[GOOD_SIGNATURE]\nus=\"Good signature made %s by key:\\n\"\n\n#untested\n[BAD_SIGNATURE]\nus=\"BAD signature made %s by key:\\n\"\n\n#untested\n[ERROR_SIGNATURE]\nus=\"Error %s checking signature:  %s\\n\"\n\n#Untested\n[UNKNOWN_SIGNATURE]\nus=\"Signature by unknown keyid: \"\n\n#untested\n[ENTER_PASSPHRASE]\nus=\"Enter pass phrase: \"\n\n#Untested\n[RANDOM_BITS_FROM_DEVICE]\nus=\"\\n\\\nWe need to generate %u random bits.  This is done by reading\\n\\\n%s.  Depending on your system, you may be able\\n\\\nto speed this process by typing on your keyboard and/or moving your mouse.\\n\"\n\n#Untested\n[RANDOM_BITS_FROM_DEVICE_OLD_KERNEL]\nus=\"\\n\\\n/dev/random detected; however, on Linux kernel versions < 1.3.33, it is not\\n\\\ncryptographically usable.  If you wish to use /dev/random as an entropy\\n\\\nsource, it is recommended that you upgrade your kernel version.  If you feel\\n\\\nthat you received this message in error, add ForceRandomDevice=1 to your\\n\\\npgp.cfg file, but be warned that by doing so without know what you are\\n\\\ndoing, you could compromise the security of your key.\\n\"\n\n#Untested\n[RANDOM_BITS_FROM_KEYBOARD]\nus=\"\\n\\\nWe need to generate %u random bits.  This is done by measuring the\\n\\\ntime intervals between your keystrokes.  Please enter some random text\\n\\\non your keyboard until you hear the beep:\\n\"\n\n#Untested\n[NO_INPUT_FILE_IN_BATCHMODE]\nus=\"Cannot request input file in batchmode\\n\"\n\n#Untested\n[UNABLE_TO_OPEN_FILE]\nus=\"Unable to open file \\\"%s\\\"\\n\"\n\n#Untested\n[UNABLE_TO_CREATE_READ_MODULE]\nus=\"Unable to create file read module.\\n\"\n\n#Untested\n[UNKNOWN_FILE_TYPE]\nus=\"Unknown file type (clearsigned?).  Assuming text\\n\"\n\n#Untested\n[OPENING_FILE_WITH_TYPE]\nus=\"Opening file \\\"%s\\\" type %s.\\n\"\nmutt=\n\n#Untested\n[ERROR_CLOSING_OLD_FILE]\nus=\"Error closing old file: %d\\n\"\n\n#Untested\n[NEED_PASSPHRASE_TO_DECRYPT_KEY]\nus=\"Need a pass phrase to decrypt private key:\\n\"\n\n#Untested\n[GOOD_PASSPHRASE]\nus=\"Pass phrase is good.\\n\"\n\n#Untested\n[BAD_PASSPHRASE]\nus=\"Error: Bad pass phrase.\\n\\n\"\n\n#Untested\n[PASSPHRASE_INCORRECT]\nus=\"Password Incorrect.\"\n\n#Untested\n[TRY_AGAIN]\nus=\"  Try Again.\"\n\n#Untested\n[UNKNOWN_ESK]\nus=\"Unknown ESK type: %d\\n\"\n\n#Untested\n[CANNOT_DECRYPT]\nus=\"Cannot decrypt message.  It can only be decrypted by:\\n\"\n\n#Untested\n[A_PASSPHRASE]\nus=\"  A Pass Phrase\\n\"\n\n#Untested\n[KEY_ID]\nus=\"  Key ID \"\n\n#Untested\n[FORCE_OVERWRITE]\nus=\"File \\\"%s\\\" already exists. Overwrite? [y/N] \"\n\n#Untested\n[UNABLE_TO_OVERWRITE_FILE]\nus=\"Unable to overwrite file \\\"%s\\\"\\n\"\n\n#Untested\n[RANDOM_DEVICE_NOT_DEFAULT]\nus=\"Warning!  Random device is something other than %s!\\n\\\nThis MAY be a security hole.\\n\"\n\n#Untested\n[RANDOM_DEVICE_WRITABLE]\nus=\"Warning!  %s is writable by users other than root!\\n\\\nThis is probably OK, but you should have your sysadmin fix it.\\n\\\nProceeding.\\n\"\n\n#Untested\n[RANDOM_DEVICE_UNREADABLE]\nus=\"\\\nWarning!  Random device %s found, but you can't read it!\\n\"\n\n#Untested\n[BITS_AND_KEYID]\nus=\"%6u bits, Key ID \"\n\n#Untested\n[KEY_NOT_FOUND]\nus=Key not found: \\\"%s\\\"\\n\n\n#Untested\n[PGPERR_TROUBLE_BADTRUST_LONG]\nus=\"Trust packet too long: %lu bytes long\"\n\n#Untested\n[PGPERR_TROUBLE_UNKPKTBYTE_LONG]\nus=\"Unknown packet byte: %02X\"\n\n#Untested\n[PGPERR_TROUBLE_KEY2BIG_LONG]\nus=\"Key grossly oversized: %lu bytes long\"\n\n#Untested\n[PGPERR_TROUBLE_NAME2BIG_LONG]\nus=\"User ID too long: %lu bytes long\"\n\n#Untested\n[PGPERR_TROUBLE_SIG2BIG_LONG]\nus=\"Signature grossly oversized: %lu bytes long\"\n\n#Untested\n[PGPERR_TROUBLE_DUPKEYID_LONG]\nus=\"Duplicate keyID found.  Two keys have the same keyID,\\n\\\nbut they are different.  This is highly suspicious.  The first key\nis:\"\n\n#Untested\n[PGPERR_TROUBLE_DUPKEY_LONG]:\nus=\"A key was found twice in one keyring file.  It is a duplicate of:\\n\"\n\n#Untested\n[PGPERR_TROUBLE_DUPNAME_LONG]\nus=\"A name was found twice in one keyring file.  It is a duplicate of:\\n\"\n\n#Untested\n[PGPERR_TROUBLE_BAREKEY_LONG]\nus=\"A key was found twice in one keyring file.  It is a duplicate of:  \"\n\n#Untested\n[PGPERR_TROUBLE_VERSION_BUG_CUR_LONG]\nus=\"This private key's version number appears to be incorrect.\\n\\\nPGP version 2.6 had a bug wherein it would improperly change the\\n\\\nversion number of a private key generated by older versions of PGP\\n\\\nwhen it was edited.  The private key in this key file has a version\\n\\\nbyte that is different from a copy in another key file, and appears\\n\\\nto be improper.  PGP will fix this by changing the version byte in\\n\\\nthe private key to the previous value.  The key with the problem\nis:\\n\"\n\n#Untested\n[PGPERR_TROUBLE_VERSION_BUG_PREV_LONG]\nus=\"A previously seen private key's version number appears to be\\n\\\nincorrect.  PGP version 2.6 had a bug wherein it would improperly\\n\\\nchange the version byte of a private key generated by older versions\\n\\\nof PGP when it was edited.  The public key in this key file has\\n\\\na version byte that is different from a private key elsewhere,\\n\\\nwhich appears to be improper.  PGP will fix this by changing the\\n\\\nversion byte in the private key to the previous value.  The key\\n\\\nwith the problem is:\\n\"\n\n#Untested\n[PGPERR_KEYIO_READING_LONG]\nus=\"I/O error reading file: %s\"\n\n#Untested\n[PGPERR_KEYIO_FTELL_LONG]\nus=\"I/O error during call to ftell(): %s\"\n\n#Untested\n[PGPERR_PRECEDING_ASSOCIATED_WITH]\nus=\"The preceeding error was associated with:  \"\n\n#Untested\n[NOT_PGP_KEYFILE]\nus=\"File is not a PGP key file.  Aborting.\\n\"\n\n#Untested\n[FOLLOWING_KEYRING_PROBLEMS]\nus=\"The following problems were encountered while reading the keyring:\\n\"\n\n#Untested\n[OFFSET_DESCRIPTION]\nus=\"Offset   Description\\n\"\n\n#Untested\n[UNKNOWN_SIGNATOR]\nus=\"   (Unknown signator, can't be checked)\\n\"\n\n#Untested\n[OPEN_PAREN_KEYID]\nus=\"         (KeyID:\"\n\n#Untested\n[REVOKED]\nus=\"*REVOKED*\"\n\n#Untested\n[ABOVE_KEY_REVOKED]\nus=\"\\\nWARNING: The above key has been revoked by its owner,\\n\\\npossibly because the private key was compromised.\\n\\\nYou cannot use a revoked key for encryption.\\n\"\n\n#Untested\n[ABOVE_KEY_DISABLED]\nus=\"\\\nWARNING:  The above key has been disabled on your keyring.  If you\\n\\\nwish to use it, use \\\"pgpk -d\\\" to reenable it.\\n\"\n\n[ABOVE_KEY_EXPIRED]\nus=\"\\\nWARNING:  The above key is not valid for use after %s.\\n\"\n\n#Untested\n[STILL_USE_EXPIRED_KEY]\nus=\"\\\nWARNING:  This key is not valid for use after %s.\\n\\\nDo you still want to use it? [y/N] \"\n\n#Untested\n[PGP_NAMETRUST_UNKNOWN]\nus=\"\\\nWARNING: Because the following name has not been certified\\n\\\nby a trusted signature, it is not known with a high\\n\\\ndegree of confidence that the above key belongs to:\\n\"\n\n#Untested\n[PGP_NAMETRUST_UNTRUSTED]\nus=\"WARNING: The above key is not trusted to belong to:\\n\"\n\n#Untested\n[PGP_NAMETRUST_MARGINAL]\nus=\"\\\nWARNING: Because the following name is not certified with sufficient\\n\\\ntrusted signatures, it is not known with high confidence that the\\n\\\nabove key actually belongs to:\\n\"\n\n#Untested\n[PGP_NEWTRUST_NOT_TRUSTED]\nus=\"\\n\\\nWARNING: The above key is not trusted to belong to:\\n\"\n\n#Untested\n[PGP_NEWTRUST_PARTIAL_TRUST]\nus=\"\\n\\\nWARNING: Because the following name is not certified with sufficient\\n\\\ntrusted signatures, there is an estimated 1/%-ld probability that\\n\\\nthe above key may not belong to:\\n\"\n\n#Untested\n[PGP_NEWTRUST_NOT_TRUSTED_SIGNING_KET]\nus=\"\\n\\\nWARNING: The signing key is not trusted to belong to:\\n\"\n\n#Untested\n[PREVIOUSLY_APPROVED_KEY]\nus=\"\\nBut you previously approved using the key with this name.\\n\"\n\n#Untested\n[DO_YOU_WISH_TO_USE_UNTRUSTED_KEY]\nus=\"\\nDo you want to use the key with this name? [y/N] \"\n\n#Untested\n[DONT_TRUST_SIGS_FROM_REVOKED_KEYS]\nus=\"\\\nWARNING: The signing key has been revoked by its owner,\\n\\\npossibly because the private key was compromised.\\n\\\nA signature made by this key should not be trusted.\\n\"\n\n#Untested\n[YOU_HAVE_DISABLED_SIGNING_KEY]\nus=\"WARNING: You have disabled the signing key\\n\"\n\n#Untested\n[KEY_HAS_EXPIRED]\nus=\"WARNING: This key is not valid for use after %s.\\n\"\n\n#Untested\n[PGP_NAMETRUST_UNTRUSTED_SIGNING_KEY]\nus=\"\\nWARNING: The signing key is not trusted to belong to:\\n\"\n\n[MESSAGE_IS_ENCRYPTED]\nus=\"Message is encrypted.\\n\"\n\n[GETTING_KEY_FOR]\nus=\"Getting key for %s.\\n\"\n\n[LOOKING_UP_HOST]\nus=\"Looking up host %s\\n\"\n\n[ESTABLISHING_CONNECTION]\nus=\"Establishing connection\\n\"\n\n[SENDING_REQUEST]\nus=\"Sending request\\n\"\n\n[RECEIVING_DATA]\nus=\"Receiving data\\n\"\n\n[CLEANING_UP]\nus=\"Cleaning up\\n\"\n\n[COMPLETE]\nus=\"Complete.\\n\"\n\n[ONE_KEY_RECEIVED]\nus=\"One key received.  Adding it to your keyring...\\n\"\n\n[MANY_KEYS_RECEIVED]\nus=\"%li keys received.  Adding them to your keyring...\\n\"\n\n[UNKNOWN_PROTOCOL]\nus=\"Unknown protocol %s.\\n\"\n\n[SENDING_KEY]\nus=\"Sending key                               \\r\"\n\n[RECEIVING_RESPONSE]\nus=\"Receiving response                       \\r\"\n\n#Untested\n[NO_KEYFILE_SPECIFIED]\nus=\"-a argument requires a key file or URL to add to your keyring.\"\n\n#Untested\n[UNABLE_TO_IMPORT_KEYFILE]\nus=\"Unable to import keyfile \\\"%s\\\".\\n\"\n\n#Untested\n[ADDING_KEYS]\nus=\"Adding keys:\\n\\n\"\n\n#Untested\n[UNABLE_TO_CREATE_KEYLIST]\nus=\"Unable to create keylist\\n\"\n\n#Untested\n[NO_KEYS_TO_ADD]\nus=\"No keys to add                           \\n\"\n\n#Untested\n[KEYS_ADDED_SUCCESSFULLY]\nus=\"Keys added successfully.\\n\"\n\n#Untested\n[INVALID_SELECTION]\nus=\"Invalid Selection.  Please try again.\\n\"\n\n[TOO_MANY_MATCHES]\nus=\"Too many matches; aborting!\\n\"\n\n[CHOOSE_ONE_ABOVE]\nus=\"Choose one of the above:  \"\n\n[PLEASE_SELECT_A_USER_ID]\nus=\"Please select a user ID %s:\\n\"\n\n[PLEASE_SELECT_A_USER_ID_WITH_SIG]\nus=\"Please select a user ID with a signature %s:\\n\"\n\n[PLEASE_SELECT_A_KEY_WITH_USERID]\nus=\"Please select a key with a userid %s:\"\n\n[PLEASE_SELECT_A_KEY_WITH_SIG]\nus=\"Please select a key with a signature %s:\"\n\n[NO_USER_IDS_SELECTED]\nus=\"No user IDs selected %s.\\n\"\n\n[PLEASE_SELECT_A_SIGNATURE]\nus=\"Please select a signature %s:\"\n\n[NO_SIGNATURES_SELECTED]\nus=\"No signatures selected %s.\\n\"\n\n[NO_KEYS_SELECTED]\nus=\"No keys selected %s.\\n\"\n\n[A_USERID_IS_REQUIRED]\nus=\"A user ID is required to select the key you want %s.\\n\\\nEnter the key's user ID: \"\n\n[UNABLE_TO_ORDER_KEYSET]\nus=\"Unable to order keyset\\n\"\n\n[PLEASE_SELECT_A_KEY]\nus=\"Please select a key %s:\"\n\n[UNABLE_TO_CREATE_ITER]\nus=\"Unable to create key iterator\\n\"\n\n[NO_HTTP_SEND]\nus=\"HTTP cannot be used as a sending protocol at this time.\\n\"\n\n[UNKNOWN_PROTOCOL]\nus=\"Unknown protocol %s.\\n\"\n\n[NO_KEYS_SELECTED_FOR_EXTRACTION]\nus=\"No keys were selected for extraction.\\n\"\n\n[ENABLE_THIS_KEY]\nus=\"\\nEnable this key? [y/N] \"\n\n[DISABLE_THIS_KEY]\nus=\"\\nDisable this key? [y/N] \"\n\n[KEY_ENABLED]\nus=\"\\nKey enabled.\\n\"\n\n[KEY_DISABLED]\nus=\"\\nKey disabled.\\n\"\n\n[CANNOT_TRUST_INVALID_KEYS]\nus=\"This key is not valid, and cannot be assigned trust\\n\"\n\n[DO_YOU_WISH_TO_CHANGE_INTRODUCER_RELIABITY]\nus=\"Do you want to change your estimate of this key owner's reliability\\n\\\nas an introducer of other keys [y/N]? \"\n\n[NO_CHANGES_MADE]\nus=\"No changes made.\\n\"\n\n[DETERMINE_IN_YOUR_MIND]\nus=\"\\n\"\\\n\"Make a determination in your own mind whether this key actually\\n\"\\\n\"belongs to the person whom you think it belongs to, based on available\\n\"\\\n\"evidence.  If you think it does, then based on your estimate of\\n\"\\\n\"that person's integrity and competence in key management, answer\\n\"\\\n\"the following question:\\n\"\n\n[WOULD_YOU_TRUST_THIS_KEY_AND_OWNER]\nus=\"\\nWould you trust this key owner to act as an introducer and\\n\\\ncertify other people's public keys to you?\\n\\\n(1=I don't know. 2=No. 3=Usually. 4=Yes, always? \"\n\n[UNRECOGNIZED_RESPONSE]\nus=\"Unrecognized response.\\n\"\n\n[UNABLE_TO_SET_TRUST]\nus=\"Unable to set trust\\n\"\n\n[DESCRIBE_CONFIDENCE_AS_INTRODUCER]\nus=\"\\nDescribe the confidence you have in this person as an introducer.\\n\\\nWhat are the odds that this key owner is going to be wrong about\\n\\\na key which she has signed as an introducer?\\n\"\n\n[CURRENTLY_INFINITE_TRUST]\nus=\"(Currently she is listed as having essentially zero chance\\\n of being wrong.)\\n\"\n\n[CURRENTLY_ZERO_TRUST]\nus=\"(Currently he is listed as not having any confidence as an\\\n introducer.)\\n\"\n\n[CURRENTLY_HAS_PERCENT_TRUST_START]\nus=\"(Currently she is listed as having a one in \"\n\n[CURRENTLY_HAS_PERCENT_TRUST_END]\nus=\" chance of being wrong.)\\n\"\n\n[ENTER_A_TRUST_RANGE]\nus=\"Enter a number from 1 to 2 million\"\n\n[OR_HIT_RETURN_TO_LEAVE_UNCHANGED]\nus=\", or hit return to leave unchanged.\"\n\n[WILL_BE_WRONG_TIME_TIME_IN]\nus=\"\\nShe will be wrong one time in: \"\n\n[DO_YOU_WANT_THIS_KEY_AXIOMATIC]\nus=\"\\nDo you want to set this key as axiomatic [y/N]? \"\n\n[PUBLIC_KEYRING_UPDATED]\nus=\"Public keyring updated.\\n\"\n\n[NEED_OLD_PASSPHRASE]\nus=\"Need old passphrase. \"\n\n[NEED_NEW_PASSPHRASE]\nus=\"Need new passphrase. \"\n\n[ENTER_IT_A_SECOND_TIME]\nus=\"Enter it a second time. \"\n\n[PASSPHRASES_ARE_DIFFERENT]\nus=\"Passphrases are different\\n\"\n\n[CHANGING_MASTER_KEY_PASSPHRASE]\nus=\"Changing master key passphrase...\\n\"\n\n[PASSPHRASE_CHANGE_FAILED_MASTER]\nus=\"Passphrase change failed for master key.\\n\"\n\n[CHANGING_SUBKEY_PASSPHRASE]\nus=\"Changing subkey passphrase...\\n\"\n\n[PASSPHRASE_CHANGE_FAILED_SUBKEY]\nus=\"Passphrase change failed for subkey.\\n\"\n\n[CONFIRM_NON_AXIOMATIC]\nus=\"\\nDo you want to unset this key as axiomatic [y/N]? \"\n\n[CONFIRM_ADD_NEW_USERID]\nus=\"\\nDo you want to add a new user ID [y/N]? \"\n\n[ENTER_NEW_USERID]\nus=\"Enter the new user ID: \"\n\n[NO_NAME_ENTERED]\nus=\"No name entered.\\n\"\n\n[UNABLE_TO_ADD_NEW_USERID]\nus=\"Unable to add new User ID (%d)\\n\"\n\n[CONFIRM_CHANGE_PASSPHRASE]\nus=\"\\nDo you want to change your pass phrase (y/N)? \"\n\n[CHANGE_PASSPHRASE_FAILED]\nus=\"Change passphrase failed (%d)\\n\"\n\n[CONFIRM_SET_DEFAULT_KEY]\nus=\"\\nDo want to set this as your default key [y/N]? \"\n\n[KEYRINGS_UPDATED]\nus=\"Keyrings updated.\\n\"\n\n[TO_BE_REMOVED_FRAGMENT]\nus=\"to be removed\"\n\n[SIGNATURE_FRAGMENT]\nus=\"signature\"\n\n[USERID_FRAGMENT]\nus=\"user ID\"\n\n[KEY_FRAGMENT]\nus=\"key\"\n\n[SELECTED_KEY_HAS_ONLY_ONE_USERID\"]\nus=\"Selected key has only one user ID; can't be selected %s\\n\"\n\n[FOLLOWING_OBJECT_HAS_BEEN_SELECTED]\nus=\"\\nThe following %s has been selected %s:\\n\"\n\n[UNABLE_TO_REMOVE_OBJECT]\nus=\"Unable to remove object\\n\"\n\n[TO_BE_SIGNED_FRAGMENT]\nus=\"to be signed\"\n\n[VALIDITY_CERTIFICATION_WARNING]\nus=\"\\n\\n\\\nREAD CAREFULLY:  Based on your own direct first-hand knowledge, are\\n\\\nyou absolutely certain that you are prepared to solemnly certify that\\n\\\nthe above public key actually belongs to the user specified by the\\n\\\nabove user ID [y/N]? \"\n\n[KEY_SIGNING_CANCELED]\nus=\"Key sign operation cancelled.\\n\"\n\n[KEY_SELECTED_FOR_SIGNING_IS]\nus=\"Key selected for signing is:\\n\"\n\n[KEY_SIGN_OPERATION_FAILED]\nus=\"Key sign operation failed\\n\"\n\n[KEY_SIG_CERT_ADDED]\nus=\"Key signature certificate added.\\n\"\n\n[TO_BE_REVOKED_FRAGMENT]\nus=\"to be revoked\"\n\n[YOU_DONT_HAVE_THE_PRIVATE_KEY]\nus=\"You don't have the private key corresponding to that key\\n\"\n\n[SIG_ALREADY_REVOKED]\nus=\"That signature has already been revoked.\\n\\\nAre you sure you want to add another revocation certificate [y/N]? \"\n\n[SIG_REVOCATION_CANCELLED]\nus=\"Signature revocation cancelled.\\n\"\n\n[CONFIRM_REVOKE_KEY]\nus=\"Do you want to permanently revoke your public key\\n\\\nby issuing a secret key compromise certificate on this key [y/N]? \"\n\n[CONFIRM_REVOKE_SIG]\nus=\"Do you want to revoke this signature [y/N]? \"\n\n[REVOKE_CANCELLED]\nus=\"Revoke cancelled.\\n\"\n\n[UNABLE_TO_GENERATE_REVOCATION_SIGNATURE]\nus=\"Unable to generate revocation signature\\n\"\n\n[KEY_REVOCATION_CERT_ADDED]\nus=\"Key revocation certificate added.\\n\"\n\n[SELECT_SIGNING_KEY]\nus=\"Please select a key to sign with:\"\n\n[UNABLE_TO_OPEN_KEYRING]\nus=\"Unable to open keyring\\n\"\n\n[PGPINITAPP_FAILED]\nus=\"pgpInitApp failed\\n\"\n\n[KEY_IS_ALREADY_REVOKED]\nus=\"That key has already been revoked\\n\"\n\n[USE_FORCE_TO_ALLOW_OVERWRITING]\nus=\"In batchmode, use +force to allow overwriting of output files\\n\"\n\n[INCONSISTENT_RECIPIENT_SET]\nus=\"No algorithm available that all keys support.\\n\"\n\n[UNKNOWN_ERROR]\nus=\"Unknown error code %i!\\n\"\n\n[VERIFY_REMOVE_KEY_PUBLIC_PRIVATE]\nus=\"\\nDo you wish to remove this key from your public and private \\\nkeyrings?\\n[y/N]? \"\n\n[UNABLE_TO_ITERATE_KEY]\nus=\"Unable to iterate key!\\n\";\n\n[CANCELED]\nus=\"Canceled.\\n\"\n\n[REMOVED]\nus=\"Removed.\\n\"\n\n[NEED_FILE_TO_SAVE]\nus=\"Save file as [%s] \"\n\n[PGP_NEWTRUST_NOT_TRUSTED_SIGNING_KEY]\nus=\"WARNING: The signing key is not trusted to belong to:\\n\"\n\n[TO_DISABLE_OR_ENABLE]\nus=\"to disable or enable\"\n\n[TO_EDIT]\nus=\"to edit\"\n\n[SELECTED_KEY_HAS_ONLY_ONE_USERID]\nus=\"Selected key has only one user ID, can't be selected %s\\n\"\n\n[NO_DEFAULT_PRIVATE_KEY]\nus=\"No default private key\\n\"\n\n[MULTIPLE_RECIPIENTS_MATCHED]\nus=\"WARNING:  %i matches were found for recipient %s.\\n\\\nThis may not be what you intended.\\n\"\n\n[ENOUGH_THANK_YOU]\nus=\"\\a -Enough, thank you.\\n\"\n\n[SEEDING_RANDPOOL_FROM_DEVICE]\nus=\"Seeding entropy pool with up to %u bits from %s...\\n\"\n\n[COMPLETE_READ_NUM_BITS]\nus=\"Complete.  Read %u bits.\\n\"\n\n[RSA_AND_DH_RECIPS]\nus=\"WARNING:  You are encrypting to both RSA and Diffie-Hellman keys.\\n\\\nIf the RSA user is still using PGP version 2.6.3 or earlier; 4.0; or 4.5,\\n\\\nshe will not be able to decrypt this message.\\n\"\n\n[ONLY_ONE_USER_ALLOWED]\nus=Specified operation may only be performed on one argument per execution.\\n\n\n[CANNOT_DISABLE_AXIOMATIC_KEYS]\nus=You cannot disable an axiomatic key.  Use pgpk -e to change your\\n\\\ntrust of this key, first.\\n\n\n[RETRIEVING_URL]\nus=\"Retreiving %s:/%s:%i%s\\n\"\n\n[ADD_THESE_KEYS]\nus=\"\\nAdd these keys to your keyring? [Y/n] \"\n\n[ABORTED]\nus=\"\\nAborted.\\n\"\n\n[WARNING_NO_MRK]\nus=\"A requested Message Recovery Key (MRK) for this key was not\\\nfound.\\n\"\n\n[MRK_FOUND]\nus=\"Message Recovery Key (MRK) found.  Will also encrypt this message\\n\\\nto Key ID %s.\\n\"\n\n#Everything from here down is automatically generated.\n\n[PGPERR_OK]\nus=\"No errors\\n\"\n\n[PGPERR_GENERIC]\nus=\"Generic error (should be changed)\\n\"\n\n[PGPERR_NOMEM]\nus=\"Out of Memory\\n\"\n\n[PGPERR_BADPARAM]\nus=\"Invalid Parameter\\n\"\n\n[PGPERR_NO_FILE]\nus=\"Cannot open file\\n\"\n\n[PGPERR_NO_KEYBITS]\nus=\"Internal keyring bits exhausted\\n\"\n\n[PGPERR_BAD_HASHNUM]\nus=\"Unknown hash number\\n\"\n\n[PGPERR_BAD_CIPHERNUM]\nus=\"Unknown cipher number\\n\"\n\n[PGPERR_BAD_KEYLEN]\nus=\"Illegal key length for cipher\\n\"\n\n[PGPERR_SIZEADVISE]\nus=\"SizeAdvise promise not kept\\n\"\n\n[PGPERR_CONFIG]\nus=\"Error parsing configuration\\n\"\n\n[PGPERR_CONFIG_BADFUNC]\nus=\"Invalid configuration function\\n\"\n\n[PGPERR_CONFIG_BADOPT]\nus=\"Unknown configuration option\\n\"\n\n[PGPERR_STRING_NOT_FOUND]\nus=\"Requested string not found\\n\"\n\n[PGPERR_STRING_NOT_IN_LANGUAGE]\nus=\"Requested string not in language\\n\"\n\n[PGPERR_KEY_ISLOCKED]\nus=\"Key requires passphrase to unlock\\n\"\n\n[PGPERR_KEY_UNUNLOCKABLE]\nus=\"Key requires passphrase each time\\n\"\n\n[PGPERR_SIG_ERROR]\nus=\"Error while processing signature\\n\"\n\n[PGPERR_ADDSIG_ERROR]\nus=\"Cannot add signature\\n\"\n\n[PGPERR_CANNOT_DECRYPT]\nus=\"Cannot decrypt message\\n\"\n\n[PGPERR_ADDESK_ERROR]\nus=\"Cannot add encrypted session key\\n\"\n\n[PGPERR_UNK_STRING2KEY]\nus=\"Don't know how to convert pass\\n\"\n\n[PGPERR_BAD_STRING2KEY]\nus=\"Invalid conversion from pass\\n\"\n\n[PGPERR_ESK_BADTYPE]\nus=\"Unknown encrypted session key type\\n\"\n\n[PGPERR_ESK_TOOSHORT]\nus=\"Encrypted session key too short\\n\"\n\n[PGPERR_ESK_TOOLONG]\nus=\"Encrypted session key too long\\n\"\n\n[PGPERR_ESK_BADVERSION]\nus=\"Encrypted session key version\\n\"\n\n[PGPERR_ESK_BADALGORITHM]\nus=\"Encrypted session key algorithm\\n\"\n\n[PGPERR_ESK_BITSWRONG]\nus=\"Wrong number of bits in ESK\\n\"\n\n[PGPERR_ESK_NOKEY]\nus=\"Can't find key to decrypt session key\\n\"\n\n[PGPERR_ESK_NODECRYPT]\nus=\"Can't decrypt this session key\\n\"\n\n[PGPERR_ESK_BADPASS]\nus=\"Passphrase incorrect\\n\"\n\n[PGPERR_SIG_BADTYPE]\nus=\"Unknown signature type\\n\"\n\n[PGPERR_SIG_TOOSHORT]\nus=\"Signature too short\\n\"\n\n[PGPERR_SIG_TOOLONG]\nus=\"Signature too long\\n\"\n\n[PGPERR_SIG_BADVERSION]\nus=\"Signature version unknown\\n\"\n\n[PGPERR_SIG_BADALGORITHM]\nus=\"Signature algorithm unknown\\n\"\n\n[PGPERR_SIG_BITSWRONG]\nus=\"Wrong number of bits in signature\\n\"\n\n[PGPERR_SIG_NOKEY]\nus=\"Can't find necessary key to check sig\\n\"\n\n[PGPERR_SIG_BADEXTRA]\nus=\"Invalid Extra Data for Signature\\n\"\n\n[PGPERR_NO_PUBKEY]\nus=\"No public key found\\n\"\n\n[PGPERR_NO_SECKEY]\nus=\"No secret key found\\n\"\n\n[PGPERR_UNKNOWN_KEYID]\nus=\"No matching keyid found\\n\"\n\n[PGPERR_NO_RECOVERYKEY]\nus=\"Requested message recovery key\\n\"\n\n[PGPERR_COMMIT_INVALID]\nus=\"Invalid commit response\\n\"\n\n[PGPERR_CANNOT_HASH]\nus=\"Cannot hash message\\n\"\n\n[PGPERR_UNBALANCED_SCOPE]\nus=\"Unbalanced scope\\n\"\n\n[PGPERR_WRONG_SCOPE]\nus=\"Data sent in wrong scope\\n\"\n\n[PGPERR_UI_INVALID]\nus=\"Invalid UI Callback Object\\n\"\n\n[PGPERR_CB_INVALID]\nus=\"Invalid Parser Callback\\n\"\n\n[PGPERR_INTERRUPTED]\nus=\"Interrupted encrypt/decrypt\\n\"\n\n[PGPERR_PUBKEY_TOOSMALL]\nus=\"Public Key too small for data\\n\"\n\n[PGPERR_PUBKEY_TOOBIG]\nus=\"Public key is too big for this version\\n\"\n\n[PGPERR_PUBKEY_UNIMP]\nus=\"Unimplemented public key operation\\n\"\n\n[PGPERR_RSA_CORRUPT]\nus=\"Corrupt data decrypting RSA block\\n\"\n\n[PGPERR_PK_CORRUPT]\nus=\"Corrupt data decrypting public\\n\"\n\n[PGPERR_CMD_TOOBIG]\nus=\"Command to Buffer too big\\n\"\n\n[PGPERR_FIFO_READ]\nus=\"Incomplete read from Fifo\\n\"\n\n[PGPERR_VRFYSIG_WRITE]\nus=\"Data illegally written into\\n\"\n\n[PGPERR_VRFYSIG_BADANN]\nus=\"Invalid annotation to signature\\n\"\n\n[PGPERR_ADDHDR_FLUSH]\nus=\"Cannot flush buffer until size\\n\"\n\n[PGPERR_JOIN_BADANN]\nus=\"Invalid annotation to join module\\n\"\n\n[PGPERR_RANDSEED_TOOSMALL]\nus=\"Not enough data in randseed file\\n\"\n\n[PGPERR_ENV_LOWPRI]\nus=\"Env Var not set: priority too low\\n\"\n\n[PGPERR_ENV_BADVAR]\nus=\"Invalid environment variable\\n\"\n\n[PGPERR_CHARMAP_UNKNOWN]\nus=\"Unknown Charset\\n\"\n\n[PGPERR_FILE_PERMISSIONS]\nus=\"Unsufficient file permissions\\n\"\n\n[PGPERR_FILE_WRITELOCKED]\nus=\"File already open for writing\\n\"\n\n[PGPERR_FILE_BADOP]\nus=\"Invalid PgpFile Operation\\n\"\n\n[PGPERR_FILE_OPFAIL]\nus=\"PgpFile Operation Failed\\n\"\n\n[PGPERR_IMMUTABLE]\nus=\"Attempt to change an\\n\"\n\n[PGPERR_PARSEASC_INCOMPLETE]\nus=\"Ascii Armor Input Incomplete\\n\"\n\n[PGPERR_PARSEASC_BADINPUT]\nus=\"PGP text input is corrupted\\n\"\n\n[PGPERR_FILEFIFO_SEEK]\nus=\"Temp-File Seek Error\\n\"\n\n[PGPERR_FILEFIFO_WRITE]\nus=\"Temp-File Write Error\\n\"\n\n[PGPERR_FILEFIFO_READ]\nus=\"Temp-File Read Error\\n\"\n\n[PGPERR_FILEIO_BADPKT]\nus=\"Corrupted or bad packet in\\n\"\n\n[PGPERR_SYSTEM_PGPK]\nus=\"Error Executing PGPK Program\\n\"\n\n[PGPERR_KEYIO_READING]\nus=\"I/O error reading keyring\\n\"\n\n[PGPERR_KEYIO_WRITING]\nus=\"I/O error writing keyring\\n\"\n\n[PGPERR_KEYIO_FTELL]\nus=\"I/O error finding keyring position\\n\"\n\n[PGPERR_KEYIO_SEEKING]\nus=\"I/O error seeking keyring\\n\"\n\n[PGPERR_KEYIO_OPENING]\nus=\"I/O error opening keyring\\n\"\n\n[PGPERR_KEYIO_CLOSING]\nus=\"I/O error closing keyring\\n\"\n\n[PGPERR_KEYIO_FLUSHING]\nus=\"I/O error flushing keyring\\n\"\n\n[PGPERR_KEYIO_EOF]\nus=\"Unexpected EOF fetching key packet\\n\"\n\n[PGPERR_KEYIO_BADPKT]\nus=\"Bad data found where key\\n\"\n\n[PGPERR_KEYIO_BADFILE]\nus=\"Not a keyring file\\n\"\n\n[PGPERR_TROUBLE_KEYSUBKEY]\nus=\"Key matches subkey\\n\"\n\n[PGPERR_TROUBLE_SIGSUBKEY]\nus=\"Signature by subkey\\n\"\n\n[PGPERR_TROUBLE_BADTRUST]\nus=\"Trust packet malformed\\n\"\n\n[PGPERR_TROUBLE_UNKPKTBYTE]\nus=\"Unknown packet byte in keyring\\n\"\n\n[PGPERR_TROUBLE_UNXSUBKEY]\nus=\"Unexpected subkey (before key)\\n\"\n\n[PGPERR_TROUBLE_UNXNAME]\nus=\"Unexpected name (before key)\\n\"\n\n[PGPERR_TROUBLE_UNXSIG]\nus=\"Unexpected sig (before key)\\n\"\n\n[PGPERR_TROUBLE_UNXUNK]\nus=\"Packet of unknown type in unexpected\\n\"\n\n[PGPERR_TROUBLE_UNXTRUST]\nus=\"Unexpected trust packet\\n\"\n\n[PGPERR_TROUBLE_KEY2BIG]\nus=\"Key grossly oversized\\n\"\n\n[PGPERR_TROUBLE_SEC2BIG]\nus=\"Secret key grossly oversized\\n\"\n\n[PGPERR_TROUBLE_NAME2BIG]\nus=\"Name grossly oversized\\n\"\n\n[PGPERR_TROUBLE_SIG2BIG]\nus=\"Sig grossly oversized\\n\"\n\n[PGPERR_TROUBLE_UNK2BIG]\nus=\"Packet of unknown type too large\\n\"\n\n[PGPERR_TROUBLE_DUPKEYID]\nus=\"Duplicate KeyID, different keys\\n\"\n\n[PGPERR_TROUBLE_DUPKEY]\nus=\"Duplicate key (in same keyring)\\n\"\n\n[PGPERR_TROUBLE_DUPSEC]\nus=\"Duplicate secret (in same keyring)\\n\"\n\n[PGPERR_TROUBLE_DUPNAME]\nus=\"Duplicate name (in same keyring)\\n\"\n\n[PGPERR_TROUBLE_DUPSIG]\nus=\"Duplicate signature (in same keyring)\\n\"\n\n[PGPERR_TROUBLE_DUPUNK]\nus=\"Duplicate unknown \\\"thing\\\" in keyring\\n\"\n\n[PGPERR_TROUBLE_BAREKEY]\nus=\"Key found with no names\\n\"\n\n[PGPERR_TROUBLE_VERSION_BUG_PREV]\nus=\"Bug introduced by legal_kludge\\n\"\n\n[PGPERR_TROUBLE_VERSION_BUG_CUR]\nus=\"Bug introduced by legal_kludge\\n\"\n\n[PGPERR_TROUBLE_OLDSEC]\nus=\"Passphrase is out of date\\n\"\n\n[PGPERR_TROUBLE_NEWSEC]\nus=\"Passphrase is newer than another\\n\"\n\n[PGPERR_KEY_NO_RSA_ENCRYPT]\nus=\"No RSA Encryption/Signature support\\n\"\n\n[PGPERR_KEY_NO_RSA_DECRYPT]\nus=\"No RSA Decryption/Verification support\\n\"\n\n[PGPERR_KEY_NO_RSA]\nus=\"No RSA key support\\n\"\n\n[PGPERR_KEY_LONG]\nus=\"Key packet has trailing junk\\n\"\n\n[PGPERR_KEY_SHORT]\nus=\"Key packet truncated\\n\"\n\n[PGPERR_KEY_VERSION]\nus=\"Key version unknown\\n\"\n\n[PGPERR_KEY_PKALG]\nus=\"Key algorithm unknown\\n\"\n\n[PGPERR_KEY_MODMPI]\nus=\"Key modulus mis-formatted\\n\"\n\n[PGPERR_KEY_EXPMPI]\nus=\"Key exponent mis-formatted\\n\"\n\n[PGPERR_KEY_MODEVEN]\nus=\"RSA public modulus is even\\n\"\n\n[PGPERR_KEY_EXPEVEN]\nus=\"RSA public exponent is even\\n\"\n\n[PGPERR_KEY_MPI]\nus=\"Key component mis-formatted\\n\"\n\n[PGPERR_KEY_UNSUPP]\nus=\"Key is not supported by this version of PGP\\n\"\n\n[PGPERR_SIG_LONG]\nus=\"Signature packet has trailing junk\\n\"\n\n[PGPERR_SIG_SHORT]\nus=\"Signature truncated\\n\"\n\n[PGPERR_SIG_MPI]\nus=\"Signature integer mis-formatted\\n\"\n\n[PGPERR_SIG_PKALG]\nus=\"Signature algorithm unknown\\n\"\n\n[PGPERR_SIG_EXTRALEN]\nus=\"Bad signature extra material (not 5)\\n\"\n\n[PGPERR_SIG_VERSION]\nus=\"Signature version unknown\\n\"\n\n[PGPERR_KEYDB_BADPASSPHRASE]\nus=\"Bad passphrase\\n\"\n\n[PGPERR_KEYDB_KEYDBREADONLY]\nus=\"Key database is read-only\\n\"\n\n[PGPERR_KEYDB_NEEDMOREBITS]\nus=\"Insufficient random bits\\n\"\n\n[PGPERR_KEYDB_OBJECTREADONLY]\nus=\"Object is read-only\\n\"\n\n[PGPERR_KEYDB_INVALIDPROPERTY]\nus=\"Invalid property name\\n\"\n\n[PGPERR_KEYDB_BUFFERTOOSHORT]\nus=\"Buffer too short\\n\"\n\n[PGPERR_KEYDB_CORRUPT]\nus=\"Key database is corrupt\\n\"\n\n[PGPERR_KEYDB_VERSIONTOONEW]\nus=\"Data is too new to be read\\n\"\n\n[PGPERR_KEYDB_IOERROR]\nus=\"Input/output error\\n\"\n\n[PGPERR_KEYDB_VALUETOOLONG]\nus=\"Value too long\\n\"\n\n[PGPERR_KEYDB_DUPLICATE_CERT]\nus=\"Duplicate certification\\n\"\n\n[PGPERR_KEYDB_DUPLICATE_USERID]\nus=\"Duplicate UserID\\n\"\n\n[PGPERR_KEYDB_CERTIFYINGKEY_DEAD]\nus=\"Certifying key no longer\\n\"\n\n[PGPERR_KEYDB_OBJECT_DELETED]\nus=\"Object has been deleted\\n\"\n$Id$\n"
  },
  {
    "path": "contrib/mutt_xtitle",
    "content": "#!/bin/sh\n# Demonstration of format string pipes. Sets the xterm title and returns the\n# string unchanged.\n#\n# Example usage:\n# set status_format=\"mutt_xtitle '%r %f (%L) [Msgs:%?M?%M/?%m%?n? New:%n?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?]'|\"\n\nprintf \"\\033]0;$1\\007\" > /dev/tty\necho \"$1\"\n"
  },
  {
    "path": "contrib/patch.slang-1.2.2.keypad.1",
    "content": "diff -ur slang.old/src/slcurses.c slang/src/slcurses.c\n--- slang.old/src/slcurses.c\tFri Apr 24 09:16:46 1998\n+++ slang/src/slcurses.c\tSat Jul  4 07:30:31 1998\n@@ -134,7 +134,10 @@\n \t       }\n \t     else if (ch == 0xFFFF) return ERR;\n \t     SLang_ungetkey (ch);\n-\t     return SLkp_getkey ();\n+\t     if ((ch = SLkp_getkey ()) != SL_KEY_ERR)\n+\t       return ch;\n+\t     else\n+\t       return SLang_getkey ();\n \t  }\n \treturn SLang_getkey ();\n      }\ndiff -ur slang.old/src/slkeymap.c slang/src/slkeymap.c\n--- slang.old/src/slkeymap.c\tFri Apr 24 09:16:47 1998\n+++ slang/src/slkeymap.c\tSat Jul  4 07:41:42 1998\n@@ -343,6 +343,8 @@\n \n SLang_Key_Type *SLang_do_key(SLKeyMap_List_Type *kml, int (*getkey)(void))\n {\n+   unsigned char SLang_Undo_Buffer [SL_MAX_INPUT_BUFFER_LEN];\n+   int SLang_Undo_Len = 0;\n    register SLang_Key_Type *key, *next, *kmax;\n    unsigned int len;\n    unsigned char input_ch;\n@@ -356,6 +358,7 @@\n      return NULL;\n \n    input_ch = (unsigned char) SLang_Last_Key_Char;\n+   SLang_Undo_Buffer [SLang_Undo_Len++] = input_ch;\n \n    key = (SLang_Key_Type *) &((kml->keymap)[input_ch]);\n \n@@ -372,7 +375,11 @@\n \n \tkey = kml->keymap + input_ch;\n \tif (key->type == 0)\n+\t{\n+\t  if (getkey == (int (*)(void)) SLang_getkey)\n+\t    SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len);\n \t  return NULL;\n+\t}\n      }\n \n    /* It appears to be a prefix character in a key sequence. */\n@@ -385,6 +392,7 @@\n      {\n \tSLang_Key_TimeOut_Flag = 1;\n \tSLang_Last_Key_Char = (*getkey)();\n+\tSLang_Undo_Buffer [SLang_Undo_Len++] = (unsigned char) SLang_Last_Key_Char;\n \tSLang_Key_TimeOut_Flag = 0;\n \n \tlen++;\n@@ -458,6 +466,8 @@\n \tkmax = next;\n      }\n \n+   if (getkey == (int (*)(void)) SLang_getkey)\n+     SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len);\n    return NULL;\n }\n \ndiff -ur slang.old/src/slkeypad.c slang/src/slkeypad.c\n--- slang.old/src/slkeypad.c\tFri Apr 24 09:16:47 1998\n+++ slang/src/slkeypad.c\tSat Jul  4 07:30:31 1998\n@@ -110,7 +110,7 @@\n    key = SLang_do_key (Keymap_List, (int (*)(void)) SLang_getkey);\n    if ((key == NULL) || (key->type != SLKEY_F_KEYSYM))\n      {\n-\tSLang_flush_input ();\n+\t/* SLang_flush_input (); */\n \treturn SL_KEY_ERR;\n      }\n \n"
  },
  {
    "path": "contrib/pgp2.rc",
    "content": "# -*-muttrc-*-\n#\n# PGP command formats for PGP 2.\n#\n# $Id$\n#\n\n#\n# Note: In order to be able to read your own messages, you'll have\n# the +encrypttoself command line parameter to the pgp_encrypt_only_command\n# and pgp_encrypt_sign_command variables.\n#\n\n# decode application/pgp\nset pgp_decode_command=\"%?p?PGPPASSFD=0; export PGPPASSFD;? cat %?p?-? %f | pgp +language=mutt +verbose=0 +batchmode -f\"\n\n# verify a pgp/mime signature\nset pgp_verify_command=\"pgp +language=mutt +verbose=0 +batchmode -t %s %f\"\n\n# decrypt a pgp/mime attachment\nset pgp_decrypt_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgp +language=mutt +verbose=0 +batchmode -f\"\n\n# create a pgp/mime signed attachment\nset pgp_sign_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgp +language=mutt +verbose=0 +batchmode -abfst %?a? -u %a?\"\n\n# create a pgp/mime encrypted attachment\nset pgp_encrypt_only_command=\"pgp +language=mutt +verbose=0 +batchmode -aeft %r < %f\"\n\n# create a pgp/mime encrypted and signed attachment\nset pgp_encrypt_sign_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgp +language=mutt +verbose=0 +batchmode -aefts %?a?-u %a? %r\"\n\n# import a key into the public key ring\nset pgp_import_command=\"pgp -ka %f +language=mutt\"\n\n# export a key from the public key ring\nset pgp_export_command=\"pgp -kxaf +language=mutt %r\"\n\n# verify a key\nset pgp_verify_key_command=\"pgp -kcc +language=mutt %r\"\n\n# read in the public key ring\nset pgp_list_pubring_command=\"pgpring -2 %r\"\n\n# read in the secret key ring\nset pgp_list_secring_command=\"pgpring -s -2 %r\"\n\n# pattern for good signature\nset pgp_good_sign=\"Good signature\"\n"
  },
  {
    "path": "contrib/pgp5.rc",
    "content": "# -*-muttrc-*-\n#\n# PGP command formats for PGP 5.\n#\n# $Id$\n#\n\n# decode application/pgp\nset pgp_decode_command=\"%?p?PGPPASSFD=0; export PGPPASSFD;? cat %?p?-? %f | pgpv +language=mutt +verbose=0 +batchmode -f --OutputInformationFD=0\"\n\n# verify a pgp/mime signature\nset pgp_verify_command=\"pgpv +language=mutt +verbose=0 +batchmode --OutputInformationFD=1 %f %s\"\n\n# string that the verify command outputs if the signature is good\nset pgp_good_sign = \"Good signature\"\n\n# decrypt a pgp/mime attachment\nset pgp_decrypt_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgpv +language=mutt +verbose=0 +batchmode --OutputInformationFD=2 -f\"\n\n# create a pgp/mime signed attachment\nset pgp_sign_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgps +language=mutt +verbose=0 +batchmode -abft %?a? -u %a?\"\n\n# create a pgp/mime encrypted attachment\nset pgp_encrypt_only_command=\"pgpewrap pgpe +language=mutt +verbose=0 +batchmode +nobatchinvalidkeys=off -aft -- -r %r < %f\"\n\n# create a pgp/mime encrypted and signed attachment\nset pgp_encrypt_sign_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgpewrap pgpe +language=mutt +verbose=0 +batchmode +nobatchinvalidkeys=off -afts %?a? -u %a? -- -r %r\"\n\n# import a key into the public key ring\nset pgp_import_command=\"pgpk -a +language=mutt --OutputInformationFD=1 %f\"\n\n# export a key from the public key ring\nset pgp_export_command=\"pgpk -xa +language=mutt --OutputInformationFD=1 %r\"\n\n# verify a key\nset pgp_verify_key_command=\"pgpk -c +batchmode +language=mutt --OutputInformationFD=1 %r\"\n\n# read in the public key ring\nset pgp_list_pubring_command=\"pgpring -5 %r\" \n\n# read in the secret key ring\nset pgp_list_secring_command=\"pgpring -5 -s %r\"\n\n\n"
  },
  {
    "path": "contrib/pgp6.rc",
    "content": "# -*-muttrc-*-\n#\n# PGP command formats for PGP 6.\n#\n# $Id$\n#\n\n# decode application/pgp\nset pgp_decode_command=\"%?p?PGPPASSFD=0; export PGPPASSFD;? cat %?p?-? %f | pgp6 +compatible   +verbose=0 +batchmode -f\"\n\n# verify a pgp/mime signature\nset pgp_verify_command=\"pgp6 +compatible   +verbose=0 +batchmode -t %s %f\"\n\n# decrypt a pgp/mime attachment\nset pgp_decrypt_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgp6 +compatible   +verbose=0 +batchmode -f\"\n\n# create a pgp/mime signed attachment\nset pgp_sign_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgp6 +compatible   +verbose=0 +batchmode -abfst %?a? -u %a?\"\n\n# create a pgp/mime encrypted attachment\nset pgp_encrypt_only_command=\"pgp6 +compatible   +verbose=0 +encrypttoself +batchmode -aeft %r < %f\"\n\n# create a pgp/mime encrypted and signed attachment\nset pgp_encrypt_sign_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgp6 +compatible   +verbose=0 +encrypttoself +batchmode +clearsig=off -aefts %?a? -u %a? %r\"\n\n# import a key into the public key ring\nset pgp_import_command=\"pgp6 +compatible  -ka %f \"\n\n# export a key from the public key ring\nset pgp_export_command=\"pgp6 +compatible  -kxaf  %r\"\n\n# verify a key\nset pgp_verify_key_command=\"pgp6 +compatible  -kcc  %r\"\n\n# read in the public key ring\nset pgp_list_pubring_command=\"pgpring -5 %r\"\n\n# read in the secret key ring\nset pgp_list_secring_command=\"pgpring -s -5 %r\"\n\n# create a clearsigned message\nset pgp_clearsign_command=\"PGPPASSFD=0; export PGPPASSFD; cat - %f | pgp6 +compatible   +verbose=0 +batchmode +clearsig -afst %?a? -u %a?\"\n\n# fetch keys\nset pgp_getkeys_command=\"pkspxycwrap %r\"\n"
  },
  {
    "path": "contrib/sample.mailcap",
    "content": "# $Id$\n\ntext/html; netscape -remote openURL\\(%s\\)\nimage/gif; xv %s\nimage/jpg; xv %s\napplication/pgp-keys; pgp -f < %s ; copiousoutput\n"
  },
  {
    "path": "contrib/sample.muttrc",
    "content": "# $Id$\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# ME's personal .muttrc (Mutt 0.92.5)\n#\n# The format of this file is one command per line.  Everything after a pound\n# sign (#) is a comment, unless a backward slash (\\) precedes it.  Note: In\n# folder-hook and send-hook you need to account for two levels of dequoting\n# (see manual).\n#\n\n# Note: $folder should be set _before_ any other path vars where `+' or `='\n# is used because paths are expanded when parsed\n#\n#set folder=~/Mail\t\t# where i keep my mailboxes\n\n#set abort_unmodified=yes\t# automatically abort replies if I don't\n\t\t\t\t# change the message\nset alias_file=~/.mail_aliases\t# where I keep my aliases\n#set allow_8bit\t\t\t# never do Q-P encoding on legal 8-bit chars\nset arrow_cursor\t\t# use -> instead of hiliting the whole line\n#set ascii_chars\t\t# use ASCII instead of ACS chars for threads\n#set askbcc\n#set askcc\n#set attribution=\"On %d, %n wrote:\"\t# how to attribute replies\nset autoedit\t\t\t# go to the editor right away when composing\n#set auto_tag\t\t\t# always operate on tagged messages\n#set charset=\"iso-8859-1\"\t# character set for your terminal\nset noconfirmappend\t\t# don't ask me if i want to append to mailboxes\n#set confirmcreate\t\t# prompt when creating new files\nset copy=yes\t\t\t# always save a copy of outgoing messages\nset delete=yes\t\t\t# purge deleted messages without asking\nset edit_headers\t\t# let me edit the message header when composing\n#set editor=\"emacs -nw\"\t\t# editor to use when composing messages\n#set bounce=yes\t\t\t# don't ask about bouncing messages, just do it\n#set fast_reply\t\t\t# skip initial prompts when replying\n#set fcc_attach\t\t\t# keep attachments in copies of sent messages?\n#set force_name\t\t\t# fcc by recipient, create if mailbox doesn't exist\n#set forward_decode\t\t# weed and MIME decode forwaded messages\n#set forward_format=\"[%a: %s]\"\t# subject to use when forwarding messages\n#set forward_quote\t\t# quote the header and body of forward msgs\n#set index_format=\"%4C %Z %{%m/%d} [%2N] %-15.15F (%4c) %s\"\nset index_format=\"%4C %Z %{%m/%d} %-15.15F (%4c) %s\" # format of the index\n#set hdrs\t\t\t# include `my_hdr' lines in outgoing messages\n#set header\t\t\t# include message header when replying\nset help\t\t\t# show the help lines\n#set history=20\t\t\t# number of lines of history to remember\n#set hostname=\"mutt.org\"\t# my DNS domain\nset include\t\t\t# always include messages when replying\n#set indent_string=\"> \"\t\t# how to quote replied text\n#set locale=\"C\"\t\t\t# locale to use for printing time\n#set mailcap_path=\"~/.mailcap:/usr/local/share/mailcap\"\nset nomark_old\t\t\t# i don't care about whether a message is old\nset mail_check=10\t\t# how often to poll for new mail\nset mbox=+mbox\t\t\t# where to store read messages\n#set menu_scroll\t\t# no implicit next-page/prev-page\n#set metoo\t\t\t# remove my address when replying\nset mime_forward\t\t# use message/rfc822 type to forward messages\nset move=yes\t\t\t# don't ask about moving messages, just do it\n#set pager=less\t\t\t# some people prefer an external pager\n#set pager_context=3\t\t# no. of lines of context to give when scrolling\n#set pager_format=\"-%S- %-20.20f %s\"\t# format of the pager status bar\nset pager_index_lines=6\t\t# how many index lines to show in the pager\n#set pager_stop\t\t\t# don't move to the next message on next-page\n#set pgp_strict_enc\t\t# use Q-P encoding when needed for PGP\nset postponed=+postponed\t# mailbox to store postponed messages in\n#set post_indent_string='---end quoted text---'\n#set print=ask-yes\t\t# ask me if I really want to print messages\nset print_command=/bin/false\t# how to print things (I like to save trees)\nset noprompt_after\t# ask me for a command after the external pager exits\n#set quote_regexp=\"^ *[a-zA-Z]*[>:#}]\"\t# how to catch quoted text\nset read_inc=25\t\t\t# show progress when reading a mailbox\n#set recall\t\t\t# prompt to recall postponed messages\nset record=+outbox\t\t# default location to save outgoing mail\nset reply_to\t\t\t# always use reply-to if present\n#set reply_regexp=\"^(re:[ \\t]*)+\"# how to identify replies in the subject:\n#set resolve\t\t# move to the next message when an action is performed\n#set reverse_alias\t\t# attempt to look up my names for people\nset reverse_name\t\t# use my address as it appears in the message\n\t\t\t\t# i am replying to\nset nosave_empty\t\t# remove files when no messages are left\n#set save_name\t\t\t# save outgoing messages by recipient, if the\n#set sendmail=\"/usr/lib/sendmail -oi -oem\"\t# how to deliver mail\n#set shell=\"/bin/zsh\"\t\t# program to use for shell escapes\n#set signature=\"~/.signature\"\t# file which contains my signature\n\n# I subscribe to a lot of mailing lists, so this is _very_ useful.  This\n# groups messages on the same subject to make it easier to follow a\n# discussion.  Mutt will draw a nice tree showing how the discussion flows.\nset sort=threads\t\t# primary sorting method\n\n#set sort_aux=reverse-date-received\t# how to sort subthreads\n#set sort_aux=last-date\t\t# date of the last message in thread\nset sort_browser=reverse-date\t# how to sort files in the dir browser\nset spoolfile='~/mailbox'\t# where my new mail is located\n#set status_format=\"-%r-Mutt: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?  %l]---(%s)-%>-(%P)---\"\n#set status_on_top\t\t# some people prefer the status bar on top\n#set strict_threads\t\t# don't thread by subject\nset tilde\t\t\t# virtual lines to pad blank lines in the pager\n#set timeout=0\t\t\t# timeout for prompt in the index menu\n#set tmpdir=~/tmp\t\t# where to store temp files\n#set to_chars=\" +TCF\"\n#set use_8bitmime\t\t# enable the -B8BITMIME sendmail flag\nset nouse_domain\t\t# don't qualify local addresses with $domain\n#set use_from\t\t\t# always generate the `From:' header field\nset implicit_autoview=yes\t# pager shows parts having a mailcap viewer\nset pgp_verify_sig=no\t\t# don't automatically verify message signatures\n#set visual=vim\t\t\t# editor invoked by ~v in the builtin editor\n#set nowait_key\t\t\t# prompt when a pipe returns normal status\nset write_inc=25\t\t# show progress while writing mailboxes\n\n# only enable the following IFF you have sendmail 8.8.x or you will not\n# be able to send mail!!!\n#set dsn_notify='failure,delay'\t# when to return an error message\n#set dsn_return=hdrs\t\t# what to return in the error message\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Header fields I don't normally want to see\n#\nignore *\t\t# this means \"ignore all lines by default\"\n\n# I do want to see these fields, though!\nunignore\tfrom: subject to cc mail-followup-to \\\n\t\tdate x-mailer x-url # this shows how nicely wrap long lines\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Color definitions\n#\n\n#color normal white default\ncolor hdrdefault red default\ncolor quoted brightblue default\ncolor signature red default\ncolor indicator brightyellow red\ncolor error brightred default\ncolor status yellow blue\ncolor tree magenta default\t# the thread tree in the index menu\ncolor tilde magenta default\ncolor message brightcyan default\ncolor markers brightcyan default\ncolor attachment brightmagenta default\ncolor search default green\t# how to hilite search patterns in the pager\n\ncolor header brightred default ^(From|Subject):\ncolor body magenta default \"(ftp|http|https)://[^ ]+\"\t# point out URLs\ncolor body magenta default [-a-z_0-9.]+@[-a-z_0-9.]+\t# e-mail addresses\ncolor underline brightgreen default\n\n# attributes when using a mono terminal\n#mono header underline ^(From|Subject):\nmono quoted bold\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Key bindings\n#\n#\tmaps:\n#\t\talias\t\talias menu\n#\t\tattach\t\tattachment menu\n#\t\tbrowser\t\tdirectory browser\n#\t\tcompose\t\tcompose menu\n#\t\tindex\t\tmessage index\n#\t\tpgp\t\tpgp menu\n#\t\tpostpone\tpostponed message recall menu\n#\t\tgeneric\t\tgeneric keymap for all of the above\n#\t\teditor\t\tline editor\n#\t\tpager\t\ttext viewer\n#\t\t\n\nbind generic \"\\e<\" first-entry\t# emacs-like bindings for moving to top/bottom\nbind generic \\e> last-entry\nbind generic { top-page\nbind generic } bottom-page\nbind generic \\177 last-entry\n\nmacro index \\cb \"<pipe-message> urlview<Enter>\"\t# simulate the old browse-url function\n\nmacro index S \"<save-message>+spam<Enter>\"\nmacro pager S \"<save-message>+spam<Enter>\"\n\n#macro index \\#\t\"<search>bug<Enter>\"\t# search for bugs\n#macro index \"\\\"\"\t\"<enter-command> set realname=\\\"real hairy macro\\\" ?realname<Enter>\" # and a comment to boot!\n#macro index f1\t\"<enter-command>woohoo!\"\n\nbind pager G bottom\t# just like vi and less\n#macro   pager   \\Ck     \"<pipe-message> pgp -kaf<Enter>\"   # a comment is valid here\n#macro pager X \"<pipe-message> morepgp<Enter>\"\t# pipe PGP message to a script\n\n#bind editor \\cy eol\t# make ^Y jump to the end of the line\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# User Defined Headers\n#\n\n#my_hdr X-Useless-Header: Look ma, it's a \\# sign! # real comment\n#my_hdr X-Operating-System: `uname -a`\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Specify default filename when saving messages\n#\n#\tsave-hook [!]<pattern> <mailbox>\n#\n# <mailbox> is provided as default when saving messages from <pattern>\n\n#save-hook mutt- =mutt-mail\n#save-hook aol\\\\.com$ +spam\nsave-hook ^judge +diplomacy\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Multiple spool mailboxes\n#\n#\tmbox-hook [!]<pattern> <mbox-mailbox>\n#\n# Read mail in <pattern> is moved to <mbox-mailbox> when <pattern> is\n# closed.\n\n#mbox-hook =mutt-users.in =mutt-users\n#mbox-hook +TEST +inbox\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Change settings based upon message recipient\n#\n#\tsend-hook [!]<pattern> <command>\n#\n# <command> is executed when sending mail to an address matching <pattern>\n\n#send-hook mutt- 'set signature=~/.sigmutt; my_hdr From: Mutt User <user@example.com>'\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Specify where to save composed messages\n#\n#\tfcc-hook [!]<pattern> <mailbox>\n#\n# <pattern> is recipient(s), <mailbox> is where to save a copy\n\n#fcc-hook joe +joe\n#fcc-hook bob +bob\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Change settings based on mailbox\n#\n#\tfolder-hook [!]<pattern> <command>\n#\n# <command> is executed when opening a mailbox matching <pattern>\n\n#folder-hook .\t\t'set sort=date-sent'\n#folder-hook mutt\t'set index_format=\"%4C %Z %02m/%02N %-20.20F (%4l) %s\"'\n#folder-hook =mutt\tmy_hdr Revolution: \\#9 # real comment\n\n#folder-hook .\t\t'set reply_regexp=\"^re:[ \\t]*\"'\n\n# this mailing list prepends \"[WM]\" to all non reply subjects, so set\n# $reply_regexp to ignore it\n# Warning: May break threads for other people.\n#folder-hook +wmaker\t'set reply_regexp=\"^(re:[ \\t]*)?\\[WM\\][ \\t]*\"'\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Aliases\n#\n#\talias <name> <address> [ , <address> ... ]\n\n#alias exam \"\\# to annoy michael\" <user@host>\n#alias me Michael Elkins <me@mutt.org> # me!\nalias mutt-dev Mutt Development List <mutt-dev@mutt.org> # power users\nalias mutt-users Mutt User List <mutt-users@mutt.org>\nalias mutt-announce Mutt Announcement List <mutt-announce@mutt.org>\nalias wmaker WindowMaker Mailing List <wmaker@eosys.com>\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Mailboxes to watch for new mail\n#\n#\tmailboxes <path1> [ <path2> ... ]\n#\n\nmailboxes ! +mutt-dev +mutt-users +open-pgp +wmaker +hurricane +vim +ietf \\\n\t+drums\n#mailboxes `echo $HOME/Mail/*`\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Specify the order of the headers to appear when displaying a message\n#\n#\thdr_order <hdr1> [ <hdr2> ... ]\n#\n\nunhdr_order *\t\t\t\t# forget the previous settings\nhdr_order date from subject to cc\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Identify mailing lists I subscribe to\n#\n#\tlists <list-name> [ <list-name> ... ]\n\nlists ^mutt-dev@mutt\\\\.org$ ^mutt-users@mutt\\\\.org$\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Automatically use entries from ~/.mailcap to view these MIME types\n#\n#\tauto_view <type> [ <type> ... ]\n\nauto_view application/x-gunzip\nauto_view application/x-gzip\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# Scoring\n#\n#\tscore <pattern> <value>\n#\n# 9999 and -9999 are special values which cause processing of hooks to stop\n# at that entry.  If you prefix the score with an equal sign (=), the score\n# is assigned to the message and processing stops.\n\n#score '~f ^me@cs\\.hmc\\.edu$' 1000\n#score '~t mutt | ~c mutt' =500\n#score '~f aol\\.com$' -9999\n\n# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n#\n# I use Mutt on several different machines, so I put local config commands\n# in a separate file so I can have the rest of the settings the same on all\n# machines.\n#\n\nsource ~/.muttrc-local\t# config commands local to this site\n\n# EOF\n"
  },
  {
    "path": "contrib/sample.muttrc-tlr",
    "content": "# -*-muttrc-*-\n\n#\n# Mutt configuration file of Thomas Roessler <roessler@does-not-exist.org>\n#\n# Use and distribute freely.\n#\n# Note: This file doesn't contain any personal customization, i.e.,\n# using it won't make you send messages with my name in the header.\n#\n# Things to change: You probably want to change the \"priv.rc\" source\n# command in the end of this file.  Also, it's likely you want to have \n# a look at the the $editor and $tmpdir variables.\n#\n\n#\n# MIME settings\n#\n\n# auto_view application/ms-tnef text/x-vcard\n# auto_view application/x-chess application/x-lotus-notes\n# auto_view text/html application/x-gzip application/x-gunzip \n# auto_view application/rtf application/x-rath\n# auto_view application/msword\n\nauto_view text/html\nmime_lookup application/octet-stream\n\n# alternative_order application/pgp text/html text/enriched text/plain\nalternative_order text/plain text/html\n\n\n#\n# Key bindings\n#\n\n#\n# A few of these may resemble Pine.  ups.\n#\n\nbind\talias\t\" \"\t\ttag-entry\nbind\talias\t\\n\t\tselect-entry\nbind\talias\t\\r\t\tselect-entry\n\nbind\tattach\ti\t\texit\nbind\tattach\tn\t\tnext-entry\nbind\tattach\tp\t\tprevious-entry\nbind\tattach \t\" \"\t\tselect-entry\nbind\tattach\ty\t\tprint-entry\n\nbind\tbrowser\t<end>\t\tlast-entry\nbind\tbrowser\t<home>\t\tfirst-entry\n\nbind\teditor\t\"\\e<backspace>\" kill-word\nbind\teditor\t\"\\e<delete>\"\tkill-word\nbind\teditor\t\"<backtab>\"\tcomplete-query\nbind\teditor \t\"\\eq\"\t\tcomplete-query\nbind\teditor\t\"\\Ct\"\t\ttranspose-chars\n\nbind\tgeneric\t\"\\CV\"\t\tnext-page\nbind\tgeneric\t\"\\Ca\"\t\tfirst-entry\nbind\tgeneric\t\"\\Ce\"\t\tlast-entry\nbind\tgeneric\t\"\\eV\"\t\tprevious-page\nbind\tgeneric\t\"\\ev\"\t\tprevious-page\nbind\tgeneric\t+\t\ttag-entry\nbind\tgeneric\t^\t\tfirst-entry\nbind\tgeneric\ta\t\ttag-prefix\nbind\tgeneric $\t\tlast-entry\nbind\tgeneric q\t\texit\n\nbind\tindex\t\";\"\t\tlimit\nbind\tindex\t\"\\Ce\"   \tlast-entry\t# override edit-type\nbind\tindex\t\"\\eV\"\t\tprevious-page\t# override collapse-something\nbind\tindex\t\"\\e<\"\t\tcollapse-thread\nbind\tindex\t\"\\eq\"\t\tquery\nbind\tindex\t$\t\tlast-entry\nbind\tindex\t*\t\tflag-message\nbind\tindex\t<delete>\tdelete-message\nbind\tindex\t<end>\t\tlast-entry\nbind\tindex\t<home>\t\tfirst-entry\nbind\tindex\tJ\t\tnext-entry\nbind\tindex\tK\t\tprevious-entry\nbind\tindex\tQ\t\tquit\nbind\tindex\tR\t\tgroup-reply\nbind\tindex\t\\em\t\trecall-message\nbind\tindex\ta\t\ttag-prefix\nbind\tindex\tm\t\tmail\nbind\tindex\tp\t\tprevious-entry\nbind\tindex\tt\t\tcreate-alias\nbind\tindex\tx\t\tsync-mailbox\nbind\tindex\ty\t\tprint-message\nbind\tindex \tn\t\tnext-entry\nbind\tindex   \"\\ev\"\t\tprevious-page\n\nbind\tpager\t\"\\Cn\"\t\tnext-line\nbind\tpager\t\"\\Cp\"\t\tprevious-line\nbind\tpager\t+\t\ttag-message\nbind\tpager\t*\t\tflag-message\nbind\tpager\t<delete>\tdelete-message\nbind\tpager\t<down>\t\tnext-line\nbind\tpager\t<end>\t\tbottom\nbind\tpager\t<home>\t\ttop\nbind\tpager\t<up>\t\tprevious-line\nbind\tpager\tG\t\tgroup-reply\nbind\tpager\tR\t\tgroup-reply\nbind\tpager\t\\em\t\trecall-message\nbind\tpager\tt\t\tdisplay-toggle-weed # like slrn\nbind\tpager\ty\t\tprint-message\n\nbind\tquery\ti\t\texit\n\n# make it feel like emacs\n\nmacro\tgeneric\t\"\\ex\"\t\t\":exec \"\nmacro \tpager\t\"\\ex\"\t\t\":exec \"\nmacro\tgeneric\t\"\\eX\"\t\t\"\\ex\"\nmacro \tpager\t\"\\eX\"\t\t\"\\ex\"\n\nmacro\tindex\t\"~\"\t\t\";~\"\n# macro\tindex\t\"%\"\t\t\";%\"\n\n# Thread tagging\n\nbind   index \t\"\\et\"\t\ttag-subthread\nbind   index   \"\\eT\"\t\ttag-thread\n\n# for majordomo list owner and moderator jobs\n\nmacro\tindex\t\"\\ea\"\t\t\":set nopipe_decode wait_key\\n|approve\\n:set nowait_key\\n\"\nmacro \tpager \t\"\\ea\"\t\t\":set nopipe_decode wait_key\\n|approve\\n:set nowait_key\\n\"\n\n# emulate the old URL-browser key bindings.\n\nmacro\tpager\t\"\\Cb\"\t\"| urlview -\\n\"\nmacro\tindex\t\"\\Cb\"\t\"| urlview -\\n\"\n\n# permit limiting from the pager.\n\nmacro\tpager\t\"~\"\t\"<exit><limit>~\"\nmacro   pager\t\";\"\t\"<exit><limit>\"\n\n# emulate the old POP-feature bindings\n\nmacro \tindex\tG\t\"!fetchmail\\n\"\t\nmacro \tpager\tG\t\"!fetchmail\\n\"\n\n# razor-report: Report spam.\n\n# macro\tindex\tS\t\":set nopipe_decode nowait_key\\n|razor-report > /dev/null 2> /dev/null\\ns+junk\\n\"\n# macro   pager\tS\t\":set nopipe_decode nowait_key\\n|razor-report > /dev/null 2> /dev/null\\ns+junk\\n\"\nmacro\tindex\tS\t\"s+junk\\n\"\nmacro \tpager\tS\t\"s+junk\\n\"\n\n#\n# Colors\n#\n\n# This is a tiny hack, so I can get different\n# color schemes on the console and under X11.\n\nsource ~/.mutt/colors.`if [ \"$TERM\" = \"linux\" ] ; then echo linux ; else echo default ; fi`\n\nmono  index bold ~F\n# mono  body  bold '\\*[^*]+\\*'\n# mono  body  underline '_[^_]+_'\n\n#\n# The header weed list\n#\n\nignore delivered-to\nignore content- errors-to in-reply-to mime-version\nignore lines precedence status\nignore nntp-posting-host path old-return-path received references\nignore priority >received >>received\nignore resent- return-path xref path\nignore x400 importance sensitivity autoforward original-encoded-information\nignore x- thread-\nignore DomainKey-Signature mail-followup-to\n\nignore list- comments posted-to approved-by\n\nunignore x-spam-level x-url x-mailer list-id x-no-spam x-archived-at\nunignore x-diagnostic\n\nhdr_order from to cc date subject reply-to mail-followup-to list-id\n\n#\n# Various settings\n#\n\nset   abort_nosubject=no\t\t# Let me send messages with an empty subject\nset   abort_unmodified=no\t\t# Let me send empty messages\nset   alias_file=~/.mutt/aliases\t# Where to store aliases\nunset allow_8bit\t\t\t# Produce correct MIME\nunset arrow_cursor\t\t\t# Use the bar cursor\nset   askcc\t\t\t\t# Ask me about CCs\nunset bounce_delivered\t\t\t# Don't include Delivered-to with bounces\n# set   charset=iso-8859-1\t\t# The local character set\nset   send_charset=\"us-ascii:iso-8859-1:iso-8859-15:iso-8859-2:utf-8\"\nset   confirmcreate\t\t\t# Ask me about creating new files\nunset confirmappend\t\t\t# Don't ask me about appending to files\nset   delete=yes\t\t\t# Don't ask me whether or not I meant to delete messages\n# set   display_filter=\"tr '\\240\\204\\223\\226' ' \\\"\\\"-'\" # fix some funny characters\nset   edit_hdrs\t\t\t\t# I want to edit the headers.\nset   editor=\"/usr/bin/jed %s -f 'mail_mode();'\"\t\n \t\t\t\t\t# Invoke jed with mail_mode.  This may\n\t                                # or may not work for you.\nset   noenvelope_from\t\t\t# set messages' envelope-from header.\nset   fcc_clear\t\t\t\t# Store local copies of messages in the clear.\nset   folder=~/Mail\t\t\t# Where my mail folders go\nset   followup_to\t\t\t# Create Mail-Followup-To headers.\nunset force_name\t\t\t# Don't create save folders which don't exist.\nset   forward_decode\t\t\t# Decode messages when forwarding.\nset   forward_decrypt\t\t\t# Decrypt messages when forwarding.\nset   nohelp\t\t\t\t# No help line.\nset   include=yes\t\t\t# Always include a copy when replying.\nset   mark_old\t\t\t# Distinguish between seen (but unread) and new messages\nset   mbox=+mbox\t\t\t# The (unused) mbox file.\nunset metoo\t \t\t\t# Remove me from CC headers.\nset   mime_fwd=ask-no\t\t\t# Ask me whether or not to create a MIME-encapsulated forward\nset   move=no\t\t\t\t# Don't use mbox\nset   pager_stop\t\t\t# Don't fall through to the next message in the pager\nset   pager_index_lines=0\t\t# The pager index is ugly.\nset   pgp_replyencrypt\t\t\t# Encrypt when replying to encrypted messages.\nset   pgp_replysignencrypted\t\t# Sign when replying to encrypted messages.\nset   pgp_show_unusable=\"no\"\t\t# Don't display unusable keys.\nset   pgp_sort_keys=\"keyid\"\t\t# Sort keys by key ID\nset   pgp_replysign\t\t\t# Sign when replying to signed messages.\nset   pgp_timeout=3600\t\t\t# Forget the PGP passphrase after an hour.\nset   pipe_decode\t\t\t# Decode messages I pipe to commands, typically to patch(1).\nset   postponed=~/.mutt/postponed\t# Where to put postponed messages\nset   print=ask-no\t\t\t# Don't waste paper\nset   print_cmd=\"enscript -2Gr -Email\"\t# Two columns, landscape, fancy header.\nset   print_split=yes\t\t\t# Invoke enscript once per message\nset   quit=yes\t\t\t\t# Don't ask me whether or not I want to quit.\nset   quote_regexp=\"^ *[a-zA-Z]*[>|][>:|]*\"\t# Recognize quotes in the pager.\nset   read_inc=50\t\t\t# Progress indicator when reading folders.\nset   recall=ask-no\t\t\t# When I say \"compose\", ask me whether I want to continue\n\t\t\t\t\t# composing a postponed message.\nset   record=\"+archive/now\"\t\t# Put copies of most outgoing messages to ~/Mail/archive/now\nset   reply_to=ask-yes\t\t\t# Ask me whether I want to honor users' reply-to headers.\nset   reverse_alias\t\t\t# Use aliases to display real names on the index.\nset   save_name\t\t\t\t# Save copies by name.  Together with $record and $save_name,\n\t\t\t\t\t# this means that when a folder exists, copies of outgoing \n\t\t\t\t\t# messages are written to ~/Mail/<name>, otherwise they go to\n\t\t\t\t\t# ~/Mail/archive/now\nset   signature=~/.signature\t\t# Silly signature\nset   sig_dashes\t\t\t# Add dashes above my signature\nset   smart_wrap\t\t\t# Try to be smart when wrapping around lines in the pager\nset   sort=threads\t\t\t# sort by threads,\nset   sort_aux=date\t\t\t# then by date\nunset strict_threads\t \t\t# don't be strict about threads\n# set   suspend=no\t\t\t# Don't suspend - I usually run mutt like this: \"xterm -e mutt\"\nset   tilde\t\t\t\t# Indicate empty lines in the pager.\nset   tmpdir=~/.tmp\t\t\t# Temporary files aren't stored in public places.\nset   to_chars=\" +TCF \"\t\t\t# Don't tag list mail in the index\n\nunset use_domain\t\t\t# Don't append a domain to addresses.\n\nset   write_inc=50\t\t\t# Progress indicator when writing folders.\nset   query_command=\"lbdb2q.pl %s\"\t\t# Use the Little Brother's Database with the external\n\t\t\t\t\t# query feature.\nset   sendmail_wait=-1\t\t\t# Don't put sendmail into the background.\nset   encode_from\t\t\t# \"From \" in the beginning of a line triggers quoted-printable\nset   nowait_key\t\t\t# Return immediately from external programs\nset   forw_format=\"[fwd] %s (from: %a)\"\t# A different subject for forwarded messages\nset   nobeep\t\t\t\t# Shut up. ;-)\nset   reply_regexp=\"^((re([\\\\[0-9\\\\]+])*|aw):[ \\t]*)+[ \\t]*\"\t# A regular expression to detect replies\nset   header\t\t\t\t# Include the message header when replying.\nset   ignore_list_reply_to\t\t# Ignore Reply-To headers pointing to mailing lists.\nset   norfc2047_parameters\t\t# Sometimes, I get mails which use a bogus encoding for\n\t\t\t\t\t# MIME parameters.  Setting this shouldn't harm.\n\t\t\t\t\t# (OK, she doesn't use Notes any more, so I can unset this. ;-)\n# set   text_flowed\t\t\t# Generate text/plain; format=flowed\n# unset use_ipv6\t\t\t\t# Don't try to use IPv6 - it doesn't work here.\nset   keep_flagged\t\t\t# don't move flagged messages to mbox\nset   hide_missing=yes\t\t\t# Don't show how many messages are missing in a thread structure\n\nset status_format=\"-%r-+(%v) %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?%?l? %l?]----%>-(%P)---\"\nset compose_format=\"--+(%v) Compose  [Approx. msg size: %l   Atts: %a]%>-\"\nset pager_format=\"-%Z- %C/%m: %.20n %> %s\"\n\nset smileys=\"^$\"\nset ispell=iaspell\n\nset markers=no\t\t\t\t# Don't mark wrapped lines\nset wrapmargin=4\t\t\t# Leave a margin in the pager\n\n# PGP command configuration\n# source ~/.mutt/pgp2.rc\nsource ~/.mutt/gpg.rc\nset pgp_getkeys_command=\"\"\n\n# source ~/.mutt/smime.rc\n\n\n# source non-public stuff, (hooks, alternates, ...)\nsource ~/.mutt/priv.rc\n\n# source aliases\n# source ~/.mutt/aliases-coruscant\nsource ~/.mutt/aliases\n\n"
  },
  {
    "path": "contrib/smime.rc",
    "content": "# -*-muttrc-*-\n## The following options are only available if you have\n## compiled in S/MIME support\n\n# If you compiled mutt with support for both PGP and S/MIME, PGP\n# will be the default method unless the following option is set\nset smime_is_default\n\n# Uncomment this if you don't want to set labels for certificates you add.\n# unset smime_ask_cert_label\n\n# Passphrase expiration\nset smime_timeout=300\n\n# Global crypto options -- these affect PGP operations as well.\nset crypt_autosign = yes\nset crypt_replyencrypt = yes\nset crypt_replysign = yes\nset crypt_replysignencrypted = yes\nset crypt_verify_sig = yes\n\n# Section A: Key Management.\n\n# The (default) keyfile for signing/decrypting.  Uncomment the following\n# line and replace the keyid with your own.\nset smime_default_key=\"12345678.0\"\n\n# Uncomment to make mutt ask what key to use when trying to decrypt a message.\n# It will use the default key above (if that was set) else.\n# unset smime_decrypt_use_default_key\n\n# Path to a file or directory with trusted certificates\nset smime_ca_location=\"~/.smime/ca-bundle.crt\"\n\n# Path to where all known certificates go. (must exist!)\nset smime_certificates=\"~/.smime/certificates\"\n\n# Path to where all private keys go. (must exist!)\nset smime_keys=\"~/.smime/keys\"\n\n# These are used to extract a certificate from a message.\n# First generate a PKCS#7 structure from the message.\nset smime_pk7out_command=\"openssl smime -verify -in %f -noverify -pk7out\"\n\n# Extract the included certificate(s) from a PKCS#7 structure.\nset smime_get_cert_command=\"openssl pkcs7 -print_certs -in %f\"\n\n# Extract the signer's certificate only from a S/MIME signature (sender verification)\nset smime_get_signer_cert_command=\"openssl smime -verify -in %f -noverify -signer %c -out /dev/null\"\n\n# This is used to get the email address the certificate was issued to.\nset smime_get_cert_email_command=\"openssl x509 -in %f -noout -email\"\n\n# Add a certificate to the database using smime_keys.\nset smime_import_cert_command=\"smime_keys add_cert %f\"\n\n\n\n# Sction B: Outgoing messages\n\n# Algorithm to use for encryption.\n# valid choices are aes128, aes192, aes256, rc2-40, rc2-64, rc2-128, des, des3\nset smime_encrypt_with=\"aes256\"\n\n# Encrypt a message.  Input file is a MIME entity.\nset smime_encrypt_command=\"openssl smime -encrypt -%a -outform DER -in %f %c\"\n\n# Algorithm for the signature message digest.\n# Valid choices are md5, sha1, sha224, sha256, sha384, sha512.\nset smime_sign_digest_alg=\"sha256\"\n\n# Sign.\nset smime_sign_command=\"openssl smime -sign -md %d -signer %c -inkey %k -passin stdin -in %f -certfile %i -outform DER\"\n\n\n\n#Section C: Incoming messages\n\n# Decrypt a message.  Output is a MIME entity.\nset smime_decrypt_command=\"openssl smime -decrypt -passin stdin -inform DER -in %f -inkey %k -recip %c\"\n\n# Verify a signature of type multipart/signed\nset smime_verify_command=\"openssl smime -verify -inform DER -in %s %C -content %f\"\n\n# Verify a signature of type application/x-pkcs7-mime\nset smime_verify_opaque_command=\"\\\nopenssl smime -verify -inform DER -in %s %C || \\\nopenssl smime -verify -inform DER -in %s -noverify 2>/dev/null\"\n\n\n\n# Section D: Alternatives\n\n# Sign.  If you wish to NOT include the certificate your CA used in signing\n# your public key, use this command instead.\n# set smime_sign_command=\"openssl smime -sign -md %d -signer %c -inkey %k -passin stdin -in %f -outform DER\"\n#\n# In order to verify the signature only and skip checking the certificate chain:\n#\n# set smime_verify_command=\"openssl smime -verify -inform DER -in %s -content %f -noverify\"\n# set smime_verify_opaque_command=\"openssl smime -verify -inform DER -in %s -noverify\"\n#\n"
  },
  {
    "path": "contrib/smime_keys_test.pl",
    "content": "#! /usr/bin/perl -W\n\n# by Mike Schiraldi <raldi@research.netsol.com>\n\nuse strict;\nuse Expect;\n\nsub run ($;$ );\n\numask 077; # probably not necc. but can't hurt\n\nmy $tmpdir = \"/tmp/smime_keys_test-$$-\" . time;\n\nmkdir $tmpdir or die;\nchdir $tmpdir or die;\n\nopen TMP, '>muttrc' or die;\nprint TMP <<EOF;\nset smime_ca_location=\"$tmpdir/ca-bundle.crt\"\nset smime_certificates=\"$tmpdir/certificates\"\nset smime_keys=\"$tmpdir/keys\"\nEOF\nclose TMP;\n\n$ENV{MUTT_CMDLINE} = \"mutt -F $tmpdir/muttrc\";\n\n# make a user key\nrun 'smime_keys init';\nrun 'openssl genrsa -out user.key 1024';\n\n# make a request for this key to be signed\nrun 'openssl req -new -key user.key -out newreq.pem', \"\\n\\nx\\n\\nx\\nx\\nuser\\@smime.mutt\\n\\nx\\n\";\n\nmkdir 'demoCA' or die;\nmkdir 'demoCA/certs' or die;\nmkdir 'demoCA/crl' or die;\nmkdir 'demoCA/newcerts' or die;\nmkdir 'demoCA/private' or die;\nopen OUT, '>demoCA/serial' or die;\nprint OUT \"01\\n\";\nclose OUT;\nopen OUT, '>demoCA/index.txt' or die;\nclose OUT;\n\n# make the CA \nrun 'openssl req -new -x509 -keyout demoCA/private/cakey.pem -out demoCA/cacert.pem -days 7300 -nodes', \n    \"\\n\\nx\\n\\nx\\nx\\n\\n\";\n\n# trust it\nrun 'smime_keys add_root demoCA/cacert.pem', \"root_CA\\n\";\n\n# have the CA process the request\nrun 'openssl ca -batch -startdate 000101000000Z -enddate 200101000000Z -days 7300 ' .\n    '-policy policy_anything -out newcert.pem -infiles newreq.pem';\n\nunlink 'newreq.pem' or die;\n\n# put it all in a .p12 bundle\nrun 'openssl pkcs12 -export -inkey user.key -in newcert.pem -out cert.p12 -CAfile demoCA/cacert.pem -chain', \"pass1\\n\" x 2;\nunlink 'newcert.pem' or die;\nunlink 'demoCA/cacert.pem' or die;\nunlink 'demoCA/index.txt' or die;\nunlink 'demoCA/index.txt.old' or die;\nunlink 'demoCA/serial' or die;\nunlink 'demoCA/serial.old' or die;\nunlink 'demoCA/newcerts/01.pem' or die;\nunlink 'demoCA/private/cakey.pem' or die;\nrmdir  'demoCA/certs' or die;\nrmdir  'demoCA/crl' or die;\nrmdir  'demoCA/private' or die;\nrmdir  'demoCA/newcerts' or die;\nrmdir  'demoCA' or die;\n\n# have smime_keys process it\nrun 'smime_keys add_p12 cert.p12', \"pass1\\n\" . \"pass2\\n\" x 2 . \"old_label\\n\";\nunlink 'cert.p12' or die;\n\n# make sure it showed up\nrun 'smime_keys list > list';\n\nopen IN, 'list' or die;\n<IN> eq \"\\n\" or die;\n<IN> =~ /^(.*)\\: Issued for\\: user\\@smime\\.mutt \\\"old_label\\\" \\(Unverified\\)\\n/ or die;\nclose IN;\n\nmy $keyid = $1;\n\n# see if we can rename it\nrun \"smime_keys label $keyid\", \"new_label\\n\";\n\n# make sure it worked\nrun 'smime_keys list > list';\n\nopen IN, 'list' or die;\n<IN> eq \"\\n\" or die;\n<IN> =~ /^$keyid\\: Issued for\\: user\\@smime\\.mutt \\\"new_label\\\" \\(Unverified\\)\\n/ or die;\nclose IN;\n\nunlink 'list' or die;\n\n# try signing something\nrun \"openssl smime -sign -signer certificates/$keyid -inkey user.key -in /etc/passwd -certfile certificates/37adefc3.0  > signed\";\nunlink 'user.key' or die;\n\n# verify it \nrun 'openssl smime -verify -out /dev/null -in signed -CAfile ca-bundle.crt';\nunlink 'signed' or die;\n\n# clean up\nunlink 'ca-bundle.crt' or die;\nunlink 'muttrc' or die;\nunlink 'keys/.index' or die;\nunlink 'certificates/.index' or die;\nunlink <keys/*> or die;\nunlink <certificates/*> or die;\nrmdir  'keys' or die;\nrmdir  'certificates' or die;\nchdir  '/' or die;\nrmdir  $tmpdir or die;\n\n\nsub run ($;$) {\n    my $cmd = shift or die;\n    my $input = shift;\n    \n    print \"\\n\\nRunning [$cmd]\\n\";\n\n    my $exp = Expect->spawn ($cmd);\n    if (defined $input) {\n        print $exp $input;\n    }\n    $exp->soft_close;\n    $? and die \"$cmd returned $?\";\n}\n"
  },
  {
    "path": "copy.c",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2014 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mailbox.h\"\n#include \"mx.h\"\n#include \"copy.h\"\n#include \"rfc2047.h\"\n#include \"mime.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_idna.h\"\n#include \"mutt_curses.h\"\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#include <string.h>\n#include <stdlib.h>\n#include <ctype.h>\n#include <unistd.h> /* needed for SEEK_SET under SunOS 4.1.4 */\n\nstatic int address_header_decode (char **str);\nstatic int copy_delete_attach (BODY *b, FILE *fpin, FILE *fpout, char *date);\n\n/* Ok, the only reason for not merging this with mutt_copy_header()\n * below is to avoid creating a HEADER structure in message_handler().\n * Also, this one will wrap headers much more aggressively than the other one.\n */\nint\nmutt_copy_hdr (FILE *in, FILE *out, LOFF_T off_start, LOFF_T off_end, int flags,\n\t       const char *prefix)\n{\n  int from = 0;\n  int this_is_from;\n  int ignore = 0;\n  char buf[LONG_STRING]; /* should be long enough to get most fields in one pass */\n  char *nl;\n  LIST *t;\n  char **headers;\n  int hdr_count;\n  int x;\n  char *this_one = NULL;\n  size_t this_one_len = 0;\n  int error;\n\n  if (ftello (in) != off_start)\n    fseeko (in, off_start, 0);\n\n  buf[0] = '\\n';\n  buf[1] = 0;\n\n  if ((flags & (CH_REORDER | CH_WEED | CH_MIME | CH_DECODE | CH_PREFIX | CH_WEED_DELIVERED)) == 0)\n  {\n    /* Without these flags to complicate things\n     * we can do a more efficient line to line copying\n     */\n    while (ftello (in) < off_end)\n    {\n      nl = strchr (buf, '\\n');\n\n      if ((fgets (buf, sizeof (buf), in)) == NULL)\n\tbreak;\n\n      /* Is it the beginning of a header? */\n      if (nl && buf[0] != ' ' && buf[0] != '\\t')\n      {\n\tignore = 1;\n\tif (!from && mutt_strncmp (\"From \", buf, 5) == 0)\n\t{\n\t  if ((flags & CH_FROM) == 0)\n\t    continue;\n\t  from = 1;\n\t}\n\telse if (flags & (CH_NOQFROM) &&\n\t\t\tascii_strncasecmp (\">From \", buf, 6) == 0)\n\t\tcontinue;\n\n\telse if (buf[0] == '\\n' || (buf[0] == '\\r' && buf[1] == '\\n'))\n\t  break; /* end of header */\n\n\tif ((flags & (CH_UPDATE | CH_XMIT | CH_NOSTATUS)) &&\n\t    (ascii_strncasecmp (\"Status:\", buf, 7) == 0 ||\n\t     ascii_strncasecmp (\"X-Status:\", buf, 9) == 0))\n\t  continue;\n\tif ((flags & (CH_UPDATE_LEN | CH_XMIT | CH_NOLEN)) &&\n\t    (ascii_strncasecmp (\"Content-Length:\", buf, 15) == 0 ||\n\t     ascii_strncasecmp (\"Lines:\", buf, 6) == 0))\n\t  continue;\n\tif ((flags & CH_UPDATE_REFS) &&\n\t    ascii_strncasecmp (\"References:\", buf, 11) == 0)\n\t  continue;\n\tif ((flags & CH_UPDATE_IRT) &&\n\t    ascii_strncasecmp (\"In-Reply-To:\", buf, 12) == 0)\n\t  continue;\n\tignore = 0;\n      }\n\n      if (!ignore && fputs (buf, out) == EOF)\n\treturn (-1);\n    }\n    return 0;\n  }\n\n  hdr_count = 1;\n  x = 0;\n  error = FALSE;\n\n  /* We are going to read and collect the headers in an array\n   * so we are able to do re-ordering.\n   * First count the number of entries in the array\n   */\n  if (flags & CH_REORDER)\n  {\n    for (t = HeaderOrderList; t; t = t->next)\n    {\n      dprint(3, (debugfile, \"Reorder list: %s\\n\", t->data));\n      hdr_count++;\n    }\n  }\n\n  dprint (1, (debugfile, \"WEED is %s\\n\", (flags & CH_WEED) ? \"Set\" : \"Not\"));\n\n  headers = safe_calloc (hdr_count, sizeof (char *));\n\n  /* Read all the headers into the array */\n  while (ftello (in) < off_end)\n  {\n    nl = strchr (buf, '\\n');\n\n    /* Read a line */\n    if ((fgets (buf, sizeof (buf), in)) == NULL)\n      break;\n\n    /* Is it the beginning of a header? */\n    if (nl && buf[0] != ' ' && buf[0] != '\\t')\n    {\n      /* Do we have anything pending? */\n      if (this_one)\n      {\n\tif (flags & CH_DECODE) \n\t{\n\t  if (!address_header_decode (&this_one))\n\t    rfc2047_decode (&this_one);\n\t  this_one_len = mutt_strlen (this_one);\n\t}\n\n\tif (!headers[x])\n\t  headers[x] = this_one;\n\telse \n\t{\n\t  int hlen = mutt_strlen (headers[x]);\n\n\t  safe_realloc (&headers[x], hlen + this_one_len + sizeof (char));\n\t  strcat (headers[x] + hlen, this_one); /* __STRCAT_CHECKED__ */\n\t  FREE (&this_one);\n\t}\n\n\tthis_one = NULL;\n      }\n\n      ignore = 1;\n      this_is_from = 0;\n      if (!from && mutt_strncmp (\"From \", buf, 5) == 0)\n      {\n\tif ((flags & CH_FROM) == 0)\n\t  continue;\n\tthis_is_from = from = 1;\n      }\n      else if (buf[0] == '\\n' || (buf[0] == '\\r' && buf[1] == '\\n'))\n\tbreak; /* end of header */\n\n      /* note: CH_FROM takes precedence over header weeding. */\n      if (!((flags & CH_FROM) && (flags & CH_FORCE_FROM) && this_is_from) &&\n\t  (flags & CH_WEED) &&\n\t  mutt_matches_ignore (buf, Ignore) &&\n\t  !mutt_matches_ignore (buf, UnIgnore))\n\tcontinue;\n      if ((flags & CH_WEED_DELIVERED) &&\n\t  ascii_strncasecmp (\"Delivered-To:\", buf, 13) == 0)\n\tcontinue;\n      if ((flags & (CH_UPDATE | CH_XMIT | CH_NOSTATUS)) &&\n\t  (ascii_strncasecmp (\"Status:\", buf, 7) == 0 ||\n\t   ascii_strncasecmp (\"X-Status:\", buf, 9) == 0))\n\tcontinue;\n      if ((flags & (CH_UPDATE_LEN | CH_XMIT | CH_NOLEN)) &&\n\t  (ascii_strncasecmp (\"Content-Length:\", buf, 15) == 0 ||\n\t   ascii_strncasecmp (\"Lines:\", buf, 6) == 0))\n\tcontinue;\n      if ((flags & CH_MIME) &&\n\t  ((ascii_strncasecmp (\"content-\", buf, 8) == 0 &&\n\t    (ascii_strncasecmp (\"transfer-encoding:\", buf + 8, 18) == 0 ||\n\t     ascii_strncasecmp (\"type:\", buf + 8, 5) == 0)) ||\n\t   ascii_strncasecmp (\"mime-version:\", buf, 13) == 0))\n\tcontinue;\n      if ((flags & CH_UPDATE_REFS) &&\n\t  ascii_strncasecmp (\"References:\", buf, 11) == 0)\n\tcontinue;\n      if ((flags & CH_UPDATE_IRT) &&\n\t  ascii_strncasecmp (\"In-Reply-To:\", buf, 12) == 0)\n\tcontinue;\n\n      /* Find x -- the array entry where this header is to be saved */\n      if (flags & CH_REORDER)\n      {\n\tfor (t = HeaderOrderList, x = 0 ; (t) ; t = t->next, x++)\n\t{\n\t  if (!ascii_strncasecmp (buf, t->data, mutt_strlen (t->data)))\n\t  {\n\t    dprint(2, (debugfile, \"Reorder: %s matches %s\\n\", t->data, buf));\n\t    break;\n\t  }\n\t}\n      }\n\n      ignore = 0;\n    } /* If beginning of header */\n\n    if (!ignore)\n    {\n      dprint (2, (debugfile, \"Reorder: x = %d; hdr_count = %d\\n\", x, hdr_count));\n      if (!this_one) {\n\tthis_one = safe_strdup (buf);\n\tthis_one_len = mutt_strlen (this_one);\n      } else {\n\tint blen = mutt_strlen (buf);\n\n\tsafe_realloc (&this_one, this_one_len + blen + sizeof (char));\n\tstrcat (this_one + this_one_len, buf); /* __STRCAT_CHECKED__ */\n\tthis_one_len += blen;\n      }\n    }\n  } /* while (ftello (in) < off_end) */\n\n  /* Do we have anything pending?  -- XXX, same code as in above in the loop. */\n  if (this_one)\n  {\n    if (flags & CH_DECODE) \n    {\n      if (!address_header_decode (&this_one))\n\trfc2047_decode (&this_one);\n      this_one_len = mutt_strlen (this_one);\n    }\n    \n    if (!headers[x])\n      headers[x] = this_one;\n    else \n    {\n      int hlen = mutt_strlen (headers[x]);\n\n      safe_realloc (&headers[x], hlen + this_one_len + sizeof (char));\n      strcat (headers[x] + hlen, this_one); /* __STRCAT_CHECKED__ */\n      FREE (&this_one);\n    }\n\n    this_one = NULL;\n  }\n\n  /* Now output the headers in order */\n  for (x = 0; x < hdr_count; x++)\n  {\n    if (headers[x])\n    {\n#if 0\n      if (flags & CH_DECODE)\n\trfc2047_decode (&headers[x]);\n#endif\n\n      /* We couldn't do the prefixing when reading because RFC 2047\n       * decoding may have concatenated lines.\n       */\n      \n      if (flags & (CH_DECODE|CH_PREFIX))\n      {\n\tif (mutt_write_one_header (out, 0, headers[x], \n\t\t\t\t   flags & CH_PREFIX ? prefix : 0, mutt_term_width (Wrap) - SidebarWidth, flags) == -1)\n\t{\n\t  error = TRUE;\n\t  break;\n\t}\n      }\n      else\n      {      \n\tif (fputs (headers[x], out) == EOF)\n\t{\n\t  error = TRUE;\n\t  break;\n\t}\n      }\n    }\n  }\n\n  /* Free in a separate loop to be sure that all headers are freed\n   * in case of error. */\n  for (x = 0; x < hdr_count; x++)\n    FREE (&headers[x]);\n  FREE (&headers);\n\n  if (error)\n    return (-1);\n  return (0);\n}\n\n/* flags\n \tCH_DECODE\tRFC2047 header decoding\n \tCH_FROM\t\tretain the \"From \" message separator\n        CH_FORCE_FROM\tgive CH_FROM precedence over CH_WEED\n \tCH_MIME\t\tignore MIME fields\n\tCH_NOLEN\tdon't write Content-Length: and Lines:\n \tCH_NONEWLINE\tdon't output a newline after the header\n \tCH_NOSTATUS\tignore the Status: and X-Status:\n \tCH_PREFIX\tquote header with $indent_str\n \tCH_REORDER\toutput header in order specified by `hdr_order'\n  \tCH_TXTPLAIN\tgenerate text/plain MIME headers [hack alert.]\n \tCH_UPDATE\twrite new Status: and X-Status:\n \tCH_UPDATE_LEN\twrite new Content-Length: and Lines:\n \tCH_XMIT\t\tignore Lines: and Content-Length:\n \tCH_WEED\t\tdo header weeding\n\tCH_NOQFROM      ignore \">From \" line\n\tCH_UPDATE_IRT\tupdate the In-Reply-To: header\n\tCH_UPDATE_REFS\tupdate the References: header\n\tCH_VIRTUAL      write virtual header lines too\n\n   prefix\n   \tstring to use if CH_PREFIX is set\n */\n\nint\nmutt_copy_header (FILE *in, HEADER *h, FILE *out, int flags, const char *prefix)\n{\n  char buffer[SHORT_STRING];\n\n  if (h->env)\n    flags |= (h->env->irt_changed ? CH_UPDATE_IRT : 0)\n      | (h->env->refs_changed ? CH_UPDATE_REFS : 0);\n\n  if (mutt_copy_hdr (in, out, h->offset, h->content->offset, flags, prefix) == -1)\n    return -1;\n\n  if (flags & CH_TXTPLAIN)\n  {\n    char chsbuf[SHORT_STRING];\n    fputs (\"MIME-Version: 1.0\\n\", out);\n    fputs (\"Content-Transfer-Encoding: 8bit\\n\", out);\n    fputs (\"Content-Type: text/plain; charset=\", out);\n    mutt_canonical_charset (chsbuf, sizeof (chsbuf), Charset ? Charset : \"us-ascii\");\n    rfc822_cat(buffer, sizeof(buffer), chsbuf, MimeSpecials);\n    fputs(buffer, out);\n    fputc('\\n', out);\n  }\n\n  if ((flags & CH_UPDATE_IRT) && h->env->in_reply_to)\n  {\n    LIST *listp = h->env->in_reply_to;\n    fputs (\"In-Reply-To:\", out);\n    for (; listp; listp = listp->next)\n    {\n      fputc (' ', out);\n      fputs (listp->data, out);\n    }\n    fputc ('\\n', out);\n  }\n\n  if ((flags & CH_UPDATE_REFS) && h->env->references)\n  {\n    fputs (\"References:\", out);\n    mutt_write_references (h->env->references, out, 0);\n    fputc ('\\n', out);\n  }\n\n  if ((flags & CH_UPDATE) && (flags & CH_NOSTATUS) == 0)\n  {\n    if (h->old || h->read)\n    {\n      fputs (\"Status: \", out);\n      if (h->read)\n\tfputs (\"RO\", out);\n      else if (h->old)\n\tfputc ('O', out);\n      fputc ('\\n', out);\n    }\n\n    if (h->flagged || h->replied)\n    {\n      fputs (\"X-Status: \", out);\n      if (h->replied)\n\tfputc ('A', out);\n      if (h->flagged)\n\tfputc ('F', out);\n      fputc ('\\n', out);\n    }\n  }\n\n  if (flags & CH_UPDATE_LEN &&\n      (flags & CH_NOLEN) == 0)\n  {\n    fprintf (out, \"Content-Length: \" OFF_T_FMT \"\\n\", h->content->length);\n    if (h->lines != 0 || h->content->length == 0)\n      fprintf (out, \"Lines: %d\\n\", h->lines);\n  }\n\n#ifdef USE_NOTMUCH\n  if ((flags & CH_VIRTUAL) && nm_header_get_tags(h))\n  {\n    fputs (\"Tags: \", out);\n    fputs (nm_header_get_tags(h), out);\n    fputc ('\\n', out);\n  }\n#endif\n\n  if ((flags & CH_NONEWLINE) == 0)\n  {\n    if (flags & CH_PREFIX)\n      fputs(prefix, out);\n    fputc ('\\n', out); /* add header terminator */\n  }\n\n  if (ferror (out) || feof (out))\n    return -1;\n  \n  return 0;\n}\n\n/* Count the number of lines and bytes to be deleted in this body*/\nstatic int count_delete_lines (FILE *fp, BODY *b, LOFF_T *length, size_t datelen)\n{\n  int dellines = 0;\n  long l;\n  int ch;\n\n  if (b->deleted)\n  {\n    fseeko (fp, b->offset, SEEK_SET);\n    for (l = b->length ; l ; l --)\n    {\n      ch = getc (fp);\n      if (ch == EOF)\n\tbreak;\n      if (ch == '\\n')\n\tdellines ++;\n    }\n    dellines -= 3;\n    *length -= b->length - (84 + datelen);\n    /* Count the number of digits exceeding the first one to write the size */\n    for (l = 10 ; b->length >= l ; l *= 10)\n      (*length) ++;\n  }\n  else\n  {\n    for (b = b->parts ; b ; b = b->next)\n      dellines += count_delete_lines (fp, b, length, datelen);\n  }\n  return dellines;\n}\n\n/* make a copy of a message\n * \n * fpout\twhere to write output\n * fpin\t\twhere to get input\n * hdr\t\theader of message being copied\n * body\t\tstructure of message being copied\n * flags\n * \tM_CM_NOHEADER\tdon't copy header\n * \tM_CM_PREFIX\tquote header and body\n *\tM_CM_DECODE\tdecode message body to text/plain\n *\tM_CM_DISPLAY\tdisplaying output to the user\n *      M_CM_PRINTING   printing the message\n *\tM_CM_UPDATE\tupdate structures in memory after syncing\n *\tM_CM_DECODE_PGP\tused for decoding PGP messages\n *\tM_CM_CHARCONV\tperform character set conversion \n * chflags\tflags to mutt_copy_header()\n */\n\nint\n_mutt_copy_message (FILE *fpout, FILE *fpin, HEADER *hdr, BODY *body,\n\t\t    int flags, int chflags)\n{\n  char prefix[SHORT_STRING];\n  STATE s;\n  LOFF_T new_offset = -1;\n  int rc = 0;\n\n  if (flags & M_CM_PREFIX)\n  {\n    if (option (OPTTEXTFLOWED))\n      strfcpy (prefix, \">\", sizeof (prefix));\n    else\n      _mutt_make_string (prefix, sizeof (prefix), NONULL (Prefix), Context, hdr, 0);\n  }\n\n  if ((flags & M_CM_NOHEADER) == 0)\n  {\n    if (flags & M_CM_PREFIX)\n      chflags |= CH_PREFIX;\n\n    else if (hdr->attach_del && (chflags & CH_UPDATE_LEN))\n    {\n      int new_lines;\n      LOFF_T new_length = body->length;\n      char date[SHORT_STRING];\n\n      mutt_make_date (date, sizeof (date));\n      date[5] = date[mutt_strlen (date) - 1] = '\\\"';\n\n      /* Count the number of lines and bytes to be deleted */\n      fseeko (fpin, body->offset, SEEK_SET);\n      new_lines = hdr->lines -\n\tcount_delete_lines (fpin, body, &new_length, mutt_strlen (date));\n\n      /* Copy the headers */\n      if (mutt_copy_header (fpin, hdr, fpout,\n\t\t\t    chflags | CH_NOLEN | CH_NONEWLINE, NULL))\n\treturn -1;\n      fprintf (fpout, \"Content-Length: \" OFF_T_FMT \"\\n\", new_length);\n      if (new_lines <= 0)\n\tnew_lines = 0;\n      else\n\tfprintf (fpout, \"Lines: %d\\n\", new_lines);\n\n      putc ('\\n', fpout);\n      if (ferror (fpout) || feof (fpout))\n\treturn -1;\n      new_offset = ftello (fpout);\n\n      /* Copy the body */\n      fseeko (fpin, body->offset, SEEK_SET);\n      if (copy_delete_attach (body, fpin, fpout, date))\n\treturn -1;\n\n#ifdef DEBUG\n      {\n\tLOFF_T fail = ((ftello (fpout) - new_offset) - new_length);\n\n\tif (fail)\n\t{\n\t  mutt_error (\"The length calculation was wrong by %ld bytes\", fail);\n\t  new_length += fail;\n\t  mutt_sleep (1);\n\t}\n      }\n#endif\n\n      /* Update original message if we are sync'ing a mailfolder */ \n      if (flags & M_CM_UPDATE)\n      {\n\thdr->attach_del = 0;\n\thdr->lines = new_lines;\n\tbody->offset = new_offset;\n\n\t/* update the total size of the mailbox to reflect this deletion */\n\tContext->size -= body->length - new_length;\n\t/*\n\t * if the message is visible, update the visible size of the mailbox\n\t * as well.\n\t */\n\tif (Context->v2r[hdr->msgno] != -1)\n\t  Context->vsize -= body->length - new_length;\n\n\tbody->length = new_length;\n\tmutt_free_body (&body->parts);\n      }\n\n      return 0;\n    }\n\n    if (mutt_copy_header (fpin, hdr, fpout, chflags,\n\t\t\t  (chflags & CH_PREFIX) ? prefix : NULL) == -1)\n      return -1;\n\n    new_offset = ftello (fpout);\n  }\n\n  if (flags & M_CM_DECODE)\n  {\n    /* now make a text/plain version of the message */\n    memset (&s, 0, sizeof (STATE));\n    s.fpin = fpin;\n    s.fpout = fpout;\n    if (flags & M_CM_PREFIX)\n      s.prefix = prefix;\n    if (flags & M_CM_DISPLAY)\n      s.flags |= M_DISPLAY;\n    if (flags & M_CM_PRINTING)\n      s.flags |= M_PRINTING;\n    if (flags & M_CM_WEED)\n      s.flags |= M_WEED;\n    if (flags & M_CM_CHARCONV)\n      s.flags |= M_CHARCONV;\n    if (flags & M_CM_REPLYING)\n      s.flags |= M_REPLYING;\n    \n    if (WithCrypto && flags & M_CM_VERIFY)\n      s.flags |= M_VERIFY;\n\n    rc = mutt_body_handler (body, &s);\n  }\n  else if (WithCrypto\n           && (flags & M_CM_DECODE_CRYPT) && (hdr->security & ENCRYPT))\n  {\n    BODY *cur = NULL;\n    FILE *fp;\n\n    if ((WithCrypto & APPLICATION_PGP)\n        && (flags & M_CM_DECODE_PGP) && (hdr->security & APPLICATION_PGP) &&\n\thdr->content->type == TYPEMULTIPART)\n    {\n      if (crypt_pgp_decrypt_mime (fpin, &fp, hdr->content, &cur))\n\treturn (-1);\n      fputs (\"MIME-Version: 1.0\\n\", fpout);\n    }\n\n    if ((WithCrypto & APPLICATION_SMIME)\n        && (flags & M_CM_DECODE_SMIME) && (hdr->security & APPLICATION_SMIME)\n\t     && hdr->content->type == TYPEAPPLICATION)\n    {\n      if (crypt_smime_decrypt_mime (fpin, &fp, hdr->content, &cur))\n\treturn (-1);\n    }\n\n    if (!cur)\n    {\n      mutt_error (_(\"No decryption engine available for message\"));\n      return -1;\n    }\n\n    mutt_write_mime_header (cur, fpout);\n    fputc ('\\n', fpout);\n\n    fseeko (fp, cur->offset, 0);\n    if (mutt_copy_bytes (fp, fpout, cur->length) == -1)\n    {\n      safe_fclose (&fp);\n      mutt_free_body (&cur);\n      return (-1);\n    }\n    mutt_free_body (&cur);\n    safe_fclose (&fp);\n  }\n  else\n  {\n    fseeko (fpin, body->offset, 0);\n    if (flags & M_CM_PREFIX)\n    {\n      int c;\n      size_t bytes = body->length;\n      \n      fputs(prefix, fpout);\n      \n      while((c = fgetc(fpin)) != EOF && bytes--)\n      {\n\tfputc(c, fpout);\n\tif(c == '\\n')\n\t{\n\t  fputs(prefix, fpout);\n\t}\n      } \n    }\n    else if (mutt_copy_bytes (fpin, fpout, body->length) == -1)\n      return -1;\n  }\n\n  if ((flags & M_CM_UPDATE) && (flags & M_CM_NOHEADER) == 0 \n      && new_offset != -1)\n  {\n    body->offset = new_offset;\n    mutt_free_body (&body->parts);\n  }\n\n  return rc;\n}\n\n/* should be made to return -1 on fatal errors, and 1 on non-fatal errors\n * like partial decode, where it is worth displaying as much as possible */\nint\nmutt_copy_message (FILE *fpout, CONTEXT *src, HEADER *hdr, int flags,\n\t\t   int chflags)\n{\n  MESSAGE *msg;\n  int r;\n\n  if ((msg = mx_open_message (src, hdr->msgno)) == NULL)\n    return -1;\n  if ((r = _mutt_copy_message (fpout, msg->fp, hdr, hdr->content, flags, chflags)) == 0 \n      && (ferror (fpout) || feof (fpout)))\n  {\n    dprint (1, (debugfile, \"_mutt_copy_message failed to detect EOF!\\n\"));\n    r = -1;\n  }\n  mx_close_message (&msg);\n  return r;\n}\n\n/* appends a copy of the given message to a mailbox\n *\n * dest\t\tdestination mailbox\n * fpin\t\twhere to get input\n * src\t\tsource mailbox\n * hdr\t\tmessage being copied\n * body\t\tstructure of message being copied\n * flags\tmutt_copy_message() flags\n * chflags\tmutt_copy_header() flags\n */\n\nint\n_mutt_append_message (CONTEXT *dest, FILE *fpin, CONTEXT *src, HEADER *hdr,\n\t\t      BODY *body, int flags, int chflags)\n{\n  char buf[STRING];\n  MESSAGE *msg;\n  int r;\n\n  fseeko (fpin, hdr->offset, 0);\n  if (fgets (buf, sizeof (buf), fpin) == NULL)\n    return -1;\n\n  if ((msg = mx_open_new_message (dest, hdr, is_from (buf, NULL, 0, NULL) ? 0 : M_ADD_FROM)) == NULL)\n    return -1;\n  if (dest->magic == M_MBOX || dest->magic == M_MMDF)\n    chflags |= CH_FROM | CH_FORCE_FROM;\n  chflags |= (dest->magic == M_MAILDIR ? CH_NOSTATUS : CH_UPDATE);\n  r = _mutt_copy_message (msg->fp, fpin, hdr, body, flags, chflags);\n  if (mx_commit_message (msg, dest) != 0)\n    r = -1;\n\n#ifdef USE_NOTMUCH\n  if (hdr && msg->commited_path && dest->magic == M_MAILDIR && src->magic == M_NOTMUCH)\n\t  nm_update_filename(src, NULL, msg->commited_path, hdr);\n#endif\n\n  mx_close_message (&msg);\n  return r;\n}\n\nint\nmutt_append_message (CONTEXT *dest, CONTEXT *src, HEADER *hdr, int cmflags,\n\t\t     int chflags)\n{\n  MESSAGE *msg;\n  int r;\n\n  if ((msg = mx_open_message (src, hdr->msgno)) == NULL)\n    return -1;\n  r = _mutt_append_message (dest, msg->fp, src, hdr, hdr->content, cmflags, chflags);\n  mx_close_message (&msg);\n  return r;\n}\n\n/*\n * This function copies a message body, while deleting _in_the_copy_\n * any attachments which are marked for deletion.\n * Nothing is changed in the original message -- this is left to the caller.\n *\n * The function will return 0 on success and -1 on failure.\n */\nstatic int copy_delete_attach (BODY *b, FILE *fpin, FILE *fpout, char *date)\n{\n  BODY *part;\n\n  for (part = b->parts ; part ; part = part->next)\n  {\n    if (part->deleted || part->parts)\n    {\n      /* Copy till start of this part */\n      if (mutt_copy_bytes (fpin, fpout, part->hdr_offset - ftello (fpin)))\n\treturn -1;\n\n      if (part->deleted)\n      {\n\tfprintf (fpout,\n\t\t \"Content-Type: message/external-body; access-type=x-mutt-deleted;\\n\"\n\t\t \"\\texpiration=%s; length=\" OFF_T_FMT \"\\n\"\n\t\t \"\\n\", date + 5, part->length);\n\tif (ferror (fpout))\n\t  return -1;\n\n\t/* Copy the original mime headers */\n\tif (mutt_copy_bytes (fpin, fpout, part->offset - ftello (fpin)))\n\t  return -1;\n\n\t/* Skip the deleted body */\n\tfseeko (fpin, part->offset + part->length, SEEK_SET);\n      }\n      else\n      {\n\tif (copy_delete_attach (part, fpin, fpout, date))\n\t  return -1;\n      }\n    }\n  }\n\n  /* Copy the last parts */\n  if (mutt_copy_bytes (fpin, fpout, b->offset + b->length - ftello (fpin)))\n    return -1;\n\n  return 0;\n}\n\n/* \n * This function is the equivalent of mutt_write_address_list(),\n * but writes to a buffer instead of writing to a stream.\n * mutt_write_address_list could be re-used if we wouldn't store\n * all the decoded headers in a huge array, first. \n *\n * XXX - fix that. \n */\n\nstatic void format_address_header (char **h, ADDRESS *a)\n{\n  char buf[HUGE_STRING];\n  char cbuf[STRING];\n  char c2buf[STRING];\n  char *p = NULL;\n  int l, linelen, buflen, count, cbuflen, c2buflen, plen;\n\n  linelen = mutt_strlen (*h);\n  plen = linelen;\n  buflen  = linelen + 3;\n\n  safe_realloc (h, buflen);\n  for (count = 0; a; a = a->next, count++)\n  {\n    ADDRESS *tmp = a->next;\n    a->next = NULL;\n    *buf = *cbuf = *c2buf = '\\0';\n    l = rfc822_write_address (buf, sizeof (buf), a, 0);\n    a->next = tmp;\n    \n    if (count && linelen + l > 74) \n    {\n      strcpy (cbuf, \"\\n\\t\");  \t/* __STRCPY_CHECKED__ */\n      linelen = l + 8;\n    }\n    else\n    {\n      if (a->mailbox)\n      {\n\tstrcpy (cbuf, \" \");\t/* __STRCPY_CHECKED__ */\n\tlinelen++;\n      }\n      linelen += l;\n    }\n    if (!a->group && a->next && a->next->mailbox)\n    {\n      linelen++;\n      buflen++;\n      strcpy (c2buf, \",\");\t/* __STRCPY_CHECKED__ */\n    }\n\n    cbuflen = mutt_strlen (cbuf);\n    c2buflen = mutt_strlen (c2buf);\n    buflen += l + cbuflen + c2buflen;\n    safe_realloc (h, buflen);\n    p = *h;\n    strcat (p + plen, cbuf);\t\t/* __STRCAT_CHECKED__ */\n    plen += cbuflen;\n    strcat (p + plen, buf);\t\t/* __STRCAT_CHECKED__ */\n    plen += l;\n    strcat (p + plen, c2buf);\t\t/* __STRCAT_CHECKED__ */\n    plen += c2buflen;\n  }\n  \n  /* Space for this was allocated in the beginning of this function. */\n  strcat (p + plen, \"\\n\");\t\t/* __STRCAT_CHECKED__ */\n}\n\nstatic int address_header_decode (char **h)\n{\n  char *s = *h;\n  int l, rp = 0;\n\n  ADDRESS *a = NULL;\n  ADDRESS *cur = NULL;\n\n  switch (tolower ((unsigned char) *s))\n  {\n    case 'r': \n    {\n      if (ascii_strncasecmp (s, \"return-path:\", 12) == 0)\n      {\n\tl = 12;\n\trp = 1;\n\tbreak;\n      }\n      else if (ascii_strncasecmp (s, \"reply-to:\", 9) == 0)\n      {\n\tl = 9;\n\tbreak;\n      }\n      return 0;\n    }\n    case 'f': \n    {\n      if (ascii_strncasecmp (s, \"from:\", 5)) \n\treturn 0; \n      l = 5;\n      break;\n    }\n    case 'c':\n    {\n      if (ascii_strncasecmp (s, \"cc:\", 3))\n\treturn 0;\n      l = 3;\n      break;\n      \n    }\n    case 'b':\n    {\n      if (ascii_strncasecmp (s, \"bcc:\", 4))\n\treturn 0;\n      l = 4;\n      break;\n    }\n    case 's':\n    {\n      if (ascii_strncasecmp (s, \"sender:\", 7))\n\treturn 0;\n      l = 7;\n      break;\n    }\n    case 't':\n    {\n      if (ascii_strncasecmp (s, \"to:\", 3))\n\treturn 0;\n      l = 3;\n      break;\n    }\n    case 'm':\n    {\n      if (ascii_strncasecmp (s, \"mail-followup-to:\", 17))\n\treturn 0;\n      l = 17;\n      break;\n    }\n    default: return 0;    \n  }\n\n  if ((a = rfc822_parse_adrlist (a, s + l)) == NULL)\n    return 0;\n  \n  mutt_addrlist_to_local (a);\n  rfc2047_decode_adrlist (a);\n  for (cur = a; cur; cur = cur->next)\n    if (cur->personal)\n      rfc822_dequote_comment (cur->personal);\n\n  /* angle brackets for return path are mandated by RfC5322,\n   * so leave Return-Path as-is */\n  if (rp)\n    *h = safe_strdup (s);\n  else\n  {\n    *h = safe_calloc (1, l + 2);\n    strfcpy (*h, s, l + 1);\n    format_address_header (h, a);\n  }\n\n  rfc822_free_address (&a);\n\n  FREE (&s);\n  return 1;\n}\n"
  },
  {
    "path": "copy.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* flags to _mutt_copy_message */\n#define M_CM_NOHEADER\t1\t/* don't copy the message header */\n#define M_CM_PREFIX\t(1<<1)\t/* quote the message */\n#define M_CM_DECODE\t(1<<2)\t/* decode the message body into text/plain */\n#define M_CM_DISPLAY\t(1<<3)\t/* output is displayed to the user */\n#define M_CM_UPDATE\t(1<<4)  /* update structs on sync */\n#define M_CM_WEED\t(1<<5)  /* weed message/rfc822 attachment headers */\n#define M_CM_CHARCONV\t(1<<6)  /* perform character set conversions */\n#define M_CM_PRINTING\t(1<<7)\t/* printing the message - display light */\n#define M_CM_REPLYING\t(1<<8)\t/* replying the message */\n\n#define M_CM_DECODE_PGP\t  (1<<9) /* used for decoding PGP messages */\n#define M_CM_DECODE_SMIME (1<<10) /* used for decoding S/MIME messages */\n#define M_CM_DECODE_CRYPT  (M_CM_DECODE_PGP | M_CM_DECODE_SMIME)\n\n#define M_CM_VERIFY\t(1<<11)\t/* do signature verification */\n\n/* flags for mutt_copy_header() */\n#define CH_UPDATE         1       /* update the status and x-status fields? */\n#define CH_WEED           (1<<1)  /* weed the headers? */\n#define CH_DECODE         (1<<2)  /* do RFC1522 decoding? */\n#define CH_XMIT           (1<<3)  /* transmitting this message? */\n#define CH_FROM           (1<<4)  /* retain the \"From \" message separator? */\n#define CH_PREFIX         (1<<5)  /* use Prefix string? */\n#define CH_NOSTATUS       (1<<6)  /* suppress the status and x-status fields */\n#define CH_REORDER        (1<<7)  /* Re-order output of headers */\n#define CH_NONEWLINE      (1<<8)  /* don't output terminating newline */\n#define CH_MIME           (1<<9)  /* ignore MIME fields */\n#define CH_UPDATE_LEN     (1<<10) /* update Lines: and Content-Length: */\n#define CH_TXTPLAIN       (1<<11) /* generate text/plain MIME headers */\n#define CH_NOLEN          (1<<12) /* don't write Content-Length: and Lines: */\n#define CH_WEED_DELIVERED (1<<13) /* weed eventual Delivered-To headers */\n#define CH_FORCE_FROM     (1<<14) /* give CH_FROM precedence over CH_WEED? */\n#define CH_NOQFROM        (1<<15) /* ignore \">From \" line */\n#define CH_UPDATE_IRT     (1<<16) /* update In-Reply-To: */\n#define CH_UPDATE_REFS    (1<<17) /* update References: */\n#define CH_DISPLAY        (1<<18) /* display result to user */\n#define CH_VIRTUAL\t  (1<<19) /* write virtual header lines too */\n\n\nint mutt_copy_hdr (FILE *, FILE *, LOFF_T, LOFF_T, int, const char *);\n\nint mutt_copy_header (FILE *, HEADER *, FILE *, int, const char *);\n\nint _mutt_copy_message (FILE *fpout,\n\t\t\tFILE *fpin,\n\t\t\tHEADER *hdr,\n\t\t\tBODY *body,\n\t\t\tint flags,\n\t\t\tint chflags);\n\nint mutt_copy_message (FILE *fpout,\n\t\t       CONTEXT *src,\n\t\t       HEADER *hdr,\n\t\t       int flags,\n\t\t       int chflags);\n\nint _mutt_append_message (CONTEXT *dest,\n\t\t\t  FILE *fpin,\n\t\t\t  CONTEXT *src,\n\t\t\t  HEADER *hdr,\n\t\t\t  BODY *body,\n\t\t\t  int flags,\n\t\t\t  int chflags);\n\nint mutt_append_message (CONTEXT *dest,\n\t\t\t CONTEXT *src,\n\t\t\t HEADER *hdr,\n\t\t\t int cmflags,\n\t\t\t int chflags);\n"
  },
  {
    "path": "crypt-gpgme.c",
    "content": "/* crypt-gpgme.c - GPGME based crypto operations\n * Copyright (C) 1996-1997,2007 Michael R. Elkins <me@cs.hmc.edu>\n * Copyright (C) 1998-2000 Thomas Roessler <roessler@does-not-exist.org>\n * Copyright (C) 2001 Thomas Roessler <roessler@does-not-exist.org>\n *                     Oliver Ehli <elmy@acm.org>\n * Copyright (C) 2002-2004 g10 Code GmbH\n * Copyright (C) 2010,2012-2013 Michael R. Elkins <me@sigpipe.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#ifdef CRYPT_BACKEND_GPGME\n\n#include \"mutt.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_curses.h\"\n#include \"mime.h\"\n#include \"copy.h\"\n#include \"pager.h\"\n#include \"sort.h\"\n\n#include <sys/wait.h>\n#include <string.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/stat.h>\n#include <errno.h>\n#include <ctype.h>\n\n#include <gpgme.h>\n\n#ifdef HAVE_LOCALE_H\n#include <locale.h>\n#endif\n#ifdef HAVE_LANGINFO_D_T_FMT\n#include <langinfo.h>\n#endif\n\n#ifdef HAVE_SYS_TIME_H\n# include <sys/time.h>\n#endif\n\n#ifdef HAVE_SYS_RESOURCE_H\n# include <sys/resource.h>\n#endif\n\n/*\n * Helper macros.\n */\n#define digitp(p)   (*(p) >= '0' && *(p) <= '9')\n#define hexdigitp(a) (digitp (a)                     \\\n                      || (*(a) >= 'A' && *(a) <= 'F')  \\\n                      || (*(a) >= 'a' && *(a) <= 'f'))\n#define xtoi_1(p)   (*(p) <= '9'? (*(p)- '0'): \\\n                     *(p) <= 'F'? (*(p)-'A'+10):(*(p)-'a'+10))\n#define xtoi_2(p)   ((xtoi_1(p) * 16) + xtoi_1((p)+1))\n\n#define PKA_NOTATION_NAME \"pka-address@gnupg.org\"\n#define is_pka_notation(notation) ((notation)->name && \\\n\t\t\t\t    ! strcmp ((notation)->name, \\\n\t\t\t\t\t     PKA_NOTATION_NAME))\n\n/* Values used for comparing addresses. */\n#define CRYPT_KV_VALID    1\n#define CRYPT_KV_ADDR     2\n#define CRYPT_KV_STRING   4\n#define CRYPT_KV_STRONGID 8\n#define CRYPT_KV_MATCH (CRYPT_KV_ADDR|CRYPT_KV_STRING)\n\n/*\n * Type definitions.\n */\n\nstruct crypt_cache\n{\n  char *what;\n  char *dflt;\n  struct crypt_cache *next;\n};\n\nstruct dn_array_s\n{\n  char *key;\n  char *value;\n};\n\n/* We work based on user IDs, getting from a user ID to the key is\n   check and does not need any memory (gpgme uses reference counting). */\ntypedef struct crypt_keyinfo\n{\n  struct crypt_keyinfo *next;\n  gpgme_key_t kobj;\n  int idx;             /* and the user ID at this index */\n  const char *uid;     /* and for convenience point to this user ID */\n  unsigned int flags;  /* global and per uid flags (for convenience)*/\n  gpgme_validity_t validity;  /* uid validity (cached for convenience) */\n} crypt_key_t;\n\ntypedef struct crypt_entry\n{\n  size_t num;\n  crypt_key_t *key;\n} crypt_entry_t;\n\n\nstatic struct crypt_cache *id_defaults = NULL;\nstatic gpgme_key_t signature_key = NULL;\nstatic char *current_sender = NULL;\n\n\n/*\n * General helper functions.\n */\n\n/* return true when s points to a digit or letter. */\nstatic int\ndigit_or_letter (const unsigned char *s)\n{\n  return ( (*s >= '0' && *s < '9')\n           || (*s >= 'A' && *s <= 'Z')\n           || (*s >= 'a' && *s <= 'z'));\n}\n\n\n/* Print the utf-8 encoded string BUF of length LEN bytes to stream\n   FP. Convert the character set. */\nstatic void\nprint_utf8 (FILE *fp, const char *buf, size_t len)\n{\n  char *tstr;\n\n  tstr = safe_malloc (len+1);\n  memcpy (tstr, buf, len);\n  tstr[len] = 0;\n\n  /* fromcode \"utf-8\" is sure, so we don't want\n   * charset-hook corrections: flags must be 0.\n   */\n  mutt_convert_string (&tstr, \"utf-8\", Charset, 0);\n  fputs (tstr, fp);\n  FREE (&tstr);\n}\n\n\n/*\n * Key management.\n */\n\n/* Return the keyID for the key K.  Note that this string is valid as\n   long as K is valid */\nstatic const char *crypt_keyid (crypt_key_t *k)\n{\n  const char *s = \"????????\";\n\n  if (k->kobj && k->kobj->subkeys)\n    {\n      s = k->kobj->subkeys->keyid;\n      if ((! option (OPTPGPLONGIDS)) && (strlen (s) == 16))\n\t/* Return only the short keyID.  */\n\ts += 8;\n    }\n\n  return s;\n}\n\n/* Return the long keyID for the key K. */\nstatic const char *crypt_long_keyid (crypt_key_t *k)\n{\n  const char *s = \"????????????????\";\n\n  if (k->kobj && k->kobj->subkeys)\n    {\n      s = k->kobj->subkeys->keyid;\n    }\n\n  return s;\n}\n\n/* Return the short keyID for the key K. */\nstatic const char *crypt_short_keyid (crypt_key_t *k)\n{\n  const char *s = \"????????\";\n\n  if (k->kobj && k->kobj->subkeys)\n    {\n      s = k->kobj->subkeys->keyid;\n      if (strlen (s) == 16)\n        s += 8;\n    }\n\n  return s;\n}\n\n/* Return the hexstring fingerprint from the key K. */\nstatic const char *crypt_fpr (crypt_key_t *k)\n{\n  const char *s = \"\";\n\n  if (k->kobj && k->kobj->subkeys)\n    s = k->kobj->subkeys->fpr;\n\n  return s;\n}\n\n/* Returns the fingerprint if available, otherwise\n * returns the long keyid.\n */\nstatic const char *crypt_fpr_or_lkeyid(crypt_key_t *k)\n{\n  const char *s = \"????????????????\";\n\n  if (k->kobj && k->kobj->subkeys)\n  {\n    if (k->kobj->subkeys->fpr)\n      s = k->kobj->subkeys->fpr;\n    else\n      s = k->kobj->subkeys->keyid;\n  }\n\n  return s;\n}\n\n/* Parse FLAGS and return a statically allocated(!) string with them. */\nstatic char *crypt_key_abilities (int flags)\n{\n  static char buff[3];\n\n  if (!(flags & KEYFLAG_CANENCRYPT))\n    buff[0] = '-';\n  else if (flags & KEYFLAG_PREFER_SIGNING)\n    buff[0] = '.';\n  else\n    buff[0] = 'e';\n\n  if (!(flags & KEYFLAG_CANSIGN))\n    buff[1] = '-';\n  else if (flags & KEYFLAG_PREFER_ENCRYPTION)\n    buff[1] = '.';\n  else\n    buff[1] = 's';\n\n  buff[2] = '\\0';\n\n  return buff;\n}\n\n/* Parse FLAGS and return a character describing the most important flag. */\nstatic char crypt_flags (int flags)\n{\n  if (flags & KEYFLAG_REVOKED)\n    return 'R';\n  else if (flags & KEYFLAG_EXPIRED)\n    return 'X';\n  else if (flags & KEYFLAG_DISABLED)\n    return 'd';\n  else if (flags & KEYFLAG_CRITICAL)\n    return 'c';\n  else \n    return ' ';\n}\n\n/* Return a copy of KEY. */\nstatic crypt_key_t *crypt_copy_key (crypt_key_t *key)\n{\n  crypt_key_t *k;\n\n  k = safe_calloc (1, sizeof *k);\n  k->kobj = key->kobj;\n  gpgme_key_ref (key->kobj);\n  k->idx = key->idx;\n  k->uid = key->uid;\n  k->flags = key->flags;\n  k->validity = key->validity;\n\n  return k;\n}\n\n/* Release all the keys at the address of KEYLIST and set the address\n   to NULL. */\nstatic void crypt_free_key (crypt_key_t **keylist)\n{\n  crypt_key_t *k;\n\n  if (!keylist)\n    return;\n\n  while (*keylist)\n  {\n    k = *keylist;\n    *keylist = (*keylist)->next;\n\n    gpgme_key_unref (k->kobj);\n    FREE (&k);\n  }\n}\n\n/* Return trute when key K is valid. */\nstatic int crypt_key_is_valid (crypt_key_t *k)\n{\n  if (k->flags & KEYFLAG_CANTUSE)\n    return 0;\n  return 1;\n}\n\n/* Return true whe validity of KEY is sufficient. */\nstatic int crypt_id_is_strong (crypt_key_t *key)\n{\n  unsigned int is_strong = 0;\n\n  if ((key->flags & KEYFLAG_ISX509))\n    return 1;\n\n  switch (key->validity)\n    {\n    case GPGME_VALIDITY_UNKNOWN:\n    case GPGME_VALIDITY_UNDEFINED:\n    case GPGME_VALIDITY_NEVER:\n    case GPGME_VALIDITY_MARGINAL:\n      is_strong = 0;\n      break;\n\n    case GPGME_VALIDITY_FULL:\n    case GPGME_VALIDITY_ULTIMATE:\n      is_strong = 1;\n      break;\n    }\n\n  return is_strong;\n}\n\n/* Return true when the KEY is valid, i.e. not marked as unusable. */\nstatic int crypt_id_is_valid (crypt_key_t *key)\n{\n  return ! (key->flags & KEYFLAG_CANTUSE);\n}\n\n/* Return a bit vector describing how well the addresses ADDR and\n   U_ADDR match and whether KEY is valid. */\nstatic int crypt_id_matches_addr (ADDRESS *addr, ADDRESS *u_addr,\n                                  crypt_key_t *key)\n{\n  int rv = 0;\n  \n  if (crypt_id_is_valid (key))\n    rv |= CRYPT_KV_VALID;\n\n  if (crypt_id_is_strong (key))\n    rv |= CRYPT_KV_STRONGID;\n  \n  if (addr->mailbox && u_addr->mailbox\n      && mutt_strcasecmp (addr->mailbox, u_addr->mailbox) == 0)\n    rv |= CRYPT_KV_ADDR;\n    \n  if (addr->personal && u_addr->personal\n      && mutt_strcasecmp (addr->personal, u_addr->personal) == 0)\n    rv |= CRYPT_KV_STRING;\n  \n  return rv;\n}\n\n\n/*\n * GPGME convenient functions.\n */\n\n/* Create a new gpgme context and return it.  With FOR_SMIME set to\n   true, the protocol of the context is set to CMS. */\nstatic gpgme_ctx_t create_gpgme_context (int for_smime)\n{\n  gpgme_error_t err;\n  gpgme_ctx_t ctx;\n\n  err = gpgme_new (&ctx);\n  if (err)\n    {\n      mutt_error (_(\"error creating gpgme context: %s\\n\"), gpgme_strerror (err));\n      sleep (2);\n      mutt_exit (1);\n    }\n\n  if (for_smime)\n    {\n      err = gpgme_set_protocol (ctx, GPGME_PROTOCOL_CMS);\n      if (err)\n        {\n          mutt_error (_(\"error enabling CMS protocol: %s\\n\"),\n                      gpgme_strerror (err));\n          sleep (2);\n          mutt_exit (1);\n        }\n    }\n\n  return ctx;\n}\n\n/* Create a new gpgme data object.  This is a wrapper to die on\n   error. */\nstatic gpgme_data_t create_gpgme_data (void)\n{\n  gpgme_error_t err;\n  gpgme_data_t data;\n\n  err = gpgme_data_new (&data);\n  if (err) \n    {\n      mutt_error (_(\"error creating gpgme data object: %s\\n\"),\n                  gpgme_strerror (err));\n      sleep (2);\n      mutt_exit (1);\n    }\n  return data;\n}\n\n/* Create a new GPGME Data object from the mail body A.  With CONVERT\n   passed as true, the lines are converted to CR,LF if required.\n   Return NULL on error or the gpgme_data_t object on success. */\nstatic gpgme_data_t body_to_data_object (BODY *a, int convert)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  FILE *fptmp;\n  int err = 0;\n  gpgme_data_t data;\n  \n  mutt_mktemp (tempfile, sizeof (tempfile));\n  fptmp = safe_fopen (tempfile, \"w+\");\n  if (!fptmp)\n    {\n      mutt_perror (tempfile);\n      return NULL;\n    }\n\n  mutt_write_mime_header (a, fptmp);\n  fputc ('\\n', fptmp);\n  mutt_write_mime_body (a, fptmp);\n\n  if (convert)\n    {\n      int c, hadcr = 0;\n      unsigned char buf[1];\n\n      data = create_gpgme_data ();\n      rewind (fptmp);\n      while ((c = fgetc (fptmp)) != EOF)\n        {\n          if  (c == '\\r')\n            hadcr = 1;\n          else \n            {\n              if (c == '\\n' && !hadcr)\n                {\n                  buf[0] = '\\r';\n                  gpgme_data_write (data, buf, 1);\n                }\n                  \n              hadcr = 0;\n            }\n          /* FIXME: This is quite suboptimal */\n          buf[0] = c;\n          gpgme_data_write (data, buf, 1);\n        }\n      safe_fclose (&fptmp);\n      gpgme_data_seek (data, 0, SEEK_SET);\n    }\n  else\n    {\n      safe_fclose (&fptmp);\n      err = gpgme_data_new_from_file (&data, tempfile, 1);\n    }\n  unlink (tempfile);\n  if (err) \n    {\n      mutt_error (_(\"error allocating data object: %s\\n\"), gpgme_strerror (err));\n      return NULL;\n    }\n\n  return data;\n}\n\n/* Create a GPGME data object from the stream FP but limit the object\n   to LENGTH bytes starting at OFFSET bytes from the beginning of the\n   file. */\nstatic gpgme_data_t file_to_data_object (FILE *fp, long offset, long length)\n{\n  int err = 0;\n  gpgme_data_t data;\n  \n  err = gpgme_data_new_from_filepart (&data, NULL, fp, offset, length);\n  if (err) \n    {\n      mutt_error (_(\"error allocating data object: %s\\n\"), gpgme_strerror (err));\n      return NULL;\n    }\n\n  return data;\n}\n\n/* Write a GPGME data object to the stream FP. */\nstatic int data_object_to_stream (gpgme_data_t data, FILE *fp)\n{\n  int err;\n  char buf[4096], *p;\n  ssize_t nread;\n\n  err = ((gpgme_data_seek (data, 0, SEEK_SET) == -1)\n         ? gpgme_error_from_errno (errno) : 0);\n  if (err)\n    {\n      mutt_error (_(\"error rewinding data object: %s\\n\"), gpgme_strerror (err));\n      return -1;\n    }\n\n  while ((nread = gpgme_data_read (data, buf, sizeof (buf))))\n    {\n      /* fixme: we are not really converting CRLF to LF but just\n         skipping CR. Doing it correctly needs a more complex logic */\n      for (p=buf; nread; p++, nread--)\n        {\n          if (*p != '\\r')\n            putc (*p, fp);\n        }\n\n     if (ferror (fp))\n       {\n         mutt_perror (\"[tempfile]\");\n         return -1;\n       }\n    }\n  if (nread == -1)\n    {\n      mutt_error (_(\"error reading data object: %s\\n\"), strerror (errno));\n      return -1;\n    }\n  return 0;\n}\n\n/* Copy a data object to a temporary file.\n * The tempfile name may be optionally passed in.\n * If ret_fp is passed in, the file will be rewound, left open, and returned\n * via that parameter.\n * The tempfile name is returned, and must be freed.\n */\nstatic char *data_object_to_tempfile (gpgme_data_t data, char *tempf, FILE **ret_fp)\n{\n  int err;\n  char tempfb[_POSIX_PATH_MAX];\n  FILE *fp;\n  size_t nread = 0;\n\n  if (!tempf)\n    {\n      mutt_mktemp (tempfb, sizeof (tempfb));\n      tempf = tempfb;\n    }\n  if ((fp = safe_fopen (tempf, tempf == tempfb ? \"w+\" : \"a+\")) == NULL)\n    {\n      mutt_perror _(\"Can't create temporary file\");\n      return NULL;\n    }\n\n  err = ((gpgme_data_seek (data, 0, SEEK_SET) == -1)\n         ? gpgme_error_from_errno (errno) : 0);\n  if (!err)\n    {\n      char buf[4096];\n\n      while ((nread = gpgme_data_read (data, buf, sizeof (buf))))\n        {\n          if (fwrite (buf, nread, 1, fp) != 1)\n            {\n              mutt_perror (tempf);\n              safe_fclose (&fp);\n              unlink (tempf);\n              return NULL;\n            }\n        }\n    }\n  if (ret_fp)\n    rewind (fp);\n  else\n    safe_fclose (&fp);\n  if (nread == -1)\n    {\n      mutt_error (_(\"error reading data object: %s\\n\"), gpgme_strerror (err));\n      unlink (tempf);\n      safe_fclose (&fp);\n      return NULL;\n    }\n  if (ret_fp)\n    *ret_fp = fp;\n  return safe_strdup (tempf);\n}\n\n\nstatic void free_recipient_set (gpgme_key_t **p_rset)\n{\n  gpgme_key_t *rset, k;\n\n  if (!p_rset)\n    return;\n\n  rset = *p_rset;\n  if (!rset)\n    return;\n\n  while (*rset)\n  {\n    k = *rset;\n    gpgme_key_unref (k);\n    rset++;\n  }\n\n  FREE (p_rset);\t/* __FREE_CHECKED__ */\n}\n\n\n/* Create a GpgmeRecipientSet from the keys in the string KEYLIST.\n   The keys must be space delimited. */\nstatic gpgme_key_t *create_recipient_set (const char *keylist,\n                                          gpgme_protocol_t protocol)\n{\n  int err;\n  const char *s;\n  char buf[100];\n  int i;\n  gpgme_key_t *rset = NULL;\n  unsigned int rset_n = 0;\n  gpgme_key_t key = NULL;\n  gpgme_ctx_t context = NULL;\n\n  err = gpgme_new (&context);\n  if (! err)\n    err = gpgme_set_protocol (context, protocol);\n\n  if (! err)\n    {\n      s = keylist;\n      do {\n\twhile (*s == ' ')\n\t  s++;\n\tfor (i=0; *s && *s != ' ' && i < sizeof(buf)-1;)\n\t  buf[i++] = *s++;\n\tbuf[i] = 0;\n\tif (*buf)\n\t  {\n\t    if (i>1 && buf[i-1] == '!') \n\t      {\n\t\t/* The user selected to override the validity of that\n\t\t   key. */\n\t\tbuf[i-1] = 0;\n\t    \n\t\terr = gpgme_get_key (context, buf, &key, 0);\n\t\tif (! err)\n\t\t  key->uids->validity = GPGME_VALIDITY_FULL;\n\t\tbuf[i-1] = '!';\n\t      }\n\t    else\n\t      err = gpgme_get_key (context, buf, &key, 0);\n\n\t    if (! err)\n\t      {\n\t\tsafe_realloc (&rset, sizeof (*rset) * (rset_n + 1));\n\t\trset[rset_n++] = key;\n\t      }\n\t    else\n\t      {\n\t\tmutt_error (_(\"error adding recipient `%s': %s\\n\"),\n\t\t\t    buf, gpgme_strerror (err));\n\t\trset[rset_n] = NULL;\n\t\tfree_recipient_set (&rset);\n\t\tgpgme_release (context);\n\t\treturn NULL;\n\t      }\n\t  }\n      } while (*s);\n    }\n\n  /* NULL terminate.  */\n  safe_realloc (&rset, sizeof (*rset) * (rset_n + 1));\n  rset[rset_n++] = NULL;\n  \n  if (context)\n    gpgme_release (context);\n\n  return rset;\n}\n\n\n/* Make sure that the correct signer is set. Returns 0 on success. */\nstatic int set_signer (gpgme_ctx_t ctx, int for_smime)\n{\n  char *signid = for_smime ? SmimeDefaultKey: PgpSignAs;\n  gpgme_error_t err;\n  gpgme_ctx_t listctx;\n  gpgme_key_t key, key2;\n\n  if (!signid || !*signid)\n    return 0;\n\n  listctx = create_gpgme_context (for_smime);\n  err = gpgme_op_keylist_start (listctx, signid, 1);\n  if (!err)\n    err = gpgme_op_keylist_next (listctx, &key);\n  if (err)\n    {\n      gpgme_release (listctx);\n      mutt_error (_(\"secret key `%s' not found: %s\\n\"),\n                  signid, gpgme_strerror (err));\n      return -1;\n    }\n  err = gpgme_op_keylist_next (listctx, &key2);\n  if (!err)\n    {\n      gpgme_key_unref (key);\n      gpgme_key_unref (key2);\n      gpgme_release (listctx);\n      mutt_error (_(\"ambiguous specification of secret key `%s'\\n\"),\n                  signid);\n      return -1;\n    }\n  gpgme_op_keylist_end (listctx);\n  gpgme_release (listctx);\n\n  gpgme_signers_clear (ctx);\n  err = gpgme_signers_add (ctx, key);\n  gpgme_key_unref (key);\n  if (err)\n    {\n      mutt_error (_(\"error setting secret key `%s': %s\\n\"),\n                  signid, gpgme_strerror (err));\n      return -1;\n    }\n  return 0;\n}\n\nstatic gpgme_error_t\nset_pka_sig_notation (gpgme_ctx_t ctx)\n{\n  gpgme_error_t err;\n\n  err = gpgme_sig_notation_add (ctx,\n\t\t\t\tPKA_NOTATION_NAME, current_sender, 0);\n\n  if (err)\n    {\n      mutt_error (_(\"error setting PKA signature notation: %s\\n\"),\n\t\t  gpgme_strerror (err));\n      mutt_sleep (2);\n    }\n\n  return err;\n}\n\n/* Encrypt the gpgme data object PLAINTEXT to the recipients in RSET\n   and return an allocated filename to a temporary file containing the\n   enciphered text.  With USE_SMIME set to true, the smime backend is\n   used.  With COMBINED_SIGNED a PGP message is signed and\n   encrypted.  Returns NULL in case of error */\nstatic char *encrypt_gpgme_object (gpgme_data_t plaintext, gpgme_key_t *rset,\n                                   int use_smime, int combined_signed)\n{\n  gpgme_error_t err;\n  gpgme_ctx_t ctx;\n  gpgme_data_t ciphertext;\n  char *outfile;\n\n  ctx = create_gpgme_context (use_smime);\n  if (!use_smime) \n      gpgme_set_armor (ctx, 1);\n\n  ciphertext = create_gpgme_data ();\n\n  if (combined_signed)\n    {\n      if (set_signer (ctx, use_smime))\n        {\n          gpgme_data_release (ciphertext);\n          gpgme_release (ctx);\n          return NULL;\n        }\n\n      if (option (OPTCRYPTUSEPKA))\n\t{\n\t  err = set_pka_sig_notation (ctx);\n\t  if (err)\n\t    {\n\t      gpgme_data_release (ciphertext);\n\t      gpgme_release (ctx);\n\t      return NULL;\n\t    }\n\t}\n\n      err = gpgme_op_encrypt_sign (ctx, rset, GPGME_ENCRYPT_ALWAYS_TRUST,\n                                   plaintext, ciphertext);\n    }\n  else\n    err = gpgme_op_encrypt (ctx, rset, GPGME_ENCRYPT_ALWAYS_TRUST,\n                            plaintext, ciphertext);\n  mutt_need_hard_redraw ();\n  if (err)\n    {\n      mutt_error (_(\"error encrypting data: %s\\n\"), gpgme_strerror (err));\n      gpgme_data_release (ciphertext);\n      gpgme_release (ctx);\n      return NULL;\n    }\n\n  gpgme_release (ctx);\n\n  outfile = data_object_to_tempfile (ciphertext, NULL, NULL);\n  gpgme_data_release (ciphertext);\n  return outfile;\n}\n\n/* Find the \"micalg\" parameter from the last Gpgme operation on\n   context CTX.  It is expected that this operation was a sign\n   operation.  Return the algorithm name as a C string in buffer BUF\n   which must have been allocated by the caller with size BUFLEN.\n   Returns 0 on success or -1 in case of an error.  The return string\n   is truncted to BUFLEN - 1. */\nstatic int get_micalg (gpgme_ctx_t ctx, int use_smime, char *buf, size_t buflen)\n{\n  gpgme_sign_result_t result = NULL;\n  const char *algorithm_name = NULL;\n\n  if (buflen < 5)\n    return -1;\n\n  *buf = 0;\n  result = gpgme_op_sign_result (ctx);\n  if (result && result->signatures)\n  {\n    algorithm_name = gpgme_hash_algo_name (result->signatures->hash_algo);\n    if (algorithm_name)\n    {\n      if (use_smime)\n      {\n        /* convert GPGME raw hash name to RFC 2633 format */\n        snprintf (buf, buflen, \"%s\", algorithm_name);\n        ascii_strlower (buf);\n      } else {\n        /* convert GPGME raw hash name to RFC 3156 format */\n        snprintf (buf, buflen, \"pgp-%s\", algorithm_name);\n        ascii_strlower (buf + 4);\n      }\n    }\n  }\n\n  return *buf? 0:-1;\n}\n\nstatic void print_time(time_t t, STATE *s)\n{\n  char p[STRING];\n\n  setlocale (LC_TIME, \"\");\n#ifdef HAVE_LANGINFO_D_T_FMT\n  strftime (p, sizeof (p), nl_langinfo (D_T_FMT), localtime (&t));\n#else\n  strftime (p, sizeof (p), \"%c\", localtime (&t));\n#endif\n  setlocale (LC_TIME, \"C\");\n  state_attach_puts (p, s);\n}\n\n/* \n * Implementation of `sign_message'.\n */\n\n/* Sign the MESSAGE in body A either using OpenPGP or S/MIME when\n   USE_SMIME is passed as true.  Returns the new body or NULL on\n   error. */\nstatic BODY *sign_message (BODY *a, int use_smime)\n{\n  BODY *t;\n  char *sigfile;\n  int err = 0;\n  char buf[100];\n  gpgme_ctx_t ctx;\n  gpgme_data_t message, signature;\n  gpgme_sign_result_t sigres;\n\n  convert_to_7bit (a); /* Signed data _must_ be in 7-bit format. */\n\n  message = body_to_data_object (a, 1);\n  if (!message)\n     return NULL;\n  signature = create_gpgme_data ();\n\n  ctx = create_gpgme_context (use_smime);\n  if (!use_smime)\n    gpgme_set_armor (ctx, 1);\n\n  if (set_signer (ctx, use_smime))\n    {\n      gpgme_data_release (signature);\n      gpgme_data_release (message);\n      gpgme_release (ctx);\n      return NULL;\n    }\n\n  if (option (OPTCRYPTUSEPKA))\n    {\n      err = set_pka_sig_notation (ctx);\n      if (err)\n\t{\n\t  gpgme_data_release (signature);\n\t  gpgme_data_release (message);\n\t  gpgme_release (ctx);\n\t  return NULL;\n\t}\n    }\n\n  err = gpgme_op_sign (ctx, message, signature, GPGME_SIG_MODE_DETACH );\n  mutt_need_hard_redraw ();\n  gpgme_data_release (message);\n  if (err)\n    {\n      gpgme_data_release (signature);\n      gpgme_release (ctx);\n      mutt_error (_(\"error signing data: %s\\n\"), gpgme_strerror (err));\n      return NULL;\n    }\n  /* Check for zero signatures generated.  This can occur when $pgp_sign_as is\n   * unset and there is no default key specified in ~/.gnupg/gpg.conf\n   */\n  sigres = gpgme_op_sign_result (ctx);\n  if (!sigres->signatures)\n  {\n      gpgme_data_release (signature);\n      gpgme_release (ctx);\n      mutt_error (_(\"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"));\n      return NULL;\n  }\n\n  sigfile = data_object_to_tempfile (signature, NULL, NULL);\n  gpgme_data_release (signature);\n  if (!sigfile)\n    {\n      gpgme_release (ctx);\n      return NULL;\n    }\n\n  t = mutt_new_body ();\n  t->type = TYPEMULTIPART;\n  t->subtype = safe_strdup (\"signed\");\n  t->encoding = ENC7BIT;\n  t->use_disp = 0;\n  t->disposition = DISPINLINE;\n\n  mutt_generate_boundary (&t->parameter);\n  mutt_set_parameter (\"protocol\",\n                      use_smime? \"application/pkcs7-signature\"\n                               : \"application/pgp-signature\",\n                      &t->parameter);\n  /* Get the micalg from gpgme.  Old gpgme versions don't support this\n     for S/MIME so we assume sha-1 in this case. */\n  if (!get_micalg (ctx, use_smime, buf, sizeof buf))\n    mutt_set_parameter (\"micalg\", buf, &t->parameter);\n  else if (use_smime)\n    mutt_set_parameter (\"micalg\", \"sha1\", &t->parameter);\n  gpgme_release (ctx);\n\n  t->parts = a;\n  a = t;\n\n  t->parts->next = mutt_new_body ();\n  t = t->parts->next;\n  t->type = TYPEAPPLICATION;\n  if (use_smime)\n    {\n      t->subtype = safe_strdup (\"pkcs7-signature\");\n      mutt_set_parameter (\"name\", \"smime.p7s\", &t->parameter);\n      t->encoding = ENCBASE64; \n      t->use_disp = 1;\n      t->disposition = DISPATTACH;\n      t->d_filename = safe_strdup (\"smime.p7s\");\n    }\n  else\n    {\n      t->subtype = safe_strdup (\"pgp-signature\");\n      mutt_set_parameter (\"name\", \"signature.asc\", &t->parameter);\n      t->use_disp = 0;\n      t->disposition = DISPNONE;\n      t->encoding = ENC7BIT;\n    }\n  t->filename = sigfile;\n  t->unlink = 1; /* ok to remove this file after sending. */\n\n  return a;\n}\n\n\nBODY *pgp_gpgme_sign_message (BODY *a)\n{\n  return sign_message (a, 0);\n}\n\nBODY *smime_gpgme_sign_message (BODY *a)\n{\n  return sign_message (a, 1);\n}\n\n/*\n * Implementation of `encrypt_message'.\n */\n\n/* Encrypt the mail body A to all keys given as space separated keyids\n   or fingerprints in KEYLIST and return the encrypted body.  */\nBODY *pgp_gpgme_encrypt_message (BODY *a, char *keylist, int sign)\n{\n  char *outfile = NULL;\n  BODY *t;\n  gpgme_key_t *rset = NULL;\n  gpgme_data_t plaintext;\n  \n  rset = create_recipient_set (keylist, GPGME_PROTOCOL_OpenPGP);\n  if (!rset)\n    return NULL;\n  \n  if (sign)\n    convert_to_7bit (a);\n  plaintext = body_to_data_object (a, 0);\n  if (!plaintext)\n    {\n      free_recipient_set (&rset);\n      return NULL;\n    }\n  \n  outfile = encrypt_gpgme_object (plaintext, rset, 0, sign);\n  gpgme_data_release (plaintext);\n  free_recipient_set (&rset);\n  if (!outfile)\n      return NULL;\n\n  t = mutt_new_body ();\n  t->type = TYPEMULTIPART;\n  t->subtype = safe_strdup (\"encrypted\");\n  t->encoding = ENC7BIT;\n  t->use_disp = 0;\n  t->disposition = DISPINLINE;\n\n  mutt_generate_boundary(&t->parameter);\n  mutt_set_parameter(\"protocol\", \"application/pgp-encrypted\", &t->parameter);\n  \n  t->parts = mutt_new_body ();\n  t->parts->type = TYPEAPPLICATION;\n  t->parts->subtype = safe_strdup (\"pgp-encrypted\");\n  t->parts->encoding = ENC7BIT;\n\n  t->parts->next = mutt_new_body ();\n  t->parts->next->type = TYPEAPPLICATION;\n  t->parts->next->subtype = safe_strdup (\"octet-stream\");\n  t->parts->next->encoding = ENC7BIT;\n  t->parts->next->filename = outfile;\n  t->parts->next->use_disp = 1;\n  t->parts->next->disposition = DISPATTACH;\n  t->parts->next->unlink = 1; /* delete after sending the message */\n  t->parts->next->d_filename = safe_strdup (\"msg.asc\"); /* non pgp/mime\n                                                           can save */\n\n  return t;\n}\n\n/*\n * Implementation of `smime_build_smime_entity'.\n */\n\n/* Encrypt the mail body A to all keys given as space separated\n   fingerprints in KEYLIST and return the S/MIME encrypted body.  */\nBODY *smime_gpgme_build_smime_entity (BODY *a, char *keylist)\n{\n  char *outfile = NULL;\n  BODY *t;\n  gpgme_key_t *rset = NULL;\n  gpgme_data_t plaintext;\n\n  rset = create_recipient_set (keylist, GPGME_PROTOCOL_CMS);\n  if (!rset)\n    return NULL;\n\n  plaintext = body_to_data_object (a, 0);\n  if (!plaintext)\n    {\n      free_recipient_set (&rset);\n      return NULL;\n    }\n\n  outfile = encrypt_gpgme_object (plaintext, rset, 1, 0);\n  gpgme_data_release (plaintext);\n  free_recipient_set (&rset);\n  if (!outfile) \n      return NULL;\n\n  t = mutt_new_body ();\n  t->type = TYPEAPPLICATION;\n  t->subtype = safe_strdup (\"pkcs7-mime\");\n  mutt_set_parameter (\"name\", \"smime.p7m\", &t->parameter);\n  mutt_set_parameter (\"smime-type\", \"enveloped-data\", &t->parameter);\n  t->encoding = ENCBASE64;  /* The output of OpenSSL SHOULD be binary */\n  t->use_disp = 1;\n  t->disposition = DISPATTACH;\n  t->d_filename = safe_strdup (\"smime.p7m\");\n  t->filename = outfile;\n  t->unlink = 1; /*delete after sending the message */\n  t->parts=0;\n  t->next=0;\n  \n  return t;\n}\n\n\n/* \n * Implementation of `verify_one'.\n */\n\n/* Display the common attributes of the signature summary SUM.\n   Return 1 if there is is a severe warning.\n */\nstatic int show_sig_summary (unsigned long sum,\n                              gpgme_ctx_t ctx, gpgme_key_t key, int idx,\n                              STATE *s, gpgme_signature_t sig)\n{\n  int severe = 0;\n\n  if ((sum & GPGME_SIGSUM_KEY_REVOKED))\n    {\n      state_attach_puts (_(\"Warning: One of the keys has been revoked\\n\"),s);\n      severe = 1;\n    }\n\n  if ((sum & GPGME_SIGSUM_KEY_EXPIRED))\n    {\n      time_t at = key->subkeys->expires ? key->subkeys->expires : 0;\n      if (at)\n        {\n          state_attach_puts (_(\"Warning: The key used to create the \"\n                               \"signature expired at: \"), s);\n          print_time (at , s);\n          state_attach_puts (\"\\n\", s);\n        }\n      else\n        state_attach_puts (_(\"Warning: At least one certification key \"\n                             \"has expired\\n\"), s);\n    }\n\n  if ((sum & GPGME_SIGSUM_SIG_EXPIRED))\n    {\n      gpgme_verify_result_t result;\n      gpgme_signature_t sig;\n      unsigned int i;\n      \n      result = gpgme_op_verify_result (ctx);\n\n      for (sig = result->signatures, i = 0; sig && (i < idx);\n           sig = sig->next, i++)\n        ;\n      \n      state_attach_puts (_(\"Warning: The signature expired at: \"), s);\n      print_time (sig ? sig->exp_timestamp : 0, s);\n      state_attach_puts (\"\\n\", s);\n    }\n\n  if ((sum & GPGME_SIGSUM_KEY_MISSING))\n    state_attach_puts (_(\"Can't verify due to a missing \"\n                         \"key or certificate\\n\"), s);\n\n  if ((sum & GPGME_SIGSUM_CRL_MISSING))\n    {\n      state_attach_puts (_(\"The CRL is not available\\n\"), s);\n      severe = 1;\n    }\n\n  if ((sum & GPGME_SIGSUM_CRL_TOO_OLD))\n    {\n      state_attach_puts (_(\"Available CRL is too old\\n\"), s);\n      severe = 1;\n    }\n\n  if ((sum & GPGME_SIGSUM_BAD_POLICY))\n    state_attach_puts (_(\"A policy requirement was not met\\n\"), s);\n\n  if ((sum & GPGME_SIGSUM_SYS_ERROR))\n    {\n      const char *t0 = NULL, *t1 = NULL;\n      gpgme_verify_result_t result;\n      gpgme_signature_t sig;\n      unsigned int i;\n\n      state_attach_puts (_(\"A system error occurred\"), s );\n\n      /* Try to figure out some more detailed system error information. */\n      result = gpgme_op_verify_result (ctx);\n      for (sig = result->signatures, i = 0; sig && (i < idx);\n           sig = sig->next, i++)\n        ;\n      if (sig)\n\t{\n\t  t0 = \"\";\n\t  t1 = sig->wrong_key_usage ? \"Wrong_Key_Usage\" : \"\";\n\t}\n\n      if (t0 || t1)\n        {\n          state_attach_puts (\": \", s);\n          if (t0)\n              state_attach_puts (t0, s);\n          if (t1 && !(t0 && !strcmp (t0, t1)))\n            {\n              if (t0)\n                state_attach_puts (\",\", s);\n              state_attach_puts (t1, s);\n            }\n        }\n      state_attach_puts (\"\\n\", s);\n    }\n\n#ifdef HAVE_GPGME_PKA_TRUST\n\n  if (option (OPTCRYPTUSEPKA))\n    {\n      if (sig->pka_trust == 1 && sig->pka_address)\n\t{\n\t  state_attach_puts (_(\"WARNING: PKA entry does not match \"\n\t\t\t       \"signer's address: \"), s);\n\t  state_attach_puts (sig->pka_address, s);\n\t  state_attach_puts (\"\\n\", s);\n\t}\n      else if (sig->pka_trust == 2 && sig->pka_address)\n\t{\n\t  state_attach_puts (_(\"PKA verified signer's address is: \"), s);\n\t  state_attach_puts (sig->pka_address, s);\n\t  state_attach_puts (\"\\n\", s);\n\t}\n    }\n\n#endif\n\n  return severe;\n}\n\n\nstatic void show_fingerprint (gpgme_key_t key, STATE *state)\n{\n  const char *s;\n  int i, is_pgp;\n  char *buf, *p;\n  const char *prefix = _(\"Fingerprint: \");\n\n  if (!key)\n    return;\n  s = key->subkeys ? key->subkeys->fpr : NULL;\n  if (!s)\n    return;\n  is_pgp = (key->protocol == GPGME_PROTOCOL_OpenPGP);\n\n  buf = safe_malloc ( strlen (prefix) + strlen(s) * 4 + 2 );\n  strcpy (buf, prefix); /* __STRCPY_CHECKED__ */\n  p = buf + strlen (buf);\n  if (is_pgp && strlen (s) == 40)\n    {  /* PGP v4 style formatted. */\n      for (i=0; *s && s[1] && s[2] && s[3] && s[4]; s += 4, i++)\n        {\n          *p++ = s[0];\n          *p++ = s[1];\n          *p++ = s[2];\n          *p++ = s[3];\n          *p++ = ' ';\n          if (i == 4)\n            *p++ = ' ';\n        }\n    }\n  else\n    {\n      for (i=0; *s && s[1] && s[2]; s += 2, i++)\n        {\n          *p++ = s[0];\n          *p++ = s[1];\n          *p++ = is_pgp? ' ':':';\n          if (is_pgp && i == 7)\n            *p++ = ' ';\n        }\n    }\n\n  /* just in case print remaining odd digits */\n  for (; *s; s++)\n    *p++ = *s;\n  *p++ = '\\n';\n  *p = 0;\n  state_attach_puts (buf, state);\n  FREE (&buf);\n}\n\n/* Show the validity of a key used for one signature. */\nstatic void show_one_sig_validity (gpgme_ctx_t ctx, int idx, STATE *s)\n{\n  gpgme_verify_result_t result = NULL;\n  gpgme_signature_t sig = NULL;\n  const char *txt = NULL;\n\n  result = gpgme_op_verify_result (ctx);\n  if (result)\n    for (sig = result->signatures; sig && (idx > 0); sig = sig->next, idx--);\n\n  switch (sig ? sig->validity : 0)\n      {\n      case GPGME_VALIDITY_UNKNOWN:\n\ttxt = _(\"WARNING: We have NO indication whether \"\n\t\t\"the key belongs to the person named \"\n\t\t\"as shown above\\n\");\n\tbreak;\n      case GPGME_VALIDITY_UNDEFINED:\n\tbreak;\n      case GPGME_VALIDITY_NEVER:\n\ttxt = _(\"WARNING: The key does NOT BELONG to \"\n\t\t\"the person named as shown above\\n\");\n\tbreak;\n      case GPGME_VALIDITY_MARGINAL:\n\ttxt = _(\"WARNING: It is NOT certain that the key \"\n\t\t\"belongs to the person named as shown above\\n\");\n\tbreak;\n      case GPGME_VALIDITY_FULL:\n      case GPGME_VALIDITY_ULTIMATE:\n\ttxt = NULL;\n\tbreak;\n      }\n  if (txt)\n    state_attach_puts (txt, s);\n}\n\nstatic void print_smime_keyinfo (const char* msg, gpgme_signature_t sig,\n                                 gpgme_key_t key, STATE *s)\n{\n  size_t msglen;\n  gpgme_user_id_t uids = NULL;\n  int i, aka = 0;\n\n  state_attach_puts (msg, s);\n  state_attach_puts (\" \", s);\n  /* key is NULL when not present in the user's keyring */\n  if (key)\n  {\n    for (uids = key->uids; uids; uids = uids->next)\n    {\n      if (uids->revoked)\n\tcontinue;\n      if (aka)\n      {\n        /* TODO: need to account for msg wide characters\n         * and \"aka\" translation length */\n\tmsglen = mutt_strlen (msg) - 4;\n\tfor (i = 0; i < msglen; i++)\n\t  state_attach_puts(\" \", s);\n\tstate_attach_puts(_(\"aka: \"), s);\n      }\n      state_attach_puts (uids->uid, s);\n      state_attach_puts (\"\\n\", s);\n\n      aka = 1;\n    }\n  }\n  else\n  {\n    state_attach_puts (_(\"KeyID \"), s);\n    state_attach_puts (sig->fpr, s);\n    state_attach_puts (\"\\n\", s);\n  }\n\n  msglen = mutt_strlen (msg) - 8;\n  /* TODO: need to account for msg wide characters\n   * and \"created\" translation length */\n  for (i = 0; i < msglen; i++)\n    state_attach_puts(\" \", s);\n  state_attach_puts (_(\"created: \"), s);\n  print_time (sig->timestamp, s);\n  state_attach_puts (\"\\n\", s);  \n}\n\n/* Show information about one signature.  This function is called with\n   the context CTX of a successful verification operation and the\n   enumerator IDX which should start at 0 and increment for each\n   call/signature. \n\n   Return values are: 0 for normal procession, 1 for a bad signature,\n   2 for a signature with a warning or -1 for no more signature.  */\nstatic int show_one_sig_status (gpgme_ctx_t ctx, int idx, STATE *s)\n{\n  const char *fpr;\n  gpgme_key_t key = NULL;\n  int i, anybad = 0, anywarn = 0;\n  unsigned int sum;\n  gpgme_verify_result_t result;\n  gpgme_signature_t sig;\n  gpgme_error_t err = GPG_ERR_NO_ERROR;\n  char buf[LONG_STRING];\n\n  result = gpgme_op_verify_result (ctx);\n  if (result)\n    {\n      /* FIXME: this code should use a static variable and remember\n\t the current position in the list of signatures, IMHO.\n\t -moritz.  */\n\n      for (i = 0, sig = result->signatures; sig && (i < idx);\n           i++, sig = sig->next)\n        ;\n      if (! sig)\n\treturn -1;\t\t/* Signature not found.  */\n\n      if (signature_key)\n\t{\n\t  gpgme_key_unref (signature_key);\n\t  signature_key = NULL;\n\t}\n      \n      fpr = sig->fpr;\n      sum = sig->summary;\n\n      if (gpg_err_code (sig->status) != GPG_ERR_NO_ERROR)\n\tanybad = 1;\n\n      if (gpg_err_code (sig->status) != GPG_ERR_NO_PUBKEY)\n      {\n\terr = gpgme_get_key (ctx, fpr, &key, 0); /* secret key?  */\n\tif (! err)\n\t{\n\t  if (! signature_key)\n\t    signature_key = key;\n\t}\n\telse\n\t{\n\t  key = NULL; /* Old gpgme versions did not set KEY to NULL on\n\t\t\t error.   Do it here to avoid a double free. */\n\t}\n      }\n      else\n      {\n\t/* pubkey not present */\n      }\n\n      if (!s || !s->fpout || !(s->flags & M_DISPLAY))\n\t; /* No state information so no way to print anything. */\n      else if (err)\n\t{\n          snprintf (buf, sizeof (buf),\n              _(\"Error getting key information for KeyID %s: %s\\n\"),\n              fpr, gpgme_strerror (err));\n          state_attach_puts (buf, s);\n          anybad = 1;\n\t}\n      else if ((sum & GPGME_SIGSUM_GREEN))\n      {\n        print_smime_keyinfo (_(\"Good signature from:\"), sig, key, s);\n\tif (show_sig_summary (sum, ctx, key, idx, s, sig))\n\t  anywarn = 1;\n\tshow_one_sig_validity (ctx, idx, s);\n      }\n      else if ((sum & GPGME_SIGSUM_RED))\n      {\n        print_smime_keyinfo (_(\"*BAD* signature from:\"), sig, key, s);\n        show_sig_summary (sum, ctx, key, idx, s, sig);\n      }\n      else if (!anybad && key && (key->protocol == GPGME_PROTOCOL_OpenPGP))\n      { /* We can't decide (yellow) but this is a PGP key with a good\n           signature, so we display what a PGP user expects: The name,\n\t   fingerprint and the key validity (which is neither fully or\n\t   ultimate). */\n        print_smime_keyinfo (_(\"Good signature from:\"), sig, key, s);\n\tshow_one_sig_validity (ctx, idx, s);\n\tshow_fingerprint (key,s);\n\tif (show_sig_summary (sum, ctx, key, idx, s, sig))\n\t  anywarn = 1;\n      }\n      else /* can't decide (yellow) */\n      {\n        print_smime_keyinfo (_(\"Problem signature from:\"), sig, key, s);\n\t/* 0 indicates no expiration */\n\tif (sig->exp_timestamp)\n\t{\n          /* L10N:\n             This is trying to match the width of the\n             \"Problem signature from:\" translation just above. */\n\t  state_attach_puts (_(\"               expires: \"), s);\n\t  print_time (sig->exp_timestamp, s);\n\t  state_attach_puts (\"\\n\", s);\n\t}\n\tshow_sig_summary (sum, ctx, key, idx, s, sig);\n        anywarn = 1;\n      }\n\n      if (key != signature_key)\n\tgpgme_key_unref (key);\n    }\n\n  return anybad ? 1 : anywarn ? 2 : 0;\n}\n\n/* Do the actual verification step. With IS_SMIME set to true we\n   assume S/MIME (surprise!) */\nstatic int verify_one (BODY *sigbdy, STATE *s,\n                       const char *tempfile, int is_smime)\n{\n  int badsig = -1;\n  int anywarn = 0;\n  int err;\n  gpgme_ctx_t ctx;\n  gpgme_data_t signature, message;\n\n  signature = file_to_data_object (s->fpin, sigbdy->offset, sigbdy->length);\n  if (!signature)\n    return -1;\n\n  /* We need to tell gpgme about the encoding because the backend can't\n     auto-detect plain base-64 encoding which is used by S/MIME. */\n  if (is_smime)\n    gpgme_data_set_encoding (signature, GPGME_DATA_ENCODING_BASE64);\n\n  err = gpgme_data_new_from_file (&message, tempfile, 1);\n  if (err) \n    {\n      gpgme_data_release (signature);\n      mutt_error (_(\"error allocating data object: %s\\n\"), gpgme_strerror (err));\n      return -1;\n    }\n  ctx = create_gpgme_context (is_smime);\n\n  /* Note: We don't need a current time output because GPGME avoids\n     such an attack by separating the meta information from the\n     data. */\n  state_attach_puts (_(\"[-- Begin signature information --]\\n\"), s);\n\n  err = gpgme_op_verify (ctx, signature, message, NULL);\n  gpgme_data_release (message);\n  gpgme_data_release (signature);\n\n  mutt_need_hard_redraw ();\n  if (err)\n    {\n      char buf[200];\n      \n      snprintf (buf, sizeof(buf)-1, \n                _(\"Error: verification failed: %s\\n\"),\n                gpgme_strerror (err));\n      state_attach_puts (buf, s);\n    }\n  else\n    { /* Verification succeeded, see what the result is. */\n      int res, idx;\n      int anybad = 0;\n\n      if (signature_key)\n\t{\n\t  gpgme_key_unref (signature_key);\n\t  signature_key = NULL;\n\t}\n\n      for(idx=0; (res = show_one_sig_status (ctx, idx, s)) != -1; idx++)\n        {\n          if (res == 1)\n            anybad = 1;\n          else if (res == 2)\n            anywarn = 2;\n        }\n      if (!anybad)\n        badsig = 0;\n    }\n\n  if (!badsig)\n    {\n      gpgme_verify_result_t result;\n      gpgme_sig_notation_t notation;\n      gpgme_signature_t signature;\n      int non_pka_notations;\n\n      result = gpgme_op_verify_result (ctx);\n      if (result)\n      {\n\tfor (signature = result->signatures; signature;\n             signature = signature->next)\n\t{\n\t  non_pka_notations = 0;\n\t  for (notation = signature->notations; notation;\n\t       notation = notation->next)\n\t    if (! is_pka_notation (notation))\n\t      non_pka_notations++;\n\n\t  if (non_pka_notations)\n\t  {\n\t    char buf[SHORT_STRING];\n\t    snprintf (buf, sizeof (buf),\n\t\t      _(\"*** Begin Notation (signature by: %s) ***\\n\"),\n\t\t      signature->fpr);\n\t    state_attach_puts (buf, s);\n\t    for (notation = signature->notations; notation;\n                 notation = notation->next)\n\t    {\n\t      if (is_pka_notation (notation))\n\t\tcontinue;\n\n\t      if (notation->name)\n\t      {\n\t\tstate_attach_puts (notation->name, s);\n\t\tstate_attach_puts (\"=\", s);\n\t      }\n\t      if (notation->value)\n\t      {\n\t\tstate_attach_puts (notation->value, s);\n\t\tif (!(*notation->value\n                      && (notation->value[strlen (notation->value)-1]=='\\n')))\n\t\t  state_attach_puts (\"\\n\", s);\n\t      }\n\t    }\n\t    state_attach_puts (_(\"*** End Notation ***\\n\"), s);\n\t  }\n\t}\n      }\n    }\n\n  gpgme_release (ctx);\n  \n  state_attach_puts (_(\"[-- End signature information --]\\n\\n\"), s);\n  dprint (1, (debugfile, \"verify_one: returning %d.\\n\", badsig));\n  \n  return badsig? 1: anywarn? 2 : 0;\n}\n\nint pgp_gpgme_verify_one (BODY *sigbdy, STATE *s, const char *tempfile)\n{\n  return verify_one (sigbdy, s, tempfile, 0);\n}\n\nint smime_gpgme_verify_one (BODY *sigbdy, STATE *s, const char *tempfile)\n{\n  return verify_one (sigbdy, s, tempfile, 1);\n}\n\n/*\n * Implementation of `decrypt_part'.\n */\n\n/* Decrypt a PGP or SMIME message (depending on the boolean flag\n   IS_SMIME) with body A described further by state S.  Write\n   plaintext out to file FPOUT and return a new body.  For PGP returns\n   a flag in R_IS_SIGNED to indicate whether this is a combined\n   encrypted and signed message, for S/MIME it returns true when it is\n   not a encrypted but a signed message.  */\nstatic BODY *decrypt_part (BODY *a, STATE *s, FILE *fpout, int is_smime,\n                           int *r_is_signed)\n{\n  struct stat info;\n  BODY *tattach;\n  int err = 0;\n  gpgme_ctx_t ctx;\n  gpgme_data_t ciphertext, plaintext;\n  int maybe_signed = 0;\n  int anywarn = 0;\n  int sig_stat = 0;\n\n  if (r_is_signed)\n    *r_is_signed = 0;\n\n  ctx = create_gpgme_context (is_smime);\n\n restart:\n  /* Make a data object from the body, create context etc. */\n  ciphertext = file_to_data_object (s->fpin, a->offset, a->length);\n  if (!ciphertext)\n    return NULL;\n  plaintext = create_gpgme_data ();\n\n  /* Do the decryption or the verification in case of the S/MIME hack. */\n  if ((! is_smime) || maybe_signed)\n    {\n      if (! is_smime)\n\terr = gpgme_op_decrypt_verify (ctx, ciphertext, plaintext);\n      else if (maybe_signed)\n\terr = gpgme_op_verify (ctx, ciphertext, NULL, plaintext);\n\n      if (err == GPG_ERR_NO_ERROR)\n      {\n\t/* Check whether signatures have been verified.  */\n\tgpgme_verify_result_t verify_result = gpgme_op_verify_result (ctx);\n\tif (verify_result->signatures)\n\t  sig_stat = 1;\n      }\n    }\n  else\n    err = gpgme_op_decrypt (ctx, ciphertext, plaintext);\n  gpgme_data_release (ciphertext);\n  if (err)\n    {\n      if (is_smime && !maybe_signed\n          && gpg_err_code (err) == GPG_ERR_NO_DATA)\n        {\n\t  /* Check whether this might be a signed message despite what\n             the mime header told us.  Retry then.  gpgsm returns the\n             error information \"unsupported Algorithm '?'\" but gpgme\n             will not store this unknown algorithm, thus we test that\n             it has not been set. */\n\t  gpgme_decrypt_result_t result;\n\n\t  result = gpgme_op_decrypt_result (ctx);\n\t  if (!result->unsupported_algorithm)\n            {\n              maybe_signed = 1;\n              gpgme_data_release (plaintext);\n              goto restart;\n            }\n        }\n      mutt_need_hard_redraw ();\n      if ((s->flags & M_DISPLAY))\n        {\n          char buf[200];\n          \n          snprintf (buf, sizeof(buf)-1, \n                    _(\"[-- Error: decryption failed: %s --]\\n\\n\"),\n                    gpgme_strerror (err));\n          state_attach_puts (buf, s);\n        }\n      gpgme_data_release (plaintext);\n      gpgme_release (ctx);\n      return NULL;\n  }\n  mutt_need_hard_redraw ();\n\n  /* Read the output from GPGME, and make sure to change CRLF to LF,\n     otherwise read_mime_header has a hard time parsing the message.  */\n  if (data_object_to_stream (plaintext, fpout))\n    {\n      gpgme_data_release (plaintext);\n      gpgme_release (ctx);\n      return NULL;\n    }\n  gpgme_data_release (plaintext);\n\n  a->is_signed_data = 0;\n  if (sig_stat)\n    {\n      int res, idx;\n      int anybad = 0;\n      \n      if (maybe_signed)\n        a->is_signed_data = 1;\n      if(r_is_signed)\n        *r_is_signed = -1; /* A signature exists. */\n\n      if ((s->flags & M_DISPLAY))\n        state_attach_puts (_(\"[-- Begin signature \"\n                             \"information --]\\n\"), s);\n      for(idx = 0; (res = show_one_sig_status (ctx, idx, s)) != -1; idx++)\n        {\n          if (res == 1)\n            anybad = 1;\n          else if (res == 2)\n            anywarn = 1;\n        }\n      if (!anybad && idx && r_is_signed && *r_is_signed)\n        *r_is_signed = anywarn? 2:1; /* Good signature. */\n      \n      if ((s->flags & M_DISPLAY))\n        state_attach_puts (_(\"[-- End signature \"\n                             \"information --]\\n\\n\"), s);\n    }\n  gpgme_release (ctx); ctx = NULL;\n\n  fflush (fpout);\n  rewind (fpout);\n  tattach = mutt_read_mime_header (fpout, 0);\n  if (tattach)\n    {\n      /*\n       * Need to set the length of this body part.\n       */\n      fstat (fileno (fpout), &info);\n      tattach->length = info.st_size - tattach->offset;\n      \n      tattach->warnsig = anywarn;\n\n      /* See if we need to recurse on this MIME part.  */\n      mutt_parse_part (fpout, tattach);\n    }\n\n  return tattach;\n}\n\n/* Decrypt a PGP/MIME message in FPIN and B and return a new body and\n   the stream in CUR and FPOUT.  Returns 0 on success. */\nint pgp_gpgme_decrypt_mime (FILE *fpin, FILE **fpout, BODY *b, BODY **cur)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  STATE s;\n  BODY *first_part = b;\n  int is_signed = 0;\n  int need_decode = 0;\n  int saved_type;\n  LOFF_T saved_offset;\n  size_t saved_length;\n  FILE *decoded_fp = NULL;\n  int rv = 0;\n  \n  first_part->goodsig = 0;\n  first_part->warnsig = 0;\n\n  if (mutt_is_valid_multipart_pgp_encrypted (b))\n    b = b->parts->next;\n  else if (mutt_is_malformed_multipart_pgp_encrypted (b))\n  {\n    b = b->parts->next->next;\n    need_decode = 1;\n  }\n  else\n    return -1;\n  \n  memset (&s, 0, sizeof (s));\n  s.fpin = fpin;\n\n  if (need_decode)\n  {\n    saved_type = b->type;\n    saved_offset = b->offset;\n    saved_length = b->length;\n\n    mutt_mktemp (tempfile, sizeof (tempfile));\n    if ((decoded_fp = safe_fopen (tempfile, \"w+\")) == NULL)\n    {\n      mutt_perror (tempfile);\n      return (-1);\n    }\n    unlink (tempfile);\n\n    fseeko (s.fpin, b->offset, 0);\n    s.fpout = decoded_fp;\n\n    mutt_decode_attachment (b, &s);\n\n    fflush (decoded_fp);\n    b->length = ftello (decoded_fp);\n    b->offset = 0;\n    rewind (decoded_fp);\n    s.fpin = decoded_fp;\n    s.fpout = 0;\n  }\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (!(*fpout = safe_fopen (tempfile, \"w+\")))\n  {\n    mutt_perror (tempfile);\n    rv = -1;\n    goto bail;\n  }\n  unlink (tempfile);\n\n  if ((*cur = decrypt_part (b, &s, *fpout, 0, &is_signed)) == NULL)\n    rv = -1;\n  rewind (*fpout);\n  if (is_signed > 0)\n    first_part->goodsig = 1;\n\nbail:\n  if (need_decode)\n  {\n    b->type = saved_type;\n    b->length = saved_length;\n    b->offset = saved_offset;\n    safe_fclose (&decoded_fp);\n  }\n\n  return rv;\n}\n\n\n/* Decrypt a S/MIME message in FPIN and B and return a new body and\n   the stream in CUR and FPOUT.  Returns 0 on success. */\nint smime_gpgme_decrypt_mime (FILE *fpin, FILE **fpout, BODY *b, BODY **cur)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  STATE s;\n  FILE *tmpfp=NULL;\n  int is_signed;\n  LOFF_T saved_b_offset;\n  size_t saved_b_length;\n  int saved_b_type;\n\n  if (!mutt_is_application_smime (b))\n    return -1;\n\n  if (b->parts)\n    return -1;\n  \n  /* Decode the body - we need to pass binary CMS to the\n     backend.  The backend allows for Base64 encoded data but it does\n     not allow for QP which I have seen in some messages.  So better\n     do it here. */\n  saved_b_type = b->type;\n  saved_b_offset = b->offset;\n  saved_b_length = b->length;\n  memset (&s, 0, sizeof (s));\n  s.fpin = fpin;\n  fseeko (s.fpin, b->offset, 0); \n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (!(tmpfp = safe_fopen (tempfile, \"w+\")))\n    {\n      mutt_perror (tempfile);\n      return -1;\n    }\n  mutt_unlink (tempfile);\n\n  s.fpout = tmpfp;\n  mutt_decode_attachment (b, &s);\n  fflush (tmpfp);\n  b->length = ftello (s.fpout);\n  b->offset = 0;\n  rewind (tmpfp);\n\n  memset (&s, 0, sizeof (s));\n  s.fpin = tmpfp;\n  s.fpout = 0;\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (!(*fpout = safe_fopen (tempfile, \"w+\")))\n    {\n      mutt_perror (tempfile);\n      return -1;\n    }\n  mutt_unlink (tempfile);\n\n  *cur = decrypt_part (b, &s, *fpout, 1, &is_signed);\n  if (*cur)\n    (*cur)->goodsig = is_signed > 0;\n  b->type = saved_b_type;\n  b->length = saved_b_length;\n  b->offset = saved_b_offset;\n  safe_fclose (&tmpfp);\n  rewind (*fpout);\n  if (*cur && !is_signed && !(*cur)->parts && mutt_is_application_smime (*cur))\n    {\n      /* Assume that this is a opaque signed s/mime message.  This is\n         an ugly way of doing it but we have anyway a problem with\n         arbitrary encoded S/MIME messages: Only the outer part may be\n         encrypted.  The entire mime parsing should be revamped,\n         probably by keeping the temporary files so that we don't\n         need to decrypt them all the time.  Inner parts of an\n         encrypted part can then point into this file and there won't\n         ever be a need to decrypt again.  This needs a partial\n         rewrite of the MIME engine. */\n      BODY *bb = *cur;\n      BODY *tmp_b;\n\n      saved_b_type = bb->type;\n      saved_b_offset = bb->offset;\n      saved_b_length = bb->length;\n      memset (&s, 0, sizeof (s));\n      s.fpin = *fpout;\n      fseeko (s.fpin, bb->offset, 0); \n      mutt_mktemp (tempfile, sizeof (tempfile));\n      if (!(tmpfp = safe_fopen (tempfile, \"w+\")))\n        {\n          mutt_perror (tempfile);\n          return -1;\n        }\n      mutt_unlink (tempfile);\n\n      s.fpout = tmpfp;\n      mutt_decode_attachment (bb, &s);\n      fflush (tmpfp);\n      bb->length = ftello (s.fpout);\n      bb->offset = 0;\n      rewind (tmpfp);\n      safe_fclose (fpout); \n\n      memset (&s, 0, sizeof (s));\n      s.fpin = tmpfp;\n      s.fpout = 0;\n      mutt_mktemp (tempfile, sizeof (tempfile));\n      if (!(*fpout = safe_fopen (tempfile, \"w+\")))\n        {\n          mutt_perror (tempfile);\n          return -1;\n        }\n      mutt_unlink (tempfile);\n\n      tmp_b = decrypt_part (bb, &s, *fpout, 1, &is_signed);\n      if (tmp_b)\n        tmp_b->goodsig = is_signed > 0;\n      bb->type = saved_b_type;\n      bb->length = saved_b_length;\n      bb->offset = saved_b_offset;\n      safe_fclose (&tmpfp);\n      rewind (*fpout);\n      mutt_free_body (cur);\n      *cur = tmp_b;\n    }\n  return *cur? 0:-1;\n}\n\nstatic int pgp_gpgme_extract_keys (gpgme_data_t keydata, FILE** fp, int dryrun)\n{\n  /* there's no side-effect free way to view key data in GPGME,\n   * so we import the key into a temporary keyring */\n  char tmpdir[_POSIX_PATH_MAX];\n  char tmpfile[_POSIX_PATH_MAX];\n  gpgme_ctx_t tmpctx;\n  gpgme_error_t err;\n  gpgme_engine_info_t engineinfo;\n  gpgme_key_t key;\n  gpgme_user_id_t uid;\n  gpgme_subkey_t subkey;\n  const char* shortid;\n  int len;\n  char date[STRING];\n  int more;\n  int rc = -1;\n  time_t tt;\n\n  if ((err = gpgme_new (&tmpctx)) != GPG_ERR_NO_ERROR)\n  {\n    dprint (1, (debugfile, \"Error creating GPGME context\\n\"));\n    return rc;\n  }\n  \n  if (dryrun)\n  {\n    snprintf (tmpdir, sizeof(tmpdir), \"%s/mutt-gpgme-XXXXXX\", Tempdir);\n    if (!mkdtemp (tmpdir))\n    {\n      dprint (1, (debugfile, \"Error creating temporary GPGME home\\n\"));\n      goto err_ctx;\n    }\n\n    engineinfo = gpgme_ctx_get_engine_info (tmpctx);\n    while (engineinfo && engineinfo->protocol != GPGME_PROTOCOL_OpenPGP)\n      engineinfo = engineinfo->next;\n    if (!engineinfo)\n    {\n      dprint (1, (debugfile, \"Error finding GPGME PGP engine\\n\"));\n      goto err_tmpdir;\n    }\n\n    err = gpgme_ctx_set_engine_info (tmpctx, GPGME_PROTOCOL_OpenPGP,\n                                     engineinfo->file_name, tmpdir);\n    if (err != GPG_ERR_NO_ERROR)\n    {\n      dprint (1, (debugfile, \"Error setting GPGME context home\\n\"));\n      goto err_tmpdir;\n    }\n  }\n\n  if ((err = gpgme_op_import (tmpctx, keydata)) != GPG_ERR_NO_ERROR)\n  {\n    dprint (1, (debugfile, \"Error importing key\\n\"));\n    goto err_tmpdir;\n  }\n\n  mutt_mktemp (tmpfile, sizeof (tmpfile));\n  *fp = safe_fopen (tmpfile, \"w+\");\n  if (!*fp)\n  {\n    mutt_perror (tmpfile);\n    goto err_tmpdir;\n  }\n  unlink (tmpfile);\n\n  err = gpgme_op_keylist_start (tmpctx, NULL, 0);\n  while (!err)\n  {\n    if ((err = gpgme_op_keylist_next (tmpctx, &key)))\n      break;\n    uid = key->uids;\n    subkey = key->subkeys;\n    more = 0;\n    while (subkey)\n    {\n      shortid = subkey->keyid;\n      len = mutt_strlen (subkey->keyid);\n      if (len > 8)\n        shortid += len - 8;\n      tt = subkey->timestamp;\n      strftime (date, sizeof (date), \"%Y-%m-%d\", localtime (&tt));\n\n      if (!more)\n        fprintf (*fp, \"%s %5.5s %d/%8s %s %s\\n\", more ? \"sub\" : \"pub\",\n                 gpgme_pubkey_algo_name (subkey->pubkey_algo), subkey->length,\n                 shortid, date, uid->uid);\n      else\n        fprintf (*fp, \"%s %5.5s %d/%8s %s\\n\", more ? \"sub\" : \"pub\",\n                 gpgme_pubkey_algo_name (subkey->pubkey_algo), subkey->length,\n                 shortid, date);      \n      subkey = subkey->next;\n      more = 1;\n    }\n    gpgme_key_unref (key);\n  }\n  if (gpg_err_code (err) != GPG_ERR_EOF)\n  {\n    dprint (1, (debugfile, \"Error listing keys\\n\"));\n    goto err_fp;\n  }\n\n  rc = 0;\n\nerr_fp:\n  if (rc)\n    safe_fclose (fp);\nerr_tmpdir:\n  if (dryrun)\n    mutt_rmtree (tmpdir);\nerr_ctx:\n  gpgme_release (tmpctx);\n\n  return rc;\n}\n\n/* Check that 'b' is a complete line containing 'a' followed by either LF or CRLF.\n *\n * returns:\n * 0 if the is a match\n * -1 otherwise\n */\nstatic int line_compare(const char *a, size_t n, const char *b)\n{\n  if (mutt_strncmp(a, b, n) == 0)\n  {\n    /* at this point we know that 'b' is at least 'n' chars long */\n    if (b[n] == '\\n' || (b[n] == '\\r' && b[n+1] == '\\n'))\n      return 0;\n  }\n  return -1;\n}\n\n#define _LINE_COMPARE(_x,_y) !line_compare(_x, sizeof(_x)-1, _y)\n#define MESSAGE(_y) _LINE_COMPARE(\"MESSAGE-----\", _y)\n#define SIGNED_MESSAGE(_y) _LINE_COMPARE(\"SIGNED MESSAGE-----\", _y)\n#define PUBLIC_KEY_BLOCK(_y) _LINE_COMPARE(\"PUBLIC KEY BLOCK-----\", _y)\n#define BEGIN_PGP_SIGNATURE(_y) _LINE_COMPARE(\"-----BEGIN PGP SIGNATURE-----\", _y)\n\n/* \n * Implementation of `pgp_check_traditional'.\n */\n\nstatic int pgp_check_traditional_one_body (FILE *fp, BODY *b, int tagged_only)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  char buf[HUGE_STRING];\n  FILE *tfp;\n  \n  short sgn = 0;\n  short enc = 0;\n  \n  if (b->type != TYPETEXT)\n    return 0;\n\n  if (tagged_only && !b->tagged)\n    return 0;\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (mutt_decode_save_attachment (fp, b, tempfile, 0, 0) != 0)\n  {\n    unlink (tempfile);\n    return 0;\n  }\n  \n  if ((tfp = fopen (tempfile, \"r\")) == NULL)\n  {\n    unlink (tempfile);\n    return 0;\n  }\n  \n  while (fgets (buf, sizeof (buf), tfp))\n  {\n    if (!mutt_strncmp (\"-----BEGIN PGP \", buf, 15))\n    {\n      if (MESSAGE(buf + 15))\n      {\n\tenc = 1;\n\tbreak;\n      }\n      else if (SIGNED_MESSAGE(buf + 15))\n      {\n\tsgn = 1;\n\tbreak;\n      }\n    }\n  }\n  safe_fclose (&tfp);\n  unlink (tempfile);\n\n  if (!enc && !sgn)\n    return 0;\n\n  /* fix the content type */\n  \n  mutt_set_parameter (\"format\", \"fixed\", &b->parameter);\n  mutt_set_parameter (\"x-action\", enc ? \"pgp-encrypted\" : \"pgp-signed\",\n                      &b->parameter);\n  \n  return 1;\n}\n\nint pgp_gpgme_check_traditional (FILE *fp, BODY *b, int tagged_only)\n{\n  int rv = 0;\n  int r;\n  for (; b; b = b->next)\n  {\n    if (is_multipart (b))\n      rv = (pgp_gpgme_check_traditional (fp, b->parts, tagged_only) || rv);\n    else if (b->type == TYPETEXT)\n    {\n      if ((r = mutt_is_application_pgp (b)))\n\trv = (rv || r);\n      else\n\trv = (pgp_check_traditional_one_body (fp, b, tagged_only) || rv);\n    }\n  }\n  return rv;\n}\n\nvoid pgp_gpgme_invoke_import (const char *fname)\n{\n  gpgme_data_t keydata;\n  gpgme_error_t err;\n  FILE* in;\n  FILE* out;\n\n  if (!(in = safe_fopen (fname, \"r\")))\n    return;\n  /* Note that the stream, \"in\", needs to be kept open while the keydata\n   * is used.\n   */\n  if ((err = gpgme_data_new_from_stream (&keydata, in)) != GPG_ERR_NO_ERROR)\n  {\n    safe_fclose (&in);\n    mutt_error (_(\"error allocating data object: %s\\n\"), gpgme_strerror (err));\n    mutt_sleep (1);\n    return;\n  }\n\n  if (pgp_gpgme_extract_keys (keydata, &out, 0))\n  {\n    mutt_error (_(\"Error extracting key data!\\n\"));\n    mutt_sleep (1);\n  }\n  gpgme_data_release (keydata);\n  safe_fclose (&in);\n  safe_fclose (&out);\n}\n\n\n/* \n * Implementation of `application_handler'.\n */\n\n/* \n  Copy a clearsigned message, and strip the signature and PGP's\n  dash-escaping.\n  \n  XXX - charset handling: We assume that it is safe to do\n  character set decoding first, dash decoding second here, while\n  we do it the other way around in the main handler.\n  \n  (Note that we aren't worse than Outlook & Cie in this, and also\n  note that we can successfully handle anything produced by any\n  existing versions of mutt.)  */\n\nstatic void copy_clearsigned (gpgme_data_t data, STATE *s, char *charset)\n{\n  char buf[HUGE_STRING];\n  short complete, armor_header;\n  FGETCONV *fc;\n  char *fname;\n  FILE *fp;\n\n  fname = data_object_to_tempfile (data, NULL, &fp);\n  if (!fname)\n    return;\n  unlink (fname);\n  FREE (&fname);\n\n  /* fromcode comes from the MIME Content-Type charset label. It might\n   * be a wrong label, so we want the ability to do corrections via\n   * charset-hooks. Therefore we set flags to M_ICONV_HOOK_FROM.\n   */\n  fc = fgetconv_open (fp, charset, Charset, M_ICONV_HOOK_FROM);\n  \n  for (complete = 1, armor_header = 1;\n       fgetconvs (buf, sizeof (buf), fc) != NULL;\n       complete = strchr (buf, '\\n') != NULL)\n  {\n    if (!complete)\n    {\n      if (!armor_header)\n\tstate_puts (buf, s);\n      continue;\n    }\n\n    if (BEGIN_PGP_SIGNATURE(buf))\n      break;\n    \n    if (armor_header)\n    {\n      if (buf[0] == '\\n') \n\tarmor_header = 0;\n      continue;\n    }\n    \n    if (s->prefix) \n      state_puts (s->prefix, s);\n    \n    if (buf[0] == '-' && buf[1] == ' ')\n      state_puts (buf + 2, s);\n    else\n      state_puts (buf, s);\n  }\n  \n  fgetconv_close (&fc);\n  safe_fclose (&fp);\n}\n\n/* Support for classic_application/pgp */\nint pgp_gpgme_application_handler (BODY *m, STATE *s)\n{\n  int needpass = -1, pgp_keyblock = 0;\n  int clearsign = 0;\n  long bytes;\n  LOFF_T last_pos, offset;\n  char buf[HUGE_STRING];\n  FILE *pgpout = NULL;\n\n  gpgme_error_t err = 0;\n  gpgme_data_t armored_data = NULL;\n\n  short maybe_goodsig = 1;\n  short have_any_sigs = 0;\n\n  char body_charset[STRING];  /* Only used for clearsigned messages. */\n\n  dprint (2, (debugfile, \"Entering pgp_application_pgp handler\\n\"));\n\n  /* For clearsigned messages we won't be able to get a character set\n     but we know that this may only be text thus we assume Latin-1\n     here. */\n  if (!mutt_get_body_charset (body_charset, sizeof (body_charset), m))\n    strfcpy (body_charset, \"iso-8859-1\", sizeof body_charset);\n\n  fseeko (s->fpin, m->offset, 0);\n  last_pos = m->offset;\n  \n  for (bytes = m->length; bytes > 0;)\n    {\n      if (fgets (buf, sizeof (buf), s->fpin) == NULL)\n        break;\n      \n      offset = ftello (s->fpin);\n      bytes -= (offset - last_pos); /* don't rely on mutt_strlen(buf) */\n      last_pos = offset;\n      \n      if (!mutt_strncmp (\"-----BEGIN PGP \", buf, 15))\n        {\n          clearsign = 0;\n          \n          if (MESSAGE(buf + 15))\n            needpass = 1;\n          else if (SIGNED_MESSAGE(buf + 15))\n            {\n              clearsign = 1;\n              needpass = 0;\n            }\n          else if (PUBLIC_KEY_BLOCK(buf + 15))\n          {\n            needpass = 0;\n            pgp_keyblock = 1;\n          } \n          else\n            {\n              /* XXX - we may wish to recode here */\n              if (s->prefix)\n                state_puts (s->prefix, s);\n              state_puts (buf, s);\n              continue;\n            }\n          \n          have_any_sigs = (have_any_sigs\n                           || (clearsign && (s->flags & M_VERIFY)));\n          \n          /* Copy PGP material to an data container */\n\t  armored_data = file_to_data_object (s->fpin, m->offset, m->length);\n          /* Invoke PGP if needed */\n          if (pgp_keyblock)\n          {\n            pgp_gpgme_extract_keys (armored_data, &pgpout, 1);\n          }\n          else if (!clearsign || (s->flags & M_VERIFY))\n            {\n              unsigned int sig_stat = 0;\n              gpgme_data_t plaintext;\n              gpgme_ctx_t ctx;\n\n              plaintext = create_gpgme_data ();\n              ctx = create_gpgme_context (0);\n\n              if (clearsign)\n                err = gpgme_op_verify (ctx, armored_data, NULL, plaintext);\n              else\n                {\n                  err = gpgme_op_decrypt_verify (ctx, armored_data, plaintext);\n                  if (gpg_err_code (err) == GPG_ERR_NO_DATA)\n                    {\n                      /* Decrypt verify can't handle signed only messages. */\n\t\t      err = (gpgme_data_seek (armored_data, 0, SEEK_SET) == -1)\n\t\t\t? gpgme_error_from_errno (errno) : 0;\n                      /* Must release plaintext so that we supply an\n                         uninitialized object. */\n                      gpgme_data_release (plaintext);\n                      plaintext = create_gpgme_data ();\n                      err = gpgme_op_verify (ctx, armored_data,\n                                             NULL, plaintext);\n                    }\n                }\n              mutt_need_hard_redraw ();\n\n              if (err)\n                {\n                  char errbuf[200];\n                  \n                  snprintf (errbuf, sizeof(errbuf)-1, \n                            _(\"Error: decryption/verification failed: %s\\n\"),\n                            gpgme_strerror (err));\n                  state_attach_puts (errbuf, s);\n                }\n              else\n                { /* Decryption/Verification succeeded */\n                  char *tmpfname;\n\n\t\t  {\n\t\t    /* Check whether signatures have been verified.  */\n\t\t    gpgme_verify_result_t verify_result;\n\n                    verify_result = gpgme_op_verify_result (ctx);\n\t\t    if (verify_result->signatures)\n\t\t      sig_stat = 1;\n\t\t  }\n\n                  have_any_sigs = 0;\n                  maybe_goodsig = 0;\n                  if ((s->flags & M_DISPLAY) && sig_stat)\n                    {\n                      int res, idx;\n                      int anybad = 0;\n\n                      state_attach_puts (_(\"[-- Begin signature \"\n                                           \"information --]\\n\"), s);\n                      have_any_sigs = 1;\n                      for(idx=0;\n                          (res = show_one_sig_status (ctx, idx, s)) != -1;\n                          idx++)\n                        {\n                          if (res == 1)\n                            anybad = 1;\n                        }\n                      if (!anybad && idx)\n                        maybe_goodsig = 1;\n                      \n                      state_attach_puts (_(\"[-- End signature \"\n                                           \"information --]\\n\\n\"), s);\n                    }\n\n                  tmpfname = data_object_to_tempfile (plaintext, NULL, &pgpout);\n                  if (!tmpfname)\n                    {\n                      pgpout = NULL;\n                      state_attach_puts (_(\"Error: copy data failed\\n\"), s);\n                    }\n                  else\n                    {\n                      unlink (tmpfname);\n                      FREE (&tmpfname);\n                    }\n                }\n              gpgme_data_release (plaintext);\n              gpgme_release (ctx);\n            }\n      \n          /*\n           * Now, copy cleartext to the screen.  NOTE - we expect that PGP\n           * outputs utf-8 cleartext.  This may not always be true, but it \n           * seems to be a reasonable guess.\n           */\n          \n          if(s->flags & M_DISPLAY)\n            {\n              if (needpass)\n            state_attach_puts (_(\"[-- BEGIN PGP MESSAGE --]\\n\\n\"), s);\n              else if (pgp_keyblock)\n                state_attach_puts (_(\"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"),\n                                   s);\n              else\n                state_attach_puts (_(\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\\n\"),\n                                   s);\n            }\n          \n          if (clearsign)\n            {\n              copy_clearsigned (armored_data, s, body_charset);\n            }\n          else if (pgpout)\n            {\n              FGETCONV *fc;\n              int c;\n              rewind (pgpout);\n              fc = fgetconv_open (pgpout, \"utf-8\", Charset, 0);\n              while ((c = fgetconv (fc)) != EOF)\n                {\n                  state_putc (c, s);\n                  if (c == '\\n' && s->prefix)\n                    state_puts (s->prefix, s);\n                }\n              fgetconv_close (&fc);\n            }\n          \n          if (s->flags & M_DISPLAY)\n            {\n              state_putc ('\\n', s);\n              if (needpass)\n                state_attach_puts (_(\"[-- END PGP MESSAGE --]\\n\"), s);\n              else if (pgp_keyblock)\n                state_attach_puts (_(\"[-- END PGP PUBLIC KEY BLOCK --]\\n\"), s);\n              else\n                state_attach_puts (_(\"[-- END PGP SIGNED MESSAGE --]\\n\"), s);\n            }\n          \n          gpgme_data_release (armored_data);\n          if (pgpout)\n            {\n              safe_fclose (&pgpout);\n            }\n        }\n      else\n      {\n\t/* A traditional PGP part may mix signed and unsigned content */\n        /* XXX - we may wish to recode here */\n        if (s->prefix)\n          state_puts (s->prefix, s);\n        state_puts (buf, s);\n      }\n    }\n\n  m->goodsig = (maybe_goodsig && have_any_sigs);\n  \n  if (needpass == -1)\n    {\n      state_attach_puts (_(\"[-- Error: could not find beginning\"\n                           \" of PGP message! --]\\n\\n\"), s);\n      return 1;\n    }\n  dprint (2, (debugfile, \"Leaving pgp_application_pgp handler\\n\"));\n\n  return err;\n}\n\n/* \n * Implementation of `encrypted_handler'.\n */\n\n/* MIME handler for pgp/mime encrypted messages.\n * This handler is passed the application/octet-stream directly.\n * The caller must propagate a->goodsig to its parent.\n */\nint pgp_gpgme_encrypted_handler (BODY *a, STATE *s)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  FILE *fpout;\n  BODY *tattach;\n  int is_signed;\n  int rc = 0;\n  \n  dprint (2, (debugfile, \"Entering pgp_encrypted handler\\n\"));\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (!(fpout = safe_fopen (tempfile, \"w+\")))\n    {\n      if (s->flags & M_DISPLAY)\n        state_attach_puts (_(\"[-- Error: could not create temporary file! \"\n                             \"--]\\n\"), s);\n      return -1;\n    }\n\n  tattach = decrypt_part (a, s, fpout, 0, &is_signed);\n  if (tattach)\n    {\n      tattach->goodsig = is_signed > 0;\n\n      if (s->flags & M_DISPLAY)\n        state_attach_puts (is_signed?\n          _(\"[-- The following data is PGP/MIME signed and encrypted --]\\n\\n\"):\n          _(\"[-- The following data is PGP/MIME encrypted --]\\n\\n\"),\n                           s);\n      \n      {\n        FILE *savefp = s->fpin;\n        s->fpin = fpout;\n        rc = mutt_body_handler (tattach, s);\n        s->fpin = savefp;\n      }\n\n      /* \n       * if a multipart/signed is the _only_ sub-part of a\n       * multipart/encrypted, cache signature verification\n       * status.\n       */\n      if (mutt_is_multipart_signed (tattach) && !tattach->next)\n        a->goodsig |= tattach->goodsig;\n    \n      if (s->flags & M_DISPLAY)\n        {\n          state_puts (\"\\n\", s);\n          state_attach_puts (is_signed?\n             _(\"[-- End of PGP/MIME signed and encrypted data --]\\n\"):\n             _(\"[-- End of PGP/MIME encrypted data --]\\n\"),\n                             s);\n        }\n\n      mutt_free_body (&tattach);\n      mutt_message _(\"PGP message successfully decrypted.\");\n    }\n  else\n    {\n      mutt_error _(\"Could not decrypt PGP message\");\n      mutt_sleep (2);\n      rc = -1;\n    }\n\n  safe_fclose (&fpout);\n  mutt_unlink(tempfile);\n  dprint (2, (debugfile, \"Leaving pgp_encrypted handler\\n\"));\n\n  return rc;\n}\n\n/* Support for application/smime */\nint smime_gpgme_application_handler (BODY *a, STATE *s)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  FILE *fpout;\n  BODY *tattach;\n  int is_signed;\n  int rc = 0;\n\n  dprint (2, (debugfile, \"Entering smime_encrypted handler\\n\"));\n  \n  a->warnsig = 0;\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (!(fpout = safe_fopen (tempfile, \"w+\")))\n    {\n      if (s->flags & M_DISPLAY)\n        state_attach_puts (_(\"[-- Error: could not create temporary file! \"\n                             \"--]\\n\"), s);\n      return -1;\n    }\n\n  tattach = decrypt_part (a, s, fpout, 1, &is_signed);\n  if (tattach)\n    {\n      tattach->goodsig = is_signed > 0;\n\n      if (s->flags & M_DISPLAY)\n        state_attach_puts (is_signed?\n          _(\"[-- The following data is S/MIME signed --]\\n\\n\"):\n          _(\"[-- The following data is S/MIME encrypted --]\\n\\n\"),\n                           s);\n      \n      {\n        FILE *savefp = s->fpin;\n        s->fpin = fpout;\n        rc = mutt_body_handler (tattach, s);\n        s->fpin = savefp;\n      }\n\n      /* \n       * if a multipart/signed is the _only_ sub-part of a\n       * multipart/encrypted, cache signature verification\n       * status.\n       */\n      if (mutt_is_multipart_signed (tattach) && !tattach->next)\n        {\n          if (!(a->goodsig = tattach->goodsig))\n            a->warnsig = tattach->warnsig;\n        }\n      else if (tattach->goodsig)\n        {\n          a->goodsig = 1;\n          a->warnsig = tattach->warnsig;\n        }\n\n      if (s->flags & M_DISPLAY)\n        {\n          state_puts (\"\\n\", s);\n          state_attach_puts (is_signed?\n             _(\"[-- End of S/MIME signed data --]\\n\"):\n             _(\"[-- End of S/MIME encrypted data --]\\n\"),\n                             s);\n        }\n\n      mutt_free_body (&tattach);\n    }\n  \n  safe_fclose (&fpout);\n  mutt_unlink(tempfile);\n  dprint (2, (debugfile, \"Leaving smime_encrypted handler\\n\"));\n  \n  return rc;\n}\n\n\n/*\n * Format an entry on the CRYPT key selection menu.\n * \n * %n\tnumber\n * %k\tkey id\t\t%K \tkey id of the principal key\n * %u\tuser id\n * %a\talgorithm\t%A      algorithm of the princ. key\n * %l\tlength\t\t%L\tlength of the princ. key\n * %f\tflags\t\t%F \tflags of the princ. key\n * %c\tcapabilities\t%C\tcapabilities of the princ. key\n * %t\ttrust/validity of the key-uid association\n * %p           protocol\n * %[...] date of key using strftime(3)\n */\n\nstatic const char *crypt_entry_fmt (char *dest,\n                                    size_t destlen,\n\t\t\t\t    size_t col,\n                                    char op,\n                                    const char *src,\n                                    const char *prefix,\n                                    const char *ifstring,\n                                    const char *elsestring,\n                                    unsigned long data,\n                                    format_flag flags)\n{\n  char fmt[16];\n  crypt_entry_t *entry;\n  crypt_key_t *key;\n  int kflags = 0;\n  int optional = (flags & M_FORMAT_OPTIONAL);\n  const char *s = NULL;\n  unsigned long val;\n\n  entry = (crypt_entry_t *) data;\n  key   = entry->key;\n\n/*    if (isupper ((unsigned char) op)) */\n/*      key = pkey; */\n\n  kflags = (key->flags /*| (pkey->flags & KEYFLAG_RESTRICTIONS)\n                         | uid->flags*/);\n  \n  switch (ascii_tolower (op))\n    {\n    case '[':\n      {\n\tconst char *cp;\n\tchar buf2[SHORT_STRING], *p;\n\tint do_locales;\n\tstruct tm *tm;\n\tsize_t len;\n\n\tp = dest;\n\n\tcp = src;\n\tif (*cp == '!')\n\t{\n\t  do_locales = 0;\n\t  cp++;\n\t}\n\telse\n\t  do_locales = 1;\n\n\tlen = destlen - 1;\n\twhile (len > 0 && *cp != ']')\n\t{\n\t  if (*cp == '%')\n\t  {\n\t    cp++;\n\t    if (len >= 2)\n\t    {\n\t      *p++ = '%';\n\t      *p++ = *cp;\n\t      len -= 2;\n\t    }\n\t    else\n\t      break; /* not enough space */\n\t    cp++;\n\t  }\n\t  else\n\t  {\n\t    *p++ = *cp++;\n\t    len--;\n\t  }\n\t}\n\t*p = 0;\n\n\tif (do_locales && Locale)\n\t  setlocale (LC_TIME, Locale);\n        \n        {\n\t  time_t tt = 0;\n\n\t  if (key->kobj->subkeys && (key->kobj->subkeys->timestamp > 0))\n\t    tt = key->kobj->subkeys->timestamp;\n\n          tm = localtime (&tt);\n        }\n\tstrftime (buf2, sizeof (buf2), dest, tm);\n\n\tif (do_locales)\n\t  setlocale (LC_TIME, \"C\");\n        \n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, buf2);\n\tif (len > 0)\n\t  src = cp + 1;\n      }\n      break;\n    case 'n':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (dest, destlen, fmt, entry->num);\n      }\n      break;\n    case 'k':\n      if (!optional)\n      {\n        /* fixme: we need a way to distinguish between main and subkeys.\n           Store the idx in entry? */\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, crypt_keyid (key));\n      }\n      break;\n    case 'u':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, key->uid);\n      }\n      break;\n    case 'a':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%s.3s\", prefix);\n\tif (key->kobj->subkeys)\n\t  s = gpgme_pubkey_algo_name (key->kobj->subkeys->pubkey_algo);\n\telse\n          s = \"?\";\n\tsnprintf (dest, destlen, fmt, s);\n      }\n      break;\n    case 'l':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%slu\", prefix);\n\tif (key->kobj->subkeys)\n\t  val = key->kobj->subkeys->length;\n\telse\n\t  val = 0;\n\tsnprintf (dest, destlen, fmt, val);\n      }\n      break;\n    case 'f':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sc\", prefix);\n\tsnprintf (dest, destlen, fmt, crypt_flags (kflags));\n      }\n      else if (!(kflags & (KEYFLAG_RESTRICTIONS)))\n        optional = 0;\n      break;\n    case 'c':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, crypt_key_abilities (kflags));\n      }\n      else if (!(kflags & (KEYFLAG_ABILITIES)))\n        optional = 0;\n      break;\n    case 't':\n      if ((kflags & KEYFLAG_ISX509))\n        s = \"x\";\n      else\n\t{\n          switch (key->validity)\n            {\n            case GPGME_VALIDITY_UNDEFINED:\n              s = \"q\";\n              break;\n            case GPGME_VALIDITY_NEVER:\n              s = \"n\";\n              break;\n            case GPGME_VALIDITY_MARGINAL:\n              s = \"m\";\n              break;\n            case GPGME_VALIDITY_FULL:\n              s = \"f\";\n              break;\n            case GPGME_VALIDITY_ULTIMATE:\n              s = \"u\";\n              break;\n            case GPGME_VALIDITY_UNKNOWN:\n            default:\n              s = \"?\";\n              break;\n            }\n\t}\n      snprintf (fmt, sizeof (fmt), \"%%%sc\", prefix);\n      snprintf (dest, destlen, fmt, s? *s: 'B');\n      break;\n    case 'p':\n      snprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n      snprintf (dest, destlen, fmt,\n                gpgme_get_protocol_name (key->kobj->protocol));\n      break;\n\n    default:\n      *dest = '\\0';\n  }\n\n  if (optional)\n    mutt_FormatString (dest, destlen, col, ifstring, mutt_attach_fmt, data, 0);\n  else if (flags & M_FORMAT_OPTIONAL)\n    mutt_FormatString (dest, destlen, col, elsestring, mutt_attach_fmt, data, 0);\n  return (src);\n}\n      \n/* Used by the display function to format a line. */\nstatic void crypt_entry (char *s, size_t l, MUTTMENU * menu, int num)\n{\n  crypt_key_t **key_table = (crypt_key_t **) menu->data;\n  crypt_entry_t entry;\n  \n  entry.key = key_table[num];\n  entry.num = num + 1;\n\n  mutt_FormatString (s, l, 0, NONULL (PgpEntryFormat), crypt_entry_fmt, \n\t\t     (unsigned long) &entry, M_FORMAT_ARROWCURSOR);\n}\n\n/* Compare two addresses and the keyid to be used for sorting. */\nstatic int _crypt_compare_address (const void *a, const void *b)\n{\n  crypt_key_t **s = (crypt_key_t **) a;\n  crypt_key_t **t = (crypt_key_t **) b;\n  int r;\n\n  if ((r = mutt_strcasecmp ((*s)->uid, (*t)->uid)))\n    return r > 0;\n  else\n    return mutt_strcasecmp (crypt_fpr_or_lkeyid (*s), crypt_fpr_or_lkeyid (*t)) > 0;\n}\n\nstatic int crypt_compare_address (const void *a, const void *b)\n{\n  return ((PgpSortKeys & SORT_REVERSE) ? !_crypt_compare_address (a, b)\n                                         :  _crypt_compare_address (a, b));\n}\n\n\n/* Compare two key IDs and the addresses to be used for sorting. */\nstatic int _crypt_compare_keyid (const void *a, const void *b)\n{\n  crypt_key_t **s = (crypt_key_t **) a;\n  crypt_key_t **t = (crypt_key_t **) b;\n  int r;\n\n  if ((r = mutt_strcasecmp (crypt_fpr_or_lkeyid (*s), crypt_fpr_or_lkeyid (*t))))\n    return r > 0;\n  else\n    return mutt_strcasecmp ((*s)->uid, (*t)->uid) > 0;\n}\n\nstatic int crypt_compare_keyid (const void *a, const void *b)\n{\n  return ((PgpSortKeys & SORT_REVERSE) ? !_crypt_compare_keyid (a, b)\n\t\t                         :  _crypt_compare_keyid (a, b));\n}\n\n/* Compare 2 creation dates and the addresses.  For sorting. */\nstatic int _crypt_compare_date (const void *a, const void *b)\n{\n  crypt_key_t **s = (crypt_key_t **) a;\n  crypt_key_t **t = (crypt_key_t **) b;\n  unsigned long ts = 0, tt = 0;\n\n  if ((*s)->kobj->subkeys && ((*s)->kobj->subkeys->timestamp > 0))\n    ts = (*s)->kobj->subkeys->timestamp;\n  if ((*t)->kobj->subkeys && ((*t)->kobj->subkeys->timestamp > 0))\n    tt = (*t)->kobj->subkeys->timestamp;\n\n  if (ts > tt)\n    return 1;\n  if (ts < tt)\n    return 0;\n\n  return mutt_strcasecmp ((*s)->uid, (*t)->uid) > 0;\n}\n\nstatic int crypt_compare_date (const void *a, const void *b)\n{\n  return ((PgpSortKeys & SORT_REVERSE) ? !_crypt_compare_date (a, b)\n                                         :  _crypt_compare_date (a, b));\n}\n\n/* Compare two trust values, the key length, the creation dates. the\n   addresses and the key IDs.  For sorting. */\nstatic int _crypt_compare_trust (const void *a, const void *b)\n{\n  crypt_key_t **s = (crypt_key_t **) a;\n  crypt_key_t **t = (crypt_key_t **) b;\n  unsigned long ts = 0, tt = 0;\n  int r;\n\n  if ((r = (((*s)->flags & (KEYFLAG_RESTRICTIONS))\n\t    - ((*t)->flags & (KEYFLAG_RESTRICTIONS)))))\n    return r > 0;\n\n  ts = (*s)->validity;\n  tt = (*t)->validity;\n  if ((r = (tt - ts)))\n    return r < 0;\n\n  if ((*s)->kobj->subkeys)\n    ts = (*s)->kobj->subkeys->length;\n  if ((*t)->kobj->subkeys)\n    tt = (*t)->kobj->subkeys->length;\n  if (ts != tt)\n    return ts > tt;\n\n  if ((*s)->kobj->subkeys && ((*s)->kobj->subkeys->timestamp > 0))\n    ts = (*s)->kobj->subkeys->timestamp;\n  if ((*t)->kobj->subkeys && ((*t)->kobj->subkeys->timestamp > 0))\n    tt = (*t)->kobj->subkeys->timestamp;\n  if (ts > tt)\n    return 1;\n  if (ts < tt)\n    return 0;\n\n  if ((r = mutt_strcasecmp ((*s)->uid, (*t)->uid)))\n    return r > 0;\n  return (mutt_strcasecmp (crypt_fpr_or_lkeyid ((*s)), crypt_fpr_or_lkeyid ((*t)))) > 0;\n}\n\nstatic int crypt_compare_trust (const void *a, const void *b)\n{\n  return ((PgpSortKeys & SORT_REVERSE) ? !_crypt_compare_trust (a, b)\n  \t\t\t\t       : _crypt_compare_trust (a, b));\n}\n\n/* Print the X.500 Distinguished Name part KEY from the array of parts\n   DN to FP. */\nstatic int\nprint_dn_part (FILE *fp, struct dn_array_s *dn, const char *key)\n{\n  int any = 0;\n\n  for (; dn->key; dn++)\n    {\n      if (!strcmp (dn->key, key))\n        {\n          if (any)\n            fputs (\" + \", fp);\n          print_utf8 (fp, dn->value, strlen (dn->value));\n          any = 1;\n        }\n    }\n  return any;\n}\n\n/* Print all parts of a DN in a standard sequence. */\nstatic void\nprint_dn_parts (FILE *fp, struct dn_array_s *dn)\n{\n  static const char * const stdpart[] = {\n    \"CN\", \"OU\", \"O\", \"STREET\", \"L\", \"ST\", \"C\", NULL \n  };\n  int any=0, any2=0, i;\n  \n  for (i=0; stdpart[i]; i++)\n    {\n      if (any)\n        fputs (\", \", fp);\n      any = print_dn_part (fp, dn, stdpart[i]);\n    }\n  /* now print the rest without any specific ordering */\n  for (; dn->key; dn++)\n    {\n      for (i=0; stdpart[i]; i++)\n        {\n          if (!strcmp (dn->key, stdpart[i]))\n            break;\n        }\n      if (!stdpart[i])\n        {\n          if (any)\n            fputs (\", \", fp);\n          if (!any2)\n            fputs (\"(\", fp);\n          any = print_dn_part (fp, dn, dn->key);\n          any2 = 1;\n        }\n    }\n  if (any2)\n    fputs (\")\", fp);\n}\n\n\n/* Parse an RDN; this is a helper to parse_dn(). */\nstatic const unsigned char *\nparse_dn_part (struct dn_array_s *array, const unsigned char *string)\n{\n  const unsigned char *s, *s1;\n  size_t n;\n  unsigned char *p;\n\n  /* parse attributeType */\n  for (s = string+1; *s && *s != '='; s++)\n    ;\n  if (!*s)\n    return NULL; /* error */\n  n = s - string;\n  if (!n)\n    return NULL; /* empty key */\n  array->key = safe_malloc (n+1);\n  p = (unsigned char *)array->key;\n  memcpy (p, string, n); /* fixme: trim trailing spaces */\n  p[n] = 0;\n  string = s + 1;\n\n  if (*string == '#')\n    { /* hexstring */\n      string++;\n      for (s=string; hexdigitp (s); s++)\n        s++;\n      n = s - string;\n      if (!n || (n & 1))\n        return NULL; /* empty or odd number of digits */\n      n /= 2;\n      p = safe_malloc (n+1);\n      array->value = (char*)p;\n      for (s1=string; n; s1 += 2, n--)\n        *p++ = xtoi_2 (s1);\n      *p = 0;\n   }\n  else\n    { /* regular v3 quoted string */\n      for (n=0, s=string; *s; s++)\n        {\n          if (*s == '\\\\')\n            { /* pair */\n              s++;\n              if (*s == ',' || *s == '=' || *s == '+'\n                  || *s == '<' || *s == '>' || *s == '#' || *s == ';' \n                  || *s == '\\\\' || *s == '\\\"' || *s == ' ')\n                n++;\n              else if (hexdigitp (s) && hexdigitp (s+1))\n                {\n                  s++;\n                  n++;\n                }\n              else\n                return NULL; /* invalid escape sequence */\n            }\n          else if (*s == '\\\"')\n            return NULL; /* invalid encoding */\n          else if (*s == ',' || *s == '=' || *s == '+'\n                   || *s == '<' || *s == '>' || *s == '#' || *s == ';' )\n            break; \n          else\n            n++;\n        }\n\n      p = safe_malloc (n+1);\n      array->value = (char*)p;\n      for (s=string; n; s++, n--)\n        {\n          if (*s == '\\\\')\n            { \n              s++;\n              if (hexdigitp (s))\n                {\n                  *p++ = xtoi_2 (s);\n                  s++;\n                }\n              else\n                *p++ = *s;\n            }\n          else\n            *p++ = *s;\n        }\n      *p = 0;\n    }\n  return s;\n}\n\n\n/* Parse a DN and return an array-ized one.  This is not a validating\n   parser and it does not support any old-stylish syntax; gpgme is\n   expected to return only rfc2253 compatible strings. */\nstatic struct dn_array_s *\nparse_dn (const unsigned char *string)\n{\n  struct dn_array_s *array;\n  size_t arrayidx, arraysize;\n  int i;\n\n  arraysize = 7; /* C,ST,L,O,OU,CN,email */\n  array = safe_malloc ((arraysize+1) * sizeof *array);\n  arrayidx = 0;\n  while (*string)\n    {\n      while (*string == ' ')\n        string++;\n      if (!*string)\n        break; /* ready */\n      if (arrayidx >= arraysize)\n        { /* mutt lacks a real safe_realoc - so we need to copy */\n          struct dn_array_s *a2;\n\n          arraysize += 5;\n          a2 = safe_malloc ((arraysize+1) * sizeof *array);\n          for (i=0; i < arrayidx; i++)\n            {\n              a2[i].key = array[i].key;\n              a2[i].value = array[i].value;\n            }\n          FREE (&array);\n          array = a2;\n        }\n      array[arrayidx].key = NULL;\n      array[arrayidx].value = NULL;\n      string = parse_dn_part (array+arrayidx, string);\n      arrayidx++;\n      if (!string)\n        goto failure;\n      while (*string == ' ')\n        string++;\n      if (*string && *string != ',' && *string != ';' && *string != '+')\n        goto failure; /* invalid delimiter */\n      if (*string)\n        string++;\n    }\n  array[arrayidx].key = NULL;\n  array[arrayidx].value = NULL;\n  return array;\n\n failure:\n  for (i=0; i < arrayidx; i++)\n    {\n      FREE (&array[i].key);\n      FREE (&array[i].value);\n    }\n  FREE (&array);\n  return NULL;\n}\n\n\n/* Print a nice representation of the USERID and make sure it is\n   displayed in a proper way, which does mean to reorder some parts\n   for S/MIME's DNs.  USERID is a string as returned by the gpgme key\n   functions.  It is utf-8 encoded. */\nstatic void\nparse_and_print_user_id (FILE *fp, const char *userid)\n{\n  const char *s;\n  int i;\n\n  if (*userid == '<')\n    {\n      s = strchr (userid+1, '>');\n      if (s)\n        print_utf8 (fp, userid+1, s-userid-1);\n    }\n  else if (*userid == '(')\n    fputs (_(\"[Can't display this user ID (unknown encoding)]\"), fp);\n  else if (!digit_or_letter ((const unsigned char *)userid))\n    fputs (_(\"[Can't display this user ID (invalid encoding)]\"), fp);\n  else\n    {\n      struct dn_array_s *dn = parse_dn ((const unsigned char *)userid);\n      if (!dn)\n        fputs (_(\"[Can't display this user ID (invalid DN)]\"), fp);\n      else \n        {\n          print_dn_parts (fp, dn);          \n          for (i=0; dn[i].key; i++)\n            {\n              FREE (&dn[i].key);\n              FREE (&dn[i].value);\n            }\n          FREE (&dn);\n        }\n    }\n}\n\ntypedef enum\n  {\n    KEY_CAP_CAN_ENCRYPT,\n    KEY_CAP_CAN_SIGN,\n    KEY_CAP_CAN_CERTIFY\n  }\nkey_cap_t;\n\nstatic unsigned int\nkey_check_cap (gpgme_key_t key, key_cap_t cap)\n{\n  gpgme_subkey_t subkey = NULL;\n  unsigned int ret = 0;\n\n  switch (cap)\n    {\n    case KEY_CAP_CAN_ENCRYPT:\n      if (! (ret = key->can_encrypt))\n\tfor (subkey = key->subkeys; subkey; subkey = subkey->next)\n\t  if ((ret = subkey->can_encrypt))\n\t    break;\n      break;\n    case KEY_CAP_CAN_SIGN:\n      if (! (ret = key->can_sign))\n\tfor (subkey = key->subkeys; subkey; subkey = subkey->next)\n\t  if ((ret = subkey->can_sign))\n\t    break;\n      break;\n    case KEY_CAP_CAN_CERTIFY:\n      if (! (ret = key->can_certify))\n\tfor (subkey = key->subkeys; subkey; subkey = subkey->next)\n\t  if ((ret = subkey->can_certify))\n\t    break;\n      break;\n    }\n\n  return ret;\n}\n\n\n/* Print verbose information about a key or certificate to FP. */\nstatic void print_key_info (gpgme_key_t key, FILE *fp)\n{\n  int idx;\n  const char *s = NULL, *s2 = NULL;\n  time_t tt = 0;\n  struct tm *tm;\n  char shortbuf[SHORT_STRING];\n  unsigned long aval = 0;\n  const char *delim;\n  int is_pgp = 0;\n  int i;\n  gpgme_user_id_t uid = NULL;\n\n  if (Locale)\n    setlocale (LC_TIME, Locale);\n\n  is_pgp = key->protocol == GPGME_PROTOCOL_OpenPGP;\n\n  for (idx = 0, uid = key->uids; uid; idx++, uid = uid->next)\n    {\n      if (uid->revoked)\n        continue;\n\n      s = uid->uid;\n      /* L10N:\n         Fill dots to make the DOTFILL entries the same length.\n         In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n         Your language may vary. */\n      fputs (idx ? _(\" aka ......: \") :_(\"Name ......: \"), fp);\n      if (uid->invalid)\n        {\n          fputs (_(\"[Invalid]\"), fp);\n          putc (' ', fp);\n        }\n      if (is_pgp)\n        print_utf8 (fp, s, strlen(s));\n      else\n        parse_and_print_user_id (fp, s);\n      putc ('\\n', fp);\n    }\n\n  if (key->subkeys && (key->subkeys->timestamp > 0))\n    {\n      tt = key->subkeys->timestamp;\n\n      tm = localtime (&tt);\n#ifdef HAVE_LANGINFO_D_T_FMT\n      strftime (shortbuf, sizeof shortbuf, nl_langinfo (D_T_FMT), tm);\n#else\n      strftime (shortbuf, sizeof shortbuf, \"%c\", tm);\n#endif\n      /* L10N: DOTFILL */\n      fprintf (fp, _(\"Valid From : %s\\n\"), shortbuf);\n    }\n  \n  if (key->subkeys && (key->subkeys->expires > 0))\n    {\n      tt = key->subkeys->expires;\n      \n      tm = localtime (&tt);\n#ifdef HAVE_LANGINFO_D_T_FMT\n      strftime (shortbuf, sizeof shortbuf, nl_langinfo (D_T_FMT), tm);\n#else\n      strftime (shortbuf, sizeof shortbuf, \"%c\", tm);\n#endif\n      /* L10N: DOTFILL */\n      fprintf (fp, _(\"Valid To ..: %s\\n\"), shortbuf);\n    }\n\n  if (key->subkeys)\n    s = gpgme_pubkey_algo_name (key->subkeys->pubkey_algo);\n  else\n    s = \"?\";\n\n  s2 = is_pgp ? \"PGP\" : \"X.509\";\n\n  if (key->subkeys)\n    aval = key->subkeys->length;\n\n  /* L10N: DOTFILL */\n  fprintf (fp, _(\"Key Type ..: %s, %lu bit %s\\n\"), s2, aval, s);\n\n  /* L10N: DOTFILL */\n  fprintf (fp, _(\"Key Usage .: \"));\n  delim = \"\";\n\n  if (key_check_cap (key, KEY_CAP_CAN_ENCRYPT))\n    {\n      fprintf (fp, \"%s%s\", delim, _(\"encryption\"));\n      delim = _(\", \");\n    }\n  if (key_check_cap (key, KEY_CAP_CAN_SIGN))\n    {\n      fprintf (fp, \"%s%s\", delim, _(\"signing\"));\n      delim = _(\", \");\n    }\n  if (key_check_cap (key, KEY_CAP_CAN_CERTIFY))\n    {\n      fprintf (fp, \"%s%s\", delim, _(\"certification\"));\n      delim = _(\", \");\n    }\n  putc ('\\n', fp);\n\n  if (key->subkeys)\n    {\n      s = key->subkeys->fpr;\n      /* L10N: DOTFILL */\n      fputs (_(\"Fingerprint: \"), fp);\n      if (is_pgp && strlen (s) == 40)\n        {\n          for (i=0; *s && s[1] && s[2] && s[3] && s[4]; s += 4, i++)\n            {\n              putc (*s, fp);\n              putc (s[1], fp);\n              putc (s[2], fp);\n              putc (s[3], fp);\n              putc (is_pgp? ' ':':', fp);\n              if (is_pgp && i == 4)\n                putc (' ', fp);\n            }\n        }\n      else\n        {\n          for (i=0; *s && s[1] && s[2]; s += 2, i++)\n            {\n              putc (*s, fp);\n              putc (s[1], fp);\n              putc (is_pgp? ' ':':', fp);\n              if (is_pgp && i == 7)\n                putc (' ', fp);\n            }\n        }\n      fprintf (fp, \"%s\\n\", s);\n    }\n\n  if (key->issuer_serial)\n    {\n      s = key->issuer_serial;\n      if (s)\n        /* L10N: DOTFILL */\n\tfprintf (fp, _(\"Serial-No .: 0x%s\\n\"), s);\n    }\n\n  if (key->issuer_name)\n    {\n      s = key->issuer_name;\n      if (s)\n\t{\n          /* L10N: DOTFILL */\n\t  fprintf (fp, _(\"Issued By .: \"));\n\t  parse_and_print_user_id (fp, s);\n\t  putc ('\\n', fp);\n\t}\n    }\n\n  /* For PGP we list all subkeys. */\n  if (is_pgp)\n    {\n      gpgme_subkey_t subkey = NULL;\n\n      for (idx = 1, subkey = key->subkeys; subkey;\n           idx++, subkey = subkey->next)\n        {\n\t  s = subkey->keyid;\n\t  \n          putc ('\\n', fp);\n          if ( strlen (s) == 16)\n            s += 8; /* display only the short keyID */\n          /* L10N: DOTFILL */\n          fprintf (fp, _(\"Subkey ....: 0x%s\"), s);\n\t  if (subkey->revoked)\n            {\n              putc (' ', fp);\n              fputs (_(\"[Revoked]\"), fp);\n            }\n\t  if (subkey->invalid)\n            {\n              putc (' ', fp);\n              fputs (_(\"[Invalid]\"), fp);\n            }\n\t  if (subkey->expired)\n            {\n              putc (' ', fp);\n              fputs (_(\"[Expired]\"), fp);\n            }\n\t  if (subkey->disabled)\n            {\n              putc (' ', fp);\n              fputs (_(\"[Disabled]\"), fp);\n            }\n          putc ('\\n', fp);\n\n\t  if (subkey->timestamp > 0)\n\t    {\n\t      tt = subkey->timestamp;\n\n              tm = localtime (&tt);\n#ifdef HAVE_LANGINFO_D_T_FMT\n              strftime (shortbuf, sizeof shortbuf, nl_langinfo (D_T_FMT), tm);\n#else\n              strftime (shortbuf, sizeof shortbuf, \"%c\", tm);\n#endif\n              /* L10N: DOTFILL */\n              fprintf (fp, _(\"Valid From : %s\\n\"), shortbuf);\n            }\n\n\t  if (subkey->expires > 0)\n\t    {\n\t      tt = subkey->expires;\n\n              tm = localtime (&tt);\n#ifdef HAVE_LANGINFO_D_T_FMT\n              strftime (shortbuf, sizeof shortbuf, nl_langinfo (D_T_FMT), tm);\n#else\n              strftime (shortbuf, sizeof shortbuf, \"%c\", tm);\n#endif\n              /* L10N: DOTFILL */\n              fprintf (fp, _(\"Valid To ..: %s\\n\"), shortbuf);\n            }\n\n\t  if (subkey)\n\t    s = gpgme_pubkey_algo_name (subkey->pubkey_algo);\n\t  else\n            s = \"?\";\n\n\t  if (subkey)\n\t    aval = subkey->length;\n\t  else\n\t    aval = 0;\n\n          /* L10N: DOTFILL */\n          fprintf (fp, _(\"Key Type ..: %s, %lu bit %s\\n\"), \"PGP\", aval, s);\n\n          /* L10N: DOTFILL */\n          fprintf (fp, _(\"Key Usage .: \"));\n          delim = \"\";\n\n\t  if (subkey->can_encrypt)\n            {\n              fprintf (fp, \"%s%s\", delim, _(\"encryption\"));\n              delim = _(\", \");\n            }\n          if (subkey->can_sign)\n            {\n              fprintf (fp, \"%s%s\", delim, _(\"signing\"));\n              delim = _(\", \");\n            }\n          if (subkey->can_certify)\n            {\n              fprintf (fp, \"%s%s\", delim, _(\"certification\"));\n              delim = _(\", \");\n            }\n          putc ('\\n', fp);\n        }\n    }\n\n  if (Locale)\n    setlocale (LC_TIME, \"C\");\n}\n\n\n/* Show detailed information about the selected key */\nstatic void \nverify_key (crypt_key_t *key)\n{\n  FILE *fp;\n  char cmd[LONG_STRING], tempfile[_POSIX_PATH_MAX];\n  const char *s;\n  gpgme_ctx_t listctx = NULL;\n  gpgme_error_t err;\n  gpgme_key_t k = NULL;\n  int maxdepth = 100;\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (!(fp = safe_fopen (tempfile, \"w\")))\n    {\n      mutt_perror _(\"Can't create temporary file\");\n      return;\n    }\n  mutt_message _(\"Collecting data...\");\n\n  print_key_info (key->kobj, fp);\n\n  err = gpgme_new (&listctx);\n  if (err)\n    {\n      fprintf (fp, \"Internal error: can't create gpgme context: %s\\n\",\n               gpgme_strerror (err));\n      goto leave;\n    }\n  if ((key->flags & KEYFLAG_ISX509))\n      gpgme_set_protocol (listctx, GPGME_PROTOCOL_CMS);\n\n  k = key->kobj;\n  gpgme_key_ref (k);\n  while ((s = k->chain_id) && k->subkeys && strcmp (s, k->subkeys->fpr) )\n    {\n      putc ('\\n', fp);\n      err = gpgme_op_keylist_start (listctx, s, 0);\n      gpgme_key_unref (k);\n      k = NULL;\n      if (!err)\n\terr = gpgme_op_keylist_next (listctx, &k);\n      if (err)\n        {\n          fprintf (fp, _(\"Error finding issuer key: %s\\n\"),\n                   gpgme_strerror (err));\n          goto leave;\n        }\n      gpgme_op_keylist_end (listctx);\n      \n      print_key_info (k, fp);\n      if (!--maxdepth)\n        {\n          putc ('\\n', fp);\n          fputs (_(\"Error: certification chain too long - stopping here\\n\"),\n                 fp);\n          break;\n        }\n    }\n\n leave:\n  gpgme_key_unref (k);\n  gpgme_release (listctx);\n  safe_fclose (&fp);\n  mutt_clear_error ();\n  snprintf (cmd, sizeof (cmd), _(\"Key ID: 0x%s\"),  crypt_keyid (key));\n  mutt_do_pager (cmd, tempfile, 0, NULL);\n}\n\n/* \n * Implementation of `findkeys'.\n */\n\n\n/* Convert LIST into a pattern string suitable to be passed to GPGME.\n   We need to convert spaces in an item into a '+' and '%' into\n   \"%25\". */\nstatic char *list_to_pattern (LIST *list)\n{\n  LIST *l;\n  char *pattern, *p;\n  const char *s;\n  size_t n;\n\n  n = 0;\n  for(l=list; l; l = l->next)\n    {\n      for(s = l->data; *s; s++)\n        {\n          if (*s == '%')\n            n += 2;\n          n++;\n        }\n      n++; /* delimiter or end of string */\n    }\n  n++; /* make sure to allocate at least one byte */\n  pattern = p = safe_calloc (1,n);\n  for(l=list; l; l = l->next)\n    {\n      s = l->data;\n      if (*s)\n        {\n          if (l != list)\n            *p++ = ' ';\n          for(s = l->data; *s; s++)\n            {\n              if (*s == '%')\n                {\n                  *p++ = '%';\n                  *p++ = '2';\n                  *p++ = '5';\n                }\n              else if (*s == '+')\n                {\n                  *p++ = '%';\n                  *p++ = '2';\n                  *p++ = 'B';\n                }\n              else if (*s == ' ')\n                *p++ = '+';\n              else\n                *p++ = *s;\n            }\n        }\n    }\n  *p = 0;\n  return pattern;\n}\n\n/* Return a list of keys which are candidates for the selection.\n   Select by looking at the HINTS list. */\nstatic crypt_key_t *get_candidates (LIST * hints, unsigned int app, int secret)\n{\n  crypt_key_t *db, *k, **kend;\n  char *pattern;\n  gpgme_error_t err;\n  gpgme_ctx_t ctx;\n  gpgme_key_t key;\n  int idx;\n  gpgme_user_id_t uid = NULL;\n\n  pattern = list_to_pattern (hints);\n  if (!pattern)\n    return NULL;\n  \n  err = gpgme_new (&ctx);\n  if (err) \n    {\n      mutt_error (_(\"gpgme_new failed: %s\"), gpgme_strerror (err));\n      FREE (&pattern);\n      return NULL;\n    }\n\n  db = NULL;\n  kend = &db;\n  \n  if ((app & APPLICATION_PGP))\n    {\n      /* Its all a mess.  That old GPGME expects different things\n         depending on the protocol.  For gpg we don' t need percent\n         escaped pappert but simple strings passed in an array to the\n         keylist_ext_start function. */\n      LIST *l;\n      size_t n;\n      char **patarr;\n\n      for(l=hints, n=0; l; l = l->next)\n        {\n          if (l->data && *l->data)\n            n++;\n        }\n      if (!n)\n        goto no_pgphints;\n\n      patarr = safe_calloc (n+1, sizeof *patarr);\n      for(l=hints, n=0; l; l = l->next)\n        {\n          if (l->data && *l->data)\n            patarr[n++] = safe_strdup (l->data);\n        }\n      patarr[n] = NULL;\n      err = gpgme_op_keylist_ext_start (ctx, (const char**)patarr, secret, 0);\n      for (n=0; patarr[n]; n++)\n        FREE (&patarr[n]);\n      FREE (&patarr);\n      if (err) \n        {\n          mutt_error (_(\"gpgme_op_keylist_start failed: %s\"),\n                      gpgme_strerror (err));\n          gpgme_release (ctx);\n          FREE (&pattern);\n          return NULL;\n        }\n\n      while (!(err = gpgme_op_keylist_next (ctx, &key)) )\n        {\n          unsigned int flags = 0;\n\t  \n\t  if (key_check_cap (key, KEY_CAP_CAN_ENCRYPT))\n            flags |= KEYFLAG_CANENCRYPT;\n\t  if (key_check_cap (key, KEY_CAP_CAN_SIGN))\n            flags |= KEYFLAG_CANSIGN;\n\n          if (key->revoked)\n            flags |= KEYFLAG_REVOKED;\n          if (key->expired)\n            flags |= KEYFLAG_EXPIRED;\n          if (key->disabled)\n            flags |= KEYFLAG_DISABLED;\n\n#if 0 /* DISABLED code */\n          if (!flags)\n            {\n\t      /* Bug in gpg.  Capabilities are not listed for secret\n\t\t keys.  Try to deduce them from the algorithm. */\n\n\t      switch (key->subkeys[0].pubkey_algo)\n                {\n                case GPGME_PK_RSA:\n                  flags |= KEYFLAG_CANENCRYPT;\n                  flags |= KEYFLAG_CANSIGN;\n                  break;\n                case GPGME_PK_ELG_E:\n                  flags |= KEYFLAG_CANENCRYPT;\n                  break;\n                case GPGME_PK_DSA:\n                  flags |= KEYFLAG_CANSIGN;\n                  break;\n                }\n            }\n#endif /* DISABLED code */\n\n\t  for (idx = 0, uid = key->uids; uid; idx++, uid = uid->next)\n            {\n              k = safe_calloc (1, sizeof *k);\n              k->kobj = key;\n              gpgme_key_ref (k->kobj);\n              k->idx = idx;\n              k->uid = uid->uid;\n              k->flags = flags;\n              if (uid->revoked)\n                k->flags |= KEYFLAG_REVOKED;\n              k->validity = uid->validity;\n              *kend = k;\n              kend = &k->next;\n            }\n          gpgme_key_unref (key);\n        }\n      if (gpg_err_code (err) != GPG_ERR_EOF)\n        mutt_error (_(\"gpgme_op_keylist_next failed: %s\"), gpgme_strerror (err));\n      gpgme_op_keylist_end (ctx);\n    no_pgphints:\n      ;\n    }\n\n  if ((app & APPLICATION_SMIME))\n    {\n      /* and now look for x509 certificates */\n      gpgme_set_protocol (ctx, GPGME_PROTOCOL_CMS);\n      err = gpgme_op_keylist_start (ctx, pattern, 0);\n      if (err) \n        {\n          mutt_error (_(\"gpgme_op_keylist_start failed: %s\"),\n                      gpgme_strerror (err));\n          gpgme_release (ctx);\n          FREE (&pattern);\n          return NULL;\n        }\n\n      while (!(err = gpgme_op_keylist_next (ctx, &key)) )\n        {\n          unsigned int flags = KEYFLAG_ISX509;\n\n\t  if (key_check_cap (key, KEY_CAP_CAN_ENCRYPT))\n            flags |= KEYFLAG_CANENCRYPT;\n\t  if (key_check_cap (key, KEY_CAP_CAN_SIGN))\n            flags |= KEYFLAG_CANSIGN;\n          \n\t  for (idx = 0, uid = key->uids; uid; idx++, uid = uid->next)\n            {\n              k = safe_calloc (1, sizeof *k);\n              k->kobj = key;\n              gpgme_key_ref (k->kobj);\n              k->idx = idx;\n              k->uid = uid->uid;\n              k->flags = flags;\n              k->validity = uid->validity;\n              *kend = k;\n              kend = &k->next;\n            }\n          gpgme_key_unref (key);\n        }\n      if (gpg_err_code (err) != GPG_ERR_EOF)\n        mutt_error (_(\"gpgme_op_keylist_next failed: %s\"), gpgme_strerror (err));\n      gpgme_op_keylist_end (ctx);\n    }\n\n  gpgme_release (ctx);\n  FREE (&pattern);\n  return db;\n}\n\n/* Add the string STR to the list HINTS.  This list is later used to\n   match addresses. */\nstatic LIST *crypt_add_string_to_hints (LIST *hints, const char *str)\n{\n  char *scratch;\n  char *t;\n\n  if ((scratch = safe_strdup (str)) == NULL)\n    return hints;\n\n  for (t = strtok (scratch, \" ,.:\\\"()<>\\n\"); t;\n       t = strtok (NULL, \" ,.:\\\"()<>\\n\"))\n    {\n      if (strlen (t) > 3)\n        hints = mutt_add_list (hints, t);\n    }\n  \n  FREE (&scratch);\n  return hints;\n}\n\n/* Display a menu to select a key from the array KEYS. FORCED_VALID\n   will be set to true on return if the user did override the the\n   key's validity. */\nstatic crypt_key_t *crypt_select_key (crypt_key_t *keys,\n                                      ADDRESS * p, const char *s, \n                                      unsigned int app, int *forced_valid)\n{\n  int keymax;\n  crypt_key_t **key_table;\n  MUTTMENU *menu;\n  int i, done = 0;\n  char helpstr[LONG_STRING], buf[LONG_STRING];\n  crypt_key_t *k;\n  int (*f) (const void *, const void *);\n  int menu_to_use = 0;\n  int unusable = 0;\n\n  *forced_valid = 0;\n\n  /* build the key table */\n  keymax = i = 0;\n  key_table = NULL;\n  for (k = keys; k; k = k->next)\n    {\n      if (!option (OPTPGPSHOWUNUSABLE) && (k->flags & KEYFLAG_CANTUSE))\n        {\n          unusable = 1;\n          continue;\n        }\n      \n      if (i == keymax)\n        {\n          keymax += 20;\n          safe_realloc (&key_table, sizeof (crypt_key_t*)*keymax);\n        }\n      \n      key_table[i++] = k;\n    }\n\n  if (!i && unusable)\n    {\n      mutt_error _(\"All matching keys are marked expired/revoked.\");\n      mutt_sleep (1);\n      return NULL;\n    }\n\n  switch (PgpSortKeys & SORT_MASK)\n  {\n    case SORT_DATE:\n      f = crypt_compare_date;\n      break;\n    case SORT_KEYID:\n      f = crypt_compare_keyid;\n      break;\n    case SORT_ADDRESS:\n      f = crypt_compare_address;\n      break;\n    case SORT_TRUST:\n    default:\n      f = crypt_compare_trust;\n      break;\n  }\n  qsort (key_table, i, sizeof (crypt_key_t*), f);\n\n  if (app & APPLICATION_PGP)\n    menu_to_use = MENU_KEY_SELECT_PGP;\n  else if (app & APPLICATION_SMIME)\n    menu_to_use = MENU_KEY_SELECT_SMIME;\n\n  helpstr[0] = 0;\n  mutt_make_help (buf, sizeof (buf), _(\"Exit  \"), menu_to_use, OP_EXIT);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n  mutt_make_help (buf, sizeof (buf), _(\"Select  \"), menu_to_use,\n\t\t  OP_GENERIC_SELECT_ENTRY);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n  mutt_make_help (buf, sizeof (buf), _(\"Check key  \"),\n                  menu_to_use, OP_VERIFY_KEY);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n  mutt_make_help (buf, sizeof (buf), _(\"Help\"), menu_to_use, OP_HELP);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n\n  menu = mutt_new_menu (menu_to_use);\n  menu->max = i;\n  menu->make_entry = crypt_entry;\n  menu->help = helpstr;\n  menu->data = key_table;\n\n  {\n    const char *ts;\n\n    if ((app & APPLICATION_PGP) && (app &  APPLICATION_SMIME))\n      ts = _(\"PGP and S/MIME keys matching\");\n    else if ((app & APPLICATION_PGP))\n      ts = _(\"PGP keys matching\");\n    else if ((app & APPLICATION_SMIME))\n      ts = _(\"S/MIME keys matching\");\n    else\n      ts = _(\"keys matching\");\n\n    if (p)\n      /* L10N:\n         %1$s is one of the previous four entries.\n         %2$s is an address.\n         e.g. \"S/MIME keys matching <me@mutt.org>.\" */\n      snprintf (buf, sizeof (buf), _(\"%s <%s>.\"), ts, p->mailbox);\n    else\n      /* L10N:\n         e.g. 'S/MIME keys matching \"Michael Elkins\".' */\n      snprintf (buf, sizeof (buf), _(\"%s \\\"%s\\\".\"), ts, s);\n    menu->title = buf; \n  }\n\n  mutt_clear_error ();\n  k = NULL;\n  while (!done)\n    {\n      *forced_valid = 0;\n      switch (mutt_menuLoop (menu))\n        {\n        case OP_VERIFY_KEY:\n          verify_key (key_table[menu->current]);\n          menu->redraw = REDRAW_FULL;\n          break;\n          \n        case OP_VIEW_ID:\n          mutt_message (\"%s\", key_table[menu->current]->uid);\n          break;\n          \n        case OP_GENERIC_SELECT_ENTRY:\n          /* FIXME make error reporting more verbose - this should be\n             easy because gpgme provides more information */\n          if (option (OPTPGPCHECKTRUST))\n            {\n            if (!crypt_key_is_valid (key_table[menu->current]))\n              {\n                mutt_error _(\"This key can't be used: \"\n                             \"expired/disabled/revoked.\");\n                break;\n              }\n            }\n          \n          if (option (OPTPGPCHECKTRUST) &&\n              (!crypt_id_is_valid (key_table[menu->current])\n               || !crypt_id_is_strong (key_table[menu->current])))\n            {\n              const char *warn_s;\n              char buff[LONG_STRING];\n              \n              if (key_table[menu->current]->flags & KEYFLAG_CANTUSE)\n                warn_s = N_(\"ID is expired/disabled/revoked.\");\n              else \n                {\n                  warn_s = \"??\";\n                  switch (key_table[menu->current]->validity)\n                    {\n                    case GPGME_VALIDITY_UNKNOWN:   \n                    case GPGME_VALIDITY_UNDEFINED: \n                      warn_s = N_(\"ID has undefined validity.\");\n                      break;\n                    case GPGME_VALIDITY_NEVER:     \n                      warn_s = N_(\"ID is not valid.\");\n                      break;\n                    case GPGME_VALIDITY_MARGINAL:  \n                      warn_s = N_(\"ID is only marginally valid.\");\n                      break;\n                    case GPGME_VALIDITY_FULL:      \n                    case GPGME_VALIDITY_ULTIMATE:  \n                      break;\n                    }\n                }\n\n              snprintf (buff, sizeof (buff),\n                        _(\"%s Do you really want to use the key?\"),\n                        _(warn_s));\n              \n              if (mutt_yesorno (buff, 0) != 1)\n                {\n                  mutt_clear_error ();\n                  break;\n                }\n              *forced_valid = 1;\n            }  \n\n          k = crypt_copy_key (key_table[menu->current]);\n          done = 1;\n          break;\n          \n        case OP_EXIT:\n          k = NULL;\n          done = 1;\n          break;\n        }\n    }\n  \n  mutt_menuDestroy (&menu);\n  FREE (&key_table);\n\n  set_option (OPTNEEDREDRAW);\n  \n  return k;\n}\n\nstatic crypt_key_t *crypt_getkeybyaddr (ADDRESS * a, short abilities,\n\t\t\t\t\tunsigned int app, int *forced_valid,\n\t\t\t\t\tint oppenc_mode)\n{\n  ADDRESS *r, *p;\n  LIST *hints = NULL;\n\n  int weak    = 0;\n  int invalid = 0;\n  int addr_match = 0;\n  int multi   = 0;\n  int this_key_has_strong;\n  int this_key_has_addr_match;\n  int this_key_has_weak;\n  int this_key_has_invalid;\n  int match;\n\n  crypt_key_t *keys, *k;\n  crypt_key_t *the_strong_valid_key = NULL;\n  crypt_key_t *a_valid_addrmatch_key = NULL;\n  crypt_key_t *matches = NULL;\n  crypt_key_t **matches_endp = &matches;\n  \n  *forced_valid = 0;\n\n  if (a && a->mailbox)\n    hints = crypt_add_string_to_hints (hints, a->mailbox);\n  if (a && a->personal)\n    hints = crypt_add_string_to_hints (hints, a->personal);\n\n  if (! oppenc_mode )\n    mutt_message (_(\"Looking for keys matching \\\"%s\\\"...\"), a->mailbox);\n  keys = get_candidates (hints, app, (abilities & KEYFLAG_CANSIGN) );\n\n  mutt_free_list (&hints);\n  \n  if (!keys)\n    return NULL;\n  \n  dprint (5, (debugfile, \"crypt_getkeybyaddr: looking for %s <%s>.\",\n\t      a->personal, a->mailbox));\n\n  for (k = keys; k; k = k->next)\n    {\n      dprint (5, (debugfile, \"  looking at key: %s `%.15s'\\n\",\n                  crypt_keyid (k), k->uid));\n      \n      if (abilities && !(k->flags & abilities))\n        {\n          dprint (5, (debugfile, \"  insufficient abilities: Has %x, want %x\\n\",\n                      k->flags, abilities));\n          continue;\n        }\n\n      this_key_has_weak    = 0;\t/* weak but valid match   */\n      this_key_has_invalid = 0;   /* invalid match          */\n      this_key_has_strong  = 0;\t/* strong and valid match */\n      this_key_has_addr_match = 0;\n      match                = 0;   /* any match \t\t  */\n\n      r = rfc822_parse_adrlist (NULL, k->uid);\n      for (p = r; p; p = p->next)\n        {\n          int validity = crypt_id_matches_addr (a, p, k);\n              \n          if (validity & CRYPT_KV_MATCH)\t/* something matches */\n          {\n            match = 1;\n\n            if (validity & CRYPT_KV_VALID)\n            {\n              if (validity & CRYPT_KV_ADDR)\n              {\n                if (validity & CRYPT_KV_STRONGID)\n                {\n                  if (the_strong_valid_key\n                      && the_strong_valid_key->kobj != k->kobj)\n                    multi             = 1;\n                  this_key_has_strong = 1;\n                }\n                else\n                  this_key_has_addr_match = 1;\n              }\n              else\n                this_key_has_weak = 1;\n            }\n            else\n              this_key_has_invalid = 1;\n          }\n        }\n      rfc822_free_address (&r);\n      \n      if (match)\n        {\n          crypt_key_t *tmp;\n\n          *matches_endp = tmp = crypt_copy_key (k);\n          matches_endp = &tmp->next;\n\n          if (this_key_has_strong)\n            the_strong_valid_key = tmp;\n          else if (this_key_has_addr_match)\n          {\n            addr_match = 1;\n            a_valid_addrmatch_key = tmp;\n          }\n          else if (this_key_has_invalid)\n            invalid = 1;\n          else if (this_key_has_weak)\n            weak = 1;\n        }\n    }\n  \n  crypt_free_key (&keys);\n  \n  if (matches)\n    {\n      if (oppenc_mode)\n        {\n          if (the_strong_valid_key)\n            k = crypt_copy_key (the_strong_valid_key);\n          else if (a_valid_addrmatch_key)\n            k = crypt_copy_key (a_valid_addrmatch_key);\n          else\n            k = NULL;\n        }\n      else if (the_strong_valid_key && !multi && !weak && !addr_match\n          && !(invalid && option (OPTPGPSHOWUNUSABLE)))\n        {\t\n          /* \n           * There was precisely one strong match on a valid ID, there\n           * were no valid keys with weak matches, and we aren't\n           * interested in seeing invalid keys.\n           * \n           * Proceed without asking the user.\n           */\n          k = crypt_copy_key (the_strong_valid_key);\n        }\n      else \n        {\n          /* \n           * Else: Ask the user.\n           */\n          k = crypt_select_key (matches, a, NULL, app, forced_valid);\n        }\n\n      crypt_free_key (&matches);\n    }\n  else \n    k = NULL;\n  \n  return k;\n}\n\n\nstatic crypt_key_t *crypt_getkeybystr (char *p, short abilities,\n\t\t\t\t       unsigned int app, int *forced_valid)\n{\n  LIST *hints = NULL;\n  crypt_key_t *keys;\n  crypt_key_t *matches = NULL;\n  crypt_key_t **matches_endp = &matches;\n  crypt_key_t *k;\n  const char *ps, *pl, *pfcopy, *phint;\n\n  mutt_message (_(\"Looking for keys matching \\\"%s\\\"...\"), p);\n\n  *forced_valid = 0;\n\n  pfcopy = crypt_get_fingerprint_or_id (p, &phint, &pl, &ps);\n  hints = crypt_add_string_to_hints (hints, phint);\n  keys = get_candidates (hints, app, (abilities & KEYFLAG_CANSIGN));\n  mutt_free_list (&hints);\n\n  if (!keys)\n  {\n    FREE (&pfcopy);\n    return NULL;\n  }\n\n  for (k = keys; k; k = k->next)\n    {\n      if (abilities && !(k->flags & abilities))\n        continue;\n\n      dprint (5, (debugfile, \"crypt_getkeybystr: matching \\\"%s\\\" against \"\n                  \"key %s, \\\"%s\\\": \",  p, crypt_long_keyid (k), k->uid));\n\n      if (!*p\n          || (pfcopy && mutt_strcasecmp (pfcopy, crypt_fpr (k)) == 0)\n          || (pl && mutt_strcasecmp (pl, crypt_long_keyid (k)) == 0)\n          || (ps && mutt_strcasecmp (ps, crypt_short_keyid (k)) == 0)\n          || mutt_stristr (k->uid, p))\n        {\n          crypt_key_t *tmp;\n\n          dprint (5, (debugfile, \"match.\\n\"));\n\n          *matches_endp = tmp = crypt_copy_key (k);\n          matches_endp = &tmp->next;\n        }\n    }\n  \n  FREE (&pfcopy);\n  crypt_free_key (&keys);\n  \n  if (matches)\n    {\n      k = crypt_select_key (matches, NULL, p, app, forced_valid);\n      crypt_free_key (&matches);\n      return k;\n    }\n  \n  return NULL;\n}\n\n/* Display TAG as a prompt to ask for a key.  If WHATFOR is not null\n   use it as default and store it under that label as the next\n   default.  ABILITIES describe the required key abilities (sign,\n   encrypt) and APP the type of the requested key; ether S/MIME or\n   PGP.  Return a copy of the key or NULL if not found. */\nstatic crypt_key_t *crypt_ask_for_key (char *tag, \n                                       char *whatfor, \n                                       short abilities,\n\t\t\t\t       unsigned int app,\n                                       int *forced_valid)\n{\n  crypt_key_t *key;\n  char resp[SHORT_STRING];\n  struct crypt_cache *l = NULL;\n  int dummy;\n\n  if (!forced_valid)\n    forced_valid = &dummy;\n\n  mutt_clear_error ();\n\n  *forced_valid = 0;\n  resp[0] = 0;\n  if (whatfor)\n    {\n      \n      for (l = id_defaults; l; l = l->next)\n        if (!mutt_strcasecmp (whatfor, l->what))\n          {\n            strfcpy (resp, NONULL (l->dflt), sizeof (resp));\n            break;\n          }\n    }\n\n\n  for (;;)\n    {\n      resp[0] = 0;\n      if (mutt_get_field (tag, resp, sizeof (resp), M_CLEAR) != 0)\n        return NULL;\n      \n      if (whatfor)\n        {\n          if (l)\n            mutt_str_replace (&l->dflt, resp);\n          else\n            {\n              l = safe_malloc (sizeof (struct crypt_cache));\n              l->next = id_defaults;\n              id_defaults = l;\n              l->what = safe_strdup (whatfor);\n              l->dflt = safe_strdup (resp);\n            }\n        }\n      \n      if ((key = crypt_getkeybystr (resp, abilities, app, forced_valid)))\n        return key;\n      \n      BEEP ();\n    }\n  /* not reached */\n}\n\n/* This routine attempts to find the keyids of the recipients of a\n   message.  It returns NULL if any of the keys can not be found.\n   If oppenc_mode is true, only keys that can be determined without\n   prompting will be used.  */\nstatic char *find_keys (ADDRESS *adrlist, unsigned int app, int oppenc_mode)\n{\n  LIST *crypt_hook_list, *crypt_hook = NULL;\n  char *crypt_hook_val = NULL;\n  const char *keyID = NULL;\n  char *keylist = NULL, *t;\n  size_t keylist_size = 0;\n  size_t keylist_used = 0;\n  ADDRESS *addr = NULL;\n  ADDRESS *p, *q;\n  crypt_key_t *k_info;\n  const char *fqdn = mutt_fqdn (1);\n  char buf[LONG_STRING];\n  int forced_valid;\n  int r;\n  int key_selected;\n\n#if 0\n  *r_application = APPLICATION_PGP|APPLICATION_SMIME;\n#endif\n\n  for (p = adrlist; p ; p = p->next)\n    {\n      key_selected = 0;\n      crypt_hook_list = crypt_hook = mutt_crypt_hook (p);\n      do\n      {\n        q = p;\n        forced_valid = 0;\n        k_info = NULL;\n\n        if (crypt_hook != NULL)\n          {\n            crypt_hook_val = crypt_hook->data;\n            r = M_YES;\n            if (! oppenc_mode && option(OPTCRYPTCONFIRMHOOK))\n              {\n                snprintf (buf, sizeof (buf), _(\"Use keyID = \\\"%s\\\" for %s?\"),\n                          crypt_hook_val, p->mailbox);\n                r = mutt_yesorno (buf, M_YES);\n              }\n            if (r == M_YES)\n              {\n                if (crypt_is_numerical_keyid (crypt_hook_val))\n                  {\n                    keyID = crypt_hook_val;\n                    if (strncmp (keyID, \"0x\", 2) == 0)\n                      keyID += 2;\n                    goto bypass_selection;                /* you don't see this. */\n                  }\n\n                /* check for e-mail address */\n                if ((t = strchr (crypt_hook_val, '@')) && \n                    (addr = rfc822_parse_adrlist (NULL, crypt_hook_val)))\n                  {\n                    if (fqdn)\n                      rfc822_qualify (addr, fqdn);\n                    q = addr;\n                  }\n                else if (! oppenc_mode)\n                  {\n#if 0\t\t  \n                    k_info = crypt_getkeybystr (crypt_hook_val, KEYFLAG_CANENCRYPT, \n                                                *r_application, &forced_valid);\n#else\n                    k_info = crypt_getkeybystr (crypt_hook_val, KEYFLAG_CANENCRYPT, \n                                                app, &forced_valid);\n#endif\n                  }\n              }\n            else if (r == M_NO)\n              {\n                if (key_selected || (crypt_hook->next != NULL))\n                  {\n                    crypt_hook = crypt_hook->next;\n                    continue;\n                  }\n              }\n            else if (r == -1)\n              {\n                FREE (&keylist);\n                rfc822_free_address (&addr);\n                mutt_free_list (&crypt_hook_list);\n                return NULL;\n              }\n          }\n\n        if (k_info == NULL)\n          {\n            k_info = crypt_getkeybyaddr (q, KEYFLAG_CANENCRYPT,\n                                        app, &forced_valid, oppenc_mode);\n          }\n\n        if ((k_info == NULL) && (! oppenc_mode))\n          {\n            snprintf (buf, sizeof (buf), _(\"Enter keyID for %s: \"), q->mailbox);\n            \n            k_info = crypt_ask_for_key (buf, q->mailbox,\n                                        KEYFLAG_CANENCRYPT,\n#if 0\n                                        *r_application,\n#else\n                                        app,\n#endif\n                                        &forced_valid);\n          }\n\n        if (k_info == NULL)\n          {\n            FREE (&keylist);\n            rfc822_free_address (&addr);\n            mutt_free_list (&crypt_hook_list);\n            return NULL;\n          }\n\n\n        keyID = crypt_fpr_or_lkeyid (k_info);\n\n#if 0\n        if (k_info->flags & KEYFLAG_ISX509)\n          *r_application &= ~APPLICATION_PGP;\n        if (!(k_info->flags & KEYFLAG_ISX509))\n          *r_application &= ~APPLICATION_SMIME;\n#endif\n        \n    bypass_selection:\n        keylist_size += mutt_strlen (keyID) + 4 + 1;\n        safe_realloc (&keylist, keylist_size);\n        sprintf (keylist + keylist_used, \"%s0x%s%s\", /* __SPRINTF_CHECKED__ */\n                keylist_used ? \" \" : \"\",  keyID,\n                forced_valid? \"!\":\"\");\n        keylist_used = mutt_strlen (keylist);\n\n        key_selected = 1;\n\n        crypt_free_key (&k_info);\n        rfc822_free_address (&addr);\n\n        if (crypt_hook != NULL)\n          crypt_hook = crypt_hook->next;\n\n      } while (crypt_hook != NULL);\n\n      mutt_free_list (&crypt_hook_list);\n    }\n  return (keylist);\n}\n\nchar *pgp_gpgme_findkeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  return find_keys (adrlist, APPLICATION_PGP, oppenc_mode);\n}\n\nchar *smime_gpgme_findkeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  return find_keys (adrlist, APPLICATION_SMIME, oppenc_mode);\n}\n\n#ifdef HAVE_GPGME_OP_EXPORT_KEYS\nBODY *pgp_gpgme_make_key_attachment (char *tempf)\n{\n  crypt_key_t *key = NULL;\n  gpgme_ctx_t context = NULL;\n  gpgme_key_t export_keys[2];\n  gpgme_data_t keydata = NULL;\n  gpgme_error_t err;\n  BODY *att = NULL;\n  char buff[LONG_STRING];\n  struct stat sb;\n\n  unset_option (OPTPGPCHECKTRUST);\n\n  key = crypt_ask_for_key (_(\"Please enter the key ID: \"), NULL, 0,\n                           APPLICATION_PGP, NULL);\n  if (!key)\n    goto bail;\n  export_keys[0] = key->kobj;\n  export_keys[1] = NULL;\n\n  context = create_gpgme_context (0);\n  gpgme_set_armor (context, 1);\n  keydata = create_gpgme_data ();\n  err = gpgme_op_export_keys (context, export_keys, 0, keydata);\n  if (err != GPG_ERR_NO_ERROR)\n  {\n    mutt_error (_(\"Error exporting key: %s\\n\"), gpgme_strerror (err));\n    mutt_sleep (1);\n    goto bail;\n  }\n\n  tempf = data_object_to_tempfile (keydata, tempf, NULL);\n  if (!tempf)\n    goto bail;\n\n  att = mutt_new_body ();\n  /* tempf is a newly allocated string, so this is correct: */\n  att->filename = tempf;\n  att->unlink = 1;\n  att->use_disp = 0;\n  att->type = TYPEAPPLICATION;\n  att->subtype = safe_strdup (\"pgp-keys\");\n  /* L10N:\n     MIME description for exported (attached) keys.\n     You can translate this entry to a non-ASCII string (it will be encoded),\n     but it may be safer to keep it untranslated. */\n  snprintf (buff, sizeof (buff), _(\"PGP Key 0x%s.\"), crypt_keyid (key));\n  att->description = safe_strdup (buff);\n  mutt_update_encoding (att);\n\n  stat (tempf, &sb);\n  att->length = sb.st_size;\n\nbail:\n  crypt_free_key (&key);\n  gpgme_data_release (keydata);\n  gpgme_release (context);\n\n  return att;\n}\n#endif\n\n/*\n * Implementation of `init'.\n */\n\n/* This function contains common code needed to be executed for both the pgp\n * and smime support of gpgme. */\nstatic void init_common(void)\n{\n  /* this initialization should only run one time, but it may be called by\n   * either pgp_gpgme_init or smime_gpgme_init */\n  static bool has_run = 0;\n  if (!has_run) {\n    gpgme_check_version(NULL);\n    gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));\n#ifdef ENABLE_NLS\n    gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));\n#endif\n    has_run = 1; /* note use of 1 here is intentional to avoid requiring \"true\"\n\t\t    to be defined.  see #3657 */\n  }\n}\n\nstatic void init_pgp (void)\n{\n  if (gpgme_engine_check_version (GPGME_PROTOCOL_OpenPGP) != GPG_ERR_NO_ERROR)\n  {\n    mutt_error (_(\"GPGME: OpenPGP protocol not available\"));\n  }\n}\n\nstatic void init_smime (void)\n{\n  if (gpgme_engine_check_version (GPGME_PROTOCOL_CMS) != GPG_ERR_NO_ERROR)\n  {\n    mutt_error (_(\"GPGME: CMS protocol not available\"));\n  }\n}\n\nvoid pgp_gpgme_init (void)\n{\n  init_common ();\n  init_pgp ();\n}\n\nvoid smime_gpgme_init (void)\n{\n  init_common ();\n  init_smime ();\n}\n\nstatic int gpgme_send_menu (HEADER *msg, int *redraw, int is_smime)\n{\n  crypt_key_t *p;\n  char input_signas[SHORT_STRING];\n  char *prompt, *letters, *choices;\n  int choice;\n\n  if (is_smime)\n    msg->security |= APPLICATION_SMIME;\n  else\n    msg->security |= APPLICATION_PGP;\n\n  /*\n   * Opportunistic encrypt is controlling encryption.\n   * NOTE: \"Signing\" and \"Clearing\" only adjust the sign bit, so we have different\n   *       letter choices for those.\n   */\n  if (option (OPTCRYPTOPPORTUNISTICENCRYPT) && (msg->security & OPPENCRYPT))\n  {\n    if (is_smime)\n    {\n      prompt = _(\"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \");\n      /* L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n         'clear'.  Please use a corresponding letter in your language.\n         Alternatively, you may duplicate the letter 'c' is translated to.\n         This comment also applies to the five following letter sequences. */\n      letters = _(\"sapfco\");\n      choices = \"SapFCo\";\n    }\n    else\n    {\n      prompt = _(\"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \");\n      letters = _(\"samfco\");\n      choices = \"SamFCo\";\n    }\n  }\n  /*\n   * Opportunistic encryption option is set, but is toggled off\n   * for this message.\n   */\n  else if (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n  {\n    if (is_smime)\n    {\n      prompt = _(\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc mode? \");\n      letters = _(\"esabpfco\");\n      choices = \"esabpfcO\";\n    }\n    else\n    {\n      prompt = _(\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc mode? \");\n      letters = _(\"esabmfco\");\n      choices = \"esabmfcO\";\n    }\n  }\n  /*\n   * Opportunistic encryption is unset\n   */\n  else\n  {\n    if (is_smime)\n    {\n      prompt = _(\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \");\n      letters = _(\"esabpfc\");\n      choices = \"esabpfc\";\n    }\n    else\n    {\n      prompt = _(\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \");\n      letters = _(\"esabmfc\");\n      choices = \"esabmfc\";\n    }\n  }\n\n  choice = mutt_multi_choice (prompt, letters);\n  if (choice > 0)\n  {\n    switch (choices[choice - 1])\n    {\n    case 'e': /* (e)ncrypt */\n      msg->security |= ENCRYPT;\n      msg->security &= ~SIGN;\n      break;\n\n    case 's': /* (s)ign */\n      msg->security &= ~ENCRYPT;\n      msg->security |= SIGN;\n      break;\n\n    case 'S': /* (s)ign in oppenc mode */\n      msg->security |= SIGN;\n      break;\n\n    case 'a': /* sign (a)s */\n      if ((p = crypt_ask_for_key (_(\"Sign as: \"), NULL, KEYFLAG_CANSIGN,\n                                  is_smime? APPLICATION_SMIME:APPLICATION_PGP,\n                                  NULL)))\n      {\n        snprintf (input_signas, sizeof (input_signas), \"0x%s\",\n            crypt_fpr_or_lkeyid (p));\n        mutt_str_replace (is_smime? &SmimeDefaultKey : &PgpSignAs, input_signas);\n        crypt_free_key (&p); \n\n        msg->security |= SIGN;\n      }\n      *redraw = REDRAW_FULL;\n      break;\n\n    case 'b': /* (b)oth */\n      msg->security |= (ENCRYPT | SIGN);\n      break;\n\n    case 'p': /* (p)gp or s/(m)ime */\n    case 'm':\n      is_smime = !is_smime;\n      if (is_smime)\n      {\n        msg->security &= ~APPLICATION_PGP;\n        msg->security |= APPLICATION_SMIME;\n      }\n      else\n      {\n        msg->security &= ~APPLICATION_SMIME;\n        msg->security |= APPLICATION_PGP;\n      }\n      crypt_opportunistic_encrypt (msg);\n      break;\n\n    case 'f': /* (f)orget it: kept for backward compatibility. */\n    case 'c': /* (c)lear */\n      msg->security &= ~(ENCRYPT | SIGN);\n      break;\n\n    case 'F': /* (f)orget it or (c)lear in oppenc mode */\n    case 'C':\n      msg->security &= ~SIGN;\n      break;\n\n    case 'O': /* oppenc mode on */\n      msg->security |= OPPENCRYPT;\n      crypt_opportunistic_encrypt (msg);\n      break;\n\n    case 'o': /* oppenc mode off */\n      msg->security &= ~OPPENCRYPT;\n      break;\n    }\n  }\n\n  return (msg->security);\n}\n\nint pgp_gpgme_send_menu (HEADER *msg, int *redraw)\n{\n  return gpgme_send_menu (msg, redraw, 0);\n}\n\nint smime_gpgme_send_menu (HEADER *msg, int *redraw)\n{\n  return gpgme_send_menu (msg, redraw, 1);\n}\n\nstatic int verify_sender (HEADER *h, gpgme_protocol_t protocol)\n{\n  ADDRESS *sender = NULL;\n  unsigned int ret = 1;\n\n  if (h->env->from)\n    {\n      h->env->from = mutt_expand_aliases (h->env->from);\n      sender = h->env->from;\n    }\n  else if (h->env->sender)\n    {\n      h->env->sender = mutt_expand_aliases (h->env->sender);\n      sender = h->env->sender;\n    }\n\n  if (sender)\n  {\n    if (signature_key)\n    {\n      gpgme_key_t key = signature_key;\n      gpgme_user_id_t uid = NULL;\n      int sender_length = 0;\n      int uid_length = 0;\n\n      sender_length = strlen (sender->mailbox);\n      for (uid = key->uids; uid && ret; uid = uid->next)\n      {\n\tuid_length = strlen (uid->email);\n\tif (1\n\t    && (uid->email[0] == '<')\n\t    && (uid->email[uid_length - 1] == '>')\n\t    && (uid_length == sender_length + 2))\n\t{\n\t  const char* at_sign = strchr(uid->email + 1, '@');\n\t  if (at_sign == NULL)\n\t  {\n\t    if (! strncmp (uid->email + 1, sender->mailbox, sender_length))\n\t      ret = 0;\n\t  }\n\t  else\n\t  {\n\t    /*\n\t     * Assume address is 'mailbox@domainname'.\n\t     * The mailbox part is case-sensitive,\n\t     * the domainname is not. (RFC 2821)\n\t     */\n\t    const char* tmp_email = uid->email + 1;\n\t    const char* tmp_sender = sender->mailbox;\n\t    /* length of mailbox part including '@' */\n\t    int mailbox_length = at_sign - tmp_email + 1;\n\t    int domainname_length = sender_length - mailbox_length;\n\t    int mailbox_match, domainname_match;\n\n\t    mailbox_match = (! strncmp (tmp_email, tmp_sender,\n\t\tmailbox_length));\n\t    tmp_email += mailbox_length;\n\t    tmp_sender += mailbox_length;\n\t    domainname_match = (! strncasecmp (tmp_email, tmp_sender,\n\t\tdomainname_length));\n\t    if (mailbox_match && domainname_match)\n\t      ret = 0;\n\t  }\n\t}\n      }\n    }\n    else\n      mutt_any_key_to_continue (_(\"Failed to verify sender\"));\n  }\n  else\n    mutt_any_key_to_continue (_(\"Failed to figure out sender\"));\n\n  if (signature_key)\n  {\n    gpgme_key_unref (signature_key);\n    signature_key = NULL;\n  }\n\n  return ret;\n}\n\nint smime_gpgme_verify_sender (HEADER *h)\n{\n  return verify_sender (h, GPGME_PROTOCOL_CMS);\n}\n\nvoid gpgme_set_sender (const char *sender)\n{\n  mutt_error (\"[setting sender] mailbox: %s\\n\", sender);\n  FREE (&current_sender);\n  current_sender = safe_strdup (sender);\n}\n\n\n#endif\n"
  },
  {
    "path": "crypt-gpgme.h",
    "content": "/* \n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifndef CRYPT_GPGME_H\n#define CRYPT_GPGME_H\n\n#include \"mutt_crypt.h\"\n\nvoid pgp_gpgme_init (void);\nvoid smime_gpgme_init (void);\n\nchar *pgp_gpgme_findkeys (ADDRESS *adrlist, int oppenc_mode);\nchar *smime_gpgme_findkeys (ADDRESS *adrlist, int oppenc_mode);\n\nBODY *pgp_gpgme_encrypt_message (BODY *a, char *keylist, int sign);\nBODY *smime_gpgme_build_smime_entity (BODY *a, char *keylist);\n\nint pgp_gpgme_decrypt_mime (FILE *fpin, FILE **fpout, BODY *b, BODY **cur);\nint smime_gpgme_decrypt_mime (FILE *fpin, FILE **fpout, BODY *b, BODY **cur);\n\nint pgp_gpgme_check_traditional (FILE *fp, BODY *b, int tagged_only);\nvoid pgp_gpgme_invoke_import (const char* fname);\n\nint pgp_gpgme_application_handler (BODY *m, STATE *s);\nint smime_gpgme_application_handler (BODY *a, STATE *s);\nint pgp_gpgme_encrypted_handler (BODY *a, STATE *s);\n\nBODY *pgp_gpgme_make_key_attachment (char *tempf);\n\nBODY *pgp_gpgme_sign_message (BODY *a);\nBODY *smime_gpgme_sign_message (BODY *a);\n\nint pgp_gpgme_verify_one (BODY *sigbdy, STATE *s, const char *tempfile);\nint smime_gpgme_verify_one (BODY *sigbdy, STATE *s, const char *tempfile);\n\nint pgp_gpgme_send_menu (HEADER *msg, int *redraw);\nint smime_gpgme_send_menu (HEADER *msg, int *redraw);\n\nint smime_gpgme_verify_sender (HEADER *h);\n\nvoid gpgme_set_sender (const char *sender);\n\n#endif\n"
  },
  {
    "path": "crypt-mod-pgp-classic.c",
    "content": "/* \n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/* \n    This is a crytpo module wrapping the classic pgp code.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"crypt-mod.h\"\n#include \"pgp.h\"\n\nstatic void crypt_mod_pgp_void_passphrase (void)\n{\n  pgp_void_passphrase ();\n}\n\nstatic int crypt_mod_pgp_valid_passphrase (void)\n{\n  return pgp_valid_passphrase ();\n}\n\nstatic int crypt_mod_pgp_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)\n{\n  return pgp_decrypt_mime (a, b, c, d);\n}\nstatic int crypt_mod_pgp_application_handler (BODY *m, STATE *s)\n{\n  return pgp_application_pgp_handler (m, s);\n}\n\nstatic char *crypt_mod_pgp_findkeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  return pgp_findKeys (adrlist, oppenc_mode);\n}\n\nstatic BODY *crypt_mod_pgp_sign_message (BODY *a)\n{\n  return pgp_sign_message (a);\n}\n\nstatic int crypt_mod_pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempf)\n{\n  return pgp_verify_one (sigbdy, s, tempf);\n}\n\nstatic int crypt_mod_pgp_send_menu (HEADER *msg, int *redraw)\n{\n  return pgp_send_menu (msg, redraw);\n}\n\nstatic BODY *crypt_mod_pgp_encrypt_message (BODY *a, char *keylist, int sign)\n{\n  return pgp_encrypt_message (a, keylist, sign);\n}\n\nstatic BODY *crypt_mod_pgp_make_key_attachment (char *tempf)\n{\n  return pgp_make_key_attachment (tempf);\n}\n\nstatic int crypt_mod_pgp_check_traditional (FILE *fp, BODY *b, int tagged_only)\n{\n  return pgp_check_traditional (fp, b, tagged_only);\n}\n\nstatic BODY *crypt_mod_pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)\n{\n  return pgp_traditional_encryptsign (a, flags, keylist);\n}\n\nstatic int crypt_mod_pgp_encrypted_handler (BODY *m, STATE *s)\n{\n  return pgp_encrypted_handler (m, s);\n}\n\nstatic void crypt_mod_pgp_invoke_getkeys (ADDRESS *addr)\n{\n  pgp_invoke_getkeys (addr);\n}\n\nstatic void crypt_mod_pgp_invoke_import (const char *fname)\n{\n  pgp_invoke_import (fname);\n}\n\nstatic void crypt_mod_pgp_extract_keys_from_attachment_list (FILE *fp, int tag, BODY *top)\n{\n  pgp_extract_keys_from_attachment_list (fp, tag, top);\n}\n\nstruct crypt_module_specs crypt_mod_pgp_classic =\n  { APPLICATION_PGP,\n    {\n      NULL,\t\t\t/* init */\n      crypt_mod_pgp_void_passphrase,\n      crypt_mod_pgp_valid_passphrase,\n      crypt_mod_pgp_decrypt_mime,\n      crypt_mod_pgp_application_handler,\n      crypt_mod_pgp_encrypted_handler,\n      crypt_mod_pgp_findkeys,\n      crypt_mod_pgp_sign_message,\n      crypt_mod_pgp_verify_one,\n      crypt_mod_pgp_send_menu,\n      NULL,\n\n      crypt_mod_pgp_encrypt_message,\n      crypt_mod_pgp_make_key_attachment,\n      crypt_mod_pgp_check_traditional,\n      crypt_mod_pgp_traditional_encryptsign,\n      crypt_mod_pgp_invoke_getkeys,\n      crypt_mod_pgp_invoke_import,\n      crypt_mod_pgp_extract_keys_from_attachment_list,\n\n      NULL,\t\t\t/* smime_getkeys */\n      NULL,\t\t\t/* smime_verify_sender */\n      NULL,\t\t\t/* smime_build_smime_entity */\n      NULL,\t\t\t/* smime_invoke_import */\n    }\n  };\n"
  },
  {
    "path": "crypt-mod-pgp-gpgme.c",
    "content": "/* \n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/* \n    This is a crytpo module wrapping the gpgme based pgp code.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#ifdef CRYPT_BACKEND_GPGME\n\n#include \"crypt-mod.h\"\n#include \"crypt-gpgme.h\"\n\nstatic void crypt_mod_pgp_init (void)\n{\n  pgp_gpgme_init ();\n}\n\nstatic void crypt_mod_pgp_void_passphrase (void)\n{\n  /* Handled by gpg-agent.  */\n}\n\nstatic int crypt_mod_pgp_valid_passphrase (void)\n{\n  /* Handled by gpg-agent.  */\n  return 1;\n}\n\nstatic int crypt_mod_pgp_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)\n{\n  return pgp_gpgme_decrypt_mime (a, b, c, d);\n}\n\nstatic int crypt_mod_pgp_application_handler (BODY *m, STATE *s)\n{\n  return pgp_gpgme_application_handler (m, s);\n}\n\nstatic int crypt_mod_pgp_encrypted_handler (BODY *m, STATE *s)\n{\n  return pgp_gpgme_encrypted_handler (m, s);\n}\n\nstatic int crypt_mod_pgp_check_traditional (FILE *fp, BODY *b, int tagged_only)\n{\n  return pgp_gpgme_check_traditional (fp, b, tagged_only);\n}\n\nstatic void crypt_mod_pgp_invoke_import (const char *fname)\n{\n  pgp_gpgme_invoke_import (fname);\n}\n\nstatic char *crypt_mod_pgp_findkeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  return pgp_gpgme_findkeys (adrlist, oppenc_mode);\n}\n\nstatic BODY *crypt_mod_pgp_sign_message (BODY *a)\n{\n  return pgp_gpgme_sign_message (a);\n}\n\nstatic int crypt_mod_pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempf)\n{\n  return pgp_gpgme_verify_one (sigbdy, s, tempf);\n}\n\nstatic int crypt_mod_pgp_send_menu (HEADER *msg, int *redraw)\n{\n  return pgp_gpgme_send_menu (msg, redraw);\n}\n\nstatic BODY *crypt_mod_pgp_encrypt_message (BODY *a, char *keylist, int sign)\n{\n  return pgp_gpgme_encrypt_message (a, keylist, sign);\n}\n\n#ifdef HAVE_GPGME_OP_EXPORT_KEYS\nstatic BODY *crypt_mod_pgp_make_key_attachment (char *tempf)\n{\n  return pgp_gpgme_make_key_attachment (tempf);\n}\n#endif\n\nstatic void crypt_mod_pgp_set_sender (const char *sender)\n{\n  gpgme_set_sender (sender);\n}\n\nstruct crypt_module_specs crypt_mod_pgp_gpgme =\n  { APPLICATION_PGP,\n    {\n      /* Common.  */\n      crypt_mod_pgp_init,\n      crypt_mod_pgp_void_passphrase,\n      crypt_mod_pgp_valid_passphrase,\n      crypt_mod_pgp_decrypt_mime,\n      crypt_mod_pgp_application_handler,\n      crypt_mod_pgp_encrypted_handler,\n      crypt_mod_pgp_findkeys,\n      crypt_mod_pgp_sign_message,\n      crypt_mod_pgp_verify_one,\n      crypt_mod_pgp_send_menu,\n      crypt_mod_pgp_set_sender,\n\n      /* PGP specific.  */\n      crypt_mod_pgp_encrypt_message,\n#ifdef HAVE_GPGME_OP_EXPORT_KEYS\n      crypt_mod_pgp_make_key_attachment,\n#else\n      NULL,\n#endif\n      crypt_mod_pgp_check_traditional,\n      NULL, \t\t\t/* pgp_traditional_encryptsign  */\n      NULL, /* pgp_invoke_getkeys  */\n      crypt_mod_pgp_invoke_import,\n      NULL, /* pgp_extract_keys_from_attachment_list  */\n\n      NULL,\t\t\t/* smime_getkeys */\n      NULL,\t\t\t/* smime_verify_sender */\n      NULL,\t\t\t/* smime_build_smime_entity */\n      NULL,\t\t\t/* smime_invoke_import */\n    }\n  };\n\n#endif\n"
  },
  {
    "path": "crypt-mod-smime-classic.c",
    "content": "/* \n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/* \n    This is a crytpo module wrapping the classic smime code.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"crypt-mod.h\"\n#include \"smime.h\"\n\nstatic void crypt_mod_smime_void_passphrase (void)\n{\n  smime_void_passphrase ();\n}\n\nstatic int crypt_mod_smime_valid_passphrase (void)\n{\n  return smime_valid_passphrase ();\n}\n\nstatic int crypt_mod_smime_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)\n{\n  return smime_decrypt_mime (a, b, c, d);\n}\nstatic int crypt_mod_smime_application_handler (BODY *m, STATE *s)\n{\n  return smime_application_smime_handler (m, s);\n}\n\nstatic char *crypt_mod_smime_findkeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  return smime_findKeys (adrlist, oppenc_mode);\n}\n\nstatic BODY *crypt_mod_smime_sign_message (BODY *a)\n{\n  return smime_sign_message (a);\n}\n\nstatic int crypt_mod_smime_verify_one (BODY *sigbdy, STATE *s, const char *tempf)\n{\n  return smime_verify_one (sigbdy, s, tempf);\n}\n\nstatic int crypt_mod_smime_send_menu (HEADER *msg, int *redraw)\n{\n  return smime_send_menu (msg, redraw);\n}\n\nstatic void crypt_mod_smime_getkeys (ENVELOPE *env)\n{\n  smime_getkeys (env);\n}\n\nstatic int crypt_mod_smime_verify_sender (HEADER *h)\n{\n  return smime_verify_sender (h);\n}\n\nstatic BODY *crypt_mod_smime_build_smime_entity (BODY *a, char *certlist)\n{\n  return smime_build_smime_entity (a, certlist);\n}\n\nstatic void crypt_mod_smime_invoke_import (char *infile, char *mailbox)\n{\n  smime_invoke_import (infile, mailbox);\n}\n\n\nstruct crypt_module_specs crypt_mod_smime_classic =\n  { APPLICATION_SMIME,\n    {\n      NULL,\t\t\t/* init */\n      crypt_mod_smime_void_passphrase,\n      crypt_mod_smime_valid_passphrase,\n      crypt_mod_smime_decrypt_mime,\n      crypt_mod_smime_application_handler,\n      NULL,\t\t\t/* encrypted_handler */\n      crypt_mod_smime_findkeys,\n      crypt_mod_smime_sign_message,\n      crypt_mod_smime_verify_one,\n      crypt_mod_smime_send_menu,\n      NULL,\n\n      NULL,\t\t\t/* pgp_encrypt_message */\n      NULL,\t\t\t/* pgp_make_key_attachment */\n      NULL,\t\t\t/* pgp_check_traditional */\n      NULL,\t\t\t/* pgp_traditional_encryptsign */\n      NULL,\t\t\t/* pgp_invoke_getkeys */\n      NULL,\t\t\t/* pgp_invoke_import */\n      NULL,\t\t\t/* pgp_extract_keys_from_attachment_list */\n      \n      crypt_mod_smime_getkeys,\n      crypt_mod_smime_verify_sender,\n      crypt_mod_smime_build_smime_entity,\n      crypt_mod_smime_invoke_import,\n    }\n  };\n"
  },
  {
    "path": "crypt-mod-smime-gpgme.c",
    "content": "/* \n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/* \n    This is a crytpo module wrapping the gpgme based smime code.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#ifdef CRYPT_BACKEND_GPGME\n\n#include \"crypt-mod.h\"\n#include \"crypt-gpgme.h\"\n\nstatic void crypt_mod_smime_init (void)\n{\n  smime_gpgme_init ();\n}\n\nstatic void crypt_mod_smime_void_passphrase (void)\n{\n  /* Handled by gpg-agent.  */\n}\n\nstatic int crypt_mod_smime_valid_passphrase (void)\n{\n  /* Handled by gpg-agent.  */\n  return 1;\n}\n\nstatic int crypt_mod_smime_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)\n{\n  return smime_gpgme_decrypt_mime (a, b, c, d);\n}\n\nstatic int crypt_mod_smime_application_handler (BODY *m, STATE *s)\n{\n  return smime_gpgme_application_handler (m, s);\n}\n\nstatic char *crypt_mod_smime_findkeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  return smime_gpgme_findkeys (adrlist, oppenc_mode);\n}\n\nstatic BODY *crypt_mod_smime_sign_message (BODY *a)\n{\n  return smime_gpgme_sign_message (a);\n}\n\nstatic int crypt_mod_smime_verify_one (BODY *sigbdy, STATE *s, const char *tempf)\n{\n  return smime_gpgme_verify_one (sigbdy, s, tempf);\n}\n\nstatic int crypt_mod_smime_send_menu (HEADER *msg, int *redraw)\n{\n  return smime_gpgme_send_menu (msg, redraw);\n}\n\nstatic BODY *crypt_mod_smime_build_smime_entity (BODY *a, char *certlist)\n{\n  return smime_gpgme_build_smime_entity (a, certlist);\n}\n\nstatic int crypt_mod_smime_verify_sender (HEADER *h)\n{\n  return smime_gpgme_verify_sender (h);\n}\n\nstruct crypt_module_specs crypt_mod_smime_gpgme =\n  { APPLICATION_SMIME,\n    {\n      crypt_mod_smime_init,\n      crypt_mod_smime_void_passphrase,\n      crypt_mod_smime_valid_passphrase,\n      crypt_mod_smime_decrypt_mime,\n      crypt_mod_smime_application_handler,\n      NULL,\t\t\t/* encrypted_handler */\n      crypt_mod_smime_findkeys,\n      crypt_mod_smime_sign_message,\n      crypt_mod_smime_verify_one,\n      crypt_mod_smime_send_menu,\n      NULL,\n\n      NULL,\t\t\t/* pgp_encrypt_message */\n      NULL,\t\t\t/* pgp_make_key_attachment */\n      NULL,\t\t\t/* pgp_check_traditional */\n      NULL,\t\t\t/* pgp_traditional_encryptsign */\n      NULL,\t\t\t/* pgp_invoke_getkeys */\n      NULL,\t\t\t/* pgp_invoke_import */\n      NULL,\t\t\t/* pgp_extract_keys_from_attachment_list */\n      \n      NULL,\t\t\t/* smime_getkeys */\n      crypt_mod_smime_verify_sender,\n      crypt_mod_smime_build_smime_entity,\n      NULL, \t\t\t/* smime_invoke_import */\n    }\n  };\n\n#endif\n"
  },
  {
    "path": "crypt-mod.c",
    "content": "/*\n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"crypt-mod.h\"\n\n/* A type an a variable to keep track of registered crypto modules. */\ntypedef struct crypt_module *crypt_module_t;\n\nstruct crypt_module\n{\n  crypt_module_specs_t specs;\n  crypt_module_t next, *prevp;\n};\n\nstatic crypt_module_t modules;\n\n/* Register a new crypto module. */\nvoid crypto_module_register (crypt_module_specs_t specs)\n{\n  crypt_module_t module_new = safe_malloc (sizeof (*module_new));\n\n  module_new->specs = specs;\n  module_new->next = modules;\n  if (modules)\n    modules->prevp = &module_new->next;\n  modules = module_new;\n}\n\n/* Return the crypto module specs for IDENTIFIER.  This function is\n   usually used via the CRYPT_MOD_CALL[_CHECK] macros. */\ncrypt_module_specs_t crypto_module_lookup (int identifier)\n{\n  crypt_module_t module = modules;\n\n  while (module && (module->specs->identifier != identifier))\n    module = module->next;\n\n  return module ? module->specs : NULL;\n}\n"
  },
  {
    "path": "crypt-mod.h",
    "content": "/*\n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifndef CRYPTOGRAPHY_H\n#define CRYPTOGRAPHY_H\n\n#include \"mutt.h\"\n#include \"mutt_crypt.h\"\n\n#define CRYPTO_SUPPORT(identifier) (WithCrypto & APPLICATION_ ## identifier)\n\n\n/* \n    Type definitions for crypto module functions.\n */\ntypedef void (*crypt_func_void_passphrase_t) (void);\ntypedef int (*crypt_func_valid_passphrase_t)  (void);\n\ntypedef int (*crypt_func_decrypt_mime_t) (FILE *a, FILE **b,\n                                          BODY *c, BODY **d);\n\ntypedef int (*crypt_func_application_handler_t) (BODY *m, STATE *s);\ntypedef int (*crypt_func_encrypted_handler_t) (BODY *m, STATE *s);\n\ntypedef void (*crypt_func_pgp_invoke_getkeys_t) (ADDRESS *addr);\ntypedef int (*crypt_func_pgp_check_traditional_t) (FILE *fp, BODY *b,\n                                                   int tagged_only);\ntypedef BODY *(*crypt_func_pgp_traditional_encryptsign_t) (BODY *a, int flags,\n                                                           char *keylist);\ntypedef BODY *(*crypt_func_pgp_make_key_attachment_t) (char *tempf);\ntypedef char *(*crypt_func_findkeys_t) (ADDRESS *adrlist, int oppenc_mode);\ntypedef BODY *(*crypt_func_sign_message_t) (BODY *a);\ntypedef BODY *(*crypt_func_pgp_encrypt_message_t) (BODY *a, char *keylist,\n                                                   int sign);\ntypedef void (*crypt_func_pgp_invoke_import_t) (const char *fname);\ntypedef int (*crypt_func_verify_one_t) (BODY *sigbdy, STATE *s,\n                                        const char *tempf);\ntypedef void (*crypt_func_pgp_extract_keys_from_attachment_list_t) \n                                           (FILE *fp, int tag, BODY *top);\n\ntypedef int (*crypt_func_send_menu_t) (HEADER *msg, int *redraw);\n\n /* (SMIME) */\ntypedef void (*crypt_func_smime_getkeys_t) (ENVELOPE *env);\ntypedef int (*crypt_func_smime_verify_sender_t) (HEADER *h);\n\ntypedef BODY *(*crypt_func_smime_build_smime_entity_t) (BODY *a,\n                                                        char *certlist);\n\ntypedef void (*crypt_func_smime_invoke_import_t) (char *infile, char *mailbox);\n\ntypedef void (*crypt_func_init_t) (void);\n\ntypedef void (*crypt_func_set_sender_t) (const char *sender);\n\n/*\n   A structure to keep all crypto module fucntions together.\n */\ntypedef struct crypt_module_functions\n{\n  /* Common/General functions.  */\n  crypt_func_init_t init;\n  crypt_func_void_passphrase_t void_passphrase;\n  crypt_func_valid_passphrase_t valid_passphrase;\n  crypt_func_decrypt_mime_t decrypt_mime;\n  crypt_func_application_handler_t application_handler;\n  crypt_func_encrypted_handler_t encrypted_handler;\n  crypt_func_findkeys_t findkeys;\n  crypt_func_sign_message_t sign_message;\n  crypt_func_verify_one_t verify_one;\n  crypt_func_send_menu_t send_menu;\n  crypt_func_set_sender_t set_sender;\n\n  /* PGP specific functions.  */\n  crypt_func_pgp_encrypt_message_t pgp_encrypt_message;\n  crypt_func_pgp_make_key_attachment_t pgp_make_key_attachment;\n  crypt_func_pgp_check_traditional_t pgp_check_traditional;\n  crypt_func_pgp_traditional_encryptsign_t pgp_traditional_encryptsign;\n  crypt_func_pgp_invoke_getkeys_t pgp_invoke_getkeys;\n  crypt_func_pgp_invoke_import_t pgp_invoke_import;\n  crypt_func_pgp_extract_keys_from_attachment_list_t\n                                 pgp_extract_keys_from_attachment_list;\n\n  /* S/MIME specific functions.  */\n\n  crypt_func_smime_getkeys_t smime_getkeys;\n  crypt_func_smime_verify_sender_t smime_verify_sender;\n  crypt_func_smime_build_smime_entity_t smime_build_smime_entity;\n  crypt_func_smime_invoke_import_t smime_invoke_import;\n} crypt_module_functions_t;\n\n\n/*\n   A structure to describe a crypto module. \n */\ntypedef struct crypt_module_specs\n{\n  int identifier;\t\t\t/* Identifying bit.  */\n  crypt_module_functions_t functions;\n} *crypt_module_specs_t;\n\n\n\n/* \n   High Level crypto module interface. \n */\n\nvoid crypto_module_register (crypt_module_specs_t specs);\ncrypt_module_specs_t crypto_module_lookup (int identifier);\n\n/* If the crypto module identifier by IDENTIFIER has been registered,\n   call its function FUNC.  Do nothing else.  This may be used as an\n   expression. */\n#define CRYPT_MOD_CALL_CHECK(identifier, func) \\\n  (crypto_module_lookup (APPLICATION_ ## identifier) \\\n   && (crypto_module_lookup (APPLICATION_ ## identifier))->functions.func)\n\n/* Call the function FUNC in the crypto module identified by\n   IDENTIFIER. This may be used as an expression. */\n#define CRYPT_MOD_CALL(identifier, func) \\\n  *(crypto_module_lookup (APPLICATION_ ## identifier))->functions.func\n\n#endif\n"
  },
  {
    "path": "crypt.c",
    "content": "/*\n * Copyright (C) 1996-1997 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2000,2002-2004,2006 Thomas Roessler <roessler@does-not-exist.org>\n * Copyright (C) 2001 Thomas Roessler <roessler@does-not-exist.org>\n *                     Oliver Ehli <elmy@acm.org>\n * Copyright (C) 2003 Werner Koch <wk@gnupg.org>\n * Copyright (C) 2004 g10code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mime.h\"\n#include \"copy.h\"\n#include \"mutt_crypt.h\"\n\n#include <sys/wait.h>\n#include <string.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/stat.h>\n#include <errno.h>\n#include <ctype.h>\n\n#ifdef HAVE_LOCALE_H\n#include <locale.h>\n#endif\n\n#ifdef HAVE_SYS_TIME_H\n# include <sys/time.h>\n#endif\n\n#ifdef HAVE_SYS_RESOURCE_H\n# include <sys/resource.h>\n#endif\n\n\n/* print the current time to avoid spoofing of the signature output */\nvoid crypt_current_time(STATE *s, char *app_name)\n{\n  time_t t;\n  char p[STRING], tmp[STRING];\n\n  if (!WithCrypto)\n    return;\n\n  if (option (OPTCRYPTTIMESTAMP))\n  {\n    t = time(NULL);\n    setlocale (LC_TIME, \"\");\n    strftime (p, sizeof (p), _(\" (current time: %c)\"), localtime (&t));\n    setlocale (LC_TIME, \"C\");\n  }\n  else\n    *p = '\\0';\n\n  snprintf (tmp, sizeof (tmp), _(\"[-- %s output follows%s --]\\n\"), NONULL(app_name), p);\n  state_attach_puts (tmp, s);\n}\n\n\n\nvoid crypt_forget_passphrase (void)\n{\n  if ((WithCrypto & APPLICATION_PGP))\n    crypt_pgp_void_passphrase ();\n\n  if ((WithCrypto & APPLICATION_SMIME))\n    crypt_smime_void_passphrase ();\n\n  if (WithCrypto)\n    mutt_message _(\"Passphrase(s) forgotten.\");\n}\n\n\n#if defined(HAVE_SETRLIMIT) && (!defined(DEBUG))\n\nstatic void disable_coredumps (void)\n{\n  struct rlimit rl = {0, 0};\n  static short done = 0;\n\n  if (!done)\n  {\n    setrlimit (RLIMIT_CORE, &rl);\n    done = 1;\n  }\n}\n\n#endif /* HAVE_SETRLIMIT */\n\n\nint crypt_valid_passphrase(int flags)\n{\n  int ret = 0;\n\n# if defined(HAVE_SETRLIMIT) &&(!defined(DEBUG))\n  disable_coredumps ();\n# endif\n\n  if ((WithCrypto & APPLICATION_PGP) && (flags & APPLICATION_PGP))\n    ret = crypt_pgp_valid_passphrase ();\n\n  if ((WithCrypto & APPLICATION_SMIME) && (flags & APPLICATION_SMIME))\n    ret = crypt_smime_valid_passphrase ();\n\n  return ret;\n}\n\n\n\nint mutt_protect (HEADER *msg, char *keylist)\n{\n  BODY *pbody = NULL, *tmp_pbody = NULL;\n  BODY *tmp_smime_pbody = NULL;\n  BODY *tmp_pgp_pbody = NULL;\n  int flags = (WithCrypto & APPLICATION_PGP)? msg->security: 0;\n  int i;\n\n  if (!WithCrypto)\n    return -1;\n\n  if ((msg->security & SIGN) && !crypt_valid_passphrase (msg->security))\n    return (-1);\n\n  if ((WithCrypto & APPLICATION_PGP) && ((msg->security & PGPINLINE) == PGPINLINE))\n  {\n    if ((msg->content->type != TYPETEXT) ||\n        ascii_strcasecmp (msg->content->subtype, \"plain\"))\n    {\n      if ((i = query_quadoption (OPT_PGPMIMEAUTO,\n              _(\"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"))) != M_YES)\n      {\n        mutt_error _(\"Mail not sent: inline PGP can't be used with attachments.\");\n        return -1;\n      }\n    }\n    else\n    {\n      /* they really want to send it inline... go for it */\n      if (!isendwin ()) mutt_endwin _(\"Invoking PGP...\");\n      pbody = crypt_pgp_traditional_encryptsign (msg->content, flags, keylist);\n      if (pbody)\n      {\n        msg->content = pbody;\n        return 0;\n      }\n\n      /* otherwise inline won't work...ask for revert */\n      if ((i = query_quadoption (OPT_PGPMIMEAUTO, _(\"Message can't be sent inline.  Revert to using PGP/MIME?\"))) != M_YES)\n      {\n        mutt_error _(\"Mail not sent.\");\n        return -1;\n      }\n    }\n\n    /* go ahead with PGP/MIME */\n  }\n\n  if (!isendwin ()) mutt_endwin (NULL);\n\n  if ((WithCrypto & APPLICATION_SMIME))\n    tmp_smime_pbody = msg->content;\n  if ((WithCrypto & APPLICATION_PGP))\n    tmp_pgp_pbody   = msg->content;\n\n  if (option (OPTCRYPTUSEPKA) && (msg->security & SIGN))\n    {\n      /* Set sender (necessary for e.g. PKA).  */\n\n      if ((WithCrypto & APPLICATION_SMIME)\n\t  && (msg->security & APPLICATION_SMIME))\n\tcrypt_smime_set_sender (msg->env->from->mailbox);\n      else if ((WithCrypto & APPLICATION_PGP)\n\t  && (msg->security & APPLICATION_PGP))\n\tcrypt_pgp_set_sender (msg->env->from->mailbox);\n    }\n\n  if (msg->security & SIGN)\n  {\n    if ((WithCrypto & APPLICATION_SMIME)\n        && (msg->security & APPLICATION_SMIME))\n    {\n      if (!(tmp_pbody = crypt_smime_sign_message (msg->content)))\n\treturn -1;\n      pbody = tmp_smime_pbody = tmp_pbody;\n    }\n\n    if ((WithCrypto & APPLICATION_PGP)\n        && (msg->security & APPLICATION_PGP)\n        && (!(flags & ENCRYPT) || option (OPTPGPRETAINABLESIG)))\n    {\n      if (!(tmp_pbody = crypt_pgp_sign_message (msg->content)))\n        return -1;\n\n      flags &= ~SIGN;\n      pbody = tmp_pgp_pbody = tmp_pbody;\n    }\n\n    if (WithCrypto\n        && (msg->security & APPLICATION_SMIME)\n\t&& (msg->security & APPLICATION_PGP))\n    {\n\t/* here comes the draft ;-) */\n    }\n  }\n\n\n  if (msg->security & ENCRYPT)\n  {\n    if ((WithCrypto & APPLICATION_SMIME)\n        && (msg->security & APPLICATION_SMIME))\n    {\n      if (!(tmp_pbody = crypt_smime_build_smime_entity (tmp_smime_pbody,\n                                                        keylist)))\n      {\n\t/* signed ? free it! */\n\treturn (-1);\n      }\n      /* free tmp_body if messages was signed AND encrypted ... */\n      if (tmp_smime_pbody != msg->content && tmp_smime_pbody != tmp_pbody)\n      {\n\t/* detatch and don't delete msg->content,\n\t   which tmp_smime_pbody->parts after signing. */\n\ttmp_smime_pbody->parts = tmp_smime_pbody->parts->next;\n\tmsg->content->next = NULL;\n\tmutt_free_body (&tmp_smime_pbody);\n      }\n      pbody = tmp_pbody;\n    }\n\n    if ((WithCrypto & APPLICATION_PGP)\n        && (msg->security & APPLICATION_PGP))\n    {\n      if (!(pbody = crypt_pgp_encrypt_message (tmp_pgp_pbody, keylist,\n                                               flags & SIGN)))\n      {\n\n\t/* did we perform a retainable signature? */\n\tif (flags != msg->security)\n\t{\n\t  /* remove the outer multipart layer */\n\t  tmp_pgp_pbody = mutt_remove_multipart (tmp_pgp_pbody);\n\t  /* get rid of the signature */\n\t  mutt_free_body (&tmp_pgp_pbody->next);\n\t}\n\n\treturn (-1);\n      }\n\n      /* destroy temporary signature envelope when doing retainable \n       * signatures.\n\n       */\n      if (flags != msg->security)\n      {\n\ttmp_pgp_pbody = mutt_remove_multipart (tmp_pgp_pbody);\n\tmutt_free_body (&tmp_pgp_pbody->next);\n      }\n    }\n  }\n\n  if(pbody)\n      msg->content = pbody;\n\n  return 0;\n}\n\n\n   \n     \nint mutt_is_multipart_signed (BODY *b)\n{\n  char *p;\n\n  if (!b || !(b->type == TYPEMULTIPART) ||\n      !b->subtype || ascii_strcasecmp(b->subtype, \"signed\"))\n    return 0;\n\n  if (!(p = mutt_get_parameter(\"protocol\", b->parameter)))\n    return 0;\n\n  if (!(ascii_strcasecmp (p, \"multipart/mixed\")))\n    return SIGN;\n\n  if ((WithCrypto & APPLICATION_PGP)\n      && !(ascii_strcasecmp (p, \"application/pgp-signature\")))\n    return PGPSIGN;\n    \n  if ((WithCrypto & APPLICATION_SMIME)\n      && !(ascii_strcasecmp (p, \"application/x-pkcs7-signature\")))\n    return SMIMESIGN;\n  if ((WithCrypto & APPLICATION_SMIME)\n      && !(ascii_strcasecmp (p, \"application/pkcs7-signature\")))\n    return SMIMESIGN;\n\n  return 0;\n}\n   \n     \nint mutt_is_multipart_encrypted (BODY *b)\n{\n  if ((WithCrypto & APPLICATION_PGP))\n  {\n    char *p;\n  \n    if (!b || b->type != TYPEMULTIPART ||\n        !b->subtype || ascii_strcasecmp (b->subtype, \"encrypted\") ||\n        !(p = mutt_get_parameter (\"protocol\", b->parameter)) ||\n        ascii_strcasecmp (p, \"application/pgp-encrypted\"))\n      return 0;\n  \n    return PGPENCRYPT;\n  }\n\n  return 0;\n}\n\n\nint mutt_is_valid_multipart_pgp_encrypted (BODY *b)\n{\n  if (! mutt_is_multipart_encrypted (b))\n    return 0;\n\n  b = b->parts;\n  if (!b || b->type != TYPEAPPLICATION ||\n      !b->subtype || ascii_strcasecmp (b->subtype, \"pgp-encrypted\"))\n    return 0;\n\n  b = b->next;\n  if (!b || b->type != TYPEAPPLICATION ||\n      !b->subtype || ascii_strcasecmp (b->subtype, \"octet-stream\"))\n    return 0;\n\n  return PGPENCRYPT;\n}\n\n\n/*\n * This checks for the malformed layout caused by MS Exchange in\n * some cases:\n *  <multipart/mixed>\n *     <text/plain>\n *     <application/pgp-encrypted> [BASE64-encoded]\n *     <application/octet-stream> [BASE64-encoded]\n * See ticket #3742\n */\nint mutt_is_malformed_multipart_pgp_encrypted (BODY *b)\n{\n  if (!(WithCrypto & APPLICATION_PGP))\n    return 0;\n\n  if (!b || b->type != TYPEMULTIPART ||\n      !b->subtype || ascii_strcasecmp (b->subtype, \"mixed\"))\n    return 0;\n\n  b = b->parts;\n  if (!b || b->type != TYPETEXT ||\n      !b->subtype || ascii_strcasecmp (b->subtype, \"plain\") ||\n       b->length != 0)\n    return 0;\n\n  b = b->next;\n  if (!b || b->type != TYPEAPPLICATION ||\n      !b->subtype || ascii_strcasecmp (b->subtype, \"pgp-encrypted\"))\n    return 0;\n\n  b = b->next;\n  if (!b || b->type != TYPEAPPLICATION ||\n      !b->subtype || ascii_strcasecmp (b->subtype, \"octet-stream\"))\n    return 0;\n\n  b = b->next;\n  if (b)\n    return 0;\n\n  return PGPENCRYPT;\n}\n\n\nint mutt_is_application_pgp (BODY *m)\n{\n  int t = 0;\n  char *p;\n  \n  if (m->type == TYPEAPPLICATION)\n  {\n    if (!ascii_strcasecmp (m->subtype, \"pgp\") || !ascii_strcasecmp (m->subtype, \"x-pgp-message\"))\n    {\n      if ((p = mutt_get_parameter (\"x-action\", m->parameter))\n\t  && (!ascii_strcasecmp (p, \"sign\") || !ascii_strcasecmp (p, \"signclear\")))\n\tt |= PGPSIGN;\n\n      if ((p = mutt_get_parameter (\"format\", m->parameter)) && \n\t  !ascii_strcasecmp (p, \"keys-only\"))\n\tt |= PGPKEY;\n\n      if(!t) t |= PGPENCRYPT;  /* not necessarily correct, but... */\n    }\n\n    if (!ascii_strcasecmp (m->subtype, \"pgp-signed\"))\n      t |= PGPSIGN;\n\n    if (!ascii_strcasecmp (m->subtype, \"pgp-keys\"))\n      t |= PGPKEY;\n  }\n  else if (m->type == TYPETEXT && ascii_strcasecmp (\"plain\", m->subtype) == 0)\n  {\n    if (((p = mutt_get_parameter (\"x-mutt-action\", m->parameter))\n\t || (p = mutt_get_parameter (\"x-action\", m->parameter)) \n\t || (p = mutt_get_parameter (\"action\", m->parameter)))\n\t && !ascii_strncasecmp (\"pgp-sign\", p, 8))\n      t |= PGPSIGN;\n    else if (p && !ascii_strncasecmp (\"pgp-encrypt\", p, 11))\n      t |= PGPENCRYPT;\n    else if (p && !ascii_strncasecmp (\"pgp-keys\", p, 7))\n      t |= PGPKEY;\n  }\n  if (t)\n    t |= PGPINLINE;\n\n  return t;\n}\n\nint mutt_is_application_smime (BODY *m)\n{\n  char *t=NULL;\n  int len, complain=0;\n\n  if(!m)\n    return 0;\n\n  if ((m->type & TYPEAPPLICATION) && m->subtype)\n  {\n    /* S/MIME MIME types don't need x- anymore, see RFC2311 */\n    if (!ascii_strcasecmp (m->subtype, \"x-pkcs7-mime\") ||\n\t!ascii_strcasecmp (m->subtype, \"pkcs7-mime\"))\n    {\n      if ((t = mutt_get_parameter (\"smime-type\", m->parameter)))\n      {\n\tif (!ascii_strcasecmp (t, \"enveloped-data\"))\n\t  return SMIMEENCRYPT;\n\telse if (!ascii_strcasecmp (t, \"signed-data\"))\n\t  return (SMIMESIGN|SMIMEOPAQUE);\n\telse return 0;\n      }\n      /* Netscape 4.7 uses \n       * Content-Description: S/MIME Encrypted Message\n       * instead of Content-Type parameter\n       */\n      if (!ascii_strcasecmp (m->description, \"S/MIME Encrypted Message\"))\n\treturn SMIMEENCRYPT;\n      complain = 1;\n    }\n    else if (ascii_strcasecmp (m->subtype, \"octet-stream\"))\n      return 0;\n\n    t = mutt_get_parameter (\"name\", m->parameter);\n\n    if (!t) t = m->d_filename;\n    if (!t) t = m->filename;\n    if (!t) \n    {\n      if (complain)\n\tmutt_message (_(\"S/MIME messages with no hints on content are unsupported.\"));\n      return 0;\n    }\n\n    /* no .p7c, .p10 support yet. */\n\n    len = mutt_strlen (t) - 4;\n    if (len > 0 && *(t+len) == '.')\n    {\n      len++;\n      if (!ascii_strcasecmp ((t+len), \"p7m\"))\n#if 0\n       return SMIMEENCRYPT;\n#else\n      /* Not sure if this is the correct thing to do, but \n         it's required for compatibility with Outlook */\n       return (SMIMESIGN|SMIMEOPAQUE);\n#endif\n      else if (!ascii_strcasecmp ((t+len), \"p7s\"))\n\treturn (SMIMESIGN|SMIMEOPAQUE);\n    }\n  }\n\n  return 0;\n}\n\n\n\n\n\n\nint crypt_query (BODY *m)\n{\n  int t = 0;\n\n  if (!WithCrypto)\n    return 0;\n  \n  if (!m)\n    return 0;\n\n  if (m->type == TYPEAPPLICATION)\n  {\n    if ((WithCrypto & APPLICATION_PGP))\n      t |= mutt_is_application_pgp(m);\n\n    if ((WithCrypto & APPLICATION_SMIME))\n    {\n      t |= mutt_is_application_smime(m);\n      if (t && m->goodsig) t |= GOODSIGN;\n      if (t && m->badsig) t |= BADSIGN;\n    }\n  }\n  else if ((WithCrypto & APPLICATION_PGP) && m->type == TYPETEXT)\n  {\n    t |= mutt_is_application_pgp (m);\n    if (t && m->goodsig)\n      t |= GOODSIGN;\n  }\n  \n  if (m->type == TYPEMULTIPART)\n  {\n    t |= mutt_is_multipart_encrypted(m);\n    t |= mutt_is_multipart_signed (m);\n    t |= mutt_is_malformed_multipart_pgp_encrypted (m);\n\n    if (t && m->goodsig) \n      t |= GOODSIGN;\n  }\n\n  if (m->type == TYPEMULTIPART || m->type == TYPEMESSAGE)\n  {\n    BODY *p;\n    int u, v, w;\n    \n    u = m->parts ? 0xffffffff : 0;\t/* Bits set in all parts */\n    w = 0;\t\t\t\t/* Bits set in any part  */\n \n    for (p = m->parts; p; p = p->next)\n    {\n      v  = crypt_query (p);\n      u &= v; w |= v;\n    }\n    t |= u | (w & ~GOODSIGN);\n    \n    if ((w & GOODSIGN) && !(u & GOODSIGN))\n      t |= PARTSIGN;\n  }\n\n  return t;\n}\n\n\n\n\nint crypt_write_signed(BODY *a, STATE *s, const char *tempfile)\n{\n  FILE *fp;\n  int c;\n  short hadcr;\n  size_t bytes;\n\n  if (!WithCrypto)\n    return -1;\n\n  if (!(fp = safe_fopen (tempfile, \"w\")))\n  {\n    mutt_perror (tempfile);\n    return -1;\n  }\n      \n  fseeko (s->fpin, a->hdr_offset, 0);\n  bytes = a->length + a->offset - a->hdr_offset;\n  hadcr = 0;\n  while (bytes > 0)\n  {\n    if ((c = fgetc (s->fpin)) == EOF)\n      break;\n    \n    bytes--;\n    \n    if  (c == '\\r')\n      hadcr = 1;\n    else \n    {\n      if (c == '\\n' && !hadcr)\n\tfputc ('\\r', fp);\n      \n      hadcr = 0;\n    }\n    \n    fputc (c, fp);\n    \n  }\n  safe_fclose (&fp);\n\n  return 0;\n}\n\n\n\nvoid convert_to_7bit (BODY *a)\n{\n  if (!WithCrypto)\n    return;\n\n  while (a)\n  {\n    if (a->type == TYPEMULTIPART)\n    {\n      if (a->encoding != ENC7BIT)\n      {\n        a->encoding = ENC7BIT;\n\tconvert_to_7bit(a->parts);\n      }\n      else if ((WithCrypto & APPLICATION_PGP) && option (OPTPGPSTRICTENC))\n\tconvert_to_7bit (a->parts);\n    } \n    else if (a->type == TYPEMESSAGE &&\n\t     ascii_strcasecmp(a->subtype, \"delivery-status\"))\n    {\n      if(a->encoding != ENC7BIT)\n\tmutt_message_to_7bit (a, NULL);\n    }\n    else if (a->encoding == ENC8BIT)\n      a->encoding = ENCQUOTEDPRINTABLE;\n    else if (a->encoding == ENCBINARY)\n      a->encoding = ENCBASE64;\n    else if (a->content && a->encoding != ENCBASE64 &&\n\t     (a->content->from || (a->content->space && \n\t\t\t\t   option (OPTPGPSTRICTENC))))\n      a->encoding = ENCQUOTEDPRINTABLE;\n    a = a->next;\n  }\n}\n\n\n\n\nvoid crypt_extract_keys_from_messages (HEADER * h)\n{\n  int i;\n  char tempfname[_POSIX_PATH_MAX], *mbox;\n  ADDRESS *tmp = NULL;\n  FILE *fpout;\n\n  if (!WithCrypto)\n    return;\n\n  mutt_mktemp (tempfname, sizeof (tempfname));\n  if (!(fpout = safe_fopen (tempfname, \"w\")))\n  {\n    mutt_perror (tempfname);\n    return;\n  }\n\n  if ((WithCrypto & APPLICATION_PGP))\n    set_option (OPTDONTHANDLEPGPKEYS);\n\n  if (!h)\n  {\n    for (i = 0; i < Context->vcount; i++)\n    {\n      if (Context->hdrs[Context->v2r[i]]->tagged)\n      {\n\tmutt_parse_mime_message (Context, Context->hdrs[Context->v2r[i]]);\n\tif (Context->hdrs[Context->v2r[i]]->security & ENCRYPT &&\n\t    !crypt_valid_passphrase (Context->hdrs[Context->v2r[i]]->security))\n\t{\n\t  safe_fclose (&fpout);\n\t  break;\n\t}\n\n\tif ((WithCrypto & APPLICATION_PGP)\n            && (Context->hdrs[Context->v2r[i]]->security & APPLICATION_PGP))\n\t{\n\t  mutt_copy_message (fpout, Context, Context->hdrs[Context->v2r[i]], \n\t\t\t     M_CM_DECODE|M_CM_CHARCONV, 0);\n\t  fflush(fpout);\n\t  \n\t  mutt_endwin (_(\"Trying to extract PGP keys...\\n\"));\n\t  crypt_pgp_invoke_import (tempfname);\n\t}\n\n\tif ((WithCrypto & APPLICATION_SMIME)\n            && (Context->hdrs[Context->v2r[i]]->security & APPLICATION_SMIME))\n\t{\n\t  if (Context->hdrs[Context->v2r[i]]->security & ENCRYPT)\n\t    mutt_copy_message (fpout, Context, Context->hdrs[Context->v2r[i]],\n\t\t\t       M_CM_NOHEADER|M_CM_DECODE_CRYPT\n                               |M_CM_DECODE_SMIME, 0);\n\t  else\n\t    mutt_copy_message (fpout, Context,\n\t\t\t       Context->hdrs[Context->v2r[i]], 0, 0);\n\t  fflush(fpout);\n\n          if (Context->hdrs[Context->v2r[i]]->env->from)\n\t    tmp = mutt_expand_aliases (Context->hdrs[Context->v2r[i]]->env->from);\n\t  else if (Context->hdrs[Context->v2r[i]]->env->sender)\n\t    tmp = mutt_expand_aliases (Context->hdrs[Context->v2r[i]]\n                                                    ->env->sender);\n          mbox = tmp ? tmp->mailbox : NULL;\n\t  if (mbox)\n\t  {\n\t    mutt_endwin (_(\"Trying to extract S/MIME certificates...\\n\"));\n\t    crypt_smime_invoke_import (tempfname, mbox);\n\t    tmp = NULL;\n\t  }\n\t}\n\n\trewind (fpout);\n      }\n    }\n  }\n  else\n  {\n    mutt_parse_mime_message (Context, h);\n    if (!(h->security & ENCRYPT && !crypt_valid_passphrase (h->security)))\n    {\n      if ((WithCrypto & APPLICATION_PGP)\n          && (h->security & APPLICATION_PGP))\n      {\n\tmutt_copy_message (fpout, Context, h, M_CM_DECODE|M_CM_CHARCONV, 0);\n\tfflush(fpout);\n\tmutt_endwin (_(\"Trying to extract PGP keys...\\n\"));\n\tcrypt_pgp_invoke_import (tempfname);\n      }\n\n      if ((WithCrypto & APPLICATION_SMIME)\n          && (h->security & APPLICATION_SMIME))\n      {\n\tif (h->security & ENCRYPT)\n\t  mutt_copy_message (fpout, Context, h, M_CM_NOHEADER\n                                                |M_CM_DECODE_CRYPT\n                                                |M_CM_DECODE_SMIME, 0);\n\telse\n\t  mutt_copy_message (fpout, Context, h, 0, 0);\n\n\tfflush(fpout);\n\tif (h->env->from) tmp = mutt_expand_aliases (h->env->from);\n\telse if (h->env->sender)  tmp = mutt_expand_aliases (h->env->sender); \n\tmbox = tmp ? tmp->mailbox : NULL;\n\tif (mbox) /* else ? */\n\t{\n\t  mutt_message (_(\"Trying to extract S/MIME certificates...\\n\"));\n\t  crypt_smime_invoke_import (tempfname, mbox);\n\t}\n      }\n    }\n  }\n      \n  safe_fclose (&fpout);\n  if (isendwin())\n    mutt_any_key_to_continue (NULL);\n\n  mutt_unlink (tempfname);\n\n  if ((WithCrypto & APPLICATION_PGP))\n    unset_option (OPTDONTHANDLEPGPKEYS);\n}\n\n\n\nint crypt_get_keys (HEADER *msg, char **keylist, int oppenc_mode)\n{\n  ADDRESS *adrlist = NULL, *last = NULL;\n  const char *fqdn = mutt_fqdn (1);\n\n  /* Do a quick check to make sure that we can find all of the encryption\n   * keys if the user has requested this service.\n   */\n\n  if (!WithCrypto)\n    return 0;\n\n  if ((WithCrypto & APPLICATION_PGP))\n    set_option (OPTPGPCHECKTRUST);\n\n  last = rfc822_append (&adrlist, msg->env->to, 0);\n  last = rfc822_append (last ? &last : &adrlist, msg->env->cc, 0);\n  rfc822_append (last ? &last : &adrlist, msg->env->bcc, 0);\n\n  if (fqdn)\n    rfc822_qualify (adrlist, fqdn);\n  adrlist = mutt_remove_duplicates (adrlist);\n\n  *keylist = NULL;\n\n  if (oppenc_mode || (msg->security & ENCRYPT))\n  {\n     if ((WithCrypto & APPLICATION_PGP)\n         && (msg->security & APPLICATION_PGP))\n     {\n       if ((*keylist = crypt_pgp_findkeys (adrlist, oppenc_mode)) == NULL)\n       {\n           rfc822_free_address (&adrlist);\n           return (-1);\n       }\n       unset_option (OPTPGPCHECKTRUST);\n     }\n     if ((WithCrypto & APPLICATION_SMIME)\n         && (msg->security & APPLICATION_SMIME))\n     {\n       if ((*keylist = crypt_smime_findkeys (adrlist, oppenc_mode)) == NULL)\n       {\n           rfc822_free_address (&adrlist);\n           return (-1);\n       }\n     }\n  }\n\n  rfc822_free_address (&adrlist);\n    \n  return (0);\n}\n\n\n/*\n * Check if all recipients keys can be automatically determined.\n * Enable encryption if they can, otherwise disable encryption.\n */\n\nvoid crypt_opportunistic_encrypt(HEADER *msg)\n{\n  char *pgpkeylist = NULL;\n\n  if (!WithCrypto)\n    return;\n\n  if (! (option (OPTCRYPTOPPORTUNISTICENCRYPT) && (msg->security & OPPENCRYPT)) )\n    return;\n\n  crypt_get_keys (msg, &pgpkeylist, 1);\n  if (pgpkeylist != NULL )\n  {\n    msg->security |= ENCRYPT;\n    FREE (&pgpkeylist);\n  }\n  else\n  {\n    msg->security &= ~ENCRYPT;\n  }\n}\n\n\n\nstatic void crypt_fetch_signatures (BODY ***signatures, BODY *a, int *n)\n{\n  if (!WithCrypto)\n    return;\n\n  for (; a; a = a->next)\n  {\n    if (a->type == TYPEMULTIPART)\n      crypt_fetch_signatures (signatures, a->parts, n);\n    else\n    {\n      if((*n % 5) == 0)\n\tsafe_realloc (signatures, (*n + 6) * sizeof (BODY **));\n\n      (*signatures)[(*n)++] = a;\n    }\n  }\n}\n\n\n/*\n * This routine verifies a  \"multipart/signed\"  body.\n */\n\nint mutt_signed_handler (BODY *a, STATE *s)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  int signed_type;\n  int inconsistent = 0;\n  \n  BODY *b = a;\n  BODY **signatures = NULL;\n  int sigcnt = 0;\n  int i;\n  short goodsig = 1;\n  int rc = 0;\n\n  if (!WithCrypto)\n    return -1;\n\n  a = a->parts;\n  signed_type = mutt_is_multipart_signed (b);\n  if (!signed_type)\n  {\n    /* A null protocol value is already checked for in mutt_body_handler() */\n    state_printf (s, _(\"[-- Error: \"\n                       \"Unknown multipart/signed protocol %s! --]\\n\\n\"),\n                  mutt_get_parameter (\"protocol\", b->parameter));\n    return mutt_body_handler (a, s);\n  }\n\n  if (!(a && a->next))\n    inconsistent = 1;\n  else\n  {\n    switch (signed_type)\n    {\n      case SIGN:\n        if (a->next->type != TYPEMULTIPART ||\n            ascii_strcasecmp (a->next->subtype, \"mixed\"))\n          inconsistent = 1;\n        break;\n      case PGPSIGN:\n        if (a->next->type != TYPEAPPLICATION ||\n            ascii_strcasecmp (a->next->subtype, \"pgp-signature\"))\n          inconsistent = 1;\n        break;\n      case SMIMESIGN:\n        if (a->next->type != TYPEAPPLICATION ||\n            (ascii_strcasecmp (a->next->subtype, \"x-pkcs7-signature\") &&\n             ascii_strcasecmp (a->next->subtype, \"pkcs7-signature\")))\n          inconsistent = 1;\n        break;\n      default:\n        inconsistent = 1;\n    }\n  }\n  if (inconsistent)\n  {\n    state_attach_puts (_(\"[-- Error: \"\n                         \"Inconsistent multipart/signed structure! --]\\n\\n\"),\n                       s);\n    return mutt_body_handler (a, s);\n  }\n\n  if (s->flags & M_DISPLAY)\n  {\n    \n    crypt_fetch_signatures (&signatures, a->next, &sigcnt);\n    \n    if (sigcnt)\n    {\n      mutt_mktemp (tempfile, sizeof (tempfile));\n      if (crypt_write_signed (a, s, tempfile) == 0)\n      {\n\tfor (i = 0; i < sigcnt; i++)\n\t{\n\t  if ((WithCrypto & APPLICATION_PGP)\n              && signatures[i]->type == TYPEAPPLICATION \n\t      && !ascii_strcasecmp (signatures[i]->subtype, \"pgp-signature\"))\n\t  {\n\t    if (crypt_pgp_verify_one (signatures[i], s, tempfile) != 0)\n\t      goodsig = 0;\n\t    \n\t    continue;\n\t  }\n\n\t  if ((WithCrypto & APPLICATION_SMIME)\n              && signatures[i]->type == TYPEAPPLICATION \n\t      && (!ascii_strcasecmp(signatures[i]->subtype, \"x-pkcs7-signature\")\n\t\t  || !ascii_strcasecmp(signatures[i]->subtype, \"pkcs7-signature\")))\n\t  {\n\t    if (crypt_smime_verify_one (signatures[i], s, tempfile) != 0)\n\t      goodsig = 0;\n\t    \n\t    continue;\n\t  }\n\n\t  state_printf (s, _(\"[-- Warning: \"\n                             \"We can't verify %s/%s signatures. --]\\n\\n\"),\n\t\t\t  TYPE(signatures[i]), signatures[i]->subtype);\n\t}\n      }\n      \n      mutt_unlink (tempfile);\n\n      b->goodsig = goodsig;\n      b->badsig  = !goodsig;\n      \n      /* Now display the signed body */\n      state_attach_puts (_(\"[-- The following data is signed --]\\n\\n\"), s);\n\n\n      FREE (&signatures);\n    }\n    else\n      state_attach_puts (_(\"[-- Warning: Can't find any signatures. --]\\n\\n\"), s);\n  }\n  \n  rc = mutt_body_handler (a, s);\n  \n  if (s->flags & M_DISPLAY && sigcnt)\n    state_attach_puts (_(\"\\n[-- End of signed data --]\\n\"), s);\n  \n  return rc;\n}\n\n\n/* Obtain pointers to fingerprint or short or long key ID, if any.\n * See mutt_crypt.h for details.\n */\nconst char* crypt_get_fingerprint_or_id (char *p, const char **pphint,\n    const char **ppl, const char **pps)\n{\n  const char *ps, *pl, *phint;\n  char *pfcopy, *pf, *s1, *s2;\n  char c;\n  int isid;\n  size_t hexdigits;\n\n  /* User input may be partial name, fingerprint or short or long key ID,\n   * independent of OPTPGPLONGIDS.\n   * Fingerprint without spaces is 40 hex digits (SHA-1) or 32 hex digits (MD5).\n   * Strip leading \"0x\" for key ID detection and prepare pl and ps to indicate\n   * if an ID was found and to simplify logic in the key loop's inner\n   * condition of the caller. */\n\n  pf = mutt_skip_whitespace (p);\n  if (!mutt_strncasecmp (pf, \"0x\", 2))\n    pf += 2;\n\n  /* Check if a fingerprint is given, must be hex digits only, blanks\n   * separating groups of 4 hex digits are allowed. Also pre-check for ID. */\n  isid = 2;             /* unknown */\n  hexdigits = 0;\n  s1 = pf;\n  do\n  {\n    c = *(s1++);\n    if (('0' <= c && c <= '9') || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f'))\n    {\n      ++hexdigits;\n      if (isid == 2)\n        isid = 1;       /* it is an ID so far */\n    }\n    else if (c)\n    {\n      isid = 0;         /* not an ID */\n      if (c == ' ' && ((hexdigits % 4) == 0))\n        ;               /* skip blank before or after 4 hex digits */\n      else\n        break;          /* any other character or position */\n    }\n  } while (c);\n\n  /* If at end of input, check for correct fingerprint length and copy if. */\n  pfcopy = (!c && ((hexdigits == 40) || (hexdigits == 32)) ? safe_strdup (pf) : NULL);\n\n  if (pfcopy)\n  {\n    /* Use pfcopy to strip all spaces from fingerprint and as hint. */\n    s1 = s2 = pfcopy;\n    do\n    {\n      *(s1++) = *(s2 = mutt_skip_whitespace (s2));\n    } while (*(s2++));\n\n    phint = pfcopy;\n    ps = pl = NULL;\n  }\n  else\n  {\n    phint = p;\n    ps = pl = NULL;\n    if (isid == 1)\n    {\n      if (mutt_strlen (pf) == 16)\n        pl = pf;        /* long key ID */\n      else if (mutt_strlen (pf) == 8)\n        ps = pf;        /* short key ID */\n    }\n  }\n\n  *pphint = phint;\n  *ppl = pl;\n  *pps = ps;\n  return pfcopy;\n}\n\n\n/*\n * Used by pgp_findKeys and find_keys to check if a crypt-hook\n * value is a key id.\n */\n\nshort crypt_is_numerical_keyid (const char *s)\n{\n  /* or should we require the \"0x\"? */\n  if (strncmp (s, \"0x\", 2) == 0)\n    s += 2;\n  if (strlen (s) % 8)\n    return 0;\n  while (*s)\n    if (strchr (\"0123456789ABCDEFabcdef\", *s++) == NULL)\n      return 0;\n\n  return 1;\n}\n\n\n"
  },
  {
    "path": "cryptglue.c",
    "content": "/*\n * Copyright (C) 2003 Werner Koch <wk@gnupg.org>\n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/*\n   This file dispatches the generic crypto functions to the\n   implemented backend or provides dummy stubs.  Note, that some\n   generic functions are handled in crypt.c.\n*/\n\n/* Note: This file has been changed to make use of the new module\n   system.  Consequently there's a 1:1 mapping between the functions\n   contained in this file and the functions implemented by the crypto\n   modules.  */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_crypt.h\"\n\n#include \"crypt-mod.h\"\n\n/*\n    \n    Generic\n\n*/\n\n#ifdef CRYPT_BACKEND_CLASSIC_PGP\nextern struct crypt_module_specs crypt_mod_pgp_classic;\n#endif\n\n#ifdef CRYPT_BACKEND_CLASSIC_SMIME\nextern struct crypt_module_specs crypt_mod_smime_classic;\n#endif\n\n#ifdef CRYPT_BACKEND_GPGME\nextern struct crypt_module_specs crypt_mod_pgp_gpgme;\nextern struct crypt_module_specs crypt_mod_smime_gpgme;\n#endif\n\nvoid crypt_init (void)\n{\n#ifdef CRYPT_BACKEND_CLASSIC_PGP\n  if (\n#ifdef CRYPT_BACKEND_GPGME\n      (! option (OPTCRYPTUSEGPGME))\n#else\n       1\n#endif\n      )\n    crypto_module_register (&crypt_mod_pgp_classic);\n#endif\n\n#ifdef CRYPT_BACKEND_CLASSIC_SMIME\n  if (\n#ifdef CRYPT_BACKEND_GPGME\n      (! option (OPTCRYPTUSEGPGME))\n#else\n       1\n#endif\n      )\n    crypto_module_register (&crypt_mod_smime_classic);\n#endif\n\n  if (option (OPTCRYPTUSEGPGME))\n    {\n#ifdef CRYPT_BACKEND_GPGME\n      crypto_module_register (&crypt_mod_pgp_gpgme);\n      crypto_module_register (&crypt_mod_smime_gpgme);\n#else\n      mutt_message (_(\"\\\"crypt_use_gpgme\\\" set\"\n                      \" but not built with GPGME support.\"));\n      if (mutt_any_key_to_continue (NULL) == -1)\n\tmutt_exit(1);\n#endif\n    }\n\n#if defined CRYPT_BACKEND_CLASSIC_PGP || defined CRYPT_BACKEND_CLASSIC_SMIME || defined CRYPT_BACKEND_GPGME\n  if (CRYPT_MOD_CALL_CHECK (PGP, init))\n    (CRYPT_MOD_CALL (PGP, init)) ();\n\n  if (CRYPT_MOD_CALL_CHECK (SMIME, init))\n    (CRYPT_MOD_CALL (SMIME, init)) ();\n#endif\n}\n\n\n/* Show a message that a backend will be invoked. */\nvoid crypt_invoke_message (int type)\n{\n  if ((WithCrypto & APPLICATION_PGP) && (type & APPLICATION_PGP))\n    mutt_message _(\"Invoking PGP...\");\n  else if ((WithCrypto & APPLICATION_SMIME) && (type & APPLICATION_SMIME))\n    mutt_message _(\"Invoking S/MIME...\");\n}\n\n\n\f\n/* \n\n    PGP\n\n*/\n\n\n/* Reset a PGP passphrase */\nvoid crypt_pgp_void_passphrase (void)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, void_passphrase))\n    (CRYPT_MOD_CALL (PGP, void_passphrase)) ();\n}\n\nint crypt_pgp_valid_passphrase (void)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, valid_passphrase))\n    return (CRYPT_MOD_CALL (PGP, valid_passphrase)) ();\n\n  return 0;\n}\n\n\n/* Decrypt a PGP/MIME message. */\nint crypt_pgp_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, decrypt_mime))\n    return (CRYPT_MOD_CALL (PGP, decrypt_mime)) (a, b, c, d);\n\n  return -1;\n}\n\n/* MIME handler for the application/pgp content-type. */\nint crypt_pgp_application_pgp_handler (BODY *m, STATE *s)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, application_handler))\n    return (CRYPT_MOD_CALL (PGP, application_handler)) (m, s);\n  \n  return -1;\n}\n\n/* MIME handler for an PGP/MIME encrypted message. */\nint crypt_pgp_encrypted_handler (BODY *a, STATE *s)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, encrypted_handler))\n    return (CRYPT_MOD_CALL (PGP, encrypted_handler)) (a, s);\n  \n  return -1;\n}\n\n/* fixme: needs documentation. */\nvoid crypt_pgp_invoke_getkeys (ADDRESS *addr)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_invoke_getkeys))\n    (CRYPT_MOD_CALL (PGP, pgp_invoke_getkeys)) (addr);\n}\n\n/* Check for a traditional PGP message in body B. */\nint crypt_pgp_check_traditional (FILE *fp, BODY *b, int tagged_only)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_check_traditional))\n    return (CRYPT_MOD_CALL (PGP, pgp_check_traditional)) (fp, b, tagged_only);\n\n  return 0;\n}\n\n/* fixme: needs documentation. */\nBODY *crypt_pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_traditional_encryptsign))\n    return (CRYPT_MOD_CALL (PGP, pgp_traditional_encryptsign)) (a, flags, keylist);\n\n  return NULL;\n}\n\n/* Generate a PGP public key attachment. */\nBODY *crypt_pgp_make_key_attachment (char *tempf)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_make_key_attachment))\n    return (CRYPT_MOD_CALL (PGP, pgp_make_key_attachment)) (tempf);\n\n  return NULL;\n}\n\n/* This routine attempts to find the keyids of the recipients of a\n   message.  It returns NULL if any of the keys can not be found.\n   If oppenc_mode is true, only keys that can be determined without\n   prompting will be used.  */\nchar *crypt_pgp_findkeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, findkeys))\n    return (CRYPT_MOD_CALL (PGP, findkeys)) (adrlist, oppenc_mode);\n\n  return NULL;\n}\n\n/* Create a new body with a PGP signed message from A. */\nBODY *crypt_pgp_sign_message (BODY *a)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, sign_message))\n    return (CRYPT_MOD_CALL (PGP, sign_message)) (a);\n\n  return NULL;\n}\n\n/* Warning: A is no longer freed in this routine, you need to free it\n   later.  This is necessary for $fcc_attach. */\nBODY *crypt_pgp_encrypt_message (BODY *a, char *keylist, int sign)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_encrypt_message))\n    return (CRYPT_MOD_CALL (PGP, pgp_encrypt_message)) (a, keylist, sign);\n\n  return NULL;\n}\n\n/* Invoke the PGP command to import a key. */\nvoid crypt_pgp_invoke_import (const char *fname)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_invoke_import))\n    (CRYPT_MOD_CALL (PGP, pgp_invoke_import)) (fname);\n}\n\n/* fixme: needs documentation */\nint crypt_pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempf)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, verify_one))\n    return (CRYPT_MOD_CALL (PGP, verify_one)) (sigbdy, s, tempf);\n\n  return -1;\n}\n\n\nint crypt_pgp_send_menu (HEADER *msg, int *redraw)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, send_menu))\n    return (CRYPT_MOD_CALL (PGP, send_menu)) (msg, redraw);\n\n  return 0;\n}\n\n\n/* fixme: needs documentation */\nvoid crypt_pgp_extract_keys_from_attachment_list (FILE *fp, int tag, BODY *top)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_extract_keys_from_attachment_list))\n    (CRYPT_MOD_CALL (PGP, pgp_extract_keys_from_attachment_list)) (fp, tag, top);\n}\n\nvoid crypt_pgp_set_sender (const char *sender)\n{\n  if (CRYPT_MOD_CALL_CHECK (PGP, set_sender))\n    (CRYPT_MOD_CALL (PGP, set_sender)) (sender);\n}\n\n\n\f\n\n/* \n\n   S/MIME \n\n*/\n\n\n/* Reset an SMIME passphrase */\nvoid crypt_smime_void_passphrase (void)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, void_passphrase))\n    (CRYPT_MOD_CALL (SMIME, void_passphrase)) ();\n}\n\nint crypt_smime_valid_passphrase (void)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, valid_passphrase))\n    return (CRYPT_MOD_CALL (SMIME, valid_passphrase)) ();\n\n  return 0;\n}\n\n/* Decrypt am S/MIME message. */\nint crypt_smime_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, decrypt_mime))\n    return (CRYPT_MOD_CALL (SMIME, decrypt_mime)) (a, b, c, d);\n\n  return -1;\n}\n\n/* MIME handler for the application/smime content-type. */\nint crypt_smime_application_smime_handler (BODY *m, STATE *s)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, application_handler))\n    return (CRYPT_MOD_CALL (SMIME, application_handler)) (m, s);\n  \n  return -1;\n}\n\n/* MIME handler for an PGP/MIME encrypted message. */\nvoid crypt_smime_encrypted_handler (BODY *a, STATE *s)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, encrypted_handler))\n    (CRYPT_MOD_CALL (SMIME, encrypted_handler)) (a, s);\n}\n\n/* fixme: Needs documentation. */\nvoid crypt_smime_getkeys (ENVELOPE *env)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, smime_getkeys))\n    (CRYPT_MOD_CALL (SMIME, smime_getkeys)) (env);\n}\n\n/* Check that the sender matches. */\nint crypt_smime_verify_sender(HEADER *h)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, smime_verify_sender))\n    return (CRYPT_MOD_CALL (SMIME, smime_verify_sender)) (h);\n\n  return 1;\n}\n\n/* This routine attempts to find the keyids of the recipients of a\n   message.  It returns NULL if any of the keys can not be found.\n   If oppenc_mode is true, only keys that can be determined without\n   prompting will be used.  */\nchar *crypt_smime_findkeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, findkeys))\n    return (CRYPT_MOD_CALL (SMIME, findkeys)) (adrlist, oppenc_mode);\n\n  return NULL;\n}\n\n/* fixme: Needs documentation. */\nBODY *crypt_smime_sign_message (BODY *a)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, sign_message))\n    return (CRYPT_MOD_CALL (SMIME, sign_message)) (a);\n\n  return NULL;\n}\n\n/* fixme: needs documentation. */\nBODY *crypt_smime_build_smime_entity (BODY *a, char *certlist)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, smime_build_smime_entity))\n    return (CRYPT_MOD_CALL (SMIME, smime_build_smime_entity)) (a, certlist);\n\n  return NULL;\n}\n\n/* Add a certificate and update index file (externally). */\nvoid crypt_smime_invoke_import (char *infile, char *mailbox)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, smime_invoke_import))\n    (CRYPT_MOD_CALL (SMIME, smime_invoke_import)) (infile, mailbox);\n}\n\n/* fixme: needs documentation */\nint crypt_smime_verify_one (BODY *sigbdy, STATE *s, const char *tempf)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, verify_one))\n    return (CRYPT_MOD_CALL (SMIME, verify_one)) (sigbdy, s, tempf);\n\n  return -1;\n}\n\nint crypt_smime_send_menu (HEADER *msg, int *redraw)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, send_menu))\n    return (CRYPT_MOD_CALL (SMIME, send_menu)) (msg, redraw);\n\n  return 0;\n}\n\nvoid crypt_smime_set_sender (const char *sender)\n{\n  if (CRYPT_MOD_CALL_CHECK (SMIME, set_sender))\n    (CRYPT_MOD_CALL (SMIME, set_sender)) (sender);\n}\n"
  },
  {
    "path": "crypthash.h",
    "content": "#ifndef _CRYPTHASH_H\n# define _CRYPTHASH_H\n\n\n# include <sys/types.h>\n# if HAVE_INTTYPES_H\n#  include <inttypes.h>\n# else\n#  if HAVE_STDINT_H\n#   include <stdint.h>\n#  endif\n# endif\n\n/* POINTER defines a generic pointer type */\ntypedef unsigned char *POINTER;\n\n#endif\n"
  },
  {
    "path": "curs_lib.c",
    "content": "/*\n * Copyright (C) 1996-2002,2010,2012-2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2004 g10 Code GmbH\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_curses.h\"\n#include \"pager.h\"\n#include \"mbyte.h\"\n\n#include <termios.h>\n#include <sys/types.h>\n#include <fcntl.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <string.h>\n#include <errno.h>\n#include <ctype.h>\n#ifdef HAVE_SYS_TIME_H\n# include <sys/time.h>\n#endif\n#include <time.h>\n\n#ifdef HAVE_LANGINFO_YESEXPR\n#include <langinfo.h>\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n/* not possible to unget more than one char under some curses libs, and it\n * is impossible to unget function keys in SLang, so roll our own input\n * buffering routines.\n */\n\n/* These are used for macros and exec/push commands.\n * They can be temporarily ignored by setting OPTIGNOREMACROEVENTS\n */\nstatic size_t MacroBufferCount = 0;\nstatic size_t MacroBufferLen = 0;\nstatic event_t *MacroEvents;\n\n/* These are used in all other \"normal\" situations, and are not\n * ignored when setting OPTIGNOREMACROEVENTS\n */\nstatic size_t UngetCount = 0;\nstatic size_t UngetLen = 0;\nstatic event_t *UngetKeyEvents;\n\nvoid mutt_refresh (void)\n{\n  /* don't refresh when we are waiting for a child. */\n  if (option (OPTKEEPQUIET))\n    return;\n\n  /* don't refresh in the middle of macros unless necessary */\n  if (UngetCount && !option (OPTFORCEREFRESH))\n    return;\n\n  /* else */\n  refresh ();\n}\n\n/* Make sure that the next refresh does a full refresh.  This could be\n   optimized by not doing it at all if DISPLAY is set as this might\n   indicate that a GUI based pinentry was used.  Having an option to\n   customize this is of course the Mutt way.  */\nvoid mutt_need_hard_redraw (void)\n{\n  keypad (stdscr, TRUE);\n  clearok (stdscr, TRUE);\n  set_option (OPTNEEDREDRAW);\n}\n\nevent_t mutt_getch (void)\n{\n  int ch;\n  event_t err = {-1, OP_NULL }, ret;\n  event_t timeout = {-2, OP_NULL};\n\n  if (UngetCount)\n    return (UngetKeyEvents[--UngetCount]);\n\n  if (!option(OPTIGNOREMACROEVENTS) && MacroBufferCount)\n    return (MacroEvents[--MacroBufferCount]);\n\n  SigInt = 0;\n\n  mutt_allow_interrupt (1);\n#ifdef KEY_RESIZE\n  /* ncurses 4.2 sends this when the screen is resized */\n  ch = KEY_RESIZE;\n  while (ch == KEY_RESIZE)\n#endif /* KEY_RESIZE */\n    ch = getch ();\n  mutt_allow_interrupt (0);\n\n  if (SigInt)\n  {\n    mutt_query_exit ();\n    return err;\n  }\n\n  if(ch == ERR)\n  {\n    /* either timeout or the terminal has been lost */\n    if (!isatty (0))\n    {\n      endwin ();\n      exit (1);\n    }\n    return timeout;\n  }\n\n  if ((ch & 0x80) && option (OPTMETAKEY))\n  {\n    /* send ALT-x as ESC-x */\n    ch &= ~0x80;\n    mutt_unget_event (ch, 0);\n    ret.ch = '\\033';\n    ret.op = 0;\n    return ret;\n  }\n\n  ret.ch = ch;\n  ret.op = 0;\n  return (ch == ctrl ('G') ? err : ret);\n}\n\nint _mutt_get_field (const char *field, char *buf, size_t buflen, int complete, int multiple, char ***files, int *numfiles)\n{\n  int ret;\n  int x, y;\n\n  ENTER_STATE *es = mutt_new_enter_state();\n  \n  do\n  {\n    CLEARLINE (LINES-1);\n    SETCOLOR (MT_COLOR_PROMPT);\n    addstr ((char *)field); /* cast to get around bad prototypes */\n    NORMAL_COLOR;\n    mutt_refresh ();\n    getyx (stdscr, y, x);\n    ret = _mutt_enter_string (buf, buflen, y, x, complete, multiple, files, numfiles, es);\n  }\n  while (ret == 1);\n  CLEARLINE (LINES-1);\n  mutt_free_enter_state (&es);\n  \n  return (ret);\n}\n\nint mutt_get_field_unbuffered (char *msg, char *buf, size_t buflen, int flags)\n{\n  int rc;\n\n  set_option (OPTIGNOREMACROEVENTS);\n  rc = mutt_get_field (msg, buf, buflen, flags);\n  unset_option (OPTIGNOREMACROEVENTS);\n\n  return (rc);\n}\n\nvoid mutt_clear_error (void)\n{\n  Errorbuf[0] = 0;\n  if (!option(OPTNOCURSES))\n    CLEARLINE (LINES-1);\n}\n\nvoid mutt_edit_file (const char *editor, const char *data)\n{\n  char cmd[LONG_STRING];\n  \n  mutt_endwin (NULL);\n  mutt_expand_file_fmt (cmd, sizeof (cmd), editor, data);\n  if (mutt_system (cmd))\n  {\n    mutt_error (_(\"Error running \\\"%s\\\"!\"), cmd);\n    mutt_sleep (2);\n  }\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\n  /* the terminal may have been resized while the editor owned it */\n  mutt_resize_screen ();\n#endif\n  keypad (stdscr, TRUE);\n  clearok (stdscr, TRUE);\n}\n\nint mutt_yesorno (const char *msg, int def)\n{\n  event_t ch;\n  char *yes = _(\"yes\");\n  char *no = _(\"no\");\n  char *answer_string;\n  size_t answer_string_len;\n  size_t msglen;\n\n#ifdef HAVE_LANGINFO_YESEXPR\n  char *expr;\n  regex_t reyes;\n  regex_t reno;\n  int reyes_ok;\n  int reno_ok;\n  char answer[2];\n\n  answer[1] = 0;\n  \n  reyes_ok = (expr = nl_langinfo (YESEXPR)) && expr[0] == '^' &&\n\t     !REGCOMP (&reyes, expr, REG_NOSUB);\n  reno_ok = (expr = nl_langinfo (NOEXPR)) && expr[0] == '^' &&\n            !REGCOMP (&reno, expr, REG_NOSUB);\n#endif\n\n  CLEARLINE(LINES-1);\n\n  /*\n   * In order to prevent the default answer to the question to wrapped\n   * around the screen in the even the question is wider than the screen,\n   * ensure there is enough room for the answer and truncate the question\n   * to fit.\n   */\n  safe_asprintf (&answer_string, \" ([%s]/%s): \", def == M_YES ? yes : no, def == M_YES ? no : yes);\n  answer_string_len = mutt_strwidth (answer_string);\n  /* maxlen here is sort of arbitrary, so pick a reasonable upper bound */\n  msglen = mutt_wstr_trunc (msg, 4*COLS, COLS - answer_string_len, NULL);\n  SETCOLOR (MT_COLOR_PROMPT);\n  addnstr (msg, msglen);\n  addstr (answer_string);\n  NORMAL_COLOR;\n  FREE (&answer_string);\n\n  FOREVER\n  {\n    mutt_refresh ();\n    ch = mutt_getch ();\n    if (CI_is_return (ch.ch))\n      break;\n    if (ch.ch < 0)\n    {\n      def = -1;\n      break;\n    }\n\n#ifdef HAVE_LANGINFO_YESEXPR\n    answer[0] = ch.ch;\n    if (reyes_ok ? \n\t(regexec (& reyes, answer, 0, 0, 0) == 0) :\n#else\n    if (\n#endif\n\t(tolower (ch.ch) == 'y'))\n    {\n      def = M_YES;\n      break;\n    }\n    else if (\n#ifdef HAVE_LANGINFO_YESEXPR\n\t     reno_ok ?\n\t     (regexec (& reno, answer, 0, 0, 0) == 0) :\n#endif\n\t     (tolower (ch.ch) == 'n'))\n    {\n      def = M_NO;\n      break;\n    }\n    else\n    {\n      BEEP();\n    }\n  }\n\n#ifdef HAVE_LANGINFO_YESEXPR    \n  if (reyes_ok)\n    regfree (& reyes);\n  if (reno_ok)\n    regfree (& reno);\n#endif\n\n  if (def != -1)\n  {\n    addstr ((char *) (def == M_YES ? yes : no));\n    mutt_refresh ();\n  }\n  else\n  {\n    /* when the users cancels with ^G, clear the message stored with\n     * mutt_message() so it isn't displayed when the screen is refreshed. */\n    mutt_clear_error();\n  }\n  return (def);\n}\n\n/* this function is called when the user presses the abort key */\nvoid mutt_query_exit (void)\n{\n  mutt_flushinp ();\n  curs_set (1);\n  if (Timeout)\n    timeout (-1); /* restore blocking operation */\n  if (mutt_yesorno (_(\"Exit Mutt?\"), M_YES) == M_YES)\n  {\n    endwin ();\n    exit (1);\n  }\n  mutt_clear_error();\n  mutt_curs_set (-1);\n  SigInt = 0;\n}\n\nstatic void curses_message (int error, const char *fmt, va_list ap)\n{\n  char scratch[LONG_STRING];\n\n  vsnprintf (scratch, sizeof (scratch), fmt, ap);\n\n  dprint (1, (debugfile, \"%s\\n\", scratch));\n  mutt_format_string (Errorbuf, sizeof (Errorbuf),\n\t\t      0, COLS, FMT_LEFT, 0, scratch, sizeof (scratch), 0);\n\n  if (!option (OPTKEEPQUIET))\n  {\n    if (error)\n      BEEP ();\n    SETCOLOR (error ? MT_COLOR_ERROR : MT_COLOR_MESSAGE);\n    mvaddstr (LINES-1, 0, Errorbuf);\n    NORMAL_COLOR;\n    clrtoeol ();\n    mutt_refresh ();\n  }\n\n  if (error)\n    set_option (OPTMSGERR);\n  else\n    unset_option (OPTMSGERR);\n}\n\nvoid mutt_curses_error (const char *fmt, ...)\n{\n  va_list ap;\n\n  va_start (ap, fmt);\n  curses_message (1, fmt, ap);\n  va_end (ap);\n}\n\nvoid mutt_curses_message (const char *fmt, ...)\n{\n  va_list ap;\n\n  va_start (ap, fmt);\n  curses_message (0, fmt, ap);\n  va_end (ap);\n}\n\nvoid mutt_progress_init (progress_t* progress, const char *msg,\n\t\t\t unsigned short flags, unsigned short inc,\n\t\t\t long size)\n{\n  struct timeval tv = { 0, 0 };\n\n  if (!progress)\n    return;\n  if (option(OPTNOCURSES))\n    return;\n\n  memset (progress, 0, sizeof (progress_t));\n  progress->inc = inc;\n  progress->flags = flags;\n  progress->msg = msg;\n  progress->size = size;\n  if (progress->size) {\n    if (progress->flags & M_PROGRESS_SIZE)\n      mutt_pretty_size (progress->sizestr, sizeof (progress->sizestr),\n\t\t\tprogress->size);\n    else\n      snprintf (progress->sizestr, sizeof (progress->sizestr), \"%ld\",\n\t\tprogress->size);\n  }\n  if (!inc)\n  {\n    if (size)\n      mutt_message (\"%s (%s)\", msg, progress->sizestr);\n    else\n      mutt_message (msg);\n    return;\n  }\n  if (gettimeofday (&tv, NULL) < 0)\n    dprint (1, (debugfile, \"gettimeofday failed: %d\\n\", errno));\n  /* if timestamp is 0 no time-based suppression is done */\n  if (TimeInc)\n    progress->timestamp = ((unsigned int) tv.tv_sec * 1000)\n        + (unsigned int) (tv.tv_usec / 1000);\n  mutt_progress_update (progress, 0, 0);\n}\n\n/**\n * message_bar - XXX\n */\nstatic void\nmessage_bar (int percent, const char *fmt, ...)\n{\n\tva_list ap;\n\tchar buf[STRING], buf2[STRING];\n\tint w = percent * COLS / 100;\n\tsize_t l;\n\n\tva_start (ap, fmt);\n\tvsnprintf (buf, sizeof (buf), fmt, ap);\n\tl = mutt_strwidth (buf);\n\tva_end (ap);\n\n\tmutt_format_string (buf2, sizeof (buf2), 0, COLS-2, FMT_LEFT, 0, buf, sizeof (buf), 0);\n\n\tmove (LINES - 1, 0);\n\n\tif (l < w) {\n\t\tSETCOLOR(MT_COLOR_PROGRESS);\n\t\taddstr (buf2);\n\t\tw -= l;\n\t\twhile (w--) {\n\t\t\taddch (' ');\n\t\t}\n\t\tSETCOLOR(MT_COLOR_NORMAL);\n\t\tclrtoeol();\n\t\tmutt_refresh();\n\t} else {\n\t\tsize_t bw;\n\t\tchar ch;\n\t\tint off = mutt_wstr_trunc (buf2, sizeof (buf2), w, &bw);\n\n\t\tch = buf2[off];\n\t\tbuf2[off] = 0;\n\t\tSETCOLOR(MT_COLOR_PROGRESS);\n\t\taddstr (buf2);\n\t\tbuf2[off] = ch;\n\t\tSETCOLOR(MT_COLOR_NORMAL);\n\t\taddstr (&buf2[off]);\n\t\tclrtoeol();\n\t\tmutt_refresh();\n\t}\n}\n\nvoid mutt_progress_update (progress_t* progress, long pos, int percent)\n{\n  char posstr[SHORT_STRING];\n  short update = 0;\n  struct timeval tv = { 0, 0 };\n  unsigned int now = 0;\n\n  if (option(OPTNOCURSES))\n    return;\n\n  if (!progress->inc)\n    goto out;\n\n  /* refresh if size > inc */\n  if (progress->flags & M_PROGRESS_SIZE &&\n      (pos >= progress->pos + (progress->inc << 10)))\n    update = 1;\n  else if (pos >= progress->pos + progress->inc)\n    update = 1;\n\n  /* skip refresh if not enough time has passed */\n  if (update && progress->timestamp && !gettimeofday (&tv, NULL)) {\n    now = ((unsigned int) tv.tv_sec * 1000)\n          + (unsigned int) (tv.tv_usec / 1000);\n    if (now && now - progress->timestamp < TimeInc)\n      update = 0;\n  }\n\n  /* always show the first update */\n  if (!pos)\n    update = 1;\n\n  if (update)\n  {\n    if (progress->flags & M_PROGRESS_SIZE)\n    {\n      pos = pos / (progress->inc << 10) * (progress->inc << 10);\n      mutt_pretty_size (posstr, sizeof (posstr), pos);\n    }\n    else\n      snprintf (posstr, sizeof (posstr), \"%ld\", pos);\n\n    dprint (5, (debugfile, \"updating progress: %s\\n\", posstr));\n\n    progress->pos = pos;\n    if (now)\n      progress->timestamp = now;\n\n    if (progress->size > 0)\n    {\n      message_bar ((percent > 0) ? percent : (int) (100.0 * (double) progress->pos / progress->size),\n        \"%s %s/%s (%d%%)\", progress->msg, posstr, progress->sizestr,\n        (percent > 0) ? percent : (int) (100.0 * (double) progress->pos / progress->size));\n    }\n    else\n    {\n      if (percent > 0)\n        message_bar (percent, \"%s %s (%d%%)\", progress->msg, posstr, percent);\n      else\n        mutt_message (\"%s %s\", progress->msg, posstr);\n    }\n  }\n\nout:\n  if (pos >= progress->size)\n    mutt_clear_error ();\n}\n\nvoid mutt_show_error (void)\n{\n  if (option (OPTKEEPQUIET))\n    return;\n  \n  SETCOLOR (option (OPTMSGERR) ? MT_COLOR_ERROR : MT_COLOR_MESSAGE);\n  mvaddstr(LINES-1, 0, Errorbuf);\n  NORMAL_COLOR;\n  clrtoeol();\n}\n\nvoid mutt_endwin (const char *msg)\n{\n  int e = errno;\n\n  if (!option (OPTNOCURSES))\n  {\n    /* at least in some situations (screen + xterm under SuSE11/12) endwin()\n     * doesn't properly flush the screen without an explicit call.\n     */\n    mutt_refresh();\n    endwin ();\n  }\n  \n  if (msg && *msg)\n  {\n    puts (msg);\n    fflush (stdout);\n  }\n\n  errno = e;\n}\n\nvoid mutt_perror (const char *s)\n{\n  char *p = strerror (errno);\n\n  dprint (1, (debugfile, \"%s: %s (errno = %d)\\n\", s, \n      p ? p : \"unknown error\", errno));\n  mutt_error (\"%s: %s (errno = %d)\", s, p ? p : _(\"unknown error\"), errno);\n}\n\nint mutt_any_key_to_continue (const char *s)\n{\n  struct termios t;\n  struct termios old;\n  int f, ch;\n\n  f = open (\"/dev/tty\", O_RDONLY);\n  tcgetattr (f, &t);\n  memcpy ((void *)&old, (void *)&t, sizeof(struct termios)); /* save original state */\n  t.c_lflag &= ~(ICANON | ECHO);\n  t.c_cc[VMIN] = 1;\n  t.c_cc[VTIME] = 0;\n  tcsetattr (f, TCSADRAIN, &t);\n  fflush (stdout);\n  if (s)\n    fputs (s, stdout);\n  else\n    fputs (_(\"Press any key to continue...\"), stdout);\n  fflush (stdout);\n  ch = fgetc (stdin);\n  fflush (stdin);\n  tcsetattr (f, TCSADRAIN, &old);\n  close (f);\n  fputs (\"\\r\\n\", stdout);\n  mutt_clear_error ();\n  return (ch);\n}\n\nint mutt_do_pager (const char *banner,\n\t\t   const char *tempfile,\n\t\t   int do_color,\n\t\t   pager_t *info)\n{\n  int rc;\n  \n  if (!Pager || mutt_strcmp (Pager, \"builtin\") == 0)\n    rc = mutt_pager (banner, tempfile, do_color, info);\n  else\n  {\n    char cmd[STRING];\n    \n    mutt_endwin (NULL);\n    mutt_expand_file_fmt (cmd, sizeof(cmd), Pager, tempfile);\n    if (mutt_system (cmd) == -1)\n    {\n      mutt_error (_(\"Error running \\\"%s\\\"!\"), cmd);\n      rc = -1;\n    }\n    else\n      rc = 0;\n    mutt_unlink (tempfile);\n  }\n\n  return rc;\n}\n\nint _mutt_enter_fname (const char *prompt, char *buf, size_t blen,\n\t\tint *redraw, int buffy, int multiple,\n\t\tchar ***files, int *numfiles, int flags)\n{\n  event_t ch;\n\n  SETCOLOR (MT_COLOR_PROMPT);\n  mvaddstr (LINES-1, 0, (char *) prompt);\n  addstr (_(\" ('?' for list): \"));\n  NORMAL_COLOR;\n  if (buf[0])\n    addstr (buf);\n  clrtoeol ();\n  mutt_refresh ();\n\n  ch = mutt_getch();\n  if (ch.ch < 0)\n  {\n    CLEARLINE (LINES-1);\n    return (-1);\n  }\n  else if (ch.ch == '?')\n  {\n    mutt_refresh ();\n    buf[0] = 0;\n    if (!flags)\n      flags = M_SEL_FOLDER | (multiple ? M_SEL_MULTI : 0);\n\n    _mutt_select_file (buf, blen, flags, files, numfiles);\n    *redraw = REDRAW_FULL;\n  }\n  else\n  {\n    char *pc = safe_malloc (mutt_strlen (prompt) + 3);\n\n    sprintf (pc, \"%s: \", prompt);\t/* __SPRINTF_CHECKED__ */\n    mutt_unget_event (ch.op ? 0 : ch.ch, ch.op ? ch.op : 0);\n    if (_mutt_get_field (pc, buf, blen, (buffy ? M_EFILE : M_FILE) | M_CLEAR, multiple, files, numfiles)\n\t!= 0)\n      buf[0] = 0;\n    MAYBE_REDRAW (*redraw);\n    FREE (&pc);\n#ifdef USE_NOTMUCH\n    if ((flags & M_SEL_VFOLDER) && buf[0] && strncmp(buf, \"notmuch://\", 10) != 0)\n      nm_description_to_path(buf, buf, blen);\n#endif\n  }\n\n  return 0;\n}\n\nvoid mutt_unget_event (int ch, int op)\n{\n  event_t tmp;\n\n  tmp.ch = ch;\n  tmp.op = op;\n\n  if (UngetCount >= UngetLen)\n    safe_realloc (&UngetKeyEvents, (UngetLen += 16) * sizeof(event_t));\n\n  UngetKeyEvents[UngetCount++] = tmp;\n}\n\nvoid mutt_unget_string (char *s)\n{\n  char *p = s + mutt_strlen (s) - 1;\n\n  while (p >= s)\n  {\n    mutt_unget_event ((unsigned char)*p--, 0);\n  }\n}\n\n/*\n * Adds the ch/op to the macro buffer.\n * This should be used for macros, push, and exec commands only.\n */\nvoid mutt_push_macro_event (int ch, int op)\n{\n  event_t tmp;\n\n  tmp.ch = ch;\n  tmp.op = op;\n\n  if (MacroBufferCount >= MacroBufferLen)\n    safe_realloc (&MacroEvents, (MacroBufferLen += 128) * sizeof(event_t));\n\n  MacroEvents[MacroBufferCount++] = tmp;\n}\n\nvoid mutt_flush_macro_to_endcond (void)\n{\n  UngetCount = 0;\n  while (MacroBufferCount > 0)\n  {\n    if (MacroEvents[--MacroBufferCount].op == OP_END_COND)\n      return;\n  }\n}\n\nvoid mutt_flushinp (void)\n{\n  UngetCount = 0;\n  MacroBufferCount = 0;\n  flushinp ();\n}\n\n#if (defined(USE_SLANG_CURSES) || defined(HAVE_CURS_SET))\n/* The argument can take 3 values:\n * -1: restore the value of the last call\n *  0: make the cursor invisible\n *  1: make the cursor visible\n */\nvoid mutt_curs_set (int cursor)\n{\n  static int SavedCursor = 1;\n  \n  if (cursor < 0)\n    cursor = SavedCursor;\n  else\n    SavedCursor = cursor;\n  \n  if (curs_set (cursor) == ERR) {\n    if (cursor == 1)\t/* cnorm */\n      curs_set (2);\t/* cvvis */\n  }\n}\n#endif\n\nint mutt_multi_choice (char *prompt, char *letters)\n{\n  event_t ch;\n  int choice;\n  char *p;\n\n  SETCOLOR (MT_COLOR_PROMPT);\n  mvaddstr (LINES - 1, 0, prompt);\n  NORMAL_COLOR;\n  clrtoeol ();\n  FOREVER\n  {\n    mutt_refresh ();\n    ch  = mutt_getch ();\n    /* (ch.ch == 0) is technically possible.  Treat the same as < 0 (abort) */\n    if (ch.ch <= 0 || CI_is_return (ch.ch))\n    {\n      choice = -1;\n      break;\n    }\n    else\n    {\n      p = strchr (letters, ch.ch);\n      if (p)\n      {\n\tchoice = p - letters + 1;\n\tbreak;\n      }\n      else if (ch.ch <= '9' && ch.ch > '0')\n      {\n\tchoice = ch.ch - '0';\n\tif (choice <= mutt_strlen (letters))\n\t  break;\n      }\n    }\n    BEEP ();\n  }\n  CLEARLINE (LINES - 1);\n  mutt_refresh ();\n  return choice;\n}\n\n/*\n * addwch would be provided by an up-to-date curses library\n */\n\nint mutt_addwch (wchar_t wc)\n{\n  char buf[MB_LEN_MAX*2];\n  mbstate_t mbstate;\n  size_t n1, n2;\n\n  memset (&mbstate, 0, sizeof (mbstate));\n  if ((n1 = wcrtomb (buf, wc, &mbstate)) == (size_t)(-1) ||\n      (n2 = wcrtomb (buf + n1, 0, &mbstate)) == (size_t)(-1))\n    return -1; /* ERR */\n  else\n    return addstr (buf);\n}\n\n\n/*\n * This formats a string, a bit like\n * snprintf (dest, destlen, \"%-*.*s\", min_width, max_width, s),\n * except that the widths refer to the number of character cells\n * when printed.\n */\n\nvoid mutt_format_string (char *dest, size_t destlen,\n\t\t\t int min_width, int max_width,\n\t\t\t int justify, char m_pad_char,\n\t\t\t const char *s, size_t n,\n\t\t\t int arboreal)\n{\n  char *p;\n  wchar_t wc;\n  int w;\n  size_t k, k2;\n  char scratch[MB_LEN_MAX];\n  mbstate_t mbstate1, mbstate2;\n  int escaped = 0;\n\n  memset(&mbstate1, 0, sizeof (mbstate1));\n  memset(&mbstate2, 0, sizeof (mbstate2));\n  --destlen;\n  p = dest;\n  for (; n && (k = mbrtowc (&wc, s, n, &mbstate1)); s += k, n -= k)\n  {\n    if (k == (size_t)(-1) || k == (size_t)(-2))\n    {\n      if (k == (size_t)(-1) && errno == EILSEQ)\n\tmemset (&mbstate1, 0, sizeof (mbstate1));\n\n      k = (k == (size_t)(-1)) ? 1 : n;\n      wc = replacement_char ();\n    }\n    if (escaped) {\n      escaped = 0;\n      w = 0;\n    } else if (arboreal && wc == M_SPECIAL_INDEX) {\n      escaped = 1;\n      w = 0;\n    } else if (arboreal && wc < M_TREE_MAX) {\n      w = 1; /* hack */\n    }\n    else\n    {\n#ifdef HAVE_ISWBLANK\n      if (iswblank (wc))\n\twc = ' ';\n      else\n#endif\n      if (!IsWPrint (wc))\n\twc = '?';\n      w = wcwidth (wc);\n    }\n    if (w >= 0)\n    {\n      if (w > max_width || (k2 = wcrtomb (scratch, wc, &mbstate2)) > destlen)\n\tbreak;\n      min_width -= w;\n      max_width -= w;\n      strncpy (p, scratch, k2);\n      p += k2;\n      destlen -= k2;\n    }\n  }\n  w = (int)destlen < min_width ? destlen : min_width;\n  if (w <= 0)\n    *p = '\\0';\n  else if (justify == FMT_RIGHT)\t/* right justify */\n  {\n    p[w] = '\\0';\n    while (--p >= dest)\n      p[w] = *p;\n    while (--w >= 0)\n      dest[w] = m_pad_char;\n  }\n  else if (justify == FMT_CENTER)\t/* center */\n  {\n    char *savedp = p;\n    int half = (w+1) / 2; /* half of cushion space */\n\n    p[w] = '\\0';\n\n    /* move str to center of buffer */\n    while (--p >= dest)\n      p[half] = *p;\n\n    /* fill rhs */\n    p = savedp + half;\n    while (--w >= half)\n      *p++ = m_pad_char;\n\n    /* fill lhs */\n    while (half--)\n      dest[half] = m_pad_char;\n  }\n  else\t\t\t\t\t/* left justify */\n  {\n    while (--w >= 0)\n      *p++ = m_pad_char;\n    *p = '\\0';\n  }\n}\n\n/*\n * This formats a string rather like\n *   snprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n *   snprintf (dest, destlen, fmt, s);\n * except that the numbers in the conversion specification refer to\n * the number of character cells when printed.\n */\n\nstatic void mutt_format_s_x (char *dest,\n\t\t\t     size_t destlen,\n\t\t\t     const char *prefix,\n\t\t\t     const char *s,\n\t\t\t     int arboreal)\n{\n  int justify = FMT_RIGHT;\n  char *p;\n  int min_width;\n  int max_width = INT_MAX;\n\n  if (*prefix == '-')\n    ++prefix, justify = FMT_LEFT;\n  else if (*prefix == '=')\n    ++prefix, justify = FMT_CENTER;\n  min_width = strtol (prefix, &p, 10);\n  if (*p == '.')\n  {\n    prefix = p + 1;\n    max_width = strtol (prefix, &p, 10);\n    if (p <= prefix)\n      max_width = INT_MAX;\n  }\n\n  mutt_format_string (dest, destlen, min_width, max_width,\n\t\t      justify, ' ', s, mutt_strlen (s), arboreal);\n}\n\nvoid mutt_format_s (char *dest,\n\t\t    size_t destlen,\n\t\t    const char *prefix,\n\t\t    const char *s)\n{\n  mutt_format_s_x (dest, destlen, prefix, s, 0);\n}\n\nvoid mutt_format_s_tree (char *dest,\n\t\t\t size_t destlen,\n\t\t\t const char *prefix,\n\t\t\t const char *s)\n{\n  mutt_format_s_x (dest, destlen, prefix, s, 1);\n}\n\n/*\n * mutt_paddstr (n, s) is almost equivalent to\n * mutt_format_string (bigbuf, big, n, n, FMT_LEFT, ' ', s, big, 0), addstr (bigbuf)\n */\n\nvoid mutt_paddstr (int n, const char *s)\n{\n  wchar_t wc;\n  int w;\n  size_t k;\n  size_t len = mutt_strlen (s);\n  mbstate_t mbstate;\n\n  memset (&mbstate, 0, sizeof (mbstate));\n  for (; len && (k = mbrtowc (&wc, s, len, &mbstate)); s += k, len -= k)\n  {\n    if (k == (size_t)(-1) || k == (size_t)(-2))\n    {\n      if (k == (size_t) (-1))\n\tmemset (&mbstate, 0, sizeof (mbstate));\n      k = (k == (size_t)(-1)) ? 1 : len;\n      wc = replacement_char ();\n    }\n    if (!IsWPrint (wc))\n      wc = '?';\n    w = wcwidth (wc);\n    if (w >= 0)\n    {\n      if (w > n)\n\tbreak;\n      addnstr ((char *)s, k);\n      n -= w;\n    }\n  }\n  while (n-- > 0)\n    addch (' ');\n}\n\n/* See how many bytes to copy from string so its at most maxlen bytes\n * long and maxwid columns wide */\nsize_t mutt_wstr_trunc (const char *src, size_t maxlen, size_t maxwid, size_t *width)\n{\n  wchar_t wc;\n  size_t n, w = 0, l = 0, cl;\n  int cw;\n  mbstate_t mbstate;\n\n  if (!src)\n    goto out;\n\n  n = mutt_strlen (src);\n\n  memset (&mbstate, 0, sizeof (mbstate));\n  for (w = 0; n && (cl = mbrtowc (&wc, src, n, &mbstate)); src += cl, n -= cl)\n  {\n    if (cl == (size_t)(-1) || cl == (size_t)(-2))\n    {\n      if (cl == (size_t)(-1))\n        memset (&mbstate, 0, sizeof (mbstate));\n      cl = (cl == (size_t)(-1)) ? 1 : n;\n      wc = replacement_char ();\n    }\n    cw = wcwidth (wc);\n    /* hack because M_TREE symbols aren't turned into characters\n     * until rendered by print_enriched_string (#3364) */\n    if (cw < 0 && cl == 1 && src[0] && src[0] < M_TREE_MAX)\n      cw = 1;\n    else if (cw < 0)\n      cw = 0;\t\t\t/* unprintable wchar */\n    if (cl + l > maxlen || cw + w > maxwid)\n      break;\n    l += cl;\n    w += cw;\n  }\nout:\n  if (width)\n    *width = w;\n  return l;\n}\n\n/*\n * returns the number of bytes the first (multibyte) character\n * of input consumes:\n * \t< 0 ... conversion error\n * \t= 0 ... end of input\n * \t> 0 ... length (bytes)\n */\nint mutt_charlen (const char *s, int *width)\n{\n  wchar_t wc;\n  mbstate_t mbstate;\n  size_t k, n;\n\n  if (!s || !*s)\n    return 0;\n\n  n = mutt_strlen (s);\n  memset (&mbstate, 0, sizeof (mbstate));\n  k = mbrtowc (&wc, s, n, &mbstate);\n  if (width)\n    *width = wcwidth (wc);\n  return (k == (size_t)(-1) || k == (size_t)(-2)) ? -1 : k;\n}\n\n/*\n * mutt_strwidth is like mutt_strlen except that it returns the width\n * referring to the number of character cells.\n */\n\nint mutt_strwidth (const char *s)\n{\n  wchar_t wc;\n  int w;\n  size_t k, n;\n  mbstate_t mbstate;\n\n  if (!s) return 0;\n\n  n = mutt_strlen (s);\n\n  memset (&mbstate, 0, sizeof (mbstate));\n  for (w=0; n && (k = mbrtowc (&wc, s, n, &mbstate)); s += k, n -= k)\n  {\n    if (*s == M_SPECIAL_INDEX) {\n      s += 2; /* skip the index coloring sequence */\n      k = 0;\n      continue;\n    }\n\n    if (k == (size_t)(-1) || k == (size_t)(-2))\n    {\n      k = (k == (size_t)(-1)) ? 1 : n;\n      wc = replacement_char ();\n    }\n    if (!IsWPrint (wc))\n      wc = '?';\n    w += wcwidth (wc);\n  }\n  return w;\n}\n"
  },
  {
    "path": "curs_main.c",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2010,2012-2013 Michael R. Elkins <me@mutt.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"mailbox.h\"\n#include \"mapping.h\"\n#include \"sort.h\"\n#include \"buffy.h\"\n#include \"mx.h\"\n\n#ifdef USE_SIDEBAR\n#include \"sidebar.h\"\n#endif\n\n#ifdef USE_POP\n#include \"pop.h\"\n#endif\n\n#ifdef USE_IMAP\n#include \"imap_private.h\"\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#include \"mutt_crypt.h\"\n\n\n#include <ctype.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/wait.h>\n#include <string.h>\n#include <sys/stat.h>\n#include <errno.h>\n\n#include <assert.h>\n\nstatic const char *No_mailbox_is_open = N_(\"No mailbox is open.\");\nstatic const char *There_are_no_messages = N_(\"There are no messages.\");\nstatic const char *Mailbox_is_read_only = N_(\"Mailbox is read-only.\");\nstatic const char *Function_not_permitted_in_attach_message_mode = N_(\"Function not permitted in attach-message mode.\");\nstatic const char *No_visible = N_(\"No visible messages.\");\n\n#define CHECK_IN_MAILBOX if (!Context) \\\n\t{ \\\n\t\tmutt_flushinp (); \\\n\t\tmutt_error _(No_mailbox_is_open); \\\n\t\tbreak; \\\n\t}\n\n#define CHECK_MSGCOUNT if (!Context) \\\n\t{ \\\n\t  \tmutt_flushinp (); \\\n\t\tmutt_error _(No_mailbox_is_open); \\\n\t\tbreak; \\\n\t} \\\n\telse if (!Context->msgcount) \\\n\t{ \\\n\t  \tmutt_flushinp (); \\\n\t\tmutt_error _(There_are_no_messages); \\\n\t\tbreak; \\\n\t}\n\n#define CHECK_VISIBLE if (Context && menu->current >= Context->vcount) \\\n  \t{\\\n\t  \tmutt_flushinp (); \\\n\t  \tmutt_error _(No_visible); \\\n\t  \tbreak; \\\n\t}\n\n\n#define CHECK_READONLY if (Context->readonly) \\\n\t\t\t{ \\\n\t\t\t  \tmutt_flushinp (); \\\n\t\t\t\tmutt_error _(Mailbox_is_read_only); \\\n\t\t\t\tbreak; \\\n\t\t\t}\n\n#define CHECK_ACL(aclbit,action) \\\n\t\tif (!mutt_bit_isset(Context->rights,aclbit)) { \\\n\t\t\tmutt_flushinp(); \\\n        /* L10N: %s is one of the CHECK_ACL entries below. */ \\\n\t\t\tmutt_error (_(\"%s: Operation not permitted by ACL\"), action); \\\n\t\t\tbreak; \\\n\t\t}\n\n#define CHECK_ATTACH if(option(OPTATTACHMSG)) \\\n\t\t     {\\\n\t\t\tmutt_flushinp (); \\\n\t\t\tmutt_error _(Function_not_permitted_in_attach_message_mode); \\\n\t\t\tbreak; \\\n\t\t     }\n\n#define CURHDR Context->hdrs[Context->v2r[menu->current]]\n#define OLDHDR Context->hdrs[Context->v2r[menu->oldcurrent]]\n#define UNREAD(h) mutt_thread_contains_unread (Context, h)\n\n/* de facto standard escapes for tsl/fsl */\nstatic char *tsl = \"\\033]0;\";\nstatic char *fsl = \"\\007\";\n\n/* terminal status capability check. terminfo must have been initialized. */\nshort mutt_ts_capability(void)\n{\n  char *term = getenv(\"TERM\");\n  char *tcaps;\n#ifdef HAVE_USE_EXTENDED_NAMES\n  int tcapi;\n#endif\n  char **termp;\n  char *known[] = {\n    \"color-xterm\",\n    \"cygwin\",\n    \"eterm\",\n    \"kterm\",\n    \"nxterm\",\n    \"putty\",\n    \"rxvt\",\n    \"screen\",\n    \"xterm\",\n    NULL\n  };\n\n  /* If tsl is set, then terminfo says that status lines work. */\n  tcaps = tigetstr(\"tsl\");\n  if (tcaps && tcaps != (char *)-1 && *tcaps)\n  {\n    /* update the static defns of tsl/fsl from terminfo */\n    tsl = safe_strdup(tcaps);\n\n    tcaps = tigetstr(\"fsl\");\n    if (tcaps && tcaps != (char *)-1 && *tcaps)\n      fsl = safe_strdup(tcaps);\n\n    return 1;\n  }\n\n  /* If XT (boolean) is set, then this terminal supports the standard escape. */\n  /* Beware: tigetflag returns -1 if XT is invalid or not a boolean. */\n#ifdef HAVE_USE_EXTENDED_NAMES\n  use_extended_names (TRUE);\n  tcapi = tigetflag(\"XT\");\n  if (tcapi == 1)\n    return 1;\n#endif /* HAVE_USE_EXTENDED_NAMES */\n\n  /* Check term types that are known to support the standard escape without\n   * necessarily asserting it in terminfo. */\n  for (termp = known; termp; termp++)\n  {\n    if (term && *termp && mutt_strncasecmp (term, *termp, strlen(*termp)))\n      return 1;\n  }\n\n  /* not supported */\n  return 0;\n}\n\nvoid mutt_ts_status(char *str)\n{\n  /* If empty, do not set.  To clear, use a single space. */\n  if (str == NULL || *str == '\\0')\n    return;\n  fprintf(stderr, \"%s%s%s\", tsl, str, fsl);\n}\n\nvoid mutt_ts_icon(char *str)\n{\n  /* If empty, do not set.  To clear, use a single space. */\n  if (str == NULL || *str == '\\0')\n    return;\n\n  /* icon setting is not supported in terminfo, so hardcode the escape - yuck */\n  fprintf(stderr, \"\\033]1;%s\\007\", str);\n}\n\nvoid index_make_entry (char *s, size_t l, MUTTMENU *menu, int num)\n{\n  format_flag flag = M_FORMAT_MAKEPRINT | M_FORMAT_ARROWCURSOR | M_FORMAT_INDEX;\n  int edgemsgno, reverse = Sort & SORT_REVERSE;\n  HEADER *h = Context->hdrs[Context->v2r[num]];\n  THREAD *tmp;\n\n  if ((Sort & SORT_MASK) == SORT_THREADS && h->tree)\n  {\n    flag |= M_FORMAT_TREE; /* display the thread tree */\n    if (h->display_subject)\n      flag |= M_FORMAT_FORCESUBJ;\n    else\n    {\n      if (reverse)\n      {\n\tif (menu->top + menu->pagelen > menu->max)\n\t  edgemsgno = Context->v2r[menu->max - 1];\n\telse\n\t  edgemsgno = Context->v2r[menu->top + menu->pagelen - 1];\n      }\n      else\n\tedgemsgno = Context->v2r[menu->top];\n\n      for (tmp = h->thread->parent; tmp; tmp = tmp->parent)\n      {\n\tif (!tmp->message)\n\t  continue;\n\n\t/* if no ancestor is visible on current screen, provisionally force\n\t * subject... */\n\tif (reverse ? tmp->message->msgno > edgemsgno : tmp->message->msgno < edgemsgno)\n\t{\n\t  flag |= M_FORMAT_FORCESUBJ;\n\t  break;\n\t}\n\telse if (tmp->message->virtual >= 0)\n\t  break;\n      }\n      if (flag & M_FORMAT_FORCESUBJ)\n      {\n\tfor (tmp = h->thread->prev; tmp; tmp = tmp->prev)\n\t{\n\t  if (!tmp->message)\n\t    continue;\n\n\t  /* ...but if a previous sibling is available, don't force it */\n\t  if (reverse ? tmp->message->msgno > edgemsgno : tmp->message->msgno < edgemsgno)\n\t    break;\n\t  else if (tmp->message->virtual >= 0)\n\t  {\n\t    flag &= ~M_FORMAT_FORCESUBJ;\n\t    break;\n\t  }\n\t}\n      }\n    }\n  }\n\n  _mutt_make_string (s, l, NONULL (HdrFmt), Context, h, flag);\n}\n\nint index_color (int index_no)\n{\n  HEADER *h = Context->hdrs[Context->v2r[index_no]];\n\n  if (h && h->pair)\n    return h->pair;\n\n  mutt_set_header_color (Context, h);\n  return h->pair;\n}\n\nstatic int ci_next_undeleted (int msgno)\n{\n  int i;\n\n  for (i=msgno+1; i < Context->vcount; i++)\n    if (! Context->hdrs[Context->v2r[i]]->deleted)\n      return (i);\n  return (-1);\n}\n\nstatic int ci_previous_undeleted (int msgno)\n{\n  int i;\n\n  for (i=msgno-1; i>=0; i--)\n    if (! Context->hdrs[Context->v2r[i]]->deleted)\n      return (i);\n  return (-1);\n}\n\n/* Return the index of the first new message, or failing that, the first\n * unread message.\n */\nstatic int ci_first_message (void)\n{\n  int old = -1, i;\n\n  if (Context && Context->msgcount)\n  {\n    for (i=0; i < Context->vcount; i++)\n    {\n      if (! Context->hdrs[Context->v2r[i]]->read &&\n\t  ! Context->hdrs[Context->v2r[i]]->deleted)\n      {\n\tif (! Context->hdrs[Context->v2r[i]]->old)\n\t  return (i);\n\telse if (old == -1)\n\t  old = i;\n      }\n    }\n    if (old != -1)\n      return (old);\n\n    /* If Sort is reverse and not threaded, the latest message is first.\n     * If Sort is threaded, the latest message is first iff exactly one\n     * of Sort and SortAux are reverse.\n     */\n    if (((Sort & SORT_REVERSE) && (Sort & SORT_MASK) != SORT_THREADS) ||\n\t((Sort & SORT_MASK) == SORT_THREADS &&\n\t ((Sort ^ SortAux) & SORT_REVERSE)))\n      return 0;\n    else\n      return (Context->vcount ? Context->vcount - 1 : 0);\n  }\n  return 0;\n}\n\n/* This should be in mx.c, but it only gets used here. */\nstatic int mx_toggle_write (CONTEXT *ctx)\n{\n  if (!ctx)\n    return -1;\n\n  if (ctx->readonly)\n  {\n    mutt_error _(\"Cannot toggle write on a readonly mailbox!\");\n    return -1;\n  }\n\n  if (ctx->dontwrite)\n  {\n    ctx->dontwrite = 0;\n    mutt_message _(\"Changes to folder will be written on folder exit.\");\n  }\n  else\n  {\n    ctx->dontwrite = 1;\n    mutt_message _(\"Changes to folder will not be written.\");\n  }\n\n  return 0;\n}\n\nstatic void update_index (MUTTMENU *menu, CONTEXT *ctx, int check,\n\t\t\t  int oldcount, int index_hint)\n{\n  /* store pointers to the newly added messages */\n  HEADER  **save_new = NULL;\n  int j;\n\n  /* take note of the current message */\n  if (oldcount)\n  {\n    if (menu->current < ctx->vcount)\n      menu->oldcurrent = index_hint;\n    else\n      oldcount = 0; /* invalid message number! */\n  }\n\n  /* We are in a limited view. Check if the new message(s) satisfy\n   * the limit criteria. If they do, set their virtual msgno so that\n   * they will be visible in the limited view */\n  if (ctx->pattern)\n  {\n#define THIS_BODY ctx->hdrs[j]->content\n    for (j = (check == M_REOPENED) ? 0 : oldcount; j < ctx->msgcount; j++)\n    {\n      if (!j)\n\tctx->vcount = 0;\n\n      if (mutt_pattern_exec (ctx->limit_pattern,\n\t\t\t     M_MATCH_FULL_ADDRESS,\n\t\t\t     ctx, ctx->hdrs[j]))\n      {\n\tassert (ctx->vcount < ctx->msgcount);\n\tctx->hdrs[j]->virtual = ctx->vcount;\n\tctx->v2r[ctx->vcount] = j;\n\tctx->hdrs[j]->limited = 1;\n\tctx->vcount++;\n\tctx->vsize += THIS_BODY->length + THIS_BODY->offset - THIS_BODY->hdr_offset;\n      }\n    }\n#undef THIS_BODY\n  }\n\n  /* save the list of new messages */\n  if (oldcount && check != M_REOPENED\n      && ((Sort & SORT_MASK) == SORT_THREADS))\n  {\n    save_new = (HEADER **) safe_malloc (sizeof (HEADER *) * (ctx->msgcount - oldcount));\n    for (j = oldcount; j < ctx->msgcount; j++)\n      save_new[j-oldcount] = ctx->hdrs[j];\n  }\n\n  /* if the mailbox was reopened, need to rethread from scratch */\n  mutt_sort_headers (ctx, (check == M_REOPENED));\n\n  /* uncollapse threads with new mail */\n  if ((Sort & SORT_MASK) == SORT_THREADS)\n  {\n    if (check == M_REOPENED)\n    {\n      THREAD *h, *j;\n\n      ctx->collapsed = 0;\n\n      for (h = ctx->tree; h; h = h->next)\n      {\n\tfor (j = h; !j->message; j = j->child)\n\t  ;\n\tmutt_uncollapse_thread (ctx, j->message);\n      }\n      mutt_set_virtual (ctx);\n    }\n    else if (oldcount)\n    {\n      for (j = 0; j < ctx->msgcount - oldcount; j++)\n      {\n\tint k;\n\n\tfor (k = 0; k < ctx->msgcount; k++)\n\t{\n\t  HEADER *h = ctx->hdrs[k];\n\t  if (h == save_new[j] && (!ctx->pattern || h->limited))\n\t    mutt_uncollapse_thread (ctx, h);\n\t}\n      }\n      FREE (&save_new);\n      mutt_set_virtual (ctx);\n    }\n  }\n\n  menu->current = -1;\n  if (oldcount)\n  {\n    /* restore the current message to the message it was pointing to */\n    for (j = 0; j < ctx->vcount; j++)\n    {\n      if (ctx->hdrs[ctx->v2r[j]]->index == menu->oldcurrent)\n      {\n\tmenu->current = j;\n\tbreak;\n      }\n    }\n  }\n\n  if (menu->current < 0)\n    menu->current = ci_first_message ();\n\n}\n\nstatic void resort_index (MUTTMENU *menu)\n{\n  int i;\n  HEADER *current = CURHDR;\n\n  menu->current = -1;\n  mutt_sort_headers (Context, 0);\n  /* Restore the current message */\n\n  for (i = 0; i < Context->vcount; i++)\n  {\n    if (Context->hdrs[Context->v2r[i]] == current)\n    {\n      menu->current = i;\n      break;\n    }\n  }\n\n  if ((Sort & SORT_MASK) == SORT_THREADS && menu->current < 0)\n    menu->current = mutt_parent_message (Context, current);\n\n  if (menu->current < 0)\n    menu->current = ci_first_message ();\n\n  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n}\n\n/**\n * mutt_draw_statusline - XXX\n */\nvoid\nmutt_draw_statusline (int cols, char *inbuf)\n{\n\tint i          = 0;\n\tint cnt        = 0;\n\tint last_color = 0;\n\tint color      = 0;\n\tint offset     = 0;\n\tint found      = 0;\n\tint null_rx    = 0;\n\tchar buf[2048];\n\n\tstruct line_t {\n\t\tshort chunks;\n\t\tstruct syntax_t {\n\t\t\tint color;\n\t\t\tint first;\n\t\t\tint last;\n\t\t} *syntax;\n\t} lineInfo = { 0, NULL };\n\n\tmutt_format_string (buf, sizeof (buf), cols, cols, 0, ' ', inbuf, mutt_strlen (inbuf), 0);\n\n\tlineInfo.syntax = safe_malloc (sizeof (struct syntax_t));\n\tlineInfo.syntax[0].first = -1;\n\tlineInfo.syntax[0].last  = -1;\n\tlineInfo.syntax[0].color = ColorDefs[MT_COLOR_STATUS];\n\tlineInfo.chunks = 1;\n\n\tdo {\n\t\tfound = 0;\n\t\tnull_rx = 0;\n\t\tCOLOR_LINE *color_line = ColorStatusList;\n\n\t\tif (!buf[offset])\n\t\t\tbreak;\n\n\t\twhile (color_line) {\n\t\t\tregmatch_t pmatch[color_line->match + 1];\n\n\t\t\tif (regexec (&color_line->rx, buf + offset, color_line->match + 1, pmatch, (offset ? REG_NOTBOL : 0)) == 0) {\n\t\t\t\tif (pmatch[color_line->match].rm_eo != pmatch[color_line->match].rm_so) {\n\t\t\t\t\tif (!found) {\n\t\t\t\t\t\tif (++(lineInfo.chunks) > 1) {\n\t\t\t\t\t\t\tsafe_realloc (&(lineInfo.syntax), (lineInfo.chunks) * sizeof (struct syntax_t));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ti = lineInfo.chunks - 1;\n\t\t\t\t\tpmatch[color_line->match].rm_so += offset;\n\t\t\t\t\tpmatch[color_line->match].rm_eo += offset;\n\t\t\t\t\tif (!found ||\n\t\t\t\t\t\t(pmatch[color_line->match].rm_so < (lineInfo.syntax)[i].first) ||\n\t\t\t\t\t\t((pmatch[color_line->match].rm_so == (lineInfo.syntax)[i].first) &&\n\t\t\t\t\t\t(pmatch[color_line->match].rm_eo > (lineInfo.syntax)[i].last))) {\n\t\t\t\t\t\t(lineInfo.syntax)[i].color = color_line->pair;\n\t\t\t\t\t\t(lineInfo.syntax)[i].first = pmatch[color_line->match].rm_so;\n\t\t\t\t\t\t(lineInfo.syntax)[i].last = pmatch[color_line->match].rm_eo;\n\t\t\t\t\t}\n\t\t\t\t\tfound = 1;\n\t\t\t\t\tnull_rx = 0;\n\t\t\t\t} else {\n\t\t\t\t\tnull_rx = 1; /* empty regexp; don't add it, but keep looking */\n\t\t\t\t}\n\t\t\t}\n\t\t\tcolor_line = color_line->next;\n\t\t}\n\n\t\tif (null_rx)\n\t\t\toffset++; /* avoid degenerate cases */\n\t\telse\n\t\t\toffset = (lineInfo.syntax)[i].last;\n\t} while (found || null_rx);\n\n\tfor (cnt = 0; cnt < mutt_strlen (buf); cnt++) {\n\t\tcolor = lineInfo.syntax[0].color;\n\t\tfor (i = 0; i < lineInfo.chunks; i++) {\n\t\t\t/* we assume the chunks are sorted */\n\t\t\tif (cnt > (lineInfo.syntax)[i].last)\n\t\t\t\tcontinue;\n\t\t\tif (cnt < (lineInfo.syntax)[i].first)\n\t\t\t\tbreak;\n\t\t\tif (cnt != (lineInfo.syntax)[i].last) {\n\t\t\t\tcolor = (lineInfo.syntax)[i].color;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/* don't break here, as cnt might be in the next chunk as well */\n\t\t}\n\t\tif (color != last_color) {\n\t\t\tattrset (color);\n\t\t\tlast_color = color;\n\t\t}\n\t\t/* XXX more than one char at a time? */\n\t\taddch ((unsigned char)buf[cnt]);\n#if 0\n\t\twaddnstr (stdscr, tgbuf, 10);\n\t\tSETCOLOR (MT_COLOR_NORMAL);\n\t\twaddnstr (stdscr, tgbuf + 10, -1);\n#endif\n\t}\n\n\tsafe_free (&lineInfo.syntax);\n}\n\nstatic int main_change_folder(MUTTMENU *menu, int op, char *buf, size_t bufsz,\n\t\t\t  int *oldcount, int *index_hint)\n{\n  mutt_expand_path (buf, bufsz);\n#ifdef USE_SIDEBAR\n  sb_set_open_buffy (buf);\n#endif\n  if (mx_get_magic (buf) <= 0)\n  {\n    mutt_error (_(\"%s is not a mailbox.\"), buf);\n    return -1;\n  }\n  mutt_str_replace (&CurrentFolder, buf);\n\n  /* keepalive failure in mutt_enter_fname may kill connection. #3028 */\n  if (Context && !Context->path)\n    FREE (&Context);\n\n  if (Context)\n  {\n    int check;\n\n    mutt_str_replace (&LastFolder, Context->path);\n    *oldcount = Context ? Context->msgcount : 0;\n\n    if ((check = mx_close_mailbox (Context, index_hint)) != 0)\n    {\n      if (check == M_NEW_MAIL || check == M_REOPENED)\n        update_index (menu, Context, check, *oldcount, *index_hint);\n\n      set_option (OPTSEARCHINVALID);\n      menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n      return 0;\n    }\n    FREE (&Context);\n  }\n\n  mutt_sleep (0);\n\n  /* Set CurrentMenu to MENU_MAIN before executing any folder\n   * hooks so that all the index menu functions are available to\n   * the exec command.\n   */\n\n  CurrentMenu = MENU_MAIN;\n  mutt_folder_hook (buf);\n\n  if ((Context = mx_open_mailbox (buf,\n\t\t(option (OPTREADONLY) || op == OP_MAIN_CHANGE_FOLDER_READONLY) ?\n\t\tM_READONLY : 0, NULL)) != NULL)\n  {\n    menu->current = ci_first_message ();\n  }\n  else\n    menu->current = 0;\n\n  mutt_clear_error ();\n  mutt_buffy_check(1); /* force the buffy check after we have changed the folder */\n  menu->redraw = REDRAW_FULL;\n  set_option (OPTSEARCHINVALID);\n\n  return 0;\n}\n\nstatic const struct mapping_t IndexHelp[] = {\n  { N_(\"Quit\"),  OP_QUIT },\n  { N_(\"Del\"),   OP_DELETE },\n  { N_(\"Undel\"), OP_UNDELETE },\n  { N_(\"Save\"),  OP_SAVE },\n  { N_(\"Mail\"),  OP_MAIL },\n  { N_(\"Reply\"), OP_REPLY },\n  { N_(\"Group\"), OP_GROUP_REPLY },\n  { N_(\"Help\"),  OP_HELP },\n  { NULL,\t 0 }\n};\n\n/* This function handles the message index window as well as commands returned\n * from the pager (MENU_PAGER).\n */\nint mutt_index_menu (void)\n{\n  char buf[LONG_STRING], helpstr[LONG_STRING];\n  int op = OP_NULL;\n  int done = 0;                /* controls when to exit the \"event\" loop */\n  int i = 0, j;\n  int tag = 0;                 /* has the tag-prefix command been pressed? */\n  int newcount = -1;\n  int oldcount = -1;\n  int rc = -1;\n  MUTTMENU *menu;\n  char *cp;                    /* temporary variable. */\n  int index_hint;   /* used to restore cursor position */\n  int do_buffy_notify = 1;\n  int close = 0; /* did we OP_QUIT or OP_EXIT out of this menu? */\n  int attach_msg = option(OPTATTACHMSG);\n\n  menu = mutt_new_menu (MENU_MAIN);\n  menu->offset = 1;\n  menu->pagelen = LINES - 3;\n  menu->make_entry = index_make_entry;\n  menu->color = index_color;\n  menu->current = ci_first_message ();\n  menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_MAIN, IndexHelp);\n\n  if (!attach_msg)\n    mutt_buffy_check(1); /* force the buffy check after we enter the folder */\n\n  FOREVER\n  {\n    tag = 0; /* clear the tag-prefix */\n\n    /* check if we need to resort the index because just about\n     * any 'op' below could do mutt_enter_command(), either here or\n     * from any new menu launched, and change $sort/$sort_aux\n     */\n    if (option (OPTNEEDRESORT) && Context && Context->msgcount && menu->current >= 0)\n      resort_index (menu);\n\n    menu->max = Context ? Context->vcount : 0;\n    oldcount = Context ? Context->msgcount : 0;\n\n    if (option (OPTREDRAWTREE) && Context && Context->msgcount && (Sort & SORT_MASK) == SORT_THREADS)\n    {\n      mutt_draw_tree (Context);\n      menu->redraw |= REDRAW_STATUS;\n      unset_option (OPTREDRAWTREE);\n    }\n\n    if (Context && !attach_msg)\n    {\n      int check;\n      /* check for new mail in the mailbox.  If nonzero, then something has\n       * changed about the file (either we got new mail or the file was\n       * modified underneath us.)\n       */\n\n      index_hint = (Context->vcount && menu->current >= 0 && menu->current < Context->vcount) ? CURHDR->index : 0;\n\n      if ((check = mx_check_mailbox (Context, &index_hint, 0)) < 0)\n      {\n\tif (!Context->path)\n\t{\n\t  /* fatal error occurred */\n\t  FREE (&Context);\n\t  menu->redraw = REDRAW_FULL;\n\t}\n\n\tset_option (OPTSEARCHINVALID);\n      }\n      else if (check == M_NEW_MAIL || check == M_REOPENED || check == M_FLAGS)\n      {\n\tupdate_index (menu, Context, check, oldcount, index_hint);\n\n\t/* notify the user of new mail */\n\tif (check == M_REOPENED)\n\t  mutt_error _(\"Mailbox was externally modified.  Flags may be wrong.\");\n\telse if (check == M_NEW_MAIL)\n\t{\n\t  mutt_message _(\"New mail in this mailbox.\");\n\t  if (option (OPTBEEPNEW))\n\t    beep ();\n\t} else if (check == M_FLAGS)\n\t  mutt_message _(\"Mailbox was externally modified.\");\n\n\t/* avoid the message being overwritten by buffy */\n\tdo_buffy_notify = 0;\n\n\tmenu->redraw = REDRAW_FULL;\n\tmenu->max = Context->vcount;\n\n\tset_option (OPTSEARCHINVALID);\n      }\n    }\n\n    if (!attach_msg)\n    {\n     /* check for new mail in the incoming folders */\n     oldcount = newcount;\n     if ((newcount = mutt_buffy_check (0)) != oldcount)\n       menu->redraw |= REDRAW_STATUS;\n     if (do_buffy_notify)\n     {\n       if (mutt_buffy_notify())\n       {\n         menu->redraw |= REDRAW_STATUS;\n         if (option (OPTBEEPNEW))\n           beep();\n       }\n     }\n     else\n       do_buffy_notify = 1;\n    }\n\n#ifdef USE_SIDEBAR\n    if (option (OPTSIDEBAR))\n        menu->redraw |= REDRAW_SIDEBAR;\n#endif\n\n    if (op != -1)\n      mutt_curs_set (0);\n\n    if (menu->redraw & REDRAW_FULL)\n    {\n      menu_redraw_full (menu);\n#ifdef USE_SIDEBAR\n      sb_draw();\n#endif\n      mutt_show_error ();\n    }\n#ifdef USE_SIDEBAR\n    else if (menu->redraw & REDRAW_SIDEBAR) {\n      sb_draw();\n      menu->redraw &= ~REDRAW_SIDEBAR;\n    }\n#endif\n\n    if (menu->menu == MENU_MAIN)\n    {\n      if (Context && Context->hdrs && !(menu->current >= Context->vcount))\n      {\n\tmenu_check_recenter (menu);\n\n\tif (menu->redraw & REDRAW_INDEX)\n\t{\n\t  menu_redraw_index (menu);\n\t  menu->redraw |= REDRAW_STATUS;\n\t}\n\telse if (menu->redraw & (REDRAW_MOTION_RESYNCH | REDRAW_MOTION))\n\t  menu_redraw_motion (menu);\n\telse if (menu->redraw & REDRAW_CURRENT)\n\t  menu_redraw_current (menu);\n      }\n\n      if (menu->redraw & REDRAW_STATUS)\n      {\n#ifdef USE_SIDEBAR\n        /* Temporarily lie about the sidebar width */\n\tshort sw = SidebarWidth;\n\tSidebarWidth = 0;\n#endif\n\tmenu_status_line (buf, sizeof (buf), menu, NONULL (Status));\n#ifdef USE_SIDEBAR\n        SidebarWidth = sw; /* Restore the sidebar width */\n#endif\n\tmove (option (OPTSTATUSONTOP) ? 0 : LINES-2, 0);\n\tSETCOLOR (MT_COLOR_STATUS);\n#ifdef USE_SIDEBAR\n\tsb_set_buffystats (Context);\n#endif\n\tmutt_draw_statusline (COLS, buf);\n\tNORMAL_COLOR;\n\tmenu->redraw &= ~REDRAW_STATUS;\n\tif (option(OPTTSENABLED) && TSSupported)\n\t{\n\t  menu_status_line (buf, sizeof (buf), menu, NONULL (TSStatusFormat));\n\t  mutt_ts_status(buf);\n\t  menu_status_line (buf, sizeof (buf), menu, NONULL (TSIconFormat));\n\t  mutt_ts_icon(buf);\n\t}\n      }\n\n      menu->redraw = 0;\n      if (menu->current < menu->max)\n\tmenu->oldcurrent = menu->current;\n      else\n\tmenu->oldcurrent = -1;\n\n      if (option (OPTARROWCURSOR))\n\tmove (menu->current - menu->top + menu->offset, SidebarWidth + 2);\n      else if (option (OPTBRAILLEFRIENDLY))\n\tmove (menu->current - menu->top + menu->offset, 0);\n      else\n\tmove (menu->current - menu->top + menu->offset, COLS - 1);\n      mutt_refresh ();\n\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\n      if (SigWinch)\n      {\n\tmutt_flushinp ();\n\tmutt_resize_screen ();\n\tmenu->redraw = REDRAW_FULL;\n\tmenu->menu = MENU_MAIN;\n\tSigWinch = 0;\n\tmenu->top = 0; /* so we scroll the right amount */\n\t/*\n\t * force a real complete redraw.  clrtobot() doesn't seem to be able\n\t * to handle every case without this.\n\t */\n\tclearok(stdscr,TRUE);\n\tcontinue;\n      }\n#endif\n\n      op = km_dokey (MENU_MAIN);\n\n      dprint(4, (debugfile, \"mutt_index_menu[%d]: Got op %d\\n\", __LINE__, op));\n\n      if (op == -1)\n\tcontinue; /* either user abort or timeout */\n\n      mutt_curs_set (1);\n\n      /* special handling for the tag-prefix function */\n      if (op == OP_TAG_PREFIX)\n      {\n\tif (!Context)\n\t{\n\t  mutt_error _(\"No mailbox is open.\");\n\t  continue;\n\t}\n\n\tif (!Context->tagged)\n\t{\n\t  mutt_error _(\"No tagged messages.\");\n\t  continue;\n\t}\n\ttag = 1;\n\n\t/* give visual indication that the next command is a tag- command */\n\tmvaddstr (LINES - 1, 0, \"tag-\");\n\tclrtoeol ();\n\n\t/* get the real command */\n\tif ((op = km_dokey (MENU_MAIN)) == OP_TAG_PREFIX)\n\t{\n\t  /* abort tag sequence */\n\t  CLEARLINE (LINES-1);\n\t  continue;\n\t}\n      }\n      else if (option (OPTAUTOTAG) && Context && Context->tagged)\n\ttag = 1;\n\n      if (op == OP_TAG_PREFIX_COND)\n      {\n\tif (!Context)\n\t{\n\t  mutt_error _(\"No mailbox is open.\");\n\t  continue;\n\t}\n\n\tif (!Context->tagged)\n\t{\n\t  mutt_flush_macro_to_endcond ();\n\t  mutt_message  _(\"Nothing to do.\");\n\t  continue;\n\t}\n\ttag = 1;\n\n\t/* give visual indication that the next command is a tag- command */\n\tmvaddstr (LINES - 1, 0, \"tag-\");\n\tclrtoeol ();\n\n\t/* get the real command */\n\tif ((op = km_dokey (MENU_MAIN)) == OP_TAG_PREFIX)\n\t{\n\t  /* abort tag sequence */\n\t  CLEARLINE (LINES-1);\n\t  continue;\n\t}\n      }\n\n      mutt_clear_error ();\n    }\n    else\n    {\n      if (menu->current < menu->max)\n\tmenu->oldcurrent = menu->current;\n      else\n\tmenu->oldcurrent = -1;\n\n      mutt_curs_set (1);\t/* fallback from the pager */\n    }\n\n#ifdef USE_NOTMUCH\n    if (Context)\n      nm_debug_check(Context);\n#endif\n\n    switch (op)\n    {\n\n      /* ----------------------------------------------------------------------\n       * movement commands\n       */\n\n      case OP_BOTTOM_PAGE:\n\tmenu_bottom_page (menu);\n\tbreak;\n      case OP_FIRST_ENTRY:\n\tmenu_first_entry (menu);\n\tbreak;\n      case OP_MIDDLE_PAGE:\n\tmenu_middle_page (menu);\n\tbreak;\n      case OP_HALF_UP:\n\tmenu_half_up (menu);\n\tbreak;\n      case OP_HALF_DOWN:\n\tmenu_half_down (menu);\n\tbreak;\n      case OP_NEXT_LINE:\n\tmenu_next_line (menu);\n\tbreak;\n      case OP_PREV_LINE:\n\tmenu_prev_line (menu);\n\tbreak;\n      case OP_NEXT_PAGE:\n\tmenu_next_page (menu);\n\tbreak;\n      case OP_PREV_PAGE:\n\tmenu_prev_page (menu);\n\tbreak;\n      case OP_LAST_ENTRY:\n\tmenu_last_entry (menu);\n\tbreak;\n      case OP_TOP_PAGE:\n\tmenu_top_page (menu);\n\tbreak;\n      case OP_CURRENT_TOP:\n\tmenu_current_top (menu);\n\tbreak;\n      case OP_CURRENT_MIDDLE:\n\tmenu_current_middle (menu);\n\tbreak;\n      case OP_CURRENT_BOTTOM:\n\tmenu_current_bottom (menu);\n\tbreak;\n\n      case OP_JUMP:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n        if (isdigit (LastKey)) mutt_unget_event (LastKey, 0);\n\tbuf[0] = 0;\n\tif (mutt_get_field (_(\"Jump to message: \"), buf, sizeof (buf), 0) != 0\n\t    || !buf[0])\n\t  break;\n\n\tif (mutt_atoi (buf, &i) < 0)\n\t{\n\t  mutt_error _(\"Argument must be a message number.\");\n\t  break;\n\t}\n\n\tif (i > 0 && i <= Context->msgcount)\n\t{\n\t  for (j = i-1; j < Context->msgcount; j++)\n\t  {\n\t    if (Context->hdrs[j]->virtual != -1)\n\t      break;\n\t  }\n\t  if (j >= Context->msgcount)\n\t  {\n\t    for (j = i-2; j >= 0; j--)\n\t    {\n\t      if (Context->hdrs[j]->virtual != -1)\n\t\tbreak;\n\t    }\n\t  }\n\n\t  if (j >= 0)\n\t  {\n\t    menu->current = Context->hdrs[j]->virtual;\n\t    if (menu->menu == MENU_PAGER)\n\t    {\n\t      op = OP_DISPLAY_MESSAGE;\n\t      continue;\n\t    }\n\t    else\n\t    menu->redraw = REDRAW_MOTION;\n\t  }\n\t  else\n\t    mutt_error _(\"That message is not visible.\");\n\t}\n\telse\n\t  mutt_error _(\"Invalid message number.\");\n\n\tbreak;\n\n\t/* --------------------------------------------------------------------\n\t * `index' specific commands\n\t */\n\n      case OP_MAIN_DELETE_PATTERN:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot delete message(s)\"));\n\n\tCHECK_ATTACH;\n\tmutt_pattern_func (M_DELETE, _(\"Delete messages matching: \"));\n\tmenu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\tbreak;\n\n#ifdef USE_POP\n      case OP_MAIN_FETCH_MAIL:\n\n\tCHECK_ATTACH;\n\tpop_fetch_mail ();\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n#endif /* USE_POP */\n\n      case OP_HELP:\n\n\tmutt_help (MENU_MAIN);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_MAIN_SHOW_LIMIT:\n\tCHECK_IN_MAILBOX;\n\tif (!Context->pattern)\n\t   mutt_message _(\"No limit pattern is in effect.\");\n\telse\n\t{\n\t   char buf[STRING];\n\t   /* L10N: ask for a limit to apply */\n\t   snprintf (buf, sizeof(buf), _(\"Limit: %s\"),Context->pattern);\n           mutt_message (\"%s\", buf);\n\t}\n        break;\n\n      case OP_MAIN_LIMIT:\n\n\tCHECK_IN_MAILBOX;\n\tmenu->oldcurrent = (Context->vcount && menu->current >= 0 && menu->current < Context->vcount) ?\n\t\tCURHDR->index : -1;\n\tif (mutt_pattern_func (M_LIMIT, _(\"Limit to messages matching: \")) == 0)\n\t{\n\t  if (menu->oldcurrent >= 0)\n\t  {\n\t    /* try to find what used to be the current message */\n\t    menu->current = -1;\n\t    for (i = 0; i < Context->vcount; i++)\n\t      if (Context->hdrs[Context->v2r[i]]->index == menu->oldcurrent)\n\t      {\n\t\tmenu->current = i;\n\t\tbreak;\n\t      }\n\t    if (menu->current < 0) menu->current = 0;\n\t  }\n\t  else\n\t    menu->current = 0;\n\t  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\t  if (Context->msgcount && (Sort & SORT_MASK) == SORT_THREADS)\n\t    mutt_draw_tree (Context);\n\t  menu->redraw = REDRAW_FULL;\n\t}\n        if (Context->pattern)\n\t  mutt_message _(\"To view all messages, limit to \\\"all\\\".\");\n\tbreak;\n\n      case OP_QUIT:\n\n\tclose = op;\n\tif (attach_msg)\n\t{\n\t done = 1;\n\t break;\n\t}\n\n\tif (query_quadoption (OPT_QUIT, _(\"Quit Mutt?\")) == M_YES)\n\t{\n\t  int check;\n\n\t  oldcount = Context ? Context->msgcount : 0;\n\n\t  if (!Context || (check = mx_close_mailbox (Context, &index_hint)) == 0)\n\t    done = 1;\n\t  else\n\t  {\n\t    if (check == M_NEW_MAIL || check == M_REOPENED)\n\t      update_index (menu, Context, check, oldcount, index_hint);\n\n\t    menu->redraw = REDRAW_FULL; /* new mail arrived? */\n\t    set_option (OPTSEARCHINVALID);\n\t  }\n\t}\n\tbreak;\n\n      case OP_REDRAW:\n\n\tclearok (stdscr, TRUE);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_SEARCH:\n      case OP_SEARCH_REVERSE:\n      case OP_SEARCH_NEXT:\n      case OP_SEARCH_OPPOSITE:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif ((menu->current = mutt_search_command (menu->current, op)) == -1)\n\t  menu->current = menu->oldcurrent;\n\telse\n\t  menu->redraw = REDRAW_MOTION;\n\tbreak;\n\n      case OP_SORT:\n      case OP_SORT_REVERSE:\n\n\tif (mutt_select_sort ((op == OP_SORT_REVERSE)) == 0)\n\t{\n\t  if (Context && Context->msgcount)\n\t  {\n\t    resort_index (menu);\n\t    set_option (OPTSEARCHINVALID);\n\t  }\n\t  if (menu->menu == MENU_PAGER)\n\t  {\n\t    op = OP_DISPLAY_MESSAGE;\n\t    continue;\n\t  }\n\t  menu->redraw |= REDRAW_STATUS;\n\t}\n\tbreak;\n\n      case OP_TAG:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif (tag && !option (OPTAUTOTAG))\n\t{\n\t  for (j = 0; j < Context->vcount; j++)\n\t    mutt_set_flag (Context, Context->hdrs[Context->v2r[j]], M_TAG, 0);\n\t  menu->redraw = REDRAW_STATUS | REDRAW_INDEX;\n\t}\n\telse\n\t{\n\t  mutt_set_flag (Context, CURHDR, M_TAG, !CURHDR->tagged);\n\n\t  Context->last_tag = CURHDR->tagged ? CURHDR :\n\t    ((Context->last_tag == CURHDR && !CURHDR->tagged)\n\t     ? NULL : Context->last_tag);\n\n\t  menu->redraw = REDRAW_STATUS;\n\t  if (option (OPTRESOLVE) && menu->current < Context->vcount - 1)\n\t  {\n\t    menu->current++;\n\t    menu->redraw |= REDRAW_MOTION_RESYNCH;\n\t  }\n\t  else\n\t    menu->redraw |= REDRAW_CURRENT;\n\t}\n\tbreak;\n\n      case OP_MAIN_TAG_PATTERN:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tmutt_pattern_func (M_TAG, _(\"Tag messages matching: \"));\n\tmenu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\tbreak;\n\n      case OP_MAIN_UNDELETE_PATTERN:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot undelete message(s)\"));\n\n\tif (mutt_pattern_func (M_UNDELETE, _(\"Undelete messages matching: \")) == 0)\n\t  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\tbreak;\n\n      case OP_MAIN_UNTAG_PATTERN:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif (mutt_pattern_func (M_UNTAG, _(\"Untag messages matching: \")) == 0)\n\t  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\tbreak;\n\n\t/* --------------------------------------------------------------------\n\t * The following operations can be performed inside of the pager.\n\t */\n\n#ifdef USE_IMAP\n      case OP_MAIN_IMAP_FETCH:\n\tif (Context && Context->magic == M_IMAP)\n\t  imap_check_mailbox (Context, &index_hint, 1);\n        break;\n\n      case OP_MAIN_IMAP_LOGOUT_ALL:\n\tif (Context && Context->magic == M_IMAP)\n\t{\n\t  if (mx_close_mailbox (Context, &index_hint) != 0)\n\t  {\n\t    set_option (OPTSEARCHINVALID);\n\t    menu->redraw = REDRAW_FULL;\n\t    break;\n\t  }\n\t  FREE (&Context);\n\t}\n\timap_logout_all();\n\tmutt_message _(\"Logged out of IMAP servers.\");\n\tset_option (OPTSEARCHINVALID);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n#endif\n\n      case OP_MAIN_SYNC_FOLDER:\n\n\tif (Context && !Context->msgcount)\n\t  break;\n\n\tCHECK_MSGCOUNT;\n#ifdef USE_SIDEBAR\n\tCHECK_VISIBLE;\n#endif\n\tCHECK_READONLY;\n\t{\n\t  int oldvcount = Context->vcount;\n\t  int oldcount  = Context->msgcount;\n\t  int check, newidx;\n\t  HEADER *newhdr = NULL;\n\n\t  /* don't attempt to move the cursor if there are no visible messages in the current limit */\n\t  if (menu->current < Context->vcount)\n\t  {\n\t    /* threads may be reordered, so figure out what header the cursor\n\t     * should be on. #3092 */\n\t    newidx = menu->current;\n\t    if (CURHDR->deleted)\n\t      newidx = ci_next_undeleted (menu->current);\n\t    if (newidx < 0)\n\t      newidx = ci_previous_undeleted (menu->current);\n\t    if (newidx >= 0)\n\t      newhdr = Context->hdrs[Context->v2r[newidx]];\n\t  }\n\n\t  if ((check = mx_sync_mailbox (Context, &index_hint)) == 0)\n\t  {\n\t    if (newhdr && Context->vcount != oldvcount)\n\t      for (j = 0; j < Context->vcount; j++)\n\t      {\n\t\tif (Context->hdrs[Context->v2r[j]] == newhdr)\n\t\t{\n\t\t  menu->current = j;\n\t\t  break;\n\t\t}\n\t      }\n\t    set_option (OPTSEARCHINVALID);\n\t  }\n\t  else if (check == M_NEW_MAIL || check == M_REOPENED)\n\t    update_index (menu, Context, check, oldcount, index_hint);\n\n\t  /*\n\t   * do a sanity check even if mx_sync_mailbox failed.\n\t   */\n\n\t  if (menu->current < 0 || menu->current >= Context->vcount)\n\t    menu->current = ci_first_message ();\n\t}\n\n\t/* check for a fatal error, or all messages deleted */\n\tif (!Context->path)\n\t  FREE (&Context);\n\n\t/* if we were in the pager, redisplay the message */\n\tif (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n        else\n\t  menu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_MAIN_QUASI_DELETE:\n\tif (tag) {\n\t  for (j = 0; j < Context->vcount; j++) {\n\t    if (Context->hdrs[Context->v2r[j]]->tagged) {\n\t      Context->hdrs[Context->v2r[j]]->quasi_deleted = TRUE;\n\t      Context->changed = TRUE;\n\t    }\n\t  }\n\t} else {\n\t  CURHDR->quasi_deleted = TRUE;\n\t  Context->changed = 1;\n\t}\n\tbreak;\n\n#ifdef USE_NOTMUCH\n      case OP_MAIN_ENTIRE_THREAD:\n      {\n\tint oldcount  = Context->msgcount;\n\tif (Context->magic != M_NOTMUCH) {\n\t  mutt_message _(\"No virtual folder, aborting.\");\n\t  break;\n\t}\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif (nm_read_entire_thread(Context, CURHDR) < 0) {\n\t   mutt_message _(\"Failed to read thread, aborting.\");\n\t   break;\n\t}\n\tif (oldcount < Context->msgcount) {\n\t\tHEADER *oldcur = CURHDR;\n\n\t\tif ((Sort & SORT_MASK) == SORT_THREADS)\n\t\t\tmutt_sort_headers (Context, 0);\n\t\tmenu->current = oldcur->virtual;\n\t\tmenu->redraw = REDRAW_STATUS | REDRAW_INDEX;\n\n\t\tif (oldcur->collapsed || Context->collapsed) {\n\t\t\tmenu->current = mutt_uncollapse_thread(Context, CURHDR);\n\t\t\tmutt_set_virtual(Context);\n\t\t}\n\t}\n\tif (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n\tbreak;\n      }\n\n      case OP_MAIN_MODIFY_LABELS:\n      case OP_MAIN_MODIFY_LABELS_THEN_HIDE:\n      {\n\tif (Context->magic != M_NOTMUCH) {\n\t  mutt_message _(\"No virtual folder, aborting.\");\n\t  break;\n\t}\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\t*buf = '\\0';\n\tif (mutt_get_field (\"Add/remove labels: \", buf, sizeof (buf), M_NM_TAG) || !*buf)\n\t{\n          mutt_message _(\"No label specified, aborting.\");\n          break;\n        }\n\tif (tag)\n\t{\n\t  char msgbuf[STRING];\n\t  progress_t progress;\n\t  int px;\n\n\t  if (!Context->quiet) {\n\t    snprintf(msgbuf, sizeof (msgbuf), _(\"Update labels...\"));\n\t    mutt_progress_init(&progress, msgbuf, M_PROGRESS_MSG,\n\t\t\t\t   1, Context->tagged);\n\t  }\n\t  nm_longrun_init(Context, TRUE);\n\t  for (px = 0, j = 0; j < Context->vcount; j++) {\n\t    if (Context->hdrs[Context->v2r[j]]->tagged) {\n\t      if (!Context->quiet)\n\t\tmutt_progress_update(&progress, ++px, -1);\n\t      nm_modify_message_tags(Context, Context->hdrs[Context->v2r[j]], buf);\n\t      if (op == OP_MAIN_MODIFY_LABELS_THEN_HIDE)\n\t      {\n\t\tContext->hdrs[Context->v2r[j]]->quasi_deleted = TRUE;\n\t        Context->changed = TRUE;\n\t      }\n\t    }\n\t  }\n\t  nm_longrun_done(Context);\n\t  menu->redraw = REDRAW_STATUS | REDRAW_INDEX;\n\t}\n\telse\n\t{\n\t  if (nm_modify_message_tags(Context, CURHDR, buf)) {\n\t    mutt_message _(\"Failed to modify labels, aborting.\");\n\t    break;\n\t  }\n\t  if (op == OP_MAIN_MODIFY_LABELS_THEN_HIDE)\n\t  {\n\t    CURHDR->quasi_deleted = TRUE;\n\t    Context->changed = TRUE;\n\t  }\n\t  if (menu->menu == MENU_PAGER)\n\t  {\n\t    op = OP_DISPLAY_MESSAGE;\n\t    continue;\n\t  }\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    if ((menu->current = ci_next_undeleted (menu->current)) == -1)\n\t    {\n\t      menu->current = menu->oldcurrent;\n\t      menu->redraw = REDRAW_CURRENT;\n\t    }\n\t    else\n\t      menu->redraw = REDRAW_MOTION_RESYNCH;\n\t  }\n\t  else\n\t    menu->redraw = REDRAW_CURRENT;\n\t}\n\tmenu->redraw |= REDRAW_STATUS;\n\tbreak;\n      }\n\n      case OP_MAIN_VFOLDER_FROM_QUERY:\n\tbuf[0] = '\\0';\n        if (mutt_get_field (\"Query: \", buf, sizeof (buf), M_NM_QUERY) != 0 || !buf[0])\n        {\n          mutt_message _(\"No query, aborting.\");\n          break;\n        }\n\tif (!nm_uri_from_query(Context, buf, sizeof (buf)))\n\t  mutt_message _(\"Failed to create query, aborting.\");\n\telse\n\t  main_change_folder(menu, op, buf, sizeof (buf), &oldcount, &index_hint);\n\tbreak;\n\n      case OP_MAIN_CHANGE_VFOLDER:\n#endif\n#ifdef USE_SIDEBAR\n      case OP_SIDEBAR_OPEN:\n#endif\n      case OP_MAIN_CHANGE_FOLDER:\n      case OP_MAIN_NEXT_UNREAD_MAILBOX:\n\n\tif (attach_msg)\n\t  op = OP_MAIN_CHANGE_FOLDER_READONLY;\n\n\t/* fallback to the readonly case */\n\n      case OP_MAIN_CHANGE_FOLDER_READONLY:\n\n        if ((op == OP_MAIN_CHANGE_FOLDER_READONLY) || option (OPTREADONLY))\n          cp = _(\"Open mailbox in read-only mode\");\n#ifdef USE_NOTMUCH\n        else if (op == OP_MAIN_CHANGE_VFOLDER)\n\t  cp = _(\"Open virtual folder\");\n#endif\n\telse\n          cp = _(\"Open mailbox\");\n\n\tbuf[0] = '\\0';\n\tif ((op == OP_MAIN_NEXT_UNREAD_MAILBOX) && Context && Context->path)\n\t{\n\t  strfcpy (buf, Context->path, sizeof (buf));\n\t  mutt_pretty_mailbox (buf, sizeof (buf));\n\t  mutt_buffy (buf, sizeof (buf));\n\t  if (!buf[0])\n\t  {\n\t    mutt_error _(\"No mailboxes have new mail\");\n\t    break;\n\t  }\n\t}\n#ifdef USE_NOTMUCH\n\telse if (op == OP_MAIN_CHANGE_VFOLDER) {\n\t  if (Context->magic == M_NOTMUCH) {\n\t\t  strfcpy(buf, Context->path, sizeof (buf));\n\t\t  mutt_buffy_vfolder (buf, sizeof (buf));\n\t  }\n\t  mutt_enter_vfolder (cp, buf, sizeof (buf), &menu->redraw, 1);\n\t  if (!buf[0])\n\t  {\n\t    CLEARLINE (LINES-1);\n\t    break;\n\t  }\n\t}\n#endif\n\telse\n\t{\n\t  mutt_buffy (buf, sizeof (buf));\n\n#ifdef USE_SIDEBAR\n\t  if (op == OP_SIDEBAR_OPEN) {\n\t    const char *path = sb_get_highlight();\n\t    if (!path)\n\t      break;\n\t    strncpy (buf, path, sizeof (buf));\n\t  } else\n#endif\n\t  if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1)\n\t  {\n\t    if (menu->menu == MENU_PAGER)\n\t    {\n\t      op = OP_DISPLAY_MESSAGE;\n\t      continue;\n\t    }\n\t    else\n\t      break;\n\t  }\n\t  if (!buf[0])\n\t  {\n\t    CLEARLINE (LINES-1);\n\t    break;\n\t  }\n\t}\n\n\tmain_change_folder(menu, op, buf, sizeof (buf), &oldcount, &index_hint);\n\tbreak;\n\n      case OP_DISPLAY_MESSAGE:\n      case OP_DISPLAY_HEADERS: /* don't weed the headers */\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\t/*\n\t * toggle the weeding of headers so that a user can press the key\n\t * again while reading the message.\n\t */\n\tif (op == OP_DISPLAY_HEADERS)\n\t  toggle_option (OPTWEED);\n\n\tunset_option (OPTNEEDRESORT);\n\n\tif ((Sort & SORT_MASK) == SORT_THREADS && CURHDR->collapsed)\n\t{\n\t  mutt_uncollapse_thread (Context, CURHDR);\n\t  mutt_set_virtual (Context);\n\t  if (option (OPTUNCOLLAPSEJUMP))\n\t    menu->current = mutt_thread_next_unread (Context, CURHDR);\n\t}\n\n\tif (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)))\n\t  mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);\n\tif ((op = mutt_display_message (CURHDR)) == -1)\n\t{\n\t  unset_option (OPTNEEDRESORT);\n\t  break;\n\t}\n\n\tmenu->menu = MENU_PAGER;\n \tmenu->oldcurrent = menu->current;\n\tcontinue;\n\n      case OP_EXIT:\n\n\tclose = op;\n\tif (menu->menu == MENU_MAIN && attach_msg)\n\t{\n\t done = 1;\n\t break;\n\t}\n\n\tif ((menu->menu == MENU_MAIN)\n\t    && (query_quadoption (OPT_QUIT,\n\t\t\t\t  _(\"Exit Mutt without saving?\")) == M_YES))\n\t{\n\t  if (Context)\n\t  {\n\t    mx_fastclose_mailbox (Context);\n\t    FREE (&Context);\n\t  }\n\t  done = 1;\n\t}\n\tbreak;\n\n      case OP_MAIN_BREAK_THREAD:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n\n        if ((Sort & SORT_MASK) != SORT_THREADS)\n\t  mutt_error _(\"Threading is not enabled.\");\n\telse if (CURHDR->env->in_reply_to || CURHDR->env->references)\n\t{\n\t  {\n\t    HEADER *oldcur = CURHDR;\n\n\t    mutt_break_thread (CURHDR);\n\t    mutt_sort_headers (Context, 1);\n\t    menu->current = oldcur->virtual;\n\t  }\n\n\t  Context->changed = 1;\n\t  mutt_message _(\"Thread broken\");\n\n\t  if (menu->menu == MENU_PAGER)\n\t  {\n\t    op = OP_DISPLAY_MESSAGE;\n\t    continue;\n\t  }\n\t  else\n\t    menu->redraw |= REDRAW_INDEX;\n\t}\n\telse\n\t  mutt_error _(\"Thread cannot be broken, message is not part of a thread\");\n\n\tbreak;\n\n      case OP_MAIN_LINK_THREADS:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot link threads\"));\n\n        if ((Sort & SORT_MASK) != SORT_THREADS)\n\t  mutt_error _(\"Threading is not enabled.\");\n\telse if (!CURHDR->env->message_id)\n\t  mutt_error _(\"No Message-ID: header available to link thread\");\n\telse if (!tag && (!Context->last_tag || !Context->last_tag->tagged))\n\t  mutt_error _(\"First, please tag a message to be linked here\");\n\telse\n\t{\n\t  HEADER *oldcur = CURHDR;\n\n\t  if (mutt_link_threads (CURHDR, tag ? NULL : Context->last_tag,\n\t\t\t\t Context))\n\t  {\n\t    mutt_sort_headers (Context, 1);\n\t    menu->current = oldcur->virtual;\n\n\t    Context->changed = 1;\n\t    mutt_message _(\"Threads linked\");\n\t  }\n\t  else\n\t    mutt_error _(\"No thread linked\");\n\t}\n\n\tif (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n\telse\n\t  menu->redraw |= REDRAW_STATUS | REDRAW_INDEX;\n\n\tbreak;\n\n      case OP_EDIT_TYPE:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_ATTACH;\n\tmutt_edit_content_type (CURHDR, CURHDR->content, NULL);\n\t/* if we were in the pager, redisplay the message */\n\tif (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n        else\n\t  menu->redraw = REDRAW_CURRENT;\n\tbreak;\n\n      case OP_MAIN_NEXT_UNDELETED:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif (menu->current >= Context->vcount - 1)\n\t{\n\t  if (menu->menu == MENU_MAIN)\n\t    mutt_error _(\"You are on the last message.\");\n\t  break;\n\t}\n\tif ((menu->current = ci_next_undeleted (menu->current)) == -1)\n\t{\n\t  menu->current = menu->oldcurrent;\n\t  if (menu->menu == MENU_MAIN)\n\t    mutt_error _(\"No undeleted messages.\");\n\t}\n\telse if (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n\telse\n\t  menu->redraw = REDRAW_MOTION;\n\tbreak;\n\n      case OP_NEXT_ENTRY:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif (menu->current >= Context->vcount - 1)\n\t{\n\t  if (menu->menu == MENU_MAIN)\n\t    mutt_error _(\"You are on the last message.\");\n\t  break;\n\t}\n\tmenu->current++;\n\tif (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n\telse\n\t  menu->redraw = REDRAW_MOTION;\n\tbreak;\n\n      case OP_MAIN_PREV_UNDELETED:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif (menu->current < 1)\n\t{\n\t  mutt_error _(\"You are on the first message.\");\n\t  break;\n\t}\n\tif ((menu->current = ci_previous_undeleted (menu->current)) == -1)\n\t{\n\t  menu->current = menu->oldcurrent;\n\t  if (menu->menu == MENU_MAIN)\n\t    mutt_error _(\"No undeleted messages.\");\n\t}\n\telse if (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n\telse\n\t  menu->redraw = REDRAW_MOTION;\n\tbreak;\n\n      case OP_PREV_ENTRY:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif (menu->current < 1)\n\t{\n\t  if (menu->menu == MENU_MAIN) mutt_error _(\"You are on the first message.\");\n\t  break;\n\t}\n\tmenu->current--;\n\tif (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n\telse\n\t  menu->redraw = REDRAW_MOTION;\n\tbreak;\n\n      case OP_DECRYPT_COPY:\n      case OP_DECRYPT_SAVE:\n        if (!WithCrypto)\n          break;\n        /* fall thru */\n      case OP_COPY_MESSAGE:\n      case OP_SAVE:\n      case OP_DECODE_COPY:\n      case OP_DECODE_SAVE:\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n        if (mutt_save_message (tag ? NULL : CURHDR,\n\t\t\t       (op == OP_DECRYPT_SAVE) ||\n\t\t\t       (op == OP_SAVE) || (op == OP_DECODE_SAVE),\n\t\t\t       (op == OP_DECODE_SAVE) || (op == OP_DECODE_COPY),\n\t\t\t       (op == OP_DECRYPT_SAVE) || (op == OP_DECRYPT_COPY) ||\n\t\t\t       0,\n\t\t\t       &menu->redraw) == 0 &&\n\t     (op == OP_SAVE || op == OP_DECODE_SAVE || op == OP_DECRYPT_SAVE)\n\t    )\n\t{\n\t  if (tag)\n\t    menu->redraw |= REDRAW_INDEX;\n\t  else if (option (OPTRESOLVE))\n\t  {\n\t    if ((menu->current = ci_next_undeleted (menu->current)) == -1)\n\t    {\n\t      menu->current = menu->oldcurrent;\n\t      menu->redraw |= REDRAW_CURRENT;\n\t    }\n\t    else\n\t      menu->redraw |= REDRAW_MOTION_RESYNCH;\n\t  }\n\t  else\n\t    menu->redraw |= REDRAW_CURRENT;\n\t}\n\tbreak;\n\n      case OP_MAIN_NEXT_NEW:\n      case OP_MAIN_NEXT_UNREAD:\n      case OP_MAIN_PREV_NEW:\n      case OP_MAIN_PREV_UNREAD:\n      case OP_MAIN_NEXT_NEW_THEN_UNREAD:\n      case OP_MAIN_PREV_NEW_THEN_UNREAD:\n\n      {\n\tint first_unread = -1;\n\tint first_new    = -1;\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\n\ti = menu->current;\n\tmenu->current = -1;\n\tfor (j = 0; j != Context->vcount; j++)\n\t{\n#define CURHDRi Context->hdrs[Context->v2r[i]]\n\t  if (op == OP_MAIN_NEXT_NEW || op == OP_MAIN_NEXT_UNREAD || op == OP_MAIN_NEXT_NEW_THEN_UNREAD)\n\t  {\n\t    i++;\n\t    if (i > Context->vcount - 1)\n\t    {\n\t      mutt_message _(\"Search wrapped to top.\");\n\t      i = 0;\n\t    }\n\t  }\n\t  else\n\t  {\n\t    i--;\n\t    if (i < 0)\n\t    {\n\t      mutt_message _(\"Search wrapped to bottom.\");\n\t      i = Context->vcount - 1;\n\t    }\n\t  }\n\n\t  if (CURHDRi->collapsed && (Sort & SORT_MASK) == SORT_THREADS)\n\t  {\n\t    if (UNREAD (CURHDRi) && first_unread == -1)\n\t      first_unread = i;\n\t    if (UNREAD (CURHDRi) == 1 && first_new == -1)\n\t      first_new = i;\n\t  }\n\t  else if ((!CURHDRi->deleted && !CURHDRi->read))\n\t  {\n\t    if (first_unread == -1)\n\t      first_unread = i;\n\t    if ((!CURHDRi->old) && first_new == -1)\n\t      first_new = i;\n\t  }\n\n\t  if ((op == OP_MAIN_NEXT_UNREAD || op == OP_MAIN_PREV_UNREAD) &&\n\t      first_unread != -1)\n\t    break;\n\t  if ((op == OP_MAIN_NEXT_NEW || op == OP_MAIN_PREV_NEW ||\n\t       op == OP_MAIN_NEXT_NEW_THEN_UNREAD || op == OP_MAIN_PREV_NEW_THEN_UNREAD)\n\t      && first_new != -1)\n\t    break;\n\t}\n#undef CURHDRi\n\tif ((op == OP_MAIN_NEXT_NEW || op == OP_MAIN_PREV_NEW ||\n\t     op == OP_MAIN_NEXT_NEW_THEN_UNREAD || op == OP_MAIN_PREV_NEW_THEN_UNREAD)\n\t    && first_new != -1)\n\t  menu->current = first_new;\n\telse if ((op == OP_MAIN_NEXT_UNREAD || op == OP_MAIN_PREV_UNREAD ||\n\t\t  op == OP_MAIN_NEXT_NEW_THEN_UNREAD || op == OP_MAIN_PREV_NEW_THEN_UNREAD)\n\t\t && first_unread != -1)\n\t  menu->current = first_unread;\n\n\tif (menu->current == -1)\n\t{\n\t  menu->current = menu->oldcurrent;\n\t  if (op == OP_MAIN_NEXT_NEW || op == OP_MAIN_PREV_NEW)\n          {\n            if (Context->pattern)\n              mutt_error (_(\"No new messages in this limited view.\"));\n            else\n              mutt_error (_(\"No new messages.\"));\n          }\n          else\n          {\n            if (Context->pattern)\n              mutt_error (_(\"No unread messages in this limited view.\"));\n            else\n              mutt_error (_(\"No unread messages.\"));\n          }\n\t}\n\telse if (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n\telse\n\t  menu->redraw = REDRAW_MOTION;\n\tbreak;\n      }\n      case OP_FLAG_MESSAGE:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_WRITE, _(\"Cannot flag message\"));\n\n        if (tag)\n        {\n\t  for (j = 0; j < Context->vcount; j++)\n\t  {\n\t    if (Context->hdrs[Context->v2r[j]]->tagged)\n\t      mutt_set_flag (Context, Context->hdrs[Context->v2r[j]],\n\t\t\t     M_FLAG, !Context->hdrs[Context->v2r[j]]->flagged);\n\t  }\n\n\t  menu->redraw |= REDRAW_INDEX;\n\t}\n        else\n        {\n\t  mutt_set_flag (Context, CURHDR, M_FLAG, !CURHDR->flagged);\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    if ((menu->current = ci_next_undeleted (menu->current)) == -1)\n\t    {\n\t      menu->current = menu->oldcurrent;\n\t      menu->redraw = REDRAW_CURRENT;\n\t    }\n\t    else\n\t      menu->redraw = REDRAW_MOTION_RESYNCH;\n\t  }\n\t  else\n\t    menu->redraw = REDRAW_CURRENT;\n\t}\n\tmenu->redraw |= REDRAW_STATUS;\n\tbreak;\n\n      case OP_TOGGLE_NEW:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_SEEN, _(\"Cannot toggle new\"));\n\n\tif (tag)\n\t{\n\t  for (j = 0; j < Context->vcount; j++)\n\t  {\n\t    if (Context->hdrs[Context->v2r[j]]->tagged)\n\t    {\n\t      if (Context->hdrs[Context->v2r[j]]->read ||\n\t\t  Context->hdrs[Context->v2r[j]]->old)\n\t\tmutt_set_flag (Context, Context->hdrs[Context->v2r[j]], M_NEW, 1);\n\t      else\n\t\tmutt_set_flag (Context, Context->hdrs[Context->v2r[j]], M_READ, 1);\n\t    }\n\t  }\n\t  menu->redraw = REDRAW_STATUS | REDRAW_INDEX;\n\t}\n\telse\n\t{\n\t  if (CURHDR->read || CURHDR->old)\n\t    mutt_set_flag (Context, CURHDR, M_NEW, 1);\n\t  else\n\t    mutt_set_flag (Context, CURHDR, M_READ, 1);\n\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    if ((menu->current = ci_next_undeleted (menu->current)) == -1)\n\t    {\n\t      menu->current = menu->oldcurrent;\n\t      menu->redraw = REDRAW_CURRENT;\n\t    }\n\t    else\n\t      menu->redraw = REDRAW_MOTION_RESYNCH;\n\t  }\n\t  else\n\t    menu->redraw = REDRAW_CURRENT;\n\t  menu->redraw |= REDRAW_STATUS;\n\t}\n\tbreak;\n\n      case OP_TOGGLE_WRITE:\n\n\tCHECK_IN_MAILBOX;\n\tif (mx_toggle_write (Context) == 0)\n\t  menu->redraw |= REDRAW_STATUS;\n\tbreak;\n\n      case OP_MAIN_NEXT_THREAD:\n      case OP_MAIN_NEXT_SUBTHREAD:\n      case OP_MAIN_PREV_THREAD:\n      case OP_MAIN_PREV_SUBTHREAD:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tswitch (op)\n\t{\n\t  case OP_MAIN_NEXT_THREAD:\n\t    menu->current = mutt_next_thread (CURHDR);\n\t    break;\n\n\t  case OP_MAIN_NEXT_SUBTHREAD:\n\t    menu->current = mutt_next_subthread (CURHDR);\n\t    break;\n\n\t  case OP_MAIN_PREV_THREAD:\n\t    menu->current = mutt_previous_thread (CURHDR);\n\t    break;\n\n\t  case OP_MAIN_PREV_SUBTHREAD:\n\t    menu->current = mutt_previous_subthread (CURHDR);\n\t    break;\n\t}\n\n\tif (menu->current < 0)\n\t{\n\t  menu->current = menu->oldcurrent;\n\t  if (op == OP_MAIN_NEXT_THREAD || op == OP_MAIN_NEXT_SUBTHREAD)\n\t    mutt_error _(\"No more threads.\");\n\t  else\n\t    mutt_error _(\"You are on the first thread.\");\n\t}\n\telse if (menu->menu == MENU_PAGER)\n\t{\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n\telse\n\t  menu->redraw = REDRAW_MOTION;\n\tbreak;\n\n      case OP_MAIN_PARENT_MESSAGE:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\n\tif ((menu->current = mutt_parent_message (Context, CURHDR)) < 0)\n\t{\n\t  menu->current = menu->oldcurrent;\n\t}\n\telse if (menu->menu == MENU_PAGER)\n        {\n          op = OP_DISPLAY_MESSAGE;\n          continue;\n        }\n        else\n          menu->redraw = REDRAW_MOTION;\n\tbreak;\n\n      case OP_MAIN_SET_FLAG:\n      case OP_MAIN_CLEAR_FLAG:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n\t/* CHECK_ACL(M_ACL_WRITE); */\n\n\tif (mutt_change_flag (tag ? NULL : CURHDR, (op == OP_MAIN_SET_FLAG)) == 0)\n\t{\n\t  menu->redraw = REDRAW_STATUS;\n\t  if (tag)\n\t    menu->redraw |= REDRAW_INDEX;\n\t  else if (option (OPTRESOLVE))\n\t  {\n\t    if ((menu->current = ci_next_undeleted (menu->current)) == -1)\n\t    {\n\t      menu->current = menu->oldcurrent;\n\t      menu->redraw |= REDRAW_CURRENT;\n\t    }\n\t    else\n\t      menu->redraw |= REDRAW_MOTION_RESYNCH;\n\t  }\n\t  else\n\t    menu->redraw |= REDRAW_CURRENT;\n\t}\n\tbreak;\n\n      case OP_MAIN_COLLAPSE_THREAD:\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\n        if ((Sort & SORT_MASK) != SORT_THREADS)\n        {\n\t  mutt_error _(\"Threading is not enabled.\");\n\t  break;\n\t}\n\n\tif (CURHDR->collapsed)\n\t{\n\t  menu->current = mutt_uncollapse_thread (Context, CURHDR);\n\t  mutt_set_virtual (Context);\n\t  if (option (OPTUNCOLLAPSEJUMP))\n\t    menu->current = mutt_thread_next_unread (Context, CURHDR);\n\t}\n\telse if (option (OPTCOLLAPSEUNREAD) || !UNREAD (CURHDR))\n\t{\n\t  menu->current = mutt_collapse_thread (Context, CURHDR);\n\t  mutt_set_virtual (Context);\n\t}\n\telse\n\t{\n\t  mutt_error _(\"Thread contains unread messages.\");\n\t  break;\n\t}\n\n\tmenu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\n       break;\n\n      case OP_MAIN_COLLAPSE_ALL:\n        CHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\n        if ((Sort & SORT_MASK) != SORT_THREADS)\n        {\n\t  mutt_error _(\"Threading is not enabled.\");\n\t  break;\n\t}\n\n        {\n\t  HEADER *h, *base;\n\t  THREAD *thread, *top;\n\t  int final;\n\n\t  if (CURHDR->collapsed)\n\t    final = mutt_uncollapse_thread (Context, CURHDR);\n\t  else if (option (OPTCOLLAPSEUNREAD) || !UNREAD (CURHDR))\n\t    final = mutt_collapse_thread (Context, CURHDR);\n\t  else\n\t    final = CURHDR->virtual;\n\n\t  base = Context->hdrs[Context->v2r[final]];\n\n\t  top = Context->tree;\n\t  Context->collapsed = !Context->collapsed;\n\t  while ((thread = top) != NULL)\n\t  {\n\t    while (!thread->message)\n\t      thread = thread->child;\n\t    h = thread->message;\n\n\t    if (h->collapsed != Context->collapsed)\n\t    {\n\t      if (h->collapsed)\n\t\tmutt_uncollapse_thread (Context, h);\n\t      else if (option (OPTCOLLAPSEUNREAD) || !UNREAD (h))\n\t\tmutt_collapse_thread (Context, h);\n\t    }\n\t    top = top->next;\n\t  }\n\n\t  mutt_set_virtual (Context);\n\t  for (j = 0; j < Context->vcount; j++)\n\t  {\n\t    if (Context->hdrs[Context->v2r[j]]->index == base->index)\n\t    {\n\t      menu->current = j;\n\t      break;\n\t    }\n\t  }\n\n\t  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\t}\n\tbreak;\n\n      /* --------------------------------------------------------------------\n       * These functions are invoked directly from the internal-pager\n       */\n\n      case OP_BOUNCE_MESSAGE:\n\n\tCHECK_ATTACH;\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tci_bounce_message (tag ? NULL : CURHDR, &menu->redraw);\n\tbreak;\n\n      case OP_CREATE_ALIAS:\n\n        mutt_create_alias (Context && Context->vcount ? CURHDR->env : NULL, NULL);\n\tMAYBE_REDRAW (menu->redraw);\n        menu->redraw |= REDRAW_CURRENT;\n\tbreak;\n\n      case OP_QUERY:\n\tCHECK_ATTACH;\n\tmutt_query_menu (NULL, 0);\n\tMAYBE_REDRAW (menu->redraw);\n\tbreak;\n\n      case OP_DELETE:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot delete message\"));\n\n\tif (tag)\n\t{\n\t  mutt_tag_set_flag (M_DELETE, 1);\n\t  if (option (OPTDELETEUNTAG))\n\t    mutt_tag_set_flag (M_TAG, 0);\n\t  menu->redraw = REDRAW_INDEX;\n\t}\n\telse\n\t{\n\t  mutt_set_flag (Context, CURHDR, M_DELETE, 1);\n\t  if (option (OPTDELETEUNTAG))\n\t    mutt_set_flag (Context, CURHDR, M_TAG, 0);\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    if ((menu->current = ci_next_undeleted (menu->current)) == -1)\n\t    {\n\t      menu->current = menu->oldcurrent;\n\t      menu->redraw = REDRAW_CURRENT;\n\t    }\n\t    else if (menu->menu == MENU_PAGER)\n\t    {\n\t      op = OP_DISPLAY_MESSAGE;\n\t      continue;\n\t    }\n\t    else\n\t      menu->redraw |= REDRAW_MOTION_RESYNCH;\n\t  }\n\t  else\n\t    menu->redraw = REDRAW_CURRENT;\n\t}\n\tmenu->redraw |= REDRAW_STATUS;\n\tbreak;\n\n      case OP_DELETE_THREAD:\n      case OP_DELETE_SUBTHREAD:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot delete message(s)\"));\n\n\trc = mutt_thread_set_flag (CURHDR, M_DELETE, 1,\n\t\t\t\t   op == OP_DELETE_THREAD ? 0 : 1);\n\n\tif (rc != -1)\n\t{\n\t  if (option (OPTDELETEUNTAG))\n\t    mutt_thread_set_flag (CURHDR, M_TAG, 0,\n\t\t\t\t  op == OP_DELETE_THREAD ? 0 : 1);\n\t  if (option (OPTRESOLVE))\n\t    if ((menu->current = ci_next_undeleted (menu->current)) == -1)\n\t      menu->current = menu->oldcurrent;\n\t  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\t}\n\tbreak;\n\n      case OP_DISPLAY_ADDRESS:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tmutt_display_address (CURHDR->env);\n\tbreak;\n\n      case OP_ENTER_COMMAND:\n\n\tCurrentMenu = MENU_MAIN;\n\tmutt_enter_command ();\n\tmutt_check_rescore (Context);\n\tif (option (OPTFORCEREDRAWINDEX))\n\t  menu->redraw = REDRAW_FULL;\n\tunset_option (OPTFORCEREDRAWINDEX);\n\tunset_option (OPTFORCEREDRAWPAGER);\n\tbreak;\n\n      case OP_EDIT_MESSAGE:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n\tCHECK_ATTACH;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_INSERT, _(\"Cannot edit message\"));\n\n\tif (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)))\n\t  mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);\n        mutt_edit_message (Context, tag ? NULL : CURHDR);\n\tmenu->redraw = REDRAW_FULL;\n\n\tbreak;\n\n      case OP_FORWARD_MESSAGE:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_ATTACH;\n\tif (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)))\n\t  mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);\n\tci_send_message (SENDFORWARD, NULL, NULL, Context, tag ? NULL : CURHDR);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n\n      case OP_FORGET_PASSPHRASE:\n\tcrypt_forget_passphrase ();\n\tbreak;\n\n      case OP_GROUP_REPLY:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_ATTACH;\n\tif (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)))\n\t  mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);\n\tci_send_message (SENDREPLY|SENDGROUPREPLY, NULL, NULL, Context, tag ? NULL : CURHDR);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_LIST_REPLY:\n\n\tCHECK_ATTACH;\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)))\n\t  mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);\n\tci_send_message (SENDREPLY|SENDLISTREPLY, NULL, NULL, Context, tag ? NULL : CURHDR);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_MAIL:\n\n\tCHECK_ATTACH;\n\tci_send_message (0, NULL, NULL, Context, NULL);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_MAIL_KEY:\n        if (!(WithCrypto & APPLICATION_PGP))\n          break;\n\tCHECK_ATTACH;\n\tci_send_message (SENDKEY, NULL, NULL, NULL, NULL);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n\n      case OP_EXTRACT_KEYS:\n        if (!WithCrypto)\n          break;\n        CHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n        crypt_extract_keys_from_messages(tag ? NULL : CURHDR);\n        menu->redraw = REDRAW_FULL;\n        break;\n\n\n      case OP_CHECK_TRADITIONAL:\n        if (!(WithCrypto & APPLICATION_PGP))\n          break;\n        CHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n        if (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED))\n\t  mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);\n\n        if (menu->menu == MENU_PAGER)\n        {\n\t  op = OP_DISPLAY_MESSAGE;\n\t  continue;\n\t}\n        break;\n\n      case OP_PIPE:\n\n\tCHECK_MSGCOUNT;\n\tCHECK_VISIBLE;\n\tmutt_pipe_message (tag ? NULL : CURHDR);\n\n#ifdef USE_IMAP\n\t/* in an IMAP folder index with imap_peek=no, piping could change\n\t * new or old messages status to read. Redraw what's needed.\n\t */\n\tif (Context->magic == M_IMAP && !option (OPTIMAPPEEK))\n\t{\n\t  menu->redraw = (tag ? REDRAW_INDEX : REDRAW_CURRENT) | REDRAW_STATUS;\n\t}\n#endif\n\n\tMAYBE_REDRAW (menu->redraw);\n\tbreak;\n\n      case OP_PRINT:\n\n\tCHECK_MSGCOUNT;\n\tCHECK_VISIBLE;\n\tmutt_print_message (tag ? NULL : CURHDR);\n\n#ifdef USE_IMAP\n\t/* in an IMAP folder index with imap_peek=no, printing could change\n\t * new or old messages status to read. Redraw what's needed.\n\t */\n\tif (Context->magic == M_IMAP && !option (OPTIMAPPEEK))\n\t{\n\t  menu->redraw = (tag ? REDRAW_INDEX : REDRAW_CURRENT) | REDRAW_STATUS;\n\t}\n#endif\n\n\tbreak;\n\n      case OP_MAIN_READ_THREAD:\n      case OP_MAIN_READ_SUBTHREAD:\n\n\tCHECK_MSGCOUNT;\n\tCHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_SEEN, _(\"Cannot mark message(s) as read\"));\n\n\trc = mutt_thread_set_flag (CURHDR, M_READ, 1,\n\t\t\t\t   op == OP_MAIN_READ_THREAD ? 0 : 1);\n\n\tif (rc != -1)\n\t{\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    if ((menu->current = (op == OP_MAIN_READ_THREAD ?\n\t\t\t\t  mutt_next_thread (CURHDR) : mutt_next_subthread (CURHDR))) == -1)\n\t      menu->current = menu->oldcurrent;\n\t    else if (menu->menu == MENU_PAGER)\n\t    {\n\t      op = OP_DISPLAY_MESSAGE;\n\t      continue;\n\t    }\n\t  }\n\t  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\t}\n\tbreak;\n\n      case OP_RECALL_MESSAGE:\n\n\tCHECK_ATTACH;\n\tci_send_message (SENDPOSTPONED, NULL, NULL, Context, NULL);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_RESEND:\n\n        CHECK_ATTACH;\n        CHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\n        if (tag)\n        {\n\t  for (j = 0; j < Context->vcount; j++)\n\t  {\n\t    if (Context->hdrs[Context->v2r[j]]->tagged)\n\t      mutt_resend_message (NULL, Context, Context->hdrs[Context->v2r[j]]);\n\t  }\n\t}\n        else\n\t  mutt_resend_message (NULL, Context, CURHDR);\n\n        menu->redraw = REDRAW_FULL;\n        break;\n\n      case OP_REPLY:\n\n\tCHECK_ATTACH;\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tif (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)))\n\t  mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);\n\tci_send_message (SENDREPLY, NULL, NULL, Context, tag ? NULL : CURHDR);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_SHELL_ESCAPE:\n\n\tmutt_shell_escape ();\n\tMAYBE_REDRAW (menu->redraw);\n\tbreak;\n\n      case OP_TAG_THREAD:\n      case OP_TAG_SUBTHREAD:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\trc = mutt_thread_set_flag (CURHDR, M_TAG, !CURHDR->tagged,\n\t\t\t\t   op == OP_TAG_THREAD ? 0 : 1);\n\n\tif (rc != -1)\n\t{\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    if (op == OP_TAG_THREAD)\n\t      menu->current = mutt_next_thread (CURHDR);\n\t    else\n\t      menu->current = mutt_next_subthread (CURHDR);\n\n\t    if (menu->current == -1)\n\t      menu->current = menu->oldcurrent;\n\t  }\n\t  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\t}\n\tbreak;\n\n      case OP_UNDELETE:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot undelete message\"));\n\n\tif (tag)\n\t{\n\t  mutt_tag_set_flag (M_DELETE, 0);\n\t  menu->redraw = REDRAW_INDEX;\n\t}\n\telse\n\t{\n\t  mutt_set_flag (Context, CURHDR, M_DELETE, 0);\n\t  if (option (OPTRESOLVE) && menu->current < Context->vcount - 1)\n\t  {\n\t    menu->current++;\n\t    menu->redraw = REDRAW_MOTION_RESYNCH;\n\t  }\n\t  else\n\t    menu->redraw = REDRAW_CURRENT;\n\t}\n\tmenu->redraw |= REDRAW_STATUS;\n\tbreak;\n\n      case OP_UNDELETE_THREAD:\n      case OP_UNDELETE_SUBTHREAD:\n\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot undelete message(s)\"));\n\n\trc = mutt_thread_set_flag (CURHDR, M_DELETE, 0,\n\t\t\t\t   op == OP_UNDELETE_THREAD ? 0 : 1);\n\n\tif (rc != -1)\n\t{\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    if (op == OP_UNDELETE_THREAD)\n\t      menu->current = mutt_next_thread (CURHDR);\n\t    else\n\t      menu->current = mutt_next_subthread (CURHDR);\n\n\t    if (menu->current == -1)\n\t      menu->current = menu->oldcurrent;\n\t  }\n\t  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\t}\n\tbreak;\n\n      case OP_VERSION:\n\tmutt_version ();\n\tbreak;\n\n      case OP_BUFFY_LIST:\n\tmutt_buffy_list ();\n\tbreak;\n\n      case OP_VIEW_ATTACHMENTS:\n\tCHECK_MSGCOUNT;\n        CHECK_VISIBLE;\n\tmutt_view_attachments (CURHDR);\n\tif (CURHDR->attach_del)\n\t  Context->changed = 1;\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_END_COND:\n\tbreak;\n\n      case OP_WHAT_KEY:\n\tmutt_what_key();\n\tbreak;\n\n#ifdef USE_SIDEBAR\n      case OP_SIDEBAR_NEXT:\n      case OP_SIDEBAR_NEXT_NEW:\n      case OP_SIDEBAR_PAGE_DOWN:\n      case OP_SIDEBAR_PAGE_UP:\n      case OP_SIDEBAR_PREV:\n      case OP_SIDEBAR_PREV_NEW:\n        sb_change_mailbox (op);\n        break;\n\n      case OP_SIDEBAR_TOGGLE_VISIBLE:\n\ttoggle_option (OPTSIDEBAR);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_SIDEBAR_TOGGLE_VIRTUAL:\n\tsb_toggle_virtual();\n\tbreak;\n#endif\n      default:\n\tif (menu->menu == MENU_MAIN)\n\t  km_error_key (MENU_MAIN);\n    }\n\n#ifdef USE_NOTMUCH\n    if (Context)\n      nm_debug_check(Context);\n#endif\n\n    if (menu->menu == MENU_PAGER)\n    {\n      menu->menu = MENU_MAIN;\n      menu->redraw = REDRAW_FULL;\n#if 0\n      set_option (OPTWEED); /* turn header weeding back on. */\n#endif\n    }\n\n    if (done) break;\n  }\n\n  mutt_menuDestroy (&menu);\n  return (close);\n}\n\nvoid mutt_set_header_color (CONTEXT *ctx, HEADER *curhdr)\n{\n  COLOR_LINE *color;\n\n  if (!curhdr)\n    return;\n\n  for (color = ColorIndexList; color; color = color->next)\n   if (mutt_pattern_exec (color->color_pattern, M_MATCH_FULL_ADDRESS, ctx, curhdr))\n   {\n      curhdr->pair = color->pair;\n      return;\n   }\n  curhdr->pair = ColorDefs[MT_COLOR_NORMAL];\n}\n"
  },
  {
    "path": "date.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include <string.h>\n\n/* returns the seconds east of UTC given `g' and its corresponding gmtime()\n   representation */\nstatic time_t compute_tz (time_t g, struct tm *utc)\n{\n  struct tm *lt = localtime (&g);\n  time_t t;\n  int yday;\n\n  t = (((lt->tm_hour - utc->tm_hour) * 60) + (lt->tm_min - utc->tm_min)) * 60;\n\n  if ((yday = (lt->tm_yday - utc->tm_yday)))\n  {\n    /* This code is optimized to negative timezones (West of Greenwich) */\n    if (yday == -1 ||\t/* UTC passed midnight before localtime */\n\tyday > 1)\t/* UTC passed new year before localtime */\n      t -= 24 * 60 * 60;\n    else\n      t += 24 * 60 * 60;\n  }\n\n  return t;\n}\n\n/* Returns the local timezone in seconds east of UTC for the time t,\n * or for the current time if t is zero.\n */\ntime_t mutt_local_tz (time_t t)\n{\n  struct tm *ptm;\n  struct tm utc;\n\n  if (!t)\n    t = time (NULL);\n  ptm = gmtime (&t);\n  /* need to make a copy because gmtime/localtime return a pointer to\n     static memory (grr!) */\n  memcpy (&utc, ptm, sizeof (utc));\n  return (compute_tz (t, &utc));\n}\n\n/* converts struct tm to time_t, but does not take the local timezone into\n   account unless ``local'' is nonzero */\ntime_t mutt_mktime (struct tm *t, int local)\n{\n  time_t g;\n\n  static const int AccumDaysPerMonth[12] = {\n    0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334\n  };\n\n  /* Compute the number of days since January 1 in the same year */\n  g = AccumDaysPerMonth [t->tm_mon % 12];\n\n  /* The leap years are 1972 and every 4. year until 2096,\n   * but this algorithm will fail after year 2099 */\n  g += t->tm_mday;\n  if ((t->tm_year % 4) || t->tm_mon < 2)\n    g--;\n  t->tm_yday = g;\n\n  /* Compute the number of days since January 1, 1970 */\n  g += (t->tm_year - 70) * 365;\n  g += (t->tm_year - 69) / 4;\n\n  /* Compute the number of hours */\n  g *= 24;\n  g += t->tm_hour;\n\n  /* Compute the number of minutes */\n  g *= 60;\n  g += t->tm_min;\n\n  /* Compute the number of seconds */\n  g *= 60;\n  g += t->tm_sec;\n\n  if (local)\n    g -= compute_tz (g, t);\n\n  return (g);\n}\n\n/* Return 1 if month is February of leap year, else 0 */\nstatic int isLeapYearFeb (struct tm *tm)\n{\n  if (tm->tm_mon == 1)\n  {\n    int y = tm->tm_year + 1900;\n    return (((y & 3) == 0) && (((y % 100) != 0) || ((y % 400) == 0)));\n  }\n  return (0);\n}\n\nvoid mutt_normalize_time (struct tm *tm)\n{\n  static const char DaysPerMonth[12] = {\n    31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31\n  };\n  int nLeap;\n\n  while (tm->tm_sec < 0)\n  {\n    tm->tm_sec += 60;\n    tm->tm_min--;\n  }\n  while (tm->tm_sec >= 60)\n  {\n    tm->tm_sec -= 60;\n    tm->tm_min++;\n  }\n  while (tm->tm_min < 0)\n  {\n    tm->tm_min += 60;\n    tm->tm_hour--;\n  }\n  while (tm->tm_min >= 60)\n  {\n    tm->tm_min -= 60;\n    tm->tm_hour++;\n  }\n  while (tm->tm_hour < 0)\n  {\n    tm->tm_hour += 24;\n    tm->tm_mday--;\n  }\n  while (tm->tm_hour >= 24)\n  {\n    tm->tm_hour -= 24;\n    tm->tm_mday++;\n  }\n  /* use loops on NNNdwmy user input values? */\n  while (tm->tm_mon < 0)\n  {\n    tm->tm_mon += 12;\n    tm->tm_year--;\n  }\n  while (tm->tm_mon >= 12)\n  {\n    tm->tm_mon -= 12;\n    tm->tm_year++;\n  }\n  while (tm->tm_mday <= 0)\n  {\n    if (tm->tm_mon)\n      tm->tm_mon--;\n    else\n    {\n      tm->tm_mon = 11;\n      tm->tm_year--;\n    }\n    tm->tm_mday += DaysPerMonth[tm->tm_mon] + isLeapYearFeb (tm);\n  }\n  while (tm->tm_mday > (DaysPerMonth[tm->tm_mon] + \n\t(nLeap = isLeapYearFeb (tm))))\n  {\n    tm->tm_mday -= DaysPerMonth[tm->tm_mon] + nLeap;\n    if (tm->tm_mon < 11)\n      tm->tm_mon++;\n    else\n    {\n      tm->tm_mon = 0;\n      tm->tm_year++;\n    }\n  }\n}\n"
  },
  {
    "path": "doc/Makefile.am",
    "content": "## Process this file with automake to produce Makefile.in\ninclude $(top_srcdir)/flymake.am\n\nAUTOMAKE_OPTIONS = 1.6 foreign\n\nsubdir = doc\n\nDEFS = -DSYSCONFDIR=\\\"$(sysconfdir)\\\" -DBINDIR=\\\"$(bindir)\\\" -DHAVE_CONFIG_H=1\nAM_CPPFLAGS = -I. -I.. -I$(includedir) -I$(top_srcdir)\n\nMAKEDOC_CPP = $(CPP) $(AM_CPPFLAGS) $(DEFS) $(CPPFLAGS) -D_MAKEDOC -C\n\nnoinst_PROGRAMS = makedoc\n\nEXTRA_DIST = dotlock.man\t\t\\\n        smime_keys.man                  \\\n\tmuttbug.man\t\t\t\\\n\tmutt.man\t\t\t\\\n\tpgpewrap.man\t\t\t\\\n\tpgpring.man\t\t\t\\\n\tPGP-Notes.txt\t\t\t\\\n\tapplying-patches.txt\t\t\\\n\tdevel-notes.txt\t\t\t\\\n\tgen-map-doc\t\t\t\\\n\tmuttrc.man.head\t\t\t\\\n\tmuttrc.man.tail\t\t\t\\\n\tmbox.man\t\t\t\\\n\tmmdf.man\t\t\t\\\n\tmanual.xml.head\t\t\t\\\n\tmanual.xml.tail\t\t\t\\\n\tinstdoc.sh.in\t\t\t\\\n\tpatch-notes.txt\t\t\t\\\n\tsmime-notes.txt\t\t\t\\\n\tMuttrc Muttrc.head stamp-doc-rc \\\n\tmakedoc.c makedoc-defs.h \t\\\n\tmutt.css mutt.xsl html.xsl chunk.xsl $(BUILT_DISTFILES)\n\nCHUNKED_DOCFILES = index.html intro.html gettingstarted.html \\\n\tconfiguration.html mimesupport.html advancedusage.html \\\n\toptionalfeatures.html security.html tuning.html reference.html miscellany.html\n\nHTML_DOCFILES = manual.html $(CHUNKED_DOCFILES)\n\nBUILT_DISTFILES = stamp-doc-xml stamp-doc-chunked manual.txt $(HTML_DOCFILES)\n\nsrcdir_DOCFILES = PGP-Notes.txt applying-patches.txt\t\\\n\tdevel-notes.txt patch-notes.txt smime-notes.txt\n\ntopsrcdir_DOCFILES = COPYRIGHT GPL INSTALL ChangeLog\t\\\n\tREADME NEWS TODO README.SECURITY README.SSL \n\nall: makedoc-all\n\nmakedoc-all: mutt.1 smime_keys.1 muttrc.man manual.html stamp-doc-rc stamp-doc-chunked manual.txt pgpewrap.1 pgpring.1\n\ninstall-data-local: makedoc-all instdoc\n\t$(MKDIR_P) $(DESTDIR)$(mandir)/man1\n\t$(MKDIR_P) $(DESTDIR)$(mandir)/man5\n\t$(MKDIR_P) $(DESTDIR)$(sysconfdir)\n\t./instdoc mutt.1 $(DESTDIR)$(mandir)/man1/mutt.1\n\t./instdoc smime_keys.1 $(DESTDIR)$(mandir)/man1/smime_keys.1\n\t./instdoc pgpewrap.1 $(DESTDIR)$(mandir)/man1/pgpewrap.1\n\t./instdoc pgpring.1 $(DESTDIR)$(mandir)/man1/pgpring.1\n\t./instdoc $(srcdir)/muttbug.man $(DESTDIR)$(mandir)/man1/flea.1\n\t./instdoc $(srcdir)/muttbug.man $(DESTDIR)$(mandir)/man1/muttbug.1\n\ttest x$(DOTLOCK_TARGET) = x || ./instdoc $(srcdir)/dotlock.man \\\n\t\t$(DESTDIR)$(mandir)/man1/mutt_dotlock.1\n\t./instdoc muttrc.man $(DESTDIR)$(mandir)/man5/muttrc.5\n\t./instdoc $(srcdir)/mbox.man $(DESTDIR)$(mandir)/man5/mbox.5\n\t./instdoc $(srcdir)/mmdf.man $(DESTDIR)$(mandir)/man5/mmdf.5\n\t$(MKDIR_P) $(DESTDIR)$(docdir)\n\tfor f in $(topsrcdir_DOCFILES) ; do \\\n\t\t$(INSTALL) -m 644 $(top_srcdir)/$$f $(DESTDIR)$(docdir) ; \\\n\tdone\n\tfor f in $(srcdir_DOCFILES) ; do \\\n\t\t$(INSTALL) -m 644 $(srcdir)/$$f $(DESTDIR)$(docdir) ; \\\n\tdone\n\t-$(INSTALL) -m 644 manual.txt $(DESTDIR)$(docdir)\n\t-for f in $(HTML_DOCFILES) ; do \\\n\t\t$(INSTALL) -m 644 $$f $(DESTDIR)$(docdir) ; \\\n\tdone\n\t$(INSTALL) -m 644 Muttrc $(DESTDIR)$(sysconfdir)/Muttrc.dist\n\t-if [ -f $(DESTDIR)$(pkgdatadir)/Muttrc ] ; then \\\n\t\tmv $(DESTDIR)$(pkgdatadir)/Muttrc* $(DESTDIR)$(sysconfdir) ; \\\n\telif [ -f $(DESTDIR)$(pkgdatadir)/../Muttrc ] ; then \\\n\t \tmv $(DESTDIR)$(pkgdatadir)/../Muttrc* $(DESTDIR)$(sysconfdir) ; \\\n\telif [ ! -f $(DESTDIR)$(sysconfdir)/Muttrc ] ; then \\\n\t\t$(INSTALL) -m 644 Muttrc $(DESTDIR)$(sysconfdir) ; \\\n\tfi\n\nuninstall-local:\n\tfor f in mutt.1 mutt_dotlock.1 flea.1 muttbug.1 smime_keys.1 pgpewrap.1 pgpring.1; do \\\n\t\trm -f $(DESTDIR)$(mandir)/man1/$$f ; \\\n\tdone\n\tfor f in muttrc.5 mbox.5 mmdf.5 ; do \\\n\t\trm -f $(DESTDIR)$(mandir)/man5/$$f ; \\\n\tdone\n\tfor f in $(srcdir_DOCFILES) $(topsrcdir_DOCFILES) $(HTML_DOCFILES) ; \\\n\tdo \\\n\t\trm -f $(DESTDIR)$(docdir)/$$f ; \\\n\tdone\n\t-rm -f $(DESTDIR)$(docdir)/manual.txt\n\tfor i in Muttrc ; do \\\n\t  if cmp -s $(DESTDIR)$(sysconfdir)/$$i.dist $(DESTDIR)$(sysconfdir)/$$i ; then \\\n\t\trm $(DESTDIR)$(sysconfdir)/$$i ; \\\n\t  fi ; \\\n\t  rm $(DESTDIR)$(sysconfdir)/$${i}.dist ; \\\n\tdone\n\ncheck:\nmanual.txt: manual.html\n\t-LC_ALL=C lynx -dump -nolist -with_backspaces -display_charset=us-ascii manual.html > $@ || \\\n\tLC_ALL=C w3m -dump manual.html > $@ || \\\n\tLC_ALL=C elinks -dump -no-numbering -no-references manual.html | sed -e 's,\\\\001, ,g' > $@\n\nMuttrc: stamp-doc-rc\n\nstamp-doc-rc: $(top_srcdir)/init.h makedoc$(EXEEXT) $(srcdir)/Muttrc.head\n\t-rm -f Muttrc stamp-doc-rc\n\tsed -e 's,[@]docdir[@],$(docdir),' $(srcdir)/Muttrc.head > Muttrc\n\t$(CPP) $(AM_CPPFLAGS) $(DEFS) $(CPPFLAGS) -D_MAKEDOC -C \\\n\t  $(top_srcdir)/init.h | ./makedoc$(EXEEXT) -c >> Muttrc\n\ttouch stamp-doc-rc\n\nmanual.html: $(srcdir)/html.xsl $(srcdir)/mutt.xsl stamp-doc-xml $(srcdir)/mutt.css\n\t-xsltproc --nonet -o $@ $(srcdir)/html.xsl manual.xml\n\nstamp-doc-chunked: $(srcdir)/chunk.xsl $(srcdir)/mutt.xsl stamp-doc-xml $(srcdir)/mutt.css\n\t-xsltproc --nonet $(srcdir)/chunk.xsl manual.xml\n\ttouch stamp-doc-chunked\n\n$(CHUNKED_DOCFILES): stamp-doc-chunked\n\nmanual.pdf: manual.tex\n\t-if test -f manual.tex; then pdfjadetex manual.tex; fi\n\nmanual.tex: stamp-doc-xml\n\t-if test -n \"$(DSLROOT)\"; then \\\n\t  openjade -t tex -D $(DSLROOT) -d print/docbook.dsl dtds/decls/xml.dcl manual.xml; \\\n\tfi\n\nvalidate: stamp-doc-xml\n\txmllint --noout --noblanks --postvalid manual.xml\n\nspellcheck:\n\t-aspell -d american --mode=sgml  --encoding=utf-8 -p $(srcdir)/mutt.pwl check manual.xml.head\n\t-aspell -d american --mode=nroff --encoding=utf-8 -p $(srcdir)/mutt.pwl check muttrc.man.head\n\t-aspell -d american --mode=ccpp  --encoding=utf-8 -p $(srcdir)/mutt.pwl check $(top_srcdir)/init.h\n\nsortcheck: manual.xml\n\tsed -n -e '1,/^<sect1 id=\"variables\">/d' -e '1,/^<sect1 id=\"functions\">/s/<sect2 id=\"\\([^\"]*\\)\">/\\1/p' < manual.xml > vars.tmp.1\n\tsort < vars.tmp.1 > vars.tmp.2\n\tcmp -s vars.tmp.1 vars.tmp.2 || diff -u vars.tmp.1 vars.tmp.2 | less\n\trm -rf vars.tmp.1 vars.tmp.2\n\nclean-local:\n\trm -f *~ *.html *.orig *.rej  stamp-doc-* *.ps mutt.1 smime_keys.1 muttrc.man pgpewrap.1 pgpring.1\n\trm -f *.aux *.log *.tex *.out\n\nDISTCLEANFILES=manual.txt manual.html manual.xml manual.pdf html \\\n\t       instdoc Muttrc\n\ninstdoc: instdoc.sh\n\tcat instdoc.sh > instdoc\n\tchmod a+x instdoc\n\nupdate-doc: stamp-doc-xml stamp-doc-chunked stamp-doc-rc manual.txt manual.html\n\nmuttrc.man: makedoc$(EXEEXT) $(top_srcdir)/init.h muttrc.man.head muttrc.man.tail\n\t$(MAKEDOC_CPP) $(top_srcdir)/init.h | ./makedoc$(EXEEXT) -m | \t    \\\n\t\tcat $(srcdir)/muttrc.man.head - $(srcdir)/muttrc.man.tail\\\n\t\t> muttrc.man\n\nEDIT = sed -e 's,@sysconfdir\\@,$(sysconfdir),g' \\\n\t-e 's,@bindir\\@,$(bindir),g' \\\n\t-e 's,@docdir\\@,$(docdir),g'\n\nmutt.1: $(srcdir)/mutt.man\n\t$(EDIT) $(srcdir)/mutt.man > $@\n\npgpewrap.1: $(srcdir)/pgpewrap.man\n\t$(EDIT) $(srcdir)/pgpewrap.man > $@\n\npgpring.1: $(srcdir)/pgpring.man\n\t$(EDIT) $(srcdir)/pgpring.man > $@\n\nsmime_keys.1: $(srcdir)/smime_keys.man\n\t$(EDIT) $(srcdir)/smime_keys.man > $@\n\nstamp-doc-xml: makedoc$(EXEEXT) $(top_srcdir)/init.h \\\n               manual.xml.head $(top_srcdir)/functions.h $(top_srcdir)/OPS* manual.xml.tail \\\n               $(srcdir)/gen-map-doc $(top_srcdir)/VERSION $(top_srcdir)/ChangeLog\n\t( date=`head -n 1 $(top_srcdir)/ChangeLog | LC_ALL=C cut -d ' ' -f 1` && \\\n\t  sed -e \"s/@VERSION\\@/`cat $(top_srcdir)/VERSION` ($$date)/\" $(srcdir)/manual.xml.head && \\\n\t  $(MAKEDOC_CPP) $(top_srcdir)/init.h | ./makedoc$(EXEEXT) -s && \\\n\t  $(MAKEDOC_CPP) $(top_srcdir)/functions.h | \\\n\t    perl $(srcdir)/gen-map-doc $(srcdir)/manual.xml.tail $(top_srcdir)/OPS* \\\n\t) > manual.xml\n\ttouch stamp-doc-xml\n"
  },
  {
    "path": "doc/Muttrc.head",
    "content": "#\n# System configuration file for Mutt\n#\n\n# Default list of header fields to weed when displaying.\n# Ignore all lines by default...\nignore *\n\n# ... then allow these through.\nunignore from: subject to cc date x-mailer x-url user-agent\n\n# Display the fields in this order\nhdr_order date from to cc subject\n\n# imitate the old search-body function\nmacro index \\eb \"<search>~b \" \"search in message bodies\"\n\n# simulate the old url menu\nmacro index,pager,attach,compose \\cb \"\\\n<enter-command> set my_pipe_decode=\\$pipe_decode pipe_decode<Enter>\\\n<pipe-message> urlview<Enter>\\\n<enter-command> set pipe_decode=\\$my_pipe_decode; unset my_pipe_decode<Enter>\" \\\n\"call urlview to extract URLs out of a message\"\n\n# Show documentation when pressing F1\nmacro generic,pager <F1> \"<shell-escape> less @docdir@/manual.txt<Enter>\" \"show Mutt documentation\"\n\n# show the incoming mailboxes list (just like \"mutt -y\") and back when pressing \"y\"\nmacro index,pager y \"<change-folder>?<toggle-mailboxes>\" \"show incoming mailboxes list\"\nbind browser y exit\n\n# If Mutt is unable to determine your site's domain name correctly, you can\n# set the default here.\n#\n# set hostname=cs.hmc.edu\n\n# If your sendmail supports the -B8BITMIME flag, enable the following\n#\n# set use_8bitmime\n\n# Use mime.types to look up handlers for application/octet-stream. Can\n# be undone with unmime_lookup.\nmime_lookup application/octet-stream\n\n##\n## *** DEFAULT SETTINGS FOR THE ATTACHMENTS PATCH ***\n##\n\n##\n## Please see the manual (section \"attachments\")  for detailed\n## documentation of the \"attachments\" command.\n##\n## Removing a pattern from a list removes that pattern literally. It\n## does not remove any type matching the pattern.\n##\n##  attachments   +A */.*\n##  attachments   +A image/jpeg\n##  unattachments +A */.*\n##\n## This leaves \"attached\" image/jpeg files on the allowed attachments\n## list. It does not remove all items, as you might expect, because the\n## second */.* is not a matching expression at this time.\n##\n## Remember: \"unattachments\" only undoes what \"attachments\" has done!\n## It does not trigger any matching on actual messages.\n\n## Qualify any MIME part with an \"attachment\" disposition, EXCEPT for\n## text/x-vcard and application/pgp parts. (PGP parts are already known\n## to mutt, and can be searched for with ~g, ~G, and ~k.)\n##\n## I've added x-pkcs7 to this, since it functions (for S/MIME)\n## analogously to PGP signature attachments. S/MIME isn't supported\n## in a stock mutt build, but we can still treat it specially here.\n##\nattachments   +A */.*\nattachments   -A text/x-vcard application/pgp.*\nattachments   -A application/x-pkcs7-.*\n\n## Discount all MIME parts with an \"inline\" disposition, unless they're\n## text/plain. (Why inline a text/plain part unless it's external to the\n## message flow?)\n##\nattachments   +I text/plain\n  \n## These two lines make Mutt qualify MIME containers.  (So, for example,\n## a message/rfc822 forward will count as an attachment.)  The first\n## line is unnecessary if you already have \"attach-allow */.*\", of\n## course.  These are off by default!  The MIME elements contained\n## within a message/* or multipart/* are still examined, even if the\n## containers themselves don't qualify.\n##\n#attachments  +A message/.* multipart/.*\n#attachments  +I message/.* multipart/.*\n\n## You probably don't really care to know about deleted attachments.\nattachments   -A message/external-body\nattachments   -I message/external-body\n\n##\n## More settings\n##\n\n"
  },
  {
    "path": "doc/PGP-Notes.txt",
    "content": "$Id$\n\n\t\t     USING PGP FROM WITHIN MUTT\n\n\nWARNING: The configuration interface has completely changed as of\n         0.96.3!\n\n\n\n\t\t\t    USERS' GUIDE\n\n\nHow do I use mutt with PGP, PGP5, or GnuPG?\n-------------------------------------------\n\nGo to the contrib subdirectory of the source tree.  You'll find\nthree files there, pgp2.rc, pgp5.rc, and gpg.rc.  These files\ncontain ready-to-use configurations for using mutt with pgp2, pgp5,\nand gpg.\n\nInclude one of these files with your ~/.muttrc, and things should\nwork out fine.\n\nYou may wish to verify that all paths and  the language parameters\ngiven to the PGP binaries match your needs.\n\n\n\nFrequently Asked Questions and Tips\n-----------------------------------\n\nQ: \"People are sending PGP messages which mutt doesn't\n    recognize.  What can I do?\"\n\nThe new way is to leave headers alone and use mutt's\ncheck-traditional-pgp function, which can detect PGP messages at\nrun-time, and adjust content-types.\n\nThe old way is to configure your mail filter so it fixes headers:\n\nAdd the following lines to your ~/.procmailrc (you are\nusing procmail, aren't you?):\n\n\t\t   ------------------------------\n\n##\n## PGP\n##\n  \n:0\n* !^Content-Type: message/\n* !^Content-Type: multipart/\n* !^Content-Type: application/pgp\n{\n        :0 fBw\n        * ^-----BEGIN PGP MESSAGE-----\n        * ^-----END PGP MESSAGE-----\n        | formail \\\n            -i \"Content-Type: application/pgp; format=text; x-action=encrypt\"\n\n        :0 fBw\n        * ^-----BEGIN PGP SIGNED MESSAGE-----\n        * ^-----BEGIN PGP SIGNATURE-----\n        * ^-----END PGP SIGNATURE-----\n        | formail \\\n            -i \"Content-Type: application/pgp; format=text; x-action=sign\"\n}\n\n\n\t\t   ------------------------------\n\nFor users of maildrop, \"Mark Weinem\"\n<mark.weinem@unidui.uni-duisburg.de> suggests the following recipe:\n\n\t\t   ------------------------------\n\nBPGPM=\"-----BEGIN PGP MESSAGE-----\"\nEPGPM=\"-----END PGP MESSAGE-----\"\nBPGPS=\"-----BEGIN PGP SIGNATURE-----\"\nEPGPS=\"-----END PGP SIGNATURE-----\"\n\nif (!/^Content-Type: message/ && !/^Content-Type: multipart/ \\\n\t&& !/^Content-Type: application\\/pgp/)\n{\t\nif (/^$BPGPM/:b && /^$EPGPM/:b)\n\txfilter \"reformail -A 'Content-Type: application/pgp; format=text; \\\n\t\tx-action=encrypt'\"\n\nif (/^$BPGPS/:b && /^$EPGPS/:b)\n\txfilter \"reformail -A 'Content-Type: application/pgp; format=text; \\\n\t\tx-action=sign'\"\n}\n\n\t\t   ------------------------------\n\n\n\nQ: \"I don't like that PGP/MIME stuff, but want to use the\n    old way of PGP-signing my mails.  Can't you include\n    that with mutt?\"\n\nThe old answer to this question used to be this:\n\n  No.  Application/pgp is not really suited to a world with MIME,\n  non-textual body parts and similar things.  Anyway, if you really\n  want to generate these old-style attachments, include the\n  following macro in your ~/.muttrc (line breaks for readability,\n  this is actually one line):\n\n  macro compose S \"Fpgp +verbose=0 -fast\n  \t+clearsig=on\\ny^T^Uapplication/pgp; format=text;\n\tx-action=sign\\n\"\n\n\nThere's a new answer, though: Set the $pgp_create_traditional\nconfiguration variable (it's a quad-option) to something different\nfrom \"no\" (that's the default).  Mutt will then try to use\napplication/pgp wherever it makes sense.  In particular, it does\nnot make any sense with multiparts, or non-ASCII or non-text bodies.\nIn all other cases, PGP/MIME is used unconditionally.\n\nNote that application/pgp is still strongly deprecated.\n\n\n\nQ: \"I don't like all the ^Gs and various other verbosity\n    PGP is presenting me with.\"\n\nRoland Rosenfeld <roland@spinnaker.rhein.de> has found a quite\nelegant solution to this problem: PGP has some pretty good foreign\nlanguage support.  So we just introduce a language called \"mutt\"\nwhich contains empty strings for the messages we don't want to see.\nTo use this, copy either language.txt or language50.txt (depending\non what PGP version you are using) to your $PGPPATH.  Make sure the\nPGP command formats pass \"+language=pgp\" to all the PGP binaries\n(but not to pgpring!).\n\nFor PGP 2.6, a German version called \"muttde\" is available\nas well.\n\n\nQ: \"My PGP signatures are being invalidated.  BTW, I'm using Courier\n    MTA.\"\n\nThe author of the Courier MTA believes that the standard specifying\nmultipart/signed is broken.  For that reason, he has chosen to\nimplement his MTA in a way which does not assure that\nmultipart/signed body parts are left untouched.\n\nWe suggest that you abandon courier and change to sendmail, postfix,\nor exim.\n\n\n\n\t\t\t     BACKGROUND\n\n\nAuxiliary Programs\n------------------\n\nMutt needs two auxiliary programs for its PGP support: pgpewrap and\npgpring.\n\n\n1. pgpring\n\npgpring is a key ring dumper.  It extracts information from PGP's\nbinary key ring and emits it in an (almost) readable output format\nunderstood by mutt's key selection routines.  This output format\nmimics the one used by the GNU Privacy Guard (GPG).\n\nYou'll need this program with PGP 2 and PGP 5.\n\nCommand line options:\n\n\t-k <key ring>\tDump the contents of the key ring specified\n\t\t\tas an argument to -k.\n\t\t\t\n\t-2, -5\t \tUse the default key ring for PGP 2 or 5, \n\t\t\trespectively.\n\t\t\t\n\t-s\t\tDump the secret key ring.\n\n\t-S\t\tDump signatures.\n\n\t-f\t\tDump fingerprints.\n\n\n\n2. pgpewrap\n\nThis is a little C program which does some command line munging: The\nfirst argument is a command to be executed.  When pgpewrap\nencounters a \"--\" (dash-dash) argument, it will interpret the next\nargument as a prefix which is put in front of all following\narguments.\n\nExample:\n\n\tpgpewrap pgpe file -- -r a b c\n\nwill execute:\n\n\tpgpe file -r a -r b -r c\n\nThis script is needed with PGP 5 and with GPG, since their command\nline interfaces can't be properly served by mutt's format mechanism.\n\n\n\nThe Configuration Interface\n---------------------------\n\nAs usual within mutt, the configuration interface for the PGP\ncommands relies on printf-like formats.  For all PGP commands, the\nfollowing %-sequences are defined.\n\n  %p\tThe empty string when no passphrase is needed,\n  \tthe string \"PGPPASSFD=0\" if one is needed.\n\n\tThis is mostly used in conditional % sequences.\n\n  %f\tMost PGP commands operate on a single file or a file\n  \tcontaining a message.  %f expands to this file's name.\n\n  %s\tWhen verifying signatures, there is another temporary file\n\tcontaining the detached signature.  %s expands to this\n\tfile's name.\n\n  %a\tIn \"signing\" contexts, this expands to the value of the\n\tconfiguration variable $pgp_sign_as.  You probably need to\n\tuse this within a conditional % sequence.\n\n  %r\tIn many contexts, mutt passes key IDs to pgp.  %r expands to\n\ta list of key IDs.\n\nThe following command formats are defined:\n\n  $pgp_decode_command\tDecode application/pgp messages.  This\n  \t\t\tcommand operates with and without pass phrases.\n\t\t\t\n  $pgp_verify_command\tVerify a PGP/MIME signature.\n\n  $pgp_decrypt_command\tDecrypt a PGP/MIME encrypted MIME body.\n   \t\t\tThis command always gets a pass phrase.\n\n  $pgp_sign_command\tSign a PGP/MIME body.  This command always\n  \t\t\tgets a pass phrase.\n\n\n  $pgp_encrypt_sign_command Encrypt and sign a MIME body.  This\n  \t\t\tcommand always gets a pass phrase.\n\t\t\t\n  $pgp_encrypt_only_command Encrypt a MIME body, but don't sign it.\n  \n  $pgp_import_command\tImport PGP keys from a file.\n  \n  $pgp_export_command\tExport PGP keys to a file.  The output must\n  \t\t\tbe ASCII armored.\n\t\t\t\n  $pgp_verify_key_command Check a public key. This is used from the\n  \t\t\tkey selection menu.\n\n  $pgp_list_secring_command List the secret keys matching some hints\n  \t\t\tgiven in %r.\n\n  $pgp_list_pubring_command List the public keys matching some hints\n  \t\t\tgiven in %r.\n\nThe passphrase is always passed on stdin; all commands must send\ntheir output to stdout and stderr.\n\n\n\n"
  },
  {
    "path": "doc/TODO",
    "content": "Documentation TODO in no particular order grouped by style and content.\n\nIt would be nice to get some of these done for 1.6.\n\nStyle/Technical\n---------------\n\n* Re-check complete manual for consistency. The same things need to be\n  consistently marked up, e.g. an item either always as <literal/> or\n  always <emphasis/> (decide clearly which to use for what), make sure\n  all option refs are links, things are consistently quoted.\n  E.g. it has:\n\n    If the filename begins with a tilde (``&tilde;'')\n\n  and\n\n    If the filename ends with a vertical bar (&verbar;)\n\n  We need to choose either style and use it.\n\n* Think about some way of templating to a) help improve consistency\n  (i.e. some sort of macro to refer to key, options, functions, etc.)\n  and b) reduce typing overhead.\n\n    <link linkend=\"pipe-split\">&dollar;pipe&lowbar;split</link>\n\n  is neither fun to read nor to write. This would give us lots of\n  options to improve it (e.g. an automated index). We depend on\n  perl already to build docs, think about/look for simple perl\n  templating engine.\n\n* Find a way (XSLT?) to trim the TOC for the option reference; it's\n  ugly but we probably want to keep the TOC depth as-is for other\n  sections.\n\nContent\n-------\n\n* Some sections maybe should be better grouped by topic, instead of\n  one section per task (e.g. hooks should be grouped under a section\n  'hooks' in the config chapter).\n\n* Talk a lot more about character sets and encodings.\n"
  },
  {
    "path": "doc/applying-patches.txt",
    "content": "Subject: Applying patches\nFrom: Thomas Roessler <roessler@does-not-exist.org>\nDate: Thu,  8 Oct 1998 14:32:53 +0200\n\nWhen applying patches to mutt, you may encounter strange error\nmessages spit out by programs like aclocal, autoconf, automake.\nThis will happen if your machine has a partial build environment\n(see devel-notes.txt for a description of what's needed for mutt\ndevelopment): Mutt has detected changes to some of the \"meta source\nfiles\" like configure.in and tries to rebuild other files such as\naclocal.m4 or Makefile.in based on these changes; this will fail if\nyour build environment is not complete.\n\nIf you encounter this kind of problem, touching the following files\nafter applying patches may help:\n\n\tMakefile.in\n\tconfig.h.in\n\tconfigure\n\taclocal.m4\n\nAfter doing so, simply type \"make\"; the dependencies should take\ncare of the necessary other re-building (this may quite well include\na re-running of ./configure).\n$Id$\n"
  },
  {
    "path": "doc/chunk.xsl",
    "content": "<?xml version=\"1.0\"?>\n<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">\n  <xsl:import href=\"http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl\"/>\n  <xsl:import href=\"mutt.xsl\"/>\n  <xsl:param name=\"use.id.as.filename\" select=\"1\"/>\n  <xsl:param name=\"chunk.section.depth\" select=\"0\"/>\n</xsl:stylesheet>\n"
  },
  {
    "path": "doc/devel-notes.txt",
    "content": "Required tools\n--------------\n\nIf you are planning to hack on mutt, please subscribe to the\nmutt-dev mailing list (mutt-dev@mutt.org, contact\nmajordomo@mutt.org).  Announcements about recent development\nversions go to that mailing list, as go technical discussions and\npatches.\n\nPatches should, if possible, be made using Mercurial against\nthe latest revision.\n\nYou'll need several GNU development utilities for working on mutt:\n\n- autoconf (versions less than 2.59 are unsupported)\n  (this package includes autoheader and autoreconf)\n\n  If the build fails during any of the auto* stages, first of all try if\n  re-running the ./prepare script fixes things.  Remember to give the\n  same options you passed to it or to the configure it generated the\n  last time, you can query them with:\n    ./config.status --version\n\n- automake (versions less than 1.9 are not officially supported)\n  (this package includes aclocal)\n\n  Note that you MUST re-run ./prepare (with the original arguments)\n  if you change the automake version between builds for the same source\n  directory.\n\n- GNU make may be needed for the dependency tricks\n\n- The internationalization (i18n) stuff requires GNU gettext.\n  See intl/VERSION for the version we are currently relying on.\n  Please note that using gettext-0.10 will most probably not work -\n  get the latest test release from alpha.gnu.org, it's the recommended\n  version of gettext anyway.\n\n  If you are experiencing problems with unknown \"dcgettext\" symbols,\n  the autoconf/automake macros from your gettext package are broken.\n  Apply the following patch to that macro file (usually found under\n  /usr/share/aclocal/gettext.m4):\n\n--- gettext.m4.bak\tThu Jul  2 18:46:08 1998\n+++ gettext.m4\tMon Oct  5 23:32:54 1998\n@@ -46,12 +46,13 @@\n \n \t   if test \"$gt_cv_func_gettext_libc\" != \"yes\"; then\n \t     AC_CHECK_LIB(intl, bindtextdomain,\n-\t       [AC_CACHE_CHECK([for gettext in libintl],\n-\t\t gt_cv_func_gettext_libintl,\n-\t\t [AC_CHECK_LIB(intl, gettext,\n-\t\t  gt_cv_func_gettext_libintl=yes,\n-\t\t  gt_cv_func_gettext_libintl=no)],\n+\t       [AC_CHECK_LIB(intl, gettext,\n+\t         gt_cv_func_gettext_libintl=yes,\n \t\t gt_cv_func_gettext_libintl=no)])\n+\t   fi\n+\n+\t   if test \"$gt_cv_func_gettext_libintl\" = \"yes\" ; then\n+\t     LIBS=\"-lintl $LIBS\"\n \t   fi\n \n \t   if test \"$gt_cv_func_gettext_libc\" = \"yes\" \\\n\n\nGenerating Mutt Documentation From Source\n-----------------------------------------\n\nTo translate Mutt's Docbook XML documentation into HTML (and then text),\nyou'll need one tool and two sets of data which you may need to download\nand install.  The tool is xsltproc (part of the libxslt package), and\nit's a command-line program for performing XSL transformations on XML\ndocuments.  The data sets are the Docbook XML and Docbook XSL libraries.\n\nWhenever your operating system provides packages or pkgsrc or ports of\nthese, you should install them. Some systems, for instance SUSE Linux\nand FreeBSD's ports system, automatically set up a registry of installed\nXML/XSL and SGML catalogs so that the user does not need to care about\nwhat to install where, how to set environment variables, and so on.\n\nIf your system does not provide these libraries and data sets,\nyou can download them from:\n\n  . xsltproc\n    http://xmlsoft.org/\n    ftp://xmlsoft.org/libxslt/libxslt-1.1.17.tar.gz\n\n  . docbook-xml-4.2\n    http://www.docbook.org/\n    http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip\n\n  . docbook-xsl-1.70.1\n    http://docbook.sourceforge.net/\n    http://prdownloads.sourceforge.net/docbook/docbook-xsl-1.70.1.zip\n\nFirst, if you don't already have xsltproc, build and install libxslt,\nwhich will provide xsltproc, too.\n\nNext, obtain and unpack the two docbook archives.  You can unpack these\nanywhere that you want to have them installed -- there's no installation\nprocedure other than unarchival.  On my Solaris system, I install\npackages under /opt/pkgs/packagename-version, so I unpacked these ZIP\narchives to /opt/pkgs/docbook-xml-4.2 and /opt/pkgs/docbook-xsl-1.70.1.\n\nNow you need to create (and export) an environment variable to process\nthe manuals.  The environment variable will contain a space-separated\nlist of \"catalog\" files for the two docbook archives, so substitute\nthe path where you unpacked them below:\n\n    sh$ XML_CATALOG_FILES=\"/path/to/docbook-xml-4.2/catalog.xml /path/to/docbook-xsl-1.70.1/catalog.xml\"; export XML_CATALOG_FILES\nor\n    csh$ setenv XML_CATALOG_FILES \"/path/to/docbook-xml-4.2/catalog.xml /path/to/docbook-xsl-1.70.1/catalog.xml\"\n\nOnce all these are installed and XML_CATALOG_FILES is set, you should be\nable to generate manual.html with a simple \"make\" -- all as a part of\nthe mutt compilation.\n\nThe Makefile depends upon lynx (or any other text-mode web browser)\nto turn the HTML into text, so if that fails you may need to install\nsomething else.\n\n\nGetting started from Mercurial\n------------------------------\n\nThe official Mercurial repository is located at:\nhttp://dev.mutt.org/hg/mutt/. You can get a fresh clone via:\n\n  $ hg clone http://dev.mutt.org/hg/mutt/ mutt\n\nOnce you've checked out a copy of the source, or changed your\nautomake version, you'll need to run the script called './prepare' that\nis in the root directory.  The script does all the automake/autoconf\nmagic that needs to be done with a fresh checkout.\n\n\nContributing patches\n--------------------\n\nAs Mercurial is a distributed version control system, it's easy to\ncommit changes locally without impacting anybody else's work, starting\nover again, or turn several commit and backouts into a new single patch\nready for submission.\n\nThese so-called \"changesets\" (a diff with a reasonable message\ndescribing the change) can be exported using Mercurial through the\n\"patchbomb\" extension shipped with Mercurial (please see the hg\ndocumentation for details) which also is the preferred format for\nsubmission to the mutt-dev mailing list for discussion and review.\n\nIn order to ease later bisecting in case of bugs and code history,\nchanges should be grouped logically, feature by feature or bugfix by\nbugfix. Especially a single patch fixing several problems at once\nshould be avoided.\n\nBefore submitting patches, please make sure the check_sec.sh script\nin the top-level source directory reports no errors/warnings.\n\nA word about warnings\n---------------------\n\nMutt's default build process sets some pretty restrictive compiler\nflags which may lead to lots of warnings.  Generally, warnings are\nsomething which should be eliminated.\n\nNevertheless, the code in intl/ is said to generate some warnings with\nthe compiler settings we usually rely upon.  This code is not\nmaintained by the mutt developers, so please redirect any comments to\nthe GNU gettext library's developers.\n\n\nStyle Guide\n-----------\n\n- global functions should have the prefix \"mutt_\".  All\n  other functions should be declared \"static\".\n\n- avoid global variables where possible.  If one is required,\n  try to contain it to a single source file and declare it\n  \"static\".  Global variables should have the first letter of\n  each word capitalized, and no underscores should be used\n  (e.g., MailGid, LastFolder, MailDir).\n\n- re-use code as much as possible.  There are a lot of\n  \"library\" functions. One of the biggest causes of bloat\n  in ELM and PINE is the tremendous duplication of code...\n  Help keep Mutt small!\n\n- when adding new options, make the old behavior the\n  default.\n\n- try to keep mutt as portable as possible.\n\n- special characters should be in utf-8.  If you find remnants\n  from the times when this was an iso-8859-1 source code tree,\n  please feel free to fix them.\n\n- prefix translator comments with L10N:\n  /* L10N: this is a translator comment */\n  puts(_(\"String to translate));\n\nDocumentation\n-------------\n\nPlease document your changes.  Note that there are several places\nwhere you may have to add documentation:\n\n- doc/manual.xml.{head,tail} contain The Manual.\n\n- doc/muttrc.man.{head,tail} contain an abridged version of The\n  Manual in nroff format (see man(7)), which deals with\n  configuration file commands.\n\n- UPDATING includes short documentation of user-visible\n  changes, i.e., any incompatibilities should go here.\n\nConfiguration _variables_ are documented directly in init.h.   Note\nthat this includes documentation for possibly added format flags!\n\nThe parts of The Manual and the muttrc manual page dealing with\nthese variables, and the global Muttrc, are generated automatically\nfrom that documentation.  To start this process, type \"make\nupdate-doc\" in the top-level source directory.\n\nNote that you may have to update the makedoc utility (makedoc.c)\nwhen adding new data types to init.h.\n\nMore precisely, variable name, type, and default value are directly\nextracted from the initializer for the MuttVars array. Documentation\nis expected in special comments which _follow_ the initializer.\nFor a line to be included with the documentation, it must (after,\npossibly, some white space) begin with either \"/**\" or \"**\".\nAny following white space is ignored. The rest of the line is\nexpected to be plain text, with some formatting instructions roughly\nsimilar to [ntg]roff:\n\n - \\fI switches to italics\n\n - \\fB switches to boldface\n\n - \\fT switches to monospace\n\n - \\fP switches to normal display after \\fI, \\fB or \\fT\n\n - \\(as can be used to represent an asterisk (*).  This is intended\n   to help avoiding character sequences such as /* or */ inside\n   comments.\n\n - \\(rs can be used to represent a backslash (\\).  This is intended\n   to help avoiding problems when trying to represent any of the \\\n   sequences used by makedoc.\n\n - .dl on a line starts a \"definition list\" environment (name taken\n    from HTML) where terms and definitions alternate.\n\n - .dt marks a term in a definition list.\n\n - .dd marks a definition in a definition list.\n\n - .de on a line finishes a definition list environment.\n\n - .ts on a line starts a \"verbose tscreen\" environment (name taken from\n   SGML).  Please try to keep lines inside such an environment\n   short; a length of about 40 characters should be OK.  This is\n   necessary to avoid a really bad-looking muttrc (5) manual page.\n\n - .te on a line finishes this environment.\n\n - .pp on a line starts a paragraph.\n\n - $word will be converted to a reference to word, where appropriate.\n   Note that $$word is possible as well.\n   Use $$$ to get a literal $ without making a reference.\n\n - '. ' in the beginning of a line expands to two space characters.\n   This is used to protect indentations in tables.\n\nDo _not_ use any other SGML or nroff formatting instructions here!\n\n"
  },
  {
    "path": "doc/dotlock.man",
    "content": ".\\\" -*-nroff-*-\n.\\\"\n.\\\"\n.\\\"     Copyright (C) 1996-8 Michael R. Elkins <me@cs.hmc.edu>\n.\\\"\tCopyright (C) 1998-9 Thomas Roessler <roessler@does-not-exist.org>\n.\\\" \n.\\\"     This program is free software; you can redistribute it and/or modify\n.\\\"     it under the terms of the GNU General Public License as published by\n.\\\"     the Free Software Foundation; either version 2 of the License, or\n.\\\"     (at your option) any later version.\n.\\\" \n.\\\"     This program is distributed in the hope that it will be useful,\n.\\\"     but WITHOUT ANY WARRANTY; without even the implied warranty of\n.\\\"     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n.\\\"     GNU General Public License for more details.\n.\\\" \n.\\\"     You should have received a copy of the GNU General Public License\n.\\\"     along with this program; if not, write to the Free Software\n.\\\"     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n.\\\"\n.TH dotlock 1 \"AUGUST 1999\" Unix \"User Manuals\"\n.SH NAME\nmutt_dotlock \\- Lock mail spool files.\n.SH SYNOPSIS\n.PP\n.B mutt_dotlock \n[\\-t|\\-f|\\-u|\\-d] [\\-p] [\\-r \\fIretries\\fP] \\fIfile\\fP\n.SH DESCRIPTION\n.PP\n.B mutt_dotlock\nimplements the traditional mail spool file locking method:\nTo lock \\fIfile\\fP, a file named \\fIfile\\fP.lock is\ncreated. The program operates with group mail privileges\nif necessary.\n.SH OPTIONS\n.PP\n.IP \"-t\"\nJust try.\n.B mutt_dotlock\nwon't actually lock a file, but inform the invoking\nprocess if it's at all possible to lock \\fIfile\\fP.\n.IP \"-f\"\nForce the lock.  If another process holds a lock on\n\\fIfile\\fP longer than a certain amount of time, \n.B mutt_dotlock\nwill break that lock by removing the lockfile.\n.IP \"-u\"\nUnlock.\n.B mutt_dotlock \nwill remove \\fIfile\\fP.lock.\n.IP \"-d\"\nDelete.\n.B mutt_dotlock\nwill lock \\fIfile\\fP, remove it if it has length 0, and afterwards\nremove \\fIfile\\fP.lock.\n.IP \"-p\"\nUse privileges.  If given this option, \n.B mutt_dotlock\nwill operate with group mail privileges when creating and\ndeleting lock files.\n.IP \"-r \\fIretries\\fP\"\nThis command line option tells \n.B mutt_dotlock \nto try locking\n\\fIretries\\fP times before giving up or (if invoked with\nthe \n.B -f\ncommand line option) break a lock.  The default value is 5.\n.B mutt_dotlock\nwaits one second between successive locking attempts.  \n.SH FILES\n.PP\n.IP \"\\fIfile\\fP.lock\"\nThe lock file \n.B mutt_dotlock\ngenerates.\n.SH SEE ALSO\n.PP\n.BR fcntl (2),\n.BR flock (2),\n.BR lockfile (1),\n.BR mutt (1)\n.SH DIAGNOSTICS\n.PP\n.B mutt_dotlock\ngives all diagnostics in its return values:\n.TP\n.B \"0 \\- DL_EX_OK\"\nThe program was successful.\n.TP \n.B \"1 \\- DL_EX_ERROR\"\nAn unspecified error such as bad command line parameters,\nlack of system memory and the like has occurred.\n.TP \n.B \"3 \\- DL_EX_EXIST\"\nThe \nuser wants to lock a file which has been locked by\nanother process already.  If \n.B mutt_dotlock\nis invoked with the\n.B -f \ncommand line option, \n.B mutt_dotlock\nwon't generate this error, but break other processes'\nlocks.\n.TP \n.B \"4 \\- DL_EX_NEED_RPIVS\"\nThis return value only occurs if \n.B mutt_dotlock \nhas been invoked\nwith the \n.B -t\ncommand line option.  It means that\n.B mutt_dotlock\nwill have to use its group mail privileges to lock\n\\fIfile\\fP.\n.TP\n.B \"5 \\- DL_EX_IMPOSSIBLE\"\nThis return value only occurs if\n.B mutt_dotlock\nhas been invoked with the\n.B -t\ncommand line option.  It means that\n.B mutt_dotlock \nis unable to lock \\fIfile\\fP even with group mail\nprivileges.\n.SH NOTES\n.PP\n.B mutt_dotlock\ntries to implement an NFS-safe dotlocking method which was\nborrowed from \n.B lockfile\n(1).  \n.PP\nIf the user can't open \\fIfile\\fP for reading with his\nnormal privileges, \n.B mutt_dotlock \nwill return the\n.B DL_EX_ERROR\nexit value to avoid certain attacks against other users'\nspool files. The code carefully avoids race conditions\nwhen checking permissions; for details of all this see the\ncomments in dotlock.c.\n.SH HISTORY\n.PP\n.B mutt_dotlock\nis part of the Mutt mail user agent package.  It has been\ncreated to avoid running mutt with group mail privileges.\n.SH AUTHOR\nThomas Roessler <roessler@does-not-exist.org>\n"
  },
  {
    "path": "doc/gen-map-doc",
    "content": "#!/usr/bin/perl -w\n\nuse strict;\n\nmy (%OPS, %MAP, %DOC, $map);\n\nmy $xml = shift @ARGV;\n\nopen F, \"cat @ARGV |\" or die \"OPS*: $!\";\nwhile (<F>) {\n  /(\\w+) \"(.+)\"/ or die \"$.: parse error\";\n  $OPS{$1} = $2;\n}\nclose F;\n\nwhile (<STDIN>) {\n  if (/^const struct binding_t Op.*{ \\/\\* map: (.*) \\*\\//) {\n    $map = $1;\n    $DOC{$map} = \"\";\n  }\n  if ($map and /^\\s*\\*\\*\\s*(.*)/) {\n    $DOC{$map} .= \"$1\\n\";\n  }\n  if ($map and /{\\s*\"(.+)\"\\s*,\\s*(\\w+)\\s*,\\s*(?:\"([^\"]+)\"|(\\w+))\\s*}/) {\n    my ($function, $op, $binding) = ($1, $2, $3 || $4);\n    $binding =~ s/&/&amp;/;\n    # for <key>, try CamelCasing into <Key>\n    $binding =~ s/<(.)(.+)>/&lt;\\U$1\\E$2&gt;/;\n    $binding =~ s/</&lt;/;\n    $binding =~ s/>/&gt;/;\n    $binding =~ s/ /&lt;Space&gt;/;\n    $binding =~ s/^\\\\033/Esc /;\n    $binding =~ s/^\\\\010/&lt;Backspace&gt;/;\n    $binding =~ s/^\\\\(0\\d+)$/'^'.chr(64+oct($1))/e;\n    $binding =~ s/^\\\\(0\\d+)(.)/'^'.chr(64+oct($1)) .\" $2\"/e;\n    $binding =~ s/\\\\t/&lt;Tab&gt;/;\n    $binding =~ s/M_ENTER_S/&lt;Return&gt;/;\n    $binding =~ s/NULL//;\n    die \"unknown key $binding\" if $binding =~ /\\\\[^\\\\]|<|>/;\n    die \"unknown OP $op\" unless $OPS{$op};\n    $MAP{$map} .= \"<row><entry><literal>&lt;$function&gt;</literal></entry><entry>$binding</entry><entry>$OPS{$op}</entry></row>\\n\";\n  }\n  if ($map and /^}/) {\n    undef $map;\n  }\n}\n\nopen XML, $xml or die \"$xml: $!\";\nwhile (<XML>) {\n  if (/__print_map\\((.*)\\)/) {\n    my $map = $1;\n    my $maptitle = $1;\n    $maptitle =~ s/^(.)/\\U$1\\E/;\n    unless ($MAP{$map}) {\n      warn \"map $map undefined\";\n      next;\n    }\n    my $title = $map;\n    $title =~ s/(.)(.+)/\\U$1\\E$2/;\n    print <<EOT;\n<sect2 id=\"${map}-map\">\n<title>$maptitle Menu</title>\n$DOC{$map}\n\n<table id=\"tab-${map}-bindings\">\n<title>Default $title Menu Bindings</title>\n<tgroup cols=\"3\">\n<thead>\n<row><entry>Function</entry><entry>Default key</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n$MAP{$map}\n</tbody>\n</tgroup>\n</table>\n\n</sect2>\n\nEOT\n    delete $MAP{$map};\n  } else {\n    print;\n  }\n}\nclose XML;\n\nwarn \"unprinted maps: \". join(\" \", keys %MAP) if %MAP;\n"
  },
  {
    "path": "doc/html.xsl",
    "content": "<?xml version=\"1.0\"?>\n<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">\n  <xsl:import href=\"http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl\"/>\n  <xsl:import href=\"mutt.xsl\"/>\n</xsl:stylesheet>\n"
  },
  {
    "path": "doc/instdoc.sh.in",
    "content": "#!/bin/sh --\n\nprefix=@prefix@\nexec_prefix=@exec_prefix@\nbindir=@bindir@\nlibdir=@libdir@\nmandir=@mandir@\nsrcdir=@srcdir@\ndatarootdir=@datarootdir@\ndocdir=@docdir@\nincludedir=@includedir@\ntop_srcdir=@top_srcdir@\ntop_builddir=..\n\nSOURCE=\"$1\"\nTARGET=\"$2\"\n\n\nrm -f \"$TARGET\"\n\nsed -e \"s;/usr/local/bin/;$bindir/;g\" \t \t\\\n    -e \"s;/usr/local/doc/mutt/;$docdir/;g\" \t\\\n    \"$SOURCE\" > $TARGET\n\nchmod 644 \"$TARGET\"\n"
  },
  {
    "path": "doc/makedoc-defs.h",
    "content": "/* build complete documentation */\n\n#ifdef MAKEDOC_FULL\n# ifndef CRYPT_BACKEND_GPGME\n#  define CRYPT_BACKEND_GPGME\n# endif\n# ifndef USE_IMAP\n#  define USE_IMAP\n# endif\n# ifndef MIXMASTER\n#  define MIXMASTER \"mixmaster\"\n# endif\n# ifndef USE_POP\n#  define USE_POP\n# endif\n# ifndef USE_SMTP\n#  define USE_SMTP\n# endif\n# ifndef USE_SSL_OPENSSL\n#  define USE_SSL_OPENSSL\n# endif\n# ifndef USE_SSL_GNUTLS\n#  define USE_SSL_GNUTLS\n# endif\n# ifndef USE_SSL\n#  define USE_SSL\n# endif\n# ifndef USE_SOCKET\n#  define USE_SOCKET\n# endif\n# ifndef USE_DOTLOCK\n#  define USE_DOTLOCK\n# endif\n# ifndef DL_STANDALONE\n#  define DL_STANDALONE\n# endif\n# ifndef USE_HCACHE\n#  define USE_HCACHE\n# endif\n# ifndef HAVE_DB4\n#  define HAVE_DB4\n# endif\n# ifndef HAVE_GDBM\n#  define HAVE_GDBM\n# endif\n# ifndef HAVE_QDBM\n#  define HAVE_QDBM\n# endif\n# ifndef HAVE_LIBIDN\n#  define HAVE_LIBIDN\n# endif\n# ifndef HAVE_GETADDRINFO\n#  define HAVE_GETADDRINFO\n# endif\n# ifndef USE_SASL\n#  define USE_SASL\n# endif\n#endif\n"
  },
  {
    "path": "doc/makedoc.c",
    "content": "/*\n * Copyright (C) 1999-2000 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/**\n ** This program parses mutt's init.h and generates documentation in\n ** three different formats:\n **\n ** -> a commented muttrc configuration file\n ** -> nroff, suitable for inclusion in a manual page\n ** -> docbook-xml, suitable for inclusion in the \n **    SGML-based manual\n **\n **/\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <ctype.h>\n\n#include <errno.h>\n\n#ifdef HAVE_UNISTD_H\n# include <unistd.h>\n#endif\n\n#ifdef HAVE_GETOPT_H\n# include <getopt.h>\n#endif\n\n#include \"makedoc-defs.h\"\n\n#ifndef HAVE_STRERROR\n#ifndef STDC_HEADERS\nextern int sys_nerr;\nextern char *sys_errlist[];\n#endif\n\n#define strerror(x) ((x) > 0 && (x) < sys_nerr) ? sys_errlist[(x)] : 0\n#endif /* !HAVE_STRERROR */\n\nextern int optind;\n\n#define BUFFSIZE 2048\n\nenum output_formats_t\n{\n  F_CONF, F_MAN, F_SGML, F_NONE\n};\n\n#define D_NL \t\t(1 << 0)\n#define D_EM\t\t(1 << 1)\n#define D_BF\t\t(1 << 2)\n#define D_TAB\t\t(1 << 3)\n#define D_NP\t\t(1 << 4)\n#define D_INIT\t\t(1 << 5)\n#define D_DL\t\t(1 << 6)\n#define D_DT\t\t(1 << 7)\n#define D_DD            (1 << 8)\n#define D_PA            (1 << 9)\n#define D_IL\t\t(1 << 10)\n#define D_TT            (1 << 11)\n\nenum\n{\n  SP_START_EM,\n  SP_START_BF,\n  SP_START_TT,\n  SP_END_FT,\n  SP_NEWLINE,\n  SP_NEWPAR,\n  SP_END_PAR,\n  SP_STR,\n  SP_START_TAB,\n  SP_END_TAB,\n  SP_START_DL,\n  SP_DT,\n  SP_DD,\n  SP_END_DD,\n  SP_END_DL,\n  SP_START_IL,\n  SP_END_IL,\n  SP_END_SECT,\n  SP_REFER\n};\n\nenum output_formats_t OutputFormat = F_NONE;\nchar *Progname;\nshort Debug = 0;\n\nstatic char *get_token (char *, size_t, char *);\nstatic char *skip_ws (char *);\nstatic const char *type2human (int);\nstatic int buff2type (const char *);\nstatic int flush_doc (int, FILE *);\nstatic int handle_docline (char *, FILE *, int);\nstatic int print_it (int, char *, FILE *, int);\nstatic void print_confline (const char *, int, const char *, FILE *);\nstatic void handle_confline (char *, FILE *);\nstatic void makedoc (FILE *, FILE *);\nstatic void pretty_default (char *, size_t, const char *, int);\nstatic int sgml_fputc (int, FILE *);\nstatic int sgml_fputs (const char *, FILE *);\nstatic int sgml_id_fputs (const char *, FILE *);\n\nint main (int argc, char *argv[])\n{\n  int c;\n  FILE *f;\n\n  if ((Progname = strrchr (argv[0], '/')))\n    Progname++;\n  else\n    Progname = argv[0];\n  \n  while ((c = getopt (argc, argv, \"cmsd\")) != EOF)\n  {\n    switch (c)\n    {\n      case 'c': OutputFormat = F_CONF; break;\n      case 'm': OutputFormat = F_MAN; break;\n      case 's': OutputFormat = F_SGML; break;\n      case 'd': Debug++; break;\n      default: \n      {\n\tfprintf (stderr, \"%s: bad command line parameter.\\n\", Progname);\n\texit (1);\n      }\n    }\n  }\n\n  if (optind != argc)\n  {\n    if ((f = fopen (argv[optind], \"r\")) == NULL)\n    {\n      fprintf (stderr, \"%s: Can't open %s (%s).\\n\",\n\t       Progname, argv[optind], strerror (errno));\n      exit (1);\n    }\n  }\n  else \n    f = stdin;\n\n  switch (OutputFormat)\n  {\n    case F_CONF: \n    case F_MAN:  \n    case F_SGML: makedoc (f, stdout); break;\n    default:\n    {\n      fprintf (stderr, \"%s: No output format specified.\\n\",\n\t       Progname);\n      exit (1);\n    }\n  }\n  \n  if (f != stdin)\n    fclose (f);\n\n  return 0;\n}\n\n\nstatic void makedoc (FILE *in, FILE *out)\n{\n  char buffer[BUFFSIZE];\n  char token[BUFFSIZE];\n  char *p;\n  int active = 0;\n  int line = 0;\n  int docstat = D_INIT;\n\n  while ((fgets (buffer, sizeof (buffer), in)))\n  {\n    line++;\n    if ((p = strchr (buffer, '\\n')) == NULL)\n    {\n      fprintf (stderr, \"%s: Line %d too long.  Ask a wizard to enlarge\\n\"\n\t               \"%s: my buffer size.\\n\", Progname, line, Progname);\n      exit (1);\n    }\n    else\n      *p = '\\0';\n\n    if (!(p = get_token (token, sizeof (token), buffer)))\n      continue;\n\n    if (Debug)\n    {\n      fprintf (stderr, \"%s: line %d.  first token: \\\"%s\\\".\\n\",\n\t       Progname, line, token);\n    }\n    \n    if (!strcmp (token, \"/*++*/\"))\n      active = 1;\n    else if (!strcmp (token, \"/*--*/\"))\n    {\n      docstat = flush_doc (docstat, out);\n      active = 0;\n    }\n    else if (active && (!strcmp (token, \"/**\") || !strcmp (token, \"**\")))\n      docstat = handle_docline (p, out, docstat);\n    else if (active && !strcmp (token, \"{\"))\n    {\n      docstat = flush_doc (docstat, out);\n      handle_confline (p, out);\n    }\n  }\n  flush_doc (docstat, out);\n  fputs (\"\\n\", out);\n}\n\n/* skip whitespace */\n\nstatic char *skip_ws (char *s)\n{\n  while (*s && isspace ((unsigned char) *s))\n    s++;\n\n  return s;\n}\n\n/* isolate a token */\n\nstatic char single_char_tokens[] = \"[]{},;|\";\n\nstatic char *get_token (char *d, size_t l, char *s)\n{\n  char *t;\n  short is_quoted = 0;\n  char *dd = d;\n\n  if (Debug)\n     fprintf (stderr, \"%s: get_token called for `%s'.\\n\",\n\t      Progname, s);\n  \n  s = skip_ws (s);\n\n  if (Debug > 1)\n    fprintf (stderr, \"%s: argument after skip_ws():  `%s'.\\n\",\n\t     Progname, s);\n\n  if (!*s)\n  {\n    if (Debug)\n      fprintf (stderr, \"%s: no more tokens on this line.\\n\", Progname);\n    return NULL;\n  }\n\n  if (strchr (single_char_tokens, *s))\n  {\n    if (Debug)\n    {\n      fprintf (stderr, \"%s: found single character token `%c'.\\n\",\n\t       Progname, *s);\n    }\n    d[0] = *s++;\n    d[1] = 0;\n    return s;\n  }\n\n  if (*s == '\"')\n  {\n    if (Debug)\n    {\n      fprintf (stderr, \"%s: found quote character.\\n\", Progname);\n    }\n      \n    s++;\n    is_quoted = 1;\n  }\n\n  for (t = s; *t && --l > 0; t++)\n  {\n    if (*t == '\\\\' && !t[1])\n      break;\n\n    if (is_quoted && *t == '\\\\')\n    {\n      switch ((*d = *++t))\n      {\n\tcase 'n': *d = '\\n'; break;\n\tcase 't': *d = '\\t'; break;\n\tcase 'r': *d = '\\r'; break;\n\tcase 'a': *d = '\\a'; break;\n      }\n\n      d++;\n      continue;\n    }\n\n    if (is_quoted && *t == '\"')\n    {\n      t++;\n      break;\n    }\n    else if (!is_quoted && strchr (single_char_tokens, *t))\n      break;\n    else if (!is_quoted && isspace ((unsigned char) *t))\n      break;\n    else\n      *d++ = *t;\n  }\n\n  *d = '\\0';\n\n  if (Debug)\n  {\n    fprintf (stderr, \"%s: Got %stoken: `%s'.\\n\",\n\t     Progname, is_quoted ? \"quoted \" : \"\", dd);\n    fprintf (stderr, \"%s: Remainder: `%s'.\\n\",\n\t     Progname, t);\n  }\n  \n  return t;\n}\n\n\n/**\n ** Configuration line parser\n ** \n ** The following code parses a line from init.h which declares\n ** a configuration variable.\n **\n **/\n\n/* note: the following enum must be in the same order as the\n * following string definitions!\n */\n\nenum \n{\n  DT_NONE = 0,\n  DT_BOOL,\n  DT_NUM,\n  DT_STR,\n  DT_PATH,\n  DT_QUAD,\n  DT_SORT,\n  DT_RX,\n  DT_MAGIC,\n  DT_SYN,\n  DT_ADDR\n};\n\nstruct \n{\n  char *machine;\n  char *human;\n}\ntypes[] = \n{\n  { \"DT_NONE\",\t\"-none-\" \t},\n  { \"DT_BOOL\",  \"boolean\"\t},\n  { \"DT_NUM\",   \"number\"\t},\n  { \"DT_STR\",\t\"string\"\t},\n  { \"DT_PATH\",\t\"path\"\t\t},\n  { \"DT_QUAD\",\t\"quadoption\"\t},\n  { \"DT_SORT\",\t\"sort order\"\t},\n  { \"DT_RX\",\t\"regular expression\" },\n  { \"DT_MAGIC\",\t\"folder magic\" },\n  { \"DT_SYN\",\tNULL },\n  { \"DT_ADDR\",\t\"e-mail address\" },\n  { NULL, NULL }\n};\n    \n\nstatic int buff2type (const char *s)\n{\n  int type;\n  \n  for (type = DT_NONE; types[type].machine; type++)\n    if (!strcmp (types[type].machine, s))\n\treturn type;\n  \n  return DT_NONE;\n}\n\nstatic const char *type2human (int type)\n{\n  return types[type].human;\n}\nstatic void handle_confline (char *s, FILE *out)\n{\n  char varname[BUFFSIZE];\n  char buff[BUFFSIZE];\n  char tmp[BUFFSIZE];\n  int type;\n  \n  char val[BUFFSIZE];\n\n  /* xxx - put this into an actual state machine? */\n\n  /* variable name */\n  if (!(s = get_token (varname, sizeof (varname), s))) return;\n  \n  /* comma */\n  if (!(s = get_token (buff, sizeof (buff), s))) return;\n    \n  /* type */\n  if (!(s = get_token (buff, sizeof (buff), s))) return;\n\n  type = buff2type (buff);\n\n  /* possibly a \"|\" or comma */\n  if (!(s = get_token (buff, sizeof (buff), s))) return;\n\n  if (!strcmp (buff, \"|\"))\n  {\n    if (Debug) fprintf (stderr, \"%s: Expecting <subtype> <comma>.\\n\", Progname);\n    /* ignore subtype and comma */\n    if (!(s = get_token (buff, sizeof (buff), s))) return;\n    if (!(s = get_token (buff, sizeof (buff), s))) return;\n  }\n\n  /* redraw, comma */\n  \n  while (1)\n  {\n    if (!(s = get_token (buff, sizeof (buff), s))) return;\n    if (!strcmp (buff, \",\"))\n      break;\n  }\n\n  /* option name or UL &address */\n  if (!(s = get_token (buff, sizeof (buff), s))) return;\n  if (!strcmp (buff, \"UL\"))\n    if (!(s = get_token (buff, sizeof (buff), s))) return;\n\n  /* comma */\n  if (!(s = get_token (buff, sizeof (buff), s))) return;\n\n  if (Debug) fprintf (stderr, \"%s: Expecting default value.\\n\", Progname);\n  \n  /* <default value> or UL <default value> */\n  if (!(s = get_token (buff, sizeof (buff), s))) return;\n  if (!strcmp (buff, \"UL\"))\n  {\n    if (Debug) fprintf (stderr, \"%s: Skipping UL.\\n\", Progname);\n    if (!(s = get_token (buff, sizeof (buff), s))) return;\n  }\n\n  memset (tmp, 0, sizeof (tmp));\n\n  do \n  {\n    if (!strcmp (buff, \"}\"))\n      break;\n\n    strncpy (tmp + strlen (tmp), buff, sizeof (tmp) - strlen (tmp));\n  }\n  while ((s = get_token (buff, sizeof (buff), s)));\n\n  pretty_default (val, sizeof (val), tmp, type);\n  print_confline (varname, type, val, out);\n}\n\nstatic void pretty_default (char *t, size_t l, const char *s, int type)\n{\n  memset (t, 0, l);\n  l--;\n\n  switch (type)\n  {\n    case DT_QUAD:\n    {    \n      if (!strcasecmp (s, \"M_YES\")) strncpy (t, \"yes\", l);\n      else if (!strcasecmp (s, \"M_NO\")) strncpy (t, \"no\", l);\n      else if (!strcasecmp (s, \"M_ASKYES\")) strncpy (t, \"ask-yes\", l);\n      else if (!strcasecmp (s, \"M_ASKNO\")) strncpy (t, \"ask-no\", l);\n      break;\n    }\n    case DT_BOOL:\n    {\n      if (atoi (s))\n\tstrncpy (t, \"yes\", l);\n      else\n\tstrncpy (t, \"no\", l);\n      break;\n    }\n    case DT_SORT:\n    {\n      /* heuristic! */\n      strncpy (t, s + 5, l);\n      for (; *t; t++) *t = tolower ((unsigned char) *t);\n      break;\n    }\n    case DT_MAGIC:\n    {\n      /* heuristic! */\n      strncpy (t, s + 2, l);\n      for (; *t; t++) *t = tolower ((unsigned char) *t);\n      break;\n    }\n    case DT_STR:\n    case DT_RX:\n    case DT_ADDR:\n    case DT_PATH:\n    {\n      if (!strcmp (s, \"0\"))\n\tbreak;\n      /* fallthrough */\n    }\n    default:\n    {\n      strncpy (t, s, l);\n      break;\n    }\n  }\n}\n\nstatic void char_to_escape (char *dest, unsigned int c)\n{\n  switch (c)\n  {\n    case '\\r': strcpy (dest, \"\\\\r\"); break;\t/* __STRCPY_CHECKED__ */\n    case '\\n': strcpy (dest, \"\\\\n\"); break;\t/* __STRCPY_CHECKED__ */\n    case '\\t': strcpy (dest, \"\\\\t\"); break;\t/* __STRCPY_CHECKED__ */\n    case '\\f': strcpy (dest, \"\\\\f\"); break;\t/* __STRCPY_CHECKED__ */\n    default: sprintf (dest, \"\\\\%03o\", c); break;\n  }\n}\nstatic void conf_char_to_escape (unsigned int c , FILE *out)\n{\n  char buff[16];\n  char_to_escape (buff, c);\n  fputs (buff, out);\n}\n\nstatic void conf_print_strval (const char *v, FILE *out)\n{\n  for (; *v; v++)\n  {\n    if (*v < ' ' || *v & 0x80)\n    {\n      conf_char_to_escape ((unsigned int) *v, out);\n      continue;\n    }\n\n    if (*v == '\"'  || *v == '\\\\')\n      fputc ('\\\\', out);\n    fputc (*v, out);\n  }\n}\n\nstatic void man_print_strval (const char *v, FILE *out)\n{\n  for (; *v; v++)\n  {\n    if (*v < ' ' || *v & 0x80)\n    {\n      fputc ('\\\\', out);\n      conf_char_to_escape ((unsigned int) *v, out);\n      continue;\n    }\n    \n    if (*v == '\"')\n      fputs (\"\\\\(rq\", out);\n    else if (*v == '\\\\')\n      fputs (\"\\\\\\\\\", out);\n    else if (*v == '-')\n      fputs (\"\\\\-\", out);\n    else\n      fputc (*v, out);\n  }\n}\n\nstatic void sgml_print_strval (const char *v, FILE *out)\n{\n  char buff[16];\n  for (; *v; v++)\n  {\n    if (*v <  ' ' || *v & 0x80)\n    {\n      char_to_escape (buff, (unsigned int) *v);\n      sgml_fputs (buff, out);\n      continue;\n    }\n    sgml_fputc ((unsigned int) *v, out);\n  }\n}\n\nstatic int sgml_fputc (int c, FILE *out)\n{\n  switch (c)\n  {\n    /* the bare minimum for escaping */\n    case '<': return fputs (\"&lt;\", out);\n    case '>': return fputs (\"&gt;\", out);\n    case '&': return fputs (\"&amp;\", out);\n    default:  return fputc (c, out);\n  }\n}\n\nstatic int sgml_fputs (const char *s, FILE *out)\n{\n  for (; *s; s++)\n    if (sgml_fputc ((unsigned int) *s, out) == EOF)\n      return EOF;\n\n  return 0;\n}\n\n/* reduce CDATA to ID */\nstatic int sgml_id_fputs (const char *s, FILE* out)\n{\n  char id;\n\n  if (*s == '<')\n    s++;\n\n  for (; *s; s++)\n  {\n    if (*s == '_')\n      id = '-';\n    else\n      id = *s;\n    if (*s == '>' && !*(s+1))\n      break;\n\n    if (fputc ((unsigned int) id, out) == EOF)\n      return EOF;\n  }\n\n  return 0;\n}\n\nstatic void print_confline (const char *varname, int type, const char *val, FILE *out)\n{\n  if (type == DT_SYN) return;\n  \n  switch (OutputFormat)\n  {\n    /* configuration file */\n    case F_CONF:\n    {\n      if (type == DT_STR || type == DT_RX || type == DT_ADDR || type == DT_PATH)\n      {\n\tfprintf (out, \"\\n# set %s=\\\"\", varname);\n\tconf_print_strval (val, out);\n\tfputs (\"\\\"\", out);\n      }\n      else if (type != DT_SYN)\n\tfprintf (out, \"\\n# set %s=%s\", varname, val);\n      \n      fprintf (out, \"\\n#\\n# Name: %s\", varname);\n      fprintf (out, \"\\n# Type: %s\", type2human (type));\n      if (type == DT_STR || type == DT_RX || type == DT_ADDR || type == DT_PATH)\n      {\n\tfputs (\"\\n# Default: \\\"\", out);\n\tconf_print_strval (val, out);\n\tfputs (\"\\\"\", out);\n      }\n      else\n\tfprintf (out, \"\\n# Default: %s\", val);\n\n      fputs (\"\\n# \", out);\n      break;\n    }\n\n    /* manual page */\n    case F_MAN:\n    {\n      fprintf (out, \"\\n.TP\\n.B %s\\n\", varname);\n      fputs (\".nf\\n\", out);\n      fprintf (out, \"Type: %s\\n\", type2human (type));\n      if (type == DT_STR || type == DT_RX || type == DT_ADDR || type == DT_PATH)\n      {\n\tfputs (\"Default: \\\\(lq\", out);\n\tman_print_strval (val, out);\n\tfputs (\"\\\\(rq\\n\", out);\n      }\n      else {\n\tfputs (\"Default: \", out);\n\tman_print_strval (val, out);\n\tfputs (\"\\n\", out);\n      }\n\n      fputs (\".fi\", out);\n\n      break;\n    }\n    \n    /* SGML based manual */\n    case F_SGML:\n    {\n      fputs (\"\\n<sect2 id=\\\"\", out);\n      sgml_id_fputs(varname, out);\n      fputs (\"\\\">\\n<title>\", out);\n      sgml_fputs (varname, out);\n      fprintf (out, \"</title>\\n<literallayout>Type: %s\", type2human (type));\n\n      \n      if (type == DT_STR || type == DT_RX || type == DT_ADDR || type == DT_PATH)\n      {\n\tif (val && *val)\n\t{\n\t  fputs (\"\\nDefault: <quote><literal>\", out);\n\t  sgml_print_strval (val, out);\n\t  fputs (\"</literal></quote>\", out);\n\t}\n\telse\n\t{\n\t  fputs (\"\\nDefault: (empty)\", out);\n\t}\n\tfputs (\"</literallayout>\\n\", out);\n      }\n      else\n\tfprintf (out, \"\\nDefault: %s</literallayout>\\n\", val);\n      break;\n    }\n    /* make gcc happy */\n    default:\n      break;\n  }\n}\n\n/**\n ** Documentation line parser\n **\n ** The following code parses specially formatted documentation \n ** comments in init.h.\n **\n ** The format is very remotely inspired by nroff. Most important, it's\n ** easy to parse and convert, and it was easy to generate from the SGML \n ** source of mutt's original manual.\n **\n ** - \\fI switches to italics\n ** - \\fB switches to boldface\n ** - \\fP switches to normal display\n ** - .dl on a line starts a definition list (name taken taken from HTML).\n ** - .dt starts a term in a definition list.\n ** - .dd starts a definition in a definition list.\n ** - .de on a line finishes a definition list.\n ** - .il on a line starts an itemized list\n ** - .dd starts an item in an itemized list\n ** - .ie on a line finishes an itemized list\n ** - .ts on a line starts a \"tscreen\" environment (name taken from SGML).\n ** - .te on a line finishes this environment.\n ** - .pp on a line starts a paragraph.\n ** - \\$word will be converted to a reference to word, where appropriate.\n **   Note that \\$$word is possible as well.\n ** - '. ' in the beginning of a line expands to two space characters.\n **   This is used to protect indentations in tables.\n **/\n\n/* close eventually-open environments. */\n\nstatic int fd_recurse = 0;\n\nstatic int flush_doc (int docstat, FILE *out)\n{\n  if (docstat & D_INIT)\n    return D_INIT;\n\n  if (fd_recurse++)\n  {\n    fprintf (stderr, \"%s: Internal error, recursion in flush_doc()!\\n\", Progname);\n    exit (1);\n  }\n\n  if (docstat & (D_PA))\n    docstat = print_it (SP_END_PAR, NULL, out, docstat);\n\n  if (docstat & (D_TAB))\n    docstat = print_it (SP_END_TAB, NULL, out, docstat);\n\n  if (docstat & (D_DL))\n    docstat = print_it (SP_END_DL, NULL, out, docstat);\n\n  if (docstat & (D_EM | D_BF | D_TT))\n    docstat = print_it (SP_END_FT, NULL, out, docstat);\n\n  docstat = print_it (SP_END_SECT, NULL, out, docstat);\n\n  docstat = print_it (SP_NEWLINE, NULL, out, 0);\n\n  fd_recurse--;\n  return D_INIT;\n}\n\n/* print something. */\n\nstatic int print_it (int special, char *str, FILE *out, int docstat)\n{\n  int onl = docstat & (D_NL|D_NP);\n  \n  docstat &= ~(D_NL|D_NP|D_INIT);\n\n  switch (OutputFormat)\n  {\n    /* configuration file */\n    case F_CONF:\n    {\n      switch (special)\n      {\n\tstatic int Continuation = 0;\n\n\tcase SP_END_FT: docstat &= ~(D_EM|D_BF|D_TT); break;\n\tcase SP_START_BF: docstat |= D_BF; break;\n\tcase SP_START_EM: docstat |= D_EM; break;\n        case SP_START_TT: docstat |= D_TT; break;\n\tcase SP_NEWLINE: \n\t{\n\t  if (onl)\n\t    docstat |= onl;\n\t  else\n\t  {\n\t    fputs (\"\\n# \", out);\n\t    docstat |= D_NL;\n\t  }\n\t  if (docstat & D_DL)\n\t    ++ Continuation;\n\t  break;\n\t}\n\tcase SP_NEWPAR:\n\t{\n\t  if (onl & D_NP)\n\t  {\n\t    docstat |= onl;\n\t    break;\n\t  }\n\n\t  if (!(onl & D_NL))\n\t    fputs (\"\\n# \", out);\n\t  fputs (\"\\n# \", out);\n\t  docstat |= D_NP;\n\t  break;\n\t}\n\tcase SP_START_TAB: \n\t{\n\t  if (!onl) \n\t    fputs (\"\\n# \", out);\n\t  docstat |= D_TAB;\n\t  break;\n\t}\n\tcase SP_END_TAB:\n\t{\n\t  docstat &= ~D_TAB;\n\t  docstat |= D_NL;\n\t  break;\n\t}\n\tcase SP_START_DL:\n\t{\n\t  docstat |= D_DL;\n\t  break;\n\t}\n\tcase SP_DT:\n\t{\n\t  Continuation = 0;\n\t  docstat |= D_DT;\n\t  break;\n\t}\n\tcase SP_DD:\n\t{\n\t  if (docstat & D_IL)\n\t    fputs (\"- \", out);\n\t  Continuation = 0;\n\t  break;\n\t}\n\tcase SP_END_DL:\n\t{\n\t  Continuation = 0;\n\t  docstat &= ~D_DL;\n\t  break;\n\t}\n\tcase SP_START_IL:\n\t{\n\t  docstat |= D_IL;\n\t  break;\n\t}\n\tcase SP_END_IL:\n\t{\n\t  Continuation = 0;\n\t  docstat &= ~D_IL;\n\t  break;\n\t}\n\tcase SP_STR:\n\t{\n\t  if (Continuation)\n\t  {\n\t    Continuation = 0;\n\t    fputs (\"        \", out);\n\t  }\n\t  fputs (str, out);\n\t  if (docstat & D_DT)\n\t  { \n\t    int i;\n\n\t    for (i = strlen (str) ; i < 8 ; i++)\n\t      putc (' ', out);\n\t    docstat &= ~D_DT;\n\t    docstat |= D_NL;\n\t  }\n\t  break;\n\t}\n      }\n      break;\n    }\n\n    /* manual page */\n    case F_MAN:\n    {\n      switch (special)\n      {\n\tcase SP_END_FT: \n\t{\n\t  fputs (\"\\\\fP\", out);\n\t  docstat &= ~(D_EM|D_BF|D_TT);\n\t  break;\n\t}\n\tcase SP_START_BF: \n\t{\n\t  fputs (\"\\\\fB\", out);\n\t  docstat |= D_BF;\n\t  docstat &= ~(D_EM|D_TT);\n\t  break;\n\t}\n\tcase SP_START_EM:\n\t{\n\t  fputs (\"\\\\fI\", out);\n\t  docstat |= D_EM;\n\t  docstat &= ~(D_BF|D_TT);\n\t  break;\n\t}\n        case SP_START_TT:\n\t{\n\t  fputs (\"\\\\fC\", out);\n\t  docstat |= D_TT;\n\t  docstat &= ~(D_BF|D_EM);\n\t  break;\n        }\n\tcase SP_NEWLINE:\n\t{\n\t  if (onl)\n\t    docstat |= onl;\n\t  else\n\t  {\n\t    fputc ('\\n', out);\n\t    docstat |= D_NL;\n\t  }\n\t  break;\n\t}\n\tcase SP_NEWPAR:\n\t{\n\t  if (onl & D_NP)\n\t  {\n\t    docstat |= onl;\n\t    break;\n\t  }\n\n\t  if (!(onl & D_NL))\n\t    fputc ('\\n', out);\n\t  fputs (\".IP\\n\", out);\n\n\t  docstat |= D_NP;\n\t  break;\n\t}\n\tcase SP_START_TAB:\n\t{\n\t  fputs (\"\\n.IP\\n.EX\\n\", out);\n\t  docstat |= D_TAB | D_NL;\n\t  break;\n\t}\n\tcase SP_END_TAB:\n\t{\n\t  fputs (\"\\n.EE\\n\", out);\n\t  docstat &= ~D_TAB;\n\t  docstat |= D_NL;\n\t  break;\n\t}\n\tcase SP_START_DL:\n\t{\n\t  fputs (\".RS\\n.PD 0\\n\", out);\n\t  docstat |= D_DL;\n\t  break;\n\t}\n\tcase SP_DT:\n\t{\n\t  fputs (\".TP\\n\", out);\n\t  break;\n\t}\n\tcase SP_DD:\n\t{\n\t  if (docstat & D_IL)\n\t    fputs (\".TP\\n\\\\(hy \", out);\n\t  else\n\t    fputs (\"\\n\", out);\n\t  break;\n\t}\n\tcase SP_END_DL:\n\t{\n\t  fputs (\".RE\\n.PD 1\", out);\n\t  docstat &= ~D_DL;\n\t  break;\n\t}\n\tcase SP_START_IL:\n\t{\n\t  fputs (\".RS\\n.PD 0\\n\", out);\n\t  docstat |= D_IL;\n\t  break;\n\t}\n\tcase SP_END_IL:\n\t{\n\t  fputs (\".RE\\n.PD 1\", out);\n\t  docstat &= ~D_DL;\n\t  break;\n\t}\n\tcase SP_STR:\n\t{\n\t  while (*str)\n\t  {\n\t    for (; *str; str++)\n\t    {\n\t      if (*str == '\"')\n\t\tfputs (\"\\\\(rq\", out);\n\t      else if (*str == '\\\\')\n\t\tfputs (\"\\\\\\\\\", out);\n              else if (*str == '-')\n                fputs (\"\\\\-\", out);\n\t      else if (!strncmp (str, \"``\", 2))\n\t      {\n\t\tfputs (\"\\\\(lq\", out);\n\t\tstr++;\n\t      }\n\t      else if (!strncmp (str, \"''\", 2))\n\t      {\n\t\tfputs (\"\\\\(rq\", out);\n\t\tstr++;\n\t      }\n\t      else\n\t\tfputc (*str, out);\n\t    }\n\t  }\n\t  break;\n\t}\n      }\n      break;\n    }\n\n    /* SGML based manual */\n    case F_SGML:\n    {\n      switch (special)\n      {\n\tcase SP_END_FT: \n\t{\n\t  if (docstat & D_EM) fputs (\"</emphasis>\", out);\n\t  if (docstat & D_BF) fputs (\"</emphasis>\", out);\n          if (docstat & D_TT) fputs (\"</literal>\", out);\n\t  docstat &= ~(D_EM|D_BF|D_TT);\n\t  break;\n\t}\n\tcase SP_START_BF: \n\t{\n\t  fputs (\"<emphasis role=\\\"bold\\\">\", out);\n\t  docstat |= D_BF;\n\t  docstat &= ~(D_EM|D_TT);\n\t  break;\n\t}\n\tcase SP_START_EM:\n\t{\n\t  fputs (\"<emphasis>\", out);\n\t  docstat |= D_EM;\n\t  docstat &= ~(D_BF|D_TT);\n\t  break;\n\t}\n        case SP_START_TT:\n\t{\n\t  fputs (\"<literal>\", out);\n\t  docstat |= D_TT;\n\t  docstat &= ~(D_BF|D_EM);\n\t  break;\n        }\n\tcase SP_NEWLINE:\n\t{\n\t  if (onl)\n\t    docstat |= onl;\n\t  else\n\t  {\n\t    fputc ('\\n', out);\n\t    docstat |= D_NL;\n\t  }\n\t  break;\n\t}\n\tcase SP_NEWPAR:\n\t{\n\t  if (onl & D_NP)\n\t  {\n\t    docstat |= onl;\n\t    break;\n\t  }\n\n\t  if (!(onl & D_NL))\n\t    fputc ('\\n', out);\n\t  if (docstat & D_PA)\n\t    fputs(\"</para>\\n\", out);\n\t  fputs (\"<para>\\n\", out);\n\n\t  docstat |= D_NP;\n\t  docstat |= D_PA;\n\n\t  break;\n\t}\n        case SP_END_PAR:\n        {\n\t  fputs (\"</para>\\n\", out);\n\t  docstat &= ~D_PA;\n\t  break;\n        }\n\tcase SP_START_TAB:\n\t{\n\t  if (docstat & D_PA)\n\t  {\n\t    fputs (\"\\n</para>\\n\", out);\n\t    docstat &= ~D_PA;\n\t  }\n\t  fputs (\"\\n<screen>\\n\", out);\n\t  docstat |= D_TAB | D_NL;\n\t  break;\n\t}\n\tcase SP_END_TAB:\n\t{\n\t  fputs (\"</screen>\", out);\n\t  docstat &= ~D_TAB;\n\t  docstat |= D_NL;\n\t  break;\n\t}\n\tcase SP_START_DL:\n\t{\n\t  if (docstat & D_PA)\n\t  {\n\t    fputs (\"\\n</para>\\n\", out);\n\t    docstat &= ~D_PA;\n\t  }\n\t  fputs (\"\\n<informaltable>\\n<tgroup cols=\\\"2\\\">\\n<tbody>\\n\", out);\n\t  docstat |= D_DL;\n\t  break;\n\t}\n\tcase SP_DT:\n\t{\n\t  fputs (\"<row><entry>\", out);\n\t  break;\n\t}\n\tcase SP_DD:\n\t{\n\t  docstat |= D_DD;\n\t  if (docstat & D_DL)\n\t    fputs(\"</entry><entry>\", out);\n\t  else\n\t    fputs (\"<listitem><para>\", out);\n\t  break;\n\t}\n        case SP_END_DD:\n        {\n\t  if (docstat & D_DL)\n\t    fputs (\"</entry></row>\\n\", out);\n\t  else\n\t    fputs (\"</para></listitem>\", out);\n\t  docstat &= ~D_DD;\n\t  break;\n        }\n\tcase SP_END_DL:\n\t{\n\t  fputs (\"</entry></row></tbody></tgroup></informaltable>\\n\", out);\n\t  docstat &= ~(D_DD|D_DL);\n\t  break;\n\t}\n\tcase SP_START_IL:\n\t{\n\t  if (docstat & D_PA)\n\t  {\n\t    fputs (\"\\n</para>\\n\", out);\n\t    docstat &= ~D_PA;\n\t  }\n\t  fputs (\"\\n<itemizedlist>\\n\", out);\n\t  docstat |= D_IL;\n\t  break;\n\t}\n\tcase SP_END_IL:\n\t{\n\t  fputs (\"</para></listitem></itemizedlist>\\n\", out);\n\t  docstat &= ~(D_DD|D_DL);\n\t  break;\n\t}\n        case SP_END_SECT:\n        {\n\t  fputs (\"</sect2>\", out);\n\t  break;\n        }\n\tcase SP_STR:\n\t{\n\t  if (docstat & D_TAB)\n\t    sgml_fputs (str, out);\n\t  else\n\t  {\n\t    while (*str)\n\t    {\n\t      for (; *str; str++)\n\t      {\n\t        if (!strncmp (str, \"``\", 2))\n\t        {\n\t\t  fputs (\"<quote>\", out);\n\t\t  str++;\n\t        }\n\t        else if (!strncmp (str, \"''\", 2))\n\t        {\n\t\t  fputs (\"</quote>\", out);\n\t\t  str++;\n\t        }\n\t        else\n\t\t  sgml_fputc (*str, out);\n\t      }\n\t    }\n\t  }\n\t  break;\n\t}\n      }\n      break;\n    }\n    /* make gcc happy (unreached) */\n    default:\n      break;\n  }\n\n  return docstat;\n}\n\nvoid print_ref (FILE *out, int output_dollar, const char *ref)\n{\n  switch (OutputFormat)\n  {\n  case F_CONF:\n  case F_MAN:\n    if (output_dollar)\n      putc ('$', out);\n    fputs (ref, out);\n    break;\n\n  case F_SGML:\n    fputs (\"<link linkend=\\\"\", out);\n    sgml_id_fputs (ref, out);\n    fputs (\"\\\">\", out);\n    if (output_dollar)\n      fputc ('$', out);\n    sgml_fputs (ref, out);\n    fputs (\"</link>\", out);\n    break;\n\n  default:\n    break;\n  }\n}\n\nstatic int commit_buff (char *buff, char **d, FILE *out, int docstat)\n{\n  if (*d > buff)\n  {\n    **d = '\\0';\n    docstat = print_it (SP_STR, buff, out, docstat);\n    *d = buff;\n  }\n\n  return docstat;\n}\n\nstatic int handle_docline (char *l, FILE *out, int docstat)\n{\n  char buff[BUFFSIZE];\n  char *s, *d;\n  l = skip_ws (l);\n\n  if (Debug)\n    fprintf (stderr, \"%s: handle_docline `%s'\\n\", Progname, l);\n  \n  if (!strncmp (l, \".pp\", 3))\n    return print_it (SP_NEWPAR, NULL, out, docstat);\n  else if (!strncmp (l, \".ts\", 3))\n    return print_it (SP_START_TAB, NULL, out, docstat);\n  else if (!strncmp (l, \".te\", 3))\n    return print_it (SP_END_TAB, NULL, out, docstat);\n  else if (!strncmp (l, \".dl\", 3))\n    return print_it (SP_START_DL, NULL, out, docstat);\n  else if (!strncmp (l, \".de\", 3))\n    return print_it (SP_END_DL, NULL, out, docstat);\n  else if (!strncmp (l, \".il\", 3))\n    return print_it (SP_START_IL, NULL, out, docstat);\n  else if (!strncmp (l, \".ie\", 3))\n    return print_it (SP_END_IL, NULL, out, docstat);\n  else if (!strncmp (l, \". \", 2))\n    *l = ' ';\n\n  for (s = l, d = buff; *s; s++)\n  {\n    if (!strncmp (s, \"\\\\(as\", 4))\n    {\n      *d++ = '*';\n      s += 3;\n    }\n    else if (!strncmp (s, \"\\\\(rs\", 4))\n    {\n      *d++ = '\\\\';\n      s += 3;\n    }\n    else if (!strncmp (s, \"\\\\fI\", 3))\n    {\n      docstat = commit_buff (buff, &d, out, docstat);\n      docstat = print_it (SP_START_EM, NULL, out, docstat);\n      s += 2;\n    }\n    else if (!strncmp (s, \"\\\\fB\", 3))\n    {\n      docstat = commit_buff (buff, &d, out, docstat);\n      docstat = print_it (SP_START_BF, NULL, out, docstat);\n      s += 2;\n    }\n    else if (!strncmp (s, \"\\\\fC\", 3))\n    {\n      docstat = commit_buff (buff, &d, out, docstat);\n      docstat = print_it (SP_START_TT, NULL, out, docstat);\n      s += 2;\n    }\n    else if (!strncmp (s, \"\\\\fP\", 3))\n    {\n      docstat = commit_buff (buff, &d, out, docstat);\n      docstat = print_it (SP_END_FT, NULL, out, docstat);\n      s += 2;\n    }\n    else if (!strncmp (s, \".dt\", 3))\n    {\n      if (docstat & D_DD)\n      {\n\tdocstat = commit_buff (buff, &d, out, docstat);\n\tdocstat = print_it (SP_END_DD, NULL, out, docstat);\n      }\n      docstat = commit_buff (buff, &d, out, docstat);\n      docstat = print_it (SP_DT, NULL, out, docstat);\n      s += 3;\n    }\n    else if (!strncmp (s, \".dd\", 3))\n    {\n      if ((docstat & D_IL) && (docstat & D_DD))\n      {\n\tdocstat = commit_buff (buff, &d, out, docstat);\n\tdocstat = print_it (SP_END_DD, NULL, out, docstat);\n      }\n      docstat = commit_buff (buff, &d, out, docstat);\n      docstat = print_it (SP_DD, NULL, out, docstat);\n      s += 3;\n    }\n    else if (*s == '$')\n    {\n      int output_dollar = 0;\n      char *ref;\n      char save;\n\n      ++s;\n      if (*s == '$')\n      {\n\toutput_dollar = 1;\n\t++s;\n      }\n      if (*s == '$')\n      {\n\t*d++ = '$';\n      }\n      else\n      {\n\tref = s;\n\twhile (isalnum ((unsigned char) *s) || (*s && strchr(\"-_<>\", *s)))\n\t  ++s;\n\n\tdocstat = commit_buff (buff, &d, out, docstat);\n\tsave = *s;\n\t*s = 0;\n\tprint_ref (out, output_dollar, ref);\n\t*s = save;\n\t--s;\n      }\n    }\n    else\n      *d++ = *s;\n  }\n\n  docstat = commit_buff (buff, &d, out, docstat);\n  return print_it (SP_NEWLINE, NULL, out, docstat);\n}\n"
  },
  {
    "path": "doc/manual.xml.head",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!DOCTYPE book PUBLIC \"-//OASIS//DTD DocBook XML V4.2//EN\"\n  \"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd\">\n<book>\n\n<bookinfo>\n<title>The Mutt E-Mail Client</title>\n<author>\n<firstname>Michael</firstname><surname>Elkins</surname>\n<email>me@cs.hmc.edu</email>\n</author>\n<releaseinfo>version @VERSION@</releaseinfo>\n\n<abstract>\n<para>\n<quote>All mail clients suck.  This one just sucks less.</quote> &mdash;\nme, circa 1995\n</para>\n</abstract>\n</bookinfo>\n\n<chapter id=\"intro\">\n<title>Introduction</title>\n\n<para>\n<emphasis role=\"bold\">Mutt</emphasis> is a small but very powerful\ntext-based MIME mail client.  Mutt is highly configurable, and is well\nsuited to the mail power user with advanced features like key bindings,\nkeyboard macros, mail threading, regular expression searches and a\npowerful pattern matching language for selecting groups of messages.\n</para>\n\n<sect1 id=\"homepage\">\n<title>Mutt Home Page</title>\n\n<para>\nThe official homepage can be found at\n<ulink url=\"http://www.mutt.org/\">http://www.mutt.org/</ulink>.\n</para>\n\n</sect1>\n\n<sect1 id=\"muttlists\">\n<title>Mailing Lists</title>\n\n<para>\nTo subscribe to one of the following mailing lists, send a message with\nthe word <emphasis>subscribe</emphasis> in the body to\n<emphasis>list-name</emphasis><literal>-request@mutt.org</literal>.\n</para>\n\n<itemizedlist>\n<listitem>\n\n<para>\n<email>mutt-announce-request@mutt.org</email> &mdash; low traffic list for\nannouncements\n</para>\n</listitem>\n<listitem>\n\n<para>\n<email>mutt-users-request@mutt.org</email> &mdash; help, bug reports and\nfeature requests\n</para>\n</listitem>\n<listitem>\n\n<para>\n<email>mutt-dev-request@mutt.org</email> &mdash; development mailing list\n</para>\n</listitem>\n\n</itemizedlist>\n\n<para>\nAll messages posted to <emphasis>mutt-announce</emphasis> are\nautomatically forwarded to <emphasis>mutt-users</emphasis>, so you do\nnot need to be subscribed to both lists.\n</para>\n\n</sect1>\n\n<sect1 id=\"distribution\">\n<title>Getting Mutt</title>\n\n<para>\nMutt releases can be downloaded from <ulink\nurl=\"ftp://ftp.mutt.org/mutt/\">ftp://ftp.mutt.org/mutt/</ulink>.  For a\nlist of mirror sites, please refer to <ulink\nurl=\"http://www.mutt.org/download.html\">http://www.mutt.org/download.html</ulink>.\n</para>\n\n<para>\nFor nightly tarballs and version control access, please refer to the\n<ulink url=\"http://dev.mutt.org/\">Mutt development site</ulink>.\n</para>\n\n</sect1>\n\n<sect1 id=\"irc\">\n<title>Mutt Online Resources</title>\n\n<variablelist>\n\n<varlistentry>\n<term>Bug Tracking System</term>\n<listitem>\n<para>\nThe official Mutt bug tracking system can be found at\n<ulink url=\"http://bugs.mutt.org/\">http://bugs.mutt.org/</ulink>\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>Wiki</term>\n<listitem>\n<para>\nAn (unofficial) wiki can be found\nat <ulink url=\"http://wiki.mutt.org/\">http://wiki.mutt.org/</ulink>.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>IRC</term>\n<listitem>\n<para>\nFor the IRC user community, visit channel <emphasis>#mutt</emphasis> on\n<ulink url=\"http://www.freenode.net/\">irc.freenode.net</ulink>.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>USENET</term>\n<listitem>\n<para>\nFor USENET, see the newsgroup <ulink url=\"news:comp.mail.mutt\">comp.mail.mutt</ulink>.\n</para>\n</listitem>\n</varlistentry>\n\n</variablelist>\n\n</sect1>\n\n<sect1 id=\"contrib\">\n<title>Contributing to Mutt</title>\n\n<para>\nThere are various ways to contribute to the Mutt project.\n</para>\n\n<para>\nEspecially for new users it may be helpful to meet other new and\nexperienced users to chat about Mutt, talk about problems and share\ntricks.\n</para>\n\n<para>\nSince translations of Mutt into other languages are highly appreciated,\nthe Mutt developers always look for skilled translators that help\nimprove and continue to maintain stale translations.\n</para>\n\n<para>\nFor contributing code patches for new features and bug fixes, please\nrefer to the developer pages at\n<ulink url=\"http://dev.mutt.org/\">http://dev.mutt.org/</ulink> for more details.\n</para>\n\n</sect1>\n\n<sect1 id=\"typo\">\n<title>Typographical Conventions</title>\n\n<para>\nThis section lists typographical conventions followed throughout this\nmanual. See table <xref linkend=\"tab-typo\"/> for typographical\nconventions for special terms.\n</para>\n\n<table id=\"tab-typo\">\n<title>Typographical conventions for special terms</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Item</entry><entry>Refers to...</entry></row>\n</thead>\n<tbody>\n<row><entry><literal>printf(3)</literal></entry><entry>UNIX manual pages, execute <literal>man 3 printf</literal></entry></row>\n<row><entry><literal>&lt;PageUp&gt;</literal></entry><entry>named keys</entry></row>\n<row><entry><literal>&lt;create-alias&gt;</literal></entry><entry>named Mutt function</entry></row>\n<row><entry><literal>^G</literal></entry><entry>Control+G key combination</entry></row>\n<row><entry>$mail_check</entry><entry>Mutt configuration option</entry></row>\n<row><entry><literal>$HOME</literal></entry><entry>environment variable</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nExamples are presented as:\n</para>\n\n<screen>\nmutt -v\n</screen>\n\n<para>\nWithin command synopsis, curly brackets (<quote>{}</quote>) denote a set\nof options of which one is mandatory, square brackets\n(<quote>[]</quote>) denote optional arguments, three dots\ndenote that the argument may be repeated arbitrary times.\n</para>\n\n</sect1>\n\n<sect1 id=\"copyright\">\n<title>Copyright</title>\n\n<para>\nMutt is Copyright &copy; 1996-2016 Michael R. Elkins\n<email>me@mutt.org</email> and others.\n</para>\n\n<para>\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n</para>\n\n<para>\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\nGeneral Public License for more details.\n</para>\n\n<para>\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n</para>\n\n</sect1>\n\n</chapter>\n\n<chapter id=\"gettingstarted\">\n<title>Getting Started</title>\n\n<para>\nThis section is intended as a brief overview of how to use Mutt.  There\nare many other features which are described elsewhere in the manual.\nThere is even more information available in the Mutt FAQ and various web\npages. See the <ulink url=\"http://www.mutt.org/\">Mutt homepage</ulink>\nfor more details.\n</para>\n\n<para>\nThe keybindings described in this section are the defaults as\ndistributed.  Your local system administrator may have altered the\ndefaults for your site.  You can always type <quote>?</quote> in any\nmenu to display the current bindings.\n</para>\n\n<para>\nThe first thing you need to do is invoke Mutt, simply by typing\n<literal>mutt</literal> at the command line.  There are various\ncommand-line options, see either the Mutt man page or the <link\nlinkend=\"commandline\">reference</link>.\n</para>\n\n<sect1 id=\"core-concepts\">\n<title>Core Concepts</title>\n\n<para>\nMutt is a text-based application which interacts with users through\ndifferent menus which are mostly line-/entry-based or page-based. A\nline-based menu is the so-called <quote>index</quote> menu (listing all\nmessages of the currently opened folder) or the <quote>alias</quote>\nmenu (allowing you to select recipients from a list). Examples for\npage-based menus are the <quote>pager</quote> (showing one message at a\ntime) or the <quote>help</quote> menu listing all available key\nbindings.\n</para>\n\n<para>\nThe user interface consists of a context sensitive help line at the top,\nthe menu's contents followed by a context sensitive status line and\nfinally the command line. The command line is used to display\ninformational and error messages as well as for prompts and for entering\ninteractive commands.\n</para>\n\n<para>\nMutt is configured through variables which, if the user wants to\npermanently use a non-default value, are written to configuration\nfiles. Mutt supports a rich config file syntax to make even complex\nconfiguration files readable and commentable.\n</para>\n\n<para>\nBecause Mutt allows for customizing almost all key bindings, there are\nso-called <quote>functions</quote> which can be executed manually (using\nthe command line) or in macros. Macros allow the user to bind a sequence\nof commands to a single key or a short key sequence instead of repeating\na sequence of actions over and over.\n</para>\n\n<para>\nMany commands (such as saving or copying a message to another folder)\ncan be applied to a single message or a set of messages (so-called\n<quote>tagged</quote> messages). To help selecting messages, Mutt\nprovides a rich set of message patterns (such as recipients, sender,\nbody contents, date sent/received, etc.) which can be combined into\ncomplex expressions using the boolean <emphasis>and</emphasis> and\n<emphasis>or</emphasis> operations as well as negating. These patterns\ncan also be used to (for example) search for messages or to limit the\nindex to show only matching messages.\n</para>\n\n<para>\nMutt supports a <quote>hook</quote> concept which allows the user to\nexecute arbitrary configuration commands and functions in certain\nsituations such as entering a folder, starting a new message or replying\nto an existing one. These hooks can be used to highly customize Mutt's\nbehavior including managing multiple identities, customizing the\ndisplay for a folder or even implementing auto-archiving based on a\nper-folder basis and much more.\n</para>\n\n<para>\nBesides an interactive mode, Mutt can also be used as a command-line\ntool only send messages. It also supports a\n<literal>mailx(1)</literal>-compatible interface, see <xref\nlinkend=\"tab-commandline-options\"/> for a complete list of command-line\noptions.\n</para>\n\n</sect1>\n\n<sect1 id=\"concept-screens-and-menus\">\n<title>Screens and Menus</title>\n\n<sect2 id=\"intro-index\">\n<title>Index</title>\n\n<para>\nThe index is the screen that you usually see first when you start\nMutt. It gives an overview over your emails in the currently opened\nmailbox. By default, this is your system mailbox.  The information you\nsee in the index is a list of emails, each with its number on the left,\nits flags (new email, important email, email that has been forwarded or\nreplied to, tagged email, ...), the date when email was sent, its\nsender, the email size, and the subject. Additionally, the index also\nshows thread hierarchies: when you reply to an email, and the other\nperson replies back, you can see the other person's email in a\n\"sub-tree\" below.  This is especially useful for personal email between\na group of people or when you've subscribed to mailing lists.\n</para>\n\n</sect2>\n\n<sect2 id=\"intro-pager\">\n<title>Pager</title>\n\n<para>\nThe pager is responsible for showing the email content. On the top of\nthe pager you have an overview over the most important email headers\nlike the sender, the recipient, the subject, and much more\ninformation. How much information you actually see depends on your\nconfiguration, which we'll describe below.\n</para>\n\n<para>\nBelow the headers, you see the email body which usually contains the\nmessage. If the email contains any attachments, you will see more\ninformation about them below the email body, or, if the attachments are\ntext files, you can view them directly in the pager.\n</para>\n\n<para>\nTo give the user a good overview, it is possible to configure Mutt to\nshow different things in the pager with different colors. Virtually\neverything that can be described with a regular expression can be\ncolored, e.g. URLs, email addresses or smileys.\n</para>\n\n</sect2>\n\n<sect2 id=\"intro-browser\">\n<title>File Browser</title>\n\n<para>\nThe file browser is the interface to the local or remote file\nsystem. When selecting a mailbox to open, the browser allows custom\nsorting of items, limiting the items shown by a regular expression and a\nfreely adjustable format of what to display in which way. It also allows\nfor easy navigation through the file system when selecting file(s) to\nattach to a message, select multiple files to attach and many more.\n</para>\n\n</sect2>\n\n<sect2 id=\"intro-sidebar\">\n\t<title>Sidebar</title>\n\t<para>\n\t\tThe Sidebar shows a list of all your mailboxes.  The list can be\n\t\tturned on and off, it can be themed and the list style can be\n\t\tconfigured.\n\t</para>\n\t<para>\n\t\tThis part of the manual is suitable for beginners.\n\t\tIf you already know Mutt you could skip ahead to the main\n\t\t<link linkend=\"sidebar\">Sidebar guide</link>.\n\t\tIf you just want to get started, you could use the sample\n\t\t<link linkend=\"sidebar-muttrc\">Sidebar muttrc</link>.\n\t</para>\n\t<para>\n\t\tThis version of Sidebar is based on Terry Chan's\n\t\t<ulink url=\"http://www.lunar-linux.org/mutt-sidebar/\">2015-11-11 release</ulink>.\n\t\tIt contains many\n\t\t<emphasis role=\"bold\"><link linkend=\"intro-sidebar-features\">new features</link></emphasis>,\n\t\tlots of\n\t\t<emphasis role=\"bold\"><link linkend=\"intro-sidebar-bugfixes\">bugfixes</link></emphasis>\n\t\tand a generous helping of\n\t\t<emphasis role=\"bold\">new documentation</emphasis> which you are already reading.\n\t</para>\n\t<para>\n\t\tTo check if Mutt supports <quote>Sidebar</quote>, look for the string\n\t\t<literal>+USE_SIDEBAR</literal> in the mutt version.\n\t</para>\n<screen>\nmutt -v\n</screen>\n\t<para>\n\t\t<emphasis role=\"bold\">Let's turn on the Sidebar:</emphasis>\n\t</para>\n\t<screen>set sidebar_visible</screen>\n\t<para>\n\t\tYou will see something like this.\n\t\tA list of mailboxes on the left.\n\t\tA list of emails, from the selected mailbox, on the right.\n\t</para>\n<screen>\n<emphasis role=\"indicator\">Fruit [1]     3/8</emphasis>|  1    + Jan 24  Rhys Lee         (192)  Yew\nAnimals [1]   2/6|  2    + Feb 11  Grace Hall       (167)  Ilama\nCars            4|  3      Feb 23  Aimee Scott      (450)  Nectarine\nSeas          1/7|  4    ! Feb 28  Summer Jackson   (264)  Lemon\n                 |  5      Mar 07  Callum Harrison  (464)  Raspberry\n                 |<emphasis role=\"indicator\">  6 N  + Mar 24  Samuel Harris    (353)  Tangerine          </emphasis>\n                 |  7 N  + Sep 05  Sofia Graham     (335)  Cherry\n                 |  8 N    Sep 16  Ewan Brown       (105)  Ugli\n                 |\n                 |\n</screen>\n<para>\n\tThis user has four mailboxes: <quote>Fruit</quote>,\n\t<quote>Cars</quote>, <quote>Animals</quote> and\n\t<quote>Seas</quote>.\n</para>\n<para>\n\tThe current, open, mailbox is <quote>Fruit</quote>.  We can\n\talso see information about the other mailboxes.  For example:\n\tThe <quote>Animals</quote> mailbox contains, 1 flagged email, 2\n\tnew emails out of a total of 6 emails.\n</para>\n\t<sect3 id=\"intro-sidebar-navigation\">\n\t\t<title>Navigation</title>\n\t\t<para>\n\t\t\tThe Sidebar adds some new <link linkend=\"sidebar-functions\">functions</link>\n\t\t\tto Mutt.\n\t\t</para>\n\t\t<para>\n\t\t\tThe user pressed the <quote>c</quote> key to\n\t\t\t<literal>&lt;change-folder&gt;</literal> to the\n\t\t\t<quote>Animals</quote> mailbox.  The Sidebar automatically\n\t\t\tupdated the indicator to match.\n\t\t</para>\n<screen>\nFruit [1]     3/8|  1      Jan 03  Tia Gibson       (362)  Caiman\n<emphasis role=\"indicator\">Animals [1]   2/6</emphasis>|  2    + Jan 22  Rhys Lee         ( 48)  Dolphin\nCars            4|  3    ! Aug 16  Ewan Brown       (333)  Hummingbird\nSeas          1/7|  4      Sep 25  Grace Hall       ( 27)  Capybara\n                 |<emphasis role=\"indicator\">  5 N  + Nov 12  Evelyn Rogers    (453)  Tapir              </emphasis>\n                 |  6 N  + Nov 16  Callum Harrison  (498)  Hedgehog\n                 |\n                 |\n                 |\n                 |\n</screen>\n\t\t<para>\n\t\t\tLet's map some functions:\n\t\t</para>\n<screen>\nbind index,pager \\CP sidebar-prev       <emphasis role=\"comment\"># Ctrl-Shift-P - Previous Mailbox</emphasis>\nbind index,pager \\CN sidebar-next       <emphasis role=\"comment\"># Ctrl-Shift-N - Next Mailbox</emphasis>\nbind index,pager \\CO sidebar-open       <emphasis role=\"comment\"># Ctrl-Shift-O - Open Highlighted Mailbox</emphasis>\n</screen>\n\t\t<para>\n\t\t\tPress <quote>Ctrl-Shift-N</quote> (Next mailbox) twice will\n\t\t\tmove the Sidebar <emphasis role=\"bold\">highlight</emphasis> to\n\t\t\tdown to the <quote>Seas</quote> mailbox.\n\t\t</para>\n<screen>\nFruit [1]     3/8|  1      Jan 03  Tia Gibson       (362)  Caiman\n<emphasis role=\"indicator\">Animals [1]   2/6</emphasis>|  2    + Jan 22  Rhys Lee         ( 48)  Dolphin\nCars            4|  3    ! Aug 16  Ewan Brown       (333)  Hummingbird\n<emphasis role=\"highlight\">Seas          1/7</emphasis>|  4      Sep 25  Grace Hall       ( 27)  Capybara\n                 |<emphasis role=\"indicator\">  5 N  + Nov 12  Evelyn Rogers    (453)  Tapir              </emphasis>\n                 |  6 N  + Nov 16  Callum Harrison  (498)  Hedgehog\n                 |\n                 |\n                 |\n                 |\n</screen>\n\t\t<note>\n\t\t\tFunctions <literal>&lt;sidebar-next&gt;</literal> and\n\t\t\t<literal>&lt;sidebar-prev&gt;</literal> move the Sidebar\n\t\t\t<emphasis role=\"bold\">highlight</emphasis>.\n\t\t\tThey <emphasis role=\"bold\">do not</emphasis> change the open\n\t\t\tmailbox.\n\t\t</note>\n\t\t<para>\n\t\t\tPress <quote>Ctrl-Shift-O</quote>\n\t\t\t(<literal>&lt;sidebar-open&gt;</literal>)\n\t\t\tto open the highlighted mailbox.\n\t\t</para>\n<screen>\nFruit [1]     3/8|  1    ! Mar 07  Finley Jones     (139)  Molucca Sea\nAnimals [1]   2/6|  2    + Mar 24  Summer Jackson   ( 25)  Arafura Sea\nCars            4|  3    + Feb 28  Imogen Baker     (193)  Pechora Sea\n<emphasis role=\"indicator\">Seas          1/7</emphasis>|<emphasis role=\"indicator\">  4 N  + Feb 23  Isla Hussain     (348)  Balearic Sea       </emphasis>\n                 |\n                 |\n                 |\n                 |\n                 |\n                 |\n</screen>\n\t</sect3>\n\t<sect3 id=\"intro-sidebar-features\">\n\t\t<title>Features</title>\n\t\t<para>\n\t\t\tThe Sidebar shows a list of mailboxes in a panel.\n\t\t<para>\n\t\t</para>\n\t\t\tEverything about the Sidebar can be configured.\n\t\t</para>\n\t\t<itemizedlist>\n\t\t<title><link linkend=\"intro-sidebar-basics\">State of the Sidebar</link></title>\n\t\t\t<listitem><para>Visibility</para></listitem>\n\t\t\t<listitem><para>Width</para></listitem>\n\t\t</itemizedlist>\n\t\t<itemizedlist>\n\t\t<title><link linkend=\"intro-sidebar-limit\">Which mailboxes are displayed</link></title>\n\t\t\t<listitem><para>Display all</para></listitem>\n\t\t\t<listitem><para>Limit to mailboxes with new mail</para></listitem>\n\t\t\t<listitem><para>Whitelist mailboxes to display always</para></listitem>\n\t\t</itemizedlist>\n\t\t<itemizedlist>\n\t\t<title><link linkend=\"sidebar-sort\">The order in which mailboxes are displayed</link></title>\n\t\t<title></title>\n\t\t\t<listitem><para>Unsorted (order of mailboxes commands)</para></listitem>\n\t\t\t<listitem><para>Sorted alphabetically</para></listitem>\n\t\t\t<listitem><para>Sorted by number of new mails</para></listitem>\n\t\t</itemizedlist>\n\t\t<itemizedlist>\n\t\t<title><link linkend=\"intro-sidebar-colors\">Color</link></title>\n\t\t\t<listitem><para>Sidebar indicators and divider</para></listitem>\n\t\t\t<listitem><para>Mailboxes depending on their type</para></listitem>\n\t\t\t<listitem><para>Mailboxes depending on their contents</para></listitem>\n\t\t</itemizedlist>\n\t\t<itemizedlist>\n\t\t<title><link linkend=\"sidebar-functions\">Key bindings</link></title>\n\t\t\t<listitem><para>Hide/Unhide the Sidebar</para></listitem>\n\t\t\t<listitem><para>Select previous/next mailbox</para></listitem>\n\t\t\t<listitem><para>Select previous/next mailbox with new mail</para></listitem>\n\t\t\t<listitem><para>Page up/down through a list of mailboxes</para></listitem>\n\t\t</itemizedlist>\n\t\t<itemizedlist>\n\t\t<title>Misc</title>\n\t\t\t<listitem><para><link linkend=\"intro-sidebar-format\">Formatting string for mailbox</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"sidebar-next-new-wrap\">Wraparound searching</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"intro-sidebar-abbrev\">Flexible mailbox abbreviations</link></para></listitem>\n\t\t\t<listitem><para>Support for Unicode mailbox names (utf-8)</para></listitem>\n\t\t</itemizedlist>\n\t</sect3>\n\t<sect3 id=\"intro-sidebar-display\">\n\t\t<title>Display</title>\n\t\t<para>\n\t\t\tEverything about the Sidebar can be configured.\n\t\t</para>\n\t\t<itemizedlist>\n\t\t\t<title>For a quick reference:</title>\n\t\t\t<listitem><para><link linkend=\"sidebar-variables\">Sidebar variables to set</link> </para></listitem>\n\t\t\t<listitem><para><link linkend=\"sidebar-colors\">Sidebar colors to apply</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"sidebar-sort\">Sidebar sort methods</link></para></listitem>\n\t\t</itemizedlist>\n\t\t<sect4 id=\"intro-sidebar-basics\">\n\t\t\t<title>Sidebar Basics</title>\n\t\t\t<para>\n\t\t\t\tThe most important variable is <literal>$sidebar_visible</literal>.\n\t\t\t\tYou can set this in your <quote>muttrc</quote>, or bind a key to the\n\t\t\t\tfunction <literal>&lt;sidebar-toggle-visible&gt;</literal>.\n\t\t\t</para>\n<screen>\nset sidebar_visible                         <emphasis role=\"comment\"># Make the Sidebar visible by default</emphasis>\nbind index,pager B sidebar-toggle-visible   <emphasis role=\"comment\"># Use 'B' to switch the Sidebar on and off</emphasis>\n</screen>\n\t\t\t<para>\n\t\t\t\tNext, decide how wide you want the Sidebar to be.  25\n\t\t\t\tcharacters might be enough for the mailbox name and some numbers.\n\t\tRemember, you can hide/show the Sidebar at the press of button.\n\t\t</para>\n\t\t<para>\n\t\tFinally, you might want to change the divider character.\n\t\tBy default, Sidebar draws an ASCII line between it and the Index panel\n\t\t\t\tIf your terminal supports it, you can use a Unicode line-drawing character.\n\t\t\t</para>\n<screen>\nset sidebar_width = 25                  <emphasis role=\"comment\"># Plenty of space</emphasis>\nset sidebar_divider_char = '│'          <emphasis role=\"comment\"># Pretty line-drawing character</emphasis>\n</screen>\n\t\t</sect4>\n\t\t<sect4 id=\"intro-sidebar-format\">\n\t\t\t<title>Sidebar Format String</title>\n\t\t\t<para>\n\t\t\t\t<literal>$sidebar_format</literal> allows you to customize the Sidebar display.\n\t\t\t\tFor an introduction, read <link linkend=\"index-format\">format strings</link>\n\t\t\t\tincluding the section about <link linkend=\"formatstrings-conditionals\">conditionals</link>.\n\t\t\t</para>\n\t\t\t<para>\n\t\t\t\tThe default value is <literal>%B%?F? [%F]?%* %?N?%N/?%S</literal>\n\t\t\t</para>\n\t\t\t<itemizedlist>\n\t\t\t\t<title>Which breaks down as:</title>\n\t\t\t\t<listitem><para><literal>%B</literal> - Mailbox name</para></listitem>\n\t\t\t\t<listitem><para><literal>%?F? [%F]?</literal> - If flagged emails <literal>[%F]</literal>, otherwise nothing</para></listitem>\n\t\t\t\t<listitem><para><literal>%* </literal> - Pad with spaces</para></listitem>\n\t\t\t\t<listitem><para><literal>%?N?%N/?</literal> - If new emails <literal>%N/</literal>, otherwise nothing</para></listitem>\n\t\t\t\t<listitem><para><literal>%S</literal> - Total number of emails</para></listitem>\n\t\t\t</itemizedlist>\n\t\t\t<table>\n\t\t\t\t<title>sidebar_format</title>\n\t\t\t\t<tgroup cols=\"3\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>Format</entry>\n\t\t\t\t\t\t\t<entry>Notes</entry>\n\t\t\t\t\t\t\t<entry>Description</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%B</entry>\n\t\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t\t<entry>Name of the mailbox</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%S</entry>\n\t\t\t\t\t\t\t<entry>*</entry>\n\t\t\t\t\t\t\t<entry>Size of mailbox (total number of messages)</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%N</entry>\n\t\t\t\t\t\t\t<entry>*</entry>\n\t\t\t\t\t\t\t<entry>Number of New messages in the mailbox</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%F</entry>\n\t\t\t\t\t\t\t<entry>*</entry>\n\t\t\t\t\t\t\t<entry>Number of Flagged messages in the mailbox</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%!</entry>\n\t\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t\t<entry>\n\t\t\t\t\t\t\t\t<quote>!</quote>: one flagged message;\n\t\t\t\t\t\t\t\t<quote>!!</quote>: two flagged messages;\n\t\t\t\t\t\t\t\t<quote>n!</quote>: n flagged messages (for n &gt; 2).\n\t\t\t\t\t\t\t\tOtherwise prints nothing.\n\t\t\t\t\t\t\t</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%d</entry>\n\t\t\t\t\t\t\t<entry>* ‡</entry>\n\t\t\t\t\t\t\t<entry>Number of deleted messages</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%L</entry>\n\t\t\t\t\t\t\t<entry>* ‡</entry>\n\t\t\t\t\t\t\t<entry>Number of messages after limiting</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%t</entry>\n\t\t\t\t\t\t\t<entry>* ‡</entry>\n\t\t\t\t\t\t\t<entry>Number of tagged messages</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%&gt;X</entry>\n\t\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t\t<entry>Right justify the rest of the string and pad with <quote>X</quote></entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%|X</entry>\n\t\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t\t<entry>Pad to the end of the line with\n\t\t\t\t\t\t\t<quote>X</quote></entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>%*X</entry>\n\t\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t\t<entry>Soft-fill with character <quote>X</quote>as pad</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t</tbody>\n\t\t\t\t</tgroup>\n\t\t\t</table>\n\t\t\t<para>\n\t\t\t* = Can be optionally printed if nonzero\n\t\t\t</para>\n\t\t\t<para>\n\t\t\t‡ = Only applicable to the current folder\n\t\t\t</para>\n\t\t\t<para>\n\t\t\t\tHere are some examples.\n\t\t\t\tThey show the number of (F)lagged, (N)ew and (S)ize.\n\t\t\t</para>\n\t\t\t<table>\n\t\t\t\t<title>sidebar_format</title>\n\t\t\t\t<tgroup cols=\"2\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>Format</entry>\n\t\t\t\t\t\t\t<entry>Example</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry><literal>%B%?F? [%F]?%* %?N?%N/?%S</literal></entry>\n\t\t\t\t\t\t\t<entry><screen>mailbox [F]            N/S</screen></entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry><literal>%B%* %F:%N:%S</literal></entry>\n\t\t\t\t\t\t\t<entry><screen>mailbox              F:N:S</screen></entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry><literal>%B %?N?(%N)?%* %S</literal></entry>\n\t\t\t\t\t\t\t<entry><screen>mailbox (N)              S</screen></entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry><literal>%B%* ?F?%F/?%N</literal></entry>\n\t\t\t\t\t\t\t<entry><screen>mailbox                F/S</screen></entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t</tbody>\n\t\t\t\t</tgroup>\n\t\t\t</table>\n\t\t</sect4>\n\t\t<sect4 id=\"intro-sidebar-abbrev\">\n\t\t\t<title>Abbreviating Mailbox Names</title>\n\t\t\t<para>\n\t\t\t\t<literal>$sidebar_delim_chars</literal> tells Sidebar\n\t\t\t\thow to split up mailbox paths.  For local directories\n\t\t\t\tuse <quote>/</quote>; for IMAP folders use <quote>.</quote>\n\t\t\t</para>\n\t\t\t<sect5 id=\"intro-sidebar-abbrev-ex1\">\n\t\t\t\t<title>Example 1</title>\n\t\t\t\t<para>\n\t\t\t\t\tThis example works well if your mailboxes have unique names\n\t\t\t\t\tafter the last separator.\n\t\t\t\t</para>\n\t\t\t\t<para>\n\t\t\t\t\tAdd some mailboxes of diffent depths.\n\t\t\t\t</para>\n<screen>\nset folder=\"~/mail\"\nmailboxes =fruit/apple          =fruit/banana          =fruit/cherry\nmailboxes =water/sea/sicily     =water/sea/archipelago =water/sea/sibuyan\nmailboxes =water/ocean/atlantic =water/ocean/pacific   =water/ocean/arctic\n</screen>\n\t\t\t\t<para>\n\t\t\t\t\tShorten the names:\n\t\t\t\t</para>\n<screen>\nset sidebar_short_path                  <emphasis role=\"comment\"># Shorten mailbox names</emphasis>\nset sidebar_delim_chars=\"/\"             <emphasis role=\"comment\"># Delete everything up to the last / character</emphasis>\n</screen>\n\t\t\t\t<para>\n\t\t\t\t\tThe screenshot below shows what the Sidebar would look like\n\t\t\t\t\tbefore and after shortening.\n\t\t\t\t</para>\n<screen>\n|fruit/apple                            |apple\n|fruit/banana                           |banana\n|fruit/cherry                           |cherry\n|water/sea/sicily                       |sicily\n|water/sea/archipelago                  |archipelago\n|water/sea/sibuyan                      |sibuyan\n|water/ocean/atlantic                   |atlantic\n|water/ocean/pacific                    |pacific\n|water/ocean/arctic                     |arctic\n</screen>\n\t\t\t</sect5>\n\t\t\t<sect5 id=\"intro-sidebar-abbrev-ex2\">\n\t\t\t\t<title>Example 2</title>\n\t\t\t\t<para>\n\t\t\t\t\tThis example works well if you have lots of mailboxes which are arranged\n\t\t\t\t\tin a tree.\n\t\t\t\t</para>\n\t\t\t\t<para>\n\t\t\t\t\tAdd some mailboxes of diffent depths.\n\t\t\t\t</para>\n<screen>\nset folder=\"~/mail\"\nmailboxes =fruit\nmailboxes =fruit/apple =fruit/banana =fruit/cherry\nmailboxes =water\nmailboxes =water/sea\nmailboxes =water/sea/sicily =water/sea/archipelago =water/sea/sibuyan\nmailboxes =water/ocean\nmailboxes =water/ocean/atlantic =water/ocean/pacific =water/ocean/arctic\n</screen>\n\t\t\t\t<para>\n\t\t\t\t\tShorten the names:\n\t\t\t\t</para>\n<screen>\nset sidebar_short_path                  <emphasis role=\"comment\"># Shorten mailbox names</emphasis>\nset sidebar_delim_chars=\"/\"             <emphasis role=\"comment\"># Delete everything up to the last / character</emphasis>\nset sidebar_folder_indent               <emphasis role=\"comment\"># Indent folders whose names we've shortened</emphasis>\nset sidebar_indent_string=\"  \"          <emphasis role=\"comment\"># Indent with two spaces</emphasis>\n</screen>\n\t\t\t\t<para>\n\t\t\t\t\tThe screenshot below shows what the Sidebar would look like\n\t\t\t\t\tbefore and after shortening.\n\t\t\t\t</para>\n<screen>\n|fruit                                  |fruit\n|fruit/apple                            |  apple\n|fruit/banana                           |  banana\n|fruit/cherry                           |  cherry\n|water                                  |water\n|water/sea                              |  sea\n|water/sea/sicily                       |    sicily\n|water/sea/archipelago                  |    archipelago\n|water/sea/sibuyan                      |    sibuyan\n|water/ocean                            |  ocean\n|water/ocean/atlantic                   |    atlantic\n|water/ocean/pacific                    |    pacific\n|water/ocean/arctic                     |    arctic\n</screen>\n\t\t\t\t<para>\n\t\t\t\t\tSometimes, it will be necessary to add mailboxes, that you\n\t\t\t\t\tdon't use, to fill in part of the tree.\t This will trade\n\t\t\t\t\tvertical space for horizonal space (but it looks good).\n\t\t\t\t</para>\n\t\t\t</sect5>\n\t\t</sect4>\n\t\t<sect4 id=\"intro-sidebar-limit\">\n\t\t\t<title>Limiting the Number of Mailboxes</title>\n\t\t\t<para>\n\t\t\t\tIf you have a lot of mailboxes, sometimes it can be useful to hide\n\t\t\t\tthe ones you aren't using.\t<literal>$sidebar_new_mail_only</literal>\n\t\t\t\ttells Sidebar to only show mailboxes that contain new, or flagged, email.\n\t\t\t</para>\n\t\t\t<para>\n\t\t\t\tIf you want some mailboxes to be always visible, then use the\n\t\t\t\t<literal>sidebar_whitelist</literal> command.  It takes a list of\n\t\t\t\tmailboxes as parameters.\n\t\t\t</para>\n<screen>\nset sidebar_new_mail_only               <emphasis role=\"comment\"># Only mailboxes with new/flagged email</emphasis>\nsidebar_whitelist fruit fruit/apple     <emphasis role=\"comment\"># Always display these two mailboxes</emphasis>\n</screen>\n\t\t</sect4>\n\t</sect3>\n\t<sect3 id=\"intro-sidebar-colors\">\n\t\t<title>Colors</title>\n\t\t<para>\n\t\t\tHere is a sample color scheme:\n\t\t</para>\n<screen>\ncolor sidebar_indicator default color17         <emphasis role=\"comment\"># Dark blue background</emphasis>\ncolor sidebar_highlight white   color238        <emphasis role=\"comment\"># Grey background</emphasis>\ncolor sidebar_spoolfile yellow  default         <emphasis role=\"comment\"># Yellow</emphasis>\ncolor sidebar_new       green   default         <emphasis role=\"comment\"># Green</emphasis>\ncolor sidebar_flagged   red     default         <emphasis role=\"comment\"># Red</emphasis>\ncolor sidebar_divider   color8  default         <emphasis role=\"comment\"># Dark grey</emphasis>\n</screen>\n\t\t<para>\n\t\t\tThere is a priority order when coloring Sidebar mailboxes.\n\t\t\te.g.  If a mailbox has new mail it will have the\n\t\t\t<literal>sidebar_new</literal> color, even if it also contains\n\t\t\tflagged mails.\n\t\t</para>\n\t\t<table id=\"table-intro-sidebar-colors\">\n\t\t\t<title>Sidebar Color Priority</title>\n\t\t\t<tgroup cols=\"3\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Priority</entry>\n\t\t\t\t\t\t<entry>Color</entry>\n\t\t\t\t\t\t<entry>Description</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Highest</entry>\n\t\t\t\t\t\t<entry><literal>sidebar_indicator</literal></entry>\n\t\t\t\t\t\t<entry>Mailbox is open</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t<entry><literal>sidebar_highlight</literal></entry>\n\t\t\t\t\t\t<entry>Mailbox is highlighed</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t<entry><literal>sidebar_spoolfile</literal></entry>\n\t\t\t\t\t\t<entry>Mailbox is the spoolfile (receives incoming mail)</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t<entry><literal>sidebar_new</literal></entry>\n\t\t\t\t\t\t<entry>Mailbox contains new mail</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t<entry><literal>sidebar_flagged</literal></entry>\n\t\t\t\t\t\t<entry>Mailbox contains flagged mail</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Lowest</entry>\n\t\t\t\t\t\t<entry>(None)</entry>\n\t\t\t\t\t\t<entry>Mailbox does not match above</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\t</sect3>\n\t<sect3 id=\"intro-sidebar-bugfixes\">\n\t\t<title>Bug-fixes</title>\n\t\t<para>\n\t\t\tIf you haven't used Sidebar before, you can ignore this section.\n\t\t</para>\n\t\t<para>\n\t\t\tThese bugs have been fixed since the previous Sidebar release: 2015-11-11.\n\t\t</para>\n\t\t<itemizedlist>\n\t\t\t<listitem><para>Fix bug when starting in compose mode</para></listitem>\n\t\t\t<listitem><para>Fix bug with empty sidebar_divider_char string</para></listitem>\n\t\t\t<listitem><para>Fix bug with header wrapping</para></listitem>\n\t\t\t<listitem><para>Correctly handle utf8 character sequences</para></listitem>\n\t\t\t<listitem><para>Fix a bug in mh_buffy_update</para></listitem>\n\t\t\t<listitem><para>Fix refresh -- time overflowed short</para></listitem>\n\t\t\t<listitem><para>Protect against empty format strings</para></listitem>\n\t\t\t<listitem><para>Limit Sidebar width to COLS</para></listitem>\n\t\t\t<listitem><para>Handle unmailboxes * safely</para></listitem>\n\t\t\t<listitem><para>Refresh Sidebar after timeout</para></listitem>\n\t\t</itemizedlist>\n\t</sect3>\n\t<sect3 id=\"intro-sidebar-config-changes\">\n\t\t<title>Config Changes</title>\n\t\t<para>\n\t\t\tIf you haven't used Sidebar before, you can ignore this section.\n\t\t</para>\n\t\t<para>\n\t\t\tSome of the Sidebar config has been changed to make its meaning clearer.\n\t\t\tThese changes have been made since the previous Sidebar release: 2015-11-11.\n\t\t</para>\n\t\t<table id=\"table-intro-sidebar-config-changes\">\n\t\t\t<title>Config Changes</title>\n\t\t\t<tgroup cols=\"2\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Old Name</entry>\n\t\t\t\t\t\t<entry>New Name</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>$sidebar_delim</literal></entry>\n\t\t\t\t\t\t<entry><literal>$sidebar_divider_char</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>$sidebar_folderindent</literal></entry>\n\t\t\t\t\t\t<entry><literal>$sidebar_folder_indent</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>$sidebar_indentstr</literal></entry>\n\t\t\t\t\t\t<entry><literal>$sidebar_indent_string</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>$sidebar_newmail_only</literal></entry>\n\t\t\t\t\t\t<entry><literal>$sidebar_new_mail_only</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>$sidebar_refresh</literal></entry>\n\t\t\t\t\t\t<entry><literal>$sidebar_refresh_time</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>$sidebar_shortpath</literal></entry>\n\t\t\t\t\t\t<entry><literal>$sidebar_short_path</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>$sidebar_sort</literal></entry>\n\t\t\t\t\t\t<entry><literal>$sidebar_sort_method</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-scroll-down&gt;</literal></entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-page-down&gt;</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-scroll-up&gt;</literal></entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-page-up&gt;</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\t</sect3>\n</sect2>\n\n<sect2 id=\"intro-help\">\n<title>Help</title>\n\n<para>\nThe help screen is meant to offer a quick help to the user. It lists the\ncurrent configuration of key bindings and their associated commands\nincluding a short description, and currently unbound functions that\nstill need to be associated with a key binding (or alternatively, they\ncan be called via the Mutt command prompt).\n</para>\n\n</sect2>\n\n<sect2 id=\"intro-compose\">\n<title>Compose Menu</title>\n\n<para>\nThe compose menu features a split screen containing the information\nwhich really matter before actually sending a message by mail: who gets\nthe message as what (recipients and who gets what kind of\ncopy). Additionally, users may set security options like deciding\nwhether to sign, encrypt or sign and encrypt a message with/for what\nkeys. Also, it's used to attach messages, to re-edit any attachment\nincluding the message itself.\n</para>\n\n</sect2>\n\n<sect2 id=\"intro-alias\">\n<title>Alias Menu</title>\n\n<para>\nThe alias menu is used to help users finding the recipients of\nmessages. For users who need to contact many people, there's no need to\nremember addresses or names completely because it allows for searching,\ntoo. The alias mechanism and thus the alias menu also features grouping\nseveral addresses by a shorter nickname, the actual alias, so that users\ndon't have to select each single recipient manually.\n</para>\n\n</sect2>\n\n<sect2 id=\"intro-attach\">\n<title>Attachment Menu</title>\n\n<para>\nAs will be later discussed in detail, Mutt features a good and stable\nMIME implementation, that is, it supports sending and receiving messages\nof arbitrary MIME types. The attachment menu displays a message's\nstructure in detail: what content parts are attached to which parent\npart (which gives a true tree structure), which type is of what type and\nwhat size.  Single parts may saved, deleted or modified to offer great\nand easy access to message's internals.\n</para>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"menus\">\n<title>Moving Around in Menus</title>\n\n<para>\nThe most important navigation keys common to line- or entry-based menus\nare shown in <xref linkend=\"tab-keys-nav-line\"/> and in <xref\nlinkend=\"tab-keys-nav-page\"/> for page-based menus.\n</para>\n\n<table id=\"tab-keys-nav-line\">\n<title>Most common navigation keys in entry-based menus</title>\n<tgroup cols=\"3\">\n<thead>\n<row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>j or &lt;Down&gt;</entry><entry><literal>&lt;next-entry&gt;</literal></entry><entry>move to the next entry</entry></row>\n<row><entry>k or &lt;Up&gt;</entry><entry><literal>&lt;previous-entry&gt;</literal></entry><entry>move to the previous entry</entry></row>\n<row><entry>z or &lt;PageDn&gt;</entry><entry><literal>&lt;page-down&gt;</literal></entry><entry>go to the next page</entry></row>\n<row><entry>Z or &lt;PageUp&gt;</entry><entry><literal>&lt;page-up&gt;</literal></entry><entry>go to the previous page</entry></row>\n<row><entry>= or &lt;Home&gt;</entry><entry><literal>&lt;first-entry&gt;</literal></entry><entry>jump to the first entry</entry></row>\n<row><entry>* or &lt;End&gt;</entry><entry><literal>&lt;last-entry&gt;</literal></entry><entry>jump to the last entry</entry></row>\n<row><entry>q</entry><entry><literal>&lt;quit&gt;</literal></entry><entry>exit the current menu</entry></row>\n<row><entry>?</entry><entry><literal>&lt;help&gt;</literal></entry><entry>list all keybindings for the current menu</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<table id=\"tab-keys-nav-page\">\n<title>Most common navigation keys in page-based menus</title>\n<tgroup cols=\"3\">\n<thead>\n<row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>J or &lt;Return&gt;</entry><entry><literal>&lt;next-line&gt;</literal></entry><entry>scroll down one line</entry></row>\n<row><entry>&lt;Backspace&gt;</entry><entry><literal>&lt;previous-line&gt;</literal></entry><entry>scroll up one line</entry></row>\n<row><entry>K, &lt;Space&gt; or &lt;PageDn&gt;</entry><entry><literal>&lt;next-page&gt;</literal></entry><entry>move to the next page</entry></row>\n<row><entry>- or &lt;PageUp&gt;</entry><entry><literal>&lt;previous-page&gt;</literal></entry><entry>move the previous page</entry></row>\n<row><entry>&lt;Home&gt;</entry><entry><literal>&lt;top&gt;</literal></entry><entry>move to the top</entry></row>\n<row><entry>&lt;End&gt;</entry><entry><literal>&lt;bottom&gt;</literal></entry><entry>move to the bottom</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n</sect1>\n\n<sect1 id=\"editing\">\n<title>Editing Input Fields</title>\n\n<sect2 id=\"editing-intro\">\n<title>Introduction</title>\n\n<para>\nMutt has a built-in line editor for inputting text, e.g. email addresses\nor filenames. The keys used to manipulate text input are very similar to\nthose of Emacs. See <xref linkend=\"tab-keys-editor\"/> for a full\nreference of available functions, their default key bindings, and short\ndescriptions.\n</para>\n\n<table id=\"tab-keys-editor\">\n<title>Most common line editor keys</title>\n<tgroup cols=\"3\">\n<thead>\n<row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>^A or &lt;Home&gt;</entry><entry><literal>&lt;bol&gt;</literal></entry><entry>move to the start of the line</entry></row>\n<row><entry>^B or &lt;Left&gt;</entry><entry><literal>&lt;backward-char&gt;</literal></entry><entry>move back one char</entry></row>\n<row><entry>Esc B</entry><entry><literal>&lt;backward-word&gt;</literal></entry><entry>move back one word</entry></row>\n<row><entry>^D or &lt;Delete&gt;</entry><entry><literal>&lt;delete-char&gt;</literal></entry><entry>delete the char under the cursor</entry></row>\n<row><entry>^E or &lt;End&gt;</entry><entry><literal>&lt;eol&gt;</literal></entry><entry>move to the end of the line</entry></row>\n<row><entry>^F or &lt;Right&gt;</entry><entry><literal>&lt;forward-char&gt;</literal></entry><entry>move forward one char</entry></row>\n<row><entry>Esc F</entry><entry><literal>&lt;forward-word&gt;</literal></entry><entry>move forward one word</entry></row>\n<row><entry>&lt;Tab&gt;</entry><entry><literal>&lt;complete&gt;</literal></entry><entry>complete filename or alias</entry></row>\n<row><entry>^T</entry><entry><literal>&lt;complete-query&gt;</literal></entry><entry>complete address with query</entry></row>\n<row><entry>^K</entry><entry><literal>&lt;kill-eol&gt;</literal></entry><entry>delete to the end of the line</entry></row>\n<row><entry>Esc d</entry><entry><literal>&lt;kill-eow&gt;</literal></entry><entry>delete to the end of the word</entry></row>\n<row><entry>^W</entry><entry><literal>&lt;kill-word&gt;</literal></entry><entry>kill the word in front of the cursor</entry></row>\n<row><entry>^U</entry><entry><literal>&lt;kill-line&gt;</literal></entry><entry>delete entire line</entry></row>\n<row><entry>^V</entry><entry><literal>&lt;quote-char&gt;</literal></entry><entry>quote the next typed key</entry></row>\n<row><entry>&lt;Up&gt;</entry><entry><literal>&lt;history-up&gt;</literal></entry><entry>recall previous string from history</entry></row>\n<row><entry>&lt;Down&gt;</entry><entry><literal>&lt;history-down&gt;</literal></entry><entry>recall next string from history</entry></row>\n<row><entry>&lt;BackSpace&gt;</entry><entry><literal>&lt;backspace&gt;</literal></entry><entry>kill the char in front of the cursor</entry></row>\n<row><entry>Esc u</entry><entry><literal>&lt;upcase-word&gt;</literal></entry><entry>convert word to upper case</entry></row>\n<row><entry>Esc l</entry><entry><literal>&lt;downcase-word&gt;</literal></entry><entry>convert word to lower case</entry></row>\n<row><entry>Esc c</entry><entry><literal>&lt;capitalize-word&gt;</literal></entry><entry>capitalize the word</entry></row>\n<row><entry>^G</entry><entry>n/a</entry><entry>abort</entry></row>\n<row><entry>&lt;Return&gt;</entry><entry>n/a</entry><entry>finish editing</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nYou can remap the <emphasis>editor</emphasis> functions using the <link\nlinkend=\"bind\"><command>bind</command></link> command.  For example, to\nmake the &lt;Delete&gt; key delete the character in front of the cursor\nrather than under, you could use:\n</para>\n\n<screen>\nbind editor &lt;delete&gt; backspace\n</screen>\n\n</sect2>\n\n<sect2 id=\"editing-history\">\n<title>History</title>\n\n<para>\nMutt maintains a history for the built-in editor.  The number of items\nis controlled by the <link linkend=\"history\">$history</link> variable\nand can be made persistent using an external file specified using <link\nlinkend=\"history-file\">$history_file</link>.  You may cycle through them\nat an editor prompt by using the <literal>&lt;history-up&gt;</literal>\nand/or <literal>&lt;history-down&gt;</literal> commands.  Mutt will\nremember the currently entered text as you cycle through history, and\nwill wrap around to the initial entry line.\n</para>\n\n<para>\nMutt maintains several distinct history lists, one for each of the\nfollowing categories:\n</para>\n\n<itemizedlist>\n<listitem><para><literal>.muttrc</literal> commands</para></listitem>\n<listitem><para>addresses and aliases</para></listitem>\n<listitem><para>shell commands</para></listitem>\n<listitem><para>filenames</para></listitem>\n<listitem><para>patterns</para></listitem>\n<listitem><para>everything else</para></listitem>\n</itemizedlist>\n\n<para>\nMutt automatically filters out consecutively repeated items from the\nhistory. It also mimics the behavior of some shells by ignoring items\nstarting with a space. The latter feature can be useful in macros to not\nclobber the history's valuable entries with unwanted entries.\n</para>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"reading\">\n<title>Reading Mail</title>\n\n<para>\nSimilar to many other mail clients, there are two modes in which mail is\nread in Mutt.  The first is a list of messages in the mailbox, which is\ncalled the <quote>index</quote> menu in Mutt.  The second mode is the\ndisplay of the message contents.  This is called the\n<quote>pager.</quote>\n</para>\n\n<para>\nThe next few sections describe the functions provided in each of these\nmodes.\n</para>\n\n<sect2 id=\"index-menu\">\n<title>The Message Index</title>\n\n<para>\nCommon keys used to navigate through and manage messages in the index\nare shown in <xref linkend=\"tab-key-index\"/>. How messages are presented\nin the index menu can be customized using the <link\nlinkend=\"index-format\">$index_format</link> variable.\n</para>\n\n<table id=\"tab-key-index\">\n<title>Most common message index keys</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Key</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>c</entry><entry>change to a different mailbox</entry></row>\n<row><entry>Esc c</entry><entry>change to a folder in read-only mode</entry></row>\n<row><entry>C</entry><entry>copy the current message to another mailbox</entry></row>\n<row><entry>Esc C</entry><entry>decode a message and copy it to a folder</entry></row>\n<row><entry>Esc s</entry><entry>decode a message and save it to a folder</entry></row>\n<row><entry>D</entry><entry>delete messages matching a pattern</entry></row>\n<row><entry>d</entry><entry>delete the current message</entry></row>\n<row><entry>F</entry><entry>mark as important</entry></row>\n<row><entry>l</entry><entry>show messages matching a pattern</entry></row>\n<row><entry>N</entry><entry>mark message as new</entry></row>\n<row><entry>o</entry><entry>change the current sort method</entry></row>\n<row><entry>O</entry><entry>reverse sort the mailbox</entry></row>\n<row><entry>q</entry><entry>save changes and exit</entry></row>\n<row><entry>s</entry><entry>save-message</entry></row>\n<row><entry>T</entry><entry>tag messages matching a pattern</entry></row>\n<row><entry>t</entry><entry>toggle the tag on a message</entry></row>\n<row><entry>Esc t</entry><entry>toggle tag on entire message thread</entry></row>\n<row><entry>U</entry><entry>undelete messages matching a pattern</entry></row>\n<row><entry>u</entry><entry>undelete-message</entry></row>\n<row><entry>v</entry><entry>view-attachments</entry></row>\n<row><entry>x</entry><entry>abort changes and exit</entry></row>\n<row><entry>&lt;Return&gt;</entry><entry>display-message</entry></row>\n<row><entry>&lt;Tab&gt;</entry><entry>jump to the next new or unread message</entry></row>\n<row><entry>@</entry><entry>show the author's full e-mail address</entry></row>\n<row><entry>$</entry><entry>save changes to mailbox</entry></row>\n<row><entry>/</entry><entry>search</entry></row>\n<row><entry>Esc /</entry><entry>search-reverse</entry></row>\n<row><entry>^L</entry><entry>clear and redraw the screen</entry></row>\n<row><entry>^T</entry><entry>untag messages matching a pattern</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nIn addition to who sent the message and the subject, a short summary of\nthe disposition of each message is printed beside the message number.\nZero or more of the <quote>flags</quote> in <xref\nlinkend=\"tab-msg-status-flags\"/> may appear, some of which can be turned\non or off using these functions: <literal>&lt;set-flag&gt;</literal> and\n<literal>&lt;clear-flag&gt;</literal> bound by default to\n<quote>w</quote> and <quote>W</quote> respectively.\n</para>\n\n<para>\nFurthermore, the flags in <xref linkend=\"tab-msg-recip-flags\"/> reflect\nwho the message is addressed to. They can be customized with the <link\nlinkend=\"to-chars\">$to_chars</link> variable.\n</para>\n\n<table id=\"tab-msg-status-flags\">\n<title>Message status flags</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Flag</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>D</entry><entry>message is deleted (is marked for deletion)</entry></row>\n<row><entry>d</entry><entry>message has attachments marked for deletion</entry></row>\n<row><entry>K</entry><entry>contains a PGP public key</entry></row>\n<row><entry>N</entry><entry>message is new</entry></row>\n<row><entry>O</entry><entry>message is old</entry></row>\n<row><entry>P</entry><entry>message is PGP encrypted</entry></row>\n<row><entry>r</entry><entry>message has been replied to</entry></row>\n<row><entry>S</entry><entry>message is signed, and the signature is successfully verified</entry></row>\n<row><entry>s</entry><entry>message is signed</entry></row>\n<row><entry>!</entry><entry>message is flagged</entry></row>\n<row><entry>*</entry><entry>message is tagged</entry></row>\n<row><entry>n</entry><entry>thread contains new messages (only if collapsed)</entry></row>\n<row><entry>o</entry><entry>thread contains old messages (only if collapsed)</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<table id=\"tab-msg-recip-flags\">\n<title>Message recipient flags</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Flag</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>+</entry><entry>message is to you and you only</entry></row>\n<row><entry>T</entry><entry>message is to you, but also to or CC'ed to others</entry></row>\n<row><entry>C</entry><entry>message is CC'ed to you</entry></row>\n<row><entry>F</entry><entry>message is from you</entry></row>\n<row><entry>L</entry><entry>message is sent to a subscribed mailing list</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n</sect2>\n\n<sect2 id=\"pager-menu\">\n<title>The Pager</title>\n\n<para>\nBy default, Mutt uses its built-in pager to display the contents of\nmessages (an external pager such as <literal>less(1)</literal> can be\nconfigured, see <link linkend=\"pager\">$pager</link> variable).  The\npager is very similar to the Unix program <literal>less(1)</literal>\nthough not nearly as featureful.\n</para>\n\n<table id=\"tab-key-pager\">\n<title>Most common pager keys</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Key</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>&lt;Return&gt;</entry><entry>go down one line</entry></row>\n<row><entry>&lt;Space&gt;</entry><entry>display the next page (or next message if at the end of a message)</entry></row>\n<row><entry>-</entry><entry>go back to the previous page</entry></row>\n<row><entry>n</entry><entry>search for next match</entry></row>\n<row><entry>S</entry><entry>skip beyond quoted text</entry></row>\n<row><entry>T</entry><entry>toggle display of quoted text</entry></row>\n<row><entry>?</entry><entry>show keybindings</entry></row>\n<row><entry>/</entry><entry>regular expression search</entry></row>\n<row><entry>Esc /</entry><entry>backward regular expression search</entry></row>\n<row><entry>\\</entry><entry>toggle highlighting of search matches</entry></row>\n<row><entry>^</entry><entry>jump to the top of the message</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nIn addition to key bindings in <xref linkend=\"tab-key-pager\"/>, many of\nthe functions from the index menu are also available in the pager, such\nas <literal>&lt;delete-message&gt;</literal> or\n<literal>&lt;copy-message&gt;</literal> (this is one advantage over\nusing an external pager to view messages).\n</para>\n\n<para>\nAlso, the internal pager supports a couple other advanced features. For\none, it will accept and translate the <quote>standard</quote> nroff\nsequences for bold and underline. These sequences are a series of either\nthe letter, backspace (<quote>^H</quote>), the letter again for bold or\nthe letter, backspace, <quote>_</quote> for denoting underline. Mutt\nwill attempt to display these in bold and underline respectively if your\nterminal supports them. If not, you can use the bold and underline <link\nlinkend=\"color\">color</link> objects to specify a\n<command>color</command> or mono attribute for them.\n</para>\n\n<para>\nAdditionally, the internal pager supports the ANSI escape sequences for\ncharacter attributes.  Mutt translates them into the correct color and\ncharacter settings.  The sequences Mutt supports are:\n</para>\n\n<screen>\n\\e[<emphasis>Ps</emphasis>;<emphasis>Ps</emphasis>;..<emphasis>Ps</emphasis>;m\n</screen>\n\n<para>\nwhere <emphasis>Ps</emphasis> can be one of the codes shown in <xref\nlinkend=\"tab-ansi-esc\"/>.\n</para>\n\n<table id=\"tab-ansi-esc\">\n<title>ANSI escape sequences</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Escape code</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>0</entry><entry>All attributes off</entry></row>\n<row><entry>1</entry><entry>Bold on</entry></row>\n<row><entry>4</entry><entry>Underline on</entry></row>\n<row><entry>5</entry><entry>Blink on</entry></row>\n<row><entry>7</entry><entry>Reverse video on</entry></row>\n<row><entry>3<emphasis>&lt;color&gt;</emphasis></entry><entry>Foreground color is <emphasis>&lt;color&gt;</emphasis> (see <xref linkend=\"tab-color\"/>)</entry></row>\n<row><entry>4<emphasis>&lt;color&gt;</emphasis></entry><entry>Background color is <emphasis>&lt;color&gt;</emphasis> (see <xref linkend=\"tab-color\"/>)</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<table id=\"tab-color\">\n<title>Color sequences</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Color code</entry><entry>Color</entry></row>\n</thead>\n<tbody>\n<row><entry>0</entry><entry>Black</entry></row>\n<row><entry>1</entry><entry>Red</entry></row>\n<row><entry>2</entry><entry>Green</entry></row>\n<row><entry>3</entry><entry>Yellow</entry></row>\n<row><entry>4</entry><entry>Blue</entry></row>\n<row><entry>5</entry><entry>Magenta</entry></row>\n<row><entry>6</entry><entry>Cyan</entry></row>\n<row><entry>7</entry><entry>White</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nMutt uses these attributes for handling <literal>text/enriched</literal>\nmessages, and they can also be used by an external <link\nlinkend=\"auto-view\">autoview</link> script for highlighting purposes.\n</para>\n\n<note>\n<para>\nIf you change the colors for your display, for example by changing the\ncolor associated with color2 for your xterm, then that color will be\nused instead of green.\n</para>\n</note>\n\n<note>\n<para>\nNote that the search commands in the pager take regular expressions,\nwhich are not quite the same as the more complex <link\nlinkend=\"patterns\">patterns</link> used by the search command in the\nindex. This is because patterns are used to select messages by criteria\nwhereas the pager already displays a selected message.\n</para>\n</note>\n\n</sect2>\n\n<sect2 id=\"threads\">\n<title>Threaded Mode</title>\n\n<para>\nSo-called <quote>threads</quote> provide a hierarchy of messages where\nreplies are linked to their parent message(s). This organizational form\nis extremely useful in mailing lists where different parts of the\ndiscussion diverge. Mutt displays threads as a tree structure.\n</para>\n\n<para>\nIn Mutt, when a mailbox is <link linkend=\"sort\">sorted</link>\nby <emphasis>threads</emphasis>, there are a few additional functions\navailable in the <emphasis>index</emphasis>\nand <emphasis>pager</emphasis> modes as shown in\n<xref linkend=\"tab-key-threads\"/>.\n</para>\n\n<table id=\"tab-key-threads\">\n<title>Most common thread mode keys</title>\n<tgroup cols=\"3\">\n<thead>\n<row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>^D</entry><entry><literal>&lt;delete-thread&gt;</literal></entry><entry>delete all messages in the current thread</entry></row>\n<row><entry>^U</entry><entry><literal>&lt;undelete-thread&gt;</literal></entry><entry>undelete all messages in the current thread</entry></row>\n<row><entry>^N</entry><entry><literal>&lt;next-thread&gt;</literal></entry><entry>jump to the start of the next thread</entry></row>\n<row><entry>^P</entry><entry><literal>&lt;previous-thread&gt;</literal></entry><entry>jump to the start of the previous thread</entry></row>\n<row><entry>^R</entry><entry><literal>&lt;read-thread&gt;</literal></entry><entry>mark the current thread as read</entry></row>\n<row><entry>Esc d</entry><entry><literal>&lt;delete-subthread&gt;</literal></entry><entry>delete all messages in the current subthread</entry></row>\n<row><entry>Esc u</entry><entry><literal>&lt;undelete-subthread&gt;</literal></entry><entry>undelete all messages in the current subthread</entry></row>\n<row><entry>Esc n</entry><entry><literal>&lt;next-subthread&gt;</literal></entry><entry>jump to the start of the next subthread</entry></row>\n<row><entry>Esc p</entry><entry><literal>&lt;previous-subthread&gt;</literal></entry><entry>jump to the start of the previous subthread</entry></row>\n<row><entry>Esc r</entry><entry><literal>&lt;read-subthread&gt;</literal></entry><entry>mark the current subthread as read</entry></row>\n<row><entry>Esc t</entry><entry><literal>&lt;tag-thread&gt;</literal></entry><entry>toggle the tag on the current thread</entry></row>\n<row><entry>Esc v</entry><entry><literal>&lt;collapse-thread&gt;</literal></entry><entry>toggle collapse for the current thread</entry></row>\n<row><entry>Esc V</entry><entry><literal>&lt;collapse-all&gt;</literal></entry><entry>toggle collapse for all threads</entry></row>\n<row><entry>P</entry><entry><literal>&lt;parent-message&gt;</literal></entry><entry>jump to parent message in thread</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nCollapsing a thread displays only the first message in the thread and\nhides the others. This is useful when threads contain so many messages\nthat you can only see a handful of threads on the screen. See %M in\n<link linkend=\"index-format\">$index_format</link>.  For example, you\ncould use <quote>%?M?(#%03M)&amp;(%4l)?</quote> in <link\nlinkend=\"index-format\">$index_format</link> to optionally display the\nnumber of hidden messages if the thread is collapsed. The\n<literal>%?&lt;char&gt;?&lt;if-part&gt;&amp;&lt;else-part&gt;?</literal>\nsyntax is explained in detail in <link\nlinkend=\"formatstrings-conditionals\">format string conditionals</link>.\n</para>\n\n<para>\nTechnically, every reply should contain a list of its parent messages in\nthe thread tree, but not all do. In these cases, Mutt groups them by\nsubject which can be controlled using the <link\nlinkend=\"strict-threads\">$strict_threads</link> variable.\n</para>\n\n</sect2>\n\n<sect2 id=\"reading-misc\">\n<title>Miscellaneous Functions</title>\n\n<para>\nIn addition, the <emphasis>index</emphasis> and\n<emphasis>pager</emphasis> menus have these interesting functions:\n</para>\n\n<variablelist>\n\n<varlistentry>\n<term>\n<literal>&lt;create-alias&gt;</literal><anchor id=\"create-alias\"/>\n(default: a)\n</term>\n<listitem>\n<para>\nCreates a new alias based upon the current message (or prompts for a new\none).  Once editing is complete, an <link\nlinkend=\"alias\"><command>alias</command></link> command is added to the\nfile specified by the <link linkend=\"alias-file\">$alias_file</link>\nvariable for future use\n</para>\n\n<note>\n<para>\nMutt does not read the <link linkend=\"alias-file\">$alias_file</link>\nupon startup so you must explicitly <link\nlinkend=\"source\"><command>source</command></link> the file.\n</para>\n</note>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;check-traditional-pgp&gt;</literal><anchor\nid=\"check-traditional-pgp\"/> (default: Esc P)\n</term>\n<listitem>\n<para>\nThis function will search the current message for content signed or\nencrypted with PGP the <quote>traditional</quote> way, that is, without\nproper MIME tagging.  Technically, this function will temporarily change\nthe MIME content types of the body parts containing PGP data; this is\nsimilar to the <link\nlinkend=\"edit-type\"><literal>&lt;edit-type&gt;</literal></link>\nfunction's effect.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;edit&gt;</literal><anchor id=\"edit\"/> (default: e)\n</term>\n<listitem>\n<para>\nThis command (available in the index and pager) allows you to edit the\nraw current message as it's present in the mail folder.  After you have\nfinished editing, the changed message will be appended to the current\nfolder, and the original message will be marked for deletion; if the\nmessage is unchanged it won't be replaced.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;edit-type&gt;</literal><anchor id=\"edit-type\"/> (default:\n^E on the attachment menu, and in the pager and index menus; ^T on the\ncompose menu)\n</term>\n<listitem>\n<para>\nThis command is used to temporarily edit an attachment's content type to\nfix, for instance, bogus character set parameters.  When invoked from\nthe index or from the pager, you'll have the opportunity to edit the\ntop-level attachment's content type.  On the <link\nlinkend=\"attach-menu\">attachment menu</link>, you can change any\nattachment's content type. These changes are not persistent, and get\nlost upon changing folders.\n</para>\n\n<para>\nNote that this command is also available on the <link\nlinkend=\"compose-menu\">compose menu</link>.  There, it's used to\nfine-tune the properties of attachments you are going to send.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;enter-command&gt;</literal><anchor id=\"enter-command\"/>\n(default: <quote>:</quote>)\n</term>\n<listitem>\n<para>\nThis command is used to execute any command you would normally put in a\nconfiguration file.  A common use is to check the settings of variables,\nor in conjunction with <link linkend=\"macro\">macros</link> to change\nsettings on the fly.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;extract-keys&gt;</literal><anchor id=\"extract-keys\"/>\n(default: ^K)\n</term>\n<listitem>\n<para>\nThis command extracts PGP public keys from the current or tagged\nmessage(s) and adds them to your PGP public key ring.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;forget-passphrase&gt;</literal><anchor\nid=\"forget-passphrase\"/> (default: ^F)\n</term>\n<listitem>\n<para>\nThis command wipes the passphrase(s) from memory. It is useful, if you\nmisspelled the passphrase.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;list-reply&gt;</literal><anchor id=\"list-reply\"/> (default:\nL)\n</term>\n<listitem>\n<para>\nReply to the current or tagged message(s) by extracting any addresses\nwhich match the regular expressions given by the <link\nlinkend=\"lists\"><command>lists</command> or\n<command>subscribe</command></link> commands, but also honor any\n<literal>Mail-Followup-To</literal> header(s) if the <link\nlinkend=\"honor-followup-to\">$honor_followup_to</link> configuration\nvariable is set.  In addition, the <literal>List-Post</literal> header field is\nexamined for <literal>mailto:</literal> URLs specifying a mailing list address.\nUsing this when replying to messages posted to mailing lists helps avoid\nduplicate copies being sent to the author of the message you are replying to.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;pipe-message&gt;</literal><anchor id=\"pipe-message\"/>\n(default: |)\n</term>\n<listitem>\n<para>\nAsks for an external Unix command and pipes the current or tagged\nmessage(s) to it.  The variables <link\nlinkend=\"pipe-decode\">$pipe_decode</link>, <link\nlinkend=\"pipe-split\">$pipe_split</link>, <link\nlinkend=\"pipe-sep\">$pipe_sep</link> and <link\nlinkend=\"wait-key\">$wait_key</link> control the exact behavior of this\nfunction.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;resend-message&gt;</literal><anchor id=\"resend-message\"/>\n(default: Esc e)\n</term>\n<listitem>\n<para>\nMutt takes the current message as a template for a new message.  This\nfunction is best described as \"recall from arbitrary folders\".  It can\nconveniently be used to forward MIME messages while preserving the\noriginal mail structure. Note that the amount of headers included here\ndepends on the value of the <link linkend=\"weed\">$weed</link> variable.\n</para>\n\n<para>\nThis function is also available from the attachment menu. You can use\nthis to easily resend a message which was included with a bounce message\nas a <literal>message/rfc822</literal> body part.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;shell-escape&gt;</literal><anchor id=\"shell-escape\"/>\n(default: !)\n</term>\n<listitem>\n<para>\nAsks for an external Unix command and executes it.  The <link\nlinkend=\"wait-key\">$wait_key</link> can be used to control whether Mutt\nwill wait for a key to be pressed when the command returns (presumably\nto let the user read the output of the command), based on the return\nstatus of the named command. If no command is given, an interactive\nshell is executed.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;toggle-quoted&gt;</literal><anchor id=\"toggle-quoted\"/>\n(default: T)\n</term>\n<listitem>\n<para>\nThe pager uses the <link linkend=\"quote-regexp\">$quote_regexp</link>\nvariable to detect quoted text when displaying the body of the message.\nThis function toggles the display of the quoted material in the message.\nIt is particularly useful when being interested in just the response and\nthere is a large amount of quoted text in the way.\n</para>\n</listitem>\n</varlistentry>\n\n<varlistentry>\n<term>\n<literal>&lt;skip-quoted&gt;</literal><anchor id=\"skip-quoted\"/>\n(default: S)\n</term>\n<listitem>\n<para>\nThis function will go to the next line of non-quoted text which comes\nafter a line of quoted text in the internal pager.\n</para>\n</listitem>\n</varlistentry>\n\n</variablelist>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"sending\">\n<title>Sending Mail</title>\n\n<sect2 id=\"sending-intro\">\n<title>Introduction</title>\n\n<para>\nThe bindings shown in <xref linkend=\"tab-key-send\"/> are available in\nthe <emphasis>index</emphasis> and <emphasis>pager</emphasis> to start a\nnew message.\n</para>\n\n<table id=\"tab-key-send\">\n<title>Most common mail sending keys</title>\n<tgroup cols=\"3\">\n<thead>\n<row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>m</entry><entry><literal>&lt;compose&gt;</literal></entry><entry>compose a new message</entry></row>\n<row><entry>r</entry><entry><literal>&lt;reply&gt;</literal></entry><entry>reply to sender</entry></row>\n<row><entry>g</entry><entry><literal>&lt;group-reply&gt;</literal></entry><entry>reply to all recipients</entry></row>\n<row><entry>L</entry><entry><literal>&lt;list-reply&gt;</literal></entry><entry>reply to mailing list address</entry></row>\n<row><entry>f</entry><entry><literal>&lt;forward&gt;</literal></entry><entry>forward message</entry></row>\n<row><entry>b</entry><entry><literal>&lt;bounce&gt;</literal></entry><entry>bounce (remail) message</entry></row>\n<row><entry>Esc k</entry><entry><literal>&lt;mail-key&gt;</literal></entry><entry>mail a PGP public key to someone</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\n<emphasis>Bouncing</emphasis> a message sends the message as-is to the\nrecipient you specify.  <emphasis>Forwarding</emphasis> a message allows\nyou to add comments or modify the message you are forwarding.  These\nitems are discussed in greater detail in the next section <quote><link\nlinkend=\"forwarding-mail\">Forwarding and Bouncing Mail</link>.</quote>\n</para>\n\n<para>\nMutt will then enter the <emphasis>compose</emphasis> menu and prompt\nyou for the recipients to place on the <quote>To:</quote> header field\nwhen you hit <literal>m</literal> to start a new message. Next, it will\nask you for the <quote>Subject:</quote> field for the message, providing\na default if you are replying to or forwarding a message. You again have\nthe chance to adjust recipients, subject, and security settings right\nbefore actually sending the message. See also <link\nlinkend=\"askcc\">$askcc</link>, <link linkend=\"askbcc\">$askbcc</link>,\n<link linkend=\"autoedit\">$autoedit</link>, <link\nlinkend=\"bounce\">$bounce</link>, <link\nlinkend=\"fast-reply\">$fast_reply</link>, and <link\nlinkend=\"include\">$include</link> for changing how and if Mutt asks\nthese questions.\n</para>\n\n<para>\nWhen replying, Mutt fills these fields with proper values depending on\nthe reply type.  The types of replying supported are:\n</para>\n\n<variablelist>\n<varlistentry>\n<term>Simple reply</term>\n<listitem>\n<para>\nReply to the author directly.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>Group reply</term>\n<listitem>\n<para>\nReply to the author as well to all recipients except you; this consults\n<link linkend=\"alternates\"><command>alternates</command></link>.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>List reply</term>\n<listitem>\n<para>\nReply to all mailing list addresses found, either specified via\nconfiguration or auto-detected.  See <xref linkend=\"lists\"/> for\ndetails.\n</para>\n</listitem>\n</varlistentry>\n</variablelist>\n\n<para>\nAfter getting recipients for new messages, forwards or replies, Mutt\nwill then automatically start your <link linkend=\"editor\">$editor</link>\non the message body. If the <link\nlinkend=\"edit-headers\">$edit_headers</link> variable is set, the headers\nwill be at the top of the message in your editor; the message body\nshould start on a new line after the existing blank line at the end of\nheaders.  Any messages you are replying to will be added in sort order\nto the message, with appropriate\n<link linkend=\"attribution\">$attribution</link>, <link\nlinkend=\"indent-string\">$indent_string</link> and <link\nlinkend=\"post-indent-string\">$post_indent_string</link>.  When\nforwarding a message, if the <link\nlinkend=\"mime-forward\">$mime_forward</link> variable is unset, a copy of\nthe forwarded message will be included.  If you have specified a <link\nlinkend=\"signature\">$signature</link>, it will be appended to the\nmessage.\n</para>\n\n<para>\nOnce you have finished editing the body of your mail message, you are\nreturned to the <emphasis>compose</emphasis> menu providing the\nfunctions shown in <xref linkend=\"tab-func-compose\"/> to modify, send or\npostpone the message.\n</para>\n\n<table id=\"tab-func-compose\">\n<title>Most common compose menu keys</title>\n<tgroup cols=\"3\">\n<thead>\n<row><entry>Key</entry><entry>Function</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>a</entry><entry><literal>&lt;attach-file&gt;</literal></entry><entry>attach a file</entry></row>\n<row><entry>A</entry><entry><literal>&lt;attach-message&gt;</literal></entry><entry>attach message(s) to the message</entry></row>\n<row><entry>Esc k</entry><entry><literal>&lt;attach-key&gt;</literal></entry><entry>attach a PGP public key</entry></row>\n<row><entry>d</entry><entry><literal>&lt;edit-description&gt;</literal></entry><entry>edit description on attachment</entry></row>\n<row><entry>D</entry><entry><literal>&lt;detach-file&gt;</literal></entry><entry>detach a file</entry></row>\n<row><entry>t</entry><entry><literal>&lt;edit-to&gt;</literal></entry><entry>edit the To field</entry></row>\n<row><entry>Esc f</entry><entry><literal>&lt;edit-from&gt;</literal></entry><entry>edit the From field</entry></row>\n<row><entry>r</entry><entry><literal>&lt;edit-reply-to&gt;</literal></entry><entry>edit the Reply-To field</entry></row>\n<row><entry>c</entry><entry><literal>&lt;edit-cc&gt;</literal></entry><entry>edit the Cc field</entry></row>\n<row><entry>b</entry><entry><literal>&lt;edit-bcc&gt;</literal></entry><entry>edit the Bcc field</entry></row>\n<row><entry>y</entry><entry><literal>&lt;send-message&gt;</literal></entry><entry>send the message</entry></row>\n<row><entry>s</entry><entry><literal>&lt;edit-subject&gt;</literal></entry><entry>edit the Subject</entry></row>\n<row><entry>S</entry><entry><literal>&lt;smime-menu&gt;</literal></entry><entry>select S/MIME options</entry></row>\n<row><entry>f</entry><entry><literal>&lt;edit-fcc&gt;</literal></entry><entry>specify an <quote>Fcc</quote> mailbox</entry></row>\n<row><entry>p</entry><entry><literal>&lt;pgp-menu&gt;</literal></entry><entry>select PGP options</entry></row>\n<row><entry>P</entry><entry><literal>&lt;postpone-message&gt;</literal></entry><entry>postpone this message until later</entry></row>\n<row><entry>q</entry><entry><literal>&lt;quit&gt;</literal></entry><entry>quit (abort) sending the message</entry></row>\n<row><entry>w</entry><entry><literal>&lt;write-fcc&gt;</literal></entry><entry>write the message to a folder</entry></row>\n<row><entry>i</entry><entry><literal>&lt;ispell&gt;</literal></entry><entry>check spelling (if available on your system)</entry></row>\n<row><entry>^F</entry><entry><literal>&lt;forget-passphrase&gt;</literal></entry><entry>wipe passphrase(s) from memory</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nThe compose menu is also used to edit the attachments for a message\nwhich can be either files or other messages. The\n<literal>&lt;attach-message&gt;</literal> function to will prompt you\nfor a folder to attach messages from. You can now tag messages in that\nfolder and they will be attached to the message you are sending.\n</para>\n\n<note>\n<para>\nNote that certain operations like composing a new mail, replying,\nforwarding, etc. are not permitted when you are in that folder. The %r\nin <link linkend=\"status-format\">$status_format</link> will change to a\n<quote>A</quote> to indicate that you are in attach-message mode.\n</para>\n</note>\n\n</sect2>\n\n<sect2 id=\"edit-header\">\n<title>Editing the Message Header</title>\n\n<para>\nWhen editing the header because of <link\nlinkend=\"edit-headers\">$edit_headers</link> being set, there are a\nseveral pseudo headers available which will not be included in sent\nmessages but trigger special Mutt behavior.\n</para>\n\n<sect3 id=\"fcc-header\">\n<title>Fcc: Pseudo Header</title>\n\n<para>\nIf you specify\n</para>\n\n<para>\n<literal>Fcc:</literal> <emphasis>filename</emphasis>\n</para>\n\n<para>\nas a header, Mutt will pick up <emphasis>filename</emphasis> just as if\nyou had used the <literal>&lt;edit-fcc&gt;</literal> function in the\n<emphasis>compose</emphasis> menu.  It can later be changed from the\ncompose menu.\n</para>\n\n</sect3>\n\n<sect3 id=\"attach-header\">\n<title>Attach: Pseudo Header</title>\n\n<para>\nYou can also attach files to your message by specifying\n</para>\n\n<para>\n<literal>Attach:</literal> <emphasis>filename</emphasis>\n[ <emphasis>description</emphasis> ]\n</para>\n\n<para>\nwhere <emphasis>filename</emphasis> is the file to attach and\n<emphasis>description</emphasis> is an optional string to use as the\ndescription of the attached file. Spaces in filenames have to be escaped\nusing backslash (<quote>\\</quote>).  The file can be removed as well as\nmore added from the compose menu.\n</para>\n\n</sect3>\n\n<sect3 id=\"pgp-header\">\n<title>Pgp: Pseudo Header</title>\n\n<para>\nIf you want to use PGP, you can specify\n</para>\n\n<para>\n<literal>Pgp:</literal> [ <literal>E</literal> | <literal>S</literal> | <literal>S</literal><emphasis>&lt;id&gt;</emphasis> ]\n\n</para>\n\n<para>\n<quote>E</quote> selects encryption, <quote>S</quote> selects signing\nand <quote>S&lt;id&gt;</quote> selects signing with the given key,\nsetting <link linkend=\"pgp-sign-as\">$pgp_sign_as</link> permanently. The\nselection can later be changed in the compose menu.\n</para>\n\n</sect3>\n\n<sect3 id=\"in-reply-to-header\">\n<title>In-Reply-To: Header</title>\n\n<para>\nWhen replying to messages, the <emphasis>In-Reply-To:</emphasis> header\ncontains the Message-Id of the message(s) you reply to. If you remove or\nmodify its value, Mutt will not generate a\n<emphasis>References:</emphasis> field, which allows you to create a new\nmessage thread, for example to create a new message to a mailing list\nwithout having to enter the mailing list's address.\n</para>\n\n<para>\nIf you intend to start a new thread by replying, please make really sure\nyou remove the <emphasis>In-Reply-To:</emphasis> header in your\neditor. Otherwise, though you'll produce a technically valid reply, some\nnetiquette guardians will be annoyed by this so-called <quote>thread\nhijacking</quote>.\n</para>\n\n</sect3>\n\n</sect2>\n\n<sect2 id=\"sending-crypto\">\n<title>Sending Cryptographically Signed/Encrypted Messages</title>\n\n<para>\nIf you have told Mutt to PGP or S/MIME encrypt a message, it will guide\nyou through a key selection process when you try to send the message.\nMutt will not ask you any questions about keys which have a certified\nuser ID matching one of the message recipients' mail addresses.\nHowever, there may be situations in which there are several keys, weakly\ncertified user ID fields, or where no matching keys can be found.\n</para>\n\n<para>\nIn these cases, you are dropped into a menu with a list of keys from\nwhich you can select one.  When you quit this menu, or Mutt can't find\nany matching keys, you are prompted for a user ID.  You can, as usually,\nabort this prompt using <literal>^G</literal>.  When you do so, Mutt\nwill return to the compose screen.\n</para>\n\n<para>\nOnce you have successfully finished the key selection, the message will\nbe encrypted using the selected public keys when sent out.\n</para>\n\n<para>\nMost fields of the entries in the key selection menu (see also <link\nlinkend=\"pgp-entry-format\">$pgp_entry_format</link>) have obvious\nmeanings.  But some explanations on the capabilities, flags, and\nvalidity fields are in order.\n</para>\n\n<para>\nThe flags sequence (<quote>%f</quote>) will expand to one of the flags\nin <xref linkend=\"tab-pgp-menuflags\"/>.\n</para>\n\n<table id=\"tab-pgp-menuflags\">\n<title>PGP key menu flags</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Flag</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>R</entry><entry>The key has been revoked and can't be used.</entry></row>\n<row><entry>X</entry><entry>The key is expired and can't be used.</entry></row>\n<row><entry>d</entry><entry>You have marked the key as disabled.</entry></row>\n<row><entry>c</entry><entry>There are unknown critical self-signature packets.</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nThe capabilities field (<quote>%c</quote>) expands to a two-character\nsequence representing a key's capabilities.  The first character gives\nthe key's encryption capabilities: A minus sign (<quote>-</quote>) means\nthat the key cannot be used for encryption.  A dot (<quote>.</quote>)\nmeans that it's marked as a signature key in one of the user IDs, but\nmay also be used for encryption.  The letter <quote>e</quote> indicates\nthat this key can be used for encryption.\n</para>\n\n<para>\nThe second character indicates the key's signing capabilities.  Once\nagain, a <quote>-</quote> implies <quote>not for signing</quote>,\n<quote>.</quote> implies that the key is marked as an encryption key in\none of the user-ids, and <quote>s</quote> denotes a key which can be\nused for signing.\n</para>\n\n<para>\nFinally, the validity field (<quote>%t</quote>) indicates how\nwell-certified a user-id is.  A question mark (<quote>?</quote>)\nindicates undefined validity, a minus character (<quote>-</quote>) marks\nan untrusted association, a space character means a partially trusted\nassociation, and a plus character (<quote>+</quote>) indicates complete\nvalidity.\n</para>\n\n</sect2>\n\n<sect2 id=\"ff\">\n<title>Sending Format=Flowed Messages</title>\n\n<sect3 id=\"ff-concept\">\n<title>Concept</title>\n\n<para>\n<literal>format=flowed</literal>-style messages (or\n<literal>f=f</literal> for short) are <literal>text/plain</literal>\nmessages that consist of paragraphs which a receiver's mail client may\nreformat to its own needs which mostly means to customize line lengths\nregardless of what the sender sent. Technically this is achieved by\nletting lines of a <quote>flowable</quote> paragraph end in spaces\nexcept for the last line.\n</para>\n\n<para>\nWhile for text-mode clients like Mutt it's the best way to assume only a\nstandard 80x25 character cell terminal, it may be desired to let the\nreceiver decide completely how to view a message.\n</para>\n\n</sect3>\n\n<sect3 id=\"ff-support\">\n<title>Mutt Support</title>\n\n<para>\nMutt only supports setting the required <literal>format=flowed</literal>\nMIME parameter on outgoing messages if the <link\nlinkend=\"text-flowed\">$text_flowed</link> variable is set, specifically\nit does not add the trailing spaces.\n</para>\n\n<para>\nAfter editing the initial message text and before entering the compose\nmenu, Mutt properly space-stuffs the message.\n<emphasis>Space-stuffing</emphasis> is required by RfC3676 defining\n<literal>format=flowed</literal> and means to prepend a space to:\n</para>\n\n<itemizedlist>\n<listitem><para>all lines starting with a space</para></listitem>\n<listitem><para>lines starting with the word\n<quote><literal>From</literal></quote> followed by\nspace</para></listitem>\n<listitem><para>all lines starting with\n<quote><literal>&gt;</literal></quote> which is not intended to be a\nquote character</para></listitem>\n</itemizedlist>\n\n<note>\n<para>\nMutt only supports space-stuffing for the first two types of lines but\nnot for the third: It is impossible to safely detect whether a leading\n<literal>&gt;</literal> character starts a quote or not. Furthermore,\nMutt only applies space-stuffing <emphasis>once</emphasis> after the\ninitial edit is finished.\n</para>\n</note>\n\n<para>\nAll leading spaces are to be removed by receiving clients to restore the\noriginal message prior to further processing.\n</para>\n\n</sect3>\n\n<sect3 id=\"ff-editor\">\n<title>Editor Considerations</title>\n\n<para>\nAs Mutt provides no additional features to compose\n<literal>f=f</literal> messages, it's completely up to the user and his\neditor to produce proper messages. Please consider your editor's\ndocumentation if you intend to send <literal>f=f</literal> messages.\n</para>\n\n<para>\nPlease note that when editing messages from the compose menu several\ntimes before really sending a mail, it's up to the user to ensure that\nthe message is properly space-stuffed.\n</para>\n\n<para>\nFor example, <emphasis>vim</emphasis> provides the <literal>w</literal>\nflag for its <literal>formatoptions</literal> setting to assist in\ncreating <literal>f=f</literal> messages, see <literal>:help\nfo-table</literal> for details.\n</para>\n\n</sect3>\n\n<sect3 id=\"ff-pager\">\n<title>Reformatting</title>\n\n<para>\n  Mutt has some support for reformatting when viewing and replying to\n  <literal>format=flowed</literal> messages.  In order to take advantage of these,\n  <link linkend=\"reflow-text\">$reflow_text</link> must be set.\n</para>\n\n<itemizedlist>\n  <listitem>\n  <para>\n    Paragraphs are automatically reflowed and wrapped at a width specified\n    by <link linkend=\"reflow-wrap\">$reflow_wrap</link>.\n  </para>\n  </listitem>\n  <listitem>\n  <para>\n    In its original format, the quoting style of <literal>format=flowed</literal>\n    messages can be difficult to read, and doesn't intermix well with\n    non-flowed replies.\n    Setting <link linkend=\"reflow-space-quotes\">$reflow_space_quotes</link>\n    adds spaces after each level of quoting when in the pager and\n    replying in a non-flowed format\n    (i.e. with <link linkend=\"text-flowed\">$text_flowed</link> unset).\n  </para>\n  </listitem>\n  <listitem>\n  <para>\n    If <link linkend=\"reflow-space-quotes\">$reflow_space_quotes</link>\n    is unset, mutt will still add one trailing space after all the\n    quotes in the pager (but not when replying).\n  </para>\n  </listitem>\n</itemizedlist>\n\n</sect3>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"forwarding-mail\">\n<title>Forwarding and Bouncing Mail</title>\n\n<para>\nBouncing and forwarding let you send an existing message to recipients\nthat you specify. Bouncing a message sends a verbatim copy of a message\nto alternative addresses as if they were the message's original\nrecipients specified in the Bcc header.  Forwarding a message, on the\nother hand, allows you to modify the message before it is resent (for\nexample, by adding your own comments). Bouncing is done using the\n<literal>&lt;bounce&gt;</literal> function and forwarding using the\n<literal>&lt;forward&gt;</literal> function bound to <quote>b</quote>\nand <quote>f</quote> respectively.\n</para>\n\n<para>\nForwarding can be done by including the original message in the new\nmessage's body (surrounded by indicating lines) or including it as a\nMIME attachment, depending on the value of the <link\nlinkend=\"mime-forward\">$mime_forward</link> variable.  Decoding of\nattachments, like in the pager, can be controlled by the <link\nlinkend=\"forward-decode\">$forward_decode</link> and <link\nlinkend=\"mime-forward-decode\">$mime_forward_decode</link> variables,\nrespectively.  The desired forwarding format may depend on the content,\ntherefore <link linkend=\"mime-forward\">$mime_forward</link> is a\nquadoption which, for example, can be set to <quote>ask-no</quote>.\n</para>\n\n<para>\nThe inclusion of headers is controlled by the current setting of the\n<link linkend=\"weed\">$weed</link> variable, unless <link\nlinkend=\"mime-forward\">$mime_forward</link> is set.\n</para>\n\n<para>\nEditing the message to forward follows the same procedure as sending or\nreplying to a message does.\n</para>\n\n</sect1>\n\n<sect1 id=\"postponing-mail\">\n<title>Postponing Mail</title>\n\n<para>\nAt times it is desirable to delay sending a message that you have\nalready begun to compose.  When the\n<literal>&lt;postpone-message&gt;</literal> function is used in the\n<emphasis>compose</emphasis> menu, the body of your message and\nattachments are stored in the mailbox specified by the <link\nlinkend=\"postponed\">$postponed</link> variable.  This means that you can\nrecall the message even if you exit Mutt and then restart it at a later\ntime.\n</para>\n\n<para>\nOnce a message is postponed, there are several ways to resume it.  From\nthe command line you can use the <quote>-p</quote> option, or if you\ncompose a new message from the <emphasis>index</emphasis> or\n<emphasis>pager</emphasis> you will be prompted if postponed messages\nexist.  If multiple messages are currently postponed, the\n<emphasis>postponed</emphasis> menu will pop up and you can select which\nmessage you would like to resume.\n</para>\n\n<note>\n<para>\nIf you postpone a reply to a message, the reply setting of the message\nis only updated when you actually finish the message and send it.  Also,\nyou must be in the same folder with the message you replied to for the\nstatus of the message to be updated.\n</para>\n</note>\n\n<para>\nSee also the <link linkend=\"postpone\">$postpone</link> quad-option.\n</para>\n\n</sect1>\n\n</chapter>\n\n<chapter id=\"configuration\">\n<title>Configuration</title>\n\n<sect1 id=\"configuration-files\">\n<title>Location of Initialization Files</title>\n\n<para>\nWhile the default configuration (or <quote>preferences</quote>) make\nMutt usable right out of the box, it is often desirable to tailor Mutt\nto suit your own tastes. When Mutt is first invoked, it will attempt to\nread the <quote>system</quote> configuration file (defaults set by your\nlocal system administrator), unless the <quote>-n</quote> <link\nlinkend=\"commandline\">command line</link> option is specified.  This\nfile is typically <literal>/usr/local/share/mutt/Muttrc</literal> or\n<literal>/etc/Muttrc</literal>. Mutt will next look for a file named\n<literal>.muttrc</literal> in your home directory.  If this file does\nnot exist and your home directory has a subdirectory named\n<literal>.mutt</literal>, Mutt tries to load a file named\n<literal>.mutt/muttrc</literal>.\n</para>\n\n<para>\n<literal>.muttrc</literal> is the file where you will usually place your\n<link linkend=\"commands\">commands</link> to configure Mutt.\n</para>\n\n<para>\nIn addition, Mutt supports version specific configuration files that are\nparsed instead of the default files as explained above.  For instance,\nif your system has a <literal>Muttrc-0.88</literal> file in the system\nconfiguration directory, and you are running version 0.88 of Mutt, this\nfile will be sourced instead of the <literal>Muttrc</literal> file.  The\nsame is true of the user configuration file, if you have a file\n<literal>.muttrc-0.88.6</literal> in your home directory, when you run\nMutt version 0.88.6, it will source this file instead of the default\n<literal>.muttrc</literal> file.  The version number is the same which\nis visible using the <quote>-v</quote> <link\nlinkend=\"commandline\">command line</link> switch or using the\n<literal>show-version</literal> key (default: V) from the index menu.\n</para>\n\n</sect1>\n\n<sect1 id=\"muttrc-syntax\" xreflabel=\"Syntax of Initialization Files\">\n<title>Syntax of Initialization Files</title>\n\n<para>\nAn initialization file consists of a series of <link\nlinkend=\"commands\">commands</link>.  Each line of the file may contain\none or more commands.  When multiple commands are used, they must be\nseparated by a semicolon (<quote>;</quote>).\n</para>\n\n<example id=\"ex-rc-multiple-cmds\">\n<title>Multiple configuration commands per line</title>\n<screen>\nset realname='Mutt user' ; ignore x-\n</screen>\n</example>\n\n<para>\nThe hash mark, or pound sign (<quote>#</quote>), is used as a\n<quote>comment</quote> character. You can use it to annotate your\ninitialization file. All text after the comment character to the end of\nthe line is ignored.\n</para>\n\n<example id=\"ex-ec-comment\">\n<title>Commenting configuration files</title>\n<screen>\nmy_hdr X-Disclaimer: Why are you listening to me? <emphasis role=\"comment\"># This is a comment</emphasis>\n</screen>\n</example>\n\n<para>\nSingle quotes (<quote>'</quote>) and double quotes (<quote>\"</quote>)\ncan be used to quote strings which contain spaces or other special\ncharacters.  The difference between the two types of quotes is similar\nto that of many popular shell programs, namely that a single quote is\nused to specify a literal string (one that is not interpreted for shell\nvariables or quoting with a backslash [see next paragraph]), while\ndouble quotes indicate a string for which should be evaluated.  For\nexample, backticks are evaluated inside of double quotes, but\n<emphasis>not</emphasis> for single quotes.\n</para>\n\n<para>\n<quote>\\</quote> quotes the next character, just as in shells such as\nbash and zsh.  For example, if want to put quotes <quote>\"</quote>\ninside of a string, you can use <quote>\\</quote> to force the next\ncharacter to be a literal instead of interpreted character.\n</para>\n\n<example id=\"ex-rc-quote\">\n<title>Escaping quotes in configuration files</title>\n<screen>\nset realname=\"Michael \\\"MuttDude\\\" Elkins\"\n</screen>\n</example>\n\n<para>\n<quote>\\\\</quote> means to insert a literal <quote>\\</quote> into the line.\n<quote>\\n</quote> and <quote>\\r</quote> have their usual C meanings of linefeed and\ncarriage-return, respectively.\n</para>\n\n<para>\nA <quote>\\</quote> at the end of a line can be used to split commands\nover multiple lines as it <quote>escapes</quote> the line end, provided\nthat the split points don't appear in the middle of command names. Lines\nare first concatenated before interpretation so that a multi-line can be\ncommented by commenting out the first line only.\n</para>\n\n<example id=\"ex-rc-split\">\n<title>Splitting long configuration commands over several lines</title>\n<screen>\nset status_format=\"some very \\\nlong value split \\\nover several lines\"\n</screen>\n</example>\n\n<para>\nIt is also possible to substitute the output of a Unix command in an\ninitialization file.  This is accomplished by enclosing the command in\nbackticks (``). In <xref linkend=\"ex-rc-backtick\"/>, the output of the\nUnix command <quote>uname -a</quote> will be substituted before the line\nis parsed.  Since initialization files are line oriented, only the first\nline of output from the Unix command will be substituted.\n</para>\n\n<example id=\"ex-rc-backtick\">\n<title>Using external command's output in configuration files</title>\n<screen>\nmy_hdr X-Operating-System: `uname -a`\n</screen>\n</example>\n\n<para>\nBoth environment variables and Mutt variables can be accessed by\nprepending <quote>$</quote> to the name of the variable. For example,\n</para>\n\n<example id=\"ex-rc-env\">\n<title>Using environment variables in configuration files</title>\n<screen>\nset record=+sent_on_$HOSTNAME\n</screen>\n</example>\n\n<para>\nwill cause Mutt to save outgoing messages to a folder named\n<quote>sent_on_kremvax</quote> if the environment variable\n<literal>$HOSTNAME</literal> is set to <quote>kremvax.</quote> (See\n<link linkend=\"record\">$record</link> for details.)\n</para>\n\n<para>\nMutt expands the variable when it is assigned, not when it is used. If\nthe value of a variable on the right-hand side of an assignment changes\nafter the assignment, the variable on the left-hand side will not be\naffected.\n</para>\n\n<para>\nThe commands understood by Mutt are explained in the next paragraphs.\nFor a complete list, see the <link linkend=\"commands\">command\nreference</link>.\n</para>\n\n<para>\nAll configuration files are expected to be in the current locale as\nspecified by the <link linkend=\"charset\">$charset</link> variable which\ndoesn't have a default value since it's determined by Mutt at startup.\nIf a configuration file is not encoded in the same character set the\n<link linkend=\"config-charset\">$config_charset</link> variable should be\nused: all lines starting with the next are recoded from <link\nlinkend=\"config-charset\">$config_charset</link> to <link\nlinkend=\"charset\">$charset</link>.\n</para>\n\n<para>\nThis mechanism should be avoided if possible as it has the following\nimplications:\n</para>\n\n<itemizedlist>\n\n<listitem><para>These variables should be set early in a configuration\nfile with <link linkend=\"charset\">$charset</link> preceding <link\nlinkend=\"config-charset\">$config_charset</link> so Mutt knows what\ncharacter set to convert to.</para></listitem>\n\n<listitem><para>If <link linkend=\"config-charset\">$config_charset</link>\nis set, it should be set in each configuration file because the value is\nglobal and <emphasis>not</emphasis> per configuration\nfile.</para></listitem>\n\n<listitem><para>Because Mutt first recodes a line before it attempts to\nparse it, a conversion introducing question marks or other characters as\npart of errors (unconvertable characters, transliteration) may introduce\nsyntax errors or silently change the meaning of certain tokens\n(e.g. inserting question marks into regular\nexpressions).</para></listitem>\n\n</itemizedlist>\n\n</sect1>\n\n<sect1 id=\"addrgroup\">\n<title>Address Groups</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>group</command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\" rep=\"repeat\">\n<option>-rx</option>\n<replaceable class=\"parameter\">expr</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<option>-addr</option>\n<replaceable class=\"parameter\">expr</replaceable>\n</arg>\n</group>\n\n<command>ungroup</command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<option>-rx</option>\n<replaceable class=\"parameter\">expr</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<option>-addr</option>\n<replaceable class=\"parameter\">expr</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nMutt supports grouping addresses logically into named groups. An address\nor address pattern can appear in several groups at the same time. These\ngroups can be used in <link linkend=\"patterns\">patterns</link> (for searching, limiting and tagging) and\nin hooks by using group patterns. This can be useful to classify mail\nand take certain actions depending on in what groups the message is.\nFor example, the mutt user's mailing list would fit into the categories\n<quote>mailing list</quote> and <quote>mutt-related</quote>. Using <link\nlinkend=\"send-hook\"><literal>send-hook</literal></link>, the sender can\nbe set to a dedicated one for writing mailing list messages, and the\nsignature could be set to a mutt-related one for writing to a mutt list\n&mdash; for other lists, the list sender setting still applies but a\ndifferent signature can be selected. Or, given a group only containing\nrecipients known to accept encrypted mail,\n<quote>auto-encryption</quote> can be achieved easily.\n</para>\n\n<para>\nThe <command>group</command> command is used to directly add either\naddresses or regular expressions to the specified group or groups. The\ndifferent categories of arguments to the <command>group</command>\ncommand can be in any order. The flags <literal>-rx</literal> and\n<literal>-addr</literal> specify what the following strings (that cannot\nbegin with a hyphen) should be interpreted as: either a regular\nexpression or an email address, respectively.\n</para>\n\n<para>\nThese address groups can also be created implicitly by the <link\nlinkend=\"alias\"><command>alias</command></link>, <link\nlinkend=\"lists\"><command>lists</command></link>, <link\nlinkend=\"lists\"><command>subscribe</command></link> and <link\nlinkend=\"alternates\"><command>alternates</command></link> commands by\nspecifying the optional <literal>-group</literal> option. For example,\n</para>\n\n<screen>\nalternates -group me address1 address2\nalternates -group me -group work address3\n</screen>\n\n<para>\nwould create a group named <quote>me</quote> which contains all your\naddresses and a group named <quote>work</quote> which contains only your\nwork address <emphasis>address3</emphasis>. Besides many other\npossibilities, this could be used to automatically mark your own\nmessages in a mailing list folder as read or use a special signature for\nwork-related messages.\n</para>\n\n<para>\nThe <command>ungroup</command> command is used to remove addresses or\nregular expressions from the specified group or groups. The syntax is\nsimilar to the <command>group</command> command, however the special\ncharacter <literal>*</literal> can be used to empty a group of all of\nits contents. As soon as a group gets empty because all addresses and\nregular expressions have been removed, it'll internally be removed, too\n(i.e. there cannot be an empty group). When removing regular expressions\nfrom a group, the pattern must be specified exactly as given to the\n<command>group</command> command or <literal>-group</literal> argument.\n</para>\n\n</sect1>\n\n<sect1 id=\"alias\">\n<title>Defining/Using Aliases</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>alias</command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">key</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">address</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">address</replaceable>\n</arg>\n\n<command>unalias</command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable>name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">key</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nIt's usually very cumbersome to remember or type out the address of\nsomeone you are communicating with.  Mutt allows you to create\n<quote>aliases</quote> which map a short string to a full address.\n</para>\n\n<note>\n<para>\nIf you want to create an alias for more than one address, you\n<emphasis>must</emphasis> separate the addresses with a comma\n(<quote>,</quote>).\n</para>\n</note>\n\n<para>\nThe optional <literal>-group</literal> argument to\n<command>alias</command> causes the aliased address(es) to be added to\nthe named <emphasis>group</emphasis>.\n</para>\n\n<para>\nTo remove an alias or aliases (<quote>*</quote> means all aliases):\n</para>\n\n<screen>\nalias muttdude me@cs.hmc.edu (Michael Elkins)\nalias theguys manny, moe, jack\n</screen>\n\n<para>\nUnlike other mailers, Mutt doesn't require aliases to be defined in a\nspecial file.  The <command>alias</command> command can appear anywhere\nin a configuration file, as long as this file is <link\nlinkend=\"source\"><command>source</command>d</link>.  Consequently, you\ncan have multiple alias files, or you can have all aliases defined in\nyour <literal>.muttrc</literal>.\n</para>\n\n<para>\nOn the other hand, the <link\nlinkend=\"create-alias\"><literal>&lt;create-alias&gt;</literal></link>\nfunction can use only one file, the one pointed to by the <link\nlinkend=\"alias-file\">$alias_file</link> variable (which is\n<literal>~/.muttrc</literal> by default). This file is not special\neither, in the sense that Mutt will happily append aliases to any file,\nbut in order for the new aliases to take effect you need to explicitly\n<link linkend=\"source\"><command>source</command></link> this file too.\n</para>\n\n<example id=\"ex-alias-external\">\n<title>Configuring external alias files</title>\n<screen>\nsource /usr/local/share/Mutt.aliases\nsource ~/.mail_aliases\nset alias_file=~/.mail_aliases\n</screen>\n</example>\n\n<para>\nTo use aliases, you merely use the alias at any place in Mutt where Mutt\nprompts for addresses, such as the <emphasis>To:</emphasis> or\n<emphasis>Cc:</emphasis> prompt.  You can also enter aliases in your\neditor at the appropriate headers if you have the <link\nlinkend=\"edit-headers\">$edit_headers</link> variable set.\n</para>\n\n<para>\nIn addition, at the various address prompts, you can use the tab\ncharacter to expand a partial alias to the full alias.  If there are\nmultiple matches, Mutt will bring up a menu with the matching aliases.\nIn order to be presented with the full list of aliases, you must hit tab\nwithout a partial alias, such as at the beginning of the prompt or after\na comma denoting multiple addresses.\n</para>\n\n<para>\nIn the alias menu, you can select as many aliases as you want with the\n<literal>select-entry</literal> key (default: &lt;Return&gt;), and use\nthe <emphasis>exit</emphasis> key (default: q) to return to the address\nprompt.\n</para>\n\n</sect1>\n\n<sect1 id=\"bind\">\n<title>Changing the Default Key Bindings</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>bind</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">map</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">key</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">function</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command allows you to change the default key bindings (operation\ninvoked when pressing a key).\n</para>\n\n<para>\n<emphasis>map</emphasis> specifies in which menu the binding belongs.\nMultiple maps may be specified by separating them with commas (no\nadditional whitespace is allowed). The currently defined maps are:\n</para>\n\n<anchor id=\"maps\"/>\n<variablelist>\n\n<varlistentry>\n<term>generic</term>\n<listitem>\n<para>\nThis is not a real menu, but is used as a fallback for all of the other\nmenus except for the pager and editor modes.  If a key is not defined in\nanother menu, Mutt will look for a binding to use in this menu.  This\nallows you to bind a key to a certain function in multiple menus instead\nof having multiple <command>bind</command> statements to accomplish the\nsame task.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>alias</term>\n<listitem>\n<para>\nThe alias menu is the list of your personal aliases as defined in your\n<literal>.muttrc</literal>.  It is the mapping from a short alias name\nto the full email address(es) of the recipient(s).\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>attach</term>\n<listitem>\n<para>\nThe attachment menu is used to access the attachments on received\nmessages.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>browser</term>\n<listitem>\n<para>\nThe browser is used for both browsing the local directory structure, and\nfor listing all of your incoming mailboxes.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>editor</term>\n<listitem>\n<para>\nThe editor is used to allow the user to enter a single line of text, such as\nthe <emphasis>To</emphasis> or <emphasis>Subject</emphasis> prompts in the\n<literal>compose</literal> menu.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>index</term>\n<listitem>\n<para>\nThe index is the list of messages contained in a mailbox.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>compose</term>\n<listitem>\n<para>\nThe compose menu is the screen used when sending a new message.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>pager</term>\n<listitem>\n<para>\nThe pager is the mode used to display message/attachment data, and help\nlistings.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>pgp</term>\n<listitem>\n<para>\nThe pgp menu is used to select the OpenPGP keys used to encrypt outgoing\nmessages.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>smime</term>\n<listitem>\n<para>\nThe smime menu is used to select the OpenSSL certificates used to\nencrypt outgoing messages.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>postpone</term>\n<listitem>\n<para>\nThe postpone menu is similar to the index menu, except is used when\nrecalling a message the user was composing, but saved until later.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>query</term>\n<listitem>\n<para>\nThe query menu is the browser for results returned by <link\nlinkend=\"query-command\">$query_command</link>.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>mix</term>\n<listitem>\n<para>\nThe mixmaster screen is used to select remailer options for outgoing\nmessages (if Mutt is compiled with Mixmaster support).\n</para>\n</listitem>\n</varlistentry>\n</variablelist>\n\n<para>\n<emphasis>key</emphasis> is the key (or key sequence) you wish to bind.\nTo specify a control character, use the sequence\n<emphasis>\\Cx</emphasis>, where <emphasis>x</emphasis> is the letter of\nthe control character (for example, to specify control-A use\n<quote>\\Ca</quote>).  Note that the case of <emphasis>x</emphasis> as\nwell as <emphasis>\\C</emphasis> is ignored, so that\n<emphasis>\\CA</emphasis>, <emphasis>\\Ca</emphasis>,\n<emphasis>\\cA</emphasis> and <emphasis>\\ca</emphasis> are all\nequivalent.  An alternative form is to specify the key as a three digit\noctal number prefixed with a <quote>\\</quote> (for example\n<emphasis>\\177</emphasis> is equivalent to <emphasis>\\c?</emphasis>). In\naddition, <emphasis>key</emphasis> may be a symbolic name as shown in\n<xref linkend=\"tab-key-names\"/>.\n</para>\n\n<table id=\"tab-key-names\">\n<title>Symbolic key names</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Symbolic name</entry><entry>Meaning</entry></row>\n</thead>\n<tbody>\n<row><entry>\\t</entry><entry>tab</entry></row>\n<row><entry>&lt;tab&gt;</entry><entry>tab</entry></row>\n<row><entry>&lt;backtab&gt;</entry><entry>backtab / shift-tab</entry></row>\n<row><entry>\\r</entry><entry>carriage return</entry></row>\n<row><entry>\\n</entry><entry>newline</entry></row>\n<row><entry>\\e</entry><entry>escape</entry></row>\n<row><entry>&lt;esc&gt;</entry><entry>escape</entry></row>\n<row><entry>&lt;up&gt;</entry><entry>up arrow</entry></row>\n<row><entry>&lt;down&gt;</entry><entry>down arrow</entry></row>\n<row><entry>&lt;left&gt;</entry><entry>left arrow</entry></row>\n<row><entry>&lt;right&gt;</entry><entry>right arrow</entry></row>\n<row><entry>&lt;pageup&gt;</entry><entry>Page Up</entry></row>\n<row><entry>&lt;pagedown&gt;</entry><entry>Page Down</entry></row>\n<row><entry>&lt;backspace&gt;</entry><entry>Backspace</entry></row>\n<row><entry>&lt;delete&gt;</entry><entry>Delete</entry></row>\n<row><entry>&lt;insert&gt;</entry><entry>Insert</entry></row>\n<row><entry>&lt;enter&gt;</entry><entry>Enter</entry></row>\n<row><entry>&lt;return&gt;</entry><entry>Return</entry></row>\n<row><entry>&lt;home&gt;</entry><entry>Home</entry></row>\n<row><entry>&lt;end&gt;</entry><entry>End</entry></row>\n<row><entry>&lt;space&gt;</entry><entry>Space bar</entry></row>\n<row><entry>&lt;f1&gt;</entry><entry>function key 1</entry></row>\n<row><entry>&lt;f10&gt;</entry><entry>function key 10</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nThe <literal>&lt;what-key&gt;</literal> function can be used to\nexplore keycode and symbolic names for other keys on your keyboard.\nExecuting this function will display information about each key\npressed, until terminated by <literal>^G</literal>.\n</para>\n\n<para>\n<emphasis>key</emphasis> does not need to be enclosed in quotes unless\nit contains a space (<quote>&nbsp;</quote>) or semi-colon\n(<quote>;</quote>).\n</para>\n\n<para>\n<emphasis>function</emphasis> specifies which action to take when\n<emphasis>key</emphasis> is pressed.  For a complete list of functions,\nsee the <link linkend=\"functions\">reference</link>. Note that the\n<command>bind</command> expects <emphasis>function</emphasis> to be\nspecified without angle brackets.\n</para>\n\n<para>\nThe special function <literal>&lt;noop&gt;</literal> unbinds the\nspecified key sequence.\n</para>\n\n</sect1>\n\n<sect1 id=\"charset-hook\">\n<title>Defining Aliases for Character Sets</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>charset-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">alias</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">charset</replaceable>\n</arg>\n\n<command>iconv-hook<anchor id=\"iconv-hook\"/></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">charset</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">local-charset</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThe <command>charset-hook</command> command defines an alias for a\ncharacter set.  This is useful to properly display messages which are\ntagged with a character set name not known to Mutt.\n</para>\n\n<para>\nThe <command>iconv-hook</command> command defines a system-specific name\nfor a character set.  This is helpful when your systems character\nconversion library insists on using strange, system-specific names for\ncharacter sets.\n</para>\n\n</sect1>\n\n<sect1 id=\"folder-hook\">\n<title>Setting Variables Based Upon Mailbox</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>folder-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]regexp</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nIt is often desirable to change settings based on which mailbox you are\nreading.  The <command>folder-hook</command> command provides a method\nby which you can execute any configuration command.\n<emphasis>regexp</emphasis> is a regular expression specifying in which\nmailboxes to execute <emphasis>command</emphasis> before loading.  If a\nmailbox matches multiple <command>folder-hook</command>s, they are\nexecuted in the order given in the <literal>.muttrc</literal>.\n</para>\n\n<para>\nThe regexp parameter has <link linkend=\"shortcuts\">mailbox\nshortcut</link> expansion performed on the first character.\nSee  <xref linkend=\"mailbox-hook\"/> for more details.\n</para>\n\n<note>\n<para>\nIf you use the <quote>!</quote> shortcut for <link\nlinkend=\"spoolfile\">$spoolfile</link> at the beginning of the pattern,\nyou must place it inside of double or single quotes in order to\ndistinguish it from the logical <emphasis>not</emphasis> operator for\nthe expression.\n</para>\n</note>\n\n<note>\n<para>\nSettings are <emphasis>not</emphasis> restored when you leave the\nmailbox.  For example, a command action to perform is to change the\nsorting method based upon the mailbox being read:\n</para>\n\n<screen>\nfolder-hook mutt \"set sort=threads\"</screen>\n\n<para>\nHowever, the sorting method is not restored to its previous value when\nreading a different mailbox.  To specify a <emphasis>default</emphasis>\ncommand, use the pattern <quote>.</quote> before other\n<command>folder-hook</command>s adjusting a value on a per-folder basis\nbecause <command>folder-hook</command>s are evaluated in the order given\nin the configuration file.\n</para>\n</note>\n\n<note>\n<para>\nThe keyboard buffer will not be processed until after all hooks\nare run; multiple <link linkend=\"push\">push</link> or <link\nlinkend=\"exec\">exec</link> commands will end up being processed in\nreverse order.\n</para>\n</note>\n\n<para>\nThe following example will set the <link linkend=\"sort\">sort</link>\nvariable to <literal>date-sent</literal> for all folders but to\n<literal>threads</literal> for all folders containing\n<quote>mutt</quote> in their name.\n</para>\n\n<example id=\"ex-folder-sorting\">\n<title>Setting sort method based on mailbox name</title>\n<screen>\nfolder-hook . \"set sort=date-sent\"\nfolder-hook mutt \"set sort=threads\"\n</screen>\n</example>\n\n</sect1>\n\n<sect1 id=\"macro\">\n<title>Keyboard Macros</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>macro</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">menu</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">key</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">sequence</replaceable>\n</arg>\n<arg choice=\"opt\">\n<replaceable class=\"parameter\">description</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nMacros are useful when you would like a single key to perform a series\nof actions.  When you press <emphasis>key</emphasis> in menu\n<emphasis>menu</emphasis>, Mutt will behave as if you had typed\n<emphasis>sequence</emphasis>.  So if you have a common sequence of\ncommands you type, you can create a macro to execute those commands with\na single key or fewer keys.\n</para>\n\n<para>\n<emphasis>menu</emphasis> is the <link linkend=\"maps\">map</link> which\nthe macro will be bound in.  Multiple maps may be specified by\nseparating multiple menu arguments by commas. Whitespace may not be used\nin between the menu arguments and the commas separating them.\n</para>\n\n<para>\n<emphasis>key</emphasis> and <emphasis>sequence</emphasis> are expanded\nby the same rules as the <link linkend=\"bind\">key bindings</link> with\nsome additions.  The first is that control characters in\n<emphasis>sequence</emphasis> can also be specified as\n<emphasis>^x</emphasis>.  In order to get a caret (<quote>^</quote>) you\nneed to use <emphasis>^^</emphasis>.  Secondly, to specify a certain key\nsuch as <emphasis>up</emphasis> or to invoke a function directly, you\ncan use the format <emphasis>&lt;key name&gt;</emphasis> and\n<emphasis>&lt;function name&gt;</emphasis>.  For a listing of key names\nsee the section on <link linkend=\"bind\">key bindings</link>.  Functions\nare listed in the <link linkend=\"functions\">reference</link>.\n</para>\n\n<para>\nThe advantage with using function names directly is that the macros will\nwork regardless of the current key bindings, so they are not dependent\non the user having particular key definitions.  This makes them more\nrobust and portable, and also facilitates defining of macros in files\nused by more than one user (e.g., the system Muttrc).\n</para>\n\n<para>\nOptionally you can specify a descriptive text after\n<emphasis>sequence</emphasis>, which is shown in the help screens if\nthey contain a description.\n</para>\n\n<note>\n<para>\nMacro definitions (if any) listed in the help screen(s), are\nsilently truncated at the screen width, and are not wrapped.\n</para>\n</note>\n\n</sect1>\n\n<sect1 id=\"color\">\n<title>Using Color and Mono Video Attributes</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>color</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">object</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">foreground</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">background</replaceable>\n</arg>\n\n<command>color</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<option>header</option>\n</arg>\n<arg choice=\"plain\">\n<option>body</option>\n</arg>\n</group>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">foreground</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">background</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n\n<command>color</command>\n<arg choice=\"plain\">\n<option><emphasis>index-object</emphasis></option>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">foreground</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">background</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n\n<command>uncolor</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<option><emphasis>index-object</emphasis></option>\n</arg>\n<arg choice=\"plain\">\n<option>header</option>\n</arg>\n<arg choice=\"plain\">\n<option>body</option>\n</arg>\n</group>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nIf your terminal supports color, you can spice up Mutt by creating your\nown color scheme.  To define the color of an object (type of\ninformation), you must specify both a foreground color\n<emphasis>and</emphasis> a background color (it is not possible to only\nspecify one or the other).\n</para>\n\n<para>\n<emphasis>header</emphasis> and <emphasis>body</emphasis> match\n<emphasis>regexp</emphasis> in the header/body of a message,\n<emphasis>index-object</emphasis> can match <emphasis>pattern</emphasis>\n(see <xref linkend=\"patterns\"/>) in the message index. Note that IMAP\nserver-side searches (=b, =B, =h) are not supported for color index\npatterns.\n</para>\n\n<para>\n<emphasis>object</emphasis> can be one of:\n</para>\n\n<itemizedlist>\n<listitem><para>attachment</para></listitem>\n<listitem><para>bold (highlighting bold patterns in the body of messages)</para></listitem>\n<listitem><para>error (error messages printed by Mutt)</para></listitem>\n<listitem><para>hdrdefault (default color of the message header in the pager)</para></listitem>\n<listitem><para>index_author (color of the author name in the index, uses <emphasis>pattern</emphasis>)</para></listitem>\n<listitem><para>index_collapsed (the number of messages in a collapsed thread in the index)</para></listitem>\n<listitem><para>index_date (color of the date field in the index)</para></listitem>\n<listitem><para>index_flags (color of the message flags in the index)</para></listitem>\n<listitem><para>index_label (color of the message label in the index)</para></listitem>\n<listitem><para>index_number (color of the message number in the index)</para></listitem>\n<listitem><para>index_size (color of the message size and line number in the index)</para></listitem>\n<listitem><para>index_subject (color of the subject in the index, uses <emphasis>pattern</emphasis>)</para></listitem>\n<listitem><para>indicator (arrow or bar used to indicate the current item in a menu)</para></listitem>\n<listitem><para>markers (the <quote>+</quote> markers at the beginning of wrapped lines in the pager)</para></listitem>\n<listitem><para>message (informational messages)</para></listitem>\n<listitem><para>normal</para></listitem>\n<listitem><para><link linkend=\"progress\">progress</link> (visual progress bar)</para></listitem>\n<listitem><para>prompt</para></listitem>\n<listitem><para>quoted (text matching <link linkend=\"quote-regexp\">$quote_regexp</link> in the body of a message)</para></listitem>\n<listitem><para>quoted1, quoted2, ..., quoted<emphasis>N</emphasis> (higher levels of quoting)</para></listitem>\n<listitem><para>search (highlighting of words in the pager)</para></listitem>\n<listitem><para>signature</para></listitem><listitem><para>status (mode lines used to display info about the mailbox or message)</para></listitem>\n<listitem><para>tilde (the <quote>~</quote> used to pad blank lines in the pager)</para></listitem>\n<listitem><para>tree (thread tree drawn in the message index and attachment menu)</para></listitem>\n<listitem><para>underline (highlighting underlined patterns in the body of messages)</para></listitem>\n</itemizedlist>\n\n<para>\n<emphasis>index-object</emphasis> can be one of the following:\n</para>\n\n<itemizedlist>\n<listitem><para>index (default highlighting of the entire index line, uses <emphasis>pattern</emphasis>)</para></listitem>\n<listitem><para>index_date (the date field)</para></listitem>\n<listitem><para>index_flags (the message flags, %S %Z, uses <emphasis>pattern</emphasis>)</para></listitem>\n<listitem><para>index_number (the message number, %C)</para></listitem>\n<listitem><para>index_collapsed (the number of messages in a collapsed thread, %M)</para></listitem>\n<listitem><para>index_author (the author name, %A %a %F %L %n, uses <emphasis>pattern</emphasis>)</para></listitem>\n<listitem><para>index_subject (the subject, %s, uses <emphasis>pattern</emphasis>)</para></listitem>\n<listitem><para>index_size (the message size, %c %l)</para></listitem>\n<listitem><para>index_label (the message label, %y %Y)</para></listitem>\n<listitem><para>index_tags (the transformed message tags, %g)</para></listitem>\n<listitem><para>index_tag (an individual message tag, %G, uses <emphasis>pattern / tag name</emphasis>)</para></listitem>\n</itemizedlist>\n\n<para>\n<emphasis>foreground</emphasis> and <emphasis>background</emphasis> can\nbe one of the following:\n</para>\n\n<itemizedlist>\n<listitem><para>white</para></listitem>\n<listitem><para>black</para></listitem>\n<listitem><para>green</para></listitem>\n<listitem><para>magenta</para></listitem>\n<listitem><para>blue</para></listitem>\n<listitem><para>cyan</para></listitem>\n<listitem><para>yellow</para></listitem>\n<listitem><para>red</para></listitem>\n<listitem><para>default</para></listitem>\n<listitem><para>color<emphasis>x</emphasis></para>\n</listitem>\n</itemizedlist>\n\n<para>\n<emphasis>foreground</emphasis> can optionally be prefixed with the\nkeyword <literal>bright</literal> to make the foreground color boldfaced\n(e.g., <literal>brightred</literal>).\n</para>\n\n<para>\nIf your terminal supports it, the special keyword\n<emphasis>default</emphasis> can be used as a transparent color.  The\nvalue <emphasis>brightdefault</emphasis> is also valid.  If Mutt is\nlinked against the <emphasis>S-Lang</emphasis> library, you also need to\nset the <literal>$COLORFGBG</literal> environment variable to the\ndefault colors of your terminal for this to work; for example (for\nBourne-like shells):\n</para>\n\n<screen>\nset COLORFGBG=\"green;black\"\nexport COLORFGBG\n</screen>\n\n<note>\n<para>\nThe <emphasis>S-Lang</emphasis> library requires you to use the\n<emphasis>lightgray</emphasis> and <emphasis>brown</emphasis> keywords\ninstead of <emphasis>white</emphasis> and <emphasis>yellow</emphasis>\nwhen setting this variable.\n</para>\n</note>\n\n<note>\n<para>\nThe <command>uncolor</command> command can be applied to the index,\nheader and body objects only.  It removes entries from the list. You\n<emphasis>must</emphasis> specify the same pattern specified in the\n<command>color</command> command for it to be removed.  The pattern\n<quote>*</quote> is a special token which means to clear the color list\nof all entries.\n</para>\n</note>\n\n<para>\nMutt also recognizes the keywords <emphasis>color0</emphasis>,\n<emphasis>color1</emphasis>, ...,\n<emphasis>color</emphasis><emphasis>N-1</emphasis>\n(<emphasis>N</emphasis> being the number of colors supported by your\nterminal).  This is useful when you remap the colors for your display\n(for example by changing the color associated with\n<emphasis>color2</emphasis> for your xterm), since color names may then\nlose their normal meaning.\n</para>\n\n<anchor id=\"mono\"/>\n<para>\nIf your terminal does not support color, it is still possible change the\nvideo attributes through the use of the <quote>mono</quote>\ncommand. Usage:\n</para>\n\n<cmdsynopsis>\n<command>mono</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">object</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">attribute</replaceable>\n</arg>\n\n<command>mono</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<option>header</option>\n</arg>\n<arg choice=\"plain\">\n<option>body</option>\n</arg>\n</group>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">attribute</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n\n<command>mono</command>\n<arg choice=\"plain\">\n<option>index</option>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">attribute</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n\n<command>unmono</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<option><emphasis>index-object</emphasis></option>\n</arg>\n<arg choice=\"plain\">\n<option>header</option>\n</arg>\n<arg choice=\"plain\">\n<option>body</option>\n</arg>\n</group>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nFor <emphasis>object</emphasis>, see the <command>color</command>\ncommand. <emphasis>attribute</emphasis> can be one of the following:\n</para>\n\n<itemizedlist>\n<listitem><para>none</para></listitem>\n<listitem><para>bold</para></listitem>\n<listitem><para>underline</para></listitem>\n<listitem><para>reverse</para></listitem>\n<listitem><para>standout</para></listitem>\n</itemizedlist>\n\n</sect1>\n\n<sect1 id=\"msg-hdr-display\">\n<title>Message Header Display</title>\n\n<sect2 id=\"hdr-folding\">\n<title>Header Display</title>\n\n<para>\nWhen displaying a message in the pager, Mutt folds long header lines at\n<link linkend=\"wrap\">$wrap</link> columns. Though there're precise rules\nabout where to break and how, Mutt always folds headers using a tab for\nreadability. (Note that the sending side is not affected by this, Mutt\ntries to implement standards compliant folding.)\n</para>\n\n</sect2>\n\n<sect2 id=\"ignore\">\n<title>Selecting Headers</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>ignore</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n\n<command>unignore</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nMessages often have many header fields added by automatic processing\nsystems, or which may not seem useful to display on the screen.  This\ncommand allows you to specify header fields which you don't normally\nwant to see in the pager.\n</para>\n\n<para>\nYou do not need to specify the full header field name.  For example,\n<quote>ignore content-</quote> will ignore all header fields that begin\nwith the pattern <quote>content-</quote>. <quote>ignore *</quote> will\nignore all headers.\n</para>\n\n<para>\nTo remove a previously added token from the list, use the\n<quote>unignore</quote> command.  The <quote>unignore</quote> command\nwill make Mutt display headers with the given pattern.  For example, if\nyou do <quote>ignore x-</quote> it is possible to <quote>unignore\nx-mailer</quote>.\n</para>\n\n<para>\n<quote>unignore *</quote> will remove all tokens from the ignore list.\n</para>\n\n<example id=\"ex-header-weeding\">\n<title>Header weeding</title>\n<screen>\n<emphasis role=\"comment\"># Sven's draconian header weeding</emphasis>\nignore *\nunignore from date subject to cc\nunignore organization organisation x-mailer: x-newsreader: x-mailing-list:\nunignore posted-to:\n</screen>\n</example>\n\n</sect2>\n\n<sect2 id=\"hdr-order\">\n<title>Ordering Displayed Headers</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>hdr_order</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">header</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">header</replaceable>\n</arg>\n\n<command>unhdr_order</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>header</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nWith the <command>hdr_order</command> command you can specify an order\nin which Mutt will attempt to present these headers to you when viewing\nmessages.\n</para>\n\n<para>\n<quote><command>unhdr_order</command> *</quote> will clear all previous\nheaders from the order list, thus removing the header order effects set\nby the system-wide startup file.\n</para>\n\n<example id=\"ex-hdr-order\">\n<title>Configuring header display order</title>\n<screen>\nhdr_order From Date: From: To: Cc: Subject:\n</screen>\n</example>\n\n</sect2>\n</sect1>\n\n<sect1 id=\"alternates\">\n<title>Alternative Addresses</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>alternates</command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable>name</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable>regexp</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable>regexp</replaceable>\n</arg>\n\n<command>unalternates</command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable>name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>regexp</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nWith various functions, Mutt will treat messages differently, depending\non whether you sent them or whether you received them from someone else.\nFor instance, when replying to a message that you sent to a different\nparty, Mutt will automatically suggest to send the response to the\noriginal message's recipients &mdash; responding to yourself won't make\nmuch sense in many cases.  (See <link\nlinkend=\"reply-to\">$reply_to</link>.)\n</para>\n\n<para>\nMany users receive e-mail under a number of different addresses. To\nfully use Mutt's features here, the program must be able to recognize\nwhat e-mail addresses you receive mail under. That's the purpose of the\n<command>alternates</command> command: It takes a list of regular\nexpressions, each of which can identify an address under which you\nreceive e-mail.\n</para>\n\n<para>\nAs addresses are matched using regular expressions and not exact strict\ncomparisons, you should make sure you specify your addresses as precise\nas possible to avoid mismatches. For example, if you specify:\n</para>\n\n<screen>\nalternates user@example\n</screen>\n\n<para>\nMutt will consider <quote><literal>some-user@example</literal></quote>\nas being your address, too which may not be desired. As a solution, in\nsuch cases addresses should be specified as:\n</para>\n\n<screen>\nalternates '^user@example$'\n</screen>\n\n<para>\nThe <literal>-group</literal> flag causes all of the subsequent regular\nexpressions to be added to the named group.\n</para>\n\n<para>\nThe <command>unalternates</command> command can be used to write\nexceptions to <command>alternates</command> patterns. If an address\nmatches something in an <command>alternates</command> command, but you\nnonetheless do not think it is from you, you can list a more precise\npattern under an <command>unalternates</command> command.\n</para>\n\n<para>\nTo remove a regular expression from the <command>alternates</command>\nlist, use the <command>unalternates</command> command with exactly the\nsame <emphasis>regexp</emphasis>.  Likewise, if the\n<emphasis>regexp</emphasis> for an <command>alternates</command> command\nmatches an entry on the <command>unalternates</command> list, that\n<command>unalternates</command> entry will be removed. If the\n<emphasis>regexp</emphasis> for <command>unalternates</command> is\n<quote>*</quote>, <emphasis>all entries</emphasis> on\n<command>alternates</command> will be removed.\n</para>\n\n</sect1>\n\n<sect1 id=\"lists\">\n<title>Mailing Lists</title>\n\n<anchor id=\"subscribe\"/>\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>lists</command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n\n<command>unlists</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n</group>\n\n<command>subscribe</command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n\n<command>unsubscribe</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nMutt has a few nice features for <link linkend=\"using-lists\">handling\nmailing lists</link>.  In order to take advantage of them, you must\nspecify which addresses belong to mailing lists, and which mailing lists\nyou are subscribed to. Mutt also has limited support for auto-detecting\nmailing lists: it supports parsing <literal>mailto:</literal> links in\nthe common <literal>List-Post:</literal> header which has the same\neffect as specifying the list address via the <command>lists</command>\ncommand (except the group feature). Once you have done this, the <link\nlinkend=\"list-reply\"><literal>&lt;list-reply&gt;</literal></link>\nfunction will work for all known lists.  Additionally, when you send a\nmessage to a subscribed list, Mutt will add a Mail-Followup-To header to\ntell other users' mail user agents not to send copies of replies to your\npersonal address.\n</para>\n\n<note>\n<para>\nThe Mail-Followup-To header is a non-standard extension which is not\nsupported by all mail user agents.  Adding it is not bullet-proof\nagainst receiving personal CCs of list messages.  Also note that the\ngeneration of the Mail-Followup-To header is controlled by the <link\nlinkend=\"followup-to\">$followup_to</link> configuration variable since\nit's common practice on some mailing lists to send Cc upon replies\n(which is more a group- than a list-reply).\n</para>\n</note>\n\n<para>\nMore precisely, Mutt maintains lists of patterns for the addresses of\nknown and subscribed mailing lists.  Every subscribed mailing list is\nknown. To mark a mailing list as known, use the <command>list</command>\ncommand.  To mark it as subscribed, use <command>subscribe</command>.\n</para>\n\n<para>\nYou can use regular expressions with both commands. To mark all messages\nsent to a specific bug report's address on Debian's bug tracking system\nas list mail, for instance, you could say\n</para>\n\n<screen>\nsubscribe [0-9]+.*@bugs.debian.org</screen>\n\n<para>\nas it's often sufficient to just give a portion of the list's e-mail\naddress.\n</para>\n\n<para>\nSpecify as much of the address as you need to to remove ambiguity.  For\nexample, if you've subscribed to the Mutt mailing list, you will receive\nmail addressed to <literal>mutt-users@mutt.org</literal>.  So, to tell\nMutt that this is a mailing list, you could add <literal>lists\nmutt-users@</literal> to your initialization file.  To tell Mutt that\nyou are subscribed to it, add <literal><command>subscribe</command>\nmutt-users</literal> to your initialization file instead.  If you also\nhappen to get mail from someone whose address is\n<literal>mutt-users@example.com</literal>, you could use\n<literal><command>lists</command> ^mutt-users@mutt\\\\.org$</literal> or\n<literal><command>subscribe</command> ^mutt-users@mutt\\\\.org$</literal>\nto match only mail from the actual list.\n</para>\n\n<para>\nThe <literal>-group</literal> flag adds all of the subsequent regular\nexpressions to the named <link linkend=\"addrgroup\">address group</link>\nin addition to adding to the specified address list.\n</para>\n\n<para>\nThe <quote>unlists</quote> command is used to remove a token from the\nlist of known and subscribed mailing-lists. Use <quote>unlists *</quote>\nto remove all tokens.\n</para>\n\n<para>\nTo remove a mailing list from the list of subscribed mailing lists, but\nkeep it on the list of known mailing lists, use\n<command>unsubscribe</command>.\n</para>\n\n</sect1>\n\n<sect1 id=\"mbox-hook\">\n<title>Using Multiple Spool Mailboxes</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>mbox-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]regexp</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command is used to move read messages from a specified mailbox to a\ndifferent mailbox automatically when you quit or change folders.\n<emphasis>regexp</emphasis> is a regular expression specifying the\nmailbox to treat as a <quote>spool</quote> mailbox and\n<emphasis>mailbox</emphasis> specifies where mail should be saved when\nread.\n</para>\n\n<para>\nThe regexp parameter has <link linkend=\"shortcuts\">mailbox\nshortcut</link> expansion performed on the first character.\nSee  <xref linkend=\"mailbox-hook\"/> for more details.\n</para>\n\n<para>\nUnlike some of the other <emphasis>hook</emphasis> commands, only the\n<emphasis>first</emphasis> matching regexp is used (it is not possible\nto save read mail in more than a single mailbox).\n</para>\n\n</sect1>\n\n<sect1 id=\"mailboxes\">\n<title>Monitoring Incoming Mail</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>mailboxes</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n\n<command>unmailboxes</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nThis command specifies folders which can receive mail and which will be\nchecked for new messages periodically.\n</para>\n\n<para>\n<emphasis>folder</emphasis> can either be a local file or directory\n(Mbox/Mmdf or Maildir/Mh). If Mutt was built with POP and/or IMAP\nsupport, <emphasis>folder</emphasis> can also be a POP/IMAP folder\nURL. The URL syntax is described in <xref linkend=\"url-syntax\"/>, POP\nand IMAP are described in <xref linkend=\"pop\"/> and <xref\nlinkend=\"imap\"/> respectively.\n</para>\n\n<para>\nMutt provides a number of advanced features for handling (possibly many)\nfolders and new mail within them, please refer to <xref\nlinkend=\"new-mail\"/> for details (including in what situations and how\noften Mutt checks for new mail).\n</para>\n\n<para>\nThe <quote>unmailboxes</quote> command is used to remove a token from\nthe list of folders which receive mail. Use <quote>unmailboxes *</quote>\nto remove all tokens.\n</para>\n\n<note>\n<para>\nThe folders in the <command>mailboxes</command> command are resolved\nwhen the command is executed, so if these names contain <link\nlinkend=\"shortcuts\">shortcut characters</link> (such as <quote>=</quote>\nand <quote>!</quote>), any variable definition that affects these\ncharacters (like <link linkend=\"folder\">$folder</link> and <link\nlinkend=\"spoolfile\">$spoolfile</link>) should be set before the\n<command>mailboxes</command> command. If none of these shortcuts are\nused, a local path should be absolute as otherwise Mutt tries to find it\nrelative to the directory from where Mutt was started which may not\nalways be desired.\n</para>\n</note>\n\n</sect1>\n\n<sect1 id=\"my-hdr\">\n<title>User-Defined Headers</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>my_hdr</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">string</replaceable>\n</arg>\n\n<command>unmy_hdr</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">field</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nThe <command>my_hdr</command> command allows you to create your own\nheader fields which will be added to every message you send and appear\nin the editor if <link linkend=\"edit-headers\">$edit_headers</link> is\nset.\n</para>\n\n<para>\nFor example, if you would like to add an <quote>Organization:</quote>\nheader field to all of your outgoing messages, you can put the command\nsomething like shown in <xref linkend=\"ex-my-hdr\"/> in your\n<literal>.muttrc</literal>.\n</para>\n\n<example id=\"ex-my-hdr\">\n<title>Defining custom headers</title>\n<screen>\nmy_hdr Organization: A Really Big Company, Anytown, USA\n</screen>\n</example>\n\n<note>\n<para>\nSpace characters are <emphasis>not</emphasis> allowed between the\nkeyword and the colon (<quote>:</quote>). The standard for electronic\nmail (RFC2822) says that space is illegal there, so Mutt enforces the\nrule.\n</para>\n</note>\n\n<para>\nIf you would like to add a header field to a single message, you should\neither set the <link linkend=\"edit-headers\">$edit_headers</link>\nvariable, or use the <literal>&lt;edit-headers&gt;</literal> function\n(default: <quote>E</quote>) in the compose menu so that you can edit the\nheader of your message along with the body.\n</para>\n\n<para>\nTo remove user defined header fields, use the\n<command>unmy_hdr</command> command. You may specify an asterisk\n(<quote>*</quote>) to remove all header fields, or the fields to\nremove. For example, to remove all <quote>To</quote> and\n<quote>Cc</quote> header fields, you could use:\n</para>\n\n<screen>\nunmy_hdr to cc\n</screen>\n\n</sect1>\n\n<sect1 id=\"save-hook\">\n<title>Specify Default Save Mailbox</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>save-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command is used to override the default mailbox used when saving\nmessages. <emphasis>mailbox</emphasis> will be used as the default if\nthe message matches <emphasis>pattern</emphasis>, see <xref\nlinkend=\"pattern-hook\"/> for information on the exact format.\n</para>\n\n<para>\nTo provide more flexibility and good defaults, Mutt applies the expandos\nof <link linkend=\"index-format\">$index_format</link> to\n<emphasis>mailbox</emphasis> after it was expanded.\n</para>\n\n<example id=\"ex-save-hook-exando\">\n<title>Using %-expandos in <command>save-hook</command></title>\n<screen>\n<emphasis role=\"comment\"># default: save all to ~/Mail/&lt;author name&gt;</emphasis>\nsave-hook . ~/Mail/%F\n\n<emphasis role=\"comment\"># save from me@turing.cs.hmc.edu and me@cs.hmc.edu to $folder/elkins</emphasis>\nsave-hook me@(turing\\\\.)?cs\\\\.hmc\\\\.edu$ +elkins\n\n<emphasis role=\"comment\"># save from aol.com to $folder/spam</emphasis>\nsave-hook aol\\\\.com$ +spam\n</screen>\n</example>\n\n<para>\nAlso see the <link\nlinkend=\"fcc-save-hook\"><command>fcc-save-hook</command></link> command.\n</para>\n\n</sect1>\n\n<sect1 id=\"fcc-hook\">\n<title>Specify Default Fcc: Mailbox When Composing</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>fcc-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command is used to save outgoing mail in a mailbox other than <link\nlinkend=\"record\">$record</link>.  Mutt searches the initial list of\nmessage recipients for the first matching <emphasis>pattern</emphasis>\nand uses <emphasis>mailbox</emphasis> as the default Fcc: mailbox.  If\nno match is found the message will be saved to <link\nlinkend=\"record\">$record</link> mailbox.\n</para>\n\n<para>\nTo provide more flexibility and good defaults, Mutt applies the\nexpandos of <link linkend=\"index-format\">$index_format</link> to\n<emphasis>mailbox</emphasis> after it was expanded.\n</para>\n\n<para>\nSee <xref linkend=\"pattern-hook\"/> for information on the exact format\nof <emphasis>pattern</emphasis>.\n</para>\n\n<screen>fcc-hook [@.]aol\\\\.com$ +spammers</screen>\n\n<para>\n...will save a copy of all messages going to the aol.com domain to the\n`+spammers' mailbox by default.  Also see the <link\nlinkend=\"fcc-save-hook\"><command>fcc-save-hook</command></link> command.\n</para>\n\n</sect1>\n\n<sect1 id=\"fcc-save-hook\">\n<title>Specify Default Save Filename and Default Fcc: Mailbox at Once</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>fcc-save-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command is a shortcut, equivalent to doing both a <link\nlinkend=\"fcc-hook\"><command>fcc-hook</command></link> and a <link\nlinkend=\"save-hook\"><command>save-hook</command></link> with its\narguments, including %-expansion on <emphasis>mailbox</emphasis>\naccording to <link linkend=\"index-format\">$index_format</link>.\n</para>\n\n</sect1>\n\n<sect1 id=\"send-hook\">\n<title>Change Settings Based Upon Message Recipients</title>\n\n<anchor id=\"reply-hook\"/>\n<anchor id=\"send2-hook\"/>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>reply-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n\n<command>send-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n\n<command>send2-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThese commands can be used to execute arbitrary configuration commands\nbased upon recipients of the message.  <emphasis>pattern</emphasis> is\nused to match the message, see <xref linkend=\"pattern-hook\"/> for\ndetails. <emphasis>command</emphasis> is executed when\n<emphasis>pattern</emphasis> matches.\n</para>\n\n<para>\n<command>reply-hook</command> is matched against the message you are\n<emphasis>replying to</emphasis>, instead of the message you are\n<emphasis>sending</emphasis>.  <command>send-hook</command> is matched\nagainst all messages, both <emphasis>new</emphasis> and\n<emphasis>replies</emphasis>.\n</para>\n\n<note>\n<para>\n<command>reply-hook</command>s are matched <emphasis>before</emphasis> the\n<command>send-hook</command>, <emphasis>regardless</emphasis> of the order\nspecified in the user's configuration file.  However, you can inhibit\n<command>send-hook</command> in the reply case by using the pattern\n<literal>'! ~Q'</literal> (<emphasis>not replied</emphasis>, see\n<xref linkend=\"pattern-hook\"/>) in the <command>send-hook</command> to tell\nwhen <command>reply-hook</command> have been executed.\n</para>\n</note>\n\n<para>\n<command>send2-hook</command> is matched every time a message is\nchanged, either by editing it, or by using the compose menu to change\nits recipients or subject.  <command>send2-hook</command> is executed\nafter <command>send-hook</command>, and can, e.g., be used to set\nparameters such as the <link linkend=\"sendmail\">$sendmail</link>\nvariable depending on the message's sender address.\n</para>\n\n<para>\nFor each type of <command>send-hook</command> or\n<command>reply-hook</command>, when multiple matches occur, commands are\nexecuted in the order they are specified in the\n<literal>.muttrc</literal> (for that type of hook).\n</para>\n\n<para>\nExample: <literal><command>send-hook</command> mutt\n\"<command>set</command> mime_forward signature=''\"</literal>\n</para>\n\n<para>\nAnother typical use for this command is to change the values of the\n<link linkend=\"attribution\">$attribution</link>, <link\nlinkend=\"signature\">$signature</link> and <link\nlinkend=\"locale\">$locale</link> variables in order to change the\nlanguage of the attributions and signatures based upon the recipients.\n</para>\n\n<note>\n<para>\n<command>send-hook</command>'s are only executed once after getting the\ninitial list of recipients.  Adding a recipient after replying or\nediting the message will not cause any <command>send-hook</command> to\nbe executed, similarly if <link linkend=\"autoedit\">$autoedit</link> is\nset (as then the initial list of recipients is empty). Also note that\n<link linkend=\"my-hdr\"><command>my_hdr</command></link> commands which\nmodify recipient headers, or the message's subject, don't have any\neffect on the current message when executed from a\n<command>send-hook</command>.\n</para>\n</note>\n\n</sect1>\n\n<sect1 id=\"message-hook\">\n<title>Change Settings Before Formatting a Message</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>message-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command can be used to execute arbitrary configuration commands\nbefore viewing or formatting a message based upon information about the\nmessage.  <emphasis>command</emphasis> is executed if the\n<emphasis>pattern</emphasis> matches the message to be displayed. When\nmultiple matches occur, commands are executed in the order they are\nspecified in the <literal>.muttrc</literal>.\n</para>\n\n<para>\nSee <xref linkend=\"pattern-hook\"/> for information on the exact format\nof <emphasis>pattern</emphasis>.\n</para>\n\n<para>\nExample:\n</para>\n\n<screen>\nmessage-hook ~A 'set pager=builtin'\nmessage-hook '~f freshmeat-news' 'set pager=\"less \\\"+/^  subject: .*\\\"\"'\n</screen>\n\n</sect1>\n\n<sect1 id=\"crypt-hook\">\n<title>Choosing the Cryptographic Key of the Recipient</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>crypt-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">keyid</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nWhen encrypting messages with PGP/GnuPG or OpenSSL, you may want to\nassociate a certain key with a given e-mail address automatically,\neither because the recipient's public key can't be deduced from the\ndestination address, or because, for some reasons, you need to override\nthe key Mutt would normally use.  The <command>crypt-hook</command>\ncommand provides a method by which you can specify the ID of the public\nkey to be used when encrypting messages to a certain recipient.\nYou may use multiple crypt-hooks with the same regexp; multiple\nmatching crypt-hooks result in the use of multiple keyids for\na recipient.  During key selection, Mutt will confirm whether each\ncrypt-hook is to be used (unless the <link\nlinkend=\"crypt-confirmhook\">$crypt_confirmhook</link> option is unset).\nIf all crypt-hooks for a recipient are declined, Mutt will use the\noriginal recipient address for key selection instead.\n</para>\n\n<para>\nThe meaning of <emphasis>keyid</emphasis> is to be taken broadly in this\ncontext: You can either put a numerical key ID or fingerprint here, an\ne-mail address, or even just a real name.\n</para>\n\n</sect1>\n\n<sect1 id=\"push\">\n<title>Adding Key Sequences to the Keyboard Buffer</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>push</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">string</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command adds the named string to the beginning of the keyboard buffer. The string\nmay contain control characters, key names and function names like the\nsequence string in the <link linkend=\"macro\">macro</link> command. You\nmay use it to automatically run a sequence of commands at startup, or\nwhen entering certain folders. For example, <xref\nlinkend=\"ex-folder-hook-push\"/> shows how to automatically collapse all\nthreads when entering a folder.\n</para>\n\n<example id=\"ex-folder-hook-push\">\n<title>Embedding <command>push</command> in <command>folder-hook</command></title>\n<screen>\nfolder-hook . 'push &lt;collapse-all&gt;'\n</screen>\n</example>\n\n<para>\nFor using functions like shown in the example, it's important to use\nangle brackets (<quote>&lt;</quote> and <quote>&gt;</quote>) to make\nMutt recognize the input as a function name. Otherwise it will simulate\nindividual just keystrokes, i.e. <quote><literal>push\ncollapse-all</literal></quote> would be interpreted as if you had typed\n<quote>c</quote>, followed by <quote>o</quote>, followed by\n<quote>l</quote>, ..., which is not desired and may lead to very\nunexpected behavior.\n</para>\n\n<para>\nKeystrokes can be used, too, but are less portable because of\npotentially changed key bindings. With default bindings, this is\nequivalent to the above example:\n</para>\n\n<screen>\nfolder-hook . 'push \\eV'\n</screen>\n\n<para>\nbecause it simulates that Esc+V was pressed (which is the default\nbinding of <literal>&lt;collapse-all&gt;</literal>).\n</para>\n\n</sect1>\n\n<sect1 id=\"exec\">\n<title>Executing Functions</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>exec</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">function</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">function</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command can be used to execute any function. Functions are listed\nin the <link linkend=\"functions\">function reference</link>.\n<quote><command>exec</command> <literal>function</literal></quote> is\nequivalent to <quote><literal>push &lt;function&gt;</literal></quote>.\n</para>\n\n</sect1>\n\n<sect1 id=\"score-command\">\n<title>Message Scoring</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>score</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">value</replaceable>\n</arg>\n\n<command>unscore</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nThe <command>score</command> commands adds <emphasis>value</emphasis> to\na message's score if <emphasis>pattern</emphasis> matches it.\n<emphasis>pattern</emphasis> is a string in the format described in the\n<link linkend=\"patterns\">patterns</link> section (note: For efficiency\nreasons, patterns which scan information not available in the index,\nsuch as <literal>~b</literal>, <literal>~B</literal> or\n<literal>~h</literal>, may not be used).  <emphasis>value</emphasis> is\na positive or negative integer.  A message's final score is the sum\ntotal of all matching <command>score</command> entries.  However, you\nmay optionally prefix <emphasis>value</emphasis> with an equal sign\n(<quote>=</quote>) to cause evaluation to stop at a particular entry if\nthere is a match.  Negative final scores are rounded up to 0.\n</para>\n\n<para>\nThe <command>unscore</command> command removes score entries from the\nlist.  You <emphasis>must</emphasis> specify the same pattern specified\nin the <command>score</command> command for it to be removed.  The\npattern <quote>*</quote> is a special token which means to clear the\nlist of all score entries.\n</para>\n\n</sect1>\n\n<sect1 id=\"spam\">\n<title>Spam Detection</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>spam</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">format</replaceable>\n</arg>\n\n<command>nospam</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nMutt has generalized support for external spam-scoring filters.  By\ndefining your spam patterns with the <command>spam</command> and\n<literal>nospam</literal> commands, you can <emphasis>limit</emphasis>,\n<emphasis>search</emphasis>, and <emphasis>sort</emphasis> your mail\nbased on its spam attributes, as determined by the external filter. You\nalso can display the spam attributes in your index display using the\n<literal>%H</literal> selector in the <link\nlinkend=\"index-format\">$index_format</link> variable. (Tip: try\n<literal>%?H?[%H] ?</literal> to display spam tags only when they are\ndefined for a given message.)\n</para>\n\n<para>\nYour first step is to define your external filter's spam patterns using\nthe <command>spam</command> command. <emphasis>pattern</emphasis> should\nbe a regular expression that matches a header in a mail message. If any\nmessage in the mailbox matches this regular expression, it will receive\na <quote>spam tag</quote> or <quote>spam attribute</quote> (unless it\nalso matches a <command>nospam</command> pattern &mdash; see below.) The\nappearance of this attribute is entirely up to you, and is governed by\nthe <emphasis>format</emphasis> parameter. <emphasis>format</emphasis>\ncan be any static text, but it also can include back-references from the\n<emphasis>pattern</emphasis> expression. (A regular expression\n<quote>back-reference</quote> refers to a sub-expression contained\nwithin parentheses.) <literal>%1</literal> is replaced with the first\nback-reference in the regex, <literal>%2</literal> with the second, etc.\n</para>\n\n<para>\nTo match spam tags, mutt needs the corresponding header information\nwhich is always the case for local and POP folders but not for IMAP in\nthe default configuration. Depending on the spam header to be analyzed,\n<link linkend=\"imap-headers\">$imap_headers</link> may need to be\nadjusted.\n</para>\n\n<para>\nIf you're using multiple spam filters, a message can have more than one\nspam-related header. You can define <command>spam</command> patterns for\neach filter you use. If a message matches two or more of these patterns,\nand the <link linkend=\"spam-separator\">$spam_separator</link> variable\nis set to a string, then the message's spam tag will consist of all the\n<emphasis>format</emphasis> strings joined together, with the value of\n<link linkend=\"spam-separator\">$spam_separator</link> separating them.\n</para>\n\n<para>\nFor example, suppose one uses DCC, SpamAssassin, and PureMessage, then\nthe configuration might look like in <xref linkend=\"ex-spam\"/>.\n</para>\n\n<example id=\"ex-spam\">\n<title>Configuring spam detection</title>\n<screen>\nspam \"X-DCC-.*-Metrics:.*(....)=many\"         \"90+/DCC-%1\"\nspam \"X-Spam-Status: Yes\"                     \"90+/SA\"\nspam \"X-PerlMX-Spam: .*Probability=([0-9]+)%\" \"%1/PM\"\nset spam_separator=\", \"\n</screen>\n</example>\n\n<para>\nIf then a message is received that DCC registered with\n<quote>many</quote> hits under the <quote>Fuz2</quote> checksum, and\nthat PureMessage registered with a 97% probability of being spam, that\nmessage's spam tag would read <literal>90+/DCC-Fuz2,\n97/PM</literal>. (The four characters before <quote>=many</quote> in a\nDCC report indicate the checksum used &mdash; in this case,\n<quote>Fuz2</quote>.)\n</para>\n\n<para>\nIf the <link linkend=\"spam-separator\">$spam_separator</link> variable is\nunset, then each spam pattern match supersedes the previous one. Instead\nof getting joined <emphasis>format</emphasis> strings, you'll get only\nthe last one to match.\n</para>\n\n<para>\nThe spam tag is what will be displayed in the index when you use\n<literal>%H</literal> in the <link\nlinkend=\"index-format\">$index_format</link> variable. It's also the\nstring that the <literal>~H</literal> pattern-matching expression\nmatches against for <literal>&lt;search&gt;</literal> and\n<literal>&lt;limit&gt;</literal> functions. And it's what sorting by\nspam attribute will use as a sort key.\n</para>\n\n<para>\nThat's a pretty complicated example, and most people's actual\nenvironments will have only one spam filter. The simpler your\nconfiguration, the more effective Mutt can be, especially when it comes\nto sorting.\n</para>\n\n<para>\nGenerally, when you sort by spam tag, Mutt will sort\n<emphasis>lexically</emphasis> &mdash; that is, by ordering strings\nalphanumerically. However, if a spam tag begins with a number, Mutt will\nsort numerically first, and lexically only when two numbers are equal in\nvalue. (This is like UNIX's <literal>sort -n</literal>.) A message with\nno spam attributes at all &mdash; that is, one that didn't match\n<emphasis>any</emphasis> of your <command>spam</command> patterns\n&mdash; is sorted at lowest priority. Numbers are sorted next, beginning\nwith 0 and ranging upward. Finally, non-numeric strings are sorted, with\n<quote>a</quote> taking lower priority than <quote>z</quote>. Clearly,\nin general, sorting by spam tags is most effective when you can coerce\nyour filter to give you a raw number. But in case you can't, Mutt can\nstill do something useful.\n</para>\n\n<para>\nThe <command>nospam</command> command can be used to write exceptions to\n<command>spam</command> patterns. If a header pattern matches something\nin a <command>spam</command> command, but you nonetheless do not want it\nto receive a spam tag, you can list a more precise pattern under a\n<command>nospam</command> command.\n</para>\n\n<para>\nIf the <emphasis>pattern</emphasis> given to <command>nospam</command>\nis exactly the same as the <emphasis>pattern</emphasis> on an existing\n<command>spam</command> list entry, the effect will be to remove the\nentry from the spam list, instead of adding an exception.  Likewise, if\nthe <emphasis>pattern</emphasis> for a <command>spam</command> command\nmatches an entry on the <command>nospam</command> list, that nospam\nentry will be removed. If the <emphasis>pattern</emphasis> for\n<command>nospam</command> is <quote>*</quote>, <emphasis>all entries on\nboth lists</emphasis> will be removed. This might be the default action\nif you use <command>spam</command> and <command>nospam</command> in\nconjunction with a <command>folder-hook</command>.\n</para>\n\n<para>\nYou can have as many <command>spam</command> or\n<command>nospam</command> commands as you like.  You can even do your\nown primitive <command>spam</command> detection within Mutt &mdash; for\nexample, if you consider all mail from <literal>MAILER-DAEMON</literal>\nto be spam, you can use a <command>spam</command> command like this:\n</para>\n\n<screen>\nspam \"^From: .*MAILER-DAEMON\"       \"999\"\n</screen>\n\n</sect1>\n\n<sect1 id=\"set\">\n<title>Setting and Querying Variables</title>\n\n<sect2 id=\"var-types\">\n<title>Variable Types</title>\n\n<para>\nMutt supports these types of configuration variables:\n</para>\n\n<variablelist>\n<varlistentry>\n<term>boolean</term>\n<listitem>\n<para>\nA boolean expression, either <quote>yes</quote> or <quote>no</quote>.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>number</term>\n<listitem>\n<para>\nA signed integer number in the range -32768 to 32767.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>string</term>\n<listitem>\n<para>\nArbitrary text.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>path</term>\n<listitem>\n<para>\nA specialized string for representing paths including support for\nmailbox shortcuts (see <xref linkend=\"shortcuts\"/>) as well as tilde\n(<quote>~</quote>) for a user's home directory and more.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>quadoption</term>\n<listitem>\n<para>\nLike a boolean but triggers a prompt when set to <quote>ask-yes</quote>\nor <quote>ask-no</quote> with <quote>yes</quote> and <quote>no</quote>\npreselected respectively.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>sort order</term>\n<listitem>\n<para>\nA specialized string allowing only particular words as values depending\non the variable.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>regular expression</term>\n<listitem>\n<para>\nA regular expression, see <xref linkend=\"regexp\"/> for an introduction.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>folder magic</term>\n<listitem>\n<para>\nSpecifies the type of folder to use: <emphasis>mbox</emphasis>,\n<emphasis>mmdf</emphasis>, <emphasis>mh</emphasis> or\n<emphasis>maildir</emphasis>.  Currently only used to determine the type\nfor newly created folders.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>e-mail address</term>\n<listitem>\n<para>\nAn e-mail address either with or without realname. The older\n<quote><literal>user@example.org (Joe User)</literal></quote> form is\nsupported but strongly deprecated.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>user-defined</term>\n<listitem>\n<para>\nArbitrary text, see <xref linkend=\"set-myvar\"/> for details.\n</para>\n</listitem>\n</varlistentry>\n</variablelist>\n\n</sect2>\n\n<sect2 id=\"set-commands\">\n<title>Commands</title>\n\n<para>\nThe following commands are available to manipulate and query variables:\n</para>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>set</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<group choice=\"opt\">\n<arg choice=\"plain\"><option>no</option></arg>\n<arg choice=\"plain\"><option>inv</option></arg>\n</group>\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">variable=value</replaceable>\n</arg>\n</group>\n<arg choice=\"opt\" rep=\"repeat\"></arg>\n\n<command>toggle</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n\n<command>unset</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n\n<command>reset</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command is used to set (and unset) <link\nlinkend=\"variables\">configuration variables</link>.  There are four\nbasic types of variables: boolean, number, string and quadoption.\n<emphasis>boolean</emphasis> variables can be <emphasis>set</emphasis>\n(true) or <emphasis>unset</emphasis> (false).\n<emphasis>number</emphasis> variables can be assigned a positive integer\nvalue.  <emphasis>string</emphasis> variables consist of any number of\nprintable characters and must be enclosed in quotes if they contain\nspaces or tabs.  You may also use the escape sequences <quote>\\n</quote>\nand <quote>\\t</quote> for newline and tab, respectively.\n<emphasis>quadoption</emphasis> variables are used to control whether or\nnot to be prompted for certain actions, or to specify a default action.\nA value of <emphasis>yes</emphasis> will cause the action to be carried\nout automatically as if you had answered yes to the question.\nSimilarly, a value of <emphasis>no</emphasis> will cause the action to\nbe carried out as if you had answered <quote>no.</quote> A value of\n<emphasis>ask-yes</emphasis> will cause a prompt with a default answer\nof <quote>yes</quote> and <emphasis>ask-no</emphasis> will provide a\ndefault answer of <quote>no.</quote>\n</para>\n\n<para>\nPrefixing a variable with <quote>no</quote> will unset it.  Example:\n<literal><command>set</command> noaskbcc</literal>.\n</para>\n\n<para>\nFor <emphasis>boolean</emphasis> variables, you may optionally prefix\nthe variable name with <literal>inv</literal> to toggle the value (on or\noff).  This is useful when writing macros.  Example:\n<literal><command>set</command> invsmart_wrap</literal>.\n</para>\n\n<para>\nThe <command>toggle</command> command automatically prepends the\n<literal>inv</literal> prefix to all specified variables.\n</para>\n\n<para>\nThe <command>unset</command> command automatically prepends the\n<literal>no</literal> prefix to all specified variables.\n</para>\n\n<para>\nUsing the <literal>&lt;enter-command&gt;</literal> function in the\n<emphasis>index</emphasis> menu, you can query the value of a variable\nby prefixing the name of the variable with a question mark:\n</para>\n\n<screen>\nset ?allow_8bit\n</screen>\n\n<para>\nThe question mark is actually only required for boolean and quadoption\nvariables.\n</para>\n\n<para>\nThe <command>reset</command> command resets all given variables to the\ncompile time defaults (hopefully mentioned in this manual). If you use\nthe command <command>set</command> and prefix the variable with\n<quote>&amp;</quote> this has the same behavior as the\n<command>reset</command> command.\n</para>\n\n<para>\nWith the <command>reset</command> command there exists the special\nvariable <quote>all</quote>, which allows you to reset all variables to\ntheir system defaults.\n</para>\n\n</sect2>\n\n<sect2 id=\"set-myvar\">\n<title>User-Defined Variables</title>\n\n<sect3 id=\"set-myvar-intro\">\n<title>Introduction</title>\n\n<para>\nAlong with the variables listed in the <link\nlinkend=\"variables\">Configuration variables</link> section, Mutt\nsupports user-defined variables with names starting with\n<literal>my_</literal> as in, for example, <literal>my_cfgdir</literal>.\n</para>\n\n<para>\nThe <command>set</command> command either creates a custom\n<literal>my_</literal> variable or changes its value if it does exist\nalready. The <command>unset</command> and <command>reset</command>\ncommands remove the variable entirely.\n</para>\n\n<para>\nSince user-defined variables are expanded in the same way that\nenvironment variables are (except for the <link\nlinkend=\"shell-escape\">shell-escape</link> command and backtick\nexpansion), this feature can be used to make configuration files more\nreadable.\n</para>\n\n</sect3>\n\n<sect3 id=\"set-myvar-examples\">\n<title>Examples</title>\n\n<para>\nThe following example defines and uses the variable\n<literal>my_cfgdir</literal> to abbreviate the calls of the <link\nlinkend=\"source\"><command>source</command></link> command:\n</para>\n\n<example id=\"ex-myvar1\">\n<title>Using user-defined variables for config file readability</title>\n<screen>\nset my_cfgdir = $HOME/mutt/config\n\nsource $my_cfgdir/hooks\nsource $my_cfgdir/macros\n<emphasis role=\"comment\"># more source commands...</emphasis>\n</screen>\n</example>\n\n<para>\nA custom variable can also be used in macros to backup the current value\nof another variable. In the following example, the value of the <link\nlinkend=\"delete\">$delete</link> is changed temporarily while its\noriginal value is saved as <literal>my_delete</literal>.  After the\nmacro has executed all commands, the original value of <link\nlinkend=\"delete\">$delete</link> is restored.\n</para>\n\n<example id=\"ex-myvar2\">\n<title>Using user-defined variables for backing up other config option values</title>\n<screen>\nmacro pager ,x '\\\n&lt;enter-command&gt;set my_delete=$delete&lt;enter&gt;\\\n&lt;enter-command&gt;set delete=yes&lt;enter&gt;\\\n...\\\n&lt;enter-command&gt;set delete=$my_delete&lt;enter&gt;'\n</screen>\n</example>\n\n<para>\nSince Mutt expands such values already when parsing the configuration\nfile(s), the value of <literal>$my_delete</literal> in the\nlast example would be the value of <link linkend=\"delete\">$delete</link> exactly\nas it was at that point during parsing the configuration file. If\nanother statement would change the value for <link linkend=\"delete\">$delete</link>\nlater in the same or another file, it would have no effect on\n<literal>$my_delete</literal>. However, the expansion can\nbe deferred to runtime, as shown in the next example, when escaping the\ndollar sign.\n</para>\n\n<example id=\"ex-myvar3\">\n<title>Deferring user-defined variable expansion to runtime</title>\n<screen>\nmacro pager &lt;PageDown&gt; \"\\\n&lt;enter-command&gt; set my_old_pager_stop=\\$pager_stop pager_stop&lt;Enter&gt;\\\n&lt;next-page&gt;\\\n&lt;enter-command&gt; set pager_stop=\\$my_old_pager_stop&lt;Enter&gt;\\\n&lt;enter-command&gt; unset my_old_pager_stop&lt;Enter&gt;\"\n</screen>\n</example>\n\n<para>\nNote that there is a space between\n<literal>&lt;enter-command&gt;</literal> and the <command>set</command>\nconfiguration command, preventing Mutt from recording the\n<command>macro</command>'s commands into its history.\n</para>\n\n</sect3>\n\n</sect2>\n\n<sect2 id=\"set-conversions\">\n<title>Type Conversions</title>\n\n<para>\nVariables are always assigned string values which Mutt parses into its\ninternal representation according to the type of the variable, for\nexample an integer number for numeric types. For all queries (including\n$-expansion) the value is converted from its internal type back into\nstring. As a result, any variable can be assigned any value given that\nits content is valid for the target. This also counts for custom\nvariables which are of type string. In case of parsing errors, Mutt will\nprint error messages. <xref linkend=\"ex-myvar4\"/> demonstrates type\nconversions.\n</para>\n\n<example id=\"ex-myvar4\">\n<title>Type conversions using variables</title>\n<screen>\nset my_lines = \"5\"                <emphasis role=\"comment\"># value is string \"5\"</emphasis>\nset pager_index_lines = $my_lines <emphasis role=\"comment\"># value is integer 5</emphasis>\n\nset my_sort = \"date-received\"     <emphasis role=\"comment\"># value is string \"date-received\"</emphasis>\nset sort = \"last-$my_sort\"        <emphasis role=\"comment\"># value is sort last-date-received</emphasis>\n\nset my_inc = $read_inc            <emphasis role=\"comment\"># value is string \"10\" (default of $read_inc)</emphasis>\nset my_foo = $my_inc              <emphasis role=\"comment\"># value is string \"10\"</emphasis>\n</screen>\n</example>\n\n<para>\nThese assignments are all valid. If, however, the value of\n<literal>$my_lines</literal> would have been\n<quote>five</quote> (or something else that cannot be parsed into a\nnumber), the assignment to\n<literal>$pager_index_lines</literal> would have\nproduced an error message.\n</para>\n\n<para>\nType conversion applies to all configuration commands which take\narguments. But please note that every expanded value of a variable is\nconsidered just a single token. A working example is:\n</para>\n\n<screen>\nset my_pattern = \"~A\"\nset my_number = \"10\"\n\n<emphasis role=\"comment\"># same as: score ~A +10</emphasis>\nscore $my_pattern +$my_number</screen>\n\n<para>\nWhat does <emphasis>not</emphasis> work is:\n</para>\n\n<screen>\nset my_mx = \"+mailbox1 +mailbox2\"\nmailboxes $my_mx +mailbox3</screen>\n\n<para>\nbecause the value of <literal>$my_mx</literal> is interpreted as a\nsingle mailbox named <quote>+mailbox1 +mailbox2</quote> and not two\ndistinct mailboxes.\n</para>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"source\">\n<title>Reading Initialization Commands From Another File</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>source</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">filename</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nThis command allows the inclusion of initialization commands from other\nfiles.  For example, I place all of my aliases in\n<literal>~/.mail_aliases</literal> so that I can make my\n<literal>~/.muttrc</literal> readable and keep my aliases private.\n</para>\n\n<para>\nIf the filename begins with a tilde (<quote>~</quote>), it will be\nexpanded to the path of your home directory.\n</para>\n\n<para>\nIf the filename ends with a vertical bar (<quote>|</quote>), then\n<emphasis>filename</emphasis> is considered to be an executable program\nfrom which to read input (e.g.  <literal><command>source</command>\n~/bin/myscript|</literal>).\n</para>\n\n</sect1>\n\n<sect1 id=\"unhook\">\n<title>Removing Hooks</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>unhook</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">hook-type</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nThis command permits you to flush hooks you have previously defined.\nYou can either remove all hooks by giving the <quote>*</quote> character\nas an argument, or you can remove all hooks of a specific type by saying\nsomething like <literal><command>unhook</command> send-hook</literal>.\n</para>\n\n</sect1>\n\n<sect1 id=\"formatstrings\">\n<title>Format Strings</title>\n\n<sect2 id=\"formatstrings-basics\">\n<title>Basic usage</title>\n\n<para>\nFormat strings are a general concept you'll find in several locations\nthrough the Mutt configuration, especially in the <link\nlinkend=\"index-format\">$index_format</link>, <link\nlinkend=\"pager-format\">$pager_format</link>, <link\nlinkend=\"status-format\">$status_format</link>, and other related\nvariables. These can be very straightforward, and it's quite possible\nyou already know how to use them.\n</para>\n\n<para>\nThe most basic format string element is a percent symbol followed by\nanother character. For example, <literal>%s</literal> represents a\nmessage's Subject: header in the <link\nlinkend=\"index-format\">$index_format</link> variable. The\n<quote>expandos</quote> available are documented with each format\nvariable, but there are general modifiers available with all formatting\nexpandos, too. Those are our concern here.\n</para>\n\n<para>\nSome of the modifiers are borrowed right out of C (though you might know\nthem from Perl, Python, shell, or another language). These are the\n<literal>[-]m.n</literal> modifiers, as in\n<literal>%-12.12s</literal>. As with such programming languages, these\nmodifiers allow you to specify the minimum and maximum size of the\nresulting string, as well as its justification. If the <quote>-</quote>\nsign follows the percent, the string will be left-justified instead of\nright-justified. If there's a number immediately following that, it's\nthe minimum amount of space the formatted string will occupy &mdash; if\nit's naturally smaller than that, it will be padded out with spaces.  If\na decimal point and another number follow, that's the maximum space\nallowable &mdash; the string will not be permitted to exceed that width,\nno matter its natural size. Each of these three elements is optional, so\nthat all these are legal format strings: <literal>%-12s</literal>,\n<literal>%4c</literal>, <literal>%.15F</literal> and\n<literal>%-12.15L</literal>.\n</para>\n\n<para>\nMutt adds some other modifiers to format strings. If you use an equals\nsymbol (<literal>=</literal>) as a numeric prefix (like the minus\nabove), it will force the string to be centered within its minimum space\nrange. For example, <literal>%=14y</literal> will reserve 14 characters\nfor the %y expansion &mdash; that's the X-Label: header, in <link\nlinkend=\"index-format\">$index_format</link>. If the expansion results in\na string less than 14 characters, it will be centered in a 14-character\nspace.  If the X-Label for a message were <quote>test</quote>, that\nexpansion would look like\n<quote>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</quote>.\n</para>\n\n<para>\nThere are two very little-known modifiers that affect the way that an\nexpando is replaced. If there is an underline (<quote>_</quote>)\ncharacter between any format modifiers (as above) and the expando\nletter, it will expands in all lower case. And if you use a colon\n(<quote>:</quote>), it will replace all decimal points with underlines.\n</para>\n\n</sect2>\n\n<sect2 id=\"formatstrings-conditionals\">\n<title>Conditionals</title>\n\n<para>\nDepending on the format string variable, some of its sequences can be\nused to optionally print a string if their value is nonzero. For\nexample, you may only want to see the number of flagged messages if such\nmessages exist, since zero is not particularly meaningful. To optionally\nprint a string based upon one of the above sequences, the following\nconstruct is used:\n</para>\n\n<screen>\n%?&lt;sequence_char&gt;?&lt;optional_string&gt;?</screen>\n\n<para>\nwhere <emphasis>sequence_char</emphasis> is an expando, and\n<emphasis>optional_string</emphasis> is the string you would like\nprinted if <emphasis>sequence_char</emphasis> is nonzero.\n<emphasis>optional_string</emphasis> may contain other sequences as well\nas normal text, but you may not nest optional strings.\n</para>\n\n<para>\nHere is an example illustrating how to optionally print the number of\nnew messages in a mailbox in <link\nlinkend=\"status-format\">$status_format</link>:\n</para>\n\n<screen>\n%?n?%n new messages.?</screen>\n\n<para>\nYou can also switch between two strings using the following construct:\n</para>\n\n<screen>\n%?&lt;sequence_char&gt;?&lt;if_string&gt;&amp;&lt;else_string&gt;?</screen>\n\n<para>\nIf the value of <emphasis>sequence_char</emphasis> is non-zero,\n<emphasis>if_string</emphasis> will be expanded, otherwise\n<emphasis>else_string</emphasis> will be expanded.\n</para>\n\n<para>\nThe conditional sequences can also be nested by using the %&lt; and &gt;\noperators. The %? notation can still be used but requires quoting. For example:\n</para>\n\n<screen>\n%&lt;x?true&amp;false&gt;\n%&lt;x?%&lt;y?%&lt;z?xyz&amp;xy&gt;&amp;x&gt;&amp;none&gt;\n</screen>\n\n<para>For more examples, see <xref linkend=\"nested-if\"/></para>\n\n</sect2>\n\n<sect2 id=\"formatstrings-filters\">\n<title>Filters</title>\n\n<para>\nAny format string ending in a vertical bar (<quote>|</quote>) will be\nexpanded and piped through the first word in the string, using spaces as\nseparator. The string returned will be used for display.  If the\nreturned string ends in %, it will be passed through the formatter a\nsecond time. This allows the filter to generate a replacement format\nstring including % expandos.\n</para>\n\n<para>\nAll % expandos in a format string are expanded before the script is\ncalled so that:\n</para>\n\n<example id=\"ex-fmtpipe\">\n<title>Using external filters in format strings</title>\n<screen>\nset status_format=\"script.sh '%r %f (%L)'|\"\n</screen>\n</example>\n\n<para>\nwill make Mutt expand <literal>%r</literal>, <literal>%f</literal> and\n<literal>%L</literal> before calling the script. The example also shows\nthat arguments can be quoted: the script will receive the expanded\nstring between the single quotes as the only argument.\n</para>\n\n<para>\nA practical example is the <literal>mutt_xtitle</literal> script\ninstalled in the <literal>samples</literal> subdirectory of the Mutt\ndocumentation: it can be used as filter for <link\nlinkend=\"status-format\">$status_format</link> to set the current\nterminal's title, if supported.\n</para>\n\n</sect2>\n\n<sect2 id=\"formatstrings-padding\">\n<title>Padding</title>\n\n<para>\nIn most format strings, Mutt supports different types of padding using\nspecial %-expandos:\n</para>\n\n<variablelist>\n<varlistentry>\n<term><literal>%|X</literal></term>\n<listitem>\n<para>\nWhen this occurs, Mutt will fill the rest of the line with the character\n<literal>X</literal>. For example, filling the rest of the line with\ndashes is done by setting:\n</para>\n<screen>\nset status_format = \"%v on %h: %B: %?n?%n&amp;no? new messages %|-\"</screen>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>\n<literal>%&gt;X</literal>\n</term>\n<listitem>\n<para>\nSince the previous expando stops at the end of line, there must be a way\nto fill the gap between two items via the <literal>%&gt;X</literal>\nexpando: it puts as many characters <literal>X</literal> in between two\nitems so that the rest of the line will be right-justified. For example,\nto not put the version string and hostname the above example on the left\nbut on the right and fill the gap with spaces, one might use (note the\nspace after <literal>%&gt;</literal>):\n</para>\n<screen>\nset status_format = \"%B: %?n?%n&amp;no? new messages %&gt; (%v on %h)\"</screen>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term><literal>%*X</literal>\n</term>\n<listitem>\n<para>\nNormal right-justification will print everything to the left of the\n<literal>%&gt;</literal>, displaying padding and whatever lies to the\nright only if there's room. By contrast, <quote>soft-fill</quote> gives\npriority to the right-hand side, guaranteeing space to display it and\nshowing padding only if there's still room. If necessary, soft-fill will\neat text leftwards to make room for rightward text. For example, to\nright-justify the subject making sure as much as possible of it fits on\nscreen, one might use (note two spaces after <literal>%* </literal>: the\nsecond ensures there's a space between the truncated right-hand side and\nthe subject):\n</para>\n<screen>\nset index_format=\"%4C %Z %{%b %d} %-15.15L (%?l?%4l&amp;%4c?)%*  %s\"</screen>\n</listitem>\n</varlistentry>\n</variablelist>\n\n</sect2>\n\n<sect2 id=\"formatstrings-conditional-dates\">\n<title>Conditional Dates</title>\n<para>\nThis patch allows the format of dates in the index to vary based on how recent\nthe message is. This is especially useful in combination with David Champion's\npatch to allow if-else sequences to be nested.\n</para>\n\n<para>\nFor example, using\n<literal>%&lt;[y?%&lt;[d?%[%H:%M]&amp;%[%m/%d]&gt;&amp;%[%y.%m]&gt;</literal>\nfor the date in the <literal>$index_format</literal> will produce a display like:\n</para>\n\n<screen>\n   1   + 14.12 Grace Hall      (   13) Gulliver's Travels\n   2   + 10/02 Callum Harrison (   48) Huckleberry Finn\n   3     12:17 Rhys Lee        (   42) The Lord Of The Rings\n</screen>\n</sect2>\n\n</sect1>\n\n<sect1 id=\"mailto-allow\">\n<title>Control allowed header fields in a mailto: URL</title>\n\n<para>Usage:</para>\n\n<cmdsynopsis>\n<command>mailto_allow</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">header-field</replaceable>\n</arg>\n</group>\n\n<command>unmailto_allow</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">header-field</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nAs a security measure, Mutt will only add user-approved header fields from a\n<literal>mailto:</literal> URL.  This is necessary since Mutt will handle\ncertain header fields, such as <literal>Attach:</literal>, in a special way.\nThe <literal>mailto_allow</literal> and <literal>unmailto_allow</literal>\ncommands allow the user to modify the list of approved headers.\n</para>\n<para>\nMutt initializes the default list to contain only the <literal>Subject</literal>\nand <literal>Body</literal> header fields, which are the only requirement specified\nby the <literal>mailto:</literal> specification in RFC2368.\n</para>\n</sect1>\n\n</chapter>\n\n<chapter id=\"advancedusage\">\n<title>Advanced Usage</title>\n\n<sect1 id=\"charset-handling\">\n<title>Character Set Handling</title>\n\n<para>\nA <quote>character set</quote> is basically a mapping between bytes and\nglyphs and implies a certain character encoding scheme. For example, for\nthe ISO 8859 family of character sets, an encoding of 8bit per character\nis used. For the Unicode character set, different character encodings\nmay be used, UTF-8 being the most popular. In UTF-8, a character is\nrepresented using a variable number of bytes ranging from 1 to 4.\n</para>\n\n<para>\nSince Mutt is a command-line tool run from a shell, and delegates\ncertain tasks to external tools (such as an editor for composing/editing\nmessages), all of these tools need to agree on a character set and\nencoding. There exists no way to reliably deduce the character set a\nplain text file has. Interoperability is gained by the use of\nwell-defined environment variables. The full set can be printed by\nissuing <literal>locale</literal> on the command line.\n</para>\n\n<para>\nUpon startup, Mutt determines the character set on its own using\nroutines that inspect locale-specific environment variables. Therefore,\nit is generally not necessary to set the <literal>$charset</literal>\nvariable in Mutt. It may even be counter-productive as Mutt uses system\nand library functions that derive the character set themselves and on\nwhich Mutt has no influence. It's safest to let Mutt work out the locale\nsetup itself.\n</para>\n\n<para>\nIf you happen to work with several character sets on a regular basis,\nit's highly advisable to use Unicode and an UTF-8 locale. Unicode can\nrepresent nearly all characters in a message at the same time.  When not\nusing a Unicode locale, it may happen that you receive messages with\ncharacters not representable in your locale. When displaying such a\nmessage, or replying to or forwarding it, information may get lost\npossibly rendering the message unusable (not only for you but also for\nthe recipient, this breakage is not reversible as lost information\ncannot be guessed).\n</para>\n\n<para>\nA Unicode locale makes all conversions superfluous which eliminates the\nrisk of conversion errors. It also eliminates potentially wrong\nexpectations about the character set between Mutt and external programs.\n</para>\n\n<para>\nThe terminal emulator used also must be properly configured for the\ncurrent locale. Terminal emulators usually do <emphasis>not</emphasis>\nderive the locale from environment variables, they need to be configured\nseparately. If the terminal is incorrectly configured, Mutt may display\nrandom and unexpected characters (question marks, octal codes, or just\nrandom glyphs), format strings may not work as expected, you may not be\nabled to enter non-ascii characters, and possible more.  Data is always\nrepresented using bytes and so a correct setup is very important as to\nthe machine, all character sets <quote>look</quote> the same.\n</para>\n\n<para>\nWarning: A mismatch between what system and library functions think the\nlocale is and what Mutt was told what the locale is may make it behave\nbadly with non-ascii input: it will fail at seemingly random places.\nThis warning is to be taken seriously since not only local mail handling\nmay suffer: sent messages may carry wrong character set information the\n<emphasis>receiver</emphasis> has too deal with. The need to set\n<literal>$charset</literal> directly in most cases points at terminal\nand environment variable setup problems, not Mutt problems.\n</para>\n\n<para>\nA list of officially assigned and known character sets can be found at\n<ulink url=\"http://www.iana.org/assignments/character-sets\">IANA</ulink>,\na list of locally supported locales can be obtained by running\n<literal>locale -a</literal>.\n</para>\n\n</sect1>\n\n<sect1 id=\"regexp\">\n<title>Regular Expressions</title>\n\n<para>\nAll string patterns in Mutt including those in more complex <link\nlinkend=\"patterns\">patterns</link> must be specified using regular\nexpressions (regexp) in the <quote>POSIX extended</quote> syntax (which\nis more or less the syntax used by egrep and GNU awk).  For your\nconvenience, we have included below a brief description of this syntax.\n</para>\n\n<para>\nThe search is case sensitive if the pattern contains at least one upper\ncase letter, and case insensitive otherwise.\n</para>\n\n<note>\n<para>\n<quote>\\</quote> must be quoted if used for a regular expression in an\ninitialization command: <quote>\\\\</quote>.\n</para>\n</note>\n\n<para>\nA regular expression is a pattern that describes a set of strings.\nRegular expressions are constructed analogously to arithmetic\nexpressions, by using various operators to combine smaller expressions.\n</para>\n\n<note>\n<para>\nThe regular expression can be enclosed/delimited by either \" or ' which\nis useful if the regular expression includes a white-space character.\nSee <xref linkend=\"muttrc-syntax\"/> for more information on \" and '\ndelimiter processing.  To match a literal \" or ' you must preface it\nwith \\ (backslash).\n</para>\n</note>\n\n<para>\nThe fundamental building blocks are the regular expressions that match a\nsingle character.  Most characters, including all letters and digits,\nare regular expressions that match themselves.  Any metacharacter with\nspecial meaning may be quoted by preceding it with a backslash.\n</para>\n\n<para>\nThe period <quote>.</quote> matches any single character.  The caret\n<quote>^</quote> and the dollar sign <quote>$</quote> are metacharacters\nthat respectively match the empty string at the beginning and end of a\nline.\n</para>\n\n<para>\nA list of characters enclosed by <quote>[</quote> and <quote>]</quote>\nmatches any single character in that list; if the first character of the\nlist is a caret <quote>^</quote> then it matches any character\n<emphasis>not</emphasis> in the list.  For example, the regular\nexpression <emphasis>[0123456789]</emphasis> matches any single digit.\nA range of ASCII characters may be specified by giving the first and\nlast characters, separated by a hyphen <quote>-</quote>.  Most\nmetacharacters lose their special meaning inside lists.  To include a\nliteral <quote>]</quote> place it first in the list.  Similarly, to\ninclude a literal <quote>^</quote> place it anywhere but first.\nFinally, to include a literal hyphen <quote>-</quote> place it last.\n</para>\n\n<para>\nCertain named classes of characters are predefined.  Character classes\nconsist of <quote>[:</quote>, a keyword denoting the class, and\n<quote>:]</quote>.  The following classes are defined by the POSIX\nstandard in\n<xref linkend=\"posix-regex-char-classes\"/>\n</para>\n\n<table id=\"posix-regex-char-classes\">\n<title>POSIX regular expression character classes</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Character class</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>[:alnum:]</entry><entry>Alphanumeric characters</entry></row>\n<row><entry>[:alpha:]</entry><entry>Alphabetic characters</entry></row>\n<row><entry>[:blank:]</entry><entry>Space or tab characters</entry></row>\n<row><entry>[:cntrl:]</entry><entry>Control characters</entry></row>\n<row><entry>[:digit:]</entry><entry>Numeric characters</entry></row>\n<row><entry>[:graph:]</entry><entry>Characters that are both printable and visible. (A space is printable, but not visible, while an <quote>a</quote> is both)</entry></row>\n<row><entry>[:lower:]</entry><entry>Lower-case alphabetic characters</entry></row>\n<row><entry>[:print:]</entry><entry>Printable characters (characters that are not control characters)</entry></row>\n<row><entry>[:punct:]</entry><entry>Punctuation characters (characters that are not letter, digits, control characters, or space characters)</entry></row>\n<row><entry>[:space:]</entry><entry>Space characters (such as space, tab and formfeed, to name a few)</entry></row>\n<row><entry>[:upper:]</entry><entry>Upper-case alphabetic characters</entry></row>\n<row><entry>[:xdigit:]</entry><entry>Characters that are hexadecimal digits</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nA character class is only valid in a regular expression inside the\nbrackets of a character list.\n</para>\n\n<note>\n<para>\nNote that the brackets in these class names are part of the symbolic\nnames, and must be included in addition to the brackets delimiting the\nbracket list. For example, <emphasis>[[:digit:]]</emphasis> is\nequivalent to <emphasis>[0-9]</emphasis>.\n</para>\n</note>\n\n<para>\nTwo additional special sequences can appear in character lists.  These\napply to non-ASCII character sets, which can have single symbols (called\ncollating elements) that are represented with more than one character,\nas well as several characters that are equivalent for collating or\nsorting purposes:\n</para>\n\n<variablelist>\n\n<varlistentry>\n<term>Collating Symbols</term>\n<listitem>\n<para>\nA collating symbol is a multi-character collating element enclosed in\n<quote>[.</quote> and <quote>.]</quote>.  For example, if\n<quote>ch</quote> is a collating element, then\n<emphasis>[[.ch.]]</emphasis> is a regexp that matches this collating\nelement, while <emphasis>[ch]</emphasis> is a regexp that matches either\n<quote>c</quote> or <quote>h</quote>.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>Equivalence Classes</term>\n<listitem>\n<para>\nAn equivalence class is a locale-specific name for a list of characters\nthat are equivalent. The name is enclosed in <quote>[=</quote> and\n<quote>=]</quote>.  For example, the name <quote>e</quote> might be used\nto represent all of <quote>e</quote> with grave\n(<quote>&egrave;</quote>), <quote>e</quote> with acute\n(<quote>&eacute;</quote>) and <quote>e</quote>.  In this case,\n<emphasis>[[=e=]]</emphasis> is a regexp that matches any of:\n<quote>e</quote> with grave (<quote>&egrave;</quote>), <quote>e</quote>\nwith acute (<quote>&eacute;</quote>) and <quote>e</quote>.\n</para>\n</listitem>\n</varlistentry>\n</variablelist>\n\n<para>\nA regular expression matching a single character may be followed by one\nof several repetition operators described in <xref\nlinkend=\"regex-repeat\"/>.\n</para>\n\n<table id=\"regex-repeat\">\n<title>Regular expression repetition operators</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Operator</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>?</entry><entry>The preceding item is optional and matched at most once</entry></row>\n<row><entry>*</entry><entry>The preceding item will be matched zero or more times</entry></row>\n<row><entry>+</entry><entry>The preceding item will be matched one or more times</entry></row>\n<row><entry>{n}</entry><entry>The preceding item is matched exactly <emphasis>n</emphasis> times</entry></row>\n<row><entry>{n,}</entry><entry>The preceding item is matched <emphasis>n</emphasis> or more times</entry></row>\n<row><entry>{,m}</entry><entry>The preceding item is matched at most <emphasis>m</emphasis> times</entry></row>\n<row><entry>{n,m}</entry><entry>The preceding item is matched at least <emphasis>n</emphasis> times, but no more than <emphasis>m</emphasis> times</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nTwo regular expressions may be concatenated; the resulting regular\nexpression matches any string formed by concatenating two substrings\nthat respectively match the concatenated subexpressions.\n</para>\n\n<para>\nTwo regular expressions may be joined by the infix operator\n<quote>|</quote>; the resulting regular expression matches any string\nmatching either subexpression.\n</para>\n\n<para>\nRepetition takes precedence over concatenation, which in turn takes\nprecedence over alternation.  A whole subexpression may be enclosed in\nparentheses to override these precedence rules.\n</para>\n\n<note>\n<para>\nIf you compile Mutt with the included regular expression engine, the\nfollowing operators may also be used in regular expressions as described\nin <xref linkend=\"regex-gnu-ext\"/>.\n</para>\n</note>\n\n<table id=\"regex-gnu-ext\">\n<title>GNU regular expression extensions</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Expression</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>\\\\y</entry><entry>Matches the empty string at either the beginning or the end of a word</entry></row>\n<row><entry>\\\\B</entry><entry>Matches the empty string within a word</entry></row>\n<row><entry>\\\\&lt;</entry><entry>Matches the empty string at the beginning of a word</entry></row>\n<row><entry>\\\\&gt;</entry><entry>Matches the empty string at the end of a word</entry></row>\n<row><entry>\\\\w</entry><entry>Matches any word-constituent character (letter, digit, or underscore)</entry></row>\n<row><entry>\\\\W</entry><entry>Matches any character that is not word-constituent</entry></row>\n<row><entry>\\\\`</entry><entry>Matches the empty string at the beginning of a buffer (string)</entry></row>\n<row><entry>\\\\'</entry><entry>Matches the empty string at the end of a buffer</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nPlease note however that these operators are not defined by POSIX, so\nthey may or may not be available in stock libraries on various systems.\n</para>\n\n</sect1>\n\n<sect1 id=\"patterns\">\n<title>Patterns: Searching, Limiting and Tagging</title>\n\n<sect2 id=\"patterns-modifier\">\n<title>Pattern Modifier</title>\n\n<para>\nMany of Mutt's commands allow you to specify a pattern to match\n(<literal>limit</literal>, <literal>tag-pattern</literal>,\n<literal>delete-pattern</literal>, etc.). <xref linkend=\"tab-patterns\"/>\nshows several ways to select messages.\n</para>\n\n<table id=\"tab-patterns\">\n<title>Pattern modifiers</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Pattern modifier</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>~A</entry><entry>all messages</entry></row>\n<row><entry>~b <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the message body</entry></row>\n<row><entry>=b <emphasis>STRING</emphasis></entry><entry>messages which contain <emphasis>STRING</emphasis> in the message body. If IMAP is enabled, searches for <emphasis>STRING</emphasis> on the server, rather than downloading each message and searching it locally.</entry></row>\n<row><entry>~B <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the whole message</entry></row>\n<row><entry>=B <emphasis>STRING</emphasis></entry><entry>messages which contain <emphasis>STRING</emphasis> in the whole message. If IMAP is enabled, searches for <emphasis>STRING</emphasis> on the server, rather than downloading each message and searching it locally.</entry></row>\n<row><entry>~c <emphasis>EXPR</emphasis></entry><entry>messages carbon-copied to <emphasis>EXPR</emphasis></entry></row>\n<row><entry>%c <emphasis>GROUP</emphasis></entry><entry>messages carbon-copied to any member of <emphasis>GROUP</emphasis></entry></row>\n<row><entry>~C <emphasis>EXPR</emphasis></entry><entry>messages either to: or cc: <emphasis>EXPR</emphasis></entry></row>\n<row><entry>%C <emphasis>GROUP</emphasis></entry><entry>messages either to: or cc: to any member of <emphasis>GROUP</emphasis></entry></row>\n<row><entry>~d [<emphasis>MIN</emphasis>]-[<emphasis>MAX</emphasis>]</entry><entry>messages with <quote>date-sent</quote> in a Date range</entry></row>\n<row><entry>~D</entry><entry>deleted messages</entry></row>\n<row><entry>~e <emphasis>EXPR</emphasis></entry><entry>messages which contains <emphasis>EXPR</emphasis> in the <quote>Sender</quote> field</entry></row>\n<row><entry>%e <emphasis>GROUP</emphasis></entry><entry>messages which contain a member of <emphasis>GROUP</emphasis> in the <quote>Sender</quote> field</entry></row>\n<row><entry>~E</entry><entry>expired messages</entry></row>\n<row><entry>~F</entry><entry>flagged messages</entry></row>\n<row><entry>~f <emphasis>EXPR</emphasis></entry><entry>messages originating from <emphasis>EXPR</emphasis></entry></row>\n<row><entry>%f <emphasis>GROUP</emphasis></entry><entry>messages originating from any member of <emphasis>GROUP</emphasis></entry></row>\n<row><entry>~g</entry><entry>cryptographically signed messages</entry></row>\n<row><entry>~G</entry><entry>cryptographically encrypted messages</entry></row>\n<row><entry>~h <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the message header</entry></row>\n<row><entry>=h <emphasis>STRING</emphasis></entry><entry>messages which contain <emphasis>STRING</emphasis> in the message header. If IMAP is enabled, searches for <emphasis>STRING</emphasis> on the server, rather than downloading each message and searching it locally; <emphasis>STRING</emphasis> must be of the form <quote>header: substring</quote> (see below).</entry></row>\n<row><entry>~H <emphasis>EXPR</emphasis></entry><entry>messages with a spam attribute matching <emphasis>EXPR</emphasis></entry></row>\n<row><entry>~i <emphasis>EXPR</emphasis></entry><entry>messages which match <emphasis>EXPR</emphasis> in the <quote>Message-ID</quote> field</entry></row>\n<row><entry>~k</entry><entry>messages which contain PGP key material</entry></row>\n<row><entry>~L <emphasis>EXPR</emphasis></entry><entry>messages either originated or received by <emphasis>EXPR</emphasis></entry></row>\n<row><entry>%L <emphasis>GROUP</emphasis></entry><entry>message either originated or received by any member of <emphasis>GROUP</emphasis></entry></row>\n<row><entry>~l</entry><entry>messages addressed to a known mailing list</entry></row>\n<row><entry>~m [<emphasis>MIN</emphasis>]-[<emphasis>MAX</emphasis>]</entry><entry>messages in the range <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> *)</entry></row>\n<row><entry>~n [<emphasis>MIN</emphasis>]-[<emphasis>MAX</emphasis>]</entry><entry>messages with a score in the range <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> *)</entry></row>\n<row><entry>~N</entry><entry>new messages</entry></row>\n<row><entry>~O</entry><entry>old messages</entry></row>\n<row><entry>~p</entry><entry>messages addressed to you (consults <command>alternates</command>)</entry></row>\n<row><entry>~P</entry><entry>messages from you (consults <command>alternates</command>)</entry></row>\n<row><entry>~Q</entry><entry>messages which have been replied to</entry></row>\n<row><entry>~r [<emphasis>MIN</emphasis>]-[<emphasis>MAX</emphasis>]</entry><entry>messages with <quote>date-received</quote> in a Date range</entry></row>\n<row><entry>~R</entry><entry>read messages</entry></row>\n<row><entry>~s <emphasis>EXPR</emphasis></entry><entry>messages having <emphasis>EXPR</emphasis> in the <quote>Subject</quote> field.</entry></row>\n<row><entry>~S</entry><entry>superseded messages</entry></row>\n<row><entry>~t <emphasis>EXPR</emphasis></entry><entry>messages addressed to <emphasis>EXPR</emphasis></entry></row>\n<row><entry>~T</entry><entry>tagged messages</entry></row>\n<row><entry>~u</entry><entry>messages addressed to a subscribed mailing list</entry></row>\n<row><entry>~U</entry><entry>unread messages</entry></row>\n<row><entry>~v</entry><entry>messages part of a collapsed thread.</entry></row>\n<row><entry>~V</entry><entry>cryptographically verified messages</entry></row>\n<row><entry>~x <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the <quote>References</quote> or <quote>In-Reply-To</quote> field</entry></row>\n<row><entry>~X [<emphasis>MIN</emphasis>]-[<emphasis>MAX</emphasis>]</entry><entry>messages with <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> attachments *)</entry></row>\n<row><entry>~y <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the <quote>X-Label</quote> field</entry></row>\n<row><entry>~z [<emphasis>MIN</emphasis>]-[<emphasis>MAX</emphasis>]</entry><entry>messages with a size in the range <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> *) **)</entry></row>\n<row><entry>~=</entry><entry>duplicated messages (see <link linkend=\"duplicate-threads\">$duplicate_threads</link>)</entry></row>\n<row><entry>~$</entry><entry>unreferenced messages (requires threaded view)</entry></row>\n<row><entry>~(<emphasis>PATTERN</emphasis>)</entry><entry>messages in threads\ncontaining messages matching <emphasis>PATTERN</emphasis>, e.g. all\nthreads containing messages from you: ~(~P)</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nWhere <emphasis>EXPR</emphasis> is a <link linkend=\"regexp\">regular expression</link>, and <emphasis>GROUP</emphasis> is an\n<link linkend=\"addrgroup\">address group</link>.\n</para>\n\n<para>\n*) The forms <quote>&lt;[<emphasis>MAX</emphasis>]</quote>,\n<quote>&gt;[<emphasis>MIN</emphasis>]</quote>,\n<quote>[<emphasis>MIN</emphasis>]-</quote> and\n<quote>-[<emphasis>MAX</emphasis>]</quote> are allowed, too.\n</para>\n\n<para>\n**) The suffixes <quote>K</quote> and <quote>M</quote> are allowed to\nspecify kilobyte and megabyte respectively.\n</para>\n\n<para>\nSpecial attention has to be payed when using regular expressions inside\nof patterns.  Specifically, Mutt's parser for these patterns will strip\none level of backslash (<quote>\\</quote>), which is normally used for\nquoting.  If it is your intention to use a backslash in the regular\nexpression, you will need to use two backslashes instead\n(<quote>\\\\</quote>). You can force Mutt to treat\n<emphasis>EXPR</emphasis> as a simple string instead of a regular\nexpression by using = instead of ~ in the pattern name. For example,\n<literal>=b *.*</literal> will find all messages that contain the\nliteral string <quote>*.*</quote>. Simple string matches are less\npowerful than regular expressions but can be considerably faster. This\nis especially true for IMAP folders, because string matches can be\nperformed on the server instead of by fetching every message. IMAP\ntreats <literal>=h</literal> specially: it must be of the form\n<quote>header: substring</quote> and will not partially match header\nnames. The substring part may be omitted if you simply wish to find\nmessages containing a particular header without regard to its value.\n</para>\n\n<para>\nPatterns matching lists of addresses (notably c, C, p, P and t) match if\nthere is at least one match in the whole list. If you want to make sure\nthat all elements of that list match, you need to prefix your pattern\nwith <quote>^</quote>.  This example matches all mails which only has\nrecipients from Germany.\n</para>\n\n<example id=\"ex-recips\">\n<title>Matching all addresses in address lists</title>\n<screen>\n^~C \\.de$\n</screen>\n</example>\n\n</sect2>\n\n<sect2 id=\"simple-searches\">\n<title>Simple Searches</title>\n\n<para>\nMutt supports two versions of so called <quote>simple\nsearches</quote>. These are issued if the query entered for searching,\nlimiting and similar operations does not seem to contain a valid pattern\nmodifier (i.e. it does not contain one of these characters:\n<quote>~</quote>, <quote>=</quote> or <quote>%</quote>). If the query is\nsupposed to contain one of these special characters, they must be\nescaped by prepending a backslash (<quote>\\</quote>).\n</para>\n\n<para>\nThe first type is by checking whether the query string equals\na keyword case-insensitively from <xref linkend=\"tab-simplesearch-keywords\"/>:\nIf that is the case, Mutt will use the shown pattern modifier instead.\nIf a keyword would conflict with your search keyword, you need to turn\nit into a regular expression to avoid matching the keyword table. For\nexample, if you want to find all messages matching <quote>flag</quote>\n(using <link linkend=\"simple-search\">$simple_search</link>)\nbut don't want to match flagged messages, simply search for\n<quote><literal>[f]lag</literal></quote>.\n</para>\n\n<table id=\"tab-simplesearch-keywords\">\n<title>Simple search keywords</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Keyword</entry><entry>Pattern modifier</entry></row>\n</thead>\n<tbody>\n<row><entry>all</entry><entry>~A</entry></row>\n<row><entry>.</entry><entry>~A</entry></row>\n<row><entry>^</entry><entry>~A</entry></row>\n<row><entry>del</entry><entry>~D</entry></row>\n<row><entry>flag</entry><entry>~F</entry></row>\n<row><entry>new</entry><entry>~N</entry></row>\n<row><entry>old</entry><entry>~O</entry></row>\n<row><entry>repl</entry><entry>~Q</entry></row>\n<row><entry>read</entry><entry>~R</entry></row>\n<row><entry>tag</entry><entry>~T</entry></row>\n<row><entry>unread</entry><entry>~U</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nThe second type of simple search is to build a complex search pattern\nusing <link linkend=\"simple-search\">$simple_search</link> as a\ntemplate. Mutt will insert your query properly quoted and search for the\ncomposed complex query.\n</para>\n\n</sect2>\n\n<sect2 id=\"complex-patterns\">\n<title>Nesting and Boolean Operators</title>\n\n<para>\nLogical AND is performed by specifying more than one criterion.  For\nexample:\n</para>\n\n<screen>\n~t mutt ~f elkins\n</screen>\n\n<para>\nwould select messages which contain the word <quote>mutt</quote> in the\nlist of recipients <emphasis>and</emphasis> that have the word\n<quote>elkins</quote> in the <quote>From</quote> header field.\n</para>\n\n<para>\nMutt also recognizes the following operators to create more complex\nsearch patterns:\n</para>\n\n<itemizedlist>\n<listitem>\n\n<para>\n! &mdash; logical NOT operator\n</para>\n</listitem>\n<listitem>\n\n<para>\n| &mdash; logical OR operator\n</para>\n</listitem>\n<listitem>\n\n<para>\n() &mdash; logical grouping operator\n</para>\n</listitem>\n\n</itemizedlist>\n\n<para>\nHere is an example illustrating a complex search pattern.  This pattern\nwill select all messages which do not contain <quote>mutt</quote> in the\n<quote>To</quote> or <quote>Cc</quote> field and which are from\n<quote>elkins</quote>.\n</para>\n\n<example id=\"ex-pattern-bool\">\n<title>Using boolean operators in patterns</title>\n<screen>\n!(~t mutt|~c mutt) ~f elkins\n</screen>\n</example>\n\n<para>\nHere is an example using white space in the regular expression (note the\n<quote>'</quote> and <quote>\"</quote> delimiters).  For this to match,\nthe mail's subject must match the <quote>^Junk +From +Me$</quote> and it\nmust be from either <quote>Jim +Somebody</quote> or <quote>Ed\n+SomeoneElse</quote>:\n</para>\n\n<screen>\n'~s \"^Junk +From +Me$\" ~f (\"Jim +Somebody\"|\"Ed +SomeoneElse\")'\n</screen>\n\n<note>\n<para>\nIf a regular expression contains parenthesis, or a vertical bar (\"|\"),\nyou <emphasis>must</emphasis> enclose the expression in double or single\nquotes since those characters are also used to separate different parts\nof Mutt's pattern language.  For example: <literal>~f\n\"me@(mutt\\.org|cs\\.hmc\\.edu)\"</literal> Without the quotes, the\nparenthesis wouldn't end.  This would be separated to two OR'd patterns:\n<emphasis>~f me@(mutt\\.org</emphasis> and\n<emphasis>cs\\.hmc\\.edu)</emphasis>. They are never what you want.\n</para>\n</note>\n\n</sect2>\n\n<sect2 id=\"date-patterns\">\n<title>Searching by Date</title>\n\n<para>\nMutt supports two types of dates, <emphasis>absolute</emphasis> and\n<emphasis>relative</emphasis>.\n</para>\n\n<sect3 id=\"date-absolute\">\n<title>Absolute Dates</title>\n\n<para>\nDates <emphasis>must</emphasis> be in DD/MM/YY format (month and year\nare optional, defaulting to the current month and year).  An example of\na valid range of dates is:\n</para>\n\n<screen>\nLimit to messages matching: ~d 20/1/95-31/10\n</screen>\n\n<para>\nIf you omit the minimum (first) date, and just specify\n<quote>-DD/MM/YY</quote>, all messages <emphasis>before</emphasis> the\ngiven date will be selected.  If you omit the maximum (second) date, and\nspecify <quote>DD/MM/YY-</quote>, all messages\n<emphasis>after</emphasis> the given date will be selected.  If you\nspecify a single date with no dash (<quote>-</quote>), only messages\nsent on the given date will be selected.\n</para>\n\n<para>\nYou can add error margins to absolute dates.  An error margin is a sign\n(+ or -), followed by a digit, followed by one of the units in <xref\nlinkend=\"tab-date-units\"/>. As a special case, you can replace the sign\nby a <quote>*</quote> character, which is equivalent to giving identical\nplus and minus error margins.\n</para>\n\n<table id=\"tab-date-units\">\n<title>Date units</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Unit</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>y</entry><entry>Years</entry></row>\n<row><entry>m</entry><entry>Months</entry></row>\n<row><entry>w</entry><entry>Weeks</entry></row>\n<row><entry>d</entry><entry>Days</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nExample: To select any messages two weeks around January 15, 2001, you'd\nuse the following pattern:\n</para>\n\n<screen>\nLimit to messages matching: ~d 15/1/2001*2w\n</screen>\n\n</sect3>\n\n<sect3 id=\"dates-relative\">\n<title>Relative Dates</title>\n\n<para>\nThis type of date is relative to the current date, and may be specified\nas:\n</para>\n\n<itemizedlist>\n<listitem>\n\n<para>\n&gt;<emphasis>offset</emphasis> for messages older than\n<emphasis>offset</emphasis> units\n</para>\n</listitem>\n<listitem>\n\n<para>\n&lt;<emphasis>offset</emphasis> for messages newer than\n<emphasis>offset</emphasis> units\n</para>\n</listitem>\n<listitem>\n\n<para>\n=<emphasis>offset</emphasis> for messages exactly\n<emphasis>offset</emphasis> units old\n</para>\n</listitem>\n\n</itemizedlist>\n\n<para>\n<emphasis>offset</emphasis> is specified as a positive number with one\nof the units from <xref linkend=\"tab-date-units\"/>.\n</para>\n\n<para>\nExample: to select messages less than 1 month old, you would use\n</para>\n\n<screen>\nLimit to messages matching: ~d &lt;1m\n</screen>\n\n<note>\n<para>\nAll dates used when searching are relative to the\n<emphasis>local</emphasis> time zone, so unless you change the setting\nof your <link linkend=\"index-format\">$index_format</link> to include a\n<literal>%[...]</literal> format, these are <emphasis>not</emphasis> the\ndates shown in the main index.\n</para>\n</note>\n\n</sect3>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"tags\">\n<title>Using Tags</title>\n\n<para>\nSometimes it is desirable to perform an operation on a group of messages\nall at once rather than one at a time.  An example might be to save\nmessages to a mailing list to a separate folder, or to delete all\nmessages with a given subject.  To tag all messages matching a pattern,\nuse the <literal>&lt;tag-pattern&gt;</literal> function, which is bound\nto <quote>shift-T</quote> by default.  Or you can select individual\nmessages by hand using the <literal>&lt;tag-message&gt;</literal>\nfunction, which is bound to <quote>t</quote> by default.  See <link\nlinkend=\"patterns\">patterns</link> for Mutt's pattern matching syntax.\n</para>\n\n<para>\nOnce you have tagged the desired messages, you can use the\n<quote>tag-prefix</quote> operator, which is the <quote>;</quote>\n(semicolon) key by default.  When the <quote>tag-prefix</quote> operator\nis used, the <emphasis>next</emphasis> operation will be applied to all\ntagged messages if that operation can be used in that manner.  If the\n<link linkend=\"auto-tag\">$auto_tag</link> variable is set, the next\noperation applies to the tagged messages automatically, without\nrequiring the <quote>tag-prefix</quote>.\n</para>\n\n<para>\nIn <link linkend=\"macro\"><command>macro</command>s</link> or <link\nlinkend=\"push\"><command>push</command></link> commands, you can use the\n<literal>&lt;tag-prefix-cond&gt;</literal> operator.  If there are no\ntagged messages, Mutt will <quote>eat</quote> the rest of the macro to\nabort it's execution.  Mutt will stop <quote>eating</quote> the macro\nwhen it encounters the <literal>&lt;end-cond&gt;</literal> operator;\nafter this operator the rest of the macro will be executed as normal.\n</para>\n\n</sect1>\n\n<sect1 id=\"hooks\">\n<title>Using Hooks</title>\n\n<para>\nA <emphasis>hook</emphasis> is a concept found in many other programs\nwhich allows you to execute arbitrary commands before performing some\noperation.  For example, you may wish to tailor your configuration based\nupon which mailbox you are reading, or to whom you are sending mail.  In\nthe Mutt world, a <emphasis>hook</emphasis> consists of a <link\nlinkend=\"regexp\">regular expression</link> or <link\nlinkend=\"patterns\">pattern</link> along with a configuration\noption/command.  See:\n\n<itemizedlist>\n\n<listitem>\n<para>\n<link linkend=\"account-hook\"><command>account-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"charset-hook\"><command>charset-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"crypt-hook\"><command>crypt-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"fcc-hook\"><command>fcc-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"fcc-save-hook\"><command>fcc-save-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"folder-hook\"><command>folder-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"iconv-hook\"><command>iconv-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"mbox-hook\"><command>mbox-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"message-hook\"><command>message-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"reply-hook\"><command>reply-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"save-hook\"><command>save-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"send-hook\"><command>send-hook</command></link>\n</para>\n</listitem>\n\n<listitem>\n<para>\n<link linkend=\"send2-hook\"><command>send2-hook</command></link>\n</para>\n</listitem>\n\n</itemizedlist>\n\nfor specific details on each type of <emphasis>hook</emphasis> available.\n</para>\n\n<note>\n<para>\nIf a hook changes configuration settings, these changes remain effective\nuntil the end of the current Mutt session. As this is generally not\ndesired, a <quote>default</quote> hook needs to be added before all\nother hooks of that type to restore configuration defaults.\n</para>\n</note>\n\n<example id=\"ex-default-hook\">\n<title>Specifying a <quote>default</quote> hook</title>\n<screen>\nsend-hook . 'unmy_hdr From:'\nsend-hook ~C'^b@b\\.b$' my_hdr from: c@c.c\n</screen>\n</example>\n\n<para>\nIn <xref linkend=\"ex-default-hook\"/>, by default the value of <link\nlinkend=\"from\">$from</link> and <link\nlinkend=\"realname\">$realname</link> is not overridden. When sending\nmessages either To: or Cc: to <literal>&lt;b@b.b&gt;</literal>, the\nFrom: header is changed to <literal>&lt;c@c.c&gt;</literal>.\n</para>\n\n<sect2 id=\"pattern-hook\" xreflabel=\"Message Matching in Hooks\">\n<title>Message Matching in Hooks</title>\n\n<para>\nHooks that act upon messages (<command>message-hook</command>,\n<command>reply-hook</command>, <command>send-hook</command>,\n<command>send2-hook</command>, <command>save-hook</command>,\n<command>fcc-hook</command>) are evaluated in a slightly different\nmanner. For the other types of hooks, a <link linkend=\"regexp\">regular\nexpression</link> is sufficient.  But in dealing with messages a finer\ngrain of control is needed for matching since for different purposes you\nwant to match different criteria.\n</para>\n\n<para>\nMutt allows the use of the <link linkend=\"patterns\">search\npattern</link> language for matching messages in hook commands.  This\nworks in exactly the same way as it would when\n<emphasis>limiting</emphasis> or <emphasis>searching</emphasis> the\nmailbox, except that you are restricted to those operators which match\ninformation Mutt extracts from the header of the message (i.e., from,\nto, cc, date, subject, etc.).\n</para>\n\n<para>\nFor example, if you wanted to set your return address based upon sending\nmail to a specific address, you could do something like:\n</para>\n\n<screen>\nsend-hook '~t ^me@cs\\.hmc\\.edu$' 'my_hdr From: Mutt User &lt;user@host&gt;'\n</screen>\n\n<para>\nwhich would execute the given command when sending mail to\n<emphasis>me@cs.hmc.edu</emphasis>.\n</para>\n\n<para>\nHowever, it is not required that you write the pattern to match using\nthe full searching language.  You can still specify a simple\n<emphasis>regular expression</emphasis> like the other hooks, in which\ncase Mutt will translate your pattern into the full language, using the\ntranslation specified by the <link\nlinkend=\"default-hook\">$default_hook</link> variable.  The pattern is\ntranslated at the time the hook is declared, so the value of <link\nlinkend=\"default-hook\">$default_hook</link> that is in effect at that\ntime will be used.\n</para>\n\n</sect2>\n\n<sect2 id=\"mailbox-hook\" xreflabel=\"Mailbox Matching in Hooks\">\n<title>Mailbox Matching in Hooks</title>\n\n<para>\nHooks that match against mailboxes (<command>folder-hook</command>,\n<command>mbox-hook</command>) apply both <link linkend=\"regexp\">regular\nexpression</link> syntax as well as <link linkend=\"shortcuts\">mailbox\nshortcut</link> expansion on the regexp parameter.  There is some\noverlap between these, so special attention should be paid to the first\ncharacter of the regexp.\n</para>\n\n<screen>\n# Here, ^ will expand to \"the current mailbox\" not \"beginning of string\":\nfolder-hook ^/home/user/Mail/bar \"set sort=threads\"\n\n# If you want ^ to be interpreted as \"beginning of string\", one workaround\n# is to enclose the regexp in parenthesis:\nfolder-hook (^/home/user/Mail/bar) \"set sort=threads\"\n\n# This will expand to the default save folder for the alias \"imap.example.com\", which\n# is probably not what you want:\nfolder-hook @imap.example.com \"set sort=threads\"\n\n# A workaround is to use parenthesis or a backslash:\nfolder-hook (@imap.example.com) \"set sort=threads\"\nfolder-hook '\\@imap.example.com' \"set sort=threads\"\n</screen>\n\n<para>\nKeep in mind that mailbox shortcut expansion on the regexp parameter\ntakes place when the hook is initially parsed, not when the hook is\nmatching against a mailbox.  When Mutt starts up and is reading the\n.muttrc, some mailbox shortcuts may not be usable.  For example, the\n\"current mailbox\" shortcut, ^, will expand to an empty string because no\nmailbox has been opened yet.  Mutt will issue an error for this case or\nif the mailbox shortcut results in an empty regexp.\n</para>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"query\">\n<title>External Address Queries</title>\n\n<para>\nMutt supports connecting to external directory databases such as LDAP,\nph/qi, bbdb, or NIS through a wrapper script which connects to Mutt\nusing a simple interface.  Using the <link\nlinkend=\"query-command\">$query_command</link> variable, you specify the\nwrapper command to use.  For example:\n</para>\n\n<screen>\nset query_command = \"mutt_ldap_query.pl %s\"\n</screen>\n\n<para>\nThe wrapper script should accept the query on the command-line.  It\nshould return a one line message, then each matching response on a\nsingle line, each line containing a tab separated address then name then\nsome other optional information.  On error, or if there are no matching\naddresses, return a non-zero exit code and a one line error message.\n</para>\n\n<para>\nAn example multiple response output:\n</para>\n\n<screen>\nSearching database ... 20 entries ... 3 matching:\nme@cs.hmc.edu           Michael Elkins  mutt dude\nblong@fiction.net       Brandon Long    mutt and more\nroessler@does-not-exist.org        Thomas Roessler mutt pgp\n</screen>\n\n<para>\nThere are two mechanisms for accessing the query function of Mutt.  One\nis to do a query from the index menu using the\n<literal>&lt;query&gt;</literal> function (default: Q).  This will\nprompt for a query, then bring up the query menu which will list the\nmatching responses.  From the query menu, you can select addresses to\ncreate aliases, or to mail.  You can tag multiple addresses to mail,\nstart a new query, or have a new query appended to the current\nresponses.\n</para>\n\n<para>\nThe other mechanism for accessing the query function is for address\ncompletion, similar to the alias completion.  In any prompt for address\nentry, you can use the <literal>&lt;complete-query&gt;</literal>\nfunction (default: ^T) to run a query based on the current address you\nhave typed.  Like aliases, Mutt will look for what you have typed back\nto the last space or comma.  If there is a single response for that\nquery, Mutt will expand the address in place.  If there are multiple\nresponses, Mutt will activate the query menu.  At the query menu, you\ncan select one or more addresses to be added to the prompt.\n</para>\n\n</sect1>\n\n<sect1 id=\"mailbox-formats\">\n<title>Mailbox Formats</title>\n\n<para>\nMutt supports reading and writing of four different local mailbox\nformats: mbox, MMDF, MH and Maildir.  The mailbox type is auto detected,\nso there is no need to use a flag for different mailbox types.  When\ncreating new mailboxes, Mutt uses the default specified with the <link\nlinkend=\"mbox-type\">$mbox_type</link> variable. A short description of\nthe formats follows.\n</para>\n\n<para>\n<emphasis>mbox</emphasis>.  This is a widely used mailbox format for\nUNIX.  All messages are stored in a single file.  Each message has a\nline of the form:\n</para>\n\n<screen>\nFrom me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST\n</screen>\n\n<para>\nto denote the start of a new message (this is often referred to as the\n<quote>From_</quote> line). The mbox format requires mailbox locking, is\nprone to mailbox corruption with concurrently writing clients or\nmisinterpreted From_ lines. Depending on the environment, new mail\ndetection can be unreliable. Mbox folders are fast to open and easy to\narchive.\n</para>\n\n<para>\n<emphasis>MMDF</emphasis>.  This is a variant of the\n<emphasis>mbox</emphasis> format.  Each message is surrounded by lines\ncontaining <quote>^A^A^A^A</quote> (four times control-A's). The same\nproblems as for mbox apply (also with finding the right message\nseparator as four control-A's may appear in message bodies).\n</para>\n\n<para>\n<emphasis>MH</emphasis>. A radical departure from\n<emphasis>mbox</emphasis> and <emphasis>MMDF</emphasis>, a mailbox\nconsists of a directory and each message is stored in a separate file.\nThe filename indicates the message number (however, this is may not\ncorrespond to the message number Mutt displays). Deleted messages are\nrenamed with a comma (<quote>,</quote>) prepended to the filename. Mutt\ndetects this type of mailbox by looking for either\n<literal>.mh_sequences</literal> or <literal>.xmhcache</literal> files\n(needed to distinguish normal directories from MH mailboxes). MH is more\nrobust with concurrent clients writing the mailbox, but still may suffer\nfrom lost flags; message corruption is less likely to occur than with\nmbox/mmdf. It's usually slower to open compared to mbox/mmdf since many\nsmall files have to be read (Mutt provides <xref\nlinkend=\"header-caching\"/> to greatly speed this process up).  Depending\non the environment, MH is not very disk-space efficient.\n</para>\n\n<para>\n<emphasis>Maildir</emphasis>.  The newest of the mailbox formats, used\nby the Qmail MTA (a replacement for sendmail).  Similar to\n<emphasis>MH</emphasis>, except that it adds three subdirectories of the\nmailbox: <emphasis>tmp</emphasis>, <emphasis>new</emphasis> and\n<emphasis>cur</emphasis>.  Filenames for the messages are chosen in such\na way they are unique, even when two programs are writing the mailbox\nover NFS, which means that no file locking is needed and corruption is\nvery unlikely. Maildir maybe slower to open without caching in Mutt, it\ntoo is not very disk-space efficient depending on the environment. Since\nno additional files are used for metadata (which is embedded in the\nmessage filenames) and Maildir is locking-free, it's easy to sync across\ndifferent machines using file-level synchronization tools.\n</para>\n\n</sect1>\n\n<sect1 id=\"shortcuts\">\n<title>Mailbox Shortcuts</title>\n\n<para>\nThere are a number of built in shortcuts which refer to specific\nmailboxes.  These shortcuts can be used anywhere you are prompted for a\nfile or mailbox path or in path-related configuration variables. Note\nthat these only work at the beginning of a string.\n</para>\n\n<table id=\"tab-mailbox-shortcuts\">\n<title>Mailbox shortcuts</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Shortcut</entry><entry>Refers to...</entry></row>\n</thead>\n<tbody>\n<row><entry><literal>!</literal></entry><entry>your <link linkend=\"spoolfile\">$spoolfile</link> (incoming) mailbox</entry></row>\n<row><entry><literal>&gt;</literal></entry><entry>your <link linkend=\"mbox\">$mbox</link> file</entry></row>\n<row><entry><literal>&lt;</literal></entry><entry>your <link linkend=\"record\">$record</link> file</entry></row>\n<row><entry><literal>^</literal></entry><entry>the current mailbox</entry></row>\n<row><entry><literal>-</literal> or <literal>!!</literal></entry><entry>the file you've last visited</entry></row>\n<row><entry><literal>~</literal></entry><entry>your home directory</entry></row>\n<row><entry><literal>=</literal> or <literal>+</literal></entry><entry>your <link linkend=\"folder\">$folder</link> directory</entry></row>\n<row><entry><emphasis>@alias</emphasis></entry><entry>to the <link linkend=\"save-hook\">default save folder</link> as determined by the address of the alias</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nFor example, to store a copy of outgoing messages in the folder they\nwere composed in, a <link\nlinkend=\"folder-hook\"><command>folder-hook</command></link> can be used\nto set <link linkend=\"record\">$record</link>:\n</para>\n\n<screen>\nfolder-hook . 'set record=^'</screen>\n\n</sect1>\n\n<sect1 id=\"using-lists\">\n<title>Handling Mailing Lists</title>\n\n<para>\nMutt has a few configuration options that make dealing with large\namounts of mail easier.  The first thing you must do is to let Mutt know\nwhat addresses you consider to be mailing lists (technically this does\nnot have to be a mailing list, but that is what it is most often used\nfor), and what lists you are subscribed to.  This is accomplished\nthrough the use of the <link linkend=\"lists\"><command>lists</command>\nand <command>subscribe</command></link> commands in your\n<literal>.muttrc</literal>.\n</para>\n\n<para>\nNow that Mutt knows what your mailing lists are, it can do several\nthings, the first of which is the ability to show the name of a list\nthrough which you received a message (i.e., of a subscribed list) in the\n<emphasis>index</emphasis> menu display.  This is useful to distinguish\nbetween personal and list mail in the same mailbox.  In the <link\nlinkend=\"index-format\">$index_format</link> variable, the expando\n<quote>%L</quote> will print the string <quote>To &lt;list&gt;</quote>\nwhen <quote>list</quote> appears in the <quote>To</quote> field, and\n<quote>Cc &lt;list&gt;</quote> when it appears in the <quote>Cc</quote>\nfield (otherwise it prints the name of the author).\n</para>\n\n<para>\nOften times the <quote>To</quote> and <quote>Cc</quote> fields in\nmailing list messages tend to get quite large. Most people do not bother\nto remove the author of the message they reply to from the list,\nresulting in two or more copies being sent to that person.  The\n<literal>&lt;list-reply&gt;</literal> function, which by default is\nbound to <quote>L</quote> in the <emphasis>index</emphasis> menu and\n<emphasis>pager</emphasis>, helps reduce the clutter by only replying to\nthe known mailing list addresses instead of all recipients (except as\nspecified by <literal>Mail-Followup-To</literal>, see below).\n</para>\n\n<para>\nMutt also supports the <literal>Mail-Followup-To</literal> header.  When\nyou send a message to a list of recipients which includes one or several\nsubscribed mailing lists, and if the <link\nlinkend=\"followup-to\">$followup_to</link> option is set, Mutt will\ngenerate a Mail-Followup-To header which contains all the recipients to\nwhom you send this message, but not your address. This indicates that\ngroup-replies or list-replies (also known as <quote>followups</quote>)\nto this message should only be sent to the original recipients of the\nmessage, and not separately to you - you'll receive your copy through\none of the mailing lists you are subscribed to.\n</para>\n\n<para>\nConversely, when group-replying or list-replying to a message which has\na <literal>Mail-Followup-To</literal> header, Mutt will respect this\nheader if the <link\nlinkend=\"honor-followup-to\">$honor_followup_to</link> configuration\nvariable is set.  Using <link linkend=\"list-reply\">list-reply</link>\nwill in this case also make sure that the reply goes to the mailing\nlist, even if it's not specified in the list of recipients in the\n<literal>Mail-Followup-To</literal>.\n</para>\n\n<note>\n<para>\nWhen header editing is enabled, you can create a\n<literal>Mail-Followup-To</literal> header manually.  Mutt will only\nauto-generate this header if it doesn't exist when you send the message.\n</para>\n</note>\n\n<para>\nThe other method some mailing list admins use is to generate a\n<quote>Reply-To</quote> field which points back to the mailing list\naddress rather than the author of the message.  This can create problems\nwhen trying to reply directly to the author in private, since most mail\nclients will automatically reply to the address given in the\n<quote>Reply-To</quote> field.  Mutt uses the <link\nlinkend=\"reply-to\">$reply_to</link> variable to help decide which\naddress to use.  If set to <emphasis>ask-yes</emphasis> or\n<emphasis>ask-no</emphasis>, you will be prompted as to whether or not\nyou would like to use the address given in the <quote>Reply-To</quote>\nfield, or reply directly to the address given in the <quote>From</quote>\nfield.  When set to <emphasis>yes</emphasis>, the\n<quote>Reply-To</quote> field will be used when present.\n</para>\n\n<para>\nThe <quote>X-Label:</quote> header field can be used to further identify\nmailing lists or list subject matter (or just to annotate messages\nindividually).  The <link linkend=\"index-format\">$index_format</link>\nvariable's <quote>%y</quote> and <quote>%Y</quote> expandos can be used\nto expand <quote>X-Label:</quote> fields in the index, and Mutt's\npattern-matcher can match regular expressions to <quote>X-Label:</quote>\nfields with the <quote>~y</quote> selector.  <quote>X-Label:</quote> is\nnot a standard message header field, but it can easily be inserted by\nprocmail and other mail filtering agents.\n</para>\n\n<para>\nLastly, Mutt has the ability to <link linkend=\"sort\">sort</link> the\nmailbox into <link linkend=\"threads\">threads</link>.  A thread is a\ngroup of messages which all relate to the same subject.  This is usually\norganized into a tree-like structure where a message and all of its\nreplies are represented graphically.  If you've ever used a threaded\nnews client, this is the same concept.  It makes dealing with large\nvolume mailing lists easier because you can easily delete uninteresting\nthreads and quickly find topics of value.\n</para>\n\n</sect1>\n\n<sect1 id=\"new-mail\">\n<title>New Mail Detection</title>\n\n<para>\nMutt supports setups with multiple folders, allowing all of them to be\nmonitored for new mail (see <xref linkend=\"mailboxes\"/> for details).\n</para>\n\n<sect2 id=\"new-mail-formats\">\n<title>How New Mail Detection Works</title>\n\n<para>\nFor Mbox and Mmdf folders, new mail is detected by comparing access\nand/or modification times of files: Mutt assumes a folder has new mail\nif it wasn't accessed after it was last modified. Utilities like\n<literal>biff</literal> or <literal>frm</literal> or any other program\nwhich accesses the mailbox might cause Mutt to never detect new mail for\nthat mailbox if they do not properly reset the access time. Other\npossible causes of Mutt not detecting new mail in these folders are\nbackup tools (updating access times) or filesystems mounted without\naccess time update support (for Linux systems, see the\n<literal>relatime</literal> option).\n</para>\n\n<note>\n<para>\nContrary to older Mutt releases, it now maintains the new mail status of\na folder by properly resetting the access time if the folder contains at\nleast one message which is neither read, nor deleted, nor marked as old.\n</para>\n</note>\n\n<para>\nIn cases where new mail detection for Mbox or Mmdf folders appears to be\nunreliable, the <link linkend=\"check-mbox-size\">$check_mbox_size</link>\noption can be used to make Mutt track and consult file sizes for new\nmail detection instead which won't work for size-neutral changes.\n</para>\n\n<para>\nNew mail for Maildir is assumed if there is one message in the\n<literal>new/</literal> subdirectory which is not marked deleted (see\n<link linkend=\"maildir-trash\">$maildir_trash</link>). For MH folders, a\nmailbox is considered having new mail if there's at least one message in\nthe <quote>unseen</quote> sequence as specified by <link\nlinkend=\"mh-seq-unseen\">$mh_seq_unseen</link>.\n</para>\n\n<para>\nMutt does not poll POP3 folders for new mail, it only periodically\nchecks the currently opened folder (if it's a POP3 folder).\n</para>\n\n<para>\nFor IMAP, by default Mutt uses recent message counts provided by the\nserver to detect new mail. If the <link\nlinkend=\"imap-idle\">$imap_idle</link> option is set, it'll use the IMAP\nIDLE extension if advertised by the server.\n</para>\n\n</sect2>\n\n<sect2 id=\"new-mail-polling\">\n<title>Polling For New Mail</title>\n\n<para>\nWhen in the index menu and being idle (also see <link\nlinkend=\"timeout\">$timeout</link>), Mutt periodically checks for new\nmail in all folders which have been configured via the\n<command>mailboxes</command> command. The interval depends on the folder\ntype: for local/IMAP folders it consults <link\nlinkend=\"mail-check\">$mail_check</link> and <link\nlinkend=\"pop-checkinterval\">$pop_checkinterval</link> for POP folders.\n</para>\n\n<para>\nOutside the index menu the directory browser supports checking for new\nmail using the <literal>&lt;check-new&gt;</literal> function which is\nunbound by default. Pressing TAB will bring up a menu showing the files\nspecified by the <command>mailboxes</command> command, and indicate\nwhich contain new messages. Mutt will automatically enter this mode when\ninvoked from the command line with the <literal>-y</literal> option.\n</para>\n\n<para>\nFor the pager, index and directory browser menus, Mutt contains the\n<literal>&lt;buffy-list&gt;</literal> function (bound to\n<quote>.</quote> by default) which will print a list of folders with new\nmail in the command line at the bottom of the screen.\n</para>\n\n<para>\nFor the index, by default Mutt displays the number of mailboxes with new\nmail in the status bar, please refer to the <link\nlinkend=\"status-format\">$status_format</link> variable for details.\n</para>\n\n<para>\nWhen changing folders, Mutt fills the prompt with the first folder from\nthe mailboxes list containing new mail (if any), pressing\n<literal>&lt;Space&gt;</literal> will cycle through folders with new\nmail.  The (by default unbound) function\n<literal>&lt;next-unread-mailbox&gt;</literal> in the index can be used\nto immediately open the next folder with unread mail (if any).\n</para>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"editing-threads\">\n<title>Editing Threads</title>\n\n<para>\nMutt has the ability to dynamically restructure threads that are broken\neither by misconfigured software or bad behavior from some\ncorrespondents. This allows to clean your mailboxes from these\nannoyances which make it hard to follow a discussion.\n</para>\n\n<sect2 id=\"link-threads\">\n<title>Linking Threads</title>\n\n<para>\nSome mailers tend to <quote>forget</quote> to correctly set the\n<quote>In-Reply-To:</quote> and <quote>References:</quote> headers when\nreplying to a message. This results in broken discussions because Mutt\nhas not enough information to guess the correct threading.  You can fix\nthis by tagging the reply, then moving to the parent message and using\nthe <literal>&lt;link-threads&gt;</literal> function (bound to &amp; by\ndefault). The reply will then be connected to this parent message.\n</para>\n\n<para>\nYou can also connect multiple children at once, tagging them and using\nthe <literal>&lt;tag-prefix&gt;</literal> command (<quote>;</quote>) or\nthe <link linkend=\"auto-tag\">$auto_tag</link> option.\n</para>\n\n</sect2>\n\n<sect2 id=\"break-threads\">\n<title>Breaking Threads</title>\n\n<para>\nOn mailing lists, some people are in the bad habit of starting a new\ndiscussion by hitting <quote>reply</quote> to any message from the list\nand changing the subject to a totally unrelated one.  You can fix such\nthreads by using the <literal>&lt;break-thread&gt;</literal> function\n(bound by default to #), which will turn the subthread starting from the\ncurrent message into a whole different thread.\n</para>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"dsn\">\n<title>Delivery Status Notification (DSN) Support</title>\n\n<para>\nRFC1894 defines a set of MIME content types for relaying information\nabout the status of electronic mail messages.  These can be thought of\nas <quote>return receipts.</quote>\n</para>\n\n<para>\nTo support DSN, there are two variables. <link\nlinkend=\"dsn-notify\">$dsn_notify</link> is used to request receipts for\ndifferent results (such as failed message, message delivered, etc.).\n<link linkend=\"dsn-return\">$dsn_return</link> requests how much of your\nmessage should be returned with the receipt (headers or full message).\n</para>\n\n<para>\nWhen using <link linkend=\"sendmail\">$sendmail</link> for mail delivery,\nyou need to use either Berkeley sendmail 8.8.x (or greater) a MTA\nsupporting DSN command line options compatible to Sendmail: The -N and\n-R options can be used by the mail client to make requests as to what\ntype of status messages should be returned. Please consider your MTA\ndocumentation whether DSN is supported.\n</para>\n\n<para>\nFor SMTP delivery using <link linkend=\"smtp-url\">$smtp_url</link>, it\ndepends on the capabilities announced by the server whether Mutt will\nattempt to request DSN or not.\n</para>\n\n</sect1>\n\n<sect1 id=\"urlview\">\n<title>Start a WWW Browser on URLs</title>\n\n<para>\nIf a message contains URLs, it is efficient to get a menu with all the\nURLs and start a WWW browser on one of them.  This functionality is\nprovided by the external urlview program which can be retrieved at\n<ulink\nurl=\"ftp://ftp.mutt.org/mutt/contrib/\">ftp://ftp.mutt.org/mutt/contrib/</ulink>\nand the configuration commands:\n</para>\n\n<screen>\nmacro index \\cb |urlview\\n\nmacro pager \\cb |urlview\\n\n</screen>\n\n</sect1>\n\n<sect1 id=\"misc-topics\">\n<title>Miscellany</title>\n\n<para>\nThis section documents various features that fit nowhere else.\n</para>\n\n<variablelist>\n<varlistentry>\n<term>\nAddress normalization\n</term>\n<listitem>\n<para>\nMutt normalizes all e-mail addresses to the simplest form possible. If\nan address contains a realname, the form <emphasis>Joe User\n&lt;joe@example.com&gt;</emphasis> is used and the pure e-mail address\nwithout angle brackets otherwise, i.e. just\n<emphasis>joe@example.com</emphasis>.\n</para>\n<para>\nThis normalization affects all headers Mutt generates including aliases.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>\nInitial folder selection\n</term>\n<listitem>\n<para>\nThe folder Mutt opens at startup is determined as follows: the folder\nspecified in the <literal>$MAIL</literal> environment variable if\npresent. Otherwise, the value of <literal>$MAILDIR</literal> is taken\ninto account. If that isn't present either, Mutt takes the user's\nmailbox in the mailspool as determined at compile-time (which may also\nreside in the home directory). The <link\nlinkend=\"spoolfile\">$spoolfile</link> setting overrides this\nselection. Highest priority has the mailbox given with the\n<literal>-f</literal> command line option.\n</para>\n</listitem>\n</varlistentry>\n</variablelist>\n\n</sect1>\n\n</chapter>\n\n<chapter id=\"mimesupport\">\n<title>Mutt's MIME Support</title>\n\n<para>\nQuite a bit of effort has been made to make Mutt the premier text-mode\nMIME MUA.  Every effort has been made to provide the functionality that\nthe discerning MIME user requires, and the conformance to the standards\nwherever possible.  When configuring Mutt for MIME, there are two extra\ntypes of configuration files which Mutt uses.  One is the\n<literal>mime.types</literal> file, which contains the mapping of file\nextensions to IANA MIME types.  The other is the\n<literal>mailcap</literal> file, which specifies the external commands\nto use for handling specific MIME types.\n</para>\n\n<sect1 id=\"using-mime\">\n<title>Using MIME in Mutt</title>\n\n<sect2 id=\"mime-overview\">\n<title>MIME Overview</title>\n\n<para>\nMIME is short for <quote>Multipurpose Internet Mail Extension</quote>\nand describes mechanisms to internationalize and structure mail\nmessages. Before the introduction of MIME, messages had a single text\npart and were limited to us-ascii header and content. With MIME,\nmessages can have attachments (and even attachments which itself have\nattachments and thus form a tree structure), nearly arbitrary characters\ncan be used for sender names, recipients and subjects.\n</para>\n\n<para>\nBesides the handling of non-ascii characters in message headers, to Mutt\nthe most important aspect of MIME are so-called MIME types. These are\nconstructed using a <emphasis>major</emphasis> and\n<emphasis>minor</emphasis> type separated by a forward slash.  These\nspecify details about the content that follows. Based upon these, Mutt\ndecides how to handle this part. The most popular major type is\n<quote><literal>text</literal></quote> with minor types for plain text,\nHTML and various other formats. Major types also exist for images,\naudio, video and of course general application data (e.g. to separate\ncryptographically signed data with a signature, send office documents,\nand in general arbitrary binary data). There's also the\n<literal>multipart</literal> major type which represents the root of a\nsubtree of MIME parts. A list of supported MIME types can be found in\n<xref linkend=\"supported-mime-types\"/>.\n</para>\n\n<para>\nMIME also defines a set of encoding schemes for transporting MIME\ncontent over the network: <literal>7bit</literal>,\n<literal>8bit</literal>, <literal>quoted-printable</literal>,\n<literal>base64</literal> and <literal>binary</literal>. There're some\nrules when to choose what for encoding headers and/or body (if needed),\nand Mutt will in general make a good choice.\n</para>\n\n<para>\nMutt does most of MIME encoding/decoding behind the scenes to form\nmessages conforming to MIME on the sending side. On reception, it can be\nflexibly configured as to how what MIME structure is displayed (and if\nit's displayed): these decisions are based on the content's MIME type.\nThere are three areas/menus in dealing with MIME: the pager (while\nviewing a message), the attachment menu and the compose menu.\n</para>\n\n</sect2>\n\n<sect2 id=\"mime-pager\">\n<title>Viewing MIME Messages in the Pager</title>\n\n<para>\nWhen you select a message from the index and view it in the pager, Mutt\ndecodes as much of a message as possible to a text representation.  Mutt\ninternally supports a number of MIME types, including the\n<literal>text</literal> major type (with all minor types), the\n<literal>message/rfc822</literal> (mail messages) type and some\n<literal>multipart</literal> types. In addition, it recognizes a variety\nof PGP MIME types, including PGP/MIME and\n<literal>application/pgp</literal>.\n</para>\n\n<para>\nMutt will denote attachments with a couple lines describing them.\nThese lines are of the form:\n</para>\n\n<screen>\n[-- Attachment #1: Description --]\n[-- Type: text/plain, Encoding: 7bit, Size: 10000 --]\n</screen>\n\n<para>\nWhere the <emphasis>Description</emphasis> is the description or\nfilename given for the attachment, and the <emphasis>Encoding</emphasis>\nis one of the already mentioned content encodings.\n</para>\n\n<para>\nIf Mutt cannot deal with a MIME type, it will display a message like:\n</para>\n\n<screen>\n[-- image/gif is unsupported (use 'v' to view this part) --]\n</screen>\n\n</sect2>\n\n<sect2 id=\"attach-menu\">\n<title>The Attachment Menu</title>\n\n<para>\nThe default binding for <literal>&lt;view-attachments&gt;</literal> is\n<quote>v</quote>, which displays the attachment menu for a message.  The\nattachment menu displays a list of the attachments in a message.  From\nthe attachment menu, you can save, print, pipe, delete, and view\nattachments.  You can apply these operations to a group of attachments\nat once, by tagging the attachments and by using the\n<literal>&lt;tag-prefix&gt;</literal> operator.  You can also reply to\nthe current message from this menu, and only the current attachment (or\nthe attachments tagged) will be quoted in your reply.  You can view\nattachments as text, or view them using the mailcap viewer definition\n(the mailcap mechanism is explained later in detail).\n</para>\n\n<para>\nFinally, you can apply the usual message-related functions (like <link\nlinkend=\"resend-message\"><literal>&lt;resend-message&gt;</literal></link>,\nand the <literal>&lt;reply&gt;</literal> and\n<literal>&lt;forward&gt;</literal> functions) to attachments of type\n<literal>message/rfc822</literal>.\n</para>\n\n<para>\nSee table <xref linkend=\"tab-attachment-bindings\"/> for all available\nfunctions.\n</para>\n\n</sect2>\n\n<sect2 id=\"compose-menu\">\n<title>The Compose Menu</title>\n\n<para>\nThe compose menu is the menu you see before you send a message.  It\nallows you to edit the recipient list, the subject, and other aspects of\nyour message.  It also contains a list of the attachments of your\nmessage, including the main body.  From this menu, you can print, copy,\nfilter, pipe, edit, compose, review, and rename an attachment or a list\nof tagged attachments.  You can also modifying the attachment\ninformation, notably the type, encoding and description.\n</para>\n\n<para>\nAttachments appear as follows by default:\n</para>\n\n<screen>\n- 1 [text/plain, 7bit, 1K]           /tmp/mutt-euler-8082-0 &lt;no description&gt;\n  2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz &lt;no description&gt;\n</screen>\n\n<para>\nThe <quote>-</quote> denotes that Mutt will delete the file after\nsending (or postponing, or canceling) the message.  It can be toggled\nwith the <literal>&lt;toggle-unlink&gt;</literal> command (default: u).\nThe next field is the MIME content-type, and can be changed with the\n<literal>&lt;edit-type&gt;</literal> command (default: ^T).  The next\nfield is the encoding for the attachment, which allows a binary message\nto be encoded for transmission on 7bit links.  It can be changed with\nthe <literal>&lt;edit-encoding&gt;</literal> command (default: ^E).  The\nnext field is the size of the attachment, rounded to kilobytes or\nmegabytes.  The next field is the filename, which can be changed with\nthe <literal>&lt;rename-file&gt;</literal> command (default: R).  The\nfinal field is the description of the attachment, and can be changed\nwith the <literal>&lt;edit-description&gt;</literal> command (default:\nd). See <link linkend=\"attach-format\">$attach_format</link> for a full\nlist of available expandos to format this display to your needs.\n</para>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"mime-types\">\n<title>MIME Type Configuration with <literal>mime.types</literal></title>\n\n<para>\nTo get most out of MIME, it's important that a MIME part's content type\nmatches the content as closely as possible so that the recipient's\nclient can automatically select the right viewer for the\ncontent. However, there's no reliable for Mutt to know how to detect\nevery possible file type. Instead, it uses a simple plain text mapping\nfile that specifies what file extension corresponds to what MIME\ntype. This file is called <literal>mime.types</literal>.\n</para>\n\n<para>\nWhen you add an attachment to your mail message, Mutt searches your\npersonal <literal>mime.types</literal> file at\n<literal>$HOME/.mime.types</literal>, and then the system\n<literal>mime.types</literal> file at\n<literal>/usr/local/share/mutt/mime.types</literal> or\n<literal>/etc/mime.types</literal>\n</para>\n\n<para>\nEach line starts with the full MIME type, followed by a space and\nspace-separated list of file extensions. For example you could use:\n</para>\n\n<example id=\"ex-mime-types\">\n<title><literal>mime.types</literal></title>\n<screen>\napplication/postscript          ps eps\napplication/pgp                 pgp\naudio/x-aiff                    aif aifc aiff\n</screen>\n</example>\n\n<para>\nA sample <literal>mime.types</literal> file comes with the Mutt\ndistribution, and should contain most of the MIME types you are likely\nto use.\n</para>\n\n<para>\nIf Mutt can not determine the MIME type by the extension of the file you\nattach, it will look at the file.  If the file is free of binary\ninformation, Mutt will assume that the file is plain text, and mark it\nas <literal>text/plain</literal>.  If the file contains binary\ninformation, then Mutt will mark it as\n<literal>application/octet-stream</literal>.  You can change the MIME\ntype that Mutt assigns to an attachment by using the\n<literal>&lt;edit-type&gt;</literal> command from the compose menu\n(default: ^T), see <xref linkend=\"supported-mime-types\"/> for supported\nmajor types. Mutt recognizes all of these if the appropriate entry is\nfound in the <literal>mime.types</literal> file. Non-recognized mime\ntypes should only be used if the recipient of the message is likely to\nbe expecting such attachments.\n</para>\n\n<table id=\"supported-mime-types\">\n<title>Supported MIME types</title>\n<tgroup cols=\"3\">\n<thead>\n<row><entry>MIME major type</entry><entry>Standard</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry><literal>application</literal></entry><entry>yes</entry><entry>General application data</entry></row>\n<row><entry><literal>audio</literal></entry><entry>yes</entry><entry>Audio data</entry></row>\n<row><entry><literal>image</literal></entry><entry>yes</entry><entry>Image data</entry></row>\n<row><entry><literal>message</literal></entry><entry>yes</entry><entry>Mail messages, message status information</entry></row>\n<row><entry><literal>model</literal></entry><entry>yes</entry><entry>VRML and other modeling data</entry></row>\n<row><entry><literal>multipart</literal></entry><entry>yes</entry><entry>Container for other MIME parts</entry></row>\n<row><entry><literal>text</literal></entry><entry>yes</entry><entry>Text data</entry></row>\n<row><entry><literal>video</literal></entry><entry>yes</entry><entry>Video data</entry></row>\n<row><entry><literal>chemical</literal></entry><entry>no</entry><entry>Mostly molecular data</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nMIME types are not arbitrary, they need to be assigned by <ulink\nurl=\"http://www.iana.org/assignments/media-types/\">IANA</ulink>.\n</para>\n\n</sect1>\n\n<sect1 id=\"mailcap\">\n<title>MIME Viewer Configuration with Mailcap</title>\n\n<para>\nMutt supports RFC 1524 MIME Configuration, in particular the Unix\nspecific format specified in Appendix A of RFC 1524.  This file format\nis commonly referred to as the <quote>mailcap</quote> format.  Many MIME\ncompliant programs utilize the mailcap format, allowing you to specify\nhandling for all MIME types in one place for all programs.  Programs\nknown to use this format include Firefox, lynx and metamail.\n</para>\n\n<para>\nIn order to handle various MIME types that Mutt doesn't have built-in\nsupport for, it parses a series of external configuration files to find\nan external handler. The default search string for these files is a\ncolon delimited list containing the following files:\n</para>\n\n<orderedlist>\n<listitem><para><literal>$HOME/.mailcap</literal></para></listitem>\n<listitem><para><literal>$PKGDATADIR/mailcap</literal></para></listitem>\n<listitem><para><literal>$SYSCONFDIR/mailcap</literal></para></listitem>\n<listitem><para><literal>/etc/mailcap</literal></para></listitem>\n<listitem><para><literal>/usr/etc/mailcap</literal></para></listitem>\n<listitem><para><literal>/usr/local/etc/mailcap</literal></para></listitem>\n</orderedlist>\n\n<para>\nwhere <literal>$HOME</literal> is your home directory. The\n<literal>$PKGDATADIR</literal> and the <literal>$SYSCONFDIR</literal>\ndirectories depend on where Mutt is installed: the former is the default\nfor shared data, the latter for system configuration files.\n</para>\n\n<para>\nThe default search path can be obtained by running the following\ncommand:\n</para>\n\n<screen>\nmutt -nF /dev/null -Q mailcap_path\n</screen>\n\n<para>\nIn particular, the metamail distribution will install a mailcap file,\nusually as <literal>/usr/local/etc/mailcap</literal>, which contains\nsome baseline entries.\n</para>\n\n<sect2 id=\"mailcap-basics\">\n<title>The Basics of the Mailcap File</title>\n\n<para>\nA mailcap file consists of a series of lines which are comments, blank,\nor definitions.\n</para>\n\n<para>\nA comment line consists of a # character followed by anything you want.\n</para>\n\n<para>\nA blank line is blank.\n</para>\n\n<para>\nA definition line consists of a content type, a view command, and any\nnumber of optional fields.  Each field of a definition line is divided\nby a semicolon <quote>;</quote> character.\n</para>\n\n<para>\nThe content type is specified in the MIME standard\n<quote>type/subtype</quote> notation.  For example,\n<literal>text/plain</literal>, <literal>text/html</literal>,\n<literal>image/gif</literal>, etc.  In addition, the mailcap format\nincludes two formats for wildcards, one using the special\n<quote>*</quote> subtype, the other is the implicit wild, where you only\ninclude the major type.  For example, <literal>image/*</literal>, or\n<literal>video</literal> will match all image types and video types,\nrespectively.\n</para>\n\n<para>\nThe view command is a Unix command for viewing the type specified. There\nare two different types of commands supported. The default is to send\nthe body of the MIME message to the command on stdin. You can change\nthis behavior by using <literal>%s</literal> as a parameter to your view\ncommand.  This will cause Mutt to save the body of the MIME message to a\ntemporary file, and then call the view command with the\n<literal>%s</literal> replaced by the name of the temporary file. In\nboth cases, Mutt will turn over the terminal to the view program until\nthe program quits, at which time Mutt will remove the temporary file if\nit exists. This means that mailcap does <emphasis>not</emphasis> work\nout of the box with programs which detach themselves from the terminal\nright after starting, like <literal>open</literal> on Mac OS X. In order\nto nevertheless use these programs with mailcap, you probably need\ncustom shell scripts.\n</para>\n\n<para>\nSo, in the simplest form, you can send a <literal>text/plain</literal>\nmessage to the external pager more on standard input:\n</para>\n\n<screen>\ntext/plain; more\n</screen>\n\n<para>\nOr, you could send the message as a file:\n</para>\n\n<screen>\ntext/plain; more %s\n</screen>\n\n<para>\nPerhaps you would like to use lynx to interactively view a\n<literal>text/html</literal> message:\n</para>\n\n<screen>\ntext/html; lynx %s\n</screen>\n\n<para>\nIn this case, lynx does not support viewing a file from standard input,\nso you must use the <literal>%s</literal> syntax.\n</para>\n\n<note>\n<para>\n<emphasis>Some older versions of lynx contain a bug where they will\ncheck the mailcap file for a viewer for <literal>text/html</literal>.\nThey will find the line which calls lynx, and run it.  This causes lynx\nto continuously spawn itself to view the object.</emphasis>\n</para>\n</note>\n\n<para>\nOn the other hand, maybe you don't want to use lynx interactively, you\njust want to have it convert the <literal>text/html</literal> to\n<literal>text/plain</literal>, then you can use:\n</para>\n\n<screen>\ntext/html; lynx -dump %s | more\n</screen>\n\n<para>\nPerhaps you wish to use lynx to view <literal>text/html</literal> files,\nand a pager on all other text formats, then you would use the following:\n</para>\n\n<screen>\ntext/html; lynx %s\ntext/*; more\n</screen>\n\n</sect2>\n\n<sect2 id=\"secure-mailcap\">\n<title>Secure Use of Mailcap</title>\n\n<para>\nThe interpretation of shell meta-characters embedded in MIME parameters\ncan lead to security problems in general.  Mutt tries to quote\nparameters in expansion of <literal>%s</literal> syntaxes properly, and\navoids risky characters by substituting them, see the <link\nlinkend=\"mailcap-sanitize\">$mailcap_sanitize</link> variable.\n</para>\n\n<para>\nAlthough Mutt's procedures to invoke programs with mailcap seem to be\nsafe, there are other applications parsing mailcap, maybe taking less\ncare of it.  Therefore you should pay attention to the following rules:\n</para>\n\n<para>\n<emphasis>Keep the %-expandos away from shell quoting.</emphasis> Don't\nquote them with single or double quotes.  Mutt does this for you, the\nright way, as should any other program which interprets mailcap.  Don't\nput them into backtick expansions.  Be highly careful with evil\nstatements, and avoid them if possible at all.  Trying to fix broken\nbehavior with quotes introduces new leaks &mdash; there is no\nalternative to correct quoting in the first place.\n</para>\n\n<para>\nIf you have to use the %-expandos' values in context where you need\nquoting or backtick expansions, put that value into a shell variable and\nreference the shell variable where necessary, as in the following\nexample (using <literal>$charset</literal> inside the backtick expansion\nis safe, since it is not itself subject to any further expansion):\n</para>\n\n<screen>\ntext/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \\\n        &amp;&amp; test \"`echo $charset | tr '[A-Z]' '[a-z]'`\" != iso-8859-1\n</screen>\n\n</sect2>\n\n<sect2 id=\"advanced-mailcap\">\n<title>Advanced Mailcap Usage</title>\n\n<sect3 id=\"optional-mailcap-fields\">\n<title>Optional Fields</title>\n\n<para>\nIn addition to the required content-type and view command fields, you\ncan add semi-colon <quote>;</quote> separated fields to set flags and\nother options.  Mutt recognizes the following optional fields:\n</para>\n\n<variablelist>\n\n<varlistentry>\n<term>copiousoutput</term>\n<listitem>\n<para>\nThis flag tells Mutt that the command passes possibly large amounts of\ntext on standard output.  This causes Mutt to invoke a pager (either\nthe internal pager or the external pager defined by the pager variable)\non the output of the view command.  Without this flag, Mutt assumes that\nthe command is interactive.  One could use this to replace the pipe to\n<literal>more</literal> in the <literal>lynx -dump</literal> example in\nthe Basic section:\n</para>\n\n<screen>\ntext/html; lynx -dump %s ; copiousoutput\n</screen>\n\n<para>\nThis will cause lynx to format the <literal>text/html</literal> output\nas <literal>text/plain</literal> and Mutt will use your standard pager\nto display the results.\n</para>\n\n<para>\nNote that when using the built-in pager, <emphasis>only</emphasis>\nentries with this flag will be considered a handler for a MIME type\n&mdash; all other entries will be ignored.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>needsterminal</term>\n<listitem>\n<para>\nMutt uses this flag when viewing attachments with <link\nlinkend=\"auto-view\"><command>auto_view</command></link>, in order to\ndecide whether it should honor the setting of the <link\nlinkend=\"wait-key\">$wait_key</link> variable or not.  When an attachment\nis viewed using an interactive program, and the corresponding mailcap\nentry has a <emphasis>needsterminal</emphasis> flag, Mutt will use <link\nlinkend=\"wait-key\">$wait_key</link> and the exit status of the program\nto decide if it will ask you to press a key after the external program\nhas exited.  In all other situations it will not prompt you for a key.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>compose=&lt;command&gt;</term>\n<listitem>\n<para>\nThis flag specifies the command to use to create a new attachment of a\nspecific MIME type.  Mutt supports this from the compose menu.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>composetyped=&lt;command&gt;</term>\n<listitem>\n<para>\nThis flag specifies the command to use to create a new attachment of a\nspecific MIME type.  This command differs from the compose command in\nthat Mutt will expect standard MIME headers on the data.  This can be\nused to specify parameters, filename, description, etc. for a new\nattachment.  Mutt supports this from the compose menu.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>print=&lt;command&gt;</term>\n<listitem>\n<para>\nThis flag specifies the command to use to print a specific MIME type.\nMutt supports this from the attachment and compose menus.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>edit=&lt;command&gt;</term>\n<listitem>\n<para>\nThis flag specifies the command to use to edit a specific MIME type.\nMutt supports this from the compose menu, and also uses it to compose\nnew attachments.  Mutt will default to the defined <link\nlinkend=\"editor\">$editor</link> for text attachments.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>nametemplate=&lt;template&gt;</term>\n<listitem>\n<para>\nThis field specifies the format for the file denoted by\n<literal>%s</literal> in the command fields.  Certain programs will\nrequire a certain file extension, for instance, to correctly view a\nfile.  For instance, lynx will only interpret a file as\n<literal>text/html</literal> if the file ends in\n<literal>.html</literal>.  So, you would specify lynx as a\n<literal>text/html</literal> viewer with a line in the mailcap file\nlike:\n</para>\n\n<screen>\ntext/html; lynx %s; nametemplate=%s.html\n</screen>\n\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>test=&lt;command&gt;</term>\n<listitem>\n<para>\nThis field specifies a command to run to test whether this mailcap entry\nshould be used.  The command is defined with the command expansion rules\ndefined in the next section.  If the command returns 0, then the test\npassed, and Mutt uses this entry.  If the command returns non-zero, then\nthe test failed, and Mutt continues searching for the right entry.  Note\nthat the content-type must match before Mutt performs the test.  For\nexample:\n</para>\n\n<screen>\ntext/html; firefox -remote 'openURL(%s)' ; test=RunningX\ntext/html; lynx %s\n</screen>\n\n<para>\nIn this example, Mutt will run the program <literal>RunningX</literal>\nwhich will return 0 if the X Window manager is running, and non-zero if\nit isn't.  If <literal>RunningX</literal> returns 0, then Mutt will run\nfirefox to display the <literal>text/html</literal> object.  If RunningX\ndoesn't return 0, then Mutt will go on to the next entry and use lynx to\ndisplay the <literal>text/html</literal> object.\n</para>\n</listitem>\n</varlistentry>\n</variablelist>\n\n</sect3>\n\n<sect3 id=\"mailcap-search-order\">\n<title>Search Order</title>\n\n<para>\nWhen searching for an entry in the mailcap file, Mutt will search for\nthe most useful entry for its purpose.  For instance, if you are\nattempting to print an <literal>image/gif</literal>, and you have the\nfollowing entries in your mailcap file, Mutt will search for an entry\nwith the print command:\n</para>\n\n<screen>\nimage/*;        xv %s\nimage/gif;      ; print= anytopnm %s | pnmtops | lpr; \\\n                nametemplate=%s.gif\n</screen>\n\n<para>\nMutt will skip the <literal>image/*</literal> entry and use the\n<literal>image/gif</literal> entry with the print command.\n</para>\n\n<para>\nIn addition, you can use this with <link\nlinkend=\"auto-view\"><command>auto_view</command></link> to denote two\ncommands for viewing an attachment, one to be viewed automatically, the\nother to be viewed interactively from the attachment menu using the\n<literal>&lt;view-mailcap&gt;</literal> function (bound to\n<quote>m</quote> by default). In addition, you can then use the test\nfeature to determine which viewer to use interactively depending on your\nenvironment.\n</para>\n\n<screen>\ntext/html;      firefox -remote 'openURL(%s)' ; test=RunningX\ntext/html;      lynx %s; nametemplate=%s.html\ntext/html;      lynx -dump %s; nametemplate=%s.html; copiousoutput\n</screen>\n\n<para>\nFor <link linkend=\"auto-view\"><command>auto_view</command></link>, Mutt\nwill choose the third entry because of the\n<literal>copiousoutput</literal> tag.  For interactive viewing, Mutt\nwill run the program <literal>RunningX</literal> to determine if it\nshould use the first entry.  If the program returns non-zero, Mutt will\nuse the second entry for interactive viewing. The last entry is for\ninline display in the pager and the\n<literal>&lt;view-attach&gt;</literal> function in the attachment menu.\n</para>\n\n<para>\nEntries with the <literal>copiousoutput</literal> tag should always be\nspecified as the last one per type. For non-interactive use, the last\nentry will then actually be the first matching one with the tag set.\nFor non-interactive use, only <literal>copiousoutput</literal>-tagged\nentries are considered. For interactive use, Mutt ignores this tag and\ntreats all entries equally. Therefore, if not specified last, all\nfollowing entries without this tag would never be considered for\n<literal>&lt;view-attach&gt;</literal> because the\n<literal>copiousoutput</literal> before them matched already.\n</para>\n\n</sect3>\n\n<sect3 id=\"mailcap-command-expansion\">\n<title>Command Expansion</title>\n\n<para>\nThe various commands defined in the mailcap files are passed to the\n<literal>/bin/sh</literal> shell using the <literal>system(3)</literal>\nfunction.  Before the command is passed to <literal>/bin/sh\n-c</literal>, it is parsed to expand various special parameters with\ninformation from Mutt.  The keywords Mutt expands are:\n</para>\n\n<variablelist>\n\n<varlistentry>\n<term>%s</term>\n<listitem>\n<para>\nAs seen in the basic mailcap section, this variable is expanded to a\nfilename specified by the calling program.  This file contains the body\nof the message to view/print/edit or where the composing program should\nplace the results of composition.  In addition, the use of this keyword\ncauses Mutt to not pass the body of the message to the view/print/edit\nprogram on stdin.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>%t</term>\n<listitem>\n<para>\nMutt will expand <literal>%t</literal> to the text representation of the\ncontent type of the message in the same form as the first parameter of\nthe mailcap definition line, i.e. <literal>text/html</literal> or\n<literal>image/gif</literal>.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>%{&lt;parameter&gt;}</term>\n<listitem>\n<para>\nMutt will expand this to the value of the specified parameter from the\nContent-Type: line of the mail message.  For instance, if your mail\nmessage contains:\n</para>\n\n<screen>\nContent-Type: text/plain; charset=iso-8859-1\n</screen>\n\n<para>\nthen Mutt will expand <literal>%{charset}</literal> to\n<quote>iso-8859-1</quote>.  The default metamail mailcap file uses this\nfeature to test the charset to spawn an xterm using the right charset to\nview the message.\n</para>\n</listitem>\n</varlistentry>\n<varlistentry>\n<term>\\%</term>\n<listitem>\n<para>\nThis will be replaced by a literal <literal>%</literal>.\n</para>\n</listitem>\n</varlistentry>\n</variablelist>\n\n<para>\nMutt does not currently support the <literal>%F</literal> and\n<literal>%n</literal> keywords specified in RFC 1524.  The main purpose\nof these parameters is for multipart messages, which is handled\ninternally by Mutt.\n</para>\n\n</sect3>\n\n</sect2>\n\n<sect2 id=\"mailcap-example\">\n<title>Example Mailcap Files</title>\n\n<para>\nThis mailcap file is fairly simple and standard:\n</para>\n\n<screen>\n<emphasis role=\"comment\"># I'm always running X :)</emphasis>\nvideo/*;        xanim %s &gt; /dev/null\nimage/*;        xv %s &gt; /dev/null\n\n<emphasis role=\"comment\"># I'm always running firefox (if my computer had more memory, maybe)</emphasis>\ntext/html;      firefox -remote 'openURL(%s)'\n</screen>\n\n<para>\nThis mailcap file shows quite a number of examples:\n</para>\n\n<screen>\n<emphasis role=\"comment\"># Use xanim to view all videos   Xanim produces a header on startup,\n# send that to /dev/null so I don't see it</emphasis>\nvideo/*;        xanim %s &gt; /dev/null\n\n<emphasis role=\"comment\"># Send html to a running firefox by remote</emphasis>\ntext/html;      firefox -remote 'openURL(%s)'; test=RunningFirefox\n\n<emphasis role=\"comment\"># If I'm not running firefox but I am running X, start firefox on the\n# object</emphasis>\ntext/html;      firefox %s; test=RunningX\n\n<emphasis role=\"comment\"># Else use lynx to view it as text</emphasis>\ntext/html;      lynx %s\n\n<emphasis role=\"comment\"># This version would convert the text/html to text/plain</emphasis>\ntext/html;      lynx -dump %s; copiousoutput\n\n<emphasis role=\"comment\"># I use enscript to print text in two columns to a page</emphasis>\ntext/*;         more %s; print=enscript -2Gr %s\n\n<emphasis role=\"comment\"># Firefox adds a flag to tell itself to view jpegs internally</emphasis>\nimage/jpeg;xv %s; x-mozilla-flags=internal\n\n<emphasis role=\"comment\"># Use xv to view images if I'm running X</emphasis>\n<emphasis role=\"comment\"># In addition, this uses the \\ to extend the line and set my editor</emphasis>\n<emphasis role=\"comment\"># for images</emphasis>\nimage/*;xv %s; test=RunningX; \\\n        edit=xpaint %s\n\n<emphasis role=\"comment\"># Convert images to text using the netpbm tools</emphasis>\nimage/*;  (anytopnm %s | pnmscale -xysize 80 46 | ppmtopgm | pgmtopbm |\npbmtoascii -1x2 ) 2&gt;&amp;1 ; copiousoutput\n\n<emphasis role=\"comment\"># Send excel spreadsheets to my NT box</emphasis>\napplication/ms-excel; open.pl %s\n</screen>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"auto-view\">\n<title>MIME Autoview</title>\n\n<para>\nUsage:\n</para>\n\n<cmdsynopsis>\n<command>auto_view</command>\n<arg choice=\"plain\">\n<replaceable>mimetype</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n\n<command>unauto_view</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nIn addition to explicitly telling Mutt to view an attachment with the\nMIME viewer defined in the mailcap file from the attachments menu, Mutt\nhas support for automatically viewing MIME attachments while in the\npager.\n</para>\n\n<para>\nFor this to work, you must define a viewer in the mailcap file which\nuses the <literal>copiousoutput</literal> option to denote that it is\nnon-interactive.  Usually, you also use the entry to convert the\nattachment to a text representation which you can view in the pager.\n</para>\n\n<para>\nYou then use the <command>auto_view</command> configuration command to\nlist the content-types that you wish to view automatically.  For\ninstance, if you set it to:\n</para>\n\n<screen>\nauto_view text/html application/x-gunzip \\\n  application/postscript image/gif application/x-tar-gz\n</screen>\n\n<para>\n...Mutt would try to find corresponding entries for rendering\nattachments of these types as text. A corresponding mailcap could look\nlike:\n</para>\n\n<screen>\ntext/html;      lynx -dump %s; copiousoutput; nametemplate=%s.html\nimage/*;        anytopnm %s | pnmscale -xsize 80 -ysize 50 | ppmtopgm | \\\n                pgmtopbm | pbmtoascii ; copiousoutput\napplication/x-gunzip;   gzcat; copiousoutput\napplication/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput\napplication/postscript; ps2ascii %s; copiousoutput\n</screen>\n\n<para>\n<command>unauto_view</command> can be used to remove previous entries\nfrom the <command>auto_view</command> list.  This can be used with <link\nlinkend=\"message-hook\"><command>message-hook</command></link> to\nautoview messages based on size, etc.\n<quote><command>unauto_view</command> *</quote> will remove all previous\nentries.\n</para>\n\n</sect1>\n\n<sect1 id=\"alternative-order\">\n<title>MIME Multipart/Alternative</title>\n\n<para>\nThe <literal>multipart/alternative</literal> container type only has\nchild MIME parts which represent the same content in an alternative\nway. This is often used to send HTML messages which contain an\nalternative plain text representation.\n</para>\n\n<para>\nMutt has some heuristics for determining which attachment of a\n<literal>multipart/alternative</literal> type to display:\n</para>\n\n<orderedlist>\n<listitem>\n<para>\nFirst, Mutt will check the <command>alternative_order</command> list to\ndetermine if one of the available types is preferred.  It consists of a\nnumber of MIME types in order, including support for implicit and\nexplicit wildcards. For example:\n</para>\n\n<screen>\nalternative_order text/enriched text/plain text \\\n  application/postscript image/*\n</screen>\n</listitem>\n<listitem>\n<para>\nNext, Mutt will check if any of the types have a defined <link\nlinkend=\"auto-view\"><command>auto_view</command></link>, and use that.\n</para>\n</listitem>\n<listitem>\n<para>\nFailing that, Mutt will look for any text type.\n</para>\n</listitem>\n<listitem>\n<para>\nAs a last attempt, Mutt will look for any type it knows how to handle.\n</para>\n</listitem>\n</orderedlist>\n\n<para>\nTo remove a MIME type from the <command>alternative_order</command>\nlist, use the <command>unalternative_order</command> command.\n</para>\n\n</sect1>\n\n<sect1 id=\"attachments\">\n<title>Attachment Searching and Counting</title>\n\n<para>\nIf you ever lose track of attachments in your mailboxes, Mutt's\nattachment-counting and -searching support might be for you.  You can\nmake your message index display the number of qualifying attachments in\neach message, or search for messages by attachment count.  You also can\nconfigure what kinds of attachments qualify for this feature with the\n<command>attachments</command> and <command>unattachments</command>\ncommands.\n</para>\n\n<para>\nIn order to provide this information, Mutt needs to fully MIME-parse all\nmessages affected first. This can slow down operation especially for\nremote mail folders such as IMAP because all messages have to be\ndownloaded first regardless whether the user really wants to view them\nor not though using <xref linkend=\"body-caching\"/> usually means to\ndownload the message just once.\n</para>\n\n<para>\nThe syntax is:\n</para>\n\n<cmdsynopsis>\n<command>attachments</command>\n<arg choice=\"plain\">\n<replaceable>{ + | - }disposition</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable>mime-type</replaceable>\n</arg>\n\n<command>unattachments</command>\n<arg choice=\"plain\">\n<replaceable>{ + | - }disposition</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable>mime-type</replaceable>\n</arg>\n\n<command>attachments</command>\n<arg choice=\"plain\">\n<replaceable>?</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\n<emphasis>disposition</emphasis> is the attachment's Content-Disposition\ntype &mdash; either <literal>inline</literal> or\n<literal>attachment</literal>.  You can abbreviate this to\n<literal>I</literal> or <literal>A</literal>.\n</para>\n\n<para>\nDisposition is prefixed by either a <quote>+</quote> symbol or a\n<quote>-</quote> symbol.  If it's a <quote>+</quote>, you're saying that\nyou want to allow this disposition and MIME type to qualify.  If it's a\n<quote>-</quote>, you're saying that this disposition and MIME type is\nan exception to previous <quote>+</quote> rules.  There are examples\nbelow of how this is useful.\n</para>\n\n<para>\n<emphasis>mime-type</emphasis> is the MIME type of the attachment you\nwant the command to affect.  A MIME type is always of the format\n<literal>major/minor</literal>, where <literal>major</literal> describes\nthe broad category of document you're looking at, and\n<literal>minor</literal> describes the specific type within that\ncategory.  The major part of mime-type must be literal text (or the\nspecial token <quote><literal>*</literal></quote>), but the minor part\nmay be a regular expression.  (Therefore,\n<quote><literal>*/.*</literal></quote> matches any MIME type.)\n</para>\n\n<para>\nThe MIME types you give to the <command>attachments</command> directive\nare a kind of pattern.  When you use the <command>attachments</command>\ndirective, the patterns you specify are added to a list.  When you use\n<command>unattachments</command>, the pattern is removed from the list.\nThe patterns are not expanded and matched to specific MIME types at this\ntime &mdash; they're just text in a list.  They're only matched when\nactually evaluating a message.\n</para>\n\n<para>\nSome examples might help to illustrate.  The examples that are not\ncommented out define the default configuration of the lists.\n</para>\n\n<example id=\"ex-attach-count\">\n<title>Attachment counting</title>\n<screen>\n<emphasis role=\"comment\">\n# Removing a pattern from a list removes that pattern literally. It\n# does not remove any type matching the pattern.\n#\n#  attachments   +A */.*\n#  attachments   +A image/jpeg\n#  unattachments +A */.*\n#\n# This leaves \"attached\" image/jpeg files on the allowed attachments\n# list. It does not remove all items, as you might expect, because the\n# second */.* is not a matching expression at this time.\n#\n# Remember: \"unattachments\" only undoes what \"attachments\" has done!\n# It does not trigger any matching on actual messages.\n\n# Qualify any MIME part with an \"attachment\" disposition, EXCEPT for\n# text/x-vcard and application/pgp parts. (PGP parts are already known\n# to mutt, and can be searched for with ~g, ~G, and ~k.)\n#\n# I've added x-pkcs7 to this, since it functions (for S/MIME)\n# analogously to PGP signature attachments. S/MIME isn't supported\n# in a stock mutt build, but we can still treat it specially here.\n#\n</emphasis>\nattachments   +A */.*\nattachments   -A text/x-vcard application/pgp.*\nattachments   -A application/x-pkcs7-.*\n\n<emphasis role=\"comment\">\n# Discount all MIME parts with an \"inline\" disposition, unless they're\n# text/plain. (Why inline a text/plain part unless it's external to the\n# message flow?)\n</emphasis>\nattachments   +I text/plain\n\n<emphasis role=\"comment\">\n# These two lines make Mutt qualify MIME containers.  (So, for example,\n# a message/rfc822 forward will count as an attachment.)  The first\n# line is unnecessary if you already have \"attach-allow */.*\", of\n# course.  These are off by default!  The MIME elements contained\n# within a message/* or multipart/* are still examined, even if the\n# containers themselves don't qualify.\n\n#attachments  +A message/.* multipart/.*\n#attachments  +I message/.* multipart/.*\n</emphasis>\n\n<emphasis role=\"comment\">## You probably don't really care to know about deleted attachments.</emphasis>\nattachments   -A message/external-body\nattachments   -I message/external-body\n</screen>\n</example>\n\n<para>\nEntering the command <quote><command>attachments</command> ?</quote> as\na command will list your current settings in Muttrc format, so that it\ncan be pasted elsewhere.\n</para>\n\n</sect1>\n\n<sect1 id=\"mime-lookup\">\n<title>MIME Lookup</title>\n\n<para>\nUsage:\n</para>\n\n<cmdsynopsis>\n<command>mime_lookup</command>\n<arg choice=\"plain\">\n<replaceable>mimetype</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n\n<command>unmime_lookup</command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nMutt's <command>mime_lookup</command> list specifies a list of MIME\ntypes that should <emphasis>not</emphasis> be treated according to their\nmailcap entry.  This option is designed to deal with binary types such\nas <literal>application/octet-stream</literal>.  When an attachment's\nMIME type is listed in <command>mime_lookup</command>, then the\nextension of the filename will be compared to the list of extensions in\nthe <literal>mime.types</literal> file.  The MIME type associated with\nthis extension will then be used to process the attachment according to\nthe rules in the mailcap file and according to any other configuration\noptions (such as <command>auto_view</command>) specified.  Common usage\nwould be:\n</para>\n\n<screen>\nmime_lookup application/octet-stream application/X-Lotus-Manuscript\n</screen>\n\n<para>\nIn addition, the <literal>unmime_lookup</literal> command may be used to\ndisable this feature for any particular MIME type if it had been set,\nfor example, in a global <literal>.muttrc</literal>.\n</para>\n\n</sect1>\n\n</chapter>\n\n<chapter id=\"optionalfeatures\">\n<title>Optional Features</title>\n\n<sect1 id=\"optionalfeatures-notes\">\n<title>General Notes</title>\n\n<sect2 id=\"compile-time-features\">\n<title>Enabling/Disabling Features</title>\n\n<para>\nMutt supports several of optional features which can be enabled or\ndisabled at compile-time by giving the <emphasis>configure</emphasis>\nscript certain arguments. These are listed in the <quote>Optional\nfeatures</quote> section of the <emphasis>configure --help</emphasis>\noutput.\n</para>\n\n<para>\nWhich features are enabled or disabled can later be determined from the\noutput of <literal>mutt -v</literal>. If a compile option starts with\n<quote>+</quote> it is enabled and disabled if prefixed with\n<quote>-</quote>. For example, if Mutt was compiled using GnuTLS for\nencrypted communication instead of OpenSSL, <literal>mutt -v</literal>\nwould contain:\n</para>\n\n<screen>\n-USE_SSL_OPENSSL +USE_SSL_GNUTLS</screen>\n\n</sect2>\n\n<sect2 id=\"url-syntax\">\n<title>URL Syntax</title>\n\n<para>\nMutt optionally supports the IMAP, POP3 and SMTP protocols which require\nto access servers using URLs. The canonical syntax for specifying URLs\nin Mutt is (an item enclosed in <literal>[]</literal> means it is\noptional and may be omitted):\n</para>\n\n<screen>\nproto[s]://[username[:password]@]server[:port][/path]\n</screen>\n\n<para>\n<emphasis>proto</emphasis> is the communication protocol:\n<literal>imap</literal> for IMAP, <literal>pop</literal> for POP3 and\n<literal>smtp</literal> for SMTP. If <quote>s</quote> for <quote>secure\ncommunication</quote> is appended, Mutt will attempt to establish an\nencrypted communication using SSL or TLS.\n</para>\n\n<para>\nSince all protocols supported by Mutt support/require authentication,\nlogin credentials may be specified in the URL. This has the advantage\nthat multiple IMAP, POP3 or SMTP servers may be specified (which isn't\npossible using, for example, <link\nlinkend=\"imap-user\">$imap_user</link>). The username may contain the\n<quote>@</quote> symbol being used by many mail systems as part of the\nlogin name. The special characters <quote>/</quote>\n(<literal>%2F</literal>), <quote>:</quote> (<literal>%3A</literal>) and\n<quote>%</quote> (<literal>%25</literal>) have to be URL-encoded in\nusernames using the <literal>%</literal>-notation.\n</para>\n\n<para>\nA password can be given, too but is not recommended if the URL is\nspecified in a configuration file on disk.\n</para>\n\n<para>\nIf no port number is given, Mutt will use the system's default for the\ngiven protocol (usually consulting <literal>/etc/services</literal>).\n</para>\n\n<para>\nThe optional path is only relevant for IMAP and ignored elsewhere.\n</para>\n\n<example id=\"ex-url\">\n<title>URLs</title>\n<screen>\npops://host/\nimaps://user@host/INBOX/Sent\nsmtp://user@host:587/\n</screen>\n</example>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"ssl\">\n<title>SSL/TLS Support</title>\n\n<para>\nIf Mutt is compiled with IMAP, POP3 and/or SMTP support, it can also be\ncompiled with support for SSL or TLS using either OpenSSL or GnuTLS ( by\nrunning the <emphasis>configure</emphasis> script with the\n<emphasis>--enable-ssl=...</emphasis> option for OpenSSL or\n<emphasis>--enable-gnutls=...</emphasis> for GnuTLS). Mutt can then\nattempt to encrypt communication with remote servers if these protocols\nare suffixed with <quote>s</quote> for <quote>secure\ncommunication</quote>.\n</para>\n\n</sect1>\n\n<sect1 id=\"pop\">\n<title>POP3 Support</title>\n\n<para>\nIf Mutt is compiled with POP3 support (by running the\n<emphasis>configure</emphasis> script with the\n<emphasis>--enable-pop</emphasis> flag), it has the ability to work with\nmailboxes located on a remote POP3 server and fetch mail for local\nbrowsing.\n</para>\n\n<para>\nRemote POP3 servers can be accessed using URLs with the\n<literal>pop</literal> protocol for unencrypted and\n<literal>pops</literal> for encrypted communication, see <xref\nlinkend=\"url-syntax\"/> for details.\n</para>\n\n<para>\nPolling for new mail is more expensive over POP3 than locally. For this\nreason the frequency at which Mutt will check for mail remotely can be\ncontrolled by the <link\nlinkend=\"pop-checkinterval\">$pop_checkinterval</link> variable, which\ndefaults to every 60 seconds.\n</para>\n\n<para>\nPOP is read-only which doesn't allow for some features like editing\nmessages or changing flags. However, using <xref\nlinkend=\"header-caching\"/> and <xref linkend=\"body-caching\"/> Mutt\nsimulates the new/old/read flags as well as flagged and replied.  Mutt\napplies some logic on top of remote messages but cannot change them so\nthat modifications of flags are lost when messages are downloaded from\nthe POP server (either by Mutt or other tools).\n</para>\n\n<anchor id=\"fetch-mail\"/>\n<para>\nAnother way to access your POP3 mail is the\n<literal>&lt;fetch-mail&gt;</literal> function (default: G).  It allows\nto connect to <link linkend=\"pop-host\">$pop_host</link>, fetch all your\nnew mail and place it in the local <link\nlinkend=\"spoolfile\">$spoolfile</link>.  After this point, Mutt runs\nexactly as if the mail had always been local.\n</para>\n\n<note>\n<para>\nIf you only need to fetch all messages to a local mailbox you should\nconsider using a specialized program, such as\n<literal>fetchmail(1)</literal>, <literal>getmail(1)</literal> or\nsimilar.\n</para>\n</note>\n\n</sect1>\n\n<sect1 id=\"imap\">\n<title>IMAP Support</title>\n\n<para>\nIf Mutt was compiled with IMAP support (by running the\n<emphasis>configure</emphasis> script with the\n<emphasis>--enable-imap</emphasis> flag), it has the ability to work\nwith folders located on a remote IMAP server.\n</para>\n\n<para>\nYou can access the remote inbox by selecting the folder by its URL (see\n<xref linkend=\"url-syntax\"/> for details) using the\n<literal>imap</literal> or <literal>imaps</literal> protocol.\nAlternatively, a pine-compatible notation is also supported, i.e.\n<literal>{[username@]imapserver[:port][/ssl]}path/to/folder</literal>\n</para>\n\n<para>\nNote that not all servers use <quote>/</quote> as the hierarchy\nseparator.  Mutt should correctly notice which separator is being used\nby the server and convert paths accordingly.\n</para>\n\n<para>\nWhen browsing folders on an IMAP server, you can toggle whether to look\nat only the folders you are subscribed to, or all folders with the\n<emphasis>toggle-subscribed</emphasis> command.  See also the <link\nlinkend=\"imap-list-subscribed\">$imap_list_subscribed</link> variable.\n</para>\n\n<para>\nPolling for new mail on an IMAP server can cause noticeable delays. So,\nyou'll want to carefully tune the <link\nlinkend=\"mail-check\">$mail_check</link> and <link\nlinkend=\"timeout\">$timeout</link> variables. Reasonable values are:\n</para>\n\n<screen>\nset mail_check=90\nset timeout=15\n</screen>\n\n<para>\nwith relatively good results even over slow modem lines.\n</para>\n\n<note>\n<para>\nNote that if you are using mbox as the mail store on UW servers prior to\nv12.250, the server has been reported to disconnect a client if another\nclient selects the same folder.\n</para>\n</note>\n\n<sect2 id=\"imap-browser\">\n<title>The IMAP Folder Browser</title>\n\n<para>\nAs of version 1.2, Mutt supports browsing mailboxes on an IMAP\nserver. This is mostly the same as the local file browser, with the\nfollowing differences:\n</para>\n\n<itemizedlist>\n<listitem>\n\n<para>\nIn lieu of file permissions, Mutt displays the string\n<quote>IMAP</quote>, possibly followed by the symbol <quote>+</quote>,\nindicating that the entry contains both messages and subfolders. On\nCyrus-like servers folders will often contain both messages and\nsubfolders.\n</para>\n</listitem>\n<listitem>\n\n<para>\nFor the case where an entry can contain both messages and subfolders,\nthe selection key (bound to <literal>enter</literal> by default) will\nchoose to descend into the subfolder view. If you wish to view the\nmessages in that folder, you must use <literal>view-file</literal>\ninstead (bound to <literal>space</literal> by default).\n</para>\n</listitem>\n<listitem>\n\n<para>\nYou can create, delete and rename mailboxes with the\n<literal>&lt;create-mailbox&gt;</literal>,\n<literal>&lt;delete-mailbox&gt;</literal>, and\n<literal>&lt;rename-mailbox&gt;</literal> commands (default bindings:\n<literal>C</literal>, <literal>d</literal> and <literal>r</literal>,\nrespectively). You may also <literal>&lt;subscribe&gt;</literal> and\n<literal>&lt;unsubscribe&gt;</literal> to mailboxes (normally these are\nbound to <literal>s</literal> and <literal>u</literal>, respectively).\n</para>\n</listitem>\n\n</itemizedlist>\n\n</sect2>\n\n<sect2 id=\"imap-authentication\">\n<title>Authentication</title>\n\n<para>\nMutt supports four authentication methods with IMAP servers: SASL,\nGSSAPI, CRAM-MD5, and LOGIN (there is a patch by Grant Edwards to add\nNTLM authentication for you poor exchange users out there, but it has\nyet to be integrated into the main tree). There is also support for the\npseudo-protocol ANONYMOUS, which allows you to log in to a public IMAP\nserver without having an account. To use ANONYMOUS, simply make your\nusername blank or <quote>anonymous</quote>.\n</para>\n\n<para>\nSASL is a special super-authenticator, which selects among several\nprotocols (including GSSAPI, CRAM-MD5, ANONYMOUS, and DIGEST-MD5) the\nmost secure method available on your host and the server. Using some of\nthese methods (including DIGEST-MD5 and possibly GSSAPI), your entire\nsession will be encrypted and invisible to those teeming network\nsnoops. It is the best option if you have it. To use it, you must have\nthe Cyrus SASL library installed on your system and compile Mutt with\nthe <emphasis>--with-sasl</emphasis> flag.\n</para>\n\n<para>\nMutt will try whichever methods are compiled in and available on the\nserver, in the following order: SASL, ANONYMOUS, GSSAPI, CRAM-MD5,\nLOGIN.\n</para>\n\n<para>\nThere are a few variables which control authentication:\n</para>\n\n<itemizedlist>\n<listitem>\n\n<para>\n<link linkend=\"imap-user\">$imap_user</link> - controls the username\nunder which you request authentication on the IMAP server, for all\nauthenticators. This is overridden by an explicit username in the\nmailbox path (i.e. by using a mailbox name of the form\n<literal>{user@host}</literal>).\n</para>\n</listitem>\n<listitem>\n\n<para>\n<link linkend=\"imap-pass\">$imap_pass</link> - a password which you may\npreset, used by all authentication methods where a password is needed.\n</para>\n</listitem>\n<listitem>\n\n<para>\n<link linkend=\"imap-authenticators\">$imap_authenticators</link> - a\ncolon-delimited list of IMAP authentication methods to try, in the order\nyou wish to try them. If specified, this overrides Mutt's default\n(attempt everything, in the order listed above).\n</para>\n</listitem>\n\n</itemizedlist>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"smtp\">\n<title>SMTP Support</title>\n\n<para>\nBesides supporting traditional mail delivery through a\nsendmail-compatible program, Mutt supports delivery through SMTP if it\nwas configured and built with <literal>--enable-smtp</literal>.\n</para>\n\n<para>\nIf the configuration variable <link linkend=\"smtp-url\">$smtp_url</link>\nis set, Mutt will contact the given SMTP server to deliver messages; if\nit is unset, Mutt will use the program specified by <link\nlinkend=\"sendmail\">$sendmail</link>.\n</para>\n\n<para>\nFor details on the URL syntax, please see <xref linkend=\"url-syntax\"/>.\n</para>\n\n<para>\nThe built-in SMTP support supports encryption (the\n<literal>smtps</literal> protocol using SSL or TLS) as well as SMTP\nauthentication using SASL. The authentication mechanisms for SASL are\nspecified in <link\nlinkend=\"smtp-authenticators\">$smtp_authenticators</link> defaulting to\nan empty list which makes Mutt try all available methods from\nmost-secure to least-secure.\n</para>\n\n</sect1>\n\n<sect1 id=\"account-hook\">\n<title>Managing Multiple Accounts</title>\n\n<para>\nUsage:\n</para>\n\n<cmdsynopsis>\n<command>account-hook</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nIf you happen to have accounts on multiple IMAP, POP and/or SMTP\nservers, you may find managing all the authentication settings\ninconvenient and error-prone. The <link\nlinkend=\"account-hook\"><command>account-hook</command></link> command\nmay help. This hook works like <link\nlinkend=\"folder-hook\"><command>folder-hook</command></link> but is\ninvoked whenever Mutt needs to access a remote mailbox (including inside\nthe folder browser), not just when you open the mailbox. This includes\n(for example) polling for new mail, storing Fcc messages and saving\nmessages to a folder. As a consequence, <link\nlinkend=\"account-hook\"><command>account-hook</command></link> should\nonly be used to set connection-related settings such as passwords or\ntunnel commands but not settings such as sender address or name (because\nin general it should be considered unpredictable which <link\nlinkend=\"account-hook\"><command>account-hook</command></link> was last\nused).\n</para>\n\n<para>\nSome examples:\n</para>\n\n<screen>\naccount-hook . 'unset imap_user; unset imap_pass; unset tunnel'\naccount-hook imap://host1/ 'set imap_user=me1 imap_pass=foo'\naccount-hook imap://host2/ 'set tunnel=\"ssh host2 /usr/libexec/imapd\"'\naccount-hook smtp://user@host3/ 'set tunnel=\"ssh host3 /usr/libexec/smtpd\"'\n</screen>\n\n<para>\nTo manage multiple accounts with, for example, different values of <link\nlinkend=\"record\">$record</link> or sender addresses, <link\nlinkend=\"folder-hook\"><command>folder-hook</command></link> has to be be\nused together with the <link\nlinkend=\"mailboxes\"><command>mailboxes</command></link> command.\n</para>\n\n<example id=\"ex-multiaccount\">\n<title>Managing multiple accounts</title>\n<screen>\nmailboxes imap://user@host1/INBOX\nfolder-hook imap://user@host1/ 'set folder=imap://host1/ ; set record=+INBOX/Sent'\n\nmailboxes imap://user@host2/INBOX\nfolder-hook imap://user@host2/ 'set folder=imap://host2/ ; set record=+INBOX/Sent'\n</screen>\n</example>\n\n<para>\nIn example <xref linkend=\"ex-multiaccount\"/> the folders are defined\nusing <link linkend=\"mailboxes\"><command>mailboxes</command></link> so\nMutt polls them for new mail. Each <link\nlinkend=\"folder-hook\"><command>folder-hook</command></link> triggers\nwhen one mailbox below each IMAP account is opened and sets <link\nlinkend=\"folder\">$folder</link> to the account's root folder. Next, it\nsets <link linkend=\"record\">$record</link> to the\n<emphasis>INBOX/Sent</emphasis> folder below the newly set <link\nlinkend=\"folder\">$folder</link>. Please notice that the value the\n<quote>+</quote> <link linkend=\"shortcuts\">mailbox shortcut</link>\nrefers to depends on the <emphasis>current</emphasis> value of <link\nlinkend=\"folder\">$folder</link> and therefore has to be set separately\nper account. Setting other values like <link linkend=\"from\">$from</link>\nor <link linkend=\"signature\">$signature</link> is analogous to setting\n<link linkend=\"record\">$record</link>.\n</para>\n\n</sect1>\n\n<sect1 id=\"caching\">\n<title>Local Caching</title>\n\n<para>\nMutt contains two types of local caching: <emphasis>(1)</emphasis> the\nso-called <quote>header caching</quote> and <emphasis>(2)</emphasis> the\nso-called <quote>body caching</quote> which are both described in this\nsection.\n</para>\n\n<para>\nHeader caching is optional as it depends on external libraries, body\ncaching is always enabled if Mutt is compiled with POP and/or IMAP\nsupport as these use it (body caching requires no external library).\n</para>\n\n<sect2 id=\"header-caching\">\n<title>Header Caching</title>\n\n<para>\nMutt provides optional support for caching message headers for the\nfollowing types of folders: IMAP, POP, Maildir and MH. Header caching\ngreatly speeds up opening large folders because for remote folders,\nheaders usually only need to be downloaded once. For Maildir and MH,\nreading the headers from a single file is much faster than looking at\npossibly thousands of single files (since Maildir and MH use one file\nper message.)\n</para>\n\n<para>\nHeader caching can be enabled via the configure script and the\n<emphasis>--enable-hcache</emphasis> option. It's not turned on by\ndefault because external database libraries are required: one of\ntokyocabinet, qdbm, gdbm or bdb must be present.\n</para>\n\n<para>\nIf enabled, <link linkend=\"header-cache\">$header_cache</link> can be\nused to either point to a file or a directory. If set to point to a\nfile, one database file for all folders will be used (which may result\nin lower performance), but one file per folder if it points to a\ndirectory.\n</para>\n\n</sect2>\n\n<sect2 id=\"body-caching\">\n<title>Body Caching</title>\n\n<para>\nBoth cache methods can be combined using the same directory for storage\n(and for IMAP/POP even provide meaningful file names) which simplifies\nmanual maintenance tasks.\n</para>\n\n<para>\nIn addition to caching message headers only, Mutt can also cache whole\nmessage bodies. This results in faster display of messages for POP and\nIMAP folders because messages usually have to be downloaded only once.\n</para>\n\n<para>\nFor configuration, the variable <link linkend=\"message-cachedir\"\n>$message_cachedir</link> must point to a directory. There, Mutt will\ncreate a hierarchy of subdirectories named like the account and mailbox\npath the cache is for.\n</para>\n\n</sect2>\n\n<sect2 id=\"cache-dirs\">\n<title>Cache Directories</title>\n\n<para>\nFor using both, header and body caching, <link\nlinkend=\"header-cache\">$header_cache</link> and <link\nlinkend=\"message-cachedir\" >$message_cachedir</link> can be safely set\nto the same value.\n</para>\n\n<para>\nIn a header or body cache directory, Mutt creates a directory hierarchy\nnamed like: <literal>proto:user@hostname</literal> where\n<literal>proto</literal> is either <quote>pop</quote> or\n<quote>imap.</quote> Within there, for each folder, Mutt stores messages\nin single files and header caches in files with the\n<quote>.hcache</quote> extension.  All files can be removed as needed if\nthe consumed disk space becomes an issue as Mutt will silently fetch\nmissing items again. Pathnames are always stored in UTF-8 encoding.\n</para>\n\n<para>\nFor Maildir and MH, the header cache files are named after the MD5\nchecksum of the path.\n</para>\n\n</sect2>\n\n<sect2 id=\"maint-cache\">\n<title>Maintenance</title>\n\n<para>\nMutt does not (yet) support maintenance features for header cache\ndatabase files so that files have to be removed in case they grow too\nbig. It depends on the database library used for header caching whether\ndisk space freed by removing messages is re-used.\n</para>\n\n<para>\nFor body caches, Mutt can keep the local cache in sync with the remote\nmailbox if the <link\nlinkend=\"message-cache-clean\">$message_cache_clean</link> variable is\nset. Cleaning means to remove messages from the cache which are no\nlonger present in the mailbox which only happens when other mail clients\nor instances of Mutt using a different body cache location delete\nmessages (Mutt itself removes deleted messages from the cache when\nsyncing a mailbox). As cleaning can take a noticeable amount of time, it\nshould not be set in general but only occasionally.\n</para>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"exact-address\">\n<title>Exact Address Generation</title>\n\n<para>\nMutt supports the <quote>Name &lt;user@host&gt;</quote> address syntax\nfor reading and writing messages, the older <quote>user@host\n(Name)</quote> syntax is only supported when reading messages. The\n<emphasis>--enable-exact-address</emphasis> switch can be given to\nconfigure to build it with write-support for the latter\nsyntax. <literal>EXACT_ADDRESS</literal> in the output of <literal>mutt\n-v</literal> indicates whether it's supported.\n</para>\n\n</sect1>\n\n<sect1 id=\"sending-mixmaster\">\n<title>Sending Anonymous Messages via Mixmaster</title>\n\n<para>\nYou may also have compiled Mutt to co-operate with Mixmaster, an\nanonymous remailer.  Mixmaster permits you to send your messages\nanonymously using a chain of remailers. Mixmaster support in Mutt is for\nmixmaster version 2.04 or later.\n</para>\n\n<para>\nTo use it, you'll have to obey certain restrictions.  Most important,\nyou cannot use the <literal>Cc</literal> and <literal>Bcc</literal>\nheaders.  To tell Mutt to use mixmaster, you have to select a remailer\nchain, using the mix function on the compose menu.\n</para>\n\n<para>\nThe chain selection screen is divided into two parts.  In the (larger)\nupper part, you get a list of remailers you may use.  In the lower part,\nyou see the currently selected chain of remailers.\n</para>\n\n<para>\nYou can navigate in the chain using the\n<literal>&lt;chain-prev&gt;</literal> and\n<literal>&lt;chain-next&gt;</literal> functions, which are by default\nbound to the left and right arrows and to the <literal>h</literal> and\n<literal>l</literal> keys (think vi keyboard bindings).  To insert a\nremailer at the current chain position, use the\n<literal>&lt;insert&gt;</literal> function.  To append a remailer behind\nthe current chain position, use <literal>&lt;select-entry&gt;</literal>\nor <literal>&lt;append&gt;</literal>.  You can also delete entries from\nthe chain, using the corresponding function.  Finally, to abandon your\nchanges, leave the menu, or <literal>&lt;accept&gt;</literal> them\npressing (by default) the <literal>Return</literal> key.\n</para>\n\n<para>\nNote that different remailers do have different capabilities, indicated\nin the %c entry of the remailer menu lines (see <link\nlinkend=\"mix-entry-format\">$mix_entry_format</link>).  Most important is\nthe <quote>middleman</quote> capability, indicated by a capital\n<quote>M</quote>: This means that the remailer in question cannot be\nused as the final element of a chain, but will only forward messages to\nother mixmaster remailers.  For details on the other capabilities,\nplease have a look at the mixmaster documentation.\n</para>\n\n</sect1>\n\n<sect1 id=\"quasi-delete\">\n\t<title>Quasi-Delete Patch</title>\n\t<subtitle>Mark emails that should be hidden, but not deleted</subtitle>\n\n\t<sect2 id=\"quasi-delete-patch\">\n\t\t<title>Patch</title>\n\n\t\t<para>\n\t\t\tTo check if Mutt supports <quote>Quasi-Delete</quote>, look for\n\t\t\t<quote>patch-quasi-delete</quote> in the mutt version.\n\t\t\tSee: <xref linkend=\"mutt-patches\"/>.\n\t\t</para>\n\n\t\t<itemizedlist>\n\t\t\t<title>Dependencies:</title>\n\t\t\t<listitem><para>mutt-1.5.24</para></listitem>\n\t\t</itemizedlist>\n\n\t\t<para>This patch is part of the <ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink>.</para>\n\t</sect2>\n\n\t<sect2 id=\"quasi-delete-intro\">\n\t\t<title>Introduction</title>\n\n        <para>\n\t\tThe <quote>quasi-delete</quote> function marks an email that should be\n\t\thidden from the index, but NOT deleted.\n        </para>\n\n        <para>\n\t\tOn its own, this patch isn't very useful.  It forms a useful part of\n\t\tthe notmuch plugin.\n        </para>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"quasi-delete-variables\">\n\t\t<title>Variables</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"quasi-delete-functions\">\n\t\t<title>Functions</title>\n\t\t<table id=\"table-quasi-delete-functions\">\n\t\t\t<title>Quasi-Delete Functions</title>\n\t\t\t<tgroup cols=\"4\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Menus</entry>\n\t\t\t\t\t\t<entry>Default Key</entry>\n\t\t\t\t\t\t<entry>Function</entry>\n\t\t\t\t\t\t<entry>Description</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>index,pager</entry>\n\t\t\t\t\t\t<entry>(none)</entry>\n\t\t\t\t\t\t<entry><literal>&lt;quasi-delete&gt;</literal></entry>\n\t\t\t\t\t\t<entry>delete from mutt, don't touch on disk</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"quasi-delete-commands\">\n\t\t<title>Commands</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"quasi-delete-colors\">\n\t\t<title>Colors</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"quasi-delete-sort\">\n\t\t<title>Sort</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"quasi-delete-muttrc\">\n\t\t<title>Muttrc</title>\n<screen>\n<emphasis role=\"comment\"># Example Mutt config file for the 'quasi-delete' feature.\n \n# The 'quasi-delete' function marks an email that should be hidden\n# from the index, but NOT deleted.</emphasis>\nbind index,pager Q quasi-delete\n \n<emphasis role=\"comment\"># vim: syntax=muttrc</emphasis>\n</screen>\n\t</sect2>\n\n\t<sect2 id=\"quasi-delete-see-also\">\n\t\t<title>See Also</title>\n\n\t\t<itemizedlist>\n\t\t\t<listitem><para><ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink></para></listitem>\n\t\t\t<listitem><para><link linkend=\"notmuch\">notmuch patch</link></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n\n\t<sect2 id=\"quasi-delete-known-bugs\">\n\t\t<title>Known Bugs</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"quasi-delete-credits\">\n\t\t<title>Credits</title>\n\t\t<itemizedlist>\n\t\t<listitem><para>Karel Zak <email>kzak@redhat.com</email></para></listitem>\n\t\t<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n</sect1>\n\n<sect1 id=\"progress\">\n\t<title>Progress Bar Patch</title>\n\t<subtitle>Show a visual progress bar on slow operations</subtitle>\n\n\t<sect2 id=\"progress-patch\">\n\t\t<title>Patch</title>\n\n\t\t<para>\n\t\t\tTo check if Mutt supports <quote>Progress Bar</quote>, look for\n\t\t\t<quote>patch-progress</quote> in the mutt version.\n\t\t\tSee: <xref linkend=\"mutt-patches\"/>.\n\t\t</para>\n\n\t\t<itemizedlist>\n\t\t\t<title>Dependencies:</title>\n\t\t\t<listitem><para>mutt-1.5.24</para></listitem>\n\t\t</itemizedlist>\n\n\t\t<para>This patch is part of the <ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink>.</para>\n\t</sect2>\n\n\t<sect2 id=\"progress-intro\">\n\t\t<title>Introduction</title>\n\n        <para>\n\t\tThe <quote>progress</quote> patch shows a visual progress bar on slow\n\t\ttasks, such as indexing a large folder over the net.\n        </para>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"progress-variables\">\n\t\t<title>Variables</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"progress-functions\">\n\t\t<title>Functions</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"progress-commands\">\n\t\t<title>Commands</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"progress-colors\">\n\t\t<title>Colors</title>\n\t\t<table id=\"table-progress-colors\">\n\t\t\t<title>Progress Colors</title>\n\t\t\t<tgroup cols=\"3\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Name</entry>\n\t\t\t\t\t\t<entry>Default Color</entry>\n\t\t\t\t\t\t<entry>Description</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>progress</literal></entry>\n\t\t\t\t\t\t<entry>default</entry>\n\t\t\t\t\t\t<entry>Visual progress bar</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"progress-sort\">\n\t\t<title>Sort</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"progress-muttrc\">\n\t\t<title>Muttrc</title>\n<screen>\n<emphasis role=\"comment\"># Example Mutt config file for the 'progress' patch.\n \n# The 'progress' patch provides clear visual feedback for\n# slow tasks, such as indexing a large folder over the net.\n \n# Set the color of the progress bar\n# White text on a red background</emphasis>\ncolor progress white red\n \n<emphasis role=\"comment\"># vim: syntax=muttrc</emphasis>\n</screen>\n\t</sect2>\n\n\t<sect2 id=\"progress-see-also\">\n\t\t<title>See Also</title>\n\n\t\t<itemizedlist>\n\t\t\t<listitem><para><ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink></para></listitem>\n\t\t\t<listitem><para><link linkend=\"color\">Color command</link></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n\n\t<sect2 id=\"progress-known-bugs\">\n\t\t<title>Known Bugs</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"progress-credits\">\n\t\t<title>Credits</title>\n\t\t<itemizedlist>\n\t\t<listitem><para>Rocco Rutte <email>pdmef@gmx.net</email></para></listitem>\n\t\t<listitem><para>Vincent Lefevre <email>vincent@vinc17.org</email></para></listitem>\n\t\t<listitem><para>Stefan Kuhn <email>wuodan@hispeed.ch</email></para></listitem>\n\t\t<listitem><para>Karel Zak <email>kzak@redhat.com</email></para></listitem>\n\t\t<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n</sect1>\n\n<sect1 id=\"status-color\">\n\t<title>Status Color Patch</title>\n\t<subtitle>Custom rules for theming the status bar</subtitle>\n\n\t<sect2 id=\"status-color-patch\">\n\t\t<title>Patch</title>\n\n\t\t<para>\n\t\t\tTo check if Mutt supports <quote>Status Color</quote>, look for\n\t\t\t<quote>patch-status-color</quote> in the mutt version.\n\t\t\tSee: <xref linkend=\"mutt-patches\"/>.\n\t\t</para>\n\n\t\t<itemizedlist>\n\t\t\t<title>Dependencies:</title>\n\t\t\t<listitem><para>mutt-1.5.24</para></listitem>\n\t\t</itemizedlist>\n\n\t\t<para>This patch is part of the <ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink>.</para>\n\t</sect2>\n\n\t<sect2 id=\"status-color-intro\">\n\t\t<title>Introduction</title>\n\n        <para>\n\t\tThe <quote>status-color</quote> patch allows you to theme different\n\t\tparts of the status bar (also when it's used by the index).\n        </para>\n\n        <para>\n\t\tUnlike normal color commands, <literal>color status</literal> can now\n\t\ttake up to 2 extra parameters (regex, num).\n        </para>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"status-color-variables\">\n\t\t<title>Variables</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"status-color-functions\">\n\t\t<title>Functions</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"status-color-commands\">\n\t\t<title>Commands</title>\n\t\t<cmdsynopsis>\n\t\t\t<command>color</command>\n\t\t\t<arg choice=\"plain\">\n\t\t\t\t<option>status</option>\n\t\t\t</arg>\n\t\t\t<arg choice=\"plain\">\n\t\t\t\t<replaceable class=\"parameter\">foreground</replaceable>\n\t\t\t</arg>\n\t\t\t<arg choice=\"plain\">\n\t\t\t\t<replaceable class=\"parameter\">background</replaceable>\n\t\t\t</arg>\n\t\t\t<group choice=\"opt\">\n\t\t\t\t<arg choice=\"plain\">\n\t\t\t\t\t<replaceable class=\"parameter\">regex</replaceable>\n\t\t\t\t</arg>\n\t\t\t\t<group choice=\"opt\">\n\t\t\t\t\t<arg choice=\"plain\">\n\t\t\t\t\t\t<replaceable class=\"parameter\">num</replaceable>\n\t\t\t\t\t</arg>\n\t\t\t\t</group>\n\t\t\t</group>\n\t\t</cmdsynopsis>\n\n\t\t<para>\n\t\t\tWith zero parameters, Mutt will set the default color for the entire\n\t\t\tstatus bar.\n\t\t</para>\n\n\t\t<para>\n\t\t\tWith one parameter, Mutt will only color the parts matching the\n\t\t\tregex.\n\t\t</para>\n\n\t\t<para>\n\t\t\tWith two parameters, Mutt will only color the num'th sub-match of\n\t\t\tthe regex.\n\t\t</para>\n\t</sect2>\n\n\t<sect2 id=\"status-color-colors\">\n\t\t<title>Colors</title>\n\n\t\t<table id=\"table-status-color-colors\">\n\t\t\t<title>Status Colors</title>\n\t\t\t<tgroup cols=\"3\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Name</entry>\n\t\t\t\t\t\t<entry>Default Color</entry>\n\t\t\t\t\t\t<entry>Description</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>status</entry>\n\t\t\t\t\t\t<entry><literal>reverse</literal></entry>\n\t\t\t\t\t\t<entry>Status bar</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"status-color-sort\">\n\t\t<title>Sort</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"status-color-muttrc\">\n\t\t<title>Muttrc</title>\n<screen>\n<emphasis role=\"comment\"># Example Mutt config file for the 'status-color' patch.\n \n# The 'status-color' patch allows you to theme different parts of\n# the status bar (also when it's used by the index).\n \n# For the examples below, set some defaults</emphasis>\nset status_format='-%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?%?l? %l?]---(%s/%S)-%&gt;-(%P)---'\nset index_format='%4C %Z %{%b %d} %-15.15L (%?l?%4l&amp;%4c?) %s'\nset sort=threads\nset sort_aux=last-date-received\n \n<emphasis role=\"comment\"># 'status color' can take up to 2 extra parameters\n \n# color status foreground background [ regex [ num ]]\n \n# 0 extra parameters\n# Set the default color for the entire status line</emphasis>\ncolor status blue white\n \n<emphasis role=\"comment\"># 1 extra parameter\n# Set the color for a matching pattern\n# color status foreground background regexp\n \n# Highlight New, Deleted, or Flagged emails</emphasis>\ncolor status brightred white '(New|Del|Flag):[0-9]+'\n \n<emphasis role=\"comment\"># Highlight mailbox ordering if it's different from the default\n# First, highlight anything (*/*)</emphasis>\ncolor status brightred default '\\([^)]+/[^)]+\\)'\n \n<emphasis role=\"comment\"># Then override the color for one specific case</emphasis>\ncolor status default   default '\\(threads/last-date-received\\)'\n \n<emphasis role=\"comment\"># 2 extra parameters\n# Set the color for the nth submatch of a pattern\n# color status foreground background regexp num\n \n# Highlight the contents of the []s but not the [] themselves</emphasis>\ncolor status red default '\\[([^]]+)\\]' 1\n \n<emphasis role=\"comment\"># The '1' refers to the first regex submatch, which is the inner\n# part in ()s\n \n# Highlight the mailbox</emphasis>\ncolor status brightwhite default 'Mutt: ([^ ]+)' 1\n \n<emphasis role=\"comment\"># Search for 'Mutt: ' but only highlight what comes after it\n \n# vim: syntax=muttrc</emphasis>\n</screen>\n\t</sect2>\n\n\t<sect2 id=\"status-color-see-also\">\n\t\t<title>See Also</title>\n\n\t\t<itemizedlist>\n\t\t\t<listitem><para><ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink></para></listitem>\n\t\t\t<listitem><para><link linkend=\"compile-time-features\">Compile-Time Features</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"regexp\">Regular Expressions</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"patterns\">Patterns</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"index-color\">index-color patch</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"color\">Color command</link></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n\n\t<sect2 id=\"status-color-known-bugs\">\n\t\t<title>Known Bugs</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"status-color-credits\">\n\t\t<title>Credits</title>\n\t\t<itemizedlist>\n\t\t<listitem><para>David Sterba <email>dsterba@suse.cz</email></para></listitem>\n\t\t<listitem><para>Thomas Glanzmann <email>thomas@glanzmann.de</email></para></listitem>\n\t\t<listitem><para>Kirill A. Shutemov <email>kirill@shutemov.name</email></para></listitem>\n\t\t<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n</sect1>\n\n<sect1 id=\"index-color\">\n\t<title>Index Color Patch</title>\n\t<subtitle>Custom rules for theming the email index</subtitle>\n\n\t<sect2 id=\"index-color-patch\">\n\t\t<title>Patch</title>\n\n\t\t<para>\n\t\t\tTo check if Mutt supports <quote>Index Color</quote>, look for\n\t\t\t<quote>patch-index-color</quote> in the mutt version.\n\t\t\tSee: <xref linkend=\"mutt-patches\"/>.\n\t\t</para>\n\n\t\t<itemizedlist>\n\t\t\t<title>Dependencies:</title>\n\t\t\t<listitem><para>mutt-1.5.24</para></listitem>\n\t\t\t<listitem><para><link linkend=\"status-color\">status-color patch</link></para></listitem>\n\t\t</itemizedlist>\n\n\t\t<para>This patch is part of the <ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink>.</para>\n\t</sect2>\n\n\t<sect2 id=\"index-color-intro\">\n\t\t<title>Introduction</title>\n\n        <para>\n\t\tThe <quote>index-color</quote> patch allows you to specify colors for\n\t\tindividual parts of the email index. e.g. Subject, Author, Flags.\n        </para>\n\n        <para>\n\t\tFirst choose which part of the index you'd like to color.\n\t\tThen, if needed, pick a pattern to match.\n        </para>\n\n\t\t<para>\n\t\tNote: The pattern does not have to refer to the object you wish to\n\t\tcolor.  e.g.\n\t\t</para>\n\n<screen>\ncolor index_author red default &quot;~smutt&quot;\n</screen>\n\n        <para>\n\t\tThe author appears red when the subject (~s) contains <quote>mutt</quote>.\n        </para>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"index-color-variables\">\n\t\t<title>Variables</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"index-color-functions\">\n\t\t<title>Functions</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"index-color-commands\">\n\t\t<title>Commands</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"index-color-colors\">\n\t\t<title>Colors</title>\n\n        <para>\n\t\tAll the colors default to <literal>default</literal>, i.e. unset.\n        </para>\n\n        <para>\n\t\tThe index objects can be themed using the <literal>color</literal> command.\n\t\tSome objects require a pattern.\n        </para>\n\n<screen>\ncolor index-object foreground background\ncolor index-object foreground background pattern\n</screen>\n\n\t\t<table id=\"table-index-color-colors\">\n\t\t\t<title>Index Colors</title>\n\t\t\t<tgroup cols=\"3\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Object</entry>\n\t\t\t\t\t\t<entry>Pattern</entry>\n\t\t\t\t\t\t<entry>Highlights</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>index</literal></entry>\n\t\t\t\t\t\t<entry>yes</entry>\n\t\t\t\t\t\t<entry>Entire index line</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>index_author</literal></entry>\n\t\t\t\t\t\t<entry>yes</entry>\n\t\t\t\t\t\t<entry>Author name, %A %a %F %L %n</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>index_collapsed</literal></entry>\n\t\t\t\t\t\t<entry>no</entry>\n\t\t\t\t\t\t<entry>Number of messages in a collapsed thread, %M</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>index_date</literal></entry>\n\t\t\t\t\t\t<entry>no</entry>\n\t\t\t\t\t\t<entry>Date field</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>index_flags</literal></entry>\n\t\t\t\t\t\t<entry>yes</entry>\n\t\t\t\t\t\t<entry>Message flags, %S %Z</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>index_label</literal></entry>\n\t\t\t\t\t\t<entry>no</entry>\n\t\t\t\t\t\t<entry>Message label, %y %Y</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>index_number</literal></entry>\n\t\t\t\t\t\t<entry>no</entry>\n\t\t\t\t\t\t<entry>Message number, %C</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>index_size</literal></entry>\n\t\t\t\t\t\t<entry>no</entry>\n\t\t\t\t\t\t<entry>Message size, %c %l</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>index_subject</literal></entry>\n\t\t\t\t\t\t<entry>yes</entry>\n\t\t\t\t\t\t<entry>Subject, %s</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"index-color-sort\">\n\t\t<title>Sort</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"index-color-muttrc\">\n\t\t<title>Muttrc</title>\n<screen>\n<emphasis role=\"comment\"># Example Mutt config file for the 'index-color' feature.\n \n# Entire index line</emphasis>\ncolor index white black '.*'\n \n<emphasis role=\"comment\"># Author name, %A %a %F %L %n\n \n# Give the author column a dark grey background</emphasis>\ncolor index_author default color234 '.*'\n \n<emphasis role=\"comment\"># Highlight a particular from (~f)</emphasis>\ncolor index_author brightyellow color234 '~fRay Charles'\n \n<emphasis role=\"comment\"># Message flags, %S %Z\n# Highlight the flags for flagged (~F) emails</emphasis>\ncolor index_flags default red '~F'\n \n<emphasis role=\"comment\"># Subject, %s\n# Look for a particular subject (~s)</emphasis>\ncolor index_subject brightcyan default '~s\\(closes #[0-9]+\\)'\n \n<emphasis role=\"comment\"># Number of messages in a collapsed thread, %M</emphasis>\ncolor index_collapsed default brightblue\n \n<emphasis role=\"comment\"># Date field</emphasis>\ncolor index_date green default\n \n<emphasis role=\"comment\"># Message label, %y %Y</emphasis>\ncolor index_label default brightgreen\n \n<emphasis role=\"comment\"># Message number, %C</emphasis>\ncolor index_number red default\n \n<emphasis role=\"comment\"># Message size, %c %l</emphasis>\ncolor index_size cyan default\n \n<emphasis role=\"comment\"># vim: syntax=muttrc</emphasis>\n</screen>\n\t</sect2>\n\n\t<sect2 id=\"index-color-see-also\">\n\t\t<title>See Also</title>\n\n\t\t<itemizedlist>\n\t\t\t<listitem><para><ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink></para></listitem>\n\t\t\t<listitem><para><link linkend=\"regexp\">Regular Expressions</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"patterns\">Patterns</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"index-format\">$index_format</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"color\">Color command</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"status-color\">Status-Color patch</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"keywords\">Keywords patch</link></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n\n\t<sect2 id=\"index-color-known-bugs\">\n\t\t<title>Known Bugs</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"index-color-credits\">\n\t\t<title>Credits</title>\n\t\t<itemizedlist>\n\t\t<listitem><para>Christian Aichinger <email>Greek0@gmx.net</email></para></listitem>\n\t\t<listitem><para>Christoph <quote>Myon</quote> Berg <email>myon@debian.org</email></para></listitem>\n\t\t<listitem><para>Elimar Riesebieter <email>riesebie@lxtec.de</email></para></listitem>\n\t\t<listitem><para>Eric Davis <email>edavis@insanum.com</email></para></listitem>\n\t\t<listitem><para>Vladimir Marek <email>Vladimir.Marek@oracle.com</email></para></listitem>\n\t\t<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n</sect1>\n\n<sect1 id=\"nested-if\">\n\t<title>Nested If Patch</title>\n\t<subtitle>Allow complex nested conditions in format strings</subtitle>\n\n\t<sect2 id=\"nested-if-patch\">\n\t\t<title>Patch</title>\n\n\t\t<para>\n\t\t\tTo check if Mutt supports <quote>Nested If</quote>, look for\n\t\t\t<quote>patch-nested-if</quote> in the mutt version.\n\t\t\tSee: <xref linkend=\"mutt-patches\"/>.\n\t\t</para>\n\n\t\t<itemizedlist>\n\t\t\t<title>Dependencies:</title>\n\t\t\t<listitem><para>mutt-1.5.24</para></listitem>\n\t\t</itemizedlist>\n\n\t\t<para>This patch is part of the <ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink>.</para>\n\t</sect2>\n\n\t<sect2 id=\"nested-if-intro\">\n\t\t<title>Introduction</title>\n\n\t\t<para>\n\t\t\tMutt's format strings can contain embedded if-then-else conditions.\n\t\t\tThey are of the form:\n\t\t</para>\n\n<screen>\n%?VAR?TRUE&amp;FALSE?\n</screen>\n\n\t\t<para>\n\t\t\tIf the variable <quote>VAR</quote> has a value greater than zero,\n\t\t\tprint the <quote>TRUE</quote> string, otherwise print the\n\t\t\t<quote>FALSE</quote> string.\n\t\t</para>\n\n\t\t<para>\n\t\t\te.g.  <literal>%?S?Size: %S&amp;Empty?</literal>\n\t\t</para>\n\n\t\t<para>Which can be read as:</para>\n\n\t\t<literallayout>\n\t\t    if (%S &gt; 0) {\n\t\t        print &quot;Size: %S&quot;\n\t\t    } else {\n\t\t        print &quot;Empty&quot;\n\t\t    }\n\t\t</literallayout>\n\n\t\t<para>\n\t\t\tThese conditions are useful, but in Mutt they cannot be nested\n\t\t\twithin one another.  This patch uses the notation\n\t\t\t<literal>%&lt;VAR?TRUE&amp;FALSE&gt;</literal> and allows them to be nested.\n\t\t</para>\n\n\t\t<para>\n\t\t\tThe <literal>%&lt;...&gt;</literal> notation was used to format the\n\t\t\tcurrent local time.  but that's not really very useful since mutt\n\t\t\thas no means of refreshing the screen periodically.\n\t\t</para>\n\n\t\t<para>\n\t\t\tA simple nested condition might be:\n\t\t\t(Some whitespace has been introduced for clarity)\n\t\t</para>\n\n\t\t<literallayout>\n\t\t    %&lt;x? %&lt;y? XY &amp; X &gt; &amp; %&lt;y? Y &amp; NONE &gt; &gt;  Conditions\n\t\t         %&lt;y? XY &amp; X &gt;                      x&gt;0\n\t\t              XY                            x&gt;0,y&gt;0\n\t\t                   X                        x&gt;0,y=0\n\t\t</literallayout>\n\n\t\t<literallayout>\n\t\t    %&lt;x? %&lt;y? XY &amp; X &gt; &amp; %&lt;y? Y &amp; NONE &gt; &gt;  Conditions\n\t\t                         %&lt;y? Y &amp; NONE &gt;    x=0\n\t\t                              Y             x=0,y&gt;0\n\t\t                                  NONE      x=0,y=0\n\t\t</literallayout>\n\n\t\t<para>Equivalent to:</para>\n\n\t\t<literallayout>\n\t\t    if (x &gt; 0) {\n\t\t        if (y &gt; 0) {\n\t\t            print 'XY'\n\t\t        } else {\n\t\t            print 'X'\n\t\t        }\n\t\t    } else {\n\t\t        if (y &gt; 0) {\n\t\t            print 'Y'\n\t\t        } else {\n\t\t            print 'NONE'\n\t\t        }\n\t\t    }\n\t\t</literallayout>\n\n\t\t<para>Examples:</para>\n\n<screen>\nset index_format='%4C %Z %{%b %d} %-25.25n %s%&gt; %&lt;M?%M Msgs &amp;%&lt;l?%l Lines&amp;%c Bytes&gt;&gt;'\n</screen>\n\n\t\t<literallayout>\n\t\t    if a thread is folded\n\t\t        display the number of messages (%M)\n\t\t    else if we know how many lines in the message\n\t\t        display lines in message (%l)\n\t\t    else\n\t\t        display the size of the message in bytes (%c)\n\t\t</literallayout>\n\n<screen>\nset index_format='%4C %Z %{%b %d} %-25.25n %&lt;M?[%M] %s&amp;%s%* %&lt;l?%l&amp;%c&gt;&gt;'\n</screen>\n\n\t\t<literallayout>\n\t\t    if a thread is folded\n\t\t        display the number of messages (%M)\n\t\t        display the subject (%s)\n\t\t    else if we know how many lines in the message\n\t\t        display lines in message (%l)\n\t\t    else\n\t\t        display the size of the message in bytes (%c)\n\t\t</literallayout>\n\n\t</sect2>\n\n\t<sect2 id=\"nested-if-variables\">\n\t\t<title>Variables</title>\n\t\tThe <quote>nested-if</quote> patch doesn't have any config of its own.\n\t\tIt modifies the behavior of the format strings.\n\t</sect2>\n\n<!--\n\t<sect2 id=\"nested-if-functions\">\n\t\t<title>Functions</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"nested-if-commands\">\n\t\t<title>Commands</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"nested-if-colors\">\n\t\t<title>Colors</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"nested-if-sort\">\n\t\t<title>Sort</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"nested-if-muttrc\">\n\t\t<title>Muttrc</title>\n<screen>\n<emphasis role=\"comment\"># Example Mutt config file for the 'nested-if' feature.\n \n# This patch uses the format: '%&lt;VAR?TRUE&amp;FALSE&gt;' for conditional\n# format strings that can be nested.\n \n# Example 1\n# if a thread is folded\n#       display the number of messages (%M)\n# else if we know how many lines in the message\n#       display lines in message (%l)\n# else display the size of the message in bytes (%c)</emphasis>\nset index_format='%4C %Z %{%b %d} %-25.25n %s%&gt; %&lt;M?%M Msgs &amp;%&lt;l?%l Lines&amp;%c Bytes&gt;&gt;'\n \n<emphasis role=\"comment\"># Example 2\n# if a thread is folded\n#       display the number of messages (%M)\n#       display the subject (%s)\n# else if we know how many lines in the message\n#       display lines in message (%l)\n# else\n#       display the size of the message in bytes (%c)</emphasis>\nset index_format='%4C %Z %{%b %d} %-25.25n %&lt;M?[%M] %s&amp;%s%* %&lt;l?%l&amp;%c&gt;&gt;'\n \n<emphasis role=\"comment\"># vim: syntax=muttrc</emphasis>\n</screen>\n\t</sect2>\n\n\t<sect2 id=\"nested-if-see-also\">\n\t\t<title>See Also</title>\n\n\t\t<itemizedlist>\n\t\t\t<listitem><para><ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink></para></listitem>\n\t\t\t<listitem><para><link linkend=\"cond-date\">cond-date patch</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"index-format\">$index_format</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"status-format\">$status_format</link></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n\n\t<sect2 id=\"nested-if-known-bugs\">\n\t\t<title>Known Bugs</title>\n\t\tPatch overwrites $&lt;fmt&gt; handler in <literal>$index_format</literal>\n\t</sect2>\n\n\t<sect2 id=\"nested-if-credits\">\n\t\t<title>Credits</title>\n\t\t<itemizedlist>\n\t\t<listitem><para>David Champion <email>dgc@uchicago.edu</email></para></listitem>\n\t\t<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n</sect1>\n\n<sect1 id=\"cond-date\">\n\t<title>Conditional Dates Patch</title>\n\t<subtitle>Use rules to choose date format</subtitle>\n\n\t<sect2 id=\"cond-date-patch\">\n\t\t<title>Patch</title>\n\n\t\t<para>\n\t\t\tTo check if Mutt supports <quote>Conditional Dates</quote>, look for\n\t\t\t<quote>patch-cond-date</quote> in the mutt version.\n\t\t\tSee: <xref linkend=\"mutt-patches\"/>.\n\t\t</para>\n\n\t\t<itemizedlist>\n\t\t\t<title>Dependencies:</title>\n\t\t\t<listitem><para>mutt-1.5.24</para></listitem>\n\t\t\t<listitem><para><link linkend=\"nested-if\">nested-if patch</link></para></listitem>\n\t\t</itemizedlist>\n\n\t\t<para>\n\t\t\tThis patch is part of the <ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink>.\n\t\t</para>\n\t</sect2>\n\n\t<sect2 id=\"cond-date-intro\">\n\t\t<title>Introduction</title>\n\n\t\t<para>\n\t\tThe <quote>cond-date</quote> patch allows you to construct\n\t\t<link linkend=\"index-format\">$index_format</link> expressions based on the age of the email.\n\t\t</para>\n\n\t\t<para>\n\t\tMutt's default <literal>$index_format</literal> displays email dates in the\n\t\tform: abbreviated-month day-of-month &mdash; <quote>Jan 14</quote>.\n\t\t</para>\n\n\t\t<para>\n\t\tThe format is configurable but only per-mailbox.  This patch allows you\n\t\tto configure the display depending on the age of the email.\n\t\t</para>\n\n\t\t<table id=\"table-cond-date-scheme\">\n\t\t\t<title>Potential Formatting Scheme</title>\n\t\t\t<tgroup cols=\"3\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Email Sent</entry>\n\t\t\t\t\t\t<entry>Format</entry>\n\t\t\t\t\t\t<entry>Example</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Today</entry>\n\t\t\t\t\t\t<entry><literal>%H:%M</literal></entry>\n\t\t\t\t\t\t<entry>13:23</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>This Month</entry>\n\t\t\t\t\t\t<entry><literal>%a %d</literal></entry>\n\t\t\t\t\t\t<entry>Thu 17</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>This Year</entry>\n\t\t\t\t\t\t<entry><literal>%b %d</literal></entry>\n\t\t\t\t\t\t<entry>Dec 10</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Older than 1 Year</entry>\n\t\t\t\t\t\t<entry><literal>%m/%y</literal></entry>\n\t\t\t\t\t\t<entry>06/14</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\n\t\t<para>\n        For an explanation of the date formatting strings, see\n        <literal>strftime(3).</literal>\n\t\t</para>\n\n\t\t<para>\n        By carefully picking your formats, the dates can remain\n        unambiguous and compact.\n\t\t</para>\n\n\t\t<para>\n\t\tMutt's conditional format strings have the form:\n\t\t(whitespace introduced for clarity)\n\t\t</para>\n\n\t\t<screen>%? TEST ? TRUE &amp; FALSE ?</screen>\n\n\t\t<para>\n\t\tThe examples below use the test <quote>%[</quote> &mdash; the date\n\t\tof the message in the local timezone.  They will also work with\n\t\t<quote>%(</quote> &mdash; the local time that the message arrived.\n\t\t</para>\n\n\t\t<para>\n\t\tThe date tests are of the form:\n\t\t</para>\n\n\t\t<screen>%[nX? TRUE &amp; FALSE ?</screen>\n\n\t\t<itemizedlist>\n\t\t<listitem><para><quote>n</quote> is an optional count (defaults to 1 if missing)</para></listitem>\n\t\t<listitem><para><quote>X</quote> is the time period</para></listitem>\n\t\t</itemizedlist>\n\n\t\t<table id=\"table-cond-date-format-codes\">\n\t\t\t<title>Date Formatting Codes</title>\n\t\t\t<tgroup cols=\"2\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Letter</entry>\n\t\t\t\t\t\t<entry>Time Period</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>y</entry>\n\t\t\t\t\t\t<entry>Years</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>m</entry>\n\t\t\t\t\t\t<entry>Months</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>w</entry>\n\t\t\t\t\t\t<entry>Weeks</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>d</entry>\n\t\t\t\t\t\t<entry>Days</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>H</entry>\n\t\t\t\t\t\t<entry>Hours</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>M</entry>\n\t\t\t\t\t\t<entry>Minutes</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\n\t\t<table id=\"table-cond-date-example-tests\">\n\t\t\t<title>Example Date Tests</title>\n\t\t\t<tgroup cols=\"2\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Test</entry>\n\t\t\t\t\t\t<entry>Meaning</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>%[y</literal></entry>\n\t\t\t\t\t\t<entry>This year</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>%[1y</literal></entry>\n\t\t\t\t\t\t<entry>This year</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>%[6m</literal></entry>\n\t\t\t\t\t\t<entry>In the last 6 months</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>%[w</literal></entry>\n\t\t\t\t\t\t<entry>This week</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>%[d</literal></entry>\n\t\t\t\t\t\t<entry>Today</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>%[4H</literal></entry>\n\t\t\t\t\t\t<entry>In the last 4 hours</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\n\t\t<sect3 id=\"cond-date-example1\">\n\t\t\t<title>Example 1</title>\n\n\t\t\t<para>We start with a one-condition test.</para>\n\n\t\t\t<table id=\"table-cond-date-example1\">\n\t\t\t\t<title>Example 1</title>\n\t\t\t\t<tgroup cols=\"4\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>Test</entry>\n\t\t\t\t\t\t\t<entry>Date Range</entry>\n\t\t\t\t\t\t\t<entry>Format String</entry>\n\t\t\t\t\t\t\t<entry>Example</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry><literal>%[1m</literal></entry>\n\t\t\t\t\t\t\t<entry>This month</entry>\n\t\t\t\t\t\t\t<entry><literal>%[%b %d]</literal></entry>\n\t\t\t\t\t\t\t<entry>Dec 10</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t\t<entry>Older</entry>\n\t\t\t\t\t\t\t<entry><literal>%[%Y-%m-%d]</literal></entry>\n\t\t\t\t\t\t\t<entry>2015-04-23</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t</tbody>\n\t\t\t\t</tgroup>\n\t\t\t</table>\n\n\t\t\t<para>The $index_format string would contain:</para>\n<screen>\n%?[1m?%[%b %d]&amp;%[%Y-%m-%d]?\n</screen>\n \n\t\t\t<para>\n\t\t\t\tReparsed a little, for clarity, you can see the\n\t\t\t\ttest condition and the two format strings.\n\t\t\t</para>\n\n<screen>\n%?[1m?        &amp;           ?\n      %[%b %d] %[%Y-%m-%d]\n</screen>\n\n\t\t</sect3>\n\n\t\t<sect3 id=\"cond-date-example2\">\n\t\t\t<title>Example 2</title>\n\n\t\t\t<para>\n\t\t\tThis example contains three test conditions and four date formats.\n\t\t\t</para>\n\n\t\t\t<table id=\"table-cond-date-example2\">\n\t\t\t\t<title>Example 2</title>\n\t\t\t\t<tgroup cols=\"4\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry>Test</entry>\n\t\t\t\t\t\t\t<entry>Date Range</entry>\n\t\t\t\t\t\t\t<entry>Format String</entry>\n\t\t\t\t\t\t\t<entry>Example</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry><literal>%[d</literal></entry>\n\t\t\t\t\t\t\t<entry>Today</entry>\n\t\t\t\t\t\t\t<entry><literal>%[%H:%M ] </literal></entry>\n\t\t\t\t\t\t\t<entry>12:34</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry><literal>%[m</literal></entry>\n\t\t\t\t\t\t\t<entry>This month</entry>\n\t\t\t\t\t\t\t<entry><literal>%[%a %d]</literal></entry>\n\t\t\t\t\t\t\t<entry>Thu 12</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry><literal>%[y</literal></entry>\n\t\t\t\t\t\t\t<entry>This year</entry>\n\t\t\t\t\t\t\t<entry><literal>%[%b %d]</literal></entry>\n\t\t\t\t\t\t\t<entry>Dec 10</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t\t<row>\n\t\t\t\t\t\t\t<entry></entry>\n\t\t\t\t\t\t\t<entry>Older</entry>\n\t\t\t\t\t\t\t<entry><literal>%[%m/%y ]</literal></entry>\n\t\t\t\t\t\t\t<entry>06/15</entry>\n\t\t\t\t\t\t</row>\n\t\t\t\t\t</tbody>\n\t\t\t\t</tgroup>\n\t\t\t</table>\n\n\t\t\t<para>The $index_format string would contain:</para>\n \n<screen>\n%&lt;[y?%&lt;[m?%&lt;[d?%[%H:%M ]&amp;%[%a %d]&gt;&amp;%[%b %d]&gt;&amp;%[%m/%y ]&gt;\n</screen>\n\n\t\t\t<para>\n\t\t\t\tReparsed a little, for clarity, you can see the\n\t\t\t\ttest conditions and the four format strings.\n\t\t\t</para>\n\n<screen>\n%&lt;[y?                                       &amp;%[%m/%y ]&gt;  Older\n     %&lt;[m?                        &amp;%[%b %d]&gt;             This year\n          %&lt;[d?         &amp;%[%a %d]&gt;                       This month\n               %[%H:%M ]                                 Today\n</screen>\n\n\t\t\t<para>\n\t\t\tThis a another view of the same example, with some whitespace\n\t\t\tfor clarity.\n\t\t\t</para>\n\n<screen>\n%&lt;[y? %&lt;[m? %&lt;[d? AAA &amp; BBB &gt; &amp; CCC &gt; &amp; DDD &gt;\n</screen>\n\n\t\t\t<literallayout>\nAAA = %[%H:%M ]\nBBB = %[%a %d]\nCCC = %[%b %d]\nDDD = %[%m/%y ]\n\t\t\t</literallayout>\n\t\t</sect3>\n\t</sect2>\n\n\t<sect2 id=\"cond-date-variables\">\n\t\t<title>Variables</title>\n\n        <para>\n\t\tThe <quote>cond-date</quote> patch doesn't have any config of its own.\n\t\tIt modifies the behavior of the format strings.\n        </para>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"cond-date-functions\">\n\t\t<title>Functions</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"cond-date-commands\">\n\t\t<title>Commands</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"cond-date-colors\">\n\t\t<title>Colors</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"cond-date-sort\">\n\t\t<title>Sort</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"cond-date-muttrc\">\n\t\t<title>Muttrc</title>\n<screen>\n<emphasis role=\"comment\"># Example Mutt config file for the 'index-color' feature.\n#\n# The default index_format is:\n#       '%4C %Z %{%b %d} %-15.15L (%?l?%4l&amp;%4c?) %s'\n#\n# We replace the date field '%{%b %d}', giving:</emphasis>\nset index_format='%4C %Z %&lt;[y?%&lt;[m?%&lt;[d?%[%H:%M ]&amp;%[%a %d]&gt;&amp;%[%b %d]&gt;&amp;%[%m/%y ]&gt; %-15.15L (%?l?%4l&amp;%4c?) %s'\n \n<emphasis role=\"comment\"># Test  Date Range  Format String  Example\n# --------------------------------------------\n# %[d   Today       %[%H:%M ]      12:34\n# %[m   This month  %[%a %d]       Thu 12\n# %[y   This year   %[%b %d]       Dec 10\n# -     Older       %[%m/%y ]      06/15\n \n# vim: syntax=muttrc</emphasis>\n</screen>\n\t</sect2>\n\n\t<sect2 id=\"cond-date-see-also\">\n\t\t<title>See Also</title>\n\n\t\t<itemizedlist>\n\t\t\t<listitem><para><ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink></para></listitem>\n\t\t\t<listitem><para><link linkend=\"index-format\">$index_format</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"nested-if\">nested-if patch</link></para></listitem>\n\t\t\t<listitem><para><literal>strftime(3)</literal></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n\n\t<sect2 id=\"cond-date-known-bugs\">\n\t\t<title>Known Bugs</title>\n\n\t\t<para>\n\t\t\tDate parsing doesn't quite do what you expect.\n\t\t\t<quote>1w</quote> doesn't mean the <quote>in the last 7 days</quote>, but\n\t\t\t<quote><emphasis>this</emphasis> week</quote>.  This doesn't match\n\t\t\tthe normal Mutt behaviour: for example <literal>~d>1w</literal>\n\t\t\tmeans emails dated in the last 7 days.\n\t\t</para>\n\n\t</sect2>\n\n\t<sect2 id=\"cond-date-credits\">\n\t\t<title>Credits</title>\n\t\t<itemizedlist>\n\t\t<listitem><para>Aaron Schrab <email>aaron@schrab.com</email></para></listitem>\n\t\t<listitem><para>Eric Davis <email>edavis@insanum.com</email></para></listitem>\n\t\t<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n</sect1>\n\n<sect1 id=\"tls-sni\">\n\t<title>TLS-SNI Patch</title>\n\t<subtitle>Negotiate with a server for a TSL/SSL certificate</subtitle>\n\n\t<sect2 id=\"tls-sni-patch\">\n\t\t<title>Patch</title>\n\n\t\t<para>\n\t\t\tTo check if Mutt supports <quote>TLS-SNI</quote>, look for\n\t\t\t<quote>patch-tls-sni</quote> in the mutt version.\n\t\t\tSee: <xref linkend=\"mutt-patches\"/>.\n\t\t</para>\n\n\t\t<itemizedlist>\n\t\t\t<title>Dependencies:</title>\n\t\t\t<listitem><para>mutt-1.5.24</para></listitem>\n\t\t\t<listitem><para>OpenSSL</para></listitem>\n\t\t</itemizedlist>\n\n\t\t<para>This patch is part of the <ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink>.</para>\n\t</sect2>\n\n\t<sect2 id=\"tls-sni-intro\">\n\t\t<title>Introduction</title>\n\n\t\t<para>\n\t\tThe <quote>TLS-SNI</quote> patch adds support for TLS virtual hosting.\n\t\tIf your mail server doesn't support this everything will still work\n\t\tnormally.\n\t\t</para>\n\n\t\t<para>\n\t\tTLS supports sending the expected server hostname during the\n\t\thandshake, via the SNI extension.  This can be used to select a\n\t\tserver certificate to issue to the client, permitting\n\t\tvirtual-hosting without requiring multiple IP addresses.\n\t\t</para>\n\n\t\t<para>\n\t\tThis has been tested against Exim 4.80, which optionally logs SNI\n\t\tand can perform vhosting.\n\t\t</para>\n\n        <para>\n\t\tTo verify TLS SNI support by a server, you can use:\n        </para>\n\n<screen>\nopenssl s_client -host &lt;imap server&gt; -port &lt;port&gt; -tls1 -servername &lt;imap server&gt;\n</screen>\n\t</sect2>\n\n<!--\n\t<sect2 id=\"tls-sni-variables\">\n\t\t<title>Variables</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"tls-sni-functions\">\n\t\t<title>Functions</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"tls-sni-commands\">\n\t\t<title>Commands</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"tls-sni-colors\">\n\t\t<title>Colors</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"tls-sni-sort\">\n\t\t<title>Sort</title>\n\t\t<para>None</para>\n\t</sect2>\n-->\n\n\t<sect2 id=\"tls-sni-muttrc\">\n\t\t<title>Muttrc</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"tls-sni-see-also\">\n\t\t<title>See Also</title>\n\n\t\t<itemizedlist>\n\t\t\t<listitem><para><ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n\n\t<sect2 id=\"tls-sni-known-bugs\">\n\t\t<title>Known Bugs</title>\n\t\t<para>None</para>\n\t</sect2>\n\n\t<sect2 id=\"tls-sni-credits\">\n\t\t<title>Credits</title>\n\t\t<itemizedlist>\n\t\t<listitem><para>Jeremy Katz <email>katzj@linuxpower.org</email></para></listitem>\n\t\t<listitem><para>Phil Pennock <email>mutt-dev@spodhuis.demon.nl</email></para></listitem>\n\t\t<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n</sect1>\n\n<sect1 id=\"sidebar\">\n\t<title>Sidebar Patch</title>\n\t<subtitle>Overview of mailboxes</subtitle>\n\n\t<sect2 id=\"sidebar-patch\">\n\t\t<title>Patch</title>\n\n\t\t<para>\n\t\t\tTo check if Mutt supports <quote>Sidebar</quote>, look for\n\t\t\t<quote>+USE_SIDEBAR</quote> in the mutt version.\n\t\t\tSee: <xref linkend=\"compile-time-features\"/>.\n\t\t</para>\n\n\t\t<itemizedlist>\n\t\t\t<title>Dependencies:</title>\n\t\t\t<listitem><para>mutt-1.5.24</para></listitem>\n\t\t</itemizedlist>\n\n\t\t<para>This patch is part of the <ulink url=\"http://www.neomutt.org/\">NeoMutt Project</ulink>.</para>\n\t</sect2>\n\n\t<sect2 id=\"sidebar-intro\">\n\t\t<title>Introduction</title>\n\n\t\t<para>\n\t\t\tThe Sidebar shows a list of all your mailboxes.  The list can be\n\t\t\tturned on and off, it can be themed and the list style can be\n\t\t\tconfigured.\n\t\t</para>\n\n\t\t<para>\n\t\t\tThis part of the manual is a reference guide.\n\t\t\tIf you want a simple introduction with examples see the\n\t\t\t<link linkend=\"intro-sidebar\">Sidebar Howto</link>.\n\t\t\tIf you just want to get started, you could use the sample\n\t\t\t<link linkend=\"sidebar-muttrc\">Sidebar muttrc</link>.\n\t\t</para>\n\n\t\t<para>\n\t\t\tThis version of Sidebar is based on Terry Chan's\n\t\t\t<ulink url=\"http://www.lunar-linux.org/mutt-sidebar/\">2015-11-11 release</ulink>.\n\t\t\tIt contains many\n\t\t\t<emphasis role=\"bold\"><link linkend=\"intro-sidebar-features\">new features</link></emphasis>,\n\t\t\tlots of\n\t\t\t<emphasis role=\"bold\"><link linkend=\"intro-sidebar-bugfixes\">bugfixes</link></emphasis>.\n\t\t</para>\n\t</sect2>\n\n\t<sect2 id=\"sidebar-variables\">\n\t\t<title>Variables</title>\n\n\t\t<table id=\"table-sidebar-variables\">\n\t\t\t<title>Sidebar Variables</title>\n\t\t\t<tgroup cols=\"3\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Name</entry>\n\t\t\t\t\t\t<entry>Type</entry>\n\t\t\t\t\t\t<entry>Default</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_delim_chars</literal></entry>\n\t\t\t\t\t\t<entry>string</entry>\n\t\t\t\t\t\t<entry><literal>/.</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_divider_char</literal></entry>\n\t\t\t\t\t\t<entry>string</entry>\n\t\t\t\t\t\t<entry><literal>|</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_folder_indent</literal></entry>\n\t\t\t\t\t\t<entry>boolean</entry>\n\t\t\t\t\t\t<entry><literal>no</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_format</literal></entry>\n\t\t\t\t\t\t<entry>string</entry>\n\t\t\t\t\t\t<entry><literal>%B%?F? [%F]?%* %?N?%N/?%S</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_indent_string</literal></entry>\n\t\t\t\t\t\t<entry>string</entry>\n\t\t\t\t\t\t<entry><literal>&nbsp;&nbsp;</literal> (two spaces)</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_new_mail_only</literal></entry>\n\t\t\t\t\t\t<entry>boolean</entry>\n\t\t\t\t\t\t<entry><literal>no</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_next_new_wrap</literal></entry>\n\t\t\t\t\t\t<entry>boolean</entry>\n\t\t\t\t\t\t<entry><literal>no</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_refresh_time</literal></entry>\n\t\t\t\t\t\t<entry>number</entry>\n\t\t\t\t\t\t<entry><literal>60</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_short_path</literal></entry>\n\t\t\t\t\t\t<entry>boolean</entry>\n\t\t\t\t\t\t<entry><literal>no</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_sort_method</literal></entry>\n\t\t\t\t\t\t<entry>enum</entry>\n\t\t\t\t\t\t<entry><literal>SORT_ORDER</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_visible</literal></entry>\n\t\t\t\t\t\t<entry>boolean</entry>\n\t\t\t\t\t\t<entry><literal>no</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_whitelist</literal></entry>\n\t\t\t\t\t\t<entry>list</entry>\n\t\t\t\t\t\t<entry>(empty)</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_width</literal></entry>\n\t\t\t\t\t\t<entry>number</entry>\n\t\t\t\t\t\t<entry><literal>20</literal></entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\t</sect2>\n\n\t<sect2 id=\"sidebar-functions\">\n\t\t<title>Functions</title>\n\n\t\t<para>\n\t\t\tSidebar adds the following functions to Mutt.\n\t\t\tBy default, none of them are bound to keys.\n\t\t</para>\n\n\t\t<table id=\"table-sidebar-functions\">\n\t\t\t<title>Sidebar Functions</title>\n\t\t\t<tgroup cols=\"3\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Menus</entry>\n\t\t\t\t\t\t<entry>Function</entry>\n\t\t\t\t\t\t<entry>Description</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>index,pager</entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-next&gt;</literal></entry>\n\t\t\t\t\t\t<entry>Move the highlight to next mailbox</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>index,pager</entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-next-new&gt;</literal></entry>\n\t\t\t\t\t\t<entry>Move the highlight to next mailbox with new mail</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>index,pager</entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-open&gt;</literal></entry>\n\t\t\t\t\t\t<entry>Open highlighted mailbox</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>index,pager</entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-page-down&gt;</literal></entry>\n\t\t\t\t\t\t<entry>Scroll the Sidebar down 1 page</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>index,pager</entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-page-up&gt;</literal></entry>\n\t\t\t\t\t\t<entry>Scroll the Sidebar up 1 page</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>index,pager</entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-prev&gt;</literal></entry>\n\t\t\t\t\t\t<entry>Move the highlight to previous mailbox</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>index,pager</entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-prev-new&gt;</literal></entry>\n\t\t\t\t\t\t<entry>Move the highlight to previous mailbox with new mail</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>index,pager</entry>\n\t\t\t\t\t\t<entry><literal>&lt;sidebar-toggle-visible&gt;</literal></entry>\n\t\t\t\t\t\t<entry>Make the Sidebar (in)visible</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\t</sect2>\n\n\t<sect2 id=\"sidebar-commands\">\n\t\t<title>Commands</title>\n\t\t<cmdsynopsis>\n\t\t\t<command>sidebar_whitelist</command>\n\t\t\t<arg choice=\"plain\">\n\t\t\t\t<replaceable class=\"parameter\">mailbox</replaceable>\n\t\t\t</arg>\n\t\t\t<arg choice=\"opt\" rep=\"repeat\">\n\t\t\t\t<replaceable class=\"parameter\">mailbox</replaceable>\n\t\t\t</arg>\n\t\t</cmdsynopsis>\n\t</sect2>\n\n\t<sect2 id=\"sidebar-colors\">\n\t\t<title>Colors</title>\n\n\t\t<table id=\"table-sidebar-colors\">\n\t\t\t<title>Sidebar Colors</title>\n\t\t\t<tgroup cols=\"3\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Name</entry>\n\t\t\t\t\t\t<entry>Default Color</entry>\n\t\t\t\t\t\t<entry>Description</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_divider</literal></entry>\n\t\t\t\t\t\t<entry>default</entry>\n\t\t\t\t\t\t<entry>The dividing line between the Sidebar and the Index/Pager panels</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_flagged</literal></entry>\n\t\t\t\t\t\t<entry>default</entry>\n\t\t\t\t\t\t<entry>Mailboxes containing flagged mail</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_highlight</literal></entry>\n\t\t\t\t\t\t<entry>underline</entry>\n\t\t\t\t\t\t<entry>Cursor to select a mailbox</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_indicator</literal></entry>\n\t\t\t\t\t\t<entry>mutt <literal>indicator</literal></entry>\n\t\t\t\t\t\t<entry>The mailbox open in the Index panel</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_new</literal></entry>\n\t\t\t\t\t\t<entry>default</entry>\n\t\t\t\t\t\t<entry>Mailboxes containing new mail</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>sidebar_spoolfile</literal></entry>\n\t\t\t\t\t\t<entry>default</entry>\n\t\t\t\t\t\t<entry>Mailbox that receives incoming mail</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\n\t\tIf the <literal>sidebar_indicator</literal> color isn't set, then the default Mutt\n\t\tindicator color will be used (the color used in the index panel).\n\t</sect2>\n\n\t<sect2 id=\"sidebar-sort\">\n\t\t<title>Sort</title>\n\n\t\t<table id=\"table-sidebar-sort\">\n\t\t\t<title>Sidebar Sort</title>\n\t\t\t<tgroup cols=\"2\">\n\t\t\t\t<thead>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry>Sort</entry>\n\t\t\t\t\t\t<entry>Description</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>alpha</literal></entry>\n\t\t\t\t\t\t<entry>Alphabetically by path</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>count</literal></entry>\n\t\t\t\t\t\t<entry>Total number of messages</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>flagged</literal></entry>\n\t\t\t\t\t\t<entry>Number of flagged messages</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>name</literal></entry>\n\t\t\t\t\t\t<entry>Alphabetically by path</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>new</literal></entry>\n\t\t\t\t\t\t<entry>Number of new messages</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>path</literal></entry>\n\t\t\t\t\t\t<entry>Alphabetically by path</entry>\n\t\t\t\t\t</row>\n\t\t\t\t\t<row>\n\t\t\t\t\t\t<entry><literal>unsorted</literal></entry>\n\t\t\t\t\t\t<entry>Do not resort the paths</entry>\n\t\t\t\t\t</row>\n\t\t\t\t</tbody>\n\t\t\t</tgroup>\n\t\t</table>\n\t</sect2>\n\n\t<sect2 id=\"sidebar-muttrc\">\n\t\t<title>Muttrc</title>\n<screen>\n<emphasis role=\"comment\"># This is a complete list of sidebar-related configuration.\n \n# --------------------------------------------------------------------------\n# VARIABLES - shown with their default values\n# --------------------------------------------------------------------------\n \n# Should the Sidebar be shown?</emphasis>\nset sidebar_visible = no\n \n<emphasis role=\"comment\"># How wide should the Sidebar be in screen columns?\n# Note: Some characters, e.g. Chinese, take up two columns each.</emphasis>\nset sidebar_width = 20\n \n<emphasis role=\"comment\"># Should the mailbox paths be abbreviated?</emphasis>\nset sidebar_short_path = no\n \n<emphasis role=\"comment\"># When abbreviating mailbox path names, use any of these characters as path\n# separators.  Only the part after the last separators will be shown.\n# For file folders '/' is good.  For IMAP folders, often '.' is useful.</emphasis>\nset sidebar_delim_chars = '/.'\n \n<emphasis role=\"comment\"># If the mailbox path is abbreviated, should it be indented?</emphasis>\nset sidebar_folder_indent = no\n \n<emphasis role=\"comment\"># Indent mailbox paths with this string.</emphasis>\nset sidebar_indent_string = '  '\n \n<emphasis role=\"comment\"># Make the Sidebar only display mailboxes that contain new, or flagged,\n# mail.</emphasis>\nset sidebar_new_mail_only = no\n \n<emphasis role=\"comment\"># Any mailboxes that are whitelisted will always be visible, even if the\n# sidebar_new_mail_only option is enabled.</emphasis>\nsidebar_whitelist '/home/user/mailbox1'\nsidebar_whitelist '/home/user/mailbox2'\n \n<emphasis role=\"comment\"># When searching for mailboxes containing new mail, should the search wrap\n# around when it reaches the end of the list?</emphasis>\nset sidebar_next_new_wrap = no\n \n<emphasis role=\"comment\"># The character to use as the divider between the Sidebar and the other Mutt\n# panels.\n# Note: Only the first character of this string is used.</emphasis>\nset sidebar_divider_char = '|'\n \n<emphasis role=\"comment\"># Display the Sidebar mailboxes using this format string.</emphasis>\nset sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S'\n \n<emphasis role=\"comment\"># Sidebar will not refresh its list of mailboxes any more frequently than\n# this number of seconds.  This will help reduce disk/network traffic.</emphasis>\nset sidebar_refresh_time = 60\n \n<emphasis role=\"comment\"># Sort the mailboxes in the Sidebar using this method:\n#       count    - total number of messages\n#       flagged  - number of flagged messages\n#       new      - number of new messages\n#       path     - mailbox path\n#       unsorted - do not sort the mailboxes</emphasis>\nset sidebar_sort_method = 'unsorted'\n \n<emphasis role=\"comment\"># --------------------------------------------------------------------------\n# FUNCTIONS - shown with an example mapping\n# --------------------------------------------------------------------------\n \n# Move the highlight to the previous mailbox</emphasis>\nbind index,pager \\Cp sidebar-prev\n \n<emphasis role=\"comment\"># Move the highlight to the next mailbox</emphasis>\nbind index,pager \\Cn sidebar-next\n \n<emphasis role=\"comment\"># Open the highlighted mailbox</emphasis>\nbind index,pager \\Co sidebar-open\n \n<emphasis role=\"comment\"># Move the highlight to the previous page\n# This is useful if you have a LOT of mailboxes.</emphasis>\nbind index,pager &lt;F3&gt; sidebar-page-up\n \n<emphasis role=\"comment\"># Move the highlight to the next page\n# This is useful if you have a LOT of mailboxes.</emphasis>\nbind index,pager &lt;F4&gt; sidebar-page-down\n \n<emphasis role=\"comment\"># Move the highlight to the previous mailbox containing new, or flagged,\n# mail.</emphasis>\nbind index,pager &lt;F5&gt; sidebar-prev-new\n \n<emphasis role=\"comment\"># Move the highlight to the next mailbox containing new, or flagged, mail.</emphasis>\nbind index,pager &lt;F6&gt; sidebar-next-new\n \n<emphasis role=\"comment\"># Toggle the visibility of the Sidebar.</emphasis>\nbind index,pager B sidebar-toggle-visible\n \n<emphasis role=\"comment\"># --------------------------------------------------------------------------\n# COLORS - some unpleasant examples are given\n# --------------------------------------------------------------------------\n# Note: All color operations are of the form:\n#       color OBJECT FOREGROUND BACKGROUND\n \n# Color of the current, open, mailbox\n# Note: This is a general Mutt option which colors all selected items.</emphasis>\ncolor indicator cyan black\n \n<emphasis role=\"comment\"># Color of the highlighted, but not open, mailbox.</emphasis>\ncolor sidebar_highlight black color8\n \n<emphasis role=\"comment\"># Color of the divider separating the Sidebar from Mutt panels</emphasis>\ncolor sidebar_divider color8 black\n \n<emphasis role=\"comment\"># Color to give mailboxes containing flagged mail</emphasis>\ncolor sidebar_flagged red black\n \n<emphasis role=\"comment\"># Color to give mailboxes containing new mail</emphasis>\ncolor sidebar_new green black\n \n<emphasis role=\"comment\"># --------------------------------------------------------------------------\n \n# vim: syntax=muttrc</emphasis>\n</screen>\n\t</sect2>\n\n\t<sect2 id=\"sidebar-see-also\">\n\t\t<title>See Also</title>\n\n\t\t<itemizedlist>\n\t\t\t<listitem><para><link linkend=\"regexp\">Regular Expressions</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"patterns\">Patterns</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"color\">Color command</link></para></listitem>\n\t\t\t<listitem><para><link linkend=\"notmuch\">notmuch patch</link></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n\n\t<sect2 id=\"sidebar-known-bugs\">\n\t\t<title>Known Bugs</title>\n\t\tUnsorted isn't\n\t</sect2>\n\n\t<sect2 id=\"sidebar-credits\">\n\t\t<title>Credits</title>\n\t\t<itemizedlist>\n\t\t<listitem><para>Justin Hibbits <email>jrh29@po.cwru.edu</email></para></listitem>\n\t\t<listitem><para>Thomer M. Gil <email>mutt@thomer.com</email></para></listitem>\n\t\t<listitem><para>David Sterba <email>dsterba@suse.cz</email></para></listitem>\n\t\t<listitem><para>Evgeni Golov <email>evgeni@debian.org</email></para></listitem>\n\t\t<listitem><para>Fabian Groffen <email>grobian@gentoo.org</email></para></listitem>\n\t\t<listitem><para>Jason DeTiberus <email>jdetiber@redhat.com</email></para></listitem>\n\t\t<listitem><para>Stefan Assmann <email>sassmann@kpanic.de</email></para></listitem>\n\t\t<listitem><para>Steve Kemp <email>steve@steve.org.uk</email></para></listitem>\n\t\t<listitem><para>Terry Chan <email>tchan@lunar-linux.org</email></para></listitem>\n\t\t<listitem><para>Tyler Earnest <email>tylere@rne.st</email></para></listitem>\n\t\t<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>\n\t\t</itemizedlist>\n\t</sect2>\n</sect1>\n\n</chapter>\n\n<chapter id=\"security\">\n<title>Security Considerations</title>\n\n<para>\nFirst of all, Mutt contains no security holes included by intention but\nmay contain unknown security holes. As a consequence, please run Mutt\nonly with as few permissions as possible. Especially, do not run Mutt as\nthe super user.\n</para>\n\n<para>\nWhen configuring Mutt, there're some points to note about secure setups\nso please read this chapter carefully.\n</para>\n\n<sect1 id=\"security-passwords\">\n<title>Passwords</title>\n\n<para>\nAlthough Mutt can be told the various passwords for accounts, please\nnever store passwords in configuration files. Besides the fact that the\nsystem's operator can always read them, you could forget to mask it out\nwhen reporting a bug or asking for help via a mailing list. Even worse,\nyour mail including your password could be archived by internet search\nengines, mail-to-news gateways etc. It may already be too late before\nyou notice your mistake.\n</para>\n\n</sect1>\n\n<sect1 id=\"security-tempfiles\">\n<title>Temporary Files</title>\n\n<para>\nMutt uses many temporary files for viewing messages, verifying digital\nsignatures, etc. As long as being used, these files are visible by other\nusers and maybe even readable in case of misconfiguration.  Also, a\ndifferent location for these files may be desired which can be changed\nvia the <link linkend=\"tmpdir\">$tmpdir</link> variable.\n</para>\n\n</sect1>\n\n<sect1 id=\"security-leaks\">\n<title>Information Leaks</title>\n\n<sect2 id=\"security-leaks-mid\">\n<title>Message-Id: headers</title>\n\n<para>\nMessage-Id: headers contain a local part that is to be created in a\nunique fashion. In order to do so, Mutt will <quote>leak</quote> some\ninformation to the outside world when sending messages: the generation\nof this header includes a step counter which is increased (and rotated)\nwith every message sent. In a longer running mutt session, others can\nmake assumptions about your mailing habits depending on the number of\nmessages sent. If this is not desired, the header can be manually\nprovided using <link linkend=\"edit-headers\">$edit_headers</link> (though\nnot recommended).\n</para>\n\n</sect2>\n\n<sect2 id=\"security-leaks-mailto\">\n<title><literal>mailto:</literal>-style Links</title>\n\n<para>\nAs Mutt be can be set up to be the mail client to handle\n<literal>mailto:</literal> style links in websites, there're security\nconsiderations, too. Arbitrary header fields can be embedded in these\nlinks which could override existing header fields or attach arbitrary\nfiles using <link linkend=\"attach-header\">the Attach:\npseudoheader</link>. This may be problematic if the <link\nlinkend=\"edit-headers\">$edit-headers</link> variable is\n<emphasis>unset</emphasis>, i.e. the user doesn't want to see header\nfields while editing the message and doesn't pay enough attention to the\ncompose menu's listing of attachments.\n</para>\n\n<para>\nFor example, following a link like\n</para>\n\n<screen>\nmailto:joe@host?Attach=~/.gnupg/secring.gpg</screen>\n\n<para>\nwill send out the user's private gnupg keyring to\n<literal>joe@host</literal> if the user doesn't follow the information\non screen carefully enough.\n</para>\n\n<para>\nTo prevent these issues, Mutt by default only accepts the\n<literal>Subject</literal> and <literal>Body</literal> headers.\nAllowed headers can be adjusted with the\n<link linkend=\"mailto-allow\"><command>mailto_allow</command></link> and\n<link linkend=\"mailto-allow\"><command>unmailto_allow</command></link> commands.\n</para>\n\n</sect2>\n\n</sect1>\n\n<sect1 id=\"security-external\">\n<title>External Applications</title>\n\n<para>\nMutt in many places has to rely on external applications or for\nconvenience supports mechanisms involving external applications.\n</para>\n\n<para>\nOne of these is the <literal>mailcap</literal> mechanism as defined by\nRfC1524. Details about a secure use of the mailcap mechanisms is given\nin <xref linkend=\"secure-mailcap\"/>.\n</para>\n\n<para>\nBesides the mailcap mechanism, Mutt uses a number of other external\nutilities for operation, for example to provide crypto support, in\nbacktick expansion in configuration files or format string filters.  The\nsame security considerations apply for these as for tools involved via\nmailcap.\n</para>\n\n</sect1>\n\n</chapter>\n\n\n<chapter id=\"tuning\">\n<title>Performance Tuning</title>\n\n<sect1 id=\"tuning-mailboxes\">\n<title>Reading and Writing Mailboxes</title>\n\n<para>\nMutt's performance when reading mailboxes can be improved in two ways:\n</para>\n\n<orderedlist>\n\n<listitem>\n<para>\nFor remote folders (IMAP and POP) as well as folders using one-file-per\nmessage storage (Maildir and MH), Mutt's performance can be greatly\nimproved using <link linkend=\"header-caching\">header caching</link>.\nusing a single database per folder.\n</para>\n</listitem>\n\n<listitem>\n<para>\nMutt provides the <link linkend=\"read-inc\">$read_inc</link> and <link\nlinkend=\"write-inc\">$write_inc</link> variables to specify at which rate\nto update progress counters. If these values are too low, Mutt may spend\nmore time on updating the progress counter than it spends on actually\nreading/writing folders.\n</para>\n\n<para>\nFor example, when opening a maildir folder with a few thousand messages,\nthe default value for <link linkend=\"read-inc\">$read_inc</link> may be\ntoo low. It can be tuned on on a folder-basis using <link\nlinkend=\"folder-hook\"><command>folder-hook</command>s</link>:\n</para>\n\n<screen>\n<emphasis role=\"comment\"># use very high $read_inc to speed up reading hcache'd maildirs</emphasis>\nfolder-hook . 'set read_inc=1000'\n<emphasis role=\"comment\"># use lower value for reading slower remote IMAP folders</emphasis>\nfolder-hook ^imap 'set read_inc=100'\n<emphasis role=\"comment\"># use even lower value for reading even slower remote POP folders</emphasis>\nfolder-hook ^pop 'set read_inc=1'</screen>\n\n</listitem>\n</orderedlist>\n\n<para>\nThese settings work on a per-message basis. However, as messages may\ngreatly differ in size and certain operations are much faster than\nothers, even per-folder settings of the increment variables may not be\ndesirable as they produce either too few or too much progress updates.\nThus, Mutt allows to limit the number of progress updates per second\nit'll actually send to the terminal using the <link\nlinkend=\"time-inc\">$time_inc</link> variable.\n</para>\n\n</sect1>\n\n<sect1 id=\"tuning-messages\">\n<title>Reading Messages from Remote Folders</title>\n\n<para>\nReading messages from remote folders such as IMAP an POP can be slow\nespecially for large mailboxes since Mutt only caches a very limited\nnumber of recently viewed messages (usually 10) per session (so that it\nwill be gone for the next session.)\n</para>\n\n<para>\nTo improve performance and permanently cache whole messages, please\nrefer to Mutt's so-called <link linkend=\"body-caching\">body\ncaching</link> for details.\n</para>\n\n</sect1>\n\n<sect1 id=\"tuning-search\">\n<title>Searching and Limiting</title>\n\n<para>\nWhen searching mailboxes either via a search or a limit action, for some\npatterns Mutt distinguishes between regular expression and string\nsearches. For regular expressions, patterns are prefixed with\n<quote>~</quote> and with <quote>=</quote> for string searches.\n</para>\n\n<para>\nEven though a regular expression search is fast, it's several times\nslower than a pure string search which is noticeable especially on large\nfolders. As a consequence, a string search should be used instead of a\nregular expression search if the user already knows enough about the\nsearch pattern.\n</para>\n\n<para>\nFor example, when limiting a large folder to all messages sent to or by\nan author, it's much faster to search for the initial part of an e-mail\naddress via <literal>=Luser@</literal> instead of\n<literal>~Luser@</literal>. This is especially true for searching\nmessage bodies since a larger amount of input has to be searched.\n</para>\n\n<para>\nAs for regular expressions, a lower case string search pattern makes\nMutt perform a case-insensitive search except for IMAP (because for IMAP\nMutt performs server-side searches which don't support\ncase-insensitivity).\n</para>\n\n</sect1>\n\n</chapter>\n\n<chapter id=\"reference\">\n<title>Reference</title>\n\n<sect1 id=\"commandline\">\n<title>Command-Line Options</title>\n\n<para>\nRunning <literal>mutt</literal> with no arguments will make Mutt attempt\nto read your spool mailbox.  However, it is possible to read other\nmailboxes and to send messages from the command line as well.\n</para>\n\n<table id=\"tab-commandline-options\">\n<title>Command line options</title>\n<tgroup cols=\"2\">\n<thead>\n<row><entry>Option</entry><entry>Description</entry></row>\n</thead>\n<tbody>\n<row><entry>-A</entry><entry>expand an alias</entry></row>\n<row><entry>-a</entry><entry>attach a file to a message</entry></row>\n<row><entry>-b</entry><entry>specify a blind carbon-copy (BCC) address</entry></row>\n<row><entry>-c</entry><entry>specify a carbon-copy (Cc) address</entry></row>\n<row><entry>-d</entry><entry>log debugging output to ~/.muttdebug0 if mutt was compiled with +DEBUG; it can range from 1-5 and affects verbosity (a value of 2 is recommended)</entry></row>\n<row><entry>-D</entry><entry>print the value of all Mutt variables to stdout</entry></row>\n<row><entry>-E</entry><entry>edit the draft (-H) or include (-i) file</entry></row>\n<row><entry>-e</entry><entry>specify a config command to be run after initialization files are read</entry></row>\n<row><entry>-f</entry><entry>specify a mailbox to load</entry></row>\n<row><entry>-F</entry><entry>specify an alternate file to read initialization commands</entry></row>\n<row><entry>-h</entry><entry>print help on command line options</entry></row>\n<row><entry>-H</entry><entry>specify a draft file from which to read a header and body</entry></row>\n<row><entry>-i</entry><entry>specify a file to include in a message composition</entry></row>\n<row><entry>-m</entry><entry>specify a default mailbox type</entry></row>\n<row><entry>-n</entry><entry>do not read the system Muttrc</entry></row>\n<row><entry>-p</entry><entry>recall a postponed message</entry></row>\n<row><entry>-Q</entry><entry>query a configuration variable</entry></row>\n<row><entry>-R</entry><entry>open mailbox in read-only mode</entry></row>\n<row><entry>-s</entry><entry>specify a subject (enclose in quotes if it contains spaces)</entry></row>\n<row><entry>-v</entry><entry>show version number and compile-time definitions</entry></row>\n<row><entry>-x</entry><entry>simulate the mailx(1) compose mode</entry></row>\n<row><entry>-y</entry><entry>show a menu containing the files specified by the <command>mailboxes</command> command</entry></row>\n<row><entry>-z</entry><entry>exit immediately if there are no messages in the mailbox</entry></row>\n<row><entry>-Z</entry><entry>open the first folder with new message, exit immediately if none</entry></row>\n</tbody>\n</tgroup>\n</table>\n\n<para>\nTo read messages in a mailbox\n</para>\n\n<cmdsynopsis>\n<command>mutt</command>\n<arg choice=\"opt\"><option>-nz</option></arg>\n<arg choice=\"opt\"><option>-F</option>\n<replaceable>muttrc</replaceable>\n</arg>\n<arg choice=\"opt\"><option>-m</option>\n<replaceable>type</replaceable>\n</arg>\n<arg choice=\"opt\"><option>-f</option>\n<replaceable>mailbox</replaceable>\n</arg>\n</cmdsynopsis>\n\n<para>\nTo compose a new message\n</para>\n\n<cmdsynopsis>\n<command>mutt</command>\n<arg choice=\"opt\"><option>-En</option></arg>\n<arg choice=\"opt\"><option>-F</option>\n<replaceable>muttrc</replaceable>\n</arg>\n<arg choice=\"opt\"><option>-c</option>\n<replaceable>address</replaceable>\n</arg>\n<arg choice=\"opt\"><option>-Hi</option>\n<replaceable>filename</replaceable>\n</arg>\n<arg choice=\"opt\"><option>-s</option>\n<replaceable>subject</replaceable>\n</arg>\n<arg choice=\"opt\">\n<option>-a</option>\n<replaceable>file</replaceable>\n<arg choice=\"opt\" rep=\"repeat\"/>\n--\n</arg>\n<group choice=\"plain\" rep=\"repeat\">\n<arg choice=\"plain\">\n<replaceable>address</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable>mailto_url</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n\n<para>\nMutt also supports a <quote>batch</quote> mode to send prepared\nmessages.  Simply redirect input from the file you wish to send.  For\nexample,\n</para>\n\n<screen>\nmutt -s \"data set for run #2\" professor@bigschool.edu &lt; ~/run2.dat</screen>\n\n<para>\nwill send a message to\n<literal>&lt;professor@bigschool.edu&gt;</literal> with a subject of\n<quote>data set for run #2</quote>.  In the body of the message will be\nthe contents of the file <quote>~/run2.dat</quote>.\n</para>\n\n<para>\nAn include file passed with <literal>-i</literal> will be used as the\nbody of the message.  When combined with <literal>-E</literal>, the\ninclude file will be directly edited during message composition.  The\nfile will be modified regardless of whether the message is sent or\naborted.\n</para>\n\n<para>\nA draft file passed with <literal>-H</literal> will be used as the\ninitial header and body for the message.  Multipart messages can be\nused as a draft file.  When combined with <literal>-E</literal>, the\ndraft file will be updated to the final state of the message after\ncomposition, regardless of whether the message is sent, aborted, or\neven postponed.  Note that if the message is sent encrypted or signed,\nthe draft file will be saved that way too.\n</para>\n\n<para>\nAll files passed with <literal>-a</literal> <emphasis>file</emphasis>\nwill be attached as a MIME part to the message. To attach a single or\nseveral files, use <quote>--</quote> to separate files and recipient\naddresses:\n</para>\n\n<screen>\nmutt -a image.png -- some@one.org</screen>\n\n<para>\nor\n</para>\n\n<screen>\nmutt -a *.png -- some@one.org</screen>\n\n<note>\n<para>\nThe <literal>-a</literal> option must be last in the option list.\n</para>\n</note>\n\n<para>\nIn addition to accepting a list of email addresses, Mutt also accepts a URL with\nthe <literal>mailto:</literal> schema as specified in RFC2368.  This is useful\nwhen configuring a web browser to launch Mutt when clicking on mailto links.\n</para>\n\n<screen>\nmutt mailto:some@one.org?subject=test&amp;cc=other@one.org</screen>\n\n</sect1>\n\n<sect1 id=\"commands\">\n<title>Configuration Commands</title>\n\n<para>\nThe following are the commands understood by Mutt:\n</para>\n\n<itemizedlist>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"account-hook\">account-hook</link></command>\n<arg choice=\"plain\">\n<replaceable>regexp</replaceable>\n<replaceable>command</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"alias\">alias</link></command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">key</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">address</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">address</replaceable>\n</arg>\n\n<command><link linkend=\"alias\">unalias</link></command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable>name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">key</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"alternates\">alternates</link></command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable>name</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable>regexp</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable>regexp</replaceable>\n</arg>\n\n<command><link linkend=\"alternates\">unalternates</link></command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable>name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>regexp</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"alternative-order\">alternative_order</link></command>\n<arg choice=\"plain\">\n<replaceable>mimetype</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n\n<command><link linkend=\"alternative-order\">unalternative_order</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"attachments\">attachments</link></command>\n<arg choice=\"plain\">\n<replaceable>{ + | - }disposition</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable>mime-type</replaceable>\n</arg>\n\n<command><link linkend=\"attachments\">unattachments</link></command>\n<arg choice=\"plain\">\n<replaceable>{ + | - }disposition</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable>mime-type</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"auto-view\">auto_view</link></command>\n<arg choice=\"plain\">\n<replaceable>mimetype</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n\n<command><link linkend=\"auto-view\">unauto_view</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"bind\">bind</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">map</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">key</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">function</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"charset-hook\">charset-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">alias</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">charset</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"iconv-hook\">iconv-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">charset</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">local-charset</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"color\">color</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">object</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">foreground</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">background</replaceable>\n</arg>\n\n<command><link linkend=\"color\">color</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<option>header</option>\n</arg>\n<arg choice=\"plain\">\n<option>body</option>\n</arg>\n</group>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">foreground</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">background</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n\n<command><link linkend=\"color\">color</link></command>\n<arg choice=\"plain\">\n<option>index</option>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">foreground</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">background</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n\n<command><link linkend=\"color\">uncolor</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<option>index</option>\n</arg>\n<arg choice=\"plain\">\n<option>header</option>\n</arg>\n<arg choice=\"plain\">\n<option>body</option>\n</arg>\n</group>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"crypt-hook\">crypt-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">keyid</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"exec\">exec</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">function</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">function</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"fcc-hook\">fcc-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"fcc-save-hook\">fcc-save-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"folder-hook\">folder-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]regexp</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"addrgroup\">group</link></command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\" rep=\"repeat\">\n<option>-rx</option>\n<replaceable class=\"parameter\">expr</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<option>-addr</option>\n<replaceable class=\"parameter\">expr</replaceable>\n</arg>\n</group>\n\n<command><link linkend=\"addrgroup\">ungroup</link></command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<option>-rx</option>\n<replaceable class=\"parameter\">expr</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<option>-addr</option>\n<replaceable class=\"parameter\">expr</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"hdr-order\">hdr_order</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">header</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">header</replaceable>\n</arg>\n\n<command><link linkend=\"hdr-order\">unhdr_order</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>header</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"ignore\">ignore</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n\n<command><link linkend=\"ignore\">unignore</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"lists\">lists</link></command>\n<arg>\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n\n<command><link linkend=\"lists\">unlists</link></command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable>name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>regexp</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"macro\">macro</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">menu</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">key</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">sequence</replaceable>\n</arg>\n<arg choice=\"opt\">\n<replaceable class=\"parameter\">description</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"mailboxes\">mailboxes</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n\n<command><link linkend=\"mailboxes\">unmailboxes</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"mailto-allow\">mailto_allow</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">header-field</replaceable>\n</arg>\n</group>\n\n<command><link linkend=\"mailto-allow\">unmailto_allow</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">header-field</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"mbox-hook\">mbox-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]regexp</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"message-hook\">message-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"mime-lookup\">mime_lookup</link></command>\n<arg choice=\"plain\">\n<replaceable>mimetype</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n\n<command><link linkend=\"mime-lookup\">unmime_lookup</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable>*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable>mimetype</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"mono\">mono</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">object</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">attribute</replaceable>\n</arg>\n\n<command><link linkend=\"mono\">mono</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<option>header</option>\n</arg>\n<arg choice=\"plain\">\n<option>body</option>\n</arg>\n</group>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">attribute</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n\n<command><link linkend=\"mono\">mono</link></command>\n<arg choice=\"plain\">\n<option>index</option>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">attribute</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n\n<command><link linkend=\"mono\">unmono</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<option>index</option>\n</arg>\n<arg choice=\"plain\">\n<option>header</option>\n</arg>\n<arg choice=\"plain\">\n<option>body</option>\n</arg>\n</group>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"my-hdr\">my_hdr</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">string</replaceable>\n</arg>\n\n<command><link linkend=\"my-hdr\">unmy_hdr</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">field</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"push\">push</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">string</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"save-hook\">save-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">mailbox</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"score\">score</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">value</replaceable>\n</arg>\n\n<command><link linkend=\"score\">unscore</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"reply-hook\">reply-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"send-hook\">send-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"send2-hook\">send2-hook</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">[!]pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"set\">set</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<group choice=\"opt\">\n<arg choice=\"plain\"><option>no</option></arg>\n<arg choice=\"plain\"><option>inv</option></arg>\n</group>\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">variable=value</replaceable>\n</arg>\n</group>\n<arg choice=\"opt\" rep=\"repeat\"></arg>\n\n<command><link linkend=\"set\">toggle</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n\n<command><link linkend=\"set\">unset</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n\n<command><link linkend=\"set\">reset</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">variable</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command>sidebar_whitelist</command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">item</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">command</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"source\">source</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">filename</replaceable>\n</arg>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"spam\">spam</link></command>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">format</replaceable>\n</arg>\n\n<command><link linkend=\"spam\">nospam</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">pattern</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"subscribe\">subscribe</link></command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable class=\"parameter\">name</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n<arg choice=\"opt\" rep=\"repeat\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n\n<command><link linkend=\"subscribe\">unsubscribe</link></command>\n<arg choice=\"opt\" rep=\"repeat\">\n<option>-group</option>\n<replaceable>name</replaceable>\n</arg>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\" rep=\"repeat\">\n<replaceable class=\"parameter\">regexp</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n<listitem>\n<cmdsynopsis>\n<command><link linkend=\"unhook\">unhook</link></command>\n<group choice=\"req\">\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">*</replaceable>\n</arg>\n<arg choice=\"plain\">\n<replaceable class=\"parameter\">hook-type</replaceable>\n</arg>\n</group>\n</cmdsynopsis>\n</listitem>\n\n</itemizedlist>\n\n</sect1>\n\n<sect1 id=\"variables\">\n<title>Configuration Variables</title>\n"
  },
  {
    "path": "doc/manual.xml.tail",
    "content": "</sect1>\n\n<sect1 id=\"functions\">\n<title>Functions</title>\n\n<para>\nThe following is the list of available functions listed by the mapping\nin which they are available.  The default key setting is given, and an\nexplanation of what the function does.  The key bindings of these\nfunctions can be changed with the <link linkend=\"bind\">bind</link>\ncommand.\n</para>\n\n__print_map(generic)\n__print_map(index)\n__print_map(pager)\n__print_map(alias)\n__print_map(query)\n__print_map(attachment)\n__print_map(compose)\n__print_map(postpone)\n__print_map(browser)\n__print_map(pgp)\n__print_map(smime)\n__print_map(mixmaster)\n__print_map(editor)\n\n</sect1>\n\n</chapter>\n\n<chapter id=\"miscellany\">\n<title>Miscellany</title>\n\n<sect1 id=\"acknowledgements\">\n<title>Acknowledgements</title>\n\n<para>\nKari Hurtta <email>kari.hurtta@fmi.fi</email> co-developed the original\nMIME parsing code back in the ELM-ME days.\n</para>\n\n<para>\nThe following people have been very helpful to the development of Mutt:\n</para>\n\n<itemizedlist>\n<listitem><para>Vikas Agnihotri <email>vikasa@writeme.com</email></para></listitem>\n<listitem><para>Francois Berjon <email>Francois.Berjon@aar.alcatel-alsthom.fr</email></para></listitem>\n<listitem><para>Aric Blumer <email>aric@fore.com</email></para></listitem>\n<listitem><para>John Capo <email>jc@irbs.com</email></para></listitem>\n<listitem><para>David Champion <email>dgc@uchicago.edu</email></para></listitem>\n<listitem><para>Brendan Cully <email>brendan@kublai.com</email></para></listitem>\n<listitem><para>Liviu Daia <email>daia@stoilow.imar.ro</email></para></listitem>\n<listitem><para>Thomas E. Dickey <email>dickey@herndon4.his.com</email></para></listitem>\n<listitem><para>David DeSimone <email>fox@convex.hp.com</email></para></listitem>\n<listitem><para>Nickolay N. Dudorov <email>nnd@wint.itfs.nsk.su</email></para></listitem>\n<listitem><para>Ruslan Ermilov <email>ru@freebsd.org</email></para></listitem>\n<listitem><para>Edmund Grimley Evans <email>edmundo@rano.org</email></para></listitem>\n<listitem><para>Michael Finken <email>finken@conware.de</email></para></listitem>\n<listitem><para>Sven Guckes <email>guckes@math.fu-berlin.de</email></para></listitem>\n<listitem><para>Lars Hecking <email>lhecking@nmrc.ie</email></para></listitem>\n<listitem><para>Mark Holloman <email>holloman@nando.net</email></para></listitem>\n<listitem><para>Andreas Holzmann <email>holzmann@fmi.uni-passau.de</email></para></listitem>\n<listitem><para>Marco d'Itri <email>md@linux.it</email></para></listitem>\n<listitem><para>Bj&ouml;rn Jacke <email>bjacke@suse.com</email></para></listitem>\n<listitem><para>Byrial Jensen <email>byrial@image.dk</email></para></listitem>\n<listitem><para>David Jeske <email>jeske@igcom.net</email></para></listitem>\n<listitem><para>Christophe Kalt <email>kalt@hugo.int-evry.fr</email></para></listitem>\n<listitem><para>Tommi Komulainen <email>Tommi.Komulainen@iki.fi</email></para></listitem>\n<listitem><para>Felix von Leitner (a.k.a <quote>Fefe</quote>) <email>leitner@math.fu-berlin.de</email></para></listitem>\n<listitem><para>Brandon Long <email>blong@fiction.net</email></para></listitem>\n<listitem><para>Jimmy M&auml;kel&auml; <email>jmy@flashback.net</email></para></listitem>\n<listitem><para>Lars Marowsky-Bree <email>lmb@pointer.in-minden.de</email></para></listitem>\n<listitem><para>Thomas <quote>Mike</quote> Michlmayr <email>mike@cosy.sbg.ac.at</email></para></listitem>\n<listitem><para>Andrew W. Nosenko <email>awn@bcs.zp.ua</email></para></listitem>\n<listitem><para>David O'Brien <email>obrien@Nuxi.cs.ucdavis.edu</email></para></listitem>\n<listitem><para>Clint Olsen <email>olsenc@ichips.intel.com</email></para></listitem>\n<listitem><para>Park Myeong Seok <email>pms@romance.kaist.ac.kr</email></para></listitem>\n<listitem><para>Thomas Parmelan <email>tom@ankh.fr.eu.org</email></para></listitem>\n<listitem><para>Ollivier Robert <email>roberto@keltia.freenix.fr</email></para></listitem>\n<listitem><para>Thomas Roessler <email>roessler@does-not-exist.org</email></para></listitem>\n<listitem><para>Roland Rosenfeld <email>roland@spinnaker.de</email></para></listitem>\n<listitem><para>Rocco Rutte <email>pdmef@gmx.net</email></para></listitem>\n<listitem><para>TAKIZAWA Takashi <email>taki@luna.email.ne.jp</email></para></listitem>\n<listitem><para>Allain Thivillon <email>Allain.Thivillon@alma.fr</email></para></listitem>\n<listitem><para>Gero Treuner <email>gero@70t.de</email></para></listitem>\n<listitem><para>Vsevolod Volkov <email>vvv@lucky.net</email></para></listitem>\n<listitem><para>Ken Weinert <email>kenw@ihs.com</email></para></listitem>\n</itemizedlist>\n\n</sect1>\n\n<sect1 id=\"about\">\n<title>About This Document</title>\n\n<para>\nThis document was written in <ulink\nurl=\"http://docbook.sourceforge.net\">DocBook</ulink>, and then rendered\nusing the <ulink url=\"http://xmlsoft.org/XSLT/\">Gnome XSLT\ntoolkit</ulink>.\n</para>\n\n</sect1>\n\n</chapter>\n\n</book>\n"
  },
  {
    "path": "doc/mbox.man",
    "content": "'\\\" t\n.\\\" -*-nroff-*-\n.\\\"\n.\\\"     Copyright (C) 2000 Thomas Roessler <roessler@does-not-exist.org>\n.\\\"\n.\\\"\tThis document is in the public domain and may be distributed and\n.\\\"\tchanged arbitrarily.\n.\\\"\n.TH mbox 5 \"February 19th, 2002\" Unix \"User Manuals\"\n.\\\"\n.SH NAME\nmbox \\- Format for mail message storage.\n.\\\"\n.SH DESCRIPTION\nThis document describes the format traditionally used by Unix hosts\nto store mail messages locally.\n.B mbox\nfiles typically reside in the system's mail spool, under various\nnames in users' Mail directories, and under the name\n.B mbox\nin users' home directories.\n.PP\nAn\n.B mbox\nis a text file containing an arbitrary number of e-mail messages.\nEach message consists of a postmark, followed by an e-mail message\nformatted according to \\fBRFC822\\fP, \\fBRFC2822\\fP. The file format\nis line-oriented. Lines are separated by line feed characters (ASCII 10).\n.PP\nA postmark line consists of the four characters \"From\", followed by\na space character, followed by the message's envelope sender\naddress, followed by whitespace, and followed by a time stamp. This\nline is often called From_ line.\n.PP\nThe sender address is expected to be\n.B addr-spec\nas defined in \\fBRFC2822\\fP 3.4.1. The date is expected to be\n.B date-time\nas output by\n.BR asctime(3) .\nFor compatibility reasons with legacy software, two-digit years\ngreater than or equal to 70 should be interpreted as the years\n1970+, while two-digit years less than 70 should be interpreted as\nthe years 2000-2069. Software reading files in this format should\nalso be prepared to accept non-numeric timezone information such as\n\"CET DST\" for Central European Time, daylight saving time.\n.PP\nExample:\n.IP \"\" 1\n>From example@example.com Fri Jun 23 02:56:55 2000\n.PP\nIn order to avoid misinterpretation of lines in message bodies\nwhich begin with the four characters \"From\", followed by a space\ncharacter, the mail delivery agent must quote any occurrence\nof \"From \" at the start of a body line.\n.sp\nThere are two different quoting schemes, the first (\\fBMBOXO\\fP) only\nquotes plain \"From \" lines in the body by prepending a '>' to the\nline; the second (\\fBMBOXRD\\fP) also quotes already quoted \"From \"\nlines by prepending a '>' (i.e. \">From \", \">>From \", ...). The later\nhas the advantage that lines like\n.IP \"\" 1\n>From the command line you can use the '\\-p' option\n.PP\naren't dequoted wrongly as a \\fBMBOXRD\\fP-MDA would turn the line\ninto\n.IP \"\" 1\n>>From the command line you can use the '\\-p' option\n.PP\nbefore storing it. Besides \\fBMBOXO\\fP and \\fBMBOXRD\\fP there is also\n\\fBMBOXCL\\fP which is \\fBMBOXO\\fP with a \"Content-Length:\"\\-field with the\nnumber of bytes in the message body; some MUAs (like\n.BR mutt (1))\ndo automatically transform \\fBMBOXO\\fP mailboxes into \\fBMBOXCL\\fP ones when\never they write them back as \\fBMBOXCL\\fP can be read by any \\fBMBOXO\\fP-MUA\nwithout any problems.\n.PP\nIf the modification-time (usually determined via\n.BR stat (2))\nof a nonempty\n.B mbox\nfile is greater than the access-time the file has new mail. Many MUAs\nplace a Status: header in each message to indicate which messages have\nalready been read.\n.\\\"\n.SH LOCKING\nSince\n.B mbox\nfiles are frequently accessed by multiple programs in parallel,\n.B mbox\nfiles should generally not be accessed without locking.\n.PP\nThree different locking mechanisms (and combinations thereof) are in\ngeneral use:\n.IP \"\\(bu\"\n.BR fcntl (2)\nlocking is mostly used on recent, POSIX-compliant systems. Use of\nthis locking method is, in particular, advisable if\n.B mbox\nfiles are accessed through the Network File System (NFS), since it\nseems the only way to reliably invalidate NFS clients' caches.\n.IP \"\\(bu\"\n.BR flock (2)\nlocking is mostly used on BSD-based systems.\n.IP \"\\(bu\"\nDotlocking is used on all kinds of systems. In order to lock an\n.B mbox\nfile named \\fIfolder\\fR, an application first creates a temporary file\nwith a unique name in the directory in which the\n\\fIfolder\\fR resides. The application then tries to use the\n.BR link (2)\nsystem call to create a hard link named \\fIfolder.lock\\fR\nto the temporary file. The success of the\n.BR link (2)\nsystem call should be additionally verified using\n.BR stat (2)\ncalls. If the link has succeeded, the mail folder is considered\ndotlocked. The temporary file can then safely be unlinked.\n.IP \"\"\nIn order to release the lock, an application just unlinks the\n\\fIfolder.lock\\fR file.\n.PP\nIf multiple methods are combined, implementors should make sure to\nuse the non-blocking variants of the\n.BR fcntl (2)\nand\n.BR flock (2)\nsystem calls in order to avoid deadlocks.\n.PP\nIf multiple methods are combined, an\n.B mbox\nfile must not be considered to have been successfully locked before\nall individual locks were obtained. When one of the individual\nlocking methods fails, an application should release all locks it\nacquired successfully, and restart the entire locking procedure from\nthe beginning, after a suitable delay.\n.PP\nThe locking mechanism used on a particular system is a matter of\nlocal policy, and should be consistently used by all applications\ninstalled on the system which access\n.B mbox\nfiles. Failure to do so may result in loss of e-mail data, and in\ncorrupted\n.B mbox\nfiles.\n.\\\"\n.SH FILES\n.IR /var/spool/mail/$LOGNAME\n.RS\n\\fB$LOGNAME\\fP's incoming mail folder.\n.RE\n.PP\n.IR $HOME/mbox\n.RS\nuser's archived mail messages, in his \\fB$HOME\\fP directory.\n.RE\n.PP\n.IR $HOME/Mail/\n.RS\nA directory in user's \\fB$HOME\\fP directory which is commonly used to hold\n.B mbox\nformat folders.\n.RE\n.PP\n.\\\"\n.SH \"SEE ALSO\"\n.BR mutt (1),\n.BR fcntl (2),\n.BR flock (2),\n.BR link (2),\n.BR stat (2),\n.BR asctime (3),\n.BR maildir (5),\n.BR mmdf (5),\n.BR RFC822 ,\n.BR RFC976 ,\n.BR RFC2822\n.\\\"\n.SH AUTHOR\nThomas Roessler <roessler@does-not-exist.org>, Urs Janssen <urs@tin.org>\n.\\\"\n.SH HISTORY\nThe\n.B mbox\nformat occurred in Version 6 AT&T Unix.\n.br\nA variant of this format was documented in \\fBRFC976\\fP.\n"
  },
  {
    "path": "doc/mmdf.man",
    "content": ".\\\" Project   : tin\n.\\\" Module    : mmdf.5\n.\\\" Author    : U. Janssen\n.\\\" Created   : 2002-02-18\n.\\\" Updated   :\n.\\\" Notes     : needs a lot of work\n.\\\"\n.TH mmdf 5 \"February 18th, 2002\" \"Unix\" \"User Manuals\"\n.\\\"\n.SH NAME\nMMDF \\- Multi\\-channel Memorandum Distribution Facility mailbox format\n.\\\"\n.SH DESCRIPTION\nThis document describes the\n.B MMDF\nmailbox format used by some MTAs and MUAs (i.e.\n.BR scomail (1))\nto store mail messages locally.\n.PP\nAn\n.B MMDF\nmailbox is a text file containing an arbitrary number of e-mail messages.\nEach message consists of a postmark, followed by an e-mail message formatted\naccording to \\fBRFC822\\fP / \\fBRFC2822\\fP, followed by a postmark. The file\nformat is line-oriented. Lines are separated by line feed characters (ASCII\n10). A postmark line consists of the four characters \"^A^A^A^A\" (Control-A;\nASCII 1).\n.TP\nExample of a \\fBMMDF\\fP mailbox holding two mails:\n.RS\n.nf\n.sp\n^A^A^A^A\n.br\nFrom: example@example.com\n.br\nTo: example@example.org\n.br\nSubject: test\n.br\n.sp\n.br\n>From what I learned about the MMDF-format:\n.br\n.br\n^A^A^A^A\n.br\n^A^A^A^A\n.br\nFrom: example@example.com\n.br\nTo: example@example.org\n.br\nSubject: test 2\n.br\n.sp\n.br\nbar\n.br\n^A^A^A^A\n.fi\n.RE\n.PP\nIn contrast to most other single file mailbox formats like\nMBOXO and MBOXRD (see\n.BR mbox (5))\nthere is no need to quote/dequote \"From \"\\-lines in\n.B MMDF\nmailboxes as such lines have no special meaning in this format.\n.PP\nIf the modification-time (usually determined via\n.BR stat (2))\nof a nonempty mailbox file is greater than the access-time\nthe file has new mail. Many MUAs place a Status: header in\neach message to indicate which messages have already been\nread.\n.\\\"\n.SH LOCKING\nSince\n.B MMDF\nfiles are frequently accessed by multiple programs in parallel,\n.B MMDF\nfiles should generally not be accessed without locking.\n.PP\nThree different locking mechanisms (and combinations thereof) are in\ngeneral use:\n.IP \"\\(bu\"\n.BR fcntl (2)\nlocking is mostly used on recent, POSIX-compliant systems. Use of\nthis locking method is, in particular, advisable if\n.B MMDF\nfiles are accessed through the Network File System (NFS), since it\nseems the only way to reliably invalidate NFS clients' caches.\n.IP \"\\(bu\"\n.BR flock (2)\nlocking is mostly used on BSD-based systems.\n.IP \"\\(bu\"\nDotlocking is used on all kinds of systems. In order to lock an\n.B MMDF\nfile named \\fIfolder\\fR, an application first creates a temporary file\nwith a unique name in the directory in which the\n\\fIfolder\\fR resides. The application then tries to use the\n.BR link (2)\nsystem call to create a hard link named \\fIfolder.lock\\fR\nto the temporary file. The success of the\n.BR link (2)\nsystem call should be additionally verified using\n.BR stat (2)\ncalls. If the link has succeeded, the mail folder is considered\ndotlocked. The temporary file can then safely be unlinked.\n.IP \"\"\nIn order to release the lock, an application just unlinks the\n\\fIfolder.lock\\fR file.\n.PP\nIf multiple methods are combined, implementors should make sure to\nuse the non-blocking variants of the\n.BR fcntl (2)\nand\n.BR flock (2)\nsystem calls in order to avoid deadlocks.\n.PP\nIf multiple methods are combined, an\n.B MMDF\nfile must not be considered to have been successfully locked before\nall individual locks were obtained. When one of the individual\nlocking methods fails, an application should release all locks it\nacquired successfully, and restart the entire locking procedure from\nthe beginning, after a suitable delay.\n.PP\nThe locking mechanism used on a particular system is a matter of\nlocal policy, and should be consistently used by all applications\ninstalled on the system which access\n.B MMDF\nfiles. Failure to do so may result in loss of e-mail data, and in\ncorrupted\n.B MMDF\nfiles.\n.\\\"\n.\\\" .SH FILES\n.\\\" /usr/spool/mmdf/lock/home\n.\\\" $HOME/Mail/\n.\\\"\n.\\\" .SH SECURITY\n.\\\"\n.SH \"CONFORMING TO\"\n.B MMDF\nis not part of any currently supported standard.\n.\\\"\n.SH HISTORY\n.B MMDF\nwas developed at the University of Delaware by Dave Crocker.\n.\\\"\n.SH \"SEE ALSO\"\n.BR scomail (1),\n.BR fcntl (2),\n.BR flock (2),\n.BR link (2),\n.BR stat (2),\n.BR mbox (5),\n.BR RFC822 ,\n.BR RFC2822\n\n.SH AUTHOR\nUrs Janssen <urs@tin.org>\n"
  },
  {
    "path": "doc/mutt.css",
    "content": "body { margin-left:2%; margin-right:2%; font-family:serif; }\n.toc, .list-of-tables, .list-of-examples { font-family:sans-serif; }\nh1, h2, h3, h4, h5, h6 { font-family:sans-serif; }\np { text-align:justify; }\ndiv.table p.title, div.example p.title { font-size:smaller; font-family:sans-serif; }\n.email, .email a { font-family:monospace; }\ndiv.table-contents table, div.informaltable table { border-collapse:collapse; border:1px solid #c0c0c0; }\ndiv.table-contents table td, div.informaltable td, div.table-contents table th, div.informaltable table th { padding:5px; text-align:left; }\ndiv.table-contents table th, div.informaltable table th {\n    font-family:sans-serif;\n    background:#d0d0d0;\n    font-weight:normal;\n    vertical-align:top;\n}\ndiv.cmdsynopsis { border-left:1px solid #707070; padding-left:5px; }\nli div.cmdsynopsis { border-left:none; padding-left:0px; }\npre.screen, div.note { background:#f0f0f0; border:1px solid #c0c0c0; padding:5px; margin-left:2%; margin-right:2%; }\ndiv.example p.title { margin-left:2%; }\ndiv.note h3 { font-size:small; font-style:italic; font-variant: small-caps; }\ndiv.note h3:after { content: \":\" }\ndiv.note { margin-bottom: 5px; }\n.command { font-family: monospace; font-weight: normal; }\n.command strong { font-weight: normal; }\ntr { vertical-align: top; }\n.comment { color:#707070; }\n"
  },
  {
    "path": "doc/mutt.man",
    "content": ".\\\" -*-nroff-*-\n.\\\"\n.\\\"\n.\\\"     Copyright (C) 1996-2016 Michael R. Elkins <me@cs.hmc.edu>\n.\\\" \n.\\\"     This program is free software; you can redistribute it and/or modify\n.\\\"     it under the terms of the GNU General Public License as published by\n.\\\"     the Free Software Foundation; either version 2 of the License, or\n.\\\"     (at your option) any later version.\n.\\\" \n.\\\"     This program is distributed in the hope that it will be useful,\n.\\\"     but WITHOUT ANY WARRANTY; without even the implied warranty of\n.\\\"     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n.\\\"     GNU General Public License for more details.\n.\\\" \n.\\\"     You should have received a copy of the GNU General Public License\n.\\\"     along with this program; if not, write to the Free Software\n.\\\"     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n.\\\"\n.TH mutt 1 \"January 2009\" Unix \"User Manuals\"\n.SH NAME\nmutt \\- The Mutt Mail User Agent\n.SH SYNOPSIS\n.PP\n.B mutt\n[\\-nRyzZ]\n[\\-e \\fIcmd\\fP] [\\-F \\fIfile\\fP] [\\-m \\fItype\\fP] [\\-f \\fIfile\\fP]\n.PP\n.B mutt \n[\\-Enx] \n[\\-e \\fIcmd\\fP] \n[\\-F \\fIfile\\fP]\n[\\-H \\fIfile\\fP]\n[\\-i \\fIfile\\fP]\n[\\-s \\fIsubj\\fP]\n[\\-b \\fIaddr\\fP]\n[\\-c \\fIaddr\\fP]\n[\\-a \\fIfile\\fP [...] \\-\\-]\n\\fIaddr|mailto_url\\fP [...]\n.PP\n.B mutt \n[\\-nx] \n[\\-e \\fIcmd\\fP] \n[\\-F \\fIfile\\fP]\n[\\-s \\fIsubj\\fP]\n[\\-b \\fIaddr\\fP]\n[\\-c \\fIaddr\\fP]\n[\\-a \\fIfile\\fP [...] \\-\\-]\n\\fIaddr|mailto_url\\fP [...]\n< message\n.PP\n.B mutt\n[\\-n] [\\-e \\fIcmd\\fP] [\\-F \\fIfile\\fP] \\-p\n.PP\n.B mutt\n[\\-n] [\\-e \\fIcmd\\fP] [\\-F \\fIfile\\fP] \\-A \\fIalias\\fP\n.PP\n.B mutt\n[\\-n] [\\-e \\fIcmd\\fP] [\\-F \\fIfile\\fP] \\-Q \\fIquery\\fP\n.PP\n.B mutt \n\\-v[v]\n.PP\n.B mutt \n\\-D\n.SH DESCRIPTION\n.PP\nMutt is a small but very powerful text based program for reading and sending electronic\nmail under unix operating systems, including support for color terminals, MIME,\nOpenPGP, and a threaded sorting mode.\n.PP\n.I Note:\n.IR\nThis manual page gives a brief overview of mutt's command line\noptions. You should find a copy of the full manual in @docdir@, in\ntext, HTML, and/or PDF format.\n.SH OPTIONS\n.PP\n.IP \"-A \\fIalias\\fP\"\nAn expanded version of the given alias is passed to stdout.\n.IP \"-a \\fIfile\\fP [...]\"\nAttach a file to your message using MIME.\nWhen attaching single or multiple files, separating filenames and recipient addresses with\n\"\\-\\-\" is mandatory, e.g. \\fBmutt \\-a image.jpg \\-\\- addr1\\fP or\n\\fBmutt \\-a img.jpg *.png \\-\\- addr1 addr2\\fP.\nThe \\-a option must be placed at the end of command line options.\n.IP \"-b \\fIaddress\\fP\"\nSpecify a blind-carbon-copy (BCC) recipient\n.IP \"-c \\fIaddress\\fP\"\nSpecify a carbon-copy (CC) recipient\n.IP \"-d \\fIlevel\\fP\"\nIf mutt was compiled with +DEBUG log debugging output to ~/.muttdebug0.\n\\fILevel\\fP can range from 1-5 and effects verbosity. A value of 2 is\nrecommended.\n.IP \"-D\"\nPrint the value of all configuration options to stdout.\n.IP \"-E\"\nCauses the draft file specified by -H or include file specified by -i\nto be edited during message composition.\n.IP \"-e \\fIcommand\\fP\"\nSpecify a configuration command to be run after processing of initialization\nfiles.\n.IP \"-f \\fImailbox\\fP\"\nSpecify which mailbox to load.\n.IP \"-F \\fImuttrc\\fP\"\nSpecify an initialization file to read instead of ~/.muttrc\n.IP \"-h\"\nDisplay help.\n.IP \"-H \\fIdraft\\fP\"\nSpecify a draft file which contains header and body to use to send a\nmessage.\n.IP \"-i \\fIinclude\\fP\"\nSpecify a file to include into the body of a message.\n.IP \"-m \\fItype\\fP       \"\nspecify a default mailbox type for newly created folders.\n.IP \"-n\"\nCauses Mutt to bypass the system configuration file.\n.IP \"-p\"\nResume a postponed message.\n.IP \"-Q \\fIquery\\fP\"\nQuery a configuration variables value.  The query is executed after\nall configuration files have been parsed, and any commands given on\nthe command line have been executed.\n.IP \"-R\"\nOpen a mailbox in \\fIread-only\\fP mode.\n.IP \"-s \\fIsubject\\fP\"\nSpecify the subject of the message.\n.IP \"-v\"\nDisplay the Mutt version number and compile-time definitions.\n.IP \"-vv\"\nDisplay license and copyright information.\n.IP \"-x\"\nEmulate the mailx compose mode.\n.IP \"-y\"\nStart Mutt with a listing of all mailboxes specified by the \\fImailboxes\\fP\ncommand.\n.IP \"-z\"\nWhen used with \\-f, causes Mutt not to start if there are no messages in the\nmailbox.\n.IP \"-Z\"\nCauses Mutt to open the first mailbox specified by the \\fImailboxes\\fP\ncommand which contains new mail.\n.IP \"--\"\nTreat remaining arguments as \\fIaddr\\fP even if they start with a dash.\nSee also \"\\-a\" above.\n.SH ENVIRONMENT\n.PP\n.IP \"EDITOR\"\nSpecifies the editor to use if VISUAL is unset.\n.IP \"EMAIL\"\nThe user's e-mail address.\n.IP \"HOME\"\nFull path of the user's home directory.\n.IP \"MAIL\"\nFull path of the user's spool mailbox.\n.IP \"MAILDIR\"\nFull path of the user's spool mailbox if MAIL is unset.  Commonly used when the spool\nmailbox is a\n.B maildir (5)\nfolder.\n.IP \"MAILCAPS\"\nPath to search for mailcap files.\n.IP \"MM_NOASK\"\nIf this variable is set, mailcap are always used without prompting first.\n.IP \"PGPPATH\"\nDirectory in which the user's PGP public keyring can be found.  When used with\nthe original PGP program, mutt and\n.B pgpring (1)\nrely on this being set.\n.IP \"TMPDIR\"\nDirectory in which temporary files are created.\n.IP \"REPLYTO\"\nDefault Reply-To address.\n.IP \"VISUAL\"\nSpecifies the editor to use when composing messages.\n.SH FILES\n.PP\n.IP \"~/.muttrc or ~/.mutt/muttrc\"\nUser configuration file.\n.IP \"@sysconfdir@/Muttrc\"\nSystem-wide configuration file.\n.IP \"/tmp/muttXXXXXX\"\nTemporary files created by Mutt.\n.IP \"~/.mailcap\"\nUser definition for handling non-text MIME types.\n.IP \"@sysconfdir@/mailcap\"\nSystem definition for handling non-text MIME types.\n.IP \"~/.mime.types\"\nUser's personal mapping between MIME types and file extensions.\n.IP \"@sysconfdir@/mime.types\"\nSystem mapping between MIME types and file extensions.\n.IP \"@bindir@/mutt_dotlock\"\nThe privileged dotlocking program.\n.IP \"@docdir@/manual.txt\"\nThe Mutt manual.\n.SH BUGS\n.PP\nNone.  Mutts have fleas, not bugs.\n.SH FLEAS\n.PP\nSuspend/resume while editing a file with an external editor does not work\nunder SunOS 4.x if you use the curses lib in /usr/5lib.  It \\fIdoes\\fP work\nwith the S-Lang library, however.\n.PP\nResizing the screen while using an external pager causes Mutt to go haywire\non some systems.\n.PP\nSuspend/resume does not work under Ultrix.\n.PP\nThe help line for the index menu is not updated if you change the bindings\nfor one of the functions listed while Mutt is running.\n.PP\nFor a more up-to-date list of bugs, errm, fleas, please visit the\nmutt project's bug tracking system under http://bugs.mutt.org/.\n.SH NO WARRANTIES\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n.SH SEE ALSO\n.PP\n.BR curses (3),\n.BR mailcap (5),\n.BR maildir (5),\n.BR mbox (5),\n.BR mutt_dotlock (1),\n.BR muttrc (5),\n.BR ncurses (3),\n.BR sendmail (1),\n.BR smail (1).\n.PP\nMutt Home Page: http://www.mutt.org/\n.PP\nThe Mutt manual\n.SH AUTHOR\n.PP\nMichael Elkins, and others.  Use <mutt-dev@mutt.org> to contact\nthe developers.\n"
  },
  {
    "path": "doc/mutt.pwl",
    "content": "personal_ws-1.1 en 515 \nunconvertable\nfIask\nfPcollapsed\nnosubject\nretainable\nmulti\nCCs\naol\nxysize\nonlyfirst\nvcard\nDCC\nPGPPASSFD\ndelim\nfCmultipart\nfIoptional\nDebian's\nBourne\nfCtext\ndat\ncfgdir\nencodings\nBackSpace\nfCstrftime\nunmono\nungroup\nfilenames\nmmdf\nformatoptions\nremail\nusernames\nusesystemcerts\nhdrs\nbrightred\nbol\ndel\nsubexpressions\nfCsamples\nsubthread\ninvsmart\nunsubscribe\nautoencrypt\ncmd\ndes\nGmbH\nresizes\ndev\nIANA\nabled\nfIfull\nproto\nawk\nimapd\nfBplease\nstartup\ntokyocabinet\nfCSTARTTLS\ncharset\nbackends\nforw\nimaps\nfcc\nsubtree\nanytopnm\nOpenSSL\nCC'ed\ncc'ed\nexpandos\nconfirmappend\ngpgme\npathname\nunalternates\nSortMethods\nCTYPE\ncrt\nnetizens\nDNS\nsubparts\nboolean\nkeyid\nfIC\npbmtoascii\nPerlMX\nfIpager\nautopgp\nsmtp\nfBunread\ngetkeys\ndsn\nExim\neol\nmutthistory\nunhdr\nfISetting\nkeepalive\ntheguys\nopenURL\ndotlock\nesc\neow\nfBmay\ngid\neps\nbitmime\ngif\nfCenscript\nundeleted\nsubdirectories\nbuiltin\nmailspool\ncrypto\nxdigit\nuncolor\neuc\nfBdeprecated\nfmt\nfIdelay\nCOLORFGBG\nhdr\nIDNs\nunignore\nfCpgpring\nexpr\nfrm\npreconnect\nfCgpg\nclearsigned\nfCstat\nidn\nsubshell\ngpg\nEzip\nreplysignencrypted\ngecos\ngetmail\nESMTP\nansi\nfIsusp\nGNU's\nregex\nPostfix\ncheckinterval\nFuz\nfCsmime\nfCapplication\nsubprocess\nfImust\nmailto\ngnupg\nGnuPG\nfIfolder\nprepending\norganisation\ntlsv\nTLSv\ntmpdir\napop\nMsgs\ncomposetyped\njis\nfBnot\ninv\ninbox\nIRC\nruntime\nsslv\nSSLv\nfIthreads\nOnline\nipv\nIPv\njoe\niso\nterminal's\npasswd\nreplyencrypt\nUNIX's\nPureMessage\nprintf\nautosign\nunscore\nRunningFirefox\ncopiousoutput\nunauto\nfIbefore\nmetadata\nsecring\ngunzip\nnospam\nkoi\nnroff\negrep\nLuser\nbacktick\nfCprintf\nsendmail\nformfeed\ndefs\nsubkeys\nfInew\nfCxterm\nmetacharacters\nnoop\nLIBIDN\nthere're\nmozilla\nunattachments\nTripleDES\nprepend\nmh's\nfBstrongly\nnetpbm\nysize\nstdout\nfIusername\nbackend\nfCmutt\nlpr\nimap\nNFS\nmakedoc\nCApath\nmoe\nqdbm\nstdin\nfCmessage\npreauthenticated\noem\nNIS\nfIold\nunsubscribed\nkeybindings\nspoolfile\nfInot\nunmailboxes\npunct\nmailhost\nverifyable\nDiffie\nmuttdude\nMuttDude\nfBWarning\neuler\nsubthreads\nMTA\nlastname\nmsg\nlightgray\nMUA\nPGP's\nSYSCONFDIR\nsmime\nautosmime\nAtts\nhdrdefault\nfirefox\nsmarthost\npgp\njpegs\nauth\nunmy\nstarttls\npka\nflowable\nfIindex\nvariable's\nservernoise\npkcs\nOR'd\nfirstname\nispell\npng\nNTLM\nclearsign\nRfC\nrfc\nsyntaxes\nuntag\nresolv\nfIsuccess\nhostname\nfIset\nfBNote\nlookup\nhtml\nmuttrc\nQmail\nconfig\nspammers\nfCset\nhcache'd\nsep\ngzcat\ncond\nenscript\nconf\nsig\nxsize\nmaildirs\nfImaildir\nascii\nfCLAST\nsubexpression\npubring\nfBif\nldap\nnoaskbcc\nwiki\nunsetting\nsubfolders\nFCCs\nfCcopiousoutput\nxtitle\nwildcards\nrelatime\nGnuTLS\ngnutls\nAfterwards\nundelete\nupcase\nrealname\ncumulate\nuncollapse\nfCssh\nuid\npnmtops\ntls\ntmp\nssl\nmailx\nAnytown\nfIevery\nGETADDRINFO\nstr\nmetoo\nfIelse\nfInever\nPOSIX\nstevef\npipelined\nbrightdefault\njpeg\nquadoption\ncommentable\ntimestamp\nrepl\nurl\nmisconfigured\nPathnames\nUTF\nutf\nxanim\nSpamAssassin\nusr\ninternet\nfIUnset\nfIunset\nfIyes\nwhitespace\njuser\nreplysign\nsubdirectory\nmixmaster\nxpaint\nprev\nurlview\nsasl\nmetamail\nVRML\ngssapi\ncommand's\npagedown\nPageDown\nRunningX\nfIfirst\nfeatureful\nxmhcache\nmimetype\nfCuname\ncA\nchecksum\nreplyinline\nunlists\ndowncase\ncb\nformatter\ngdbm\nfIyou\nfilename\naskcc\nde\nkremvax\nmbox\ndh\nbacktab\nfIgenerates\ndl\nPageDn\nfC\nfetchmail\nwrapmargin\nmailcap\nmyscript\nFi\nfI\nCx\ndt\nbuffy\nmanny\napplica\nautoview\ndiskspace\nfo\nfP\nfIif\nfIneedsterminal\neV\nsmtpd\nie\nppmtopgm\naddr\nunalternative\nstuffes\nil\nPKGDATADIR\ngz\nunmime\nsmtps\nfreshmeat\njp\nfIMH\npreprocessing\nfIsequence\nmd\nmetacharacter\nmh\nbackticks\nnF\nzsh\nlibexec\nfIno\nremailers\nremailer's\nph\nmx\nneedsterminal\nrc\npseudoheader\nalnum\nunalias\nqi\nnz\nRoessler\nps\nfBDON'T\nTCFL\nhcache\nmaildir\nelkins\nfIhdrs\nte\nfIexternal\ntf\nsubfolder\nth\nbbdb\nrx\nfIun\nSomeoneElse\nautoedit\nun\npageup\nPageUp\ninline\niconv\nxf\nfIACS\nUW\npgmtopbm\nautoinline\nOpenPGP\nsigs\nfIfailure\nnametemplate\nlocalhost\nmultipart\ncachedir\nremailer\nYY\nfilesystems\npnmscale\nbcc\nsubstrings\nsubstring\nprocmail\nbdb\nuname\nfIand\nfCsendmail\naif\nCAfile\nfIenvelope\naifc\nconfirmcreate\naiff\nusername\nprepended\nfIFrom\npassphrase\nexpando\nprepends\nlogin\ncntrl\naskbcc\npagesize\n"
  },
  {
    "path": "doc/mutt.xsl",
    "content": "<?xml version=\"1.0\"?>\n<!DOCTYPE xsl:stylesheet [\n<!ENTITY css SYSTEM \"mutt.css\">\n]>\n<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">\n  <xsl:param name=\"section.autolabel\" select=\"1\"></xsl:param>\n  <xsl:template name=\"user.head.content\">\n    <xsl:element name=\"style\">\n      <xsl:attribute name=\"type\">text/css</xsl:attribute>\n      &css;\n    </xsl:element>\n  </xsl:template>\n  <xsl:param name=\"admon.style\"/>\n</xsl:stylesheet>\n"
  },
  {
    "path": "doc/muttbug.man",
    "content": ".\\\" -*-nroff-*-\n.\\\"\n.\\\"\n.\\\"     Copyright (C) 1996-2000 Thomas Roessler <roessler@does-not-exist.org>\n.\\\" \n.\\\"     This program is free software; you can redistribute it and/or modify\n.\\\"     it under the terms of the GNU General Public License as published by\n.\\\"     the Free Software Foundation; either version 2 of the License, or\n.\\\"     (at your option) any later version.\n.\\\" \n.\\\"     This program is distributed in the hope that it will be useful,\n.\\\"     but WITHOUT ANY WARRANTY; without even the implied warranty of\n.\\\"     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n.\\\"     GNU General Public License for more details.\n.\\\" \n.\\\"     You should have received a copy of the GNU General Public License\n.\\\"     along with this program; if not, write to the Free Software\n.\\\"     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n.\\\"\n.TH flea 1 \"July 2000\" Unix \"User Manuals\"\n.SH NAME\nflea \\- Report a bug (or rather a flea) in mutt.\n.SH SYNOPSIS\n.PP\n.B flea\n.SH DESCRIPTION\n.PP\n.B flea\nis a shell script which helps you to submit a bug report against the \n.BR mutt (1)\nmail user agent.\n.PP\nIf you invoke \n.BR flea , \nyou'll first be prompted for a short\ndescription of the problem you experience.  This will be used as the\nbug report's subject line, so it should be concise, but informative.\n.PP\nYou are then asked to assign an initial severity level to the\nproblem you observe; \n.B flea\nwill give you a description which severity level is appropriate or\nnot.\n.PP\nThen, you are asked for the location of a core dump (normally named\n.BR core )\nwhich may have been left over by a crash of your \n.BR mutt (1).\nYou can just type \\(lqno\\(rq here, or you can enter the path leading \nto a core dump.\n.B flea\nwill try to use either\n.BR sdb (1),\n.BR dbx (1),\nor\n.BR gdb (1)\nto extract some information from this core dump which may be helpful\nto developers in order to determine the reason for the crash.\n.PP\nFinally, you are asked whether or not you want to include personal\nand system \n.BR mutt (1)\nconfiguration files with the bug report.  If at all possible, we\nurge you to answer these questions with \\(lqyes\\(rq, since a\nreference configuration makes it incredibly easier to track down a\nproblem.\n.PP\nIf you are using Debian GNU/Linux,\n.B flea\nwill now check whether or not \n.B mutt\nhas been installed as a Debian\npackage on your system, and suggest to file the bug against the\n.BR mutt (1)\nand Debian bug tracking systems.  This option was added since the \n.BR mutt (1)\nproject uses another instantiation of the Debian bug tracking\nsystem, so submitting bugs against both systems in one pass is\nsimple.\n.PP\nYou are then dropped into your favorite editor as determined by the \n.B EDITOR\nand\n.B VISUAL\nenvironment variables.  \n.PP\nPlease give us details about the problem in the empty space below\nthe line reading \\(lqPlease type your report below this line\\(rq.\nWe are most interested in precise information on what symptoms you\nobserve and what steps may be used to reproduce the bug.  Chances\nare that problems which can easily be reproduced will be fixed\nquickly.  So please take some time when filling out this part of the\ntemplate.\n.PP\nThe remainder of the template contains various kinds of information\ngathered from your system, including output of the\n.BR uname (1)\ncommand, output from\n.BR mutt (1)\nitself, and your system's \n.BR mutt (1)\nconfiguration files.  You may wish to browse through this part of\nthe bug report form in order to avoid leaking confidential\ninformation to the public.\n.PP\nIf you leave the editor, \n.B flea\nwill give you the option to review, re-edit, submit, or abandon your\nbug report.  If you decide to submit it, a mail message containing\nyour report will be sent to <fleas@mutt.org>.  You'll receive a\ncopy of this message.\n.PP\nWhile your bug report is being processed by the bug tracking system,\nyou will receive various e-mail messages from the bug tracking\nsystem informing you about what's going on: Once your bug report has\nbeen entered into the bug tracking system, it will be assigned a\nunique serial number about which you are informed via e-mail.  If\nyou wish to submit additional information about the bug, you can\njust send it to the address\n.BR fleas@mutt.org\nwith #\\fIserial\\fP in the subject.\n.PP\nLater, you will most likely receive questions from the developers\nabout the problem you observed, and you will eventually be informed\nthat your bug report has been closed.  This means that the bug has\nbeen fixed at least in the\n.BR hg (1)\nrepository.  If the answers you receive don't satisfy you, don't\nhesitate to contact the developers directly under\n.BR mutt-dev@mutt.org.\n.PP\nYou can also browse your bug report and all additional information\nand replies connected to it using the bug tracking system's Web\ninterface under the following URL:\nhttp://bugs.mutt.org/\n.SH\nENVIRONMENT\n.PP\n.B flea\nwill use the following environment variables:\n.IP \"EMAIL\"\nYour electronic mail address.  Will be used to set the bug report's\nFrom header, and to send you a copy of the report.\n.IP \"LOGNAME\"\nYour login name.  If the\n.B EMAIL\nenvironment variable isn't set, this will be used instead to send\nyou a copy of the report.  Setting the sender will be left to \n.BR sendmail (1)\non your system.\n.IP \"REPLYTO\"\nIf set, the bug report will contain a Reply-To header with the\ne-mail address contained in this environment variable.\n.IP \"ORGANIZATION\"\nIf set, the bug report will contain an Organization header with the\ncontents of this environment variable.\n.IP \"PAGER\"\nIf set, this environment variable will be expected to contain the\npath to your favorite pager for viewing the bug report.  If unset, \n.BR more (1)\nwill be used.\n.IP \"VISUAL\"\nIf set, this environment variable will be expected to contain the\npath to your favorite visual editor.\n.IP \"EDITOR\"\nIf set, this environment variable will be expected to contain the\npath to your favorite editor.  This variable is examined if and only\nif the \n.B VISUAL\nenvironment variable is unset.  If\n.B EDITOR\nis unset, \n.BR vi (1)\nwill be used to edit the bug report.\n.SH\nFILES\n.PP\n.IP \"core\"\nIf present, this file may contain a post-mortem memory dump of mutt.\nIt will be inspected using the debugger installed on your system.\n.SH \nSEE ALSO\n.PP\n.BR dbx (1),\n.BR gdb (1),\n.BR lynx (1),\n.BR mutt (1),\n.BR muttrc (5),\n.BR sdb (1),\n.BR sendmail (1),\n.BR uname (1),\n.BR vi (1)\n.PP\nThe mutt bug tracking system: http://bugs.mutt.org/\n.SH\nAUTHOR\n.PP\n.B flea\nand this manual page were written by Thomas Roessler\n<roessler@does-not-exist.org>.\n"
  },
  {
    "path": "doc/muttrc.cond-date",
    "content": "# Example Mutt config file for the 'index-color' feature.\n#\n# The default index_format is:\n#       '%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s'\n#\n# We replace the date field '%{%b %d}', giving:\nset index_format='%4C %Z %<[y?%<[m?%<[d?%[%H:%M ]&%[%a %d]>&%[%b %d]>&%[%m/%y ]> %-15.15L (%?l?%4l&%4c?) %s'\n\n# Test  Date Range  Format String  Example\n# --------------------------------------------\n# %[d   Today       %[%H:%M ]      12:34\n# %[m   This month  %[%a %d]       Thu 12\n# %[y   This year   %[%b %d]       Dec 10\n# -     Older       %[%m/%y ]      06/15\n\n# vim: syntax=muttrc\n"
  },
  {
    "path": "doc/muttrc.index-color",
    "content": "# Example Mutt config file for the 'index-color' feature.\n\n# Entire index line\ncolor index white black '.*'\n\n# Author name, %A %a %F %L %n\n\n# Give the author column a dark grey background\ncolor index_author default color234 '.*'\n\n# Highlight a particular from (~f)\ncolor index_author brightyellow color234 '~fRay Charles'\n\n# Message flags, %S %Z\n# Highlight the flags for flagged (~F) emails\ncolor index_flags default red '~F'\n\n# Subject, %s\n# Look for a particular subject (~s)\ncolor index_subject brightcyan default '~s\\(closes #[0-9]+\\)'\n\n# Number of messages in a collapsed thread, %M\ncolor index_collapsed default brightblue\n\n# Date field\ncolor index_date green default\n\n# Message label, %y %Y\ncolor index_label default brightgreen\n\n# Message number, %C\ncolor index_number red default\n\n# Message size, %c %l\ncolor index_size cyan default\n\n# vim: syntax=muttrc\n"
  },
  {
    "path": "doc/muttrc.man.head",
    "content": "'\\\" t\n.\\\" -*-nroff-*-\n.\\\"\n.\\\"     Copyright (C) 1996-2000 Michael R. Elkins <me@cs.hmc.edu>\n.\\\"\tCopyright (C) 1999-2000 Thomas Roessler <roessler@does-not-exist.org>\n.\\\" \n.\\\"     This program is free software; you can redistribute it and/or modify\n.\\\"     it under the terms of the GNU General Public License as published by\n.\\\"     the Free Software Foundation; either version 2 of the License, or\n.\\\"     (at your option) any later version.\n.\\\" \n.\\\"     This program is distributed in the hope that it will be useful,\n.\\\"     but WITHOUT ANY WARRANTY; without even the implied warranty of\n.\\\"     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n.\\\"     GNU General Public License for more details.\n.\\\" \n.\\\"     You should have received a copy of the GNU General Public License\n.\\\"     along with this program; if not, write to the Free Software\n.\\\"     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n.\\\"\n.de EX\n.nf\n.ft CW\n..\n.de EE\n.ft\n.fi\n..\n.TH muttrc 5 \"September 2002\" Unix \"User Manuals\"\n.SH NAME\nmuttrc \\- Configuration file for the Mutt Mail User Agent\n.SH DESCRIPTION\n.PP\nA mutt configuration file consists of a series of \\(lqcommands\\(rq.\nEach line of the file may contain one or more commands.  When\nmultiple commands are used, they must be separated by a semicolon\n(\\(lq\\fB;\\fP\\(rq).\n.PP\nThe hash mark, or pound sign (\\(lq\\fB#\\fP\\(rq), is used as a\n\\(lqcomment\\(rq character. You can use it to annotate your\ninitialization file. All text after the comment character to the end\nof the line is ignored.\n.PP\nSingle quotes (\\(lq\\fB'\\fP\\(rq) and double quotes (\\(lq\\fB\"\\fP\\(rq)\ncan be used to quote strings which contain spaces or other special\ncharacters.  The difference between the two types of quotes is\nsimilar to that of many popular shell programs, namely that a single\nquote is used to specify a literal string (one that is not\ninterpreted for shell variables or quoting with a backslash [see\nnext paragraph]), while double quotes indicate a string which\nshould be evaluated.  For example, backticks are evaluated inside of\ndouble quotes, but not single quotes.\n.PP\n\\fB\\(rs\\fP quotes the next character, just as in shells such as bash and zsh.\nFor example, if want to put quotes (\\(lq\\fB\"\\fP\\(rq) inside of a\nstring, you can use \\(lq\\fB\\(rs\\fP\\(rq to force the next character\nto be a literal instead of interpreted character.\n.PP\n\\(lq\\fB\\(rs\\(rs\\fP\\(rq means to insert a literal \\(lq\\fB\\(rs\\fP\\(rq into the\nline.  \\(lq\\fB\\(rsn\\fP\\(rq and \\(lq\\fB\\(rsr\\fP\\(rq have their usual\nC meanings of linefeed and carriage-return, respectively.\n.PP\nA \\(lq\\fB\\(rs\\fP\\(rq at the end of a line can be used to split commands over\nmultiple lines, provided that the split points don't appear in the\nmiddle of command names.\n.PP\nIt is also possible to substitute the output of a Unix command in an\ninitialization file.  This is accomplished by enclosing the command\nin backticks (\\fB`\\fP\\fIcommand\\fP\\fB`\\fP).\n.PP\nUNIX environment variables can be accessed like the way it is done in shells\nlike sh and bash: Prepend the name of the variable by a dollar\n(\\(lq\\fB\\(Do\\fP\\(rq) sign.\n.PP\n.SH COMMANDS\n.PP\n.nf\n\\fBalias\\fP [\\fB-group\\fP \\fIname\\fP [...]] \\fIkey\\fP \\fIaddress\\fP [\\fB,\\fP \\fIaddress\\fP [ ... ]]\n\\fBunalias\\fP [\\fB * \\fP | \\fIkey\\fP ]\n.fi\n.IP\n\\fBalias\\fP defines an alias \\fIkey\\fP for the given addresses. Each\n\\fIaddress\\fP will be resolved into either an email address (user@example.com)\nor a named email address (User Name <user@example.com>). The address may be specified in either format, or in the format \\(lquser@example.com (User\nName)\\(rq.\n\\fBunalias\\fP removes the alias corresponding to the given \\fIkey\\fP or\nall aliases when \\(lq\\fB*\\fP\\(rq is used as an argument. The optional\n\\fB-group\\fP argument to \\fBalias\\fP causes the aliased address(es) to be\nadded to the named \\fIgroup\\fP.\n.PP\n.nf\n\\fBgroup\\fP [\\fB-group\\fP \\fIname\\fP] [\\fB-rx\\fP \\fIEXPR\\fP [ \\fI...\\fP ]] [\\fB-addr\\fP \\fIaddress\\fP [ \\fI...\\fP ]]\n\\fBungroup\\fP [\\fB-group\\fP \\fIname\\fP ] [ \\fB*\\fP | [[\\fB-rx\\fP \\fIEXPR\\fP [ \\fI...\\fP ]] [\\fB-addr\\fP \\fIaddress\\fP [ \\fI...\\fP ]]]\n.fi\n.IP\n\\fBgroup\\fP is used to directly add either addresses or regular expressions to\nthe specified group or groups. The different categories of arguments to the\n\\fBgroup\\fP command can be in any order. The flags \\fI-rx\\fP and \\fI-addr\\fP\nspecify what the following strings (that cannot begin with a hyphen) should be\ninterpreted as: either a regular expression or an email address, respectively.\n\\fBungroup\\fP is used to remove addresses or regular expressions from the\nspecified group or groups. The syntax is similar to the \\fBgroup\\fP command,\nhowever the special character \\fB*\\fP can be used to empty a group of all of\nits contents.\n.IP\nThese address groups can also be created implicitly by the \\fBalias\\fP, \\fBlists\\fP,\n\\fBsubscribe\\fP and \\fBalternates\\fP commands by specifying the optional \\fI-group\\fP\noption.\n.IP\nOnce defined, these address groups can be used in patterns to search for and limit the\ndisplay to messages matching a group.\n.PP\n.nf\n\\fBalternates\\fP [\\fB-group\\fP \\fIname\\fP] \\fIregexp\\fP [ \\fIregexp\\fP [ ... ]]\n\\fBunalternates\\fP [\\fB * \\fP | \\fIregexp\\fP [ \\fIregexp\\fP [ ... ]] ]\n.fi\n.IP\n\\fBalternates\\fP is used to inform mutt about alternate addresses\nwhere you receive mail; you can use regular expressions to specify\nalternate addresses.  This affects mutt's idea about messages\nfrom you, and messages addressed to you.  \\fBunalternates\\fP removes\na regular expression from the list of known alternates. The \\fB-group\\fP flag\ncauses all of the subsequent regular expressions to be added to the named group.\n.PP\n.nf\n\\fBalternative_order\\fP \\fItype\\fP[\\fB/\\fP\\fIsubtype\\fP] [ ... ]\n\\fBunalternative_order\\fP [\\fB * \\fP | \\fItype\\fP/\\fIsubtype\\fP] [...]\n.fi\n.IP\n\\fBalternative_order\\fP command permits you to define an order of preference which is\nused by mutt to determine which part of a\n\\fBmultipart/alternative\\fP body to display.\nA subtype of \\(lq\\fB*\\fP\\(rq matches any subtype, as does an empty\nsubtype.   \\fBunalternative_order\\fP removes entries from the\nordered list or deletes the entire list when \\(lq\\fB*\\fP\\(rq is used\nas an argument.\n.PP\n.nf\n\\fBauto_view\\fP \\fItype\\fP[\\fB/\\fP\\fIsubtype\\fP] [ ... ]\n\\fBunauto_view\\fP \\fItype\\fP[\\fB/\\fP\\fIsubtype\\fP] [ ... ]\n.fi\n.IP\nThis commands permits you to specify that mutt should automatically\nconvert the given MIME types to text/plain when displaying messages.\nFor this to work, there must be a \n.BR mailcap (5)\nentry for the given MIME type with the \n.B copiousoutput\nflag set.  A subtype of \\(lq\\fB*\\fP\\(rq \nmatches any subtype, as does an empty subtype.\n.PP\n.nf\n\\fBmime_lookup\\fP \\fItype\\fP[\\fB/\\fP\\fIsubtype\\fP] [ ... ]\n\\fBunmime_lookup\\fP \\fItype\\fP[\\fB/\\fP\\fIsubtype\\fP] [ ... ]\n.fi\n.IP\nThis command permits you to define a list of \"data\" MIME content\ntypes for which mutt will try to determine the actual file type from\nthe file name, and not use a \n.BR mailcap (5)\nentry given for the original MIME type.  For instance, you may add\nthe \\fBapplication/octet-stream\\fP MIME type to this list.\n.TP\n\\fBbind\\fP \\fImap1,map2,...\\fP \\fIkey\\fP \\fIfunction\\fP\nThis command binds the given \\fIkey\\fP for the given \\fImap\\fP or maps\nto the given \\fIfunction\\fP. Multiple maps may be specified by\nseparating them with commas (no whitespace is allowed).\n.IP\nValid maps are:\n.BR generic \", \" alias \", \" attach \", \" \n.BR browser \", \" editor \", \"\n.BR index \", \" compose \", \" \n.BR pager \", \" pgp \", \" postpone \", \"\n.BR mix .\n.IP\nFor more information on keys and functions, please consult the Mutt\nManual. Note that the function name is to be specified without\nangle brackets.\n.TP\n\\fBaccount-hook\\fP [\\fB!\\fP]\\fIregexp\\fP \\fIcommand\\fP\nThis hook is executed whenever you access a remote mailbox. Useful\nto adjust configuration settings to different IMAP or POP servers.\n.TP\n\\fBcharset-hook\\fP \\fIalias\\fP \\fIcharset\\fP\nThis command defines an alias for a character set.  This is useful\nto properly display messages which are tagged with a character set\nname not known to mutt.\n.TP\n\\fBiconv-hook\\fP \\fIcharset\\fP \\fIlocal-charset\\fP\nThis command defines a system-specific name for a character set.\nThis is useful when your system's \n.BR iconv (3)\nimplementation does not understand MIME character set names (such as \n.BR iso-8859-1 ),\nbut instead insists on being fed with implementation-specific\ncharacter set names (such as\n.BR 8859-1 ).\nIn this specific case, you'd put this into your configuration file:\n.IP\n.B \"iconv-hook iso-8859-1 8859-1\"\n.TP\n\\fBmessage-hook\\fP [\\fB!\\fP]\\fIpattern\\fP \\fIcommand\\fP\nBefore mutt displays (or formats for replying or forwarding) a\nmessage which matches the given \\fIpattern\\fP (or, when it is\npreceded by an exclamation mark, does not match the \\fIpattern\\fP),\nthe given \\fIcommand\\fP is executed.  When multiple\n\\fBmessage-hook\\fPs match, they are  executed  in  the order in\nwhich they occur in the configuration file.\n.TP\n\\fBfolder-hook\\fP [\\fB!\\fP]\\fIregexp\\fP \\fIcommand\\fP\nWhen mutt enters a folder which matches \\fIregexp\\fP (or, when\n\\fIregexp\\fP is preceded by an exclamation mark, does not match\n\\fIregexp\\fP), the given \\fIcommand\\fP is executed.\n.IP\nWhen several \\fBfolder-hook\\fPs match a given mail folder, they are\nexecuted in the order given in the configuration file.\n.TP\n\\fBmacro\\fP \\fImap\\fP \\fIkey\\fP \\fIsequence\\fP [ \\fIdescription\\fP ]\nThis command binds the given \\fIsequence\\fP of keys to the given\n\\fIkey\\fP in the given \\fImap\\fP or maps.  For valid maps, see \\fBbind\\fP. To\nspecify multiple maps, put only a comma between the maps.\n.PP\n.nf\n\\fBcolor\\fP \\fIobject\\fP \\fIforeground\\fP \\fIbackground\\fP [ \\fI regexp\\fP ]\n\\fBcolor\\fP index \\fIforeground\\fP \\fIbackground\\fP [ \\fI pattern\\fP ]\n\\fBuncolor\\fP index \\fIpattern\\fP [ \\fIpattern\\fP ... ]\n.fi\n.IP\nIf your terminal supports color, these commands can be used to\nassign \\fIforeground\\fP/\\fIbackground\\fP combinations to certain\nobjects.  Valid objects are:\n.BR attachment \", \" body \", \" bold \", \" header \", \"\n.BR hdrdefault \", \" index \", \" indicator \", \" markers \", \"\n.BR message \", \" normal \", \" quoted \", \" quoted\\fIN\\fP \", \"\n.BR search \", \" signature \", \" status \", \" tilde \", \" tree \", \"\n.BR underline \", \" prompt .\nThe\n.BR body \" and \" header\nobjects allow you to restrict the colorization to a regular\nexpression.  The \\fBindex\\fP object permits you to select colored\nmessages by pattern.\n.IP\nValid colors include:\n.BR white \", \" black \", \" green \", \" magenta \", \" blue \", \"\n.BR cyan \", \" yellow \", \" red \", \" default \", \" color\\fIN\\fP .\n.PP\n.nf\n\\fBmono\\fP \\fIobject\\fP \\fIattribute\\fP [ \\fIregexp\\fP ]\n\\fBmono\\fP index \\fIattribute\\fP [ \\fIpattern\\fP ]\n.fi\n.IP\nFor terminals which don't support color, you can still assign\nattributes to objects.  Valid attributes include:\n.BR none \", \" bold \", \" underline \", \" \n.BR reverse \", and \" standout .\n.TP\n[\\fBun\\fP]\\fBignore\\fP \\fIpattern\\fP [ \\fIpattern\\fP ... ]\nThe \\fBignore\\fP command permits you to specify header fields which\nyou usually don't wish to see.  Any header field whose tag\n\\fIbegins\\fP with an \\(lqignored\\(rq pattern will be ignored.\n.IP\nThe \\fBunignore\\fP command permits you to define exceptions from\nthe above mentioned list of ignored headers.\n.PP\n.nf\n\\fBlists\\fP [\\fB-group\\fP \\fIname\\fP] \\fIregexp\\fP [ \\fIregexp\\fP ... ]\n\\fBunlists\\fP \\fIregexp\\fP [ \\fIregexp\\fP ... ]\n\\fBsubscribe\\fP [\\fB-group\\fP \\fIname\\fP] \\fIregexp\\fP [ \\fIregexp\\fP ... ]\n\\fBunsubscribe\\fP \\fIregexp\\fP [ \\fIregexp\\fP ... ]\n.fi\n.IP\nMutt maintains two lists of mailing list address patterns, a list of\nsubscribed mailing lists, and a list of known mailing lists.  All\nsubscribed mailing lists are known.  Patterns use regular expressions.\n.IP\nThe \\fBlists\\fP command adds a mailing list address to the list of\nknown mailing lists.  The \\fBunlists\\fP command removes a mailing\nlist from the lists of known and subscribed mailing lists.  The\n\\fBsubscribe\\fP command adds a mailing list to the lists of known\nand subscribed mailing lists.  The \\fBunsubscribe\\fP command removes\nit from the list of subscribed mailing lists. The \\fB-group\\fP flag\nadds all of the subsequent regular expressions to the named group.\n.TP\n\\fBmbox-hook\\fP [\\fB!\\fP]\\fIregexp\\fP \\fImailbox\\fP\nWhen mutt changes to a mail folder which matches \\fIregexp\\fP,\n\\fImailbox\\fP will be used as the \\(lqmbox\\(rq folder, i.e., read\nmessages will be moved to that folder when the mail folder is left.\n.IP\nThe first matching \\fBmbox-hook\\fP applies.\n.PP\n.nf\n\\fBmailboxes\\fP \\fIfilename\\fP [ \\fIfilename\\fP ... ]\n\\fBunmailboxes\\fP [ \\fB*\\fP | \\fIfilename\\fP ... ]\n.fi\n.IP\nThe \\fBmailboxes\\fP specifies folders which can receive mail and which will\nbe checked for new messages.  When changing folders, pressing space\nwill cycle through folders with new mail.  The \\fBunmailboxes\\fP\ncommand is used to remove a file name from the list of folders which\ncan receive mail.  If \"\\fB*\\fP\" is specified as the file name, the\nlist is emptied.\n.PP\n.nf\n\\fBmy_hdr\\fP \\fIstring\\fP\n\\fBunmy_hdr\\fP \\fIfield\\fP\n.fi\n.IP\nUsing \\fBmy_hdr\\fP, you can define headers which will be added to\nthe messages you compose.  \\fBunmy_hdr\\fP will remove the given\nuser-defined headers.\n.TP\n\\fBhdr_order\\fP \\fIheader1\\fP \\fIheader2\\fP [ ... ]\nWith this command, you can specify an order in which mutt will\nattempt to present headers to you when viewing messages.\n.TP\n\\fBsave-hook\\fP [\\fB!\\fP]\\fIpattern\\fP \\fIfilename\\fP\nWhen a message matches \\fIpattern\\fP, the default file name when\nsaving it will be the given \\fIfilename\\fP.\n.TP\n\\fBfcc-hook\\fP [\\fB!\\fP]\\fIpattern\\fP \\fIfilename\\fP\nWhen an outgoing message matches \\fIpattern\\fP, the default file\nname for storing a copy (fcc) will be the given \\fIfilename\\fP.\n.TP\n\\fBfcc-save-hook\\fP [\\fB!\\fP]\\fIpattern\\fP \\fIfilename\\fP\nThis command is an abbreviation for identical \\fBfcc-hook\\fP and\n\\fBsave-hook\\fP commands.\n.TP\n\\fBsend-hook\\fP [\\fB!\\fP]\\fIpattern\\fP \\fIcommand\\fP\nWhen composing a message matching \\fIpattern\\fP, \\fIcommand\\fP is\nexecuted.  When multiple \\fBsend-hook\\fPs match, they are executed\nin the order in which they occur in the configuration file.\n.TP\n\\fBsend2-hook\\fP [\\fB!\\fP]\\fIpattern\\fP \\fIcommand\\fP\nWhenever a message matching \\fIpattern\\fP is changed (either by\nediting it or by using the compose menu), \\fIcommand\\fP\nis executed. When multiple \\fBsend2-hook\\fPs match, they are\nexecuted in the order in which they occur in the configuration file.\nPossible applications include setting the $sendmail variable when a\nmessage's from header is changed.\n.IP\n\\fBsend2-hook\\fP execution is not triggered by use of\n\\fBenter-command\\fP from the compose menu.\n.TP\n\\fBreply-hook\\fP [\\fB!\\fP]\\fIpattern\\fP \\fIcommand\\fP\nWhen replying to a message matching \\fIpattern\\fP, \\fIcommand\\fP is\nexecuted.  When multiple \\fBreply-hook\\fPs match, they are executed\nin the order in which they occur in the configuration file, but all\n\\fBreply-hook\\fPs are matched and executed before \\fBsend-hook\\fPs,\nregardless of their order in the configuration file.\n.TP\n\\fBcrypt-hook\\fP \\fIregexp\\fP \\fIkey-id\\fP\nThe crypt-hook command provides a method by which you can\nspecify the ID of the public key to be used when encrypting messages\nto a certain recipient.  The meaning of \"key ID\" is to be taken\nbroadly: This can be a different e-mail address, a numerical key ID,\nor even just an arbitrary search string.\nYou may use multiple\n\\fBcrypt-hook\\fPs with the same \\fIregexp\\fP; multiple matching\n\\fBcrypt-hook\\fPs result in the use of multiple \\fIkey-id\\fPs for\na recipient.\n\n.TP\n\\fBpush\\fP \\fIstring\\fP\nThis command adds the named \\fIstring\\fP to the keyboard buffer.\n.PP\n.nf\n\\fBset\\fP [\\fBno\\fP|\\fBinv\\fP|\\fB&\\fP|\\fB?\\fP]\\fIvariable\\fP[=\\fIvalue\\fP] [ ... ]\n\\fBtoggle\\fP \\fIvariable\\fP [ ... ]\n\\fBunset\\fP \\fIvariable\\fP [ ... ]\n\\fBreset\\fP \\fIvariable\\fP [ ... ]\n.fi\n.IP\nThese commands are used to set and manipulate configuration\nvariables.\n.IP\nMutt knows four basic types of variables: boolean, number, string\nand quadoption.  Boolean variables can be \\fBset\\fP (true),\n\\fBunset\\fP (false), or \\fBtoggle\\fPd. Number variables can be assigned\na positive integer value.\n.IP\nString variables consist of any number of printable characters.\nStrings must be enclosed in quotes if they contain spaces or tabs.\nYou may also use the \\(lqC\\(rq escape sequences \\fB\\\\n\\fP and\n\\fB\\\\t\\fP for newline and tab, respectively.\n.IP\nQuadoption variables are used to control whether or not to be\nprompted for certain actions, or to specify a default action.  A\nvalue of \\fByes\\fP will cause the action to be carried out automatically\nas if you had answered yes to the question.  Similarly, a value of\n\\fBno\\fP will cause the the action to be carried out as if you had\nanswered \\(lqno.\\(rq A value of \\fBask-yes\\fP will cause a prompt\nwith a default answer of \\(lqyes\\(rq and \\fBask-no\\fP will provide a\ndefault answer of \\(lqno.\\(rq\n.IP\nThe \\fBreset\\fP command resets all given variables to the compile\ntime defaults.  If you reset the special variable \\fBall\\fP, all\nvariables will reset to their compile time defaults.\n.TP\n\\fBsource\\fP \\fIfilename\\fP\nThe given file will be evaluated as a configuration file.\n.PP\n.nf\n\\fBspam\\fP \\fIpattern\\fP \\fIformat\\fP\n\\fBnospam\\fP \\fIpattern\\fP\n.fi\n.IP\nThese commands define spam-detection patterns from external spam\nfilters, so that mutt can sort, limit, and search on\n``spam tags'' or ``spam attributes'', or display them\nin the index. See the Mutt manual for details.\n.TP\n\\fBunhook\\fP [\\fB * \\fP | \\fIhook-type\\fP ]\nThis command will remove all hooks of a given type, or all hooks\nwhen \\(lq\\fB*\\fP\\(rq is used as an argument.  \\fIhook-type\\fP\ncan be any of the \\fB-hook\\fP commands documented above.\n.PP\n.nf\n\\fBmailto_allow\\fP \\fIheader-field\\fP [ ... ]\n\\fBunmailto_allow\\fP [ \\fB*\\fP | \\fIheader-field\\fP ... ]\n.fi\n.IP\nThese commands allow the user to modify the list of allowed header\nfields in a \\fImailto:\\fP URL that Mutt will include in the\nthe generated message.  By default the list contains only\n\\fBsubject\\fP and \\fBbody\\fP, as specified by RFC2368.\n.SH PATTERNS\n.PP\nIn various places with mutt, including some of the above mentioned\n\\fBhook\\fP commands, you can specify patterns to match messages.\n.SS Constructing Patterns\n.PP\nA simple pattern consists of an operator of the form\n\\(lq\\fB~\\fP\\fIcharacter\\fP\\(rq, possibly followed by a parameter\nagainst which mutt is supposed to match the object specified by\nthis operator.  For some \\fIcharacter\\fPs, the \\fB~\\fP may be\nreplaced by another character to alter the behavior of the match.\nThese are described in the list of operators, below.\n.PP\nWith some of these operators, the object to be matched consists of\nseveral e-mail addresses.  In these cases, the object is matched if\nat least one of these e-mail addresses matches. You can prepend a\nhat (\\(lq\\fB^\\fP\\(rq) character to such a pattern to indicate that\n\\fIall\\fP addresses must match in order to match the object.\n.PP\nYou can construct complex patterns by combining simple patterns with\nlogical operators.  Logical AND is specified by simply concatenating\ntwo simple patterns, for instance \\(lq~C mutt-dev ~s bug\\(rq.\nLogical OR is specified by inserting a vertical bar (\\(lq\\fB|\\fP\\(rq)\nbetween two patterns, for instance \\(lq~C mutt-dev | ~s bug\\(rq.\nAdditionally, you can negate a pattern by prepending a bang\n(\\(lq\\fB!\\fP\\(rq) character.  For logical grouping, use braces\n(\\(lq()\\(rq). Example: \\(lq!(~t mutt|~c mutt) ~f elkins\\(rq.\n.SS Simple Patterns\n.PP\nMutt understands the following simple patterns:\n.P\n.PD 0\n.TP 12\n~A\nall messages\n.TP\n~b \\fIEXPR\\fP\nmessages which contain \\fIEXPR\\fP in the message body.\n.TP\n=b \\fISTRING\\fP\nmessages which contain \\fISTRING\\fP in the message body. If IMAP is enabled, searches for \\fISTRING\\fP on the server, rather than downloading each message and searching it locally.\n.TP\n~B \\fIEXPR\\fP\nmessages which contain \\fIEXPR\\fP in the whole message.\n.TP\n~c \\fIEXPR\\fP\nmessages carbon-copied to \\fIEXPR\\fP\n.TP\n%c \\fIGROUP\\fP\nmessages carbon-copied to any member of \\fIGROUP\\fP\n.TP\n~C \\fIEXPR\\fP\nmessages either to: or cc: \\fIEXPR\\fP\n.TP\n%C \\fIGROUP\\fP\nmessages either to: or cc: to any member of \\fIGROUP\\fP\n.TP\n~d \\fIMIN\\fP-\\fIMAX\\fP\nmessages with \\(lqdate-sent\\(rq in a Date range\n.TP\n~D\ndeleted messages\n.TP\n~e \\fIEXPR\\fP\nmessages which contain \\fIEXPR\\fP in the \\(lqSender\\(rq field\n.TP\n%e \\fIGROUP\\fP\nmessages which contain a member of \\fIGROUP\\fP in the \\(lqSender\\(rq field\n.TP\n~E\nexpired messages\n.TP\n~f \\fIEXPR\\fP\nmessages originating from \\fIEXPR\\fP\n.TP\n%f \\fIGROUP\\fP\nmessages originating from any member of \\fIGROUP\\fP\n.TP\n~F\nflagged messages\n.TP\n~g\nPGP signed messages\n.TP\n~G\nPGP encrypted messages\n.TP\n~h \\fIEXPR\\fP\nmessages which contain \\fIEXPR\\fP in the message header\n.TP\n~H \\fIEXPR\\fP\nmessages with spam tags matching \\fIEXPR\\fP\n.TP\n~i \\fIEXPR\\fP\nmessages which match \\fIEXPR\\fP in the \\(lqMessage-ID\\(rq field\n.TP\n~k\nmessages containing PGP key material\n.TP\n~l\nmessages addressed to a known mailing list (defined by either \\fBsubscribe\\fP or \\fBlist\\fP)\n.TP\n~L \\fIEXPR\\fP\nmessages either originated or received by \\fIEXPR\\fP\n.TP\n%L \\fIGROUP\\fP\nmessages either originated or received by any member of \\fIGROUP\\fP\n.TP\n~m \\fIMIN\\fP-\\fIMAX\\fP\nmessage in the range \\fIMIN\\fP to \\fIMAX\\fP\n.TP\n~n \\fIMIN\\fP-\\fIMAX\\fP\nmessages with a score in the range \\fIMIN\\fP to \\fIMAX\\fP\n.TP\n~N\nnew messages\n.TP\n~O\nold messages\n.TP\n~p\nmessages addressed to you (as defined by \\fBalternates\\fP)\n.TP\n~P\nmessages from you (as defined by \\fBalternates\\fP)\n.TP\n~Q\nmessages which have been replied to\n.TP\n~r \\fIMIN\\fP-\\fIMAX\\fP\nmessages with \\(lqdate-received\\(rq in a Date range\n.TP\n~R\nread messages\n.TP\n~s \\fIEXPR\\fP\nmessages having \\fIEXPR\\fP in the \\(lqSubject\\(rq field.\n.TP\n~S\nsuperseded messages\n.TP\n~t \\fIEXPR\\fP\nmessages addressed to \\fIEXPR\\fP\n.TP\n~T\ntagged messages\n.TP\n~u\nmessages addressed to a subscribed mailing list (defined by \\fBsubscribe\\fP commands)\n.TP\n~U\nunread messages\n.TP\n~v\nmessage is part of a collapsed thread.\n.TP\n~V\ncryptographically verified messages\n.TP\n~x \\fIEXPR\\fP\nmessages which contain \\fIEXPR\\fP in the \\(lqReferences\\(rq or \\(lqIn-Reply-To\\(rq field\n.TP\n~X \\fIMIN\\fP-\\fIMAX\\fP\nmessages with MIN - MAX attachments\n.TP\n~y \\fIEXPR\\fP\nmessages which contain \\fIEXPR\\fP in the \\(lqX-Label\\(rq field\n.TP\n~z \\fIMIN\\fP-\\fIMAX\\fP\nmessages with a size in the range \\fIMIN\\fP to \\fIMAX\\fP\n.TP\n~=\nduplicated messages (see $duplicate_threads)\n.TP\n~$\nunreferenced message (requires threaded view)\n.TP\n~(PATTERN)\nmessages in threads containing messages matching a certain pattern, e.g. all threads containing messages from you: ~(~P)\n.PD 1\n.DT\n.PP\nIn the above, \\fIEXPR\\fP is a regular expression.\n.PP\nWith the \\fB~d\\fP, \\fB~m\\fP, \\fB~n\\fP, \\fB~r\\fP, \\fB~X\\fP, and \\fB~z\\fP operators, you can also\nspecify ranges in the forms \\fB<\\fP\\fIMAX\\fP, \\fB>\\fP\\fIMIN\\fP,\n\\fIMIN\\fP\\fB-\\fP, and \\fB-\\fP\\fIMAX\\fP.\n.PP\nWith the \\fB~z\\fP operator, the suffixes \\(lqK\\(rq and \\(lqM\\(rq are allowed to specify\nkilobyte and megabyte respectively.\n.SS Matching dates\n.PP\nThe \\fB~d\\fP and \\fB~r\\fP operators are used to match date ranges,\nwhich are interpreted to be given in your local time zone.\n.PP\nA date is of the form\n\\fIDD\\fP[\\fB/\\fP\\fIMM\\fP[\\fB/\\fP[\\fIcc\\fP]\\fIYY\\fP]], that is, a\ntwo-digit date, optionally followed by a two-digit month, optionally\nfollowed by a year specifications.  Omitted fields default to the\ncurrent month and year.\n.PP\nMutt understands either two or four digit year specifications.  When\ngiven a two-digit year, mutt will interpret values less than 70 as\nlying in the 21st century (i.e., \\(lq38\\(rq means 2038 and not 1938,\nand \\(lq00\\(rq is interpreted as 2000), and values\ngreater than or equal to 70 as lying in the 20th century.\n.PP\nNote that this behavior \\fIis\\fP Y2K compliant, but that mutt\n\\fIdoes\\fP have a Y2.07K problem.\n.PP\nIf a date range consists of a single date, the operator in question\nwill match that precise date.  If the date range consists of a dash\n(\\(lq\\fB-\\fP\\(rq), followed by a date, this range will match any\ndate before and up to the date given.  Similarly, a date followed by\na dash matches the date given and any later point of time.  Two\ndates, separated by a dash, match any date which lies in the given\nrange of time.\n.PP\nYou can also modify any absolute date by giving an error range.  An\nerror range consists of one of the characters\n.BR + ,\n.BR - ,\n.BR * ,\nfollowed by a positive number, followed by one of the unit\ncharacters\n.BR y ,\n.BR m ,\n.BR w \", or\"\n.BR d ,\nspecifying a unit of years, months, weeks, or days.  \n.B +\nincreases the maximum date matched by the given interval of time,\n.B - \ndecreases the minimum date matched by the given interval of time, and\n.B *\nincreases the maximum date and decreases the minimum date matched by\nthe given interval of time.  It is possible to give multiple error\nmargins, which cumulate.  Example:\n.B \"1/1/2001-1w+2w*3d\"\n.PP\nYou can also specify offsets relative to the current date.  An\noffset is specified as one of the characters\n.BR < ,\n.BR > ,\n.BR = ,\nfollowed by a positive number, followed by one of the unit\ncharacters\n.BR y ,\n.BR m ,\n.BR w \", or\"\n.BR d .\n.B >\nmatches dates which are older than the specified amount of time, an\noffset which begins with the character\n.B < \nmatches dates which are more recent than the specified amount of time,\nand an offset which begins with the character\n.B =\nmatches points of time which are precisely the given amount of time\nago.\n.SH CONFIGURATION VARIABLES\n"
  },
  {
    "path": "doc/muttrc.man.tail",
    "content": ".\\\" -*-nroff-*-\n.SH SEE ALSO\n.PP\n.BR iconv (1),\n.BR iconv (3),\n.BR mailcap (5),\n.BR maildir (5),\n.BR mbox (5),\n.BR mutt (1),\n.BR printf (3),\n.BR regex (7),\n.BR strftime (3)\n.PP\nThe Mutt Manual\n.PP\nThe Mutt home page: http://www.mutt.org/\n.SH AUTHOR\n.PP\nMichael Elkins, and others.  Use <mutt-dev@mutt.org> to contact\nthe developers.\n"
  },
  {
    "path": "doc/muttrc.nested-if",
    "content": "# Example Mutt config file for the 'nested-if' feature.\n\n# This patch uses the format: '%<VAR?TRUE&FALSE>' for conditional\n# format strings that can be nested.\n\n# Example 1\n# if a thread is folded\n#       display the number of messages (%M)\n# else if we know how many lines in the message\n#       display lines in message (%l)\n# else display the size of the message in bytes (%c)\nset index_format='%4C %Z %{%b %d} %-25.25n %s%> %<M?%M Msgs &%<l?%l Lines&%c Bytes>>'\n\n# Example 2\n# if a thread is folded\n#       display the number of messages (%M)\n#       display the subject (%s)\n# else if we know how many lines in the message\n#       display lines in message (%l)\n# else\n#       display the size of the message in bytes (%c)\nset index_format='%4C %Z %{%b %d} %-25.25n %<M?[%M] %s&%s%* %<l?%l&%c>>'\n\n# vim: syntax=muttrc\n"
  },
  {
    "path": "doc/muttrc.progress",
    "content": "# Example Mutt config file for the 'progress' patch.\n\n# The 'progress' patch provides clear visual feedback for\n# slow tasks, such as indexing a large folder over the net.\n\n# Set the color of the progress bar\n# White text on a red background\ncolor progress white red\n\n# vim: syntax=muttrc\n"
  },
  {
    "path": "doc/muttrc.quasi-delete",
    "content": "# Example Mutt config file for the 'quasi-delete' feature.\n\n# The 'quasi-delete' function marks an email that should be hidden\n# from the index, but NOT deleted.\nbind index,pager Q quasi-delete\n\n# vim: syntax=muttrc\n"
  },
  {
    "path": "doc/muttrc.sidebar",
    "content": "# This is a complete list of sidebar-related configuration.\n\n# --------------------------------------------------------------------------\n# VARIABLES - shown with their default values\n# --------------------------------------------------------------------------\n\n# Should the Sidebar be shown?\nset sidebar_visible = no\n\n# How wide should the Sidebar be in screen columns?\n# Note: Some characters, e.g. Chinese, take up two columns each.\nset sidebar_width = 20\n\n# Should the mailbox paths be abbreviated?\nset sidebar_short_path = no\n\n# When abbreviating mailbox path names, use any of these characters as path\n# separators.  Only the part after the last separators will be shown.\n# For file folders '/' is good.  For IMAP folders, often '.' is useful.\nset sidebar_delim_chars = '/.'\n\n# If the mailbox path is abbreviated, should it be indented?\nset sidebar_folder_indent = no\n\n# Indent mailbox paths with this string.\nset sidebar_indent_string = '  '\n\n# Make the Sidebar only display mailboxes that contain new, or flagged,\n# mail.\nset sidebar_new_mail_only = no\n\n# Any mailboxes that are whitelisted will always be visible, even if the\n# sidebar_new_mail_only option is enabled.\nsidebar_whitelist '/home/user/mailbox1'\nsidebar_whitelist '/home/user/mailbox2'\n\n# When searching for mailboxes containing new mail, should the search wrap\n# around when it reaches the end of the list?\nset sidebar_next_new_wrap = no\n\n# The character to use as the divider between the Sidebar and the other Mutt\n# panels.\n# Note: Only the first character of this string is used.\nset sidebar_divider_char = '|'\n\n# Display the Sidebar mailboxes using this format string.\nset sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S'\n\n# Sidebar will not refresh its list of mailboxes any more frequently than\n# this number of seconds.  This will help reduce disk/network traffic.\nset sidebar_refresh_time = 60\n\n# Sort the mailboxes in the Sidebar using this method:\n#       count    - total number of messages\n#       flagged  - number of flagged messages\n#       new      - number of new messages\n#       path     - mailbox path\n#       unsorted - do not sort the mailboxes\nset sidebar_sort_method = 'unsorted'\n\n# --------------------------------------------------------------------------\n# FUNCTIONS - shown with an example mapping\n# --------------------------------------------------------------------------\n\n# Move the highlight to the previous mailbox\nbind index,pager \\Cp sidebar-prev\n\n# Move the highlight to the next mailbox\nbind index,pager \\Cn sidebar-next\n\n# Open the highlighted mailbox\nbind index,pager \\Co sidebar-open\n\n# Move the highlight to the previous page\n# This is useful if you have a LOT of mailboxes.\nbind index,pager <F3> sidebar-page-up\n\n# Move the highlight to the next page\n# This is useful if you have a LOT of mailboxes.\nbind index,pager <F4> sidebar-page-down\n\n# Move the highlight to the previous mailbox containing new, or flagged,\n# mail.\nbind index,pager <F5> sidebar-prev-new\n\n# Move the highlight to the next mailbox containing new, or flagged, mail.\nbind index,pager <F6> sidebar-next-new\n\n# Toggle the visibility of the Sidebar.\nbind index,pager B sidebar-toggle-visible\n\n# --------------------------------------------------------------------------\n# COLORS - some unpleasant examples are given\n# --------------------------------------------------------------------------\n# Note: All color operations are of the form:\n#       color OBJECT FOREGROUND BACKGROUND\n\n# Color of the current, open, mailbox\n# Note: This is a general Mutt option which colors all selected items.\ncolor indicator cyan black\n\n# Color of the highlighted, but not open, mailbox.\ncolor sidebar_highlight black color8\n\n# Color of the divider separating the Sidebar from Mutt panels\ncolor sidebar_divider color8 black\n\n# Color to give mailboxes containing flagged mail\ncolor sidebar_flagged red black\n\n# Color to give mailboxes containing new mail\ncolor sidebar_new green black\n\n# --------------------------------------------------------------------------\n\n# vim: syntax=muttrc\n"
  },
  {
    "path": "doc/muttrc.status-color",
    "content": "# Example Mutt config file for the 'status-color' patch.\n\n# The 'status-color' patch allows you to theme different parts of\n# the status bar (also when it's used by the index).\n\n# For the examples below, set some defaults\nset status_format='-%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?%?l? %l?]---(%s/%S)-%>-(%P)---'\nset index_format='%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s'\nset sort=threads\nset sort_aux=last-date-received\n\n# 'status color' can take up to 2 extra parameters\n\n# color status foreground background [ regex [ num ]]\n\n# 0 extra parameters\n# Set the default color for the entire status line\ncolor status blue white\n\n# 1 extra parameter\n# Set the color for a matching pattern\n# color status foreground background regexp\n\n# Highlight New, Deleted, or Flagged emails\ncolor status brightred white '(New|Del|Flag):[0-9]+'\n\n# Highlight mailbox ordering if it's different from the default\n# First, highlight anything (*/*)\ncolor status brightred default '\\([^)]+/[^)]+\\)'\n\n# Then override the color for one specific case\ncolor status default   default '\\(threads/last-date-received\\)'\n\n# 2 extra parameters\n# Set the color for the nth submatch of a pattern\n# color status foreground background regexp num\n\n# Highlight the contents of the []s but not the [] themselves\ncolor status red default '\\[([^]]+)\\]' 1\n\n# The '1' refers to the first regex submatch, which is the inner\n# part in ()s\n\n# Highlight the mailbox\ncolor status brightwhite default 'Mutt: ([^ ]+)' 1\n\n# Search for 'Mutt: ' but only highlight what comes after it\n\n# vim: syntax=muttrc\n"
  },
  {
    "path": "doc/muttrc.tls-sni",
    "content": ""
  },
  {
    "path": "doc/patch-notes.txt",
    "content": "From roessler@does-not-exist.org Wed Nov  7 11:49:56 2001\nDate: Wed, 7 Nov 2001 11:49:56 +0100\nFrom: Thomas Roessler <roessler@does-not-exist.org>\nTo: mutt-dev@mutt.org\nSubject: To those shipping patches (v2)\nMIME-Version: 1.0\nContent-Type: text/plain; format=flowed\nStatus: RO\nContent-Length: 1273\nLines: 34\n\nYou folks have convinced me that the old patchlist was almost the \nright way to go for mutt identifying what patches have been applied.\n\nThus, I've implemented this scheme (and will commit it to the CVS \nin a moment): There's a new file called PATCHES in the source tree, \nwhich will be empty in the official distribution.\n\nThis file's format is one patch ID per line.  Patch IDs should be \nthe same as the file names used for distributing patches.  The \nformat for these file names should be this: \n\n     patch-<version>.<initials>.<patch-description>.<patchlevel>\n\nThat is, Vsevolod's NNTP patch for mutt-1.3.42 could be named like \nthis:\n\n     patch-1.3.42.vvv.nntp.1\n\n From PATCHES, patchlist.c will be automatically generated.  In \norder to properly construct PATCHES, please include the following \nchunk with your patch, replacing <your-id-here> by your patch ID.\n\n------------------------------snip------------------------------\n--- PATCHES~    Tue Nov  6 19:59:33 2001\n+++ PATCHES     Tue Nov  6 19:59:42 2001\n@@ -1,0 +1 @@\n+<your-id-here>\n------------------------------snip------------------------------\n\nThe patch IDs will be displayed when mutt is run with the 'v' \ncommand line switch.\n\n-- \nThomas Roessler                        http://log.does-not-exist.org/\n\n"
  },
  {
    "path": "doc/pgpewrap.man",
    "content": ".\\\" -*-nroff-*-\n.\\\"\n.\\\"     pgpewrap, a command line munging tool\n.\\\"     Manpage Copyright (c) 2013 Honza Horak\n.\\\"\n.\\\"     This program is free software; you can redistribute it and/or modify\n.\\\"     it under the terms of the GNU General Public License as published by\n.\\\"     the Free Software Foundation; either version 2 of the License, or\n.\\\"     (at your option) any later version.\n.\\\"\n.\\\"     This program is distributed in the hope that it will be useful,\n.\\\"     but WITHOUT ANY WARRANTY; without even the implied warranty of\n.\\\"     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n.\\\"     GNU General Public License for more details.\n.\\\"\n.\\\"     You should have received a copy of the GNU General Public License\n.\\\"     along with this program; if not, write to the Free Software\n.\\\"     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n.\\\"\n.TH pgpewrap 1 \"May 2013\" Unix \"User Manuals\"\n.SH NAME\npgpewrap \\- Mutt command line munging tool\n\n.SH SYNTAX\n.PP\n\\fBpgpewrap\\fP [ \\fBflags\\fP ] \\-\\- \\fBprefix\\fP [ \\fBrecipients\\fP ]\n\n.SH DESCRIPTION\n.PP\nThis is a little C program which does some command line munging: The\nfirst argument is a command to be executed.  When \\fBpgpewrap\\fP\nencounters a \"\\-\\-\" (dash\\-dash) argument, it will interpret the next\nargument as a prefix which is put in front of all following\narguments.\n\n.SH EXAMPLE\n\n        pgpewrap pgpe file \\-\\- \\-r a b c\n\nwill execute:\n\n        pgpe file -r a -r b -r c\n\nThis script is needed with PGP 5 and with GPG, since their command\nline interfaces can't be properly served by mutt's format mechanism.\n\n"
  },
  {
    "path": "doc/pgpring.man",
    "content": ".\\\" -*-nroff-*-\n.\\\"\n.\\\"     pgpring, a key ring dumper\n.\\\"     Manpage Copyright (c) 2004-2013 Matthew Wilcox, Honza Horak\n.\\\"\n.\\\"     This program is free software; you can redistribute it and/or modify\n.\\\"     it under the terms of the GNU General Public License as published by\n.\\\"     the Free Software Foundation; either version 2 of the License, or\n.\\\"     (at your option) any later version.\n.\\\"\n.\\\"     This program is distributed in the hope that it will be useful,\n.\\\"     but WITHOUT ANY WARRANTY; without even the implied warranty of\n.\\\"     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n.\\\"     GNU General Public License for more details.\n.\\\"\n.\\\"     You should have received a copy of the GNU General Public License\n.\\\"     along with this program; if not, write to the Free Software\n.\\\"     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n.\\\"\n.TH pgpring 1 \"May 2013\" Unix \"User Manuals\"\n.SH NAME\npgpring \\- Mutt key ring dumper\n\n.SH SYNTAX\n.PP\n\\fBpgpring\\fP [ \\fB\\-k\\fP \\fIkeyring\\fP ] [ \\fB\\-2\\fP | \\fB\\-5\\fP ]\n[ \\fB\\-s\\fP ] [ \\fB\\-S\\fP ] [ \\fB\\-f\\fP ]\n\n.SH DESCRIPTION\n.PP\npgpring is a key ring dumper.  It extracts information from PGP's\nbinary key ring and emits it in an (almost) readable output format\nunderstood by mutt's key selection routines.  This output format\nmimics the one used by the GNU Privacy Guard (GPG).\n\n.SH OPTIONS\n.TP\n.BI \\-k \" keyring\"\nDump the contents of the specified keyring.\n.TP\n.B \\-2\nUse the default keyring for PGP 2.x.\n.TP\n.B \\-5\nUse the default keyring for PGP 5.\n.TP\n.B \\-s\nDump the secret keyring.\n.TP\n.B \\-S\nDump signatures.\n.TP\n.B \\-f\nDump fingerprints.\n\n.SH ENVIRONMENT\n.PP\n.IP \"HOME\"\nFull path of the user's home directory.\n.IP \"PGPPATH\"\nDirectory in which the user's PGP public keyring can be found.\n\n.SH AUTHORS\nThomas Roessler <roessler@does\\-not\\-exist.org>\n\n"
  },
  {
    "path": "doc/smime-notes.txt",
    "content": "How to add use mutt's S/MIME capabilities\n\n- Add the contents of contrib/smime.rc to your .muttrc. Don't worry about\n  changing the smime_sign_as line at this point -- you'll change it later.\n\n- Run 'smime_keys init'.\n\n- Download and install OpenSSL.\n\n- Get yourself a certificate. (You can get one for free from www.thawte.com,\n  or pay for one from VeriSign or one of its competitors) The way the\n  process generally works, the certificate will be installed \"into\" your web\n  browser.  If you are asked what application you wish to use the\n  certificate with, select Netscape. Strangely enough, \"mutt\" is usually not\n  an option.\n\n- Assuming you are using Mozilla, follow the instructions at\n  www.verisignlabs.com/Projects/smime_docs/linux.html to export the\n  certificate into a file called cert.p12. If you don't use Mozilla, you're\n  on your own.\n\n- Run \"smime_keys add_p12 cert.p12\"\n\n    * When the script asks for the \"Import password\", enter the one you\n      provided when you exported the certificate.\n\n    * When it asks for a \"PEM pass phrase\", make up a new password. Every\n      time you sign or decrypt a message, mutt will ask for the PEM pass\n      phrase.\n\n    * Finally, when the script asks for a label, enter an easy-to-remember\n      name for the certificate, such as \"me\". The script output will include\n      a line like:\n\n      added private key: /home/raldi/.smime/keys/12345678.0 for raldi@verisignlabs.com\n\n      The number (including the \".0\" at the end) is your keyid. You will\n      need this number in the next step.\n\n- Edit the smime_sign_as line in your muttrc, replacing the keyid with your\n  own.\n\n- You probably want to import the trusted roots in\n  contrib/ca-bundle.crt. This makes you trust anything that was ultimately\n  signed by one of them. You can use \"smime_keys add_root\" to do so, or\n  just copy ca-bundle.crt into the place you point mutt's smime_ca_location\n  variable to.\n\n\n\nOther notes\n\nKey management is done in a way similar to OpenSSL's CA directory. Private\nkeys and certificates are stored in different directories, as OpenSSL\nexpects either to be supplied in a (distinct) file. Each directory contains\nan unsorted file named '.index' wherein each line has several fields:\nmailbox, keyid, label, id of the intermediate certificate and keyflags.\n\n    * Keyid is a hashvalue derived from the subject field of a certificate\n      and supplied by OpenSSL.\n\n    * The mailbox address is derived from either From or Sender field of the\n      message, and matched with the email field of the certificate. Non\n      matching address pairs get rejected, as get certificates not\n      containing a mailbox address at all. (These are security issues, that\n      perhaps should be configurable.)\n\n    * Label is set by the perl script (it will ask you to supply one), when\n      you add your keypair to the database. So are the remaining two fields.\n\n    * keyflags are set with certificate verification option of the perl\n      script. It may take as value one of the following: i: invalid\n      (verification failed), r: revoked, e: expired, u: unverified, v:\n      successfully verified and finally t: trusted, in case it was\n      successfully verified and you chose to trust the certificate (the\n      script will ask you). Mutt will not use invalid, revoked or expired\n      certificates for signing or encryption. It will ask for confirmation\n      before using unverified certificates, and finally it will issue a\n      warning before using successfully verified but untrusted certificates.\n\nThe purpose fields of a certificate do not get verified yet, also there is\nno real check if the given file is a certificate at all.\n\nKey retrieval is done obviously by searching the index file for a given\nmailbox. If none is found, the user is presented a list of available keys\nand asked to select one of those.\n\nThe certificate and key directories specified in muttrc have to exist. Mutt\nwill not create them. If you wish to sign messages yourself, note that this\nmutt does not address any PKCS10 or PKCS12 issues (yet?); that is, you have\nto get a valid certificate outside of mutt. (See above)\n\n\n\nA certificate can be viewed by adding the following to your ~/.mailcap:\n\napplication/x-pkcs7-signature;openssl pkcs7 -in %s -inform der -noout \\\n-print_certs -text | less; needsterminal\n"
  },
  {
    "path": "doc/smime_keys.man",
    "content": ".\\\" -*-nroff-*-\n.\\\"\n.\\\"\n.\\\"     Copyright (C) 2001,2002 Oliver Ehli <elmy@acm.org>\n.\\\"     Copyright (C) 2001 Mike Schiraldi <raldi@research.netsol.com>\n.\\\"     Copyright (C) 2003 Bjoern Jacke <bjoern@j3e.de>\n.\\\"\n.\\\"     This program is free software; you can redistribute it and/or modify\n.\\\"     it under the terms of the GNU General Public License as published by\n.\\\"     the Free Software Foundation; either version 2 of the License, or\n.\\\"     (at your option) any later version.\n.\\\"\n.\\\"     This program is distributed in the hope that it will be useful,\n.\\\"     but WITHOUT ANY WARRANTY; without even the implied warranty of\n.\\\"     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n.\\\"     GNU General Public License for more details.\n.\\\"\n.\\\"     You should have received a copy of the GNU General Public License\n.\\\"     along with this program; if not, write to the Free Software\n.\\\"     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n.\\\"\n.TH smime_keys 1 \"May 2009\" Unix \"User Manuals\"\n.SH \"NAME\"\nsmime_keys \\- Utility to add S/MIME certificate to the internal database used by mutt\n.SH SYNOPSIS\n.PP\n.B smime_keys\n<operation>  [file(s) | keyID [file(s)]]\n.SH \"DESCRIPTION\"\nThe purpose of this tool is to manipulate the internal database of S/MIME certificates\nused by mutt to sign mail messages which will be sent or to verify mail messages received\nand signed with S/MIME\n.SH OPTIONS\n.PP\n.IP \\fBinit\\fP\nno files needed, inits directory structure.\n.IP \\fBlist\\fP\nlists the certificates stored in database.\n.IP \\fBlabel\\fP\nkeyID required. changes/removes/adds label.\n.IP \\fBremove\\fP\nkeyID required.\n.IP \\fBverify\\fP\n1=keyID and optionally 2=CRL\nVerifies the certificate chain, and optionally whether\nthis certificate is included in supplied CRL (PEM format).\nNote: to verify all certificates at the same time,\nreplace keyID with \"all\"\n.IP \\fBadd_cert\\fP\ncertificate required.\n.IP \\fBadd_chain\\fP\nthree files reqd: 1=Key, 2=certificate\nplus 3=intermediate certificate(s).\n.IP \\fBadd_p12\\fP\none file reqd. Adds keypair to database.\nfile is PKCS12 (e.g. export from netscape).\n.IP \\fBadd_pem\\fP\none file reqd. Adds keypair to database.\n(file was converted from e.g. PKCS12).\n.IP \\fBadd_root\\fP\none file reqd. Adds PEM root certificate to the location\nspecified within muttrc (smime_verify_* command)\n.SH NO WARRANTIES\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n.PP\nMutt Home Page: http://www.mutt.org/\n"
  },
  {
    "path": "doc/vimrc.index-color",
    "content": "\" Vim syntax file for the mutt index-color patch\n\nsyntax keyword muttrcColorField contained index\nsyntax keyword muttrcColorField contained index_author\nsyntax keyword muttrcColorField contained index_collapsed\nsyntax keyword muttrcColorField contained index_date\nsyntax keyword muttrcColorField contained index_flags\nsyntax keyword muttrcColorField contained index_label\nsyntax keyword muttrcColorField contained index_number\nsyntax keyword muttrcColorField contained index_size\nsyntax keyword muttrcColorField contained index_subject\n\n\" vim: syntax=vim\n"
  },
  {
    "path": "doc/vimrc.progress",
    "content": "\" Vim syntax file for the mutt progress patch\n\nsyntax keyword muttrcColorField contained progress\n\n\" vim: syntax=vim\n"
  },
  {
    "path": "doc/vimrc.quasi-delete",
    "content": "\" Vim syntax file for the mutt quasi-delete patch\n\nsyntax match muttrcFunction     contained \"\\<quasi-delete\\>\"\n\n\" vim: syntax=vim\n"
  },
  {
    "path": "doc/vimrc.sidebar",
    "content": "\" Vim syntax file for the mutt sidebar patch\n\nsyntax keyword muttrcVarBool    skipwhite contained sidebar_folder_indent nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr\nsyntax keyword muttrcVarBool    skipwhite contained sidebar_new_mail_only nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr\nsyntax keyword muttrcVarBool    skipwhite contained sidebar_next_new_wrap nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr\nsyntax keyword muttrcVarBool    skipwhite contained sidebar_short_path    nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr\nsyntax keyword muttrcVarBool    skipwhite contained sidebar_visible       nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr\n\nsyntax keyword muttrcVarNum     skipwhite contained sidebar_refresh_time  nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr\nsyntax keyword muttrcVarNum     skipwhite contained sidebar_width         nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr\n\nsyntax keyword muttrcVarStr     contained skipwhite sidebar_divider_char  nextgroup=muttrcVarEqualsIdxFmt\nsyntax keyword muttrcVarStr     contained skipwhite sidebar_delim_chars   nextgroup=muttrcVarEqualsIdxFmt\nsyntax keyword muttrcVarStr     contained skipwhite sidebar_format        nextgroup=muttrcVarEqualsIdxFmt\nsyntax keyword muttrcVarStr     contained skipwhite sidebar_indent_string nextgroup=muttrcVarEqualsIdxFmt\nsyntax keyword muttrcVarStr     contained skipwhite sidebar_sort_method   nextgroup=muttrcVarEqualsIdxFmt\n\nsyntax keyword muttrcCommand    sidebar_whitelist\n\nsyntax match muttrcFunction     contained \"\\<sidebar-next\\>\"\nsyntax match muttrcFunction     contained \"\\<sidebar-next-new\\>\"\nsyntax match muttrcFunction     contained \"\\<sidebar-open\\>\"\nsyntax match muttrcFunction     contained \"\\<sidebar-page-down\\>\"\nsyntax match muttrcFunction     contained \"\\<sidebar-page-up\\>\"\nsyntax match muttrcFunction     contained \"\\<sidebar-prev\\>\"\nsyntax match muttrcFunction     contained \"\\<sidebar-prev-new\\>\"\nsyntax match muttrcFunction     contained \"\\<sidebar-toggle-visible\\>\"\n\nsyntax keyword muttrcColorField contained sidebar_divider\nsyntax keyword muttrcColorField contained sidebar_flagged\nsyntax keyword muttrcColorField contained sidebar_highlight\nsyntax keyword muttrcColorField contained sidebar_indicator\nsyntax keyword muttrcColorField contained sidebar_new\n\n\" vim: syntax=vim\n"
  },
  {
    "path": "dotlock.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1998-2001,2007 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/*\n * This module either be compiled into Mutt, or it can be\n * built as a separate program. For building it\n * separately, define the DL_STANDALONE preprocessor\n * macro.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n#include <unistd.h>\n#include <dirent.h>\n#include <sys/file.h>\n#include <sys/stat.h>\n#include <sys/utsname.h>\n#include <errno.h>\n#include <time.h>\n#include <fcntl.h>\n#include <limits.h>\n\n#ifndef _POSIX_PATH_MAX\n#include <limits.h>\n#endif\n\n#include \"dotlock.h\"\n\n#ifdef HAVE_GETOPT_H\n#include <getopt.h>\n#endif\n\n#ifdef DL_STANDALONE\n# include \"reldate.h\"\n#endif\n\n#define MAXLINKS 1024 /* maximum link depth */\n\n#ifdef DL_STANDALONE\n\n# define LONG_STRING 1024\n# define MAXLOCKATTEMPT 5\n\n# define strfcpy(A,B,C) strncpy (A,B,C), *(A+(C)-1)=0\n\n# ifdef USE_SETGID\n\n#  ifdef HAVE_SETEGID\n#   define SETEGID setegid\n#  else\n#   define SETEGID setgid\n#  endif\n#  ifndef S_ISLNK\n#   define S_ISLNK(x) (((x) & S_IFMT) == S_IFLNK ? 1 : 0)\n#  endif\n\n# endif\n\n# ifndef HAVE_SNPRINTF\nextern int snprintf (char *, size_t, const char *, ...);\n# endif\n\n#else  /* DL_STANDALONE */\n\n# ifdef USE_SETGID\n#   error Do not try to compile dotlock as a mutt module when requiring egid switching!\n# endif\n\n# include \"mutt.h\"\n# include \"mx.h\"\n\n#endif /* DL_STANDALONE */\n\nstatic int DotlockFlags;\nstatic int Retry = MAXLOCKATTEMPT;\n\n#ifdef DL_STANDALONE\nstatic char *Hostname;\n#endif\n\n#ifdef USE_SETGID\nstatic gid_t UserGid;\nstatic gid_t MailGid;\n#endif\n\nstatic int dotlock_deference_symlink (char *, size_t, const char *);\nstatic int dotlock_prepare (char *, size_t, const char *, int fd);\nstatic int dotlock_check_stats (struct stat *, struct stat *);\nstatic int dotlock_dispatch (const char *, int fd);\n\n#ifdef DL_STANDALONE\nstatic int dotlock_init_privs (void);\nstatic void usage (const char *);\n#endif\n\nstatic void dotlock_expand_link (char *, const char *, const char *);\nstatic void BEGIN_PRIVILEGED (void);\nstatic void END_PRIVILEGED (void);\n\n/* These functions work on the current directory.\n * Invoke dotlock_prepare () before and check their\n * return value.\n */\n\nstatic int dotlock_try (void);\nstatic int dotlock_unlock (const char *);\nstatic int dotlock_unlink (const char *);\nstatic int dotlock_lock (const char *);\n\n\n#ifdef DL_STANDALONE\n\n#define check_flags(a) if (a & DL_FL_ACTIONS) usage (argv[0])\n\nint main (int argc, char **argv)\n{\n  int i;\n  char *p;\n  struct utsname utsname;\n\n  /* first, drop privileges */\n  \n  if (dotlock_init_privs () == -1)\n    return DL_EX_ERROR;\n\n\n  /* determine the system's host name */\n  \n  uname (&utsname);\n  if (!(Hostname = strdup (utsname.nodename)))\t/* __MEM_CHECKED__ */\n    return DL_EX_ERROR;\n  if ((p = strchr (Hostname, '.')))\n    *p = '\\0';\n\n\n  /* parse the command line options. */\n  DotlockFlags = 0;\n  \n  while ((i = getopt (argc, argv, \"dtfupr:\")) != EOF)\n  {\n    switch (i)\n    {\n      /* actions, mutually exclusive */\n      case 't': check_flags (DotlockFlags); DotlockFlags |= DL_FL_TRY; break;\n      case 'd': check_flags (DotlockFlags); DotlockFlags |= DL_FL_UNLINK; break;\n      case 'u': check_flags (DotlockFlags); DotlockFlags |= DL_FL_UNLOCK; break;\n\n      /* other flags */\n      case 'f': DotlockFlags |= DL_FL_FORCE; break;\n      case 'p': DotlockFlags |= DL_FL_USEPRIV; break;\n      case 'r': DotlockFlags |= DL_FL_RETRY; Retry = atoi (optarg); break;\n      \n      default: usage (argv[0]);\n    }\n  }\n\n  if (optind == argc || Retry < 0)\n    usage (argv[0]);\n\n  return dotlock_dispatch (argv[optind], -1);\n}\n\n\n/* \n * Determine our effective group ID, and drop \n * privileges.\n * \n * Return value:\n * \n *  0 - everything went fine\n * -1 - we couldn't drop privileges.\n * \n */\n\n\nstatic int\ndotlock_init_privs (void)\n{\n\n# ifdef USE_SETGID\n  \n  UserGid = getgid ();\n  MailGid = getegid ();\n\n  if (SETEGID (UserGid) != 0)\n    return -1;\n\n# endif\n\n  return 0;\n}\n  \n\n#else  /* DL_STANDALONE */\n\n/* \n * This function is intended to be invoked from within\n * mutt instead of mx.c's invoke_dotlock ().\n */\n\nint dotlock_invoke (const char *path, int fd, int flags, int retry)\n{\n  int currdir;\n  int r;\n\n  DotlockFlags = flags;\n  \n  if ((currdir = open (\".\", O_RDONLY)) == -1)\n    return DL_EX_ERROR;\n\n  if (!(DotlockFlags & DL_FL_RETRY) || retry)\n    Retry = MAXLOCKATTEMPT;\n  else\n    Retry = 0;\n  \n  r = dotlock_dispatch (path, fd);\n  \n  fchdir (currdir);\n  close (currdir);\n  \n  return r;\n}\n\n#endif  /* DL_STANDALONE */\n\n\nstatic int dotlock_dispatch (const char *f, int fd)\n{\n  char realpath[_POSIX_PATH_MAX];\n\n  /* If dotlock_prepare () succeeds [return value == 0],\n   * realpath contains the basename of f, and we have\n   * successfully changed our working directory to\n   * `dirname $f`.  Additionally, f has been opened for\n   * reading to verify that the user has at least read\n   * permissions on that file.\n   * \n   * For a more detailed explanation of all this, see the\n   * lengthy comment below.\n   */\n\n  if (dotlock_prepare (realpath, sizeof (realpath), f, fd) != 0)\n    return DL_EX_ERROR;\n\n  /* Actually perform the locking operation. */\n\n  if (DotlockFlags & DL_FL_TRY)\n    return dotlock_try ();\n  else if (DotlockFlags & DL_FL_UNLOCK)\n    return dotlock_unlock (realpath);\n  else if (DotlockFlags & DL_FL_UNLINK)\n    return dotlock_unlink (realpath);\n  else /* lock */\n    return dotlock_lock (realpath);\n}\n\n  \n/*\n * Get privileges \n * \n * This function re-acquires the privileges we may have\n * if the user told us to do so by giving the \"-p\"\n * command line option.\n * \n * BEGIN_PRIVILEGES () won't return if an error occurs.\n * \n */\n\nstatic void\nBEGIN_PRIVILEGED (void)\n{\n#ifdef USE_SETGID\n  if (DotlockFlags & DL_FL_USEPRIV)\n  {\n    if (SETEGID (MailGid) != 0)\n    {\n      /* perror (\"setegid\"); */\n      exit (DL_EX_ERROR);\n    }\n  }\n#endif\n}\n\n/*\n * Drop privileges\n * \n * This function drops the group privileges we may have.\n * \n * END_PRIVILEGED () won't return if an error occurs.\n *\n */\n\nstatic void\nEND_PRIVILEGED (void)\n{\n#ifdef USE_SETGID\n  if (DotlockFlags & DL_FL_USEPRIV)\n  {\n    if (SETEGID (UserGid) != 0)\n    {\n      /* perror (\"setegid\"); */\n      exit (DL_EX_ERROR);\n    }\n  }\n#endif\n}\n\n#ifdef DL_STANDALONE\n\n/*\n * Usage information.\n * \n * This function doesn't return.\n * \n */\n\nstatic void \nusage (const char *av0)\n{\n  fprintf (stderr, \"dotlock [Mutt %s (%s)]\\n\", MUTT_VERSION, ReleaseDate);\n  fprintf (stderr, \"usage: %s [-t|-f|-u|-d] [-p] [-r <retries>] file\\n\",\n\t  av0);\n\n  fputs (\"\\noptions:\"\n\t\"\\n  -t\\t\\ttry\"\n\t\"\\n  -f\\t\\tforce\"\n\t\"\\n  -u\\t\\tunlock\"\n\t\"\\n  -d\\t\\tunlink\"\n\t\"\\n  -p\\t\\tprivileged\"\n#ifndef USE_SETGID\n\t\" (ignored)\"\n#endif\n\t\"\\n  -r <retries>\\tRetry locking\"\n\t\"\\n\", stderr);\n  \n  exit (DL_EX_ERROR);\n}\n\n#endif\n\n/*\n * Access checking: Let's avoid to lock other users' mail\n * spool files if we aren't permitted to read them.\n * \n * Some simple-minded access (2) checking isn't sufficient\n * here: The problem is that the user may give us a\n * deeply nested path to a file which has the same name\n * as the file he wants to lock, but different\n * permissions, say, e.g.\n * /tmp/lots/of/subdirs/var/spool/mail/root.\n * \n * He may then try to replace /tmp/lots/of/subdirs by a\n * symbolic link to / after we have invoked access () to\n * check the file's permissions.  The lockfile we'd\n * create or remove would then actually be\n * /var/spool/mail/root.\n * \n * To avoid this attack, we proceed as follows:\n * \n * - First, follow symbolic links a la\n *   dotlock_deference_symlink ().\n * \n * - get the result's dirname.\n * \n * - chdir to this directory.  If you can't, bail out.\n * \n * - try to open the file in question, only using its\n *   basename.  If you can't, bail out.\n * \n * - fstat that file and compare the result to a\n *   subsequent lstat (only using the basename).  If\n *   the comparison fails, bail out.\n * \n * dotlock_prepare () is invoked from main () directly\n * after the command line parsing has been done.\n *\n * Return values:\n * \n * 0 - Evereything's fine.  The program's new current\n *     directory is the contains the file to be locked.\n *     The string pointed to by bn contains the name of\n *     the file to be locked.\n * \n * -1 - Something failed. Don't continue.\n * \n * tlr, Jul 15 1998\n */\n\nstatic int\ndotlock_check_stats (struct stat *fsb, struct stat *lsb)\n{\n  /* S_ISLNK (fsb->st_mode) should actually be impossible,\n   * but we may have mixed up the parameters somewhere.\n   * play safe.\n   */\n\n  if (S_ISLNK (lsb->st_mode) || S_ISLNK (fsb->st_mode))\n    return -1;\n  \n  if ((lsb->st_dev != fsb->st_dev) ||\n     (lsb->st_ino != fsb->st_ino) ||\n     (lsb->st_mode != fsb->st_mode) ||\n     (lsb->st_nlink != fsb->st_nlink) ||\n     (lsb->st_uid != fsb->st_uid) ||\n     (lsb->st_gid != fsb->st_gid) ||\n     (lsb->st_rdev != fsb->st_rdev) ||\n     (lsb->st_size != fsb->st_size))\n  {\n    /* something's fishy */\n    return -1;\n  }\n  \n  return 0;\n}\n\nstatic int\ndotlock_prepare (char *bn, size_t l, const char *f, int _fd)\n{\n  struct stat fsb, lsb;\n  char realpath[_POSIX_PATH_MAX];\n  char *basename, *dirname;\n  char *p;\n  int fd;\n  int r;\n  \n  if (dotlock_deference_symlink (realpath, sizeof (realpath), f) == -1)\n    return -1;\n  \n  if ((p = strrchr (realpath, '/')))\n  {\n    *p = '\\0';\n    basename = p + 1;\n    dirname = realpath;\n  }\n  else\n  {\n    basename = realpath;\n    dirname = \".\";\n  }\n\n  if (strlen (basename) + 1 > l)\n    return -1;\n  \n  strfcpy (bn, basename, l);\n  \n  if (chdir (dirname) == -1)\n    return -1;\n\n  if (_fd != -1)\n    fd = _fd;\n  else if ((fd = open (basename, O_RDONLY)) == -1)\n    return -1;\n  \n  r = fstat (fd, &fsb);\n  \n  if (_fd == -1)\n    close (fd);\n  \n  if (r == -1)\n    return -1;\n  \n  if (lstat (basename, &lsb) == -1)\n    return -1;\n\n  if (dotlock_check_stats (&fsb, &lsb) == -1)\n    return -1;\n\n  return 0;\n}\n\n/*\n * Expand a symbolic link.\n * \n * This function expects newpath to have space for\n * at least _POSIX_PATH_MAX characters.\n *\n */\n\nstatic void \ndotlock_expand_link (char *newpath, const char *path, const char *link)\n{\n  const char *lb = NULL;\n  size_t len;\n\n  /* link is full path */\n  if (*link == '/')\n  {\n    strfcpy (newpath, link, _POSIX_PATH_MAX);\n    return;\n  }\n\n  if ((lb = strrchr (path, '/')) == NULL)\n  {\n    /* no path in link */\n    strfcpy (newpath, link, _POSIX_PATH_MAX);\n    return;\n  }\n\n  len = lb - path + 1;\n  memcpy (newpath, path, len);\n  strfcpy (newpath + len, link, _POSIX_PATH_MAX - len);\n}\n\n\n/*\n * Deference a chain of symbolic links\n * \n * The final path is written to d.\n *\n */\n\nstatic int\ndotlock_deference_symlink (char *d, size_t l, const char *path)\n{\n  struct stat sb;\n  char realpath[_POSIX_PATH_MAX];\n  const char *pathptr = path;\n  int count = 0;\n  \n  while (count++ < MAXLINKS)\n  {\n    if (lstat (pathptr, &sb) == -1)\n    {\n      /* perror (pathptr); */\n      return -1;\n    }\n    \n    if (S_ISLNK (sb.st_mode))\n    {\n      char linkfile[_POSIX_PATH_MAX];\n      char linkpath[_POSIX_PATH_MAX];\n      int len;\n\n      if ((len = readlink (pathptr, linkfile, sizeof (linkfile) - 1)) == -1)\n      {\n\t/* perror (pathptr); */\n\treturn -1;\n      }\n      \n      linkfile[len] = '\\0';\n      dotlock_expand_link (linkpath, pathptr, linkfile);\n      strfcpy (realpath, linkpath, sizeof (realpath));\n      pathptr = realpath;\n    }\n    else\n      break;\n  }\n\n  strfcpy (d, pathptr, l);\n  return 0;\n}\n\n/*\n * Dotlock a file.\n * \n * realpath is assumed _not_ to be an absolute path to\n * the file we are about to lock.  Invoke\n * dotlock_prepare () before using this function!\n * \n */\n\n#define HARDMAXATTEMPTS 10\n\nstatic int\ndotlock_lock (const char *realpath)\n{\n  char lockfile[_POSIX_PATH_MAX + LONG_STRING];\n  char nfslockfile[_POSIX_PATH_MAX + LONG_STRING];\n  size_t prev_size = 0;\n  int fd;\n  int count = 0;\n  int hard_count = 0;\n  struct stat sb;\n  time_t t;\n  \n  snprintf (nfslockfile, sizeof (nfslockfile), \"%s.%s.%d\",\n\t   realpath, Hostname, (int) getpid ());\n  snprintf (lockfile, sizeof (lockfile), \"%s.lock\", realpath);\n\n  \n  BEGIN_PRIVILEGED ();\n\n  unlink (nfslockfile);\n\n  while ((fd = open (nfslockfile, O_WRONLY | O_EXCL | O_CREAT, 0)) < 0)\n  {\n    END_PRIVILEGED ();\n\n  \n    if (errno != EAGAIN)\n    {\n      /* perror (\"cannot open NFS lock file\"); */\n      return DL_EX_ERROR;\n    }\n\n    \n    BEGIN_PRIVILEGED ();\n  }\n\n  END_PRIVILEGED ();\n\n  \n  close (fd);\n  \n  while (hard_count++ < HARDMAXATTEMPTS)\n  {\n\n    BEGIN_PRIVILEGED ();\n    link (nfslockfile, lockfile);\n    END_PRIVILEGED ();\n\n    if (stat (nfslockfile, &sb) != 0)\n    {\n      /* perror (\"stat\"); */\n      return DL_EX_ERROR;\n    }\n\n    if (sb.st_nlink == 2)\n      break;\n\n    if (count == 0)\n      prev_size = sb.st_size;\n\n    if (prev_size == sb.st_size && ++count > Retry)\n    {\n      if (DotlockFlags & DL_FL_FORCE)\n      {\n\tBEGIN_PRIVILEGED ();\n\tunlink (lockfile);\n\tEND_PRIVILEGED ();\n\n\tcount = 0;\n\tcontinue;\n      }\n      else\n      {\n\tBEGIN_PRIVILEGED ();\n\tunlink (nfslockfile);\n\tEND_PRIVILEGED ();\n\treturn DL_EX_EXIST;\n      }\n    }\n    \n    prev_size = sb.st_size;\n    \n    /* don't trust sleep (3) as it may be interrupted\n     * by users sending signals. \n     */\n    \n    t = time (NULL);\n    do {\n      sleep (1);\n    } while (time (NULL) == t);\n  }\n\n  BEGIN_PRIVILEGED ();\n  unlink (nfslockfile);\n  END_PRIVILEGED ();\n\n  return DL_EX_OK;\n}\n\n\n/*\n * Unlock a file. \n * \n * The same comment as for dotlock_lock () applies here.\n * \n */\n\nstatic int\ndotlock_unlock (const char *realpath)\n{\n  char lockfile[_POSIX_PATH_MAX + LONG_STRING];\n  int i;\n\n  snprintf (lockfile, sizeof (lockfile), \"%s.lock\",\n\t   realpath);\n  \n  BEGIN_PRIVILEGED ();\n  i = unlink (lockfile);\n  END_PRIVILEGED ();\n  \n  if (i == -1)\n    return DL_EX_ERROR;\n  \n  return DL_EX_OK;\n}\n\n/* remove an empty file */\n\nstatic int\ndotlock_unlink (const char *realpath)\n{\n  struct stat lsb;\n  int i = -1;\n\n  if (dotlock_lock (realpath) != DL_EX_OK)\n    return DL_EX_ERROR;\n\n  if ((i = lstat (realpath, &lsb)) == 0 && lsb.st_size == 0)\n    unlink (realpath);\n\n  dotlock_unlock (realpath);\n\n  return (i == 0) ?  DL_EX_OK : DL_EX_ERROR;\n}\n\n\n/*\n * Check if a file can be locked at all.\n * \n * The same comment as for dotlock_lock () applies here.\n * \n */\n\nstatic int\ndotlock_try (void)\n{\n#ifdef USE_SETGID\n  struct stat sb;\n#endif\n\n  if (access (\".\", W_OK) == 0)\n    return DL_EX_OK;\n\n#ifdef USE_SETGID\n  if (stat (\".\", &sb) == 0)\n  {\n    if ((sb.st_mode & S_IWGRP) == S_IWGRP && sb.st_gid == MailGid)\n      return DL_EX_NEED_PRIVS;\n  }\n#endif\n\n  return DL_EX_IMPOSSIBLE;\n}\n"
  },
  {
    "path": "dotlock.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1998-2000 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _DOTLOCK_H\n#define _DOTLOCK_H\n\n/* exit values */\n\n#define DL_EX_OK\t0\t\n#define DL_EX_ERROR\t1\t\n#define DL_EX_EXIST\t3\t\n#define DL_EX_NEED_PRIVS 4\n#define DL_EX_IMPOSSIBLE 5\n\n/* flags */\n\n#define DL_FL_TRY\t(1 << 0)\n#define DL_FL_UNLOCK\t(1 << 1)\n#define DL_FL_USEPRIV\t(1 << 2)\n#define DL_FL_FORCE\t(1 << 3)\n#define DL_FL_RETRY\t(1 << 4)\n#define DL_FL_UNLINK\t(1 << 5)\n\n#define DL_FL_ACTIONS (DL_FL_TRY|DL_FL_UNLOCK|DL_FL_UNLINK)\n\n#ifndef DL_STANDALONE\nint dotlock_invoke (const char *, int, int, int);\n#endif\n\n#endif\n"
  },
  {
    "path": "edit.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* Close approximation of the mailx(1) builtin editor for sending mail. */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_idna.h\"\n\n#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n#include <ctype.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <errno.h>\n\n/*\n * SLcurses_waddnstr() can't take a \"const char *\", so this is only\n * declared \"static\" (sigh)\n */\nstatic char* EditorHelp1 = N_(\"\\\n~~\t\tinsert a line beginning with a single ~\\n\\\n~b users\tadd users to the Bcc: field\\n\\\n~c users\tadd users to the Cc: field\\n\\\n~f messages\tinclude messages\\n\\\n~F messages\tsame as ~f, except also include headers\\n\\\n~h\t\tedit the message header\\n\\\n~m messages\tinclude and quote messages\\n\\\n~M messages\tsame as ~m, except include headers\\n\\\n~p\t\tprint the message\\n\");\n\nstatic char* EditorHelp2 = N_(\"\\\n~q\t\twrite file and quit editor\\n\\\n~r file\t\tread a file into the editor\\n\\\n~t users\tadd users to the To: field\\n\\\n~u\t\trecall the previous line\\n\\\n~v\t\tedit message with the $visual editor\\n\\\n~w file\t\twrite message to file\\n\\\n~x\t\tabort changes and quit editor\\n\\\n~?\t\tthis message\\n\\\n.\t\ton a line by itself ends input\\n\");\n\nstatic char **\nbe_snarf_data (FILE *f, char **buf, int *bufmax, int *buflen, LOFF_T offset,\n\t       int bytes, int prefix)\n{\n  char tmp[HUGE_STRING];\n  char *p = tmp;\n  int tmplen = sizeof (tmp);\n\n  tmp[sizeof (tmp) - 1] = 0;\n  if (prefix)\n  {\n    strfcpy (tmp, NONULL(Prefix), sizeof (tmp));\n    tmplen = mutt_strlen (tmp);\n    p = tmp + tmplen;\n    tmplen = sizeof (tmp) - tmplen;\n  }\n\n  fseeko (f, offset, 0);\n  while (bytes > 0)\n  {\n    if (fgets (p, tmplen - 1, f) == NULL) break;\n    bytes -= mutt_strlen (p);\n    if (*bufmax == *buflen)\n      safe_realloc (&buf, sizeof (char *) * (*bufmax += 25));\n    buf[(*buflen)++] = safe_strdup (tmp);\n  }\n  if (buf && *bufmax == *buflen) { /* Do not smash memory past buf */\n    safe_realloc (&buf, sizeof (char *) * (++*bufmax));\n  }\n  if (buf) buf[*buflen] = NULL;\n  return (buf);\n}\n\nstatic char **\nbe_snarf_file (const char *path, char **buf, int *max, int *len, int verbose)\n{\n  FILE *f;\n  char tmp[LONG_STRING];\n  struct stat sb;\n  \n  if ((f = fopen (path, \"r\")))\n  {\n    fstat (fileno (f), &sb);\n    buf = be_snarf_data (f, buf, max, len, 0, sb.st_size, 0);\n    if (verbose)\n    {\n      snprintf(tmp, sizeof(tmp), \"\\\"%s\\\" %lu bytes\\n\", path, (unsigned long) sb.st_size);\n      addstr(tmp);\n    }\n    safe_fclose (&f);\n  }\n  else\n  {\n    snprintf(tmp, sizeof(tmp), \"%s: %s\\n\", path, strerror(errno));\n    addstr(tmp);\n  }\n  return (buf);\n}\n\nstatic int be_barf_file (const char *path, char **buf, int buflen)\n{\n  FILE *f;\n  int i;\n  \n  if ((f = fopen (path, \"w\")) == NULL)\t\t/* __FOPEN_CHECKED__ */\n  {\n    addstr (strerror (errno));\n    addch ('\\n');\n    return (-1);\n  }\n  for (i = 0; i < buflen; i++) fputs (buf[i], f);\n  if (fclose (f) == 0) return 0;\n  printw (\"fclose: %s\\n\", strerror (errno));\n  return (-1);\n}\n\nstatic void be_free_memory (char **buf, int buflen)\n{\n  while (buflen-- > 0)\n    FREE (&buf[buflen]);\n  if (buf)\n    FREE (&buf);\n}\n\nstatic char **\nbe_include_messages (char *msg, char **buf, int *bufmax, int *buflen,\n\t\t     int pfx, int inc_hdrs)\n{\n  int offset, bytes, n;\n  char tmp[LONG_STRING];\n\n  while ((msg = strtok (msg, \" ,\")) != NULL)\n  {\n    if (mutt_atoi (msg, &n) == 0 && n > 0 && n <= Context->msgcount)\n    {\n      n--;\n\n      /* add the attribution */\n      if (Attribution)\n      {\n\tmutt_make_string (tmp, sizeof (tmp) - 1, Attribution, Context, Context->hdrs[n]);\n\tstrcat (tmp, \"\\n\");\t/* __STRCAT_CHECKED__ */\n      }\n\n      if (*bufmax == *buflen)\n\tsafe_realloc ( &buf, sizeof (char *) * (*bufmax += 25));\n      buf[(*buflen)++] = safe_strdup (tmp);\n\n      bytes = Context->hdrs[n]->content->length;\n      if (inc_hdrs)\n      {\n\toffset = Context->hdrs[n]->offset;\n\tbytes += Context->hdrs[n]->content->offset - offset;\n      }\n      else\n\toffset = Context->hdrs[n]->content->offset;\n      buf = be_snarf_data (Context->fp, buf, bufmax, buflen, offset, bytes,\n\t\t\t   pfx);\n\n      if (*bufmax == *buflen)\n\tsafe_realloc (&buf, sizeof (char *) * (*bufmax += 25));\n      buf[(*buflen)++] = safe_strdup (\"\\n\");\n    }\n    else\n      printw (_(\"%d: invalid message number.\\n\"), n);\n    msg = NULL;\n  }\n  return (buf);\n}\n\nstatic void be_print_header (ENVELOPE *env)\n{\n  char tmp[HUGE_STRING];\n\n  if (env->to)\n  {\n    addstr (\"To: \");\n    tmp[0] = 0;\n    rfc822_write_address (tmp, sizeof (tmp), env->to, 1);\n    addstr (tmp);\n    addch ('\\n');\n  }\n  if (env->cc)\n  {\n    addstr (\"Cc: \");\n    tmp[0] = 0;\n    rfc822_write_address (tmp, sizeof (tmp), env->cc, 1);\n    addstr (tmp);\n    addch ('\\n');\n  }\n  if (env->bcc)\n  {\n    addstr (\"Bcc: \");\n    tmp[0] = 0;\n    rfc822_write_address (tmp, sizeof (tmp), env->bcc, 1);\n    addstr (tmp);\n    addch ('\\n');\n  }\n  if (env->subject)\n  {\n    addstr (\"Subject: \");\n    addstr (env->subject);\n    addch ('\\n');\n  }\n  addch ('\\n');\n}\n\n/* args:\n *\tforce\toverride the $ask* vars (used for the ~h command)\n */\nstatic void be_edit_header (ENVELOPE *e, int force)\n{\n  char tmp[HUGE_STRING];\n\n  move (LINES-1, 0);\n\n  addstr (\"To: \");\n  tmp[0] = 0;\n  mutt_addrlist_to_local (e->to);\n  rfc822_write_address (tmp, sizeof (tmp), e->to, 0);\n  if (!e->to || force)\n  {\n    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 4, 0) == 0)\n    {\n      rfc822_free_address (&e->to);\n      e->to = mutt_parse_adrlist (e->to, tmp);\n      e->to = mutt_expand_aliases (e->to);\n      mutt_addrlist_to_intl (e->to, NULL);\t/* XXX - IDNA error reporting? */\n      tmp[0] = 0;\n      rfc822_write_address (tmp, sizeof (tmp), e->to, 1);\n      mvaddstr (LINES - 1, 4, tmp);\n    }\n  }\n  else\n  {\n    mutt_addrlist_to_intl (e->to, NULL);\t/* XXX - IDNA error reporting? */\n    addstr (tmp);\n  }\n  addch ('\\n');\n\n  if (!e->subject || force)\n  {\n    addstr (\"Subject: \");\n    strfcpy (tmp, e->subject ? e->subject: \"\", sizeof (tmp));\n    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 9, 0) == 0)\n      mutt_str_replace (&e->subject, tmp);\n    addch ('\\n');\n  }\n\n  if ((!e->cc && option (OPTASKCC)) || force)\n  {\n    addstr (\"Cc: \");\n    tmp[0] = 0;\n    mutt_addrlist_to_local (e->cc);\n    rfc822_write_address (tmp, sizeof (tmp), e->cc, 0);\n    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 4, 0) == 0)\n    {\n      rfc822_free_address (&e->cc);\n      e->cc = mutt_parse_adrlist (e->cc, tmp);\n      e->cc = mutt_expand_aliases (e->cc);\n      tmp[0] = 0;\n      mutt_addrlist_to_intl (e->cc, NULL);\n      rfc822_write_address (tmp, sizeof (tmp), e->cc, 1);\n      mvaddstr (LINES - 1, 4, tmp);\n    }\n    else\n      mutt_addrlist_to_intl (e->cc, NULL);\n    addch ('\\n');\n  }\n\n  if (option (OPTASKBCC) || force)\n  {\n    addstr (\"Bcc: \");\n    tmp[0] = 0;\n    mutt_addrlist_to_local (e->bcc);\n    rfc822_write_address (tmp, sizeof (tmp), e->bcc, 0);\n    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 5, 0) == 0)\n    {\n      rfc822_free_address (&e->bcc);\n      e->bcc = mutt_parse_adrlist (e->bcc, tmp);\n      e->bcc = mutt_expand_aliases (e->bcc);\n      mutt_addrlist_to_intl (e->bcc, NULL);\n      tmp[0] = 0;\n      rfc822_write_address (tmp, sizeof (tmp), e->bcc, 1);\n      mvaddstr (LINES - 1, 5, tmp);\n    }\n    else\n      mutt_addrlist_to_intl (e->bcc, NULL);\n    addch ('\\n');\n  }\n}\n\nint mutt_builtin_editor (const char *path, HEADER *msg, HEADER *cur)\n{\n  char **buf = NULL;\n  int bufmax = 0, buflen = 0;\n  char tmp[LONG_STRING];\n  int abort = 0;\n  int done = 0;\n  int i;\n  char *p;\n  \n  scrollok (stdscr, TRUE);\n\n  be_edit_header (msg->env, 0);\n\n  addstr (_(\"(End message with a . on a line by itself)\\n\"));\n\n  buf = be_snarf_file (path, buf, &bufmax, &buflen, 0);\n\n  tmp[0] = 0;\n  while (!done)\n  {\n    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 0, 0) == -1)\n    {\n      tmp[0] = 0;\n      continue;\n    }\n    addch ('\\n');\n\n    if (EscChar && tmp[0] == EscChar[0] && tmp[1] != EscChar[0])\n    {\n      /* remove trailing whitespace from the line */\n      p = tmp + mutt_strlen (tmp) - 1;\n      while (p >= tmp && ISSPACE (*p))\n\t*p-- = 0;\n\n      p = tmp + 2;\n      SKIPWS (p);\n\n      switch (tmp[1])\n      {\n\tcase '?':\n\t  addstr (_(EditorHelp1));\n          addstr (_(EditorHelp2));\n\t  break;\n\tcase 'b':\n\t  msg->env->bcc = mutt_parse_adrlist (msg->env->bcc, p);\n\t  msg->env->bcc = mutt_expand_aliases (msg->env->bcc);\n\t  break;\n\tcase 'c':\n\t  msg->env->cc = mutt_parse_adrlist (msg->env->cc, p);\n\t  msg->env->cc = mutt_expand_aliases (msg->env->cc);\n\t  break;\n\tcase 'h':\n\t  be_edit_header (msg->env, 1);\n\t  break;\n\tcase 'F':\n\tcase 'f':\n\tcase 'm':\n\tcase 'M':\n\t  if (Context)\n\t  {\n\t    if (!*p && cur)\n \t    {\n\t      /* include the current message */\n\t      p = tmp + mutt_strlen (tmp) + 1;\n\t      snprintf (tmp + mutt_strlen (tmp), sizeof (tmp) - mutt_strlen (tmp), \" %d\",\n\t\t\t\t\t\t\t\tcur->msgno + 1);\n\t    }\n\t    buf = be_include_messages (p, buf, &bufmax, &buflen,\n\t\t\t\t       (ascii_tolower (tmp[1]) == 'm'),\n\t\t\t\t       (ascii_isupper ((unsigned char) tmp[1])));\n\t  }\n\t  else\n\t    addstr (_(\"No mailbox.\\n\"));\n\t  break;\n\tcase 'p':\n\t  addstr (\"-----\\n\");\n\t  addstr (_(\"Message contains:\\n\"));\n\t  be_print_header (msg->env);\n\t  for (i = 0; i < buflen; i++)\n\t    addstr (buf[i]);\n          /* L10N:\n             This entry is shown AFTER the message content,\n             not IN the middle of the content.\n             So it doesn't mean \"(message will continue)\"\n             but means \"(press any key to continue using mutt)\". */\n\t  addstr (_(\"(continue)\\n\"));\n\t  break;\n\tcase 'q':\n\t  done = 1;\n\t  break;\n\tcase 'r':\n\t  if (*p)\n          {\n\t    strncpy(tmp, p, sizeof(tmp));\n\t    mutt_expand_path(tmp, sizeof(tmp));\n\t    buf = be_snarf_file (tmp, buf, &bufmax, &buflen, 1);\n          }\n\t  else\n\t    addstr (_(\"missing filename.\\n\"));\n\t  break;\n\tcase 's':\n\t  mutt_str_replace (&msg->env->subject, p);\n\t  break;\n\tcase 't':\n\t  msg->env->to = rfc822_parse_adrlist (msg->env->to, p);\n\t  msg->env->to = mutt_expand_aliases (msg->env->to);\n\t  break;\n\tcase 'u':\n\t  if (buflen)\n\t  {\n\t    buflen--;\n\t    strfcpy (tmp, buf[buflen], sizeof (tmp));\n\t    tmp[mutt_strlen (tmp)-1] = 0;\n\t    FREE (&buf[buflen]);\n\t    buf[buflen] = NULL;\n\t    continue;\n\t  }\n\t  else\n\t    addstr (_(\"No lines in message.\\n\"));\n\t  break;\n\n\tcase 'e':\n\tcase 'v':\n\t  if (be_barf_file (path, buf, buflen) == 0)\n\t  {\n\t    char *tag, *err;\n\t    be_free_memory (buf, buflen);\n\t    buf = NULL;\n\t    bufmax = buflen = 0;\n\n\t    if (option (OPTEDITHDRS))\n\t    {\n\t      mutt_env_to_local (msg->env);\n\t      mutt_edit_headers (NONULL(Visual), path, msg, NULL, 0);\n\t      if (mutt_env_to_intl (msg->env, &tag, &err))\n\t\tprintw (_(\"Bad IDN in %s: '%s'\\n\"), tag, err);\n\t    }\n\t    else\n\t      mutt_edit_file (NONULL(Visual), path);\n\n\t    buf = be_snarf_file (path, buf, &bufmax, &buflen, 0);\n\n\t    addstr (_(\"(continue)\\n\"));\n\t  }\n\t  break;\n\tcase 'w':\n\t  be_barf_file (*p ? p : path, buf, buflen);\n\t  break;\n\tcase 'x':\n\t  abort = 1;\n\t  done = 1;\n\t  break;\n\tdefault:\n\t  printw (_(\"%s: unknown editor command (~? for help)\\n\"), tmp);\n\t  break;\n      }\n    }\n    else if (mutt_strcmp (\".\", tmp) == 0)\n      done = 1;\n    else\n    {\n      safe_strcat (tmp, sizeof (tmp), \"\\n\");\n      if (buflen == bufmax)\n\tsafe_realloc (&buf, sizeof (char *) * (bufmax += 25));\n      buf[buflen++] = safe_strdup (tmp[1] == '~' ? tmp + 1 : tmp);\n    }\n    \n    tmp[0] = 0;\n  }\n\n  if (!abort) be_barf_file (path, buf, buflen);\n  be_free_memory (buf, buflen);\n\n  return (abort ? -1 : 0);\n}\n"
  },
  {
    "path": "editmsg.c",
    "content": "/*\n * Copyright (C) 1999-2002 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */ \n\n/* simple, editor-based message editing */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"copy.h\"\n#include \"mailbox.h\"\n#include \"mx.h\"\n\n#include <sys/stat.h>\n#include <errno.h>\n\n#include <time.h>\n\n/*\n * return value:\n * \n * 1\tmessage not modified\n * 0\tmessage edited successfully\n * -1   error\n */\n\nstatic int edit_one_message (CONTEXT *ctx, HEADER *cur)\n{\n  char tmp[_POSIX_PATH_MAX];\n  char buff[STRING];\n  int omagic;\n  int oerrno;\n  int rc;\n\n  unsigned short o_read;\n  unsigned short o_old;\n\n  int of, cf;\n  \n  CONTEXT tmpctx;\n  MESSAGE *msg;\n\n  FILE *fp = NULL;\n\n  struct stat sb;\n  time_t mtime = 0;\n  \n  mutt_mktemp (tmp, sizeof (tmp));\n\n  omagic = DefaultMagic;\n  DefaultMagic = M_MBOX;\n\n  rc = (mx_open_mailbox (tmp, M_NEWFOLDER, &tmpctx) == NULL) ? -1 : 0;\n\n  DefaultMagic = omagic;\n\n  if (rc == -1)\n  {\n    mutt_error (_(\"could not create temporary folder: %s\"), strerror (errno));\n    return -1;\n  }\n\n  rc = mutt_append_message (&tmpctx, ctx, cur, 0, CH_NOLEN |\n\t((ctx->magic == M_MBOX || ctx->magic == M_MMDF) ? 0 : CH_NOSTATUS));\n  oerrno = errno;\n\n  mx_close_mailbox (&tmpctx, NULL);\n\n  if (rc == -1)\n  {\n    mutt_error (_(\"could not write temporary mail folder: %s\"), strerror (oerrno));\n    goto bail;\n  }\n\n  if ((rc = stat (tmp, &sb)) == -1)\n  {\n    mutt_error (_(\"Can't stat %s: %s\"), tmp, strerror (errno));\n    goto bail;\n  }\n\n  /*\n   * 2002-09-05 me@sigpipe.org\n   * The file the user is going to edit is not a real mbox, so we need to\n   * truncate the last newline in the temp file, which is logically part of\n   * the message separator, and not the body of the message.  If we fail to\n   * remove it, the message will grow by one line each time the user edits\n   * the message.\n   */\n  if (sb.st_size != 0 && truncate (tmp, sb.st_size - 1) == -1)\n  {\n    mutt_error (_(\"could not truncate temporary mail folder: %s\"),\n\t\tstrerror (errno));\n    goto bail;\n  }\n\n  mtime = mutt_decrease_mtime (tmp, &sb);\n\n  mutt_edit_file (NONULL(Editor), tmp);\n\n  if ((rc = stat (tmp, &sb)) == -1)\n  {\n    mutt_error (_(\"Can't stat %s: %s\"), tmp, strerror (errno));\n    goto bail;\n  }\n  \n  if (sb.st_size == 0)\n  {\n    mutt_message (_(\"Message file is empty!\"));\n    rc = 1;\n    goto bail;\n  }\n\n  if (sb.st_mtime == mtime)\n  {\n    mutt_message (_(\"Message not modified!\"));\n    rc = 1;\n    goto bail;\n  }\n\n  if ((fp = fopen (tmp, \"r\")) == NULL)\n  {\n    rc = -1;\n    mutt_error (_(\"Can't open message file: %s\"), strerror (errno));\n    goto bail;\n  }\n\n  if (mx_open_mailbox (ctx->path, M_APPEND, &tmpctx) == NULL)\n  {\n    rc = -1;\n    /* L10N: %s is from strerror(errno) */\n    mutt_error (_(\"Can't append to folder: %s\"), strerror (errno));\n    goto bail;\n  }\n\n  of = 0;\n  cf = ((tmpctx.magic == M_MBOX || tmpctx.magic == M_MMDF) ? 0 : CH_NOSTATUS);\n  \n  if (fgets (buff, sizeof (buff), fp) && is_from (buff, NULL, 0, NULL))\n  {\n    if (tmpctx.magic == M_MBOX || tmpctx.magic == M_MMDF)\n      cf = CH_FROM | CH_FORCE_FROM;\n  }\n  else\n    of = M_ADD_FROM;\n\n  /* \n   * XXX - we have to play games with the message flags to avoid\n   * problematic behavior with maildir folders.\n   *\n   */\n\n  o_read = cur->read; o_old = cur->old;\n  cur->read = cur->old = 0;\n  msg = mx_open_new_message (&tmpctx, cur, of);\n  cur->read = o_read; cur->old = o_old;\n\n  if (msg == NULL)\n  {\n    mutt_error (_(\"Can't append to folder: %s\"), strerror (errno));\n    mx_close_mailbox (&tmpctx, NULL);\n    goto bail;\n  }\n\n  if ((rc = mutt_copy_hdr (fp, msg->fp, 0, sb.st_size, CH_NOLEN | cf, NULL)) == 0)\n  {\n    fputc ('\\n', msg->fp);\n    rc = mutt_copy_stream (fp, msg->fp);\n  }\n\n  rc = mx_commit_message (msg, &tmpctx);\n  mx_close_message (&msg);\n  \n  mx_close_mailbox (&tmpctx, NULL);\n  \n  bail:\n  if (fp) safe_fclose (&fp);\n\n  if (rc >= 0)\n    unlink (tmp);\n\n  if (rc == 0)\n  {\n    mutt_set_flag (Context, cur, M_DELETE, 1);\n    mutt_set_flag (Context, cur, M_READ, 1);\n\n    if (option (OPTDELETEUNTAG))\n      mutt_set_flag (Context, cur, M_TAG, 0);\n  }\n  else if (rc == -1)\n    mutt_message (_(\"Error. Preserving temporary file: %s\"), tmp);\n\n    \n  return rc;\n}\n\nint mutt_edit_message (CONTEXT *ctx, HEADER *hdr)\n{\n  int i, j;\n\n  if (hdr)\n    return edit_one_message (ctx, hdr);\n\n  \n  for (i = 0; i < ctx->vcount; i++)\n  {\n    j = ctx->v2r[i];\n    if (ctx->hdrs[j]->tagged)\n    {\n      if (edit_one_message (ctx, ctx->hdrs[j]) == -1)\n\treturn -1;\n    }\n  }\n\n  return 0;\n}\n"
  },
  {
    "path": "enter.c",
    "content": "/*\n * Copyright (C) 1996-2000,2007,2011,2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2000-2001 Edmund Grimley Evans <edmundo@rano.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_curses.h\"\n#include \"keymap.h\"\n#include \"history.h\"\n\n#include <string.h>\n\n/* redraw flags for mutt_enter_string() */\nenum\n{\n  M_REDRAW_INIT = 1,\t/* go to end of line and redraw */\n  M_REDRAW_LINE\t\t/* redraw entire line */\n};\n\nstatic int my_wcwidth (wchar_t wc)\n{\n  int n = wcwidth (wc);\n  if (IsWPrint (wc) && n > 0)\n    return n;\n  if (!(wc & ~0x7f))\n    return 2;\n  if (!(wc & ~0xffff))\n    return 6;\n  return 10;\n}\n\n/* combining mark / non-spacing character */\n#define COMB_CHAR(wc) (IsWPrint (wc) && !wcwidth (wc))\n\nstatic int my_wcswidth (const wchar_t *s, size_t n)\n{\n  int w = 0;\n  while (n--)\n    w += my_wcwidth (*s++);\n  return w;\n}\n\nstatic int my_addwch (wchar_t wc)\n{\n  int n = wcwidth (wc);\n  if (IsWPrint (wc) && n > 0)\n    return mutt_addwch (wc);\n  if (!(wc & ~0x7f))\n    return printw (\"^%c\", ((int)wc + 0x40) & 0x7f);\n  if (!(wc & ~0xffff))\n    return printw (\"\\\\u%04x\", (int)wc);\n  return printw (\"\\\\u%08x\", (int)wc);\n}\n\nstatic size_t width_ceiling (const wchar_t *s, size_t n, int w1)\n{\n  const wchar_t *s0 = s;\n  int w = 0;\n  for (; n; s++, n--)\n    if ((w += my_wcwidth (*s)) > w1)\n      break;\n  return s - s0;  \n}\n\nstatic void my_wcstombs (char *dest, size_t dlen, const wchar_t *src, size_t slen)\n{\n  mbstate_t st;\n  size_t k;\n\n  /* First convert directly into the destination buffer */\n  memset (&st, 0, sizeof (st));\n  for (; slen && dlen >= MB_LEN_MAX; dest += k, dlen -= k, src++, slen--)\n    if ((k = wcrtomb (dest, *src, &st)) == (size_t)(-1))\n      break;\n\n  /* If this works, we can stop now */\n  if (dlen >= MB_LEN_MAX) {\n    wcrtomb (dest, 0, &st);\n    return;\n  }\n\n  /* Otherwise convert any remaining data into a local buffer */\n  {\n    char buf[3 * MB_LEN_MAX];\n    char *p = buf;\n\n    for (; slen && p - buf < dlen; p += k, src++, slen--)\n      if ((k = wcrtomb (p, *src, &st)) == (size_t)(-1))\n\tbreak;\n    p += wcrtomb (p, 0, &st);\n\n    /* If it fits into the destination buffer, we can stop now */\n    if (p - buf <= dlen) {\n      memcpy (dest, buf, p - buf);\n      return;\n    }\n\n    /* Otherwise we truncate the string in an ugly fashion */\n    memcpy (dest, buf, dlen);\n    dest[dlen - 1] = '\\0'; /* assume original dlen > 0 */\n  }\n}\n\nstatic size_t my_mbstowcs (wchar_t **pwbuf, size_t *pwbuflen, size_t i, char *buf)\n{\n  wchar_t wc;\n  mbstate_t st;\n  size_t k;\n  wchar_t *wbuf;\n  size_t wbuflen;\n\n  wbuf = *pwbuf, wbuflen = *pwbuflen;\n  \n  while (*buf)\n  {\n    memset (&st, 0, sizeof (st));\n    for (; (k = mbrtowc (&wc, buf, MB_LEN_MAX, &st)) &&\n\t k != (size_t)(-1) && k != (size_t)(-2); buf += k)\n    {\n      if (i >= wbuflen)\n      {\n\twbuflen = i + 20;\n\tsafe_realloc (&wbuf, wbuflen * sizeof (*wbuf));\n      }\n      wbuf[i++] = wc;\n    }\n    if (*buf && (k == (size_t) -1 || k == (size_t) -2))\n    {\n      if (i >= wbuflen) \n      {\n\twbuflen = i + 20;\n\tsafe_realloc (&wbuf, wbuflen * sizeof (*wbuf));\n      }\n      wbuf[i++] = replacement_char();\n      buf++;\n    }\n  }\n  *pwbuf = wbuf, *pwbuflen = wbuflen;\n  return i;\n}\n\n/*\n * Replace part of the wchar_t buffer, from FROM to CURPOS, by BUF.\n */\n\nstatic void replace_part (ENTER_STATE *state, size_t from, char *buf)\n{\n  /* Save the suffix */\n  size_t savelen = state->lastchar - state->curpos;\n  wchar_t *savebuf = NULL;\n\n  if (savelen)\n  {\n    savebuf = safe_calloc (savelen, sizeof (wchar_t));\n    memcpy (savebuf, state->wbuf + state->curpos, savelen * sizeof (wchar_t));\n  }\n\n  /* Convert to wide characters */\n  state->curpos = my_mbstowcs (&state->wbuf, &state->wbuflen, from, buf);\n\n  if (savelen)\n  {\n    /* Make space for suffix */\n    if (state->curpos + savelen > state->wbuflen)\n    {\n      state->wbuflen = state->curpos + savelen;\n      safe_realloc (&state->wbuf, state->wbuflen * sizeof (wchar_t));\n    }\n\n    /* Restore suffix */\n    memcpy (state->wbuf + state->curpos, savebuf, savelen * sizeof (wchar_t));\n    FREE (&savebuf);\n  }\n\n  state->lastchar = state->curpos + savelen;\n}\n\n/*\n * Return 1 if the character is not typically part of a pathname\n */\nstatic inline int is_shell_char(wchar_t ch)\n{\n  static const wchar_t shell_chars[] = L\"<>&()$?*;{}| \"; /* ! not included because it can be part of a pathname in Mutt */\n  return wcschr(shell_chars, ch) != NULL;\n}\n\n/*\n * Returns:\n *\t1 need to redraw the screen and call me again\n *\t0 if input was given\n * \t-1 if abort.\n */\n\nint  mutt_enter_string(char *buf, size_t buflen, int y, int x, int flags)\n{\n  int rv;\n  ENTER_STATE *es = mutt_new_enter_state ();\n  rv = _mutt_enter_string (buf, buflen, y, x, flags, 0, NULL, NULL, es);\n  mutt_free_enter_state (&es);\n  return rv;\n}\n\nint _mutt_enter_string (char *buf, size_t buflen, int y, int x,\n\t\t\tint flags, int multiple, char ***files, int *numfiles,\n\t\t\tENTER_STATE *state)\n{\n  int width = COLS - x - 1;\n  int redraw;\n  int pass = (flags & M_PASS);\n  int first = 1;\n  int ch, w, r;\n  size_t i;\n  wchar_t *tempbuf = 0;\n  size_t templen = 0;\n  history_class_t hclass;\n  wchar_t wc;\n  mbstate_t mbstate;\n\n  int rv = 0;\n  memset (&mbstate, 0, sizeof (mbstate));\n  \n  if (state->wbuf)\n  {\n    /* Coming back after return 1 */\n    redraw = M_REDRAW_LINE;\n    first = 0;\n  }\n  else\n  {\n    /* Initialise wbuf from buf */\n    state->wbuflen = 0;\n    state->lastchar = my_mbstowcs (&state->wbuf, &state->wbuflen, 0, buf);\n    redraw = M_REDRAW_INIT;\n  }\n\n  if (flags & M_FILE)\n    hclass = HC_FILE;\n  else if (flags & M_EFILE)\n    hclass = HC_MBOX;\n  else if (flags & M_CMD)\n    hclass = HC_CMD;\n  else if (flags & M_ALIAS)\n    hclass = HC_ALIAS;\n  else if (flags & M_COMMAND)\n    hclass = HC_COMMAND;\n  else if (flags & M_PATTERN)\n    hclass = HC_PATTERN;\n  else \n    hclass = HC_OTHER;\n    \n  for (;;)\n  {\n    if (redraw && !pass)\n    {\n      if (redraw == M_REDRAW_INIT)\n      {\n\t/* Go to end of line */\n\tstate->curpos = state->lastchar;\n\tstate->begin = width_ceiling (state->wbuf, state->lastchar, my_wcswidth (state->wbuf, state->lastchar) - width + 1);\n      } \n      if (state->curpos < state->begin ||\n\t  my_wcswidth (state->wbuf + state->begin, state->curpos - state->begin) >= width)\n\tstate->begin = width_ceiling (state->wbuf, state->lastchar, my_wcswidth (state->wbuf, state->curpos) - width / 2);\n      move (y, x);\n      w = 0;\n      for (i = state->begin; i < state->lastchar; i++)\n      {\n\tw += my_wcwidth (state->wbuf[i]);\n\tif (w > width)\n\t  break;\n\tmy_addwch (state->wbuf[i]);\n      }\n      clrtoeol ();\n      move (y, x + my_wcswidth (state->wbuf + state->begin, state->curpos - state->begin));\n    }\n    mutt_refresh ();\n\n    if ((ch = km_dokey (MENU_EDITOR)) == -1)\n    {\n      rv = -1; \n      goto bye;\n    }\n\n    if (ch != OP_NULL)\n    {\n      first = 0;\n      if (ch != OP_EDITOR_COMPLETE && ch != OP_EDITOR_COMPLETE_QUERY)\n\tstate->tabs = 0;\n      redraw = M_REDRAW_LINE;\n      switch (ch)\n      {\n\tcase OP_EDITOR_HISTORY_UP:\n\t  state->curpos = state->lastchar;\n\t  if (mutt_history_at_scratch (hclass))\n\t  {\n\t    my_wcstombs (buf, buflen, state->wbuf, state->curpos);\n\t    mutt_history_save_scratch (hclass, buf);\n\t  }\n\t  replace_part (state, 0, mutt_history_prev (hclass));\n\t  redraw = M_REDRAW_INIT;\n\t  break;\n\n\tcase OP_EDITOR_HISTORY_DOWN:\n\t  state->curpos = state->lastchar;\n\t  if (mutt_history_at_scratch (hclass))\n\t  {\n\t    my_wcstombs (buf, buflen, state->wbuf, state->curpos);\n\t    mutt_history_save_scratch (hclass, buf);\n\t  }\n\t  replace_part (state, 0, mutt_history_next (hclass));\n\t  redraw = M_REDRAW_INIT;\n\t  break;\n\n\tcase OP_EDITOR_BACKSPACE:\n\t  if (state->curpos == 0)\n\t    BEEP ();\n\t  else\n\t  {\n\t    i = state->curpos;\n\t    while (i && COMB_CHAR (state->wbuf[i - 1]))\n\t      --i;\n\t    if (i)\n\t      --i;\n\t    memmove (state->wbuf + i, state->wbuf + state->curpos, (state->lastchar - state->curpos) * sizeof (wchar_t));\n\t    state->lastchar -= state->curpos - i;\n\t    state->curpos = i;\n\t  }\n\t  break;\n\n\tcase OP_EDITOR_BOL:\n\t  state->curpos = 0;\n\t  break;\n\n\tcase OP_EDITOR_EOL:\n\t  redraw= M_REDRAW_INIT;\n\t  break;\n\n\tcase OP_EDITOR_KILL_LINE:\n\t  state->curpos = state->lastchar = 0;\n\t  break;\n\n\tcase OP_EDITOR_KILL_EOL:\n\t  state->lastchar = state->curpos;\n\t  break;\n\n\tcase OP_EDITOR_BACKWARD_CHAR:\n\t  if (state->curpos == 0)\n\t    BEEP ();\n\t  else\n\t  {\n\t    while (state->curpos && COMB_CHAR (state->wbuf[state->curpos - 1]))\n\t      state->curpos--;\n\t    if (state->curpos)\n\t      state->curpos--;\n\t  }\n\t  break;\n\n\tcase OP_EDITOR_FORWARD_CHAR:\n\t  if (state->curpos == state->lastchar)\n\t    BEEP ();\n\t  else\n\t  {\n\t    ++state->curpos;\n\t    while (state->curpos < state->lastchar && COMB_CHAR (state->wbuf[state->curpos]))\n\t      ++state->curpos;\n\t  }\n\t  break;\n\n\tcase OP_EDITOR_BACKWARD_WORD:\n\t  if (state->curpos == 0)\n\t    BEEP ();\n\t  else\n\t  {\n\t    while (state->curpos && iswspace (state->wbuf[state->curpos - 1]))\n\t      --state->curpos;\n\t    while (state->curpos && !iswspace (state->wbuf[state->curpos - 1]))\n\t      --state->curpos;\n\t  }\n\t  break;\n\n\tcase OP_EDITOR_FORWARD_WORD:\n\t  if (state->curpos == state->lastchar)\n\t    BEEP ();\n\t  else\n\t  {\n\t    while (state->curpos < state->lastchar && iswspace (state->wbuf[state->curpos]))\n\t      ++state->curpos;\n\t    while (state->curpos < state->lastchar && !iswspace (state->wbuf[state->curpos]))\n\t      ++state->curpos;\n\t  }\n\t  break;\n\n\tcase OP_EDITOR_CAPITALIZE_WORD:\n\tcase OP_EDITOR_UPCASE_WORD:\n\tcase OP_EDITOR_DOWNCASE_WORD:\n\t  if (state->curpos == state->lastchar)\n\t  {\n\t    BEEP ();\n\t    break;\n\t  }\n\t  while (state->curpos && !iswspace (state->wbuf[state->curpos]))\n\t    --state->curpos;\n\t  while (state->curpos < state->lastchar && iswspace (state->wbuf[state->curpos]))\n\t    ++state->curpos;\n\t  while (state->curpos < state->lastchar && !iswspace (state->wbuf[state->curpos]))\n\t  {\n\t    if (ch == OP_EDITOR_DOWNCASE_WORD)\n\t      state->wbuf[state->curpos] = towlower (state->wbuf[state->curpos]);\n\t    else\n\t    {\n\t      state->wbuf[state->curpos] = towupper (state->wbuf[state->curpos]);\n\t      if (ch == OP_EDITOR_CAPITALIZE_WORD)\n\t\tch = OP_EDITOR_DOWNCASE_WORD;\n\t    }\n\t    state->curpos++;\n\t  }\n\t  break;\n\n\tcase OP_EDITOR_DELETE_CHAR:\n\t  if (state->curpos == state->lastchar)\n\t    BEEP ();\n\t  else\n\t  {\n\t    i = state->curpos;\n\t    while (i < state->lastchar && COMB_CHAR (state->wbuf[i]))\n\t      ++i;\n\t    if (i < state->lastchar)\n\t      ++i;\n\t    while (i < state->lastchar && COMB_CHAR (state->wbuf[i]))\n\t      ++i;\n\t    memmove (state->wbuf + state->curpos, state->wbuf + i, (state->lastchar - i) * sizeof (wchar_t));\n\t    state->lastchar -= i - state->curpos;\n\t  }\n\t  break;\n\n\tcase OP_EDITOR_KILL_WORD:\n\t  /* delete to beginning of word */\n\t  if (state->curpos != 0)\n\t  {\n\t    i = state->curpos;\n\t    while (i && iswspace (state->wbuf[i - 1]))\n\t      --i;\n\t    if (i)\n\t    {\n\t      if (iswalnum (state->wbuf[i - 1]))\n\t      {\n\t\tfor (--i; i && iswalnum (state->wbuf[i - 1]); i--)\n\t\t  ;\n\t      }\n\t      else\n\t\t--i;\n\t    }\n\t    memmove (state->wbuf + i, state->wbuf + state->curpos,\n\t\t     (state->lastchar - state->curpos) * sizeof (wchar_t));\n\t    state->lastchar += i - state->curpos;\n\t    state->curpos = i;\n\t  }\n\t  break;\n\n\tcase OP_EDITOR_KILL_EOW:\n\t  /* delete to end of word */\n\n\t  /* first skip over whitespace */\n\t  for (i = state->curpos;\n\t       i < state->lastchar && iswspace (state->wbuf[i]); i++)\n\t    ;\n\n\t  /* if there are any characters left.. */\n\t  if (i < state->lastchar)\n\t  {\n\t    /* if the current character is alphanumeric.. */\n\t    if (iswalnum (state->wbuf[i]))\n\t    {\n\t      /* skip over the rest of the word consistent of only alphanumerics */\n\t      for (; i < state->lastchar && iswalnum (state->wbuf[i]); i++)\n\t\t;\n\t    }\n\t    else\n\t    {\n\t      /* skip over one non-alphanumeric character */\n\t      ++i;\n\t    }\n\t  }\n\n\t  memmove (state->wbuf + state->curpos, state->wbuf + i,\n\t\t   (state->lastchar - i) * sizeof (wchar_t));\n\t  state->lastchar += state->curpos - i;\n\t  break;\n\n\tcase OP_EDITOR_BUFFY_CYCLE:\n\t  if (flags & M_EFILE)\n\t  {\n\t    first = 1; /* clear input if user types a real key later */\n\t    my_wcstombs (buf, buflen, state->wbuf, state->curpos);\n\t    mutt_buffy (buf, buflen);\n\t    state->curpos = state->lastchar = my_mbstowcs (&state->wbuf, &state->wbuflen, 0, buf);\n\t    break;\n\t  }\n\t  else if (!(flags & M_FILE))\n\t    goto self_insert;\n\t  /* fall through to completion routine (M_FILE) */\n\n\tcase OP_EDITOR_COMPLETE:\n\tcase OP_EDITOR_COMPLETE_QUERY:\n\t  state->tabs++;\n\t  if (flags & M_CMD)\n\t  {\n\t    for (i = state->curpos; i && !is_shell_char(state->wbuf[i-1]); i--)\n\t      ;\n\t    my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);\n\t    if (tempbuf && templen == state->lastchar - i &&\n\t\t!memcmp (tempbuf, state->wbuf + i, (state->lastchar - i) * sizeof (wchar_t)))\n\t    {\n\t      mutt_select_file (buf, buflen, (flags & M_EFILE) ? M_SEL_FOLDER : 0);\n\t      set_option (OPTNEEDREDRAW);\n\t      if (*buf)\n\t\treplace_part (state, i, buf);\n\t      rv = 1; \n\t      goto bye;\n\t    }\n\t    if (!mutt_complete (buf, buflen))\n\t    {\n\t      templen = state->lastchar - i;\n\t      safe_realloc (&tempbuf, templen * sizeof (wchar_t));\n\t    }\n\t    else\n\t      BEEP ();\n\n\t    replace_part (state, i, buf);\n\t  }\n\t  else if (flags & M_ALIAS && ch == OP_EDITOR_COMPLETE)\n\t  {\n\t    /* invoke the alias-menu to get more addresses */\n\t    for (i = state->curpos; i && state->wbuf[i-1] != ',' && \n\t\t state->wbuf[i-1] != ':'; i--)\n\t      ;\n\t    for (; i < state->lastchar && state->wbuf[i] == ' '; i++)\n\t      ;\n\t    my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);\n\t    r = mutt_alias_complete (buf, buflen);\n\t    replace_part (state, i, buf);\n\t    if (!r)\n\t    {\n\t      rv = 1;\n\t      goto bye;\n\t    }\n\t    break;\n\t  }\n\t  else if (flags & M_ALIAS && ch == OP_EDITOR_COMPLETE_QUERY)\n\t  {\n\t    /* invoke the query-menu to get more addresses */\n\t    if ((i = state->curpos))\n\t    {\n\t      for (; i && state->wbuf[i - 1] != ','; i--)\n\t\t;\n\t      for (; i < state->curpos && state->wbuf[i] == ' '; i++)\n\t\t;\n\t    }\n\n\t    my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);\n\t    mutt_query_complete (buf, buflen);\n\t    replace_part (state, i, buf);\n\n\t    rv = 1; \n\t    goto bye;\n\t  }\n\t  else if (flags & M_COMMAND)\n\t  {\n\t    my_wcstombs (buf, buflen, state->wbuf, state->curpos);\n\t    i = strlen (buf);\n\t    if (i && buf[i - 1] == '=' &&\n\t\tmutt_var_value_complete (buf, buflen, i))\n\t      state->tabs = 0;\n\t    else if (!mutt_command_complete (buf, buflen, i, state->tabs))\n\t      BEEP ();\n\t    replace_part (state, 0, buf);\n\t  }\n\t  else if (flags & (M_FILE | M_EFILE))\n\t  {\n\t    my_wcstombs (buf, buflen, state->wbuf, state->curpos);\n\n\t    /* see if the path has changed from the last time */\n\t    if ((!tempbuf && !state->lastchar) || (tempbuf && templen == state->lastchar &&\n\t\t!memcmp (tempbuf, state->wbuf, state->lastchar * sizeof (wchar_t))))\n\t    {\n\t      _mutt_select_file (buf, buflen, \n\t\t\t\t ((flags & M_EFILE) ? M_SEL_FOLDER : 0) | (multiple ? M_SEL_MULTI : 0), \n\t\t\t\t files, numfiles);\n\t      set_option (OPTNEEDREDRAW);\n\t      if (*buf)\n\t      {\n\t\tmutt_pretty_mailbox (buf, buflen);\n\t\tif (!pass)\n\t\t  mutt_history_add (hclass, buf, 1);\n\t\trv = 0;\n\t\tgoto bye;\n\t      }\n\n\t      /* file selection cancelled */\n\t      rv = 1;\n\t      goto bye;\n\t    }\n\n\t    if (!mutt_complete (buf, buflen))\n\t    {\n\t      templen = state->lastchar;\n\t      safe_realloc (&tempbuf, templen * sizeof (wchar_t));\n\t      memcpy (tempbuf, state->wbuf, templen * sizeof (wchar_t));\n\t    }\n\t    else\n\t      BEEP (); /* let the user know that nothing matched */\n\t    replace_part (state, 0, buf);\n\t  }\n#if USE_NOTMUCH\n\t  else if (flags & M_NM_QUERY)\n\t  {\n\t    my_wcstombs (buf, buflen, state->wbuf, state->curpos);\n\t    i = strlen (buf);\n\t    if (!mutt_nm_query_complete(buf, buflen, i, state->tabs))\n\t      BEEP ();\n\n\t    replace_part (state, 0, buf);\n\t  }\n\t  else if (flags & M_NM_TAG)\n\t  {\n\t    my_wcstombs (buf, buflen, state->wbuf, state->curpos);\n\t    i = strlen (buf);\n\t    if (!mutt_nm_tag_complete(buf, buflen, i, state->tabs))\n\t      BEEP ();\n\n\t    replace_part (state, 0, buf);\n\t  }\n\n#endif\n\t  else\n\t    goto self_insert;\n\t  break;\n\n\tcase OP_EDITOR_QUOTE_CHAR:\n\t  {\n\t    event_t event;\n\t    /*ADDCH (LastKey);*/\n\t    event = mutt_getch ();\n\t    if (event.ch >= 0)\n\t    {\n\t      LastKey = event.ch;\n\t      goto self_insert;\n\t    }\n\t  }\n\n\tcase OP_EDITOR_TRANSPOSE_CHARS:\n\t  if (state->lastchar < 2)\n\t    BEEP ();\n\t  else\n\t{\n\t    wchar_t t;\n\n\t    if (state->curpos == 0)\n\t      state->curpos = 2;\n\t    else if (state->curpos < state->lastchar)\n\t      ++state->curpos;\n\n\t    t = state->wbuf[state->curpos - 2];\n\t    state->wbuf[state->curpos - 2] = state->wbuf[state->curpos - 1];\n\t    state->wbuf[state->curpos - 1] = t;\n\t  }\n\t  break;\n\n\tdefault:\n\t  BEEP ();\n      }\n    }\n    else\n    {\n      \nself_insert:\n\n      state->tabs = 0;\n      /* use the raw keypress */\n      ch = LastKey;\n\n#ifdef KEY_ENTER\n      /* treat ENTER the same as RETURN */\n      if (ch == KEY_ENTER)\n\tch = '\\r';\n#endif\n\n      /* quietly ignore all other function keys */\n      if (ch & ~0xff)\n\tcontinue;\n\n      /* gather the octets into a wide character */\n      {\n\tchar c;\n\tsize_t k;\n\n\tc = ch;\n\tk = mbrtowc (&wc, &c, 1, &mbstate);\n\tif (k == (size_t)(-2))\n\t  continue;\n\telse if (k && k != 1)\n\t{\n\t  memset (&mbstate, 0, sizeof (mbstate));\n\t  continue;\n\t}\n      }\n\n      if (first && (flags & M_CLEAR))\n      {\n\tfirst = 0;\n\tif (IsWPrint (wc)) /* why? */\n\t  state->curpos = state->lastchar = 0;\n      }\n\n      if (wc == '\\r' || wc == '\\n')\n      {\n\t/* Convert from wide characters */\n\tmy_wcstombs (buf, buflen, state->wbuf, state->lastchar);\n\tif (!pass)\n\t  mutt_history_add (hclass, buf, 1);\n\n\tif (multiple)\n\t{\n\t  char **tfiles;\n\t  *numfiles = 1;\n\t  tfiles = safe_calloc (*numfiles, sizeof (char *));\n\t  mutt_expand_path (buf, buflen);\n\t  tfiles[0] = safe_strdup (buf);\n\t  *files = tfiles;\n\t}\n\trv = 0; \n\tgoto bye;\n      }\n      else if (wc && (wc < ' ' || IsWPrint (wc))) /* why? */\n      {\n\tif (state->lastchar >= state->wbuflen)\n\t{\n\t  state->wbuflen = state->lastchar + 20;\n\t  safe_realloc (&state->wbuf, state->wbuflen * sizeof (wchar_t));\n\t}\n\tmemmove (state->wbuf + state->curpos + 1, state->wbuf + state->curpos, (state->lastchar - state->curpos) * sizeof (wchar_t));\n\tstate->wbuf[state->curpos++] = wc;\n\tstate->lastchar++;\n      }\n      else\n      {\n\tmutt_flushinp ();\n\tBEEP ();\n      }\n    }\n  }\n  \n  bye:\n  \n  mutt_reset_history_state (hclass);\n  FREE (&tempbuf);\n  return rv;\n}\n\nvoid mutt_free_enter_state (ENTER_STATE **esp)\n{\n  if (!esp) return;\n  \n  FREE (&(*esp)->wbuf);\n  FREE (esp);\t\t/* __FREE_CHECKED__ */\n}\n\n/*\n * TODO:\n * very narrow screen might crash it\n * sort out the input side\n * unprintable chars\n */\n"
  },
  {
    "path": "extlib.c",
    "content": "/*\n * Copyright (C) 1999-2000 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */ \n\n/* \n * Some simple dummies, so we can reuse the routines from\n * lib.c in external programs.\n */\n\n#define WHERE\n#define _EXTLIB_C\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdlib.h>\n#include \"lib.h\"\n\nvoid (*mutt_error) (const char *, ...) = mutt_nocurses_error;\n\nvoid mutt_exit (int code)\n{\n  exit (code);\n}\n\n"
  },
  {
    "path": "filter.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins.\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n\n#include <unistd.h>\n#include <stdlib.h>\n#include <sys/wait.h>\n\n/* Invokes a command on a pipe and optionally connects its stdin and stdout\n * to the specified handles.\n */\npid_t\nmutt_create_filter_fd (const char *cmd, FILE **in, FILE **out, FILE **err,\n\t\t       int fdin, int fdout, int fderr)\n{\n  int pin[2], pout[2], perr[2], thepid;\n\n  if (in)\n  {\n    *in = 0;\n    if (pipe (pin) == -1)\n      return (-1);\n  }\n\n  if (out)\n  {\n    *out = 0;\n    if (pipe (pout) == -1)\n    {\n      if (in)\n      {\n\tclose (pin[0]);\n\tclose (pin[1]);\n      }\n      return (-1);\n    }\n  }\n\n  if (err)\n  {\n    *err = 0;\n    if (pipe (perr) == -1)\n    {\n      if (in)\n      {\n\tclose (pin[0]);\n\tclose (pin[1]);\n      }\n      if (out)\n      {\n\tclose (pout[0]);\n\tclose (pout[1]);\n      }\n      return (-1);\n    }\n  }\n\n  mutt_block_signals_system ();\n\n  if ((thepid = fork ()) == 0)\n  {\n    mutt_unblock_signals_system (0);\n\n    if (in)\n    {\n      close (pin[1]);\n      dup2 (pin[0], 0);\n      close (pin[0]);\n    }\n    else if (fdin != -1)\n    {\n      dup2 (fdin, 0);\n      close (fdin);\n    }\n\n    if (out)\n    {\n      close (pout[0]);\n      dup2 (pout[1], 1);\n      close (pout[1]);\n    }\n    else if (fdout != -1)\n    {\n      dup2 (fdout, 1);\n      close (fdout);\n    }\n\n    if (err)\n    {\n      close (perr[0]);\n      dup2 (perr[1], 2);\n      close (perr[1]);\n    }\n    else if (fderr != -1)\n    {\n      dup2 (fderr, 2);\n      close (fderr);\n    }\n\n    execl (EXECSHELL, \"sh\", \"-c\", cmd, NULL);\n    _exit (127);\n  }\n  else if (thepid == -1)\n  {\n    mutt_unblock_signals_system (1);\n\n    if (in)\n    {\n      close (pin[0]);\n      close (pin[1]);\n    }\n    \n    if (out)\n    {\n      close (pout[0]);\n      close (pout[1]);\n    }\n\n    if (err)\n    {\n      close (perr[0]);\n      close (perr[1]);\n    }\n\n    return (-1);\n  }\n\n  if (out)\n  {\n    close (pout[1]);\n    *out = fdopen (pout[0], \"r\");\n  }\n\n  if (in)\n  {\n    close (pin[0]);\n    *in = fdopen (pin[1], \"w\");\n  }\n\n  if (err)\n  {\n    close (perr[1]);\n    *err = fdopen (perr[0], \"r\");\n  }\n\n  return (thepid);\n}\n\npid_t mutt_create_filter (const char *s, FILE **in, FILE **out, FILE **err)\n{\n  return (mutt_create_filter_fd (s, in, out, err, -1, -1, -1));\n}\n\nint mutt_wait_filter (pid_t pid)\n{\n  int rc;\n  \n  waitpid (pid, &rc, 0);\n  mutt_unblock_signals_system (1);\n  rc = WIFEXITED (rc) ? WEXITSTATUS (rc) : -1;\n  \n  return rc;\n}\n"
  },
  {
    "path": "flags.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"sort.h\"\n#include \"mx.h\"\n\n#ifdef USE_SIDEBAR\n#include \"sidebar.h\"\n#endif\n\nvoid _mutt_set_flag (CONTEXT *ctx, HEADER *h, int flag, int bf, int upd_ctx)\n{\n  int changed = h->changed;\n  int deleted = ctx->deleted;\n  int tagged = ctx->tagged;\n  int flagged = ctx->flagged;\n  int update = 0;\n\n  if (ctx->readonly && flag != M_TAG)\n    return; /* don't modify anything if we are read-only */\n\n  switch (flag)\n  {\n    case M_DELETE:\n\n      if (!mutt_bit_isset(ctx->rights,M_ACL_DELETE))\n\treturn;\n\n      if (bf)\n      {\n\tif (!h->deleted && !ctx->readonly)\n\t{\n\t  h->deleted = 1;\n          update = 1;\n\t  if (upd_ctx) ctx->deleted++;\n#ifdef USE_IMAP\n          /* deleted messages aren't treated as changed elsewhere so that the\n           * purge-on-sync option works correctly. This isn't applicable here */\n          if (ctx && ctx->magic == M_IMAP)\n          {\n            h->changed = 1;\n\t    if (upd_ctx) ctx->changed = 1;\n          }\n#endif\n\t}\n      }\n      else if (h->deleted)\n      {\n\th->deleted = 0;\n        update = 1;\n\tif (upd_ctx) ctx->deleted--;\n#ifdef USE_IMAP\n        /* see my comment above */\n\tif (ctx->magic == M_IMAP) \n\t{\n\t  h->changed = 1;\n\t  if (upd_ctx) ctx->changed = 1;\n\t}\n#endif\n\t/* \n\t * If the user undeletes a message which is marked as\n\t * \"trash\" in the maildir folder on disk, the folder has\n\t * been changed, and is marked accordingly.  However, we do\n\t * _not_ mark the message itself changed, because trashing\n\t * is checked in specific code in the maildir folder\n\t * driver. \n\t */\n\tif (ctx->magic == M_MAILDIR && upd_ctx && h->trash)\n\t  ctx->changed = 1;\n      }\n      break;\n\n    case M_NEW:\n\n      if (!mutt_bit_isset(ctx->rights,M_ACL_SEEN))\n\treturn;\n\n      if (bf)\n      {\n\tif (h->read || h->old)\n\t{\n          update = 1;\n\t  h->old = 0;\n\t  if (upd_ctx) ctx->new++;\n\t  if (h->read)\n\t  {\n\t    h->read = 0;\n\t    if (upd_ctx) ctx->unread++;\n\t  }\n\t  h->changed = 1;\n\t  if (upd_ctx) ctx->changed = 1;\n\t}\n      }\n      else if (!h->read)\n      {\n        update = 1;\n\tif (!h->old)\n\t  if (upd_ctx) ctx->new--;\n\th->read = 1;\n\tif (upd_ctx) ctx->unread--;\n\th->changed = 1;\n\tif (upd_ctx) ctx->changed = 1;\n      }\n      break;\n\n    case M_OLD:\n\n      if (!mutt_bit_isset(ctx->rights,M_ACL_SEEN))\n\treturn;\n\n      if (bf)\n      {\n\tif (!h->old)\n\t{\n          update = 1;\n\t  h->old = 1;\n\t  if (!h->read)\n\t    if (upd_ctx) ctx->new--;\n\t  h->changed = 1;\n\t  if (upd_ctx) ctx->changed = 1;\n\t}\n      }\n      else if (h->old)\n      {\n        update = 1;\n\th->old = 0;\n\tif (!h->read)\n\t  if (upd_ctx) ctx->new++;\n\th->changed = 1;\n\tif (upd_ctx) ctx->changed = 1;\n      }\n      break;\n\n    case M_READ:\n\n      if (!mutt_bit_isset(ctx->rights,M_ACL_SEEN))\n\treturn;\n\n      if (bf)\n      {\n\tif (!h->read)\n\t{\n          update = 1;\n\t  h->read = 1;\n\t  if (upd_ctx) ctx->unread--;\n\t  if (!h->old)\n\t    if (upd_ctx) ctx->new--;\n\t  h->changed = 1;\n\t  if (upd_ctx) ctx->changed = 1;\n\t}\n      }\n      else if (h->read)\n      {\n        update = 1;\n\th->read = 0;\n\tif (upd_ctx) ctx->unread++;\n\tif (!h->old)\n\t  if (upd_ctx) ctx->new++;\n\th->changed = 1;\n\tif (upd_ctx) ctx->changed = 1;\n      }\n      break;\n\n    case M_REPLIED:\n\n      if (!mutt_bit_isset(ctx->rights,M_ACL_WRITE))\n\treturn;\n\n      if (bf)\n      {\n\tif (!h->replied)\n\t{\n          update = 1;\n\t  h->replied = 1;\n\t  if (!h->read)\n\t  {\n\t    h->read = 1;\n\t    if (upd_ctx) ctx->unread--;\n\t    if (!h->old)\n\t      if (upd_ctx) ctx->new--;\n\t  }\n\t  h->changed = 1;\n\t  if (upd_ctx) ctx->changed = 1;\n\t}\n      }\n      else if (h->replied)\n      {\n        update = 1;\n\th->replied = 0;\n\th->changed = 1;\n\tif (upd_ctx) ctx->changed = 1;\n      }\n      break;\n\n    case M_FLAG:\n\n      if (!mutt_bit_isset(ctx->rights,M_ACL_WRITE))\n\treturn;\n\n      if (bf)\n      {\n\tif (!h->flagged)\n\t{\n          update = 1;\n\t  h->flagged = bf;\n\t  if (upd_ctx) ctx->flagged++;\n\t  h->changed = 1;\n\t  if (upd_ctx) ctx->changed = 1;\n\t}\n      }\n      else if (h->flagged)\n      {\n        update = 1;\n\th->flagged = 0;\n\tif (upd_ctx) ctx->flagged--;\n\th->changed = 1;\n\tif (upd_ctx) ctx->changed = 1;\n      }\n      break;\n\n    case M_TAG:\n      if (bf)\n      {\n\tif (!h->tagged)\n\t{\n          update = 1;\n\t  h->tagged = 1;\n\t  if (upd_ctx) ctx->tagged++;\n\t}\n      }\n      else if (h->tagged)\n      {\n        update = 1;\n\th->tagged = 0;\n\tif (upd_ctx) ctx->tagged--;\n      }\n      break;\n  }\n\n  if (update)\n    mutt_set_header_color(ctx, h);\n\n  /* if the message status has changed, we need to invalidate the cached\n   * search results so that any future search will match the current status\n   * of this message and not what it was at the time it was last searched.\n   */\n  if (h->searched && (changed != h->changed || deleted != ctx->deleted || tagged != ctx->tagged || flagged != ctx->flagged))\n    h->searched = 0;\n#ifdef USE_SIDEBAR\n  sb_draw();\n#endif\n}\n\nvoid mutt_tag_set_flag (int flag, int bf)\n{\n  int j;\n\n  for (j = 0; j < Context->vcount; j++)\n    if (Context->hdrs[Context->v2r[j]]->tagged)\n      mutt_set_flag (Context, Context->hdrs[Context->v2r[j]], flag, bf);\n}\nint mutt_thread_set_flag (HEADER *hdr, int flag, int bf, int subthread)\n{\n  THREAD *start, *cur = hdr->thread;\n  \n  if ((Sort & SORT_MASK) != SORT_THREADS)\n  {\n    mutt_error _(\"Threading is not enabled.\");\n    return (-1);\n  }\n\n  if (!subthread)\n    while (cur->parent)\n      cur = cur->parent;\n  start = cur;\n  \n  if (cur->message)\n    mutt_set_flag (Context, cur->message, flag, bf);\n\n  if ((cur = cur->child) == NULL)\n    return (0);\n\n  FOREVER\n  {\n    if (cur->message)\n      mutt_set_flag (Context, cur->message, flag, bf);\n\n    if (cur->child)\n      cur = cur->child;\n    else if (cur->next)\n      cur = cur->next;\n    else \n    {\n      while (!cur->next)\n      {\n\tcur = cur->parent;\n\tif (cur == start)\n\t  return (0);\n      }\n      cur = cur->next;\n    }\n  }\n  /* not reached */\n}\n\nint mutt_change_flag (HEADER *h, int bf)\n{\n  int i, flag;\n  event_t event;\n\n  mvprintw (LINES - 1, 0, \"%s? (D/N/O/r/*/!): \", bf ? _(\"Set flag\") : _(\"Clear flag\"));\n  clrtoeol ();\n\n  event = mutt_getch();\n  i = event.ch;\n  if (i < 0)\n  {\n    CLEARLINE (LINES-1);\n    return (-1);\n  }\n\n  CLEARLINE (LINES-1);\n\n  switch (i)\n  {\n    case 'd':\n    case 'D':\n      flag = M_DELETE;\n      break;\n\n    case 'N':\n    case 'n':\n      flag = M_NEW;\n      break;\n\n    case 'o':\n    case 'O':\n      if (h)\n\tmutt_set_flag (Context, h, M_READ, !bf);\n      else\n\tmutt_tag_set_flag (M_READ, !bf);\n      flag = M_OLD;\n      break;\n\n    case 'r':\n    case 'R':\n      flag = M_REPLIED;\n      break;\n\n    case '*':\n      flag = M_TAG;\n      break;\n\n    case '!':\n      flag = M_FLAG;\n      break;\n\n    default:\n      BEEP ();\n      return (-1);\n  }\n\n  if (h)\n    mutt_set_flag (Context, h, flag, bf);\n  else\n    mutt_tag_set_flag (flag, bf);\n\n  return 0;\n}\n"
  },
  {
    "path": "flymake.am",
    "content": "get_cs_flags = $(foreach target,$(subst .,_,$(subst -,_,$($(2)))),$($(target)_$(1)FLAGS))\nget_cs_all_flags = $(foreach type,$(2),$(call get_cs_flags,$(1),$(type)))\nget_cs_compile = $(if $(subst C,,$(1)),$($(1)COMPILE),$(COMPILE))\nget_cs_cmdline = $(call get_cs_compile,$(1)) $(call get_cs_all_flags,$(1),check_PROGRAMS bin_PROGRAMS lib_LTLIBRARIES) -fsyntax-only\n\ncheck-syntax:\n\ts=$(suffix $(CHK_SOURCES));\\\n\tif   [ \"$$s\" = \".c\"   ]; then \\\n\t    $(call get_cs_cmdline,C) $(call get_cs_cmdline,CPP) $(CHK_SOURCES);\\\n\telse exit 1; fi\n\n.PHONY: check-syntax\n"
  },
  {
    "path": "from.c",
    "content": "/*\n * Copyright (C) 1996-2000,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n\n#include <ctype.h>\n#include <string.h>\n\nstatic const char *next_word (const char *s)\n{\n  while (*s && !ISSPACE (*s))\n    s++;\n  SKIPWS (s);\n  return s;\n}\n\nint mutt_check_month (const char *s)\n{\n  int i;\n\n  for (i = 0; i < 12; i++)\n    if (mutt_strncasecmp (s, Months[i], 3) == 0)\n      return (i);\n  return (-1); /* error */\n}\n\nstatic int is_day_name (const char *s)\n{\n  int i;\n\n  if ((strlen (s) < 3) || !*(s + 3) || !ISSPACE (*(s+3)))\n    return 0;\n  for (i=0; i<7; i++)\n    if (mutt_strncasecmp (s, Weekdays[i], 3) == 0)\n      return 1;\n  return 0;\n}\n\n/*\n * A valid message separator looks like:\n *\n * From [ <return-path> ] <weekday> <month> <day> <time> [ <timezone> ] <year>\n */\n\nint is_from (const char *s, char *path, size_t pathlen, time_t *tp)\n{\n  struct tm tm;\n  int yr;\n\n  if (path)\n    *path = 0;\n\n  if (mutt_strncmp (\"From \", s, 5) != 0)\n    return 0;\n\n  s = next_word (s); /* skip over the From part. */\n  if (!*s)\n    return 0;\n\n  dprint (3, (debugfile, \"\\nis_from(): parsing: %s\", s));\n\n  if (!is_day_name (s))\n  {\n    const char *p;\n    size_t len;\n    short q = 0;\n\n    for (p = s; *p && (q || !ISSPACE (*p)); p++)\n    {\n      if (*p == '\\\\')\n      {\n\tif (*++p == '\\0') \n\t  return 0;\n      }\n      else if (*p == '\"')\n      {\n\tq = !q;\n      }\n    }\n\n    if (q || !*p) return 0;\n\n    /* pipermail archives have the return_path obscured such as \"me at mutt.org\" */\n    if (ascii_strncasecmp(p, \" at \", 4) == 0)\n    {\n      p = strchr(p + 4, ' ');\n      if (!p)\n      {\n\tdprint (1, (debugfile, \"is_from(): error parsing what appears to be a pipermail-style obscured return_path: %s\\n\", s));\n\treturn 0;\n      }\n    }\n    \n    if (path)\n    {\n      len = (size_t) (p - s);\n      if (len + 1 > pathlen)\n\tlen = pathlen - 1;\n      memcpy (path, s, len);\n      path[len] = 0;\n      dprint (3, (debugfile, \"is_from(): got return path: %s\\n\", path));\n    }\n    \n    s = p + 1;\n    SKIPWS (s);\n    if (!*s)\n      return 0;\n\n    if (!is_day_name (s))\n    {\n      dprint(1, (debugfile, \"is_from():  expected weekday, got: %s\\n\", s));\n      return 0;\n    }\n  }\n\n  s = next_word (s);\n  if (!*s) return 0;\n\n  /* do a quick check to make sure that this isn't really the day of the week.\n   * this could happen when receiving mail from a local user whose login name\n   * is the same as a three-letter abbreviation of the day of the week.\n   */\n  if (is_day_name (s))\n  {\n    s = next_word (s);\n    if (!*s) return 0;\n  }\n\n  /* now we should be on the month. */\n  if ((tm.tm_mon = mutt_check_month (s)) < 0) return 0;\n\n  /* day */\n  s = next_word (s);\n  if (!*s) return 0;\n  if (sscanf (s, \"%d\", &tm.tm_mday) != 1) return 0;\n\n  /* time */\n  s = next_word (s);\n  if (!*s) return 0;\n\n  /* Accept either HH:MM or HH:MM:SS */\n  if (sscanf (s, \"%d:%d:%d\", &tm.tm_hour, &tm.tm_min, &tm.tm_sec) == 3);\n  else if (sscanf (s, \"%d:%d\", &tm.tm_hour, &tm.tm_min) == 2)\n    tm.tm_sec = 0;\n  else\n    return 0;\n\n  s = next_word (s);\n  if (!*s) return 0;\n\n  /* timezone? */\n  if (isalpha ((unsigned char) *s) || *s == '+' || *s == '-')\n  {\n    s = next_word (s);\n    if (!*s) return 0;\n\n    /*\n     * some places have two timezone fields after the time, e.g.\n     *      From xxxx@yyyyyyy.fr Wed Aug  2 00:39:12 MET DST 1995\n     */\n    if (isalpha ((unsigned char) *s))\n    {\n      s = next_word (s);\n      if (!*s) return 0;\n    }\n  }\n\n  /* year */\n  if (sscanf (s, \"%d\", &yr) != 1) return 0;\n  tm.tm_year = yr > 1900 ? yr - 1900 : (yr < 70 ? yr + 100 : yr);\n  \n  dprint (3,(debugfile, \"is_from(): month=%d, day=%d, hr=%d, min=%d, sec=%d, yr=%d.\\n\",\n\t     tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year));\n\n  tm.tm_isdst = -1;\n\n  if (tp) *tp = mutt_mktime (&tm, 0);\n  return 1;\n}\n"
  },
  {
    "path": "functions.h",
    "content": "/*\n * Copyright (C) 1996-2000,2002 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/*\n * This file contains the structures needed to parse ``bind'' commands, as\n * well as the default bindings for each menu.\n *\n * Notes:\n *\n * - If you want to bind \\n or \\r, use M_ENTER_S so that it will work\n * correctly under both ncurses and S-Lang\n *\n * - If you need to bind a control char, use the octal value because the \\cX\n * construct does not work at this level.\n *\n * - The magic \"map:\" comments define how the map will be called in the\n * manual. Lines starting with \"**\" will be included in the manual.\n *\n */\n\n#ifdef _MAKEDOC\n# include \"config.h\"\n# include \"doc/makedoc-defs.h\"\n#endif\n\nconst struct binding_t OpGeneric[] = { /* map: generic */\n  /*\n  ** <para>\n  ** The <emphasis>generic</emphasis> menu is not a real menu, but specifies common functions\n  ** (such as movement) available in all menus except for <emphasis>pager</emphasis> and\n  ** <emphasis>editor</emphasis>.  Changing settings for this menu will affect the default\n  ** bindings for all menus (except as noted).\n  ** </para>\n  */\n  { \"top-page\",\t\tOP_TOP_PAGE,\t\t\"H\" },\n  { \"next-entry\",\tOP_NEXT_ENTRY,\t\t\"j\" },\n  { \"previous-entry\",\tOP_PREV_ENTRY,\t\t\"k\" },\n  { \"bottom-page\",\tOP_BOTTOM_PAGE,\t\t\"L\" },\n  { \"refresh\",\t\tOP_REDRAW,\t\t\"\\014\" },\n  { \"middle-page\",\tOP_MIDDLE_PAGE,\t\t\"M\" },\n  { \"search-next\",\tOP_SEARCH_NEXT,\t\t\"n\" },\n  { \"exit\",\t\tOP_EXIT,\t\t\"q\" },\n  { \"tag-entry\",\tOP_TAG,\t\t\t\"t\" },\n  { \"next-page\",\tOP_NEXT_PAGE,\t\t\"z\" },\n  { \"previous-page\",\tOP_PREV_PAGE,\t\t\"Z\" },\n  { \"last-entry\",\tOP_LAST_ENTRY,\t\t\"*\" },\n  { \"first-entry\",\tOP_FIRST_ENTRY,\t\t\"=\" },\n  { \"enter-command\",\tOP_ENTER_COMMAND,\t\":\" },\n  { \"next-line\",\tOP_NEXT_LINE,\t\t\">\" },\n  { \"previous-line\",\tOP_PREV_LINE,\t\t\"<\" },\n  { \"half-up\",\t\tOP_HALF_UP,\t\t\"[\" },\n  { \"half-down\", \tOP_HALF_DOWN,\t\t\"]\" },\n  { \"help\",\t\tOP_HELP,\t\t\"?\" },\n  { \"tag-prefix\",\tOP_TAG_PREFIX,\t\t\";\" },\n  { \"tag-prefix-cond\",\tOP_TAG_PREFIX_COND,\tNULL },\n  { \"end-cond\",\t\tOP_END_COND,\t\tNULL },\n  { \"shell-escape\",\tOP_SHELL_ESCAPE,\t\"!\" },\n  { \"select-entry\",\tOP_GENERIC_SELECT_ENTRY,M_ENTER_S },\n  { \"search\",\t\tOP_SEARCH,\t\t\"/\" },\n  { \"search-reverse\",\tOP_SEARCH_REVERSE,\t\"\\033/\" },\n  { \"search-opposite\",\tOP_SEARCH_OPPOSITE,\tNULL },\n  { \"jump\",\t\tOP_JUMP,\t\tNULL },\n  { \"current-top\",      OP_CURRENT_TOP,\t\tNULL },\n  { \"current-middle\",   OP_CURRENT_MIDDLE,\tNULL },\n  { \"current-bottom\",   OP_CURRENT_BOTTOM,\tNULL },\n  { \"what-key\",\t\tOP_WHAT_KEY,\t\tNULL },\n  { NULL,\t\t0,\t\t\tNULL }\n};\n\nconst struct binding_t OpMain[] = { /* map: index */\n  { \"create-alias\",\t\tOP_CREATE_ALIAS,\t\t\"a\" },\n  { \"bounce-message\",\t\tOP_BOUNCE_MESSAGE,\t\t\"b\" },\n  { \"break-thread\",\t\tOP_MAIN_BREAK_THREAD,\t\t\"#\" },\n  { \"change-folder\",\t\tOP_MAIN_CHANGE_FOLDER,\t\t\"c\" },\n  { \"change-folder-readonly\",\tOP_MAIN_CHANGE_FOLDER_READONLY,\t\"\\033c\" },\n  { \"next-unread-mailbox\",\tOP_MAIN_NEXT_UNREAD_MAILBOX,    NULL },\n  { \"collapse-thread\",\t\tOP_MAIN_COLLAPSE_THREAD,\t\"\\033v\" },\n  { \"collapse-all\",\t\tOP_MAIN_COLLAPSE_ALL,\t\t\"\\033V\" },\n  { \"copy-message\",\t\tOP_COPY_MESSAGE,\t\t\"C\" },\n  { \"decode-copy\",\t\tOP_DECODE_COPY,\t\t\t\"\\033C\" },\n  { \"decode-save\",\t\tOP_DECODE_SAVE,\t\t\t\"\\033s\" },\n  { \"delete-message\",\t\tOP_DELETE,\t\t\t\"d\" },\n  { \"delete-pattern\",\t\tOP_MAIN_DELETE_PATTERN,\t\t\"D\" },\n  { \"delete-thread\",\t\tOP_DELETE_THREAD,\t\t\"\\004\" },\n  { \"delete-subthread\",\t\tOP_DELETE_SUBTHREAD,\t\t\"\\033d\" },\n  { \"edit\",\t\t\tOP_EDIT_MESSAGE,\t\t\"e\" },\n  { \"edit-type\",\t\tOP_EDIT_TYPE,\t\t\t\"\\005\" },\n  { \"forward-message\",\t\tOP_FORWARD_MESSAGE,\t\t\"f\" },\n  { \"flag-message\",\t\tOP_FLAG_MESSAGE,\t\t\"F\" },\n  { \"group-reply\",\t\tOP_GROUP_REPLY,\t\t\t\"g\" },\n#ifdef USE_POP\n  { \"fetch-mail\",\t\tOP_MAIN_FETCH_MAIL,\t\t\"G\" },\n#endif\n#ifdef USE_IMAP\n  { \"imap-fetch-mail\",\t\tOP_MAIN_IMAP_FETCH,\t\tNULL },\n  { \"imap-logout-all\",\t\tOP_MAIN_IMAP_LOGOUT_ALL,\tNULL },\n#endif\n  { \"display-toggle-weed\",\t\tOP_DISPLAY_HEADERS,\t\t\"h\" },\n  { \"next-undeleted\",\t\tOP_MAIN_NEXT_UNDELETED,\t\t\"j\" },\n  { \"previous-undeleted\",\tOP_MAIN_PREV_UNDELETED,\t\t\"k\" },\n  { \"limit\",\t\t\tOP_MAIN_LIMIT,\t\t\t\"l\" },\n  { \"link-threads\",\t\tOP_MAIN_LINK_THREADS,\t\t\"&\" },\n  { \"list-reply\",\t\tOP_LIST_REPLY,\t\t\t\"L\" },\n  { \"mail\",\t\t\tOP_MAIL,\t\t\t\"m\" },\n  { \"toggle-new\",\t\tOP_TOGGLE_NEW,\t\t\t\"N\" },\n  { \"toggle-write\",\t\tOP_TOGGLE_WRITE,\t\t\"%\" },\n  { \"next-thread\",\t\tOP_MAIN_NEXT_THREAD,\t\t\"\\016\" },\n  { \"next-subthread\",\t\tOP_MAIN_NEXT_SUBTHREAD,\t\t\"\\033n\" },\n  { \"query\",\t\t\tOP_QUERY,\t\t\t\"Q\" },\n  { \"quit\",\t\t\tOP_QUIT,\t\t\t\"q\" },\n  { \"reply\",\t\t\tOP_REPLY,\t\t\t\"r\" },\n  { \"show-limit\",\t\tOP_MAIN_SHOW_LIMIT,\t\t\"\\033l\" },\n  { \"sort-mailbox\",\t\tOP_SORT,\t\t\t\"o\" },\n  { \"sort-reverse\",\t\tOP_SORT_REVERSE,\t\t\"O\" },\n  { \"print-message\",\t\tOP_PRINT,\t\t\t\"p\" },\n  { \"previous-thread\",\t\tOP_MAIN_PREV_THREAD,\t\t\"\\020\" },\n  { \"previous-subthread\",\tOP_MAIN_PREV_SUBTHREAD,\t\t\"\\033p\" },\n  { \"recall-message\",\t\tOP_RECALL_MESSAGE,\t\t\"R\" },\n  { \"read-thread\",\t\tOP_MAIN_READ_THREAD,\t\t\"\\022\" },\n  { \"read-subthread\",\t\tOP_MAIN_READ_SUBTHREAD,\t\t\"\\033r\" },\n  { \"resend-message\",\t\tOP_RESEND,\t\t\t\"\\033e\" },\n  { \"save-message\",\t\tOP_SAVE,\t\t\t\"s\" },\n  { \"tag-pattern\",\t\tOP_MAIN_TAG_PATTERN,\t\t\"T\" },\n  { \"tag-subthread\",\t\tOP_TAG_SUBTHREAD,\t\tNULL },\n  { \"tag-thread\",\t\tOP_TAG_THREAD,\t\t\t\"\\033t\" },\n  { \"untag-pattern\",\t\tOP_MAIN_UNTAG_PATTERN,\t\t\"\\024\" },\n  { \"undelete-message\",\t\tOP_UNDELETE,\t\t\t\"u\" },\n  { \"undelete-pattern\",\t\tOP_MAIN_UNDELETE_PATTERN,\t\"U\"},\n  { \"undelete-subthread\",\tOP_UNDELETE_SUBTHREAD,\t\t\"\\033u\" },\n  { \"undelete-thread\",\t\tOP_UNDELETE_THREAD,\t\t\"\\025\" },\n  { \"view-attachments\",\t\tOP_VIEW_ATTACHMENTS,\t\t\"v\" },\n  { \"show-version\",\t\tOP_VERSION,\t\t\t\"V\" },\n  { \"set-flag\",\t\t\tOP_MAIN_SET_FLAG,\t\t\"w\" },\n  { \"clear-flag\",\t\tOP_MAIN_CLEAR_FLAG,\t\t\"W\" },\n  { \"display-message\",\t\tOP_DISPLAY_MESSAGE,\t\tM_ENTER_S },\n  { \"buffy-list\",\t\tOP_BUFFY_LIST,\t\t\t\".\" },\n  { \"sync-mailbox\",\t\tOP_MAIN_SYNC_FOLDER,\t\t\"$\" },\n  { \"display-address\",\t\tOP_DISPLAY_ADDRESS,\t\t\"@\" },\n  { \"pipe-message\",\t\tOP_PIPE,\t\t\t\"|\" },\n  { \"next-new\",\t\t\tOP_MAIN_NEXT_NEW,\t\tNULL },\n  { \"next-new-then-unread\",\tOP_MAIN_NEXT_NEW_THEN_UNREAD,\t\"\\t\" },\n  { \"previous-new\",\t\tOP_MAIN_PREV_NEW,\t\tNULL },\n  { \"previous-new-then-unread\",\tOP_MAIN_PREV_NEW_THEN_UNREAD,\t\"\\033\\t\" },\n  { \"next-unread\",\t\tOP_MAIN_NEXT_UNREAD,\t\tNULL },\n  { \"previous-unread\",\t\tOP_MAIN_PREV_UNREAD,\t\tNULL },\n  { \"parent-message\",\t\tOP_MAIN_PARENT_MESSAGE,\t\t\"P\" },\n\n\n  { \"extract-keys\",\t\tOP_EXTRACT_KEYS,\t\t\"\\013\" },\n  { \"forget-passphrase\",\tOP_FORGET_PASSPHRASE,\t\t\"\\006\" },\n  { \"check-traditional-pgp\",\tOP_CHECK_TRADITIONAL,\t\t\"\\033P\" },\n  { \"mail-key\",\t\t\tOP_MAIL_KEY,\t\t\t\"\\033k\" },\n  { \"decrypt-copy\",\t\tOP_DECRYPT_COPY,\t\tNULL },\n  { \"decrypt-save\",\t\tOP_DECRYPT_SAVE,\t\tNULL },\n  { \"quasi-delete\",\t\tOP_MAIN_QUASI_DELETE,\t\tNULL },\n\n#ifdef USE_SIDEBAR\n  { \"sidebar-next\",\t\tOP_SIDEBAR_NEXT,\t\tNULL },\n  { \"sidebar-next-new\",\t\tOP_SIDEBAR_NEXT_NEW,\t\tNULL },\n  { \"sidebar-open\",\t\tOP_SIDEBAR_OPEN,\t\tNULL },\n  { \"sidebar-page-down\",\tOP_SIDEBAR_PAGE_DOWN,\t\tNULL },\n  { \"sidebar-page-up\",\t\tOP_SIDEBAR_PAGE_UP,\t\tNULL },\n  { \"sidebar-prev\",\t\tOP_SIDEBAR_PREV,\t\tNULL },\n  { \"sidebar-prev-new\",\t\tOP_SIDEBAR_PREV_NEW,\t\tNULL },\n  { \"sidebar-toggle-virtual\",\tOP_SIDEBAR_TOGGLE_VIRTUAL,\tNULL },\n  { \"sidebar-toggle-visible\",\tOP_SIDEBAR_TOGGLE_VISIBLE,\tNULL },\n#endif\n\n#ifdef USE_NOTMUCH\n  { \"change-vfolder\",\t\tOP_MAIN_CHANGE_VFOLDER,         \"X\" },\n  { \"vfolder-from-query\",\tOP_MAIN_VFOLDER_FROM_QUERY,     \"\\033X\" },\n  { \"modify-labels\",\t\tOP_MAIN_MODIFY_LABELS,\t\t\"`\" },\n  { \"modify-labels-then-hide\",\tOP_MAIN_MODIFY_LABELS_THEN_HIDE, NULL },\n  { \"entire-thread\",\t\tOP_MAIN_ENTIRE_THREAD,          \"+\" },\n#endif\n  { NULL,\t\t\t0,\t\t\t\tNULL }\n};\n\nconst struct binding_t OpPager[] = { /* map: pager */\n  { \"break-thread\",\tOP_MAIN_BREAK_THREAD,\t\t\"#\" },\n  { \"create-alias\",\tOP_CREATE_ALIAS,\t\t\"a\" },\n  { \"bounce-message\",\tOP_BOUNCE_MESSAGE,\t\t\"b\" },\n  { \"change-folder\",\tOP_MAIN_CHANGE_FOLDER,\t\t\"c\" },\n  { \"change-folder-readonly\",\tOP_MAIN_CHANGE_FOLDER_READONLY,\t\"\\033c\" },\n  { \"next-unread-mailbox\",\tOP_MAIN_NEXT_UNREAD_MAILBOX, NULL },\n  { \"copy-message\",\tOP_COPY_MESSAGE,\t\t\"C\" },\n  { \"decode-copy\",\tOP_DECODE_COPY,\t\t\t\"\\033C\" },\n  { \"delete-message\",\tOP_DELETE,\t\t\t\"d\" },\n  { \"delete-thread\",\tOP_DELETE_THREAD,\t\t\"\\004\" },\n  { \"delete-subthread\",\tOP_DELETE_SUBTHREAD,\t\t\"\\033d\" },\n  { \"set-flag\",  \tOP_MAIN_SET_FLAG,\t\t\"w\" },\n  { \"clear-flag\",       OP_MAIN_CLEAR_FLAG,\t\t\"W\" },\n  { \"edit\",\t\tOP_EDIT_MESSAGE,\t\t\"e\" },\n  { \"edit-type\",\tOP_EDIT_TYPE,\t\t\t\"\\005\" },\n  { \"forward-message\",\tOP_FORWARD_MESSAGE,\t\t\"f\" },\n  { \"flag-message\",\tOP_FLAG_MESSAGE,\t\t\"F\" },\n  { \"group-reply\",\tOP_GROUP_REPLY,\t\t\t\"g\" },\n#ifdef USE_IMAP\n  { \"imap-fetch-mail\",  OP_MAIN_IMAP_FETCH,\t\tNULL },\n  { \"imap-logout-all\",  OP_MAIN_IMAP_LOGOUT_ALL,\tNULL },\n#endif\n  { \"display-toggle-weed\",\tOP_DISPLAY_HEADERS,\t\t\"h\" },\n  { \"next-undeleted\",\tOP_MAIN_NEXT_UNDELETED,\t\t\"j\" },\n  { \"next-entry\",\tOP_NEXT_ENTRY,\t\t\t\"J\" },\n  { \"previous-undeleted\",OP_MAIN_PREV_UNDELETED,\t\"k\" },\n  { \"previous-entry\",\tOP_PREV_ENTRY,\t\t\t\"K\" },\n  { \"link-threads\",\tOP_MAIN_LINK_THREADS,\t\t\"&\" },\n  { \"list-reply\",\tOP_LIST_REPLY,\t\t\t\"L\" },\n  { \"redraw-screen\",\tOP_REDRAW,\t\t\t\"\\014\" },\n  { \"mail\",\t\tOP_MAIL,\t\t\t\"m\" },\n  { \"mark-as-new\",\tOP_TOGGLE_NEW,\t\t\t\"N\" },\n  { \"search-next\",\tOP_SEARCH_NEXT,\t\t\t\"n\" },\n  { \"next-thread\",\tOP_MAIN_NEXT_THREAD,\t\t\"\\016\" },\n  { \"next-subthread\",\tOP_MAIN_NEXT_SUBTHREAD,\t\t\"\\033n\" },\n  { \"sort-mailbox\",\tOP_SORT,\t\t\t\"o\" },\n  { \"sort-reverse\",\tOP_SORT_REVERSE,\t\t\"O\" },\n  { \"print-message\",\tOP_PRINT,\t\t\t\"p\" },\n  { \"previous-thread\",\tOP_MAIN_PREV_THREAD,\t\t\"\\020\" },\n  { \"previous-subthread\",OP_MAIN_PREV_SUBTHREAD,\t\"\\033p\" },\n  { \"quit\",\t\tOP_QUIT,\t\t\t\"Q\" },\n  { \"exit\",\t\tOP_EXIT,\t\t\t\"q\" },\n  { \"reply\",\t\tOP_REPLY,\t\t\t\"r\" },\n  { \"recall-message\",\tOP_RECALL_MESSAGE,\t\t\"R\" },\n  { \"read-thread\",\tOP_MAIN_READ_THREAD,\t\t\"\\022\" },\n  { \"read-subthread\",\tOP_MAIN_READ_SUBTHREAD,\t\t\"\\033r\" },\n  { \"resend-message\",\tOP_RESEND,\t\t\t\"\\033e\" },\n  { \"save-message\",\tOP_SAVE,\t\t\t\"s\" },\n  { \"skip-quoted\",\tOP_PAGER_SKIP_QUOTED,\t\t\"S\" },\n  { \"decode-save\",\tOP_DECODE_SAVE,\t\t\t\"\\033s\" },\n  { \"tag-message\",\tOP_TAG,\t\t\t\t\"t\" },\n  { \"toggle-quoted\",\tOP_PAGER_HIDE_QUOTED,\t\t\"T\" },\n  { \"undelete-message\",\tOP_UNDELETE,\t\t\t\"u\" },\n  { \"undelete-subthread\",OP_UNDELETE_SUBTHREAD,\t\t\"\\033u\" },\n  { \"undelete-thread\",\tOP_UNDELETE_THREAD,\t\t\"\\025\" },\n  { \"view-attachments\",\tOP_VIEW_ATTACHMENTS,\t\t\"v\" },\n  { \"show-version\",\tOP_VERSION,\t\t\t\"V\" },\n  { \"search-toggle\",\tOP_SEARCH_TOGGLE,\t\t\"\\\\\" },\n  { \"display-address\",\tOP_DISPLAY_ADDRESS,\t\t\"@\" },\n  { \"next-new\",\t\tOP_MAIN_NEXT_NEW,\t\tNULL },\n  { \"next-new-then-unread\", \n                        OP_MAIN_NEXT_NEW_THEN_UNREAD,   \"\\t\" },\n  { \"pipe-message\",\tOP_PIPE,\t\t\t\"|\" },\n  { \"help\",\t\tOP_HELP,\t\t\t\"?\" },\n  { \"next-page\",\tOP_NEXT_PAGE,\t\t\t\" \" },\n  { \"previous-page\",\tOP_PREV_PAGE,\t\t\t\"-\" },\n  { \"top\",\t\tOP_PAGER_TOP,\t\t\t\"^\" },\n  { \"sync-mailbox\",\tOP_MAIN_SYNC_FOLDER,            \"$\" },\n  { \"shell-escape\",\tOP_SHELL_ESCAPE,\t\t\"!\" },\n  { \"enter-command\",\tOP_ENTER_COMMAND,\t\t\":\" },\n  { \"buffy-list\",\tOP_BUFFY_LIST,\t\t\t\".\" },\n  { \"search\",\t\tOP_SEARCH,\t\t\t\"/\" },\n  { \"search-reverse\",\tOP_SEARCH_REVERSE,\t\t\"\\033/\" },\n  { \"search-opposite\",\tOP_SEARCH_OPPOSITE,\t\tNULL },\n  { \"next-line\",\tOP_NEXT_LINE,\t\t\tM_ENTER_S },\n  { \"jump\",\t\tOP_JUMP,\t\t\tNULL },\n  { \"next-unread\",\tOP_MAIN_NEXT_UNREAD,\t\tNULL },\n  { \"previous-new\",\tOP_MAIN_PREV_NEW,\t\tNULL },\n  { \"previous-new-then-unread\",\n      \t\t\tOP_MAIN_PREV_NEW_THEN_UNREAD,   NULL },\n  { \"previous-unread\",\tOP_MAIN_PREV_UNREAD,\t\tNULL },\n  { \"half-up\",\t\tOP_HALF_UP,\t\t\tNULL },\n  { \"half-down\",\tOP_HALF_DOWN,\t\t\tNULL },\n  { \"previous-line\",\tOP_PREV_LINE,\t\t\tNULL },\n  { \"bottom\",\t\tOP_PAGER_BOTTOM,\t\tNULL },\n  { \"parent-message\",\tOP_MAIN_PARENT_MESSAGE,\t\t\"P\" },\n\n\n\n\n  { \"check-traditional-pgp\",\tOP_CHECK_TRADITIONAL,\t\"\\033P\"   },\n  { \"mail-key\",\t\tOP_MAIL_KEY,\t\t\t\"\\033k\" },\n  { \"extract-keys\",\tOP_EXTRACT_KEYS,\t\t\"\\013\" },\n  { \"forget-passphrase\",OP_FORGET_PASSPHRASE,\t\t\"\\006\" },\n  { \"decrypt-copy\",\tOP_DECRYPT_COPY,\t\tNULL },\n  { \"decrypt-save\",    \tOP_DECRYPT_SAVE,\t\tNULL },\n\n  { \"what-key\",\t\tOP_WHAT_KEY,\t\tNULL },\n  { \"quasi-delete\",\tOP_MAIN_QUASI_DELETE,\t\tNULL },\n\n#ifdef USE_SIDEBAR\n  { \"sidebar-next\",\t\tOP_SIDEBAR_NEXT,\t\tNULL },\n  { \"sidebar-next-new\",\t\tOP_SIDEBAR_NEXT_NEW,\t\tNULL },\n  { \"sidebar-open\",\t\tOP_SIDEBAR_OPEN,\t\tNULL },\n  { \"sidebar-page-down\",\tOP_SIDEBAR_PAGE_DOWN,\t\tNULL },\n  { \"sidebar-page-up\",\t\tOP_SIDEBAR_PAGE_UP,\t\tNULL },\n  { \"sidebar-prev\",\t\tOP_SIDEBAR_PREV,\t\tNULL },\n  { \"sidebar-prev-new\",\t\tOP_SIDEBAR_PREV_NEW,\t\tNULL },\n  { \"sidebar-toggle-virtual\",\tOP_SIDEBAR_TOGGLE_VIRTUAL,\tNULL },\n  { \"sidebar-toggle-visible\",\tOP_SIDEBAR_TOGGLE_VISIBLE,\tNULL },\n#endif\n\n#ifdef USE_NOTMUCH\n  { \"change-vfolder\",\t\tOP_MAIN_CHANGE_VFOLDER,\t\t\"X\" },\n  { \"vfolder-from-query\",\tOP_MAIN_VFOLDER_FROM_QUERY,\t\"\\033X\" },\n  { \"modify-labels\",\t\tOP_MAIN_MODIFY_LABELS,\t\t\"`\" },\n  { \"modify-labels-then-hide\",\tOP_MAIN_MODIFY_LABELS_THEN_HIDE, NULL },\n  { \"entire-thread\",\t\tOP_MAIN_ENTIRE_THREAD,          \"+\" },\n#endif\n\n  { NULL,\t\t0,\t\t\t\tNULL }\n};\n\nconst struct binding_t OpAttach[] = { /* map: attachment */\n  { \"bounce-message\",\tOP_BOUNCE_MESSAGE,\t\t\"b\" },\n  { \"display-toggle-weed\",\tOP_DISPLAY_HEADERS,\t\"h\" },\n  { \"edit-type\",\tOP_EDIT_TYPE,\t\t\t\"\\005\" },\n  { \"print-entry\",\tOP_PRINT,\t\t\t\"p\" },\n  { \"save-entry\",\tOP_SAVE,\t\t\t\"s\" },\n  { \"pipe-entry\",\tOP_PIPE,\t\t\t\"|\" },\n  { \"view-mailcap\",\tOP_ATTACH_VIEW_MAILCAP,\t\t\"m\" },\n  { \"reply\",\t\tOP_REPLY,\t\t\t\"r\" },\n  { \"resend-message\",\tOP_RESEND,\t\t\t\"\\033e\" },\n  { \"group-reply\",\tOP_GROUP_REPLY,\t\t\t\"g\" },\n  { \"list-reply\",\tOP_LIST_REPLY,\t\t\t\"L\" },\n  { \"forward-message\",\tOP_FORWARD_MESSAGE,\t\t\"f\" },\n  { \"view-text\",\tOP_ATTACH_VIEW_TEXT,\t\t\"T\" },\n  { \"view-attach\",\tOP_VIEW_ATTACH,\t\t\tM_ENTER_S },\n  { \"delete-entry\",\tOP_DELETE,\t\t\t\"d\" },\n  { \"undelete-entry\",\tOP_UNDELETE,\t\t\t\"u\" },\n  { \"collapse-parts\",\tOP_ATTACH_COLLAPSE,\t\t\"v\" },\n\n  { \"check-traditional-pgp\",\tOP_CHECK_TRADITIONAL,\t\t\"\\033P\"   },\n  { \"extract-keys\",\t\tOP_EXTRACT_KEYS,\t\t\"\\013\" },\n  { \"forget-passphrase\",\tOP_FORGET_PASSPHRASE,\t\t\"\\006\" },\n\n  { NULL,\t\t0,\t\t\t\tNULL }\n};\n\nconst struct binding_t OpCompose[] = { /* map: compose */\n  { \"attach-file\",\tOP_COMPOSE_ATTACH_FILE,\t\t\"a\" },\n  { \"attach-message\",\tOP_COMPOSE_ATTACH_MESSAGE,\t\"A\" },\n  { \"edit-bcc\",\t\tOP_COMPOSE_EDIT_BCC,\t\t\"b\" },\n  { \"edit-cc\",\t\tOP_COMPOSE_EDIT_CC,\t\t\"c\" },\n  { \"copy-file\",\tOP_SAVE,\t\t\t\"C\" },\n  { \"detach-file\",\tOP_DELETE,\t\t\t\"D\" },\n  { \"toggle-disposition\",OP_COMPOSE_TOGGLE_DISPOSITION,\t\"\\004\" },\n  { \"edit-description\",\tOP_COMPOSE_EDIT_DESCRIPTION,\t\"d\" },\n  { \"edit-message\",\tOP_COMPOSE_EDIT_MESSAGE,\t\"e\" },\n  { \"edit-headers\",\tOP_COMPOSE_EDIT_HEADERS,\t\"E\" },\n  { \"edit-file\",\tOP_COMPOSE_EDIT_FILE,\t\t\"\\030e\" },\n  { \"edit-encoding\",\tOP_COMPOSE_EDIT_ENCODING,\t\"\\005\" },\n  { \"edit-from\",\tOP_COMPOSE_EDIT_FROM,\t\t\"\\033f\" },\n  { \"edit-fcc\",\t\tOP_COMPOSE_EDIT_FCC,\t\t\"f\" },\n  { \"filter-entry\",\tOP_FILTER,\t\t\t\"F\" },\n  { \"get-attachment\",\tOP_COMPOSE_GET_ATTACHMENT,\t\"G\" },\n  { \"display-toggle-weed\",\tOP_DISPLAY_HEADERS,\t\t\"h\" },\n  { \"ispell\",\t\tOP_COMPOSE_ISPELL,\t\t\"i\" },\n  { \"print-entry\",\tOP_PRINT,\t\t\t\"l\" },\n  { \"edit-mime\",\tOP_COMPOSE_EDIT_MIME,\t\t\"m\" },\n  { \"new-mime\",\t\tOP_COMPOSE_NEW_MIME,\t\t\"n\" },\n  { \"postpone-message\",\tOP_COMPOSE_POSTPONE_MESSAGE,\t\"P\" },\n  { \"edit-reply-to\",\tOP_COMPOSE_EDIT_REPLY_TO,\t\"r\" },\n  { \"rename-file\",\tOP_COMPOSE_RENAME_FILE,\t\t\"R\" },\n  { \"edit-subject\",\tOP_COMPOSE_EDIT_SUBJECT,\t\"s\" },\n  { \"edit-to\",\t\tOP_COMPOSE_EDIT_TO,\t\t\"t\" },\n  { \"edit-type\",\tOP_EDIT_TYPE,\t\t\t\"\\024\" },\n  { \"write-fcc\",\tOP_COMPOSE_WRITE_MESSAGE,\t\"w\" },\n  { \"toggle-unlink\",\tOP_COMPOSE_TOGGLE_UNLINK,\t\"u\" },\n  { \"toggle-recode\",    OP_COMPOSE_TOGGLE_RECODE,\tNULL },\n  { \"update-encoding\",\tOP_COMPOSE_UPDATE_ENCODING,\t\"U\" },\n  { \"view-attach\",\tOP_VIEW_ATTACH,\t\t\tM_ENTER_S },\n  { \"send-message\",\tOP_COMPOSE_SEND_MESSAGE,\t\"y\" },\n  { \"pipe-entry\",\tOP_PIPE,\t\t\t\"|\" },\n\n  { \"attach-key\",\tOP_COMPOSE_ATTACH_KEY,\t\t\"\\033k\" },\n  { \"pgp-menu\",\t\tOP_COMPOSE_PGP_MENU,\t\t\"p\" \t},\n\n  { \"forget-passphrase\",OP_FORGET_PASSPHRASE,\t\t\"\\006\"  },\n\n  { \"smime-menu\",\tOP_COMPOSE_SMIME_MENU,\t\t\"S\" \t},\n\n#ifdef MIXMASTER\n  { \"mix\",\t\tOP_COMPOSE_MIX,\t\t\t\"M\" },\n#endif\n  \n  { NULL,\t\t0,\t\t\t\tNULL }\n};\n\nconst struct binding_t OpPost[] = { /* map: postpone */\n  { \"delete-entry\",\tOP_DELETE,\t\"d\" },\n  { \"undelete-entry\",\tOP_UNDELETE,\t\"u\" },\n  { NULL,\t\t0,\t\tNULL }\n};\n\nconst struct binding_t OpAlias[] = { /* map: alias */\n  { \"delete-entry\",\tOP_DELETE,\t\"d\" },\n  { \"undelete-entry\",\tOP_UNDELETE,\t\"u\" },\n  { NULL,\t\t0,\t\tNULL }\n};\n  \n\n/* The file browser */\nconst struct binding_t OpBrowser[] = { /* map: browser */\n  { \"change-dir\",\tOP_CHANGE_DIRECTORY,\t\"c\" },\n  { \"display-filename\",\tOP_BROWSER_TELL,\t\"@\" },\n  { \"enter-mask\",\tOP_ENTER_MASK,\t\t\"m\" },\n  { \"sort\",\t\tOP_SORT,\t\t\"o\" },\n  { \"sort-reverse\",\tOP_SORT_REVERSE,\t\"O\" },\n  { \"select-new\",\tOP_BROWSER_NEW_FILE,\t\"N\" },\n  { \"check-new\",\tOP_CHECK_NEW,\t\tNULL },\n  { \"toggle-mailboxes\", OP_TOGGLE_MAILBOXES, \t\"\\t\" },\n  { \"view-file\",\tOP_BROWSER_VIEW_FILE,\t\" \" },\n  { \"buffy-list\",\tOP_BUFFY_LIST,\t\t\".\" },\n#ifdef USE_IMAP\n  { \"create-mailbox\",   OP_CREATE_MAILBOX,      \"C\" },\n  { \"delete-mailbox\",   OP_DELETE_MAILBOX,      \"d\" },\n  { \"rename-mailbox\",   OP_RENAME_MAILBOX,      \"r\" },\n  { \"subscribe\",\tOP_BROWSER_SUBSCRIBE,\t\"s\" },\n  { \"unsubscribe\",\tOP_BROWSER_UNSUBSCRIBE,\t\"u\" },\n  { \"toggle-subscribed\", OP_BROWSER_TOGGLE_LSUB, \"T\" },\n#endif\n  { NULL,\t\t0,\t\t\tNULL }\n};\n\n/* External Query Menu */\nconst struct binding_t OpQuery[] = { /* map: query */\n  { \"create-alias\",\tOP_CREATE_ALIAS,\t\"a\" },\n  { \"mail\",\t\tOP_MAIL,\t\t\"m\" },\n  { \"query\",\t\tOP_QUERY,\t\t\"Q\" },\n  { \"query-append\",\tOP_QUERY_APPEND,\t\"A\" },\n  { NULL,\t\t0,\t\t\tNULL }\n};\n\nconst struct binding_t OpEditor[] = { /* map: editor */\n  { \"bol\",\t\tOP_EDITOR_BOL,\t\t\t\"\\001\" },\n  { \"backward-char\",\tOP_EDITOR_BACKWARD_CHAR,\t\"\\002\" },\n  { \"backward-word\",\tOP_EDITOR_BACKWARD_WORD,\t\"\\033b\"},\n  { \"capitalize-word\",\tOP_EDITOR_CAPITALIZE_WORD,\t\"\\033c\"},\n  { \"downcase-word\",\tOP_EDITOR_DOWNCASE_WORD,\t\"\\033l\"},\n  { \"upcase-word\",\tOP_EDITOR_UPCASE_WORD,\t\t\"\\033u\"},\n  { \"delete-char\",\tOP_EDITOR_DELETE_CHAR,\t\t\"\\004\" },\n  { \"eol\",\t\tOP_EDITOR_EOL,\t\t\t\"\\005\" },\n  { \"forward-char\",\tOP_EDITOR_FORWARD_CHAR,\t\t\"\\006\" },\n  { \"forward-word\",\tOP_EDITOR_FORWARD_WORD,\t\t\"\\033f\"},\n  { \"backspace\",\tOP_EDITOR_BACKSPACE,\t\t\"\\010\" },\n  { \"kill-eol\",\t\tOP_EDITOR_KILL_EOL,\t\t\"\\013\" },\n  { \"kill-eow\",\t\tOP_EDITOR_KILL_EOW,\t\t\"\\033d\"},\n  { \"kill-line\",\tOP_EDITOR_KILL_LINE,\t\t\"\\025\" },\n  { \"quote-char\",\tOP_EDITOR_QUOTE_CHAR,\t\t\"\\026\" },\n  { \"kill-word\",\tOP_EDITOR_KILL_WORD,\t\t\"\\027\" },\n  { \"complete\",\t\tOP_EDITOR_COMPLETE,\t\t\"\\t\"   },\n  { \"complete-query\",\tOP_EDITOR_COMPLETE_QUERY,\t\"\\024\" },\n  { \"buffy-cycle\",\tOP_EDITOR_BUFFY_CYCLE,\t\t\" \"    },\n  { \"history-up\",\tOP_EDITOR_HISTORY_UP,\t\tNULL   },\n  { \"history-down\",\tOP_EDITOR_HISTORY_DOWN,\t\tNULL   },\n  { \"transpose-chars\",\tOP_EDITOR_TRANSPOSE_CHARS,\tNULL   },\n  { NULL,\t\t0,\t\t\t\tNULL   }\n};\n\n\n\nconst struct binding_t OpPgp[] = { /* map: pgp */\n  { \"verify-key\",\tOP_VERIFY_KEY,\t\t\"c\" },\n  { \"view-name\",\tOP_VIEW_ID,\t\t\"%\" },\n  { NULL,\t\t0,\t\t\t\tNULL }\n};\n\n\n\n/* When using the GPGME based backend we have some useful functions\n   for the SMIME menu.  */\nconst struct binding_t OpSmime[] = { /* map: smime */\n#ifdef CRYPT_BACKEND_GPGME\n  { \"verify-key\",    OP_VERIFY_KEY,             \"c\" },\n  { \"view-name\",     OP_VIEW_ID,\t        \"%\" },\n#endif\n  { NULL,\t0,\tNULL }\n};\n\n\n\n#ifdef MIXMASTER\nconst struct binding_t OpMix[] = { /* map: mixmaster */\n  { \"accept\",\t\tOP_MIX_USE,\tM_ENTER_S },\n  { \"append\",\t\tOP_MIX_APPEND,\t\"a\"       },\n  { \"insert\",\t\tOP_MIX_INSERT,\t\"i\"       },\n  { \"delete\",\t\tOP_MIX_DELETE,  \"d\"\t  },\n  { \"chain-prev\",\tOP_MIX_CHAIN_PREV, \"<left>\" },\n  { \"chain-next\",\tOP_MIX_CHAIN_NEXT, \"<right>\" },\n  { NULL, \t\t0, \t\tNULL }\n};\n#endif /* MIXMASTER */\n"
  },
  {
    "path": "gen_defs",
    "content": "#!/bin/sh\n\n# $Id$\n\necho '/* Automatically generated by gen_defs.  Do not edit! */'\necho ''\n\nfor mode in help defs; do\n\tcase $mode in\n\t\thelp)\n\t\t\techo \"#ifdef HELP_C\"\n\t\t\techo \"const char *HelpStrings[] = {\"\n\t\t\texpr='s;^[^ ]* *\\(.*\\);\tN_(\\1),;'\n\t\t\t;;\n\t\t*)\n\t\t\techo \"enum {\"\n\t\t\texpr='s;^\\([^ ]*\\).*;\t\\1,;'\n\t\t\t;;\n\tesac\n\tfor i in $*; do\n\t\tsed -e '/^\\/\\*/d' -e \"$expr\" < $i\n\tdone\n\tif test $mode = help; then\n\t\techo '\tNULL'\n\telse\n\t\techo '\tOP_MAX'\n\tfi\n\techo \"};\"\n\tif test $mode = help; then\n\t\techo \"#endif /* MAIN_C */\"\n\t\techo ''\n\tfi\ndone\n\nexit 0\n"
  },
  {
    "path": "getdomain.c",
    "content": "/*\n * Copyright (C) 2009,2013 Derek Martin <code@pizzashack.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <string.h>\n#include <unistd.h>\n#include <netdb.h>\n#include <sys/types.h>\n#include <sys/socket.h>\n\n#include \"mutt.h\"\n\n\nint getdnsdomainname (char *d, size_t len)\n{\n  /* A DNS name can actually be only 253 octets, string is 256 */\n  char *node;\n  long node_len;\n  struct addrinfo hints;\n  struct addrinfo *h;\n  char *p;\n  int ret;\n\n  *d = '\\0';\n  memset(&hints, 0, sizeof (struct addrinfo));\n  hints.ai_flags = AI_CANONNAME;\n  hints.ai_family = AF_UNSPEC;\n\n  if ((node_len = sysconf(_SC_HOST_NAME_MAX)) == -1)\n    node_len = STRING;\n  node = safe_malloc(node_len + 1);\n  if (gethostname(node, node_len))\n    ret = -1;\n  else if (getaddrinfo(node, NULL, &hints, &h))\n    ret = -1;\n  else\n  {\n    if (!(p = strchr(h->ai_canonname, '.')))\n      ret = -1;\n    else\n    {\n      strfcpy(d, ++p, len);\n      ret = 0;\n      dprint(1, (debugfile, \"getdnsdomainname(): %s\\n\", d));\n    }\n    freeaddrinfo(h);\n  }\n  FREE (&node);\n  return ret;\n}\n\n"
  },
  {
    "path": "globals.h",
    "content": "/*\n * Copyright (C) 1996-2002,2010 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\nWHERE void (*mutt_error) (const char *, ...);\nWHERE void (*mutt_message) (const char *, ...);\n\nWHERE CONTEXT *Context;\n\nWHERE char Errorbuf[STRING];\nWHERE char AttachmentMarker[STRING];\n\n#if defined(DL_STANDALONE) && defined(USE_DOTLOCK)\nWHERE char *MuttDotlock;\n#endif\n\nWHERE ADDRESS *EnvFrom;\nWHERE ADDRESS *From;\n\nWHERE char *AliasFile;\nWHERE char *AliasFmt;\nWHERE char *AssumedCharset;\nWHERE char *AttachSep;\nWHERE char *Attribution;\nWHERE char *AttachCharset;\nWHERE char *AttachFormat;\nWHERE char *Charset;\nWHERE char *ComposeFormat;\nWHERE char *ConfigCharset;\nWHERE char *ContentType;\nWHERE char *DefaultHook;\nWHERE char *DateFmt;\nWHERE char *DisplayFilter;\nWHERE char *DsnNotify;\nWHERE char *DsnReturn;\nWHERE char *Editor;\nWHERE char *EscChar;\nWHERE char *FolderFormat;\nWHERE char *ForwFmt;\nWHERE char *Fqdn;\nWHERE char *HdrFmt;\nWHERE char *HistFile;\nWHERE char *Homedir;\nWHERE char *Hostname;\n#ifdef USE_IMAP\nWHERE char *ImapAuthenticators INITVAL (NULL);\nWHERE char *ImapDelimChars INITVAL (NULL);\nWHERE char *ImapHeaders;\nWHERE char *ImapLogin INITVAL (NULL);\nWHERE char *ImapPass INITVAL (NULL);\nWHERE char *ImapUser INITVAL (NULL);\n#endif\nWHERE char *Inbox;\nWHERE char *Ispell;\nWHERE char *Locale;\nWHERE char *MailcapPath;\nWHERE char *Maildir;\n#if defined(USE_IMAP) || defined(USE_POP)\nWHERE char *MessageCachedir;\n#endif\n#if USE_HCACHE\nWHERE char *HeaderCache;\n#if HAVE_GDBM || HAVE_DB4\nWHERE char *HeaderCachePageSize;\n#endif /* HAVE_GDBM || HAVE_DB4 */\n#endif /* USE_HCACHE */\nWHERE char *MhFlagged;\nWHERE char *MhReplied;\nWHERE char *MhUnseen;\nWHERE char *MsgFmt;\n\n#ifdef USE_SOCKET\nWHERE char *Preconnect INITVAL (NULL);\nWHERE char *Tunnel INITVAL (NULL);\nWHERE short NetInc;\n#endif /* USE_SOCKET */\n\n#ifdef MIXMASTER\nWHERE char *Mixmaster;\nWHERE char *MixEntryFormat;\n#endif\n\nWHERE char *Muttrc INITVAL (NULL);\nWHERE char *Outbox;\nWHERE char *Pager;\nWHERE char *PagerFmt;\nWHERE char *PipeSep;\n#ifdef USE_POP\nWHERE char *PopAuthenticators INITVAL (NULL);\nWHERE short PopCheckTimeout;\nWHERE char *PopHost;\nWHERE char *PopPass INITVAL (NULL);\nWHERE char *PopUser INITVAL (NULL);\n#endif\nWHERE char *PostIndentString;\nWHERE char *Postponed;\nWHERE char *PostponeEncryptAs;\nWHERE char *Prefix;\nWHERE char *PrintCmd;\nWHERE char *QueryCmd;\nWHERE char *QueryFormat;\nWHERE char *Realname;\nWHERE short SearchContext;\nWHERE char *SendCharset;\nWHERE char *Sendmail;\nWHERE char *Shell;\n#ifdef USE_SIDEBAR\nWHERE char *SidebarDelimChars;\nWHERE char *SidebarDividerChar;\nWHERE char *SidebarFormat;\nWHERE char *SidebarIndentString;\n#endif\nWHERE char *Signature;\nWHERE char *SimpleSearch;\n#if USE_SMTP\nWHERE char *SmtpAuthenticators INITVAL (NULL);\nWHERE char *SmtpPass INITVAL (NULL);\nWHERE char *SmtpUrl INITVAL (NULL);\n#endif /* USE_SMTP */\nWHERE char *Spoolfile;\nWHERE char *SpamSep;\n#if defined(USE_SSL)\nWHERE char *SslCertFile INITVAL (NULL);\nWHERE char *SslClientCert INITVAL (NULL);\nWHERE char *SslEntropyFile INITVAL (NULL);\nWHERE char *SslCiphers INITVAL (NULL);\n#ifdef USE_SSL_GNUTLS\nWHERE short SslDHPrimeBits;\nWHERE char *SslCACertFile INITVAL (NULL);\n#endif\n#endif\nWHERE char *StChars;\nWHERE char *Status;\nWHERE char *Tempdir;\nWHERE char *Tochars;\nWHERE char *TSStatusFormat;\nWHERE char *TSIconFormat;\nWHERE short TSSupported;\nWHERE char *Username;\nWHERE char *Visual;\n\nWHERE char *CurrentFolder;\nWHERE char *LastFolder;\n\n\nWHERE const char *ReleaseDate;\n\nWHERE HASH *Groups;\nWHERE HASH *ReverseAlias;\n#ifdef USE_NOTMUCH\nWHERE HASH *TagTransforms;\nWHERE HASH *TagFormats;\n#endif\n\nWHERE LIST *AutoViewList INITVAL(0);\nWHERE LIST *AlternativeOrderList INITVAL(0);\nWHERE LIST *AttachAllow INITVAL(0);\nWHERE LIST *AttachExclude INITVAL(0);\nWHERE LIST *InlineAllow INITVAL(0);\nWHERE LIST *InlineExclude INITVAL(0);\nWHERE LIST *HeaderOrderList INITVAL(0);\nWHERE LIST *Ignore INITVAL(0);\nWHERE LIST *MailtoAllow INITVAL(0);\nWHERE LIST *MimeLookupList INITVAL(0);\nWHERE LIST *UnIgnore INITVAL(0);\n\nWHERE RX_LIST *Alternates INITVAL(0);\nWHERE RX_LIST *UnAlternates INITVAL(0);\nWHERE RX_LIST *MailLists INITVAL(0);\nWHERE RX_LIST *UnMailLists INITVAL(0);\nWHERE RX_LIST *SubscribedLists INITVAL(0);\nWHERE RX_LIST *UnSubscribedLists INITVAL(0);\nWHERE SPAM_LIST *SpamList INITVAL(0);\nWHERE RX_LIST *NoSpamList INITVAL(0);\n\n\n/* bit vector for boolean variables */\n#ifdef MAIN_C\nunsigned char Options[(OPTMAX + 7)/8];\n#else\nextern unsigned char Options[];\n#endif\n\n/* bit vector for the yes/no/ask variable type */\n#ifdef MAIN_C\nunsigned char QuadOptions[(OPT_MAX*2 + 7) / 8];\n#else\nextern unsigned char QuadOptions[];\n#endif\n\nWHERE short ConnectTimeout;\nWHERE short HistSize;\nWHERE short MenuContext;\nWHERE short PagerContext;\nWHERE short PagerIndexLines;\nWHERE short ReadInc;\nWHERE short ReflowWrap;\nWHERE short SaveHist;\nWHERE short SendmailWait;\nWHERE short SleepTime INITVAL (1);\nWHERE short TimeInc;\nWHERE short Timeout;\nWHERE short Wrap;\nWHERE short WrapHeaders;\nWHERE short WriteInc;\n\nWHERE short ScoreThresholdDelete;\nWHERE short ScoreThresholdRead;\nWHERE short ScoreThresholdFlag;\n\n/* This isn't excluded from the build because it's too entwined in the code.\n * For now. */\nWHERE short SidebarWidth;\n#ifdef USE_SIDEBAR\nWHERE short SidebarRefreshTime;\nWHERE LIST *SidebarWhitelist INITVAL(0);\n#endif\n\n#ifdef USE_IMAP\nWHERE short ImapKeepalive;\nWHERE short ImapPipelineDepth;\n#endif\n\n/* flags for received signals */\nWHERE SIG_ATOMIC_VOLATILE_T SigAlrm INITVAL (0);\nWHERE SIG_ATOMIC_VOLATILE_T SigInt INITVAL (0);\nWHERE SIG_ATOMIC_VOLATILE_T SigWinch INITVAL (0);\n\nWHERE int CurrentMenu;\n\nWHERE ALIAS *Aliases INITVAL (0);\nWHERE LIST *UserHeader INITVAL (0);\n\n/*-- formerly in pgp.h --*/\nWHERE REGEXP PgpGoodSign;\nWHERE REGEXP PgpDecryptionOkay;\nWHERE char *PgpSignAs;\nWHERE short PgpTimeout;\nWHERE char *PgpEntryFormat;\nWHERE char *PgpClearSignCommand;\nWHERE char *PgpDecodeCommand;\nWHERE char *PgpVerifyCommand;\nWHERE char *PgpDecryptCommand;\nWHERE char *PgpSignCommand;\nWHERE char *PgpEncryptSignCommand;\nWHERE char *PgpEncryptOnlyCommand;\nWHERE char *PgpImportCommand;\nWHERE char *PgpExportCommand;\nWHERE char *PgpVerifyKeyCommand;\nWHERE char *PgpListSecringCommand;\nWHERE char *PgpListPubringCommand;\nWHERE char *PgpGetkeysCommand;\n\n/*-- formerly in smime.h --*/\nWHERE char *SmimeDefaultKey;\nWHERE short SmimeTimeout;\nWHERE char *SmimeCertificates;\nWHERE char *SmimeKeys;\nWHERE char *SmimeCryptAlg;\nWHERE char *SmimeCALocation;\nWHERE char *SmimeVerifyCommand;\nWHERE char *SmimeVerifyOpaqueCommand;\nWHERE char *SmimeDecryptCommand;\nWHERE char *SmimeSignCommand;\nWHERE char *SmimeDigestAlg;\nWHERE char *SmimeSignOpaqueCommand;\nWHERE char *SmimeEncryptCommand;\nWHERE char *SmimeGetSignerCertCommand;\nWHERE char *SmimePk7outCommand;\nWHERE char *SmimeGetCertCommand;\nWHERE char *SmimeImportCertCommand;\nWHERE char *SmimeGetCertEmailCommand;\n\n#ifdef USE_NOTMUCH\nWHERE int NotmuchOpenTimeout;\nWHERE char *NotmuchDefaultUri;\nWHERE char *NotmuchExcludeTags;\nWHERE char *NotmuchUnreadTag;\nWHERE char *NotmuchHiddenTags;\nWHERE char *VirtFolderFormat;\nWHERE int NotmuchDBLimit;\nWHERE char *NotmuchQueryType;\nWHERE char *NotmuchRecordTags;\n#endif\n\n\n\n#ifdef MAIN_C\nconst char * const Weekdays[] = { \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" };\nconst char * const Months[] = { \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"ERR\" };\n\nconst char * const BodyTypes[] = { \"x-unknown\", \"audio\", \"application\", \"image\", \"message\", \"model\", \"multipart\", \"text\", \"video\" };\nconst char * const BodyEncodings[] = { \"x-unknown\", \"7bit\", \"8bit\", \"quoted-printable\", \"base64\", \"binary\", \"x-uuencoded\" };\n#else\nextern const char * const Weekdays[];\nextern const char * const Months[];\n#endif\n\n#ifdef MAIN_C\n/* so that global vars get included */ \n#include \"mx.h\"\n#include \"mutt_regex.h\"\n#include \"buffy.h\"\n#include \"sort.h\"\n#include \"mutt_crypt.h\"\n#include \"reldate.h\"\n#endif /* MAIN_C */\n"
  },
  {
    "path": "gnupgparse.c",
    "content": "/*\n * Copyright (C) 1998-2000,2003 Werner Koch <werner.koch@guug.de>\n * Copyright (C) 1999-2003 Thomas Roessler <roessler@does-not-exist.org>\n *\n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n *\n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n *\n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */\n\n/*\n * NOTE\n * \n * This code used to be the parser for GnuPG's output.\n * \n * Nowadays, we are using an external pubring lister with PGP which mimics \n * gpg's output format.\n * \n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <unistd.h>\n#include <fcntl.h>\n#include <time.h>\n#include <ctype.h>\n\n#include \"mutt.h\"\n#include \"pgp.h\"\n#include \"charset.h\"\n\n/* for hexval */\n#include \"mime.h\"\n\n/****************\n * Read the GNUPG keys.  For now we read the complete keyring by\n * calling gnupg in a special mode.\n *\n * The output format of gpgm is colon delimited with these fields:\n *   - record type (\"pub\",\"uid\",\"sig\",\"rev\" etc.)\n *   - trust info\n *   - key length\n *   - pubkey algo\n *   - 16 hex digits with the long keyid.\n *   - timestamp (1998-02-28)\n *   - Local id\n *   - ownertrust\n *   - name\n *   - signature class\n */\n\n/* decode the backslash-escaped user ids. */\n\nstatic char *_chs = 0;\n\nstatic void fix_uid (char *uid)\n{\n  char *s, *d;\n  iconv_t cd;\n\n  for (s = d = uid; *s;)\n  {\n    if (*s == '\\\\' && *(s+1) == 'x' && isxdigit ((unsigned char) *(s+2)) && isxdigit ((unsigned char) *(s+3)))\n    {\n      *d++ = hexval (*(s+2)) << 4 | hexval (*(s+3));\n      s += 4;\n    }\n    else\n      *d++ = *s++;\n  }\n  *d = '\\0';\n\n  if (_chs && (cd = mutt_iconv_open (_chs, \"utf-8\", 0)) != (iconv_t)-1)\n  {\n    int n = s - uid + 1; /* chars available in original buffer */\n    char *buf;\n    ICONV_CONST char *ib;\n    char *ob;\n    size_t ibl, obl;\n\n    buf = safe_malloc (n+1);\n    ib = uid, ibl = d - uid + 1, ob = buf, obl = n;\n    iconv (cd, &ib, &ibl, &ob, &obl);\n    if (!ibl)\n    {\n      if (ob-buf < n)\n      {\n\tmemcpy (uid, buf, ob-buf);\n\tuid[ob-buf] = '\\0';\n      }\n      else if (n >= 0 && ob-buf == n && (buf[n] = 0, strlen (buf) < (size_t)n))\n\tmemcpy (uid, buf, n);\n    }\n    FREE (&buf);\n    iconv_close (cd);\n  }\n}\n\nstatic pgp_key_t parse_pub_line (char *buf, int *is_subkey, pgp_key_t k)\n{\n  pgp_uid_t *uid = NULL;\n  int field = 0, is_uid = 0;\n  int is_pub = 0;\n  int is_fpr = 0;\n  char *pend, *p;\n  int trust = 0;\n  int flags = 0;\n  struct pgp_keyinfo tmp;\n\n  *is_subkey = 0;\n  if (!*buf)\n    return NULL;\n\n  /* if we're given a key, merge our parsing results, else\n   * start with a fresh one to work with so that we don't\n   * mess up the real key in case we find parsing errors. */\n  if (k)\n    memcpy (&tmp, k, sizeof (tmp));\n  else\n    memset (&tmp, 0, sizeof (tmp));\n\n  dprint (2, (debugfile, \"parse_pub_line: buf = `%s'\\n\", buf));\n\n  for (p = buf; p; p = pend)\n  {\n    if ((pend = strchr (p, ':')))\n      *pend++ = 0;\n    field++;\n    if (!*p && (field != 1) && (field != 10))\n      continue;\n\n    if (is_fpr && (field != 10))\n      continue;\n\n    switch (field)\n    {\n      case 1:\t\t\t/* record type */\n      {\n\tdprint (2, (debugfile, \"record type: %s\\n\", p));\n\n\tif (!mutt_strcmp (p, \"pub\"))\n\t  is_pub = 1;\n\telse if (!mutt_strcmp (p, \"sub\"))\n\t  *is_subkey = 1;\n\telse if (!mutt_strcmp (p, \"sec\"))\n\t  ;\n\telse if (!mutt_strcmp (p, \"ssb\"))\n\t  *is_subkey = 1;\n\telse if (!mutt_strcmp (p, \"uid\"))\n\t  is_uid = 1;\n\telse if (!mutt_strcmp (p, \"fpr\"))\n\t  is_fpr = 1;\n\telse\n\t  return NULL;\n\n\tif (!(is_uid || is_fpr || (*is_subkey && option (OPTPGPIGNORESUB))))\n\t  memset (&tmp, 0, sizeof (tmp));\n\n\tbreak;\n      }\n      case 2:\t\t\t/* trust info */\n      {\n\tdprint (2, (debugfile, \"trust info: %s\\n\", p));\n\n\tswitch (*p)\n\t{\t\t\t\t/* look only at the first letter */\n\t  case 'e':\n\t    flags |= KEYFLAG_EXPIRED;\n\t    break;\n\t  case 'r':\n\t    flags |= KEYFLAG_REVOKED;\n\t    break;\n\t  case 'd':\n\t    flags |= KEYFLAG_DISABLED;\n\t    break;\n\t  case 'n':\n\t    trust = 1;\n\t    break;\n\t  case 'm':\n\t    trust = 2;\n\t    break;\n\t  case 'f':\n\t    trust = 3;\n\t    break;\n\t  case 'u':\n\t    trust = 3;\n\t    break;\n\t}\n\n        if (!is_uid && !(*is_subkey && option (OPTPGPIGNORESUB)))\n\t  tmp.flags |= flags;\n\n\tbreak;\n      }\n      case 3:\t\t\t/* key length  */\n      {\n\tdprint (2, (debugfile, \"key len: %s\\n\", p));\n\n\tif (!(*is_subkey && option (OPTPGPIGNORESUB)) &&\n\t    mutt_atos (p, &tmp.keylen) < 0)\n\t  goto bail;\n\tbreak;\n      }\n      case 4:\t\t\t/* pubkey algo */\n      {\n\tdprint (2, (debugfile, \"pubkey algorithm: %s\\n\", p));\n\n\tif (!(*is_subkey && option (OPTPGPIGNORESUB)))\n\t{\n\t  int x = 0;\n\t  if (mutt_atoi (p, &x) < 0)\n\t    goto bail;\n\t  tmp.numalg = x;\n\t  tmp.algorithm = pgp_pkalgbytype (x);\n\t}\n\tbreak;\n      }\n      case 5:\t\t\t/* 16 hex digits with the long keyid. */\n      {\n\tdprint (2, (debugfile, \"key id: %s\\n\", p));\n\n\tif (!(*is_subkey && option (OPTPGPIGNORESUB)))\n\t  mutt_str_replace (&tmp.keyid, p);\n\tbreak;\n\n      }\n      case 6:\t\t\t/* timestamp (1998-02-28) */\n      {\n\tchar tstr[11];\n\tstruct tm time;\n\n\tdprint (2, (debugfile, \"time stamp: %s\\n\", p));\n\n\tif (!p)\n\t  break;\n\ttime.tm_sec = 0;\n\ttime.tm_min = 0;\n\ttime.tm_hour = 12;\n\tstrncpy (tstr, p, 11);\n\ttstr[4] = '\\0';\n\ttstr[7] = '\\0';\n\tif (mutt_atoi (tstr, &time.tm_year) < 0)\n\t{\n\t  p = tstr;\n\t  goto bail;\n\t}\n\ttime.tm_year -= 1900;\n\tif (mutt_atoi (tstr+5, &time.tm_mon) < 0)\n\t{\n\t  p = tstr+5;\n\t  goto bail;\n\t}\n\ttime.tm_mon -= 1;\n\tif (mutt_atoi (tstr+8, &time.tm_mday) < 0)\n\t{\n\t  p = tstr+8;\n\t  goto bail;\n\t}\n\ttmp.gen_time = mutt_mktime (&time, 0);\n        break;\n      }\n      case 7:\t\t\t/* valid for n days */\n        break;\n      case 8:\t\t\t/* Local id         */\n        break;\n      case 9:\t\t\t/* ownertrust       */\n        break;\n      case 10:\t\t\t/* name             */\n      {\n        /* Empty field or no trailing colon.\n         * We allow an empty field for a pub record type because it is\n         * possible for a primary uid record to have an empty User-ID\n         * field.  Without any address records, it is not possible to\n         * use the key in mutt.\n         */\n        if (!(pend && (*p || is_pub)))\n\t  break;\n\n        if (is_fpr)\n        {\n          /* don't let a subkey fpr overwrite an existing primary key fpr */\n          if (!tmp.fingerprint)\n            tmp.fingerprint = safe_strdup (p);\n          break;\n        }\n\n\t/* ignore user IDs on subkeys */\n\tif (!is_uid && (*is_subkey && option (OPTPGPIGNORESUB)))\n\t  break;\n\n\tdprint (2, (debugfile, \"user ID: %s\\n\", NONULL (p)));\n\n\tuid = safe_calloc (sizeof (pgp_uid_t), 1);\n\tfix_uid (p);\n\tuid->addr = safe_strdup (p);\n\tuid->trust = trust;\n\tuid->flags |= flags;\n\tuid->next = tmp.address;\n\ttmp.address = uid;\n\n\tif (strstr (p, \"ENCR\"))\n\t  tmp.flags |= KEYFLAG_PREFER_ENCRYPTION;\n\tif (strstr (p, \"SIGN\"))\n\t  tmp.flags |= KEYFLAG_PREFER_SIGNING;\n\n\tbreak;\n      }\n      case 11:\t\t\t/* signature class  */\n        break;\n      case 12:\t\t\t/* key capabilities */\n\tdprint (2, (debugfile, \"capabilities info: %s\\n\", p));\n\t\n\twhile(*p)\n\t  {\n\t    switch(*p++)\n\t      {\n\t      case 'D':\n\t\tflags |= KEYFLAG_DISABLED;\n\t\tbreak;\n\n\t      case 'e':\n\t\tflags |= KEYFLAG_CANENCRYPT;\n\t\tbreak;\n\n\t      case 's':\n\t\tflags |= KEYFLAG_CANSIGN;\n\t\tbreak;\n\t      }\n\t  }\n\n        if (!is_uid && \n\t    (!*is_subkey || !option (OPTPGPIGNORESUB)\n\t     || !((flags & KEYFLAG_DISABLED)\n\t\t  || (flags & KEYFLAG_REVOKED)\n\t\t  || (flags & KEYFLAG_EXPIRED))))\n\t  tmp.flags |= flags;\n\n\tbreak;\n      \n      default:\n        break;\n    }\n  }\n\n  /* merge temp key back into real key */\n  if (!(is_uid || is_fpr || (*is_subkey && option (OPTPGPIGNORESUB))))\n    k = safe_malloc (sizeof (*k));\n  memcpy (k, &tmp, sizeof (*k));\n  /* fixup parentship of uids after mering the temp key into\n   * the real key */\n  if (tmp.address)\n  {\n    for (uid = k->address; uid; uid = uid->next)\n      uid->parent = k;\n  }\n\n  return k;\n\nbail:\n  dprint(5,(debugfile,\"parse_pub_line: invalid number: '%s'\\n\", p));\n  return NULL;\n}\n\npgp_key_t pgp_get_candidates (pgp_ring_t keyring, LIST * hints)\n{\n  FILE *fp;\n  pid_t thepid;\n  char buf[LONG_STRING];\n  pgp_key_t db = NULL, *kend, k = NULL, kk, mainkey = NULL;\n  int is_sub;\n  int devnull;\n\n  if ((devnull = open (\"/dev/null\", O_RDWR)) == -1)\n    return NULL;\n\n  mutt_str_replace (&_chs, Charset);\n  \n  thepid = pgp_invoke_list_keys (NULL, &fp, NULL, -1, -1, devnull,\n\t\t\t\t keyring, hints);\n  if (thepid == -1)\n  {\n    close (devnull);\n    return NULL;\n  }\n\n  kend = &db;\n  k = NULL;\n  while (fgets (buf, sizeof (buf) - 1, fp))\n  {\n    if (!(kk = parse_pub_line (buf, &is_sub, k)))\n      continue;\n\n    /* Only append kk to the list if it's new. */\n    if (kk != k)\n    {\n      if (k)\n\tkend = &k->next;\n      *kend = k = kk;\n\n      if (is_sub)\n      {\n\tpgp_uid_t **l;\n\t\n\tk->flags  |= KEYFLAG_SUBKEY;\n\tk->parent  = mainkey;\n\tfor (l = &k->address; *l; l = &(*l)->next)\n\t  ;\n\t*l = pgp_copy_uids (mainkey->address, k);\n      }\n      else\n\tmainkey = k;\n    }\n  }\n\n  if (ferror (fp))\n    mutt_perror (\"fgets\");\n\n  safe_fclose (&fp);\n  mutt_wait_filter (thepid);\n\n  close (devnull);\n  \n  return db;\n}\n\n"
  },
  {
    "path": "group.c",
    "content": "/*\n * Copyright (C) 2006 Thomas Roessler <roessler@does-not-exist.org>\n * Copyright (C) 2009 Rocco Rutte <pdmef@gmx.net>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_regex.h\"\n#include \"mbyte.h\"\n#include \"charset.h\"\n\n#include <ctype.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <string.h>\n#include <sys/utsname.h>\n#include <errno.h>\n#include <sys/wait.h>\n\ngroup_t *mutt_pattern_group (const char *k)\n{\n  group_t *p;\n\n  if (!k)\n    return 0;\n\n  if (!(p = hash_find (Groups, k)))\n  {\n    dprint (2, (debugfile, \"mutt_pattern_group: Creating group %s.\\n\", k));\n    p = safe_calloc (1, sizeof (group_t));\n    p->name = safe_strdup (k);\n    hash_insert (Groups, p->name, p, 0);\n  }\n\n  return p;\n}\n\nstatic void mutt_group_remove (group_t *g)\n{\n  if (!g)\n    return;\n  hash_delete (Groups, g->name, g, NULL);\n  rfc822_free_address (&g->as);\n  mutt_free_rx_list (&g->rs);\n  FREE(&g->name);\n  FREE(&g);\n}\n\nint mutt_group_context_clear (group_context_t **ctx)\n{\n  group_context_t *t;\n  for ( ; ctx && *ctx; (*ctx) = t)\n  {\n    mutt_group_remove ((*ctx)->g);\n    t = (*ctx)->next;\n    FREE(ctx);\t\t\t\t/* __FREE_CHECKED__ */\n  }\n  return 0;\n}\n\nstatic int empty_group (group_t *g)\n{\n  if (!g)\n    return -1;\n  return !g->as && !g->rs;\n}\n\nvoid mutt_group_context_add (group_context_t **ctx, group_t *group)\n{\n  for (; *ctx; ctx = &((*ctx)->next))\n  {\n    if ((*ctx)->g == group)\n      return;\n  }\n\n  *ctx = safe_calloc (1, sizeof (group_context_t));\n  (*ctx)->g = group;\n}\n\nvoid mutt_group_context_destroy (group_context_t **ctx)\n{\n  group_context_t *p;\n  for (; *ctx; *ctx = p)\n  {\n    p = (*ctx)->next;\n    FREE (ctx);\t\t/* __FREE_CHECKED__ */\n  }\n}\n\nvoid mutt_group_add_adrlist (group_t *g, ADDRESS *a)\n{\n  ADDRESS **p, *q;\n\n  if (!g)\n    return;\n  if (!a)\n    return;\n\n  for (p = &g->as; *p; p = &((*p)->next))\n    ;\n\n  q = rfc822_cpy_adr (a, 0);\n  q = mutt_remove_xrefs (g->as, q);\n  *p = q;\n}\n\nstatic int mutt_group_remove_adrlist (group_t *g, ADDRESS *a)\n{\n  ADDRESS *p;\n\n  if (!g)\n    return -1;\n  if (!a)\n    return -1;\n\n  for (p = a; p; p = p->next)\n    rfc822_remove_from_adrlist (&g->as, p->mailbox);\n\n  return 0;\n}\n\nstatic int mutt_group_add_rx (group_t *g, const char *s, int flags, BUFFER *err)\n{\n  return mutt_add_to_rx_list (&g->rs, s, flags, err);\n}\n\nstatic int mutt_group_remove_rx (group_t *g, const char *s)\n{\n  return mutt_remove_from_rx_list (&g->rs, s);\n}\n\nvoid mutt_group_context_add_adrlist (group_context_t *ctx, ADDRESS *a)\n{\n  for (; ctx; ctx = ctx->next)\n    mutt_group_add_adrlist (ctx->g, a);\n}\n\nint mutt_group_context_remove_adrlist (group_context_t *ctx, ADDRESS * a)\n{\n  int rv = 0;\n\n  for (; (!rv) && ctx; ctx = ctx->next)\n  {\n    rv = mutt_group_remove_adrlist (ctx->g, a);\n    if (empty_group (ctx->g))\n      mutt_group_remove (ctx->g);\n  }\n\n  return rv;\n}\n\nint mutt_group_context_add_rx (group_context_t *ctx, const char *s, int flags, BUFFER *err)\n{\n  int rv = 0;\n\n  for (; (!rv) && ctx; ctx = ctx->next)\n    rv = mutt_group_add_rx (ctx->g, s, flags, err);\n\n  return rv;\n}\n\nint mutt_group_context_remove_rx (group_context_t *ctx, const char *s)\n{\n  int rv = 0;\n\n  for (; (!rv) && ctx; ctx = ctx->next)\n  {\n    rv = mutt_group_remove_rx (ctx->g, s);\n    if (empty_group (ctx->g))\n      mutt_group_remove (ctx->g);\n  }\n\n  return rv;\n}\n\nint mutt_group_match (group_t *g, const char *s)\n{\n  ADDRESS *ap;\n\n  if (s && g)\n  {\n    if (mutt_match_rx_list (s, g->rs))\n      return 1;\n    for (ap = g->as; ap; ap = ap->next)\n      if (ap->mailbox && !mutt_strcasecmp (s, ap->mailbox))\n\treturn 1;\n  }\n  return 0;\n}\n\n"
  },
  {
    "path": "group.h",
    "content": "/*\n * Copyright (C) 2006 Thomas Roessler <roessler@does-not-exist.org>\n * Copyright (C) 2009 Rocco Rutte <pdmef@gmx.net>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifndef _MUTT_GROUP_H_\n#define _MUTT_GROUP_H_ 1\n\n#define M_GROUP\t\t0\n#define M_UNGROUP\t1\n\nvoid mutt_group_add_adrlist (group_t *g, ADDRESS *a);\n\nvoid mutt_group_context_add (group_context_t **ctx, group_t *group);\nvoid mutt_group_context_destroy (group_context_t **ctx);\nvoid mutt_group_context_add_adrlist (group_context_t *ctx, ADDRESS *a);\nint mutt_group_context_add_rx (group_context_t *ctx, const char *s, int flags, BUFFER *err);\n\nint mutt_group_match (group_t *g, const char *s);\n\nint mutt_group_context_clear (group_context_t **ctx);\nint mutt_group_context_remove_rx (group_context_t *ctx, const char *s);\nint mutt_group_context_remove_adrlist (group_context_t *ctx, ADDRESS *);\n\n#endif /* _MUTT_GROUP_H_ */\n"
  },
  {
    "path": "handler.c",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2010,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <ctype.h>\n#include <sys/wait.h>\n#include <sys/stat.h>\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"rfc1524.h\"\n#include \"keymap.h\"\n#include \"mime.h\"\n#include \"copy.h\"\n#include \"charset.h\"\n#include \"mutt_crypt.h\"\n#include \"rfc3676.h\"\n\n#define BUFI_SIZE 1000\n#define BUFO_SIZE 2000\n\n\ntypedef int (*handler_t) (BODY *, STATE *);\n\nconst int Index_hex[128] = {\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n     0, 1, 2, 3,  4, 5, 6, 7,  8, 9,-1,-1, -1,-1,-1,-1,\n    -1,10,11,12, 13,14,15,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n    -1,10,11,12, 13,14,15,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1\n};\n\nconst int Index_64[128] = {\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,\n    52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,\n    -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,\n    15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,\n    -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,\n    41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1\n};\n\nstatic void state_prefix_put (const char *d, size_t dlen, STATE *s)\n{\n  if (s->prefix)\n    while (dlen--)\n      state_prefix_putc (*d++, s);\n  else\n    fwrite (d, dlen, 1, s->fpout);\n}\n\nstatic void mutt_convert_to_state(iconv_t cd, char *bufi, size_t *l, STATE *s)\n{\n  char bufo[BUFO_SIZE];\n  ICONV_CONST char *ib;\n  char *ob;\n  size_t ibl, obl;\n\n  if (!bufi)\n  {\n    if (cd != (iconv_t)(-1))\n    {\n      ob = bufo, obl = sizeof (bufo);\n      iconv (cd, 0, 0, &ob, &obl);\n      if (ob != bufo)\n\tstate_prefix_put (bufo, ob - bufo, s);\n    }\n    return;\n  }\n\n  if (cd == (iconv_t)(-1))\n  {\n    state_prefix_put (bufi, *l, s);\n    *l = 0;\n    return;\n  }\n\n  ib = bufi, ibl = *l;\n  for (;;)\n  {\n    ob = bufo, obl = sizeof (bufo);\n    mutt_iconv (cd, &ib, &ibl, &ob, &obl, 0, \"?\");\n    if (ob == bufo)\n      break;\n    state_prefix_put (bufo, ob - bufo, s);\n  }\n  memmove (bufi, ib, ibl);\n  *l = ibl;\n}\n\nstatic void mutt_decode_xbit (STATE *s, long len, int istext, iconv_t cd)\n{\n  int c, ch;\n  char bufi[BUFI_SIZE];\n  size_t l = 0;\n\n  if (istext)\n  {\n    state_set_prefix(s);\n\n    while ((c = fgetc(s->fpin)) != EOF && len--)\n    {\n      if(c == '\\r' && len)\n      {\n\tif((ch = fgetc(s->fpin)) == '\\n')\n\t{\n\t  c = ch;\n\t  len--;\n\t}\n\telse \n\t  ungetc(ch, s->fpin);\n      }\n\n      bufi[l++] = c;\n      if (l == sizeof (bufi))\n\tmutt_convert_to_state (cd, bufi, &l, s);\n    }\n\n    mutt_convert_to_state (cd, bufi, &l, s);\n    mutt_convert_to_state (cd, 0, 0, s);\n\n    state_reset_prefix (s);\n  }\n  else\n    mutt_copy_bytes (s->fpin, s->fpout, len);\n}\n\nstatic int qp_decode_triple (char *s, char *d)\n{\n  /* soft line break */\n  if (*s == '=' && !(*(s+1)))\n    return 1;\n  \n  /* quoted-printable triple */\n  if (*s == '=' &&\n      isxdigit ((unsigned char) *(s+1)) &&\n      isxdigit ((unsigned char) *(s+2)))\n  {\n    *d = (hexval (*(s+1)) << 4) | hexval (*(s+2));\n    return 0;\n  }\n  \n  /* something else */\n  return -1;\n}\n\nstatic void qp_decode_line (char *dest, char *src, size_t *l,\n\t\t\t    int last)\n{\n  char *d, *s;\n  char c = 0;\n\n  int kind = -1;\n  int soft = 0;\n\n  /* decode the line */\n  \n  for (d = dest, s = src; *s;)\n  {\n    switch ((kind = qp_decode_triple (s, &c)))\n    {\n      case  0: *d++ = c; s += 3; break;\t/* qp triple */\n      case -1: *d++ = *s++;      break; /* single character */\n      case  1: soft = 1; s++;\t break; /* soft line break */\n    }\n  }\n\n  if (!soft && last == '\\n')\n  {\n    /* neither \\r nor \\n as part of line-terminating CRLF\n     * may be qp-encoded, so remove \\r and \\n-terminate;\n     * see RfC2045, sect. 6.7, (1): General 8bit representation */\n    if (kind == 0 && c == '\\r')\n      *(d-1) = '\\n';\n    else\n      *d++ = '\\n';\n  }\n  \n  *d = '\\0';\n  *l = d - dest;\n}\n\n/* \n * Decode an attachment encoded with quoted-printable.\n * \n * Why doesn't this overflow any buffers?  First, it's guaranteed\n * that the length of a line grows when you _en_-code it to\n * quoted-printable.  That means that we always can store the\n * result in a buffer of at most the _same_ size.\n * \n * Now, we don't special-case if the line we read with fgets()\n * isn't terminated.  We don't care about this, since STRING > 78,\n * so corrupted input will just be corrupted a bit more.  That\n * implies that STRING+1 bytes are always sufficient to store the\n * result of qp_decode_line.\n * \n * Finally, at soft line breaks, some part of a multibyte character\n * may have been left over by mutt_convert_to_state().  This shouldn't\n * be more than 6 characters, so STRING + 7 should be sufficient\n * memory to store the decoded data.\n * \n * Just to make sure that I didn't make some off-by-one error\n * above, we just use STRING*2 for the target buffer's size.\n * \n */\n\nstatic void mutt_decode_quoted (STATE *s, long len, int istext, iconv_t cd)\n{\n  char line[STRING];\n  char decline[2*STRING];\n  size_t l = 0;\n  size_t linelen;      /* number of input bytes in `line' */\n  size_t l3;\n  \n  int last;    /* store the last character in the input line */\n  \n  if (istext)\n    state_set_prefix(s);\n\n  while (len > 0)\n  {\n    last = 0;\n    \n    /*\n     * It's ok to use a fixed size buffer for input, even if the line turns\n     * out to be longer than this.  Just process the line in chunks.  This\n     * really shouldn't happen according the MIME spec, since Q-P encoded\n     * lines are at most 76 characters, but we should be liberal about what\n     * we accept.\n     */\n    if (fgets (line, MIN ((ssize_t)sizeof (line), len + 1), s->fpin) == NULL)\n      break;\n\n    linelen = strlen(line);\n    len -= linelen;\n\n    /*\n     * inspect the last character we read so we can tell if we got the\n     * entire line.\n     */\n    last = linelen ? line[linelen - 1] : 0;\n\n    /* chop trailing whitespace if we got the full line */\n    if (last == '\\n')\n    {\n      while (linelen > 0 && ISSPACE (line[linelen-1]))\n       linelen--;\n      line[linelen]=0;\n    }\n\n    /* decode and do character set conversion */\n    qp_decode_line (decline + l, line, &l3, last);\n    l += l3;\n    mutt_convert_to_state (cd, decline, &l, s);\n  }\n\n  mutt_convert_to_state (cd, 0, 0, s);\n  state_reset_prefix(s);\n}\n\nvoid mutt_decode_base64 (STATE *s, long len, int istext, iconv_t cd)\n{\n  char buf[5];\n  int c1, c2, c3, c4, ch, cr = 0, i;\n  char bufi[BUFI_SIZE];\n  size_t l = 0;\n\n  buf[4] = 0;\n\n  if (istext) \n    state_set_prefix(s);\n\n  while (len > 0)\n  {\n    for (i = 0 ; i < 4 && len > 0 ; len--)\n    {\n      if ((ch = fgetc (s->fpin)) == EOF)\n\tbreak;\n      if (ch >= 0 && ch < 128 && (base64val(ch) != -1 || ch == '='))\n\tbuf[i++] = ch;\n    }\n    if (i != 4)\n    {\n      /* \"i\" may be zero if there is trailing whitespace, which is not an error */\n      if (i != 0)\n\tdprint (2, (debugfile, \"%s:%d [mutt_decode_base64()]: \"\n\t      \"didn't get a multiple of 4 chars.\\n\", __FILE__, __LINE__));\n      break;\n    }\n\n    c1 = base64val (buf[0]);\n    c2 = base64val (buf[1]);\n    ch = (c1 << 2) | (c2 >> 4);\n\n    if (cr && ch != '\\n') \n      bufi[l++] = '\\r';\n\n    cr = 0;\n      \n    if (istext && ch == '\\r')\n      cr = 1;\n    else\n      bufi[l++] = ch;\n\n    if (buf[2] == '=')\n      break;\n    c3 = base64val (buf[2]);\n    ch = ((c2 & 0xf) << 4) | (c3 >> 2);\n\n    if (cr && ch != '\\n')\n      bufi[l++] = '\\r';\n\n    cr = 0;\n\n    if (istext && ch == '\\r')\n      cr = 1;\n    else\n      bufi[l++] = ch;\n\n    if (buf[3] == '=') break;\n    c4 = base64val (buf[3]);\n    ch = ((c3 & 0x3) << 6) | c4;\n\n    if (cr && ch != '\\n')\n      bufi[l++] = '\\r';\n    cr = 0;\n\n    if (istext && ch == '\\r')\n      cr = 1;\n    else\n      bufi[l++] = ch;\n    \n    if (l + 8 >= sizeof (bufi))\n      mutt_convert_to_state (cd, bufi, &l, s);\n  }\n\n  if (cr) bufi[l++] = '\\r';\n\n  mutt_convert_to_state (cd, bufi, &l, s);\n  mutt_convert_to_state (cd, 0, 0, s);\n\n  state_reset_prefix(s);\n}\n\nstatic unsigned char decode_byte (char ch)\n{\n  if (ch == 96)\n    return 0;\n  return ch - 32;\n}\n\nstatic void mutt_decode_uuencoded (STATE *s, long len, int istext, iconv_t cd)\n{\n  char tmps[SHORT_STRING];\n  char linelen, c, l, out;\n  char *pt;\n  char bufi[BUFI_SIZE];\n  size_t k = 0;\n\n  if(istext)\n    state_set_prefix(s);\n  \n  while(len > 0)\n  {\n    if ((fgets(tmps, sizeof(tmps), s->fpin)) == NULL)\n      return;\n    len -= mutt_strlen(tmps);\n    if ((!mutt_strncmp (tmps, \"begin\", 5)) && ISSPACE (tmps[5]))\n      break;\n  }\n  while(len > 0)\n  {\n    if ((fgets(tmps, sizeof(tmps), s->fpin)) == NULL)\n      return;\n    len -= mutt_strlen(tmps);\n    if (!mutt_strncmp (tmps, \"end\", 3))\n      break;\n    pt = tmps;\n    linelen = decode_byte (*pt);\n    pt++;\n    for (c = 0; c < linelen;)\n    {\n      for (l = 2; l <= 6; l += 2)\n      {\n\tout = decode_byte (*pt) << l;\n\tpt++;\n\tout |= (decode_byte (*pt) >> (6 - l));\n\tbufi[k++] = out;\n\tc++;\n\tif (c == linelen)\n\t  break;\n      }\n      mutt_convert_to_state (cd, bufi, &k, s);\n      pt++;\n    }\n  }\n\n  mutt_convert_to_state (cd, bufi, &k, s);\n  mutt_convert_to_state (cd, 0, 0, s);\n  \n  state_reset_prefix(s);\n}\n\n/* ----------------------------------------------------------------------------\n * A (not so) minimal implementation of RFC1563.\n */\n\n#define IndentSize (4)\n    \nenum { RICH_PARAM=0, RICH_BOLD, RICH_UNDERLINE, RICH_ITALIC, RICH_NOFILL, \n  RICH_INDENT, RICH_INDENT_RIGHT, RICH_EXCERPT, RICH_CENTER, RICH_FLUSHLEFT,\n  RICH_FLUSHRIGHT, RICH_COLOR, RICH_LAST_TAG };\n\nstatic const struct {\n  const wchar_t *tag_name;\n  int index;\n} EnrichedTags[] = {\n  { L\"param\",\t\tRICH_PARAM },\n  { L\"bold\",\t\tRICH_BOLD },\n  { L\"italic\",\t\tRICH_ITALIC },\n  { L\"underline\",\tRICH_UNDERLINE },\n  { L\"nofill\",\t\tRICH_NOFILL },\n  { L\"excerpt\",\t\tRICH_EXCERPT },\n  { L\"indent\",\t\tRICH_INDENT },\n  { L\"indentright\",\tRICH_INDENT_RIGHT },\n  { L\"center\",\t\tRICH_CENTER },\n  { L\"flushleft\",\tRICH_FLUSHLEFT },\n  { L\"flushright\",\tRICH_FLUSHRIGHT },\n  { L\"flushboth\",\tRICH_FLUSHLEFT },\n  { L\"color\",\t\tRICH_COLOR },\n  { L\"x-color\",\t\tRICH_COLOR },\n  { NULL,\t\t-1 }\n};\n\nstruct enriched_state\n{\n  wchar_t *buffer;\n  wchar_t *line;\n  wchar_t *param;\n  size_t buff_len;\n  size_t line_len;\n  size_t line_used;\n  size_t line_max;\n  size_t indent_len;\n  size_t word_len;\n  size_t buff_used;\n  size_t param_used;\n  size_t param_len;\n  int tag_level[RICH_LAST_TAG];\n  int WrapMargin;\n  STATE *s;\n};\n\nstatic void enriched_wrap (struct enriched_state *stte)\n{\n  int x;\n  int extra;\n\n  if (stte->line_len)\n  {\n    if (stte->tag_level[RICH_CENTER] || stte->tag_level[RICH_FLUSHRIGHT])\n    {\n      /* Strip trailing white space */\n      size_t y = stte->line_used - 1;\n\n      while (y && iswspace (stte->line[y]))\n      {\n\tstte->line[y] = (wchar_t) '\\0';\n\ty--;\n\tstte->line_used--;\n\tstte->line_len--;\n      }\n      if (stte->tag_level[RICH_CENTER])\n      {\n\t/* Strip leading whitespace */\n\ty = 0;\n\n\twhile (stte->line[y] && iswspace (stte->line[y]))\n\t  y++;\n\tif (y)\n\t{\n\t  size_t z;\n\n\t  for (z = y ; z <= stte->line_used; z++)\n\t  {\n\t    stte->line[z - y] = stte->line[z];\n\t  }\n\n\t  stte->line_len -= y;\n\t  stte->line_used -= y;\n\t}\n      }\n    }\n\n    extra = stte->WrapMargin - stte->line_len - stte->indent_len -\n      (stte->tag_level[RICH_INDENT_RIGHT] * IndentSize);\n    if (extra > 0) \n    {\n      if (stte->tag_level[RICH_CENTER]) \n      {\n\tx = extra / 2;\n\twhile (x)\n\t{\n\t  state_putc (' ', stte->s);\n\t  x--;\n\t}\n      } \n      else if (stte->tag_level[RICH_FLUSHRIGHT])\n      {\n\tx = extra-1;\n\twhile (x)\n\t{\n\t  state_putc (' ', stte->s);\n\t  x--;\n\t}\n      }\n    }\n    state_putws ((const wchar_t*) stte->line, stte->s);\n  }\n\n  state_putc ('\\n', stte->s);\n  stte->line[0] = (wchar_t) '\\0';\n  stte->line_len = 0;\n  stte->line_used = 0;\n  stte->indent_len = 0;\n  if (stte->s->prefix)\n  {\n    state_puts (stte->s->prefix, stte->s);\n    stte->indent_len += mutt_strlen (stte->s->prefix);\n  }\n\n  if (stte->tag_level[RICH_EXCERPT])\n  {\n    x = stte->tag_level[RICH_EXCERPT];\n    while (x) \n    {\n      if (stte->s->prefix)\n      {\n\tstate_puts (stte->s->prefix, stte->s);\n\t    stte->indent_len += mutt_strlen (stte->s->prefix);\n      }\n      else\n      {\n\tstate_puts (\"> \", stte->s);\n\tstte->indent_len += mutt_strlen (\"> \");\n      }\n      x--;\n    }\n  }\n  else\n    stte->indent_len = 0;\n  if (stte->tag_level[RICH_INDENT])\n  {\n    x = stte->tag_level[RICH_INDENT] * IndentSize;\n    stte->indent_len += x;\n    while (x) \n    {\n      state_putc (' ', stte->s);\n      x--;\n    }\n  }\n}\n\nstatic void enriched_flush (struct enriched_state *stte, int wrap)\n{\n  if (!stte->tag_level[RICH_NOFILL] && (stte->line_len + stte->word_len > \n      (stte->WrapMargin - (stte->tag_level[RICH_INDENT_RIGHT] * IndentSize) - \n       stte->indent_len)))\n    enriched_wrap (stte);\n\n  if (stte->buff_used)\n  {\n    stte->buffer[stte->buff_used] = (wchar_t) '\\0';\n    stte->line_used += stte->buff_used;\n    if (stte->line_used > stte->line_max)\n    {\n      stte->line_max = stte->line_used;\n      safe_realloc (&stte->line, (stte->line_max + 1) * sizeof (wchar_t));\n    }\n    wcscat (stte->line, stte->buffer);\n    stte->line_len += stte->word_len;\n    stte->word_len = 0;\n    stte->buff_used = 0;\n  }\n  if (wrap)\n    enriched_wrap(stte);\n  fflush (stte->s->fpout);\n}\n\n\nstatic void enriched_putwc (wchar_t c, struct enriched_state *stte)\n{\n  if (stte->tag_level[RICH_PARAM]) \n  {\n    if (stte->tag_level[RICH_COLOR]) \n    {\n      if (stte->param_used + 1 >= stte->param_len)\n\tsafe_realloc (&stte->param, (stte->param_len += STRING) * sizeof (wchar_t));\n\n      stte->param[stte->param_used++] = c;\n    }\n    return; /* nothing to do */\n  }\n\n  /* see if more space is needed (plus extra for possible rich characters) */\n  if (stte->buff_len < stte->buff_used + 3)\n  {\n    stte->buff_len += LONG_STRING;\n    safe_realloc (&stte->buffer, (stte->buff_len + 1) * sizeof (wchar_t));\n  }\n\n  if ((!stte->tag_level[RICH_NOFILL] && iswspace (c)) || c == (wchar_t) '\\0')\n  {\n    if (c == (wchar_t) '\\t')\n      stte->word_len += 8 - (stte->line_len + stte->word_len) % 8;\n    else\n      stte->word_len++;\n    \n    stte->buffer[stte->buff_used++] = c;\n    enriched_flush (stte, 0);\n  }\n  else\n  {\n    if (stte->s->flags & M_DISPLAY)\n    {\n      if (stte->tag_level[RICH_BOLD])\n      {\n\tstte->buffer[stte->buff_used++] = c;\n\tstte->buffer[stte->buff_used++] = (wchar_t) '\\010';\n\tstte->buffer[stte->buff_used++] = c;\n      }\n      else if (stte->tag_level[RICH_UNDERLINE])\n      {\n\n\tstte->buffer[stte->buff_used++] = '_';\n\tstte->buffer[stte->buff_used++] = (wchar_t) '\\010';\n\tstte->buffer[stte->buff_used++] = c;\n      }\n      else if (stte->tag_level[RICH_ITALIC])\n      {\n\tstte->buffer[stte->buff_used++] = c;\n\tstte->buffer[stte->buff_used++] = (wchar_t) '\\010';\n\tstte->buffer[stte->buff_used++] = '_';\n      }\n      else\n      {\n\tstte->buffer[stte->buff_used++] = c;\n      }\n    }\n    else\n    {\n      stte->buffer[stte->buff_used++] = c;\n    }\n    stte->word_len++;\n  }\n}\n\nstatic void enriched_puts (const char *s, struct enriched_state *stte)\n{\n  const char *c;\n\n  if (stte->buff_len < stte->buff_used + mutt_strlen (s))\n  {\n    stte->buff_len += LONG_STRING;\n    safe_realloc (&stte->buffer, (stte->buff_len + 1) * sizeof (wchar_t));\n  }\n  c = s;\n  while (*c)\n  {\n    stte->buffer[stte->buff_used++] = (wchar_t) *c;\n    c++;\n  }\n}\n\nstatic void enriched_set_flags (const wchar_t *tag, struct enriched_state *stte)\n{\n  const wchar_t *tagptr = tag;\n  int i, j;\n\n  if (*tagptr == (wchar_t) '/')\n    tagptr++;\n  \n  for (i = 0, j = -1; EnrichedTags[i].tag_name; i++)\n    if (wcscasecmp (EnrichedTags[i].tag_name, tagptr) == 0)\n    {\n      j = EnrichedTags[i].index;\n      break;\n    }\n\n  if (j != -1)\n  {\n    if (j == RICH_CENTER || j == RICH_FLUSHLEFT || j == RICH_FLUSHRIGHT)\n      enriched_flush (stte, 1);\n\n    if (*tag == (wchar_t) '/')\n    {\n      if (stte->tag_level[j]) /* make sure not to go negative */\n\tstte->tag_level[j]--;\n      if ((stte->s->flags & M_DISPLAY) && j == RICH_PARAM && stte->tag_level[RICH_COLOR])\n      {\n\tstte->param[stte->param_used] = (wchar_t) '\\0';\n\tif (!wcscasecmp(L\"black\", stte->param))\n\t{\n\t  enriched_puts(\"\\033[30m\", stte);\n\t}\n\telse if (!wcscasecmp(L\"red\", stte->param))\n\t{\n\t  enriched_puts(\"\\033[31m\", stte);\n\t}\n\telse if (!wcscasecmp(L\"green\", stte->param))\n\t{\n\t  enriched_puts(\"\\033[32m\", stte);\n\t}\n\telse if (!wcscasecmp(L\"yellow\", stte->param))\n\t{\n\t  enriched_puts(\"\\033[33m\", stte);\n\t}\n\telse if (!wcscasecmp(L\"blue\", stte->param))\n\t{\n\t  enriched_puts(\"\\033[34m\", stte);\n\t}\n\telse if (!wcscasecmp(L\"magenta\", stte->param))\n\t{\n\t  enriched_puts(\"\\033[35m\", stte);\n\t}\n\telse if (!wcscasecmp(L\"cyan\", stte->param))\n\t{\n\t  enriched_puts(\"\\033[36m\", stte);\n\t}\n\telse if (!wcscasecmp(L\"white\", stte->param))\n\t{\n\t  enriched_puts(\"\\033[37m\", stte);\n\t}\n      }\n      if ((stte->s->flags & M_DISPLAY) && j == RICH_COLOR)\n      {\n\tenriched_puts(\"\\033[0m\", stte);\n      }\n\n      /* flush parameter buffer when closing the tag */\n      if (j == RICH_PARAM)\n      {\n\tstte->param_used = 0;\n\tstte->param[0] = (wchar_t) '\\0';\n      }\n    }\n    else\n      stte->tag_level[j]++;\n\n    if (j == RICH_EXCERPT)\n      enriched_flush(stte, 1);\n  }\n}\n\nstatic int text_enriched_handler (BODY *a, STATE *s)\n{\n  enum {\n    TEXT, LANGLE, TAG, BOGUS_TAG, NEWLINE, ST_EOF, DONE\n  } state = TEXT;\n\n  long bytes = a->length;\n  struct enriched_state stte;\n  wchar_t wc = 0;\n  int tag_len = 0;\n  wchar_t tag[LONG_STRING + 1];\n\n  memset (&stte, 0, sizeof (stte));\n  stte.s = s;\n  stte.WrapMargin = ((s->flags & M_DISPLAY) ? (COLS-4) : ((COLS-4)<72)?(COLS-4):72);\n  stte.line_max = stte.WrapMargin * 4;\n  stte.line = (wchar_t *) safe_calloc (1, (stte.line_max + 1) * sizeof (wchar_t));\n  stte.param = (wchar_t *) safe_calloc (1, (STRING) * sizeof (wchar_t));\n\n  stte.param_len = STRING;\n  stte.param_used = 0;\n\n  if (s->prefix)\n  {\n    state_puts (s->prefix, s);\n    stte.indent_len += mutt_strlen (s->prefix);\n  }\n\n  while (state != DONE)\n  {\n    if (state != ST_EOF)\n    {\n      if (!bytes || (wc = fgetwc (s->fpin)) == WEOF)\n\tstate = ST_EOF;\n      else\n\tbytes--;\n    }\n\n    switch (state)\n    {\n      case TEXT :\n\tswitch (wc)\n\t{\n\t  case '<' :\n\t    state = LANGLE;\n\t    break;\n\n\t  case '\\n' :\n\t    if (stte.tag_level[RICH_NOFILL])\n\t    {\n\t      enriched_flush (&stte, 1);\n\t    }\n\t    else \n\t    {\n\t      enriched_putwc ((wchar_t) ' ', &stte);\n\t      state = NEWLINE;\n\t    }\n\t    break;\n\n\t  default:\n\t    enriched_putwc (wc, &stte);\n\t}\n\tbreak;\n\n      case LANGLE :\n\tif (wc == (wchar_t) '<')\n\t{\n\t  enriched_putwc (wc, &stte);\n\t  state = TEXT;\n\t  break;\n\t}\n\telse\n\t{\n\t  tag_len = 0;\n\t  state = TAG;\n\t}\n\t/* Yes, fall through (it wasn't a <<, so this char is first in TAG) */\n      case TAG :\n\tif (wc == (wchar_t) '>')\n\t{\n\t  tag[tag_len] = (wchar_t) '\\0';\n\t  enriched_set_flags (tag, &stte);\n\t  state = TEXT;\n\t}\n\telse if (tag_len < LONG_STRING)  /* ignore overly long tags */\n\t  tag[tag_len++] = wc;\n\telse\n\t  state = BOGUS_TAG;\n\tbreak;\n\n      case BOGUS_TAG :\n\tif (wc == (wchar_t) '>')\n\t  state = TEXT;\n\tbreak;\n\n      case NEWLINE :\n\tif (wc == (wchar_t) '\\n')\n\t  enriched_flush (&stte, 1);\n\telse\n\t{\n\t  ungetwc (wc, s->fpin);\n\t  bytes++;\n\t  state = TEXT;\n\t}\n\tbreak;\n\n      case ST_EOF :\n\tenriched_putwc ((wchar_t) '\\0', &stte);\n        enriched_flush (&stte, 1);\n\tstate = DONE;\n\tbreak;\n\n      case DONE: /* not reached, but gcc complains if this is absent */\n\tbreak;\n    }\n  }\n\n  state_putc ('\\n', s); /* add a final newline */\n\n  FREE (&(stte.buffer));\n  FREE (&(stte.line));\n  FREE (&(stte.param));\n\n  return 0;\n}                                                                              \n\n/* for compatibility with metamail */\nstatic int is_mmnoask (const char *buf)\n{\n  char tmp[LONG_STRING], *p, *q;\n  int lng;\n\n  if ((p = getenv (\"MM_NOASK\")) != NULL && *p)\n  {\n    if (mutt_strcmp (p, \"1\") == 0)\n      return (1);\n\n    strfcpy (tmp, p, sizeof (tmp));\n    p = tmp;\n\n    while ((p = strtok (p, \",\")) != NULL)\n    {\n      if ((q = strrchr (p, '/')) != NULL)\n      {\n\tif (*(q+1) == '*')\n\t{\n\t  if (ascii_strncasecmp (buf, p, q-p) == 0)\n\t    return (1);\n\t}\n\telse\n\t{\n\t  if (ascii_strcasecmp (buf, p) == 0)\n\t    return (1);\n\t}\n      }\n      else\n      {\n\tlng = mutt_strlen (p);\n\tif (buf[lng] == '/' && mutt_strncasecmp (buf, p, lng) == 0)\n\t  return (1);\n      }\n\n      p = NULL;\n    }\n  }\n\n  return (0);\n}\n\n/*\n * Returns:\n * 1    if the body part should be filtered by a mailcap entry prior to viewing inline.\n *\n * 0    otherwise\n */\nstatic int mutt_is_autoview (BODY *b)\n{\n  char type[SHORT_STRING];\n  int is_autoview = 0;\n\n  snprintf (type, sizeof (type), \"%s/%s\", TYPE (b), b->subtype);\n\n  if (option(OPTIMPLICITAUTOVIEW))\n  {\n    /* $implicit_autoview is essentially the same as \"auto_view *\" */\n    is_autoview = 1;\n  }\n  else\n  {\n    /* determine if this type is on the user's auto_view list */\n    LIST *t = AutoViewList;\n\n    mutt_check_lookup_list (b, type, sizeof (type));\n    for (; t; t = t->next) {\n      int i = mutt_strlen (t->data) - 1;\n      if ((i > 0 && t->data[i-1] == '/' && t->data[i] == '*' && \n            ascii_strncasecmp (type, t->data, i) == 0) ||\n          ascii_strcasecmp (type, t->data) == 0)\n        is_autoview = 1;\n    }\n\n    if (is_mmnoask (type))\n      is_autoview = 1;\n  }\n\n  /* determine if there is a mailcap entry suitable for auto_view\n   *\n   * WARNING: type is altered by this call as a result of `mime_lookup' support */\n  if (is_autoview)\n    return rfc1524_mailcap_lookup(b, type, NULL, M_AUTOVIEW);\n\n  return 0;\n}\n\n#define TXTHTML     1\n#define TXTPLAIN    2\n#define TXTENRICHED 3\n\nstatic int alternative_handler (BODY *a, STATE *s)\n{\n  BODY *choice = NULL;\n  BODY *b;\n  LIST *t;\n  int type = 0;\n  int mustfree = 0;\n  int rc = 0;\n\n  if (a->encoding == ENCBASE64 || a->encoding == ENCQUOTEDPRINTABLE ||\n      a->encoding == ENCUUENCODED)\n  {\n    struct stat st;\n    mustfree = 1;\n    fstat (fileno (s->fpin), &st);\n    b = mutt_new_body ();\n    b->length = (long) st.st_size;\n    b->parts = mutt_parse_multipart (s->fpin,\n\t\t  mutt_get_parameter (\"boundary\", a->parameter),\n\t\t  (long) st.st_size, ascii_strcasecmp (\"digest\", a->subtype) == 0);\n  }\n  else\n    b = a;\n\n  a = b;\n\n  /* First, search list of preferred types */\n  t = AlternativeOrderList;\n  while (t && !choice)\n  {\n    char *c;\n    int btlen;  /* length of basetype */\n    int wild;\t/* do we have a wildcard to match all subtypes? */\n\n    c = strchr (t->data, '/');\n    if (c)\n    {\n      wild = (c[1] == '*' && c[2] == 0);\n      btlen = c - t->data;\n    }\n    else\n    {\n      wild = 1;\n      btlen = mutt_strlen (t->data);\n    }\n\n    if (a && a->parts) \n      b = a->parts;\n    else\n      b = a;\n    while (b)\n    {\n      const char *bt = TYPE(b);\n      if (!ascii_strncasecmp (bt, t->data, btlen) && bt[btlen] == 0)\n      {\n\t/* the basetype matches */\n\tif (wild || !ascii_strcasecmp (t->data + btlen + 1, b->subtype))\n\t{\n\t  choice = b;\n\t}\n      }\n      b = b->next;\n    }\n    t = t->next;\n  }\n\n  /* Next, look for an autoviewable type */\n  if (!choice)\n  {\n    if (a && a->parts) \n      b = a->parts;\n    else\n      b = a;\n    while (b)\n    {\n      if (mutt_is_autoview (b))\n\tchoice = b;\n      b = b->next;\n    }\n  }\n\n  /* Then, look for a text entry */\n  if (!choice)\n  {\n    if (a && a->parts) \n      b = a->parts;\n    else\n      b = a;\n    while (b)\n    {\n      if (b->type == TYPETEXT)\n      {\n\tif (! ascii_strcasecmp (\"plain\", b->subtype) && type <= TXTPLAIN)\n\t{\n\t  choice = b;\n\t  type = TXTPLAIN;\n\t}\n\telse if (! ascii_strcasecmp (\"enriched\", b->subtype) && type <= TXTENRICHED)\n\t{\n\t  choice = b;\n\t  type = TXTENRICHED;\n\t}\n\telse if (! ascii_strcasecmp (\"html\", b->subtype) && type <= TXTHTML)\n\t{\n\t  choice = b;\n\t  type = TXTHTML;\n\t}\n      }\n      b = b->next;\n    }\n  }\n\n  /* Finally, look for other possibilities */\n  if (!choice)\n  {\n    if (a && a->parts) \n      b = a->parts;\n    else\n      b = a;\n    while (b)\n    {\n      if (mutt_can_decode (b))\n\tchoice = b;\n      b = b->next;\n    }\n  }\n\n  if (choice)\n  {\n    if (s->flags & M_DISPLAY && !option (OPTWEED))\n    {\n      fseeko (s->fpin, choice->hdr_offset, 0);\n      mutt_copy_bytes(s->fpin, s->fpout, choice->offset-choice->hdr_offset);\n    }\n    mutt_body_handler (choice, s);\n  }\n  else if (s->flags & M_DISPLAY)\n  {\n    /* didn't find anything that we could display! */\n    state_mark_attach (s);\n    state_puts(_(\"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"), s);\n    rc = -1;\n  }\n\n  if (mustfree)\n    mutt_free_body(&a);\n\n  return rc;\n}\n\n/* handles message/rfc822 body parts */\nstatic int message_handler (BODY *a, STATE *s)\n{\n  struct stat st;\n  BODY *b;\n  LOFF_T off_start;\n  int rc = 0;\n\n  off_start = ftello (s->fpin);\n  if (a->encoding == ENCBASE64 || a->encoding == ENCQUOTEDPRINTABLE || \n      a->encoding == ENCUUENCODED)\n  {\n    fstat (fileno (s->fpin), &st);\n    b = mutt_new_body ();\n    b->length = (LOFF_T) st.st_size;\n    b->parts = mutt_parse_messageRFC822 (s->fpin, b);\n  }\n  else\n    b = a;\n\n  if (b->parts)\n  {\n    mutt_copy_hdr (s->fpin, s->fpout, off_start, b->parts->offset,\n\t(((s->flags & M_WEED) || ((s->flags & (M_DISPLAY|M_PRINTING)) && option (OPTWEED))) ? (CH_WEED | CH_REORDER) : 0) |\n\t(s->prefix ? CH_PREFIX : 0) | CH_DECODE | CH_FROM |\n\t((s->flags & M_DISPLAY) ? CH_DISPLAY : 0), s->prefix);\n\n    if (s->prefix)\n      state_puts (s->prefix, s);\n    state_putc ('\\n', s);\n\n    rc = mutt_body_handler (b->parts, s);\n  }\n\n  if (a->encoding == ENCBASE64 || a->encoding == ENCQUOTEDPRINTABLE ||\n      a->encoding == ENCUUENCODED)\n    mutt_free_body (&b);\n  \n  return rc;\n}\n\n/* returns 1 if decoding the attachment will produce output */\nint mutt_can_decode (BODY *a)\n{\n  if (mutt_is_autoview (a))\n    return 1;\n  else if (a->type == TYPETEXT)\n    return (1);\n  else if (a->type == TYPEMESSAGE)\n    return (1);\n  else if (a->type == TYPEMULTIPART)\n  {\n    BODY *p;\n\n    if (WithCrypto)\n    {\n      if (ascii_strcasecmp (a->subtype, \"signed\") == 0 ||\n\t  ascii_strcasecmp (a->subtype, \"encrypted\") == 0)\n        return (1);\n    }\n\n    for (p = a->parts; p; p = p->next)\n    {\n      if (mutt_can_decode (p))\n        return (1);\n    }\n    \n  }\n  else if (WithCrypto && a->type == TYPEAPPLICATION)\n  {\n    if ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp(a))\n      return (1);\n    if ((WithCrypto & APPLICATION_SMIME) && mutt_is_application_smime(a))\n      return (1);\n  }\n\n  return (0);\n}\n\nstatic int multipart_handler (BODY *a, STATE *s)\n{\n  BODY *b, *p;\n  char length[5];\n  struct stat st;\n  int count;\n  int rc = 0;\n\n  if (a->encoding == ENCBASE64 || a->encoding == ENCQUOTEDPRINTABLE ||\n      a->encoding == ENCUUENCODED)\n  {\n    fstat (fileno (s->fpin), &st);\n    b = mutt_new_body ();\n    b->length = (long) st.st_size;\n    b->parts = mutt_parse_multipart (s->fpin,\n\t\t  mutt_get_parameter (\"boundary\", a->parameter),\n\t\t  (long) st.st_size, ascii_strcasecmp (\"digest\", a->subtype) == 0);\n  }\n  else\n    b = a;\n\n  for (p = b->parts, count = 1; p; p = p->next, count++)\n  {\n    if (s->flags & M_DISPLAY)\n    {\n      state_mark_attach (s);\n      state_printf (s, _(\"[-- Attachment #%d\"), count);\n      if (p->description || p->filename || p->form_name)\n      {\n\tstate_puts (\": \", s);\n\tstate_puts (p->description ? p->description :\n\t\t    p->filename ? p->filename : p->form_name, s);\n      }\n      state_puts (\" --]\\n\", s);\n\n      mutt_pretty_size (length, sizeof (length), p->length);\n      \n      state_mark_attach (s);\n      state_printf (s, _(\"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"),\n\t\t    TYPE (p), p->subtype, ENCODING (p->encoding), length);\n      if (!option (OPTWEED))\n      {\n\tfseeko (s->fpin, p->hdr_offset, 0);\n\tmutt_copy_bytes(s->fpin, s->fpout, p->offset-p->hdr_offset);\n      }\n      else\n\tstate_putc ('\\n', s);\n    }\n\n    rc = mutt_body_handler (p, s);\n    state_putc ('\\n', s);\n    \n    if (rc)\n    {\n      mutt_error (_(\"One or more parts of this message could not be displayed\"));\n      dprint (1, (debugfile, \"Failed on attachment #%d, type %s/%s.\\n\", count, TYPE(p), NONULL (p->subtype)));\n    }\n    \n    if ((s->flags & M_REPLYING)\n        && (option (OPTINCLUDEONLYFIRST)) && (s->flags & M_FIRSTDONE))\n      break;\n  }\n\n  if (a->encoding == ENCBASE64 || a->encoding == ENCQUOTEDPRINTABLE ||\n      a->encoding == ENCUUENCODED)\n    mutt_free_body (&b);\n\n  /* make failure of a single part non-fatal */\n  if (rc < 0)\n    rc = 1;\n  return rc;\n}\n\nstatic int autoview_handler (BODY *a, STATE *s)\n{\n  rfc1524_entry *entry = rfc1524_new_entry ();\n  char buffer[LONG_STRING];\n  char type[STRING];\n  char command[LONG_STRING];\n  char tempfile[_POSIX_PATH_MAX] = \"\";\n  char *fname;\n  FILE *fpin = NULL;\n  FILE *fpout = NULL;\n  FILE *fperr = NULL;\n  int piped = FALSE;\n  pid_t thepid;\n  int rc = 0;\n\n  snprintf (type, sizeof (type), \"%s/%s\", TYPE (a), a->subtype);\n  rfc1524_mailcap_lookup (a, type, entry, M_AUTOVIEW);\n\n  fname = safe_strdup (a->filename);\n  mutt_sanitize_filename (fname, 1);\n  rfc1524_expand_filename (entry->nametemplate, fname, tempfile, sizeof (tempfile));\n  FREE (&fname);\n\n  if (entry->command)\n  {\n    strfcpy (command, entry->command, sizeof (command));\n\n    /* rfc1524_expand_command returns 0 if the file is required */\n    piped = rfc1524_expand_command (a, tempfile, type, command, sizeof (command));\n\n    if (s->flags & M_DISPLAY)\n    {\n      state_mark_attach (s);\n      state_printf (s, _(\"[-- Autoview using %s --]\\n\"), command);\n      mutt_message(_(\"Invoking autoview command: %s\"),command);\n    }\n\n    if ((fpin = safe_fopen (tempfile, \"w+\")) == NULL)\n    {\n      mutt_perror (\"fopen\");\n      rfc1524_free_entry (&entry);\n      return -1;\n    }\n    \n    mutt_copy_bytes (s->fpin, fpin, a->length);\n\n    if(!piped)\n    {\n      safe_fclose (&fpin);\n      thepid = mutt_create_filter (command, NULL, &fpout, &fperr);\n    }\n    else\n    {\n      unlink (tempfile);\n      fflush (fpin);\n      rewind (fpin);\n      thepid = mutt_create_filter_fd (command, NULL, &fpout, &fperr,\n\t\t\t\t      fileno(fpin), -1, -1);\n    }\n\n    if (thepid < 0)\n    {\n      mutt_perror _(\"Can't create filter\");\n      if (s->flags & M_DISPLAY)\n      {\n\tstate_mark_attach (s);\n\tstate_printf (s, _(\"[-- Can't run %s. --]\\n\"), command);\n      }\n      rc = -1;\n      goto bail;\n    }\n    \n    if (s->prefix)\n    {\n      while (fgets (buffer, sizeof(buffer), fpout) != NULL)\n      {\n        state_puts (s->prefix, s);\n        state_puts (buffer, s);\n      }\n      /* check for data on stderr */\n      if (fgets (buffer, sizeof(buffer), fperr)) \n      {\n\tif (s->flags & M_DISPLAY)\n\t{\n\t  state_mark_attach (s);\n\t  state_printf (s, _(\"[-- Autoview stderr of %s --]\\n\"), command);\n\t}\n\n\tstate_puts (s->prefix, s);\n\tstate_puts (buffer, s);\n\twhile (fgets (buffer, sizeof(buffer), fperr) != NULL)\n\t{\n\t  state_puts (s->prefix, s);\n\t  state_puts (buffer, s);\n\t}\n      }\n    }\n    else\n    {\n      mutt_copy_stream (fpout, s->fpout);\n      /* Check for stderr messages */\n      if (fgets (buffer, sizeof(buffer), fperr))\n      {\n\tif (s->flags & M_DISPLAY)\n\t{\n\t  state_mark_attach (s);\n\t  state_printf (s, _(\"[-- Autoview stderr of %s --]\\n\"), \n\t\t\tcommand);\n\t}\n\t\n\tstate_puts (buffer, s);\n\tmutt_copy_stream (fperr, s->fpout);\n      }\n    }\n\n  bail:\n    safe_fclose (&fpout);\n    safe_fclose (&fperr);\n\n    mutt_wait_filter (thepid);\n    if (piped)\n      safe_fclose (&fpin);\n    else\n      mutt_unlink (tempfile);\n\n    if (s->flags & M_DISPLAY) \n      mutt_clear_error ();\n  }\n  rfc1524_free_entry (&entry);\n\n  return rc;\n}\n\nstatic int external_body_handler (BODY *b, STATE *s)\n{\n  const char *access_type;\n  const char *expiration;\n  time_t expire;\n\n  access_type = mutt_get_parameter (\"access-type\", b->parameter);\n  if (!access_type)\n  {\n    if (s->flags & M_DISPLAY)\n    {\n      state_mark_attach (s);\n      state_puts (_(\"[-- Error: message/external-body has no access-type parameter --]\\n\"), s);\n      return 0;\n    }\n    else\n      return -1;\n  }\n\n  expiration = mutt_get_parameter (\"expiration\", b->parameter);\n  if (expiration)\n    expire = mutt_parse_date (expiration, NULL);\n  else\n    expire = -1;\n\n  if (!ascii_strcasecmp (access_type, \"x-mutt-deleted\"))\n  {\n    if (s->flags & (M_DISPLAY|M_PRINTING))\n    {\n      char *length;\n      char pretty_size[10];\n      \n      state_mark_attach (s);\n      state_printf (s, _(\"[-- This %s/%s attachment \"),\n\t       TYPE(b->parts), b->parts->subtype);\n      length = mutt_get_parameter (\"length\", b->parameter);\n      if (length)\n      {\n\tmutt_pretty_size (pretty_size, sizeof (pretty_size),\n\t\t\t  strtol (length, NULL, 10));\n\tstate_printf (s, _(\"(size %s bytes) \"), pretty_size);\n      }\n      state_puts (_(\"has been deleted --]\\n\"), s);\n\n      if (expire != -1)\n      {\n\tstate_mark_attach (s);\n\tstate_printf (s, _(\"[-- on %s --]\\n\"), expiration);\n      }\n      if (b->parts->filename)\n      {\n\tstate_mark_attach (s);\n\tstate_printf (s, _(\"[-- name: %s --]\\n\"), b->parts->filename);\n      }\n\n      mutt_copy_hdr (s->fpin, s->fpout, ftello (s->fpin), b->parts->offset,\n\t\t     (option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) |\n\t\t     CH_DECODE , NULL);\n    }\n  }\n  else if(expiration && expire < time(NULL))\n  {\n    if (s->flags & M_DISPLAY)\n    {\n      state_mark_attach (s);\n      state_printf (s, _(\"[-- This %s/%s attachment is not included, --]\\n\"),\n\t\t    TYPE(b->parts), b->parts->subtype);\n      state_attach_puts (_(\"[-- and the indicated external source has --]\\n\"\n\t\t\t   \"[-- expired. --]\\n\"), s);\n\n      mutt_copy_hdr(s->fpin, s->fpout, ftello (s->fpin), b->parts->offset,\n\t\t    (option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) |\n\t\t    CH_DECODE | CH_DISPLAY, NULL);\n    }\n  }\n  else\n  {\n    if (s->flags & M_DISPLAY)\n    {\n      state_mark_attach (s);\n      state_printf (s,\n\t\t    _(\"[-- This %s/%s attachment is not included, --]\\n\"),\n\t\t    TYPE (b->parts), b->parts->subtype);\n      state_mark_attach (s);\n      state_printf (s, \n\t\t    _(\"[-- and the indicated access-type %s is unsupported --]\\n\"),\n\t\t    access_type);\n      mutt_copy_hdr (s->fpin, s->fpout, ftello (s->fpin), b->parts->offset,\n\t\t     (option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) |\n\t\t     CH_DECODE | CH_DISPLAY, NULL);\n    }\n  }\n  \n  return 0;\n}\n\nvoid mutt_decode_attachment (BODY *b, STATE *s)\n{\n  int istext = mutt_is_text_part (b);\n  iconv_t cd = (iconv_t)(-1);\n\n  if (istext && s->flags & M_CHARCONV)\n  {\n    char *charset = mutt_get_parameter (\"charset\", b->parameter);\n    if (!charset && AssumedCharset && *AssumedCharset)\n      charset = mutt_get_default_charset ();\n    if (charset && Charset)\n      cd = mutt_iconv_open (Charset, charset, M_ICONV_HOOK_FROM);\n  }\n  else if (istext && b->charset)\n    cd = mutt_iconv_open (Charset, b->charset, M_ICONV_HOOK_FROM);\n\n  fseeko (s->fpin, b->offset, 0);\n  switch (b->encoding)\n  {\n    case ENCQUOTEDPRINTABLE:\n      mutt_decode_quoted (s, b->length, istext || ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b)), cd);\n      break;\n    case ENCBASE64:\n      mutt_decode_base64 (s, b->length, istext || ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b)), cd);\n      break;\n    case ENCUUENCODED:\n      mutt_decode_uuencoded (s, b->length, istext || ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b)), cd);\n      break;\n    default:\n      mutt_decode_xbit (s, b->length, istext || ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b)), cd);\n      break;\n  }\n\n  if (cd != (iconv_t)(-1))\n    iconv_close (cd);\n}\n\n/* when generating format=flowed ($text_flowed is set) from format=fixed,\n * strip all trailing spaces to improve interoperability;\n * if $text_flowed is unset, simply verbatim copy input\n */\nstatic int text_plain_handler (BODY *b, STATE *s)\n{\n  char *buf = NULL;\n  size_t l = 0, sz = 0;\n\n  while ((buf = mutt_read_line (buf, &sz, s->fpin, NULL, 0)))\n  {\n    if (mutt_strcmp (buf, \"-- \") != 0 && option (OPTTEXTFLOWED))\n    {\n      l = mutt_strlen (buf);\n      while (l > 0 && buf[l-1] == ' ')\n\tbuf[--l] = 0;\n    }\n    if (s->prefix)\n      state_puts (s->prefix, s);\n    state_puts (buf, s);\n    state_putc ('\\n', s);\n  }\n\n  FREE (&buf);\n  return 0;\n}\n\nstatic int run_decode_and_handler (BODY *b, STATE *s, handler_t handler, int plaintext)\n{\n  int origType;\n  char *savePrefix = NULL;\n  FILE *fp = NULL;\n  char tempfile[_POSIX_PATH_MAX];\n  size_t tmplength = 0;\n  LOFF_T tmpoffset = 0;\n  int decode = 0;\n  int rc = 0;\n\n  fseeko (s->fpin, b->offset, 0);\n\n  /* see if we need to decode this part before processing it */\n  if (b->encoding == ENCBASE64 || b->encoding == ENCQUOTEDPRINTABLE ||\n      b->encoding == ENCUUENCODED || plaintext ||\n      mutt_is_text_part (b))\t\t\t\t/* text subtypes may\n                                                        * require character\n                                                        * set conversion even\n                                                        * with 8bit encoding.\n                                                        */\n  {\n    origType = b->type;\n\n    if (!plaintext)\n    {\n      /* decode to a tempfile, saving the original destination */\n      fp = s->fpout;\n      mutt_mktemp (tempfile, sizeof (tempfile));\n      if ((s->fpout = safe_fopen (tempfile, \"w\")) == NULL)\n      {\n        mutt_error _(\"Unable to open temporary file!\");\n        dprint (1, (debugfile, \"Can't open %s.\\n\", tempfile));\n        return -1;\n      }\n      /* decoding the attachment changes the size and offset, so save a copy\n        * of the \"real\" values now, and restore them after processing\n        */\n      tmplength = b->length;\n      tmpoffset = b->offset;\n\n      /* if we are decoding binary bodies, we don't want to prefix each\n        * line with the prefix or else the data will get corrupted.\n        */\n      savePrefix = s->prefix;\n      s->prefix = NULL;\n\n      decode = 1;\n    }\n    else\n      b->type = TYPETEXT;\n\n    mutt_decode_attachment (b, s);\n\n    if (decode)\n    {\n      b->length = ftello (s->fpout);\n      b->offset = 0;\n      safe_fclose (&s->fpout);\n\n      /* restore final destination and substitute the tempfile for input */\n      s->fpout = fp;\n      fp = s->fpin;\n      s->fpin = fopen (tempfile, \"r\");\n      unlink (tempfile);\n\n      /* restore the prefix */\n      s->prefix = savePrefix;\n    }\n\n    b->type = origType;\n  }\n\n  /* process the (decoded) body part */\n  if (handler)\n  {\n    rc = handler (b, s);\n\n    if (rc)\n    {\n      dprint (1, (debugfile, \"Failed on attachment of type %s/%s.\\n\", TYPE(b), NONULL (b->subtype)));\n    }\n\n    if (decode)\n    {\n      b->length = tmplength;\n      b->offset = tmpoffset;\n\n      /* restore the original source stream */\n      safe_fclose (&s->fpin);\n      s->fpin = fp;\n    }\n  }\n  s->flags |= M_FIRSTDONE;\n\n  return rc;\n}\n\nstatic int valid_pgp_encrypted_handler (BODY *b, STATE *s)\n{\n  int rc;\n  BODY *octetstream;\n\n  octetstream = b->parts->next;\n  rc = crypt_pgp_encrypted_handler (octetstream, s);\n  b->goodsig |= octetstream->goodsig;\n\n  return rc;\n}\n\nstatic int malformed_pgp_encrypted_handler (BODY *b, STATE *s)\n{\n  int rc;\n  BODY *octetstream;\n\n  octetstream = b->parts->next->next;\n  /* exchange encodes the octet-stream, so re-run it through the decoder */\n  rc = run_decode_and_handler (octetstream, s, crypt_pgp_encrypted_handler, 0);\n  b->goodsig |= octetstream->goodsig;\n\n  return rc;\n}\n\nint mutt_body_handler (BODY *b, STATE *s)\n{\n  int plaintext = 0;\n  handler_t handler = NULL;\n  int rc = 0;\n\n  int oflags = s->flags;\n  \n  /* first determine which handler to use to process this part */\n\n  if (mutt_is_autoview (b))\n  {\n    handler = autoview_handler;\n    s->flags &= ~M_CHARCONV;\n  }\n  else if (b->type == TYPETEXT)\n  {\n    if (ascii_strcasecmp (\"plain\", b->subtype) == 0)\n    {\n      /* avoid copying this part twice since removing the transfer-encoding is\n       * the only operation needed.\n       */\n      if ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b))\n\thandler = crypt_pgp_application_pgp_handler;\n      else if (option(OPTREFLOWTEXT) && ascii_strcasecmp (\"flowed\", mutt_get_parameter (\"format\", b->parameter)) == 0)\n\thandler = rfc3676_handler;\n      else\n\thandler = text_plain_handler;\n    }\n    else if (ascii_strcasecmp (\"enriched\", b->subtype) == 0)\n      handler = text_enriched_handler;\n    else /* text body type without a handler */\n      plaintext = 1;\n  }\n  else if (b->type == TYPEMESSAGE)\n  {\n    if(mutt_is_message_type(b->type, b->subtype))\n      handler = message_handler;\n    else if (!ascii_strcasecmp (\"delivery-status\", b->subtype))\n      plaintext = 1;\n    else if (!ascii_strcasecmp (\"external-body\", b->subtype))\n      handler = external_body_handler;\n  }\n  else if (b->type == TYPEMULTIPART)\n  {\n    char *p;\n\n    if (ascii_strcasecmp (\"alternative\", b->subtype) == 0)\n      handler = alternative_handler;\n    else if (WithCrypto && ascii_strcasecmp (\"signed\", b->subtype) == 0)\n    {\n      p = mutt_get_parameter (\"protocol\", b->parameter);\n\n      if (!p)\n        mutt_error _(\"Error: multipart/signed has no protocol.\");\n      else if (s->flags & M_VERIFY)\n\thandler = mutt_signed_handler;\n    }\n    else if (mutt_is_valid_multipart_pgp_encrypted (b))\n      handler = valid_pgp_encrypted_handler;\n    else if (mutt_is_malformed_multipart_pgp_encrypted (b))\n      handler = malformed_pgp_encrypted_handler;\n\n    if (!handler)\n      handler = multipart_handler;\n\n    if (b->encoding != ENC7BIT && b->encoding != ENC8BIT\n        && b->encoding != ENCBINARY)\n    {\n      dprint (1, (debugfile, \"Bad encoding type %d for multipart entity, \"\n                  \"assuming 7 bit\\n\", b->encoding));\n      b->encoding = ENC7BIT;\n    }\n  }\n  else if (WithCrypto && b->type == TYPEAPPLICATION)\n  {\n    if (option (OPTDONTHANDLEPGPKEYS)\n        && !ascii_strcasecmp(\"pgp-keys\", b->subtype))\n    {\n      /* pass raw part through for key extraction */\n      plaintext = 1;\n    }\n    else if ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b))\n      handler = crypt_pgp_application_pgp_handler;\n    else if ((WithCrypto & APPLICATION_SMIME) && mutt_is_application_smime(b))\n      handler = crypt_smime_application_smime_handler;\n  }\n\n  /* only respect disposition == attachment if we're not\n     displaying from the attachment menu (i.e. pager) */\n  if ((!option (OPTHONORDISP) || (b->disposition != DISPATTACH ||\n\t\t\t\t  option(OPTVIEWATTACH))) &&\n       (plaintext || handler))\n  {\n    rc = run_decode_and_handler (b, s, handler, plaintext);\n  }\n  /* print hint to use attachment menu for disposition == attachment\n     if we're not already being called from there */\n  else if ((s->flags & M_DISPLAY) || (b->disposition == DISPATTACH &&\n\t\t\t\t      !option (OPTVIEWATTACH) &&\n\t\t\t\t      option (OPTHONORDISP) &&\n\t\t\t\t      (plaintext || handler)))\n  {\n    state_mark_attach (s);\n    if (option (OPTHONORDISP) && b->disposition == DISPATTACH)\n      fputs (_(\"[-- This is an attachment \"), s->fpout);\n    else\n      state_printf (s, _(\"[-- %s/%s is unsupported \"), TYPE (b), b->subtype);\n    if (!option (OPTVIEWATTACH))\n    {\n      char keystroke[SHORT_STRING];\n\n      if (km_expand_key (keystroke, sizeof(keystroke),\n\t\t\tkm_find_func (MENU_PAGER, OP_VIEW_ATTACHMENTS)))\n\tfprintf (s->fpout, _(\"(use '%s' to view this part)\"), keystroke);\n      else\n\tfputs (_(\"(need 'view-attachments' bound to key!)\"), s->fpout);\n    }\n    fputs (\" --]\\n\", s->fpout);\n  }\n\n  s->flags = oflags | (s->flags & M_FIRSTDONE);\n  if (rc)\n  {\n    dprint (1, (debugfile, \"Bailing on attachment of type %s/%s.\\n\", TYPE(b), NONULL (b->subtype)));\n  }\n\n  return rc;\n}\n"
  },
  {
    "path": "hash.c",
    "content": "/*\n * Copyright (C) 1996-2009 Michael R. Elkins <me@mutt.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdlib.h>\n#include <stdio.h>\n#include <string.h>\n#include <ctype.h>\n\n#include \"mutt.h\"\n\n#define SOMEPRIME 149711\n\nstatic unsigned int hash_string (const unsigned char *s, unsigned int n)\n{\n  unsigned int h = 0;\n\n  while (*s)\n    h += (h << 7) + *s++;\n  h = (h * SOMEPRIME) % n;\n\n  return h;\n}\n\nstatic unsigned int hash_case_string (const unsigned char *s, unsigned int n)\n{\n  unsigned int h = 0;\n\n  while (*s)\n    h += (h << 7) + tolower (*s++);\n  h = (h * SOMEPRIME) % n;\n\n  return h;\n}\n\nHASH *hash_create (int nelem, int lower)\n{\n  HASH *table = safe_malloc (sizeof (HASH));\n  if (nelem == 0)\n    nelem = 2;\n  table->nelem = nelem;\n  table->table = safe_calloc (nelem, sizeof (struct hash_elem *));\n  if (lower)\n  {\n    table->hash_string = hash_case_string;\n    table->cmp_string = mutt_strcasecmp;\n  }\n  else\n  {\n    table->hash_string = hash_string;\n    table->cmp_string = mutt_strcmp;\n  }\n  return table;\n}\n\n/* table        hash table to update\n * key          key to hash on\n * data         data to associate with `key'\n * allow_dup    if nonzero, duplicate keys are allowed in the table \n */\nint hash_insert (HASH * table, const char *key, void *data, int allow_dup)\n{\n  struct hash_elem *ptr;\n  unsigned int h;\n\n  ptr = (struct hash_elem *) safe_malloc (sizeof (struct hash_elem));\n  h = table->hash_string ((unsigned char *) key, table->nelem);\n  ptr->key = key;\n  ptr->data = data;\n\n  if (allow_dup)\n  {\n    ptr->next = table->table[h];\n    table->table[h] = ptr;\n  }\n  else\n  {\n    struct hash_elem *tmp, *last;\n    int r;\n\n    for (tmp = table->table[h], last = NULL; tmp; last = tmp, tmp = tmp->next)\n    {\n      r = table->cmp_string (tmp->key, key);\n      if (r == 0)\n      {\n\tFREE (&ptr);\n\treturn (-1);\n      }\n      if (r > 0)\n\tbreak;\n    }\n    if (last)\n      last->next = ptr;\n    else\n      table->table[h] = ptr;\n    ptr->next = tmp;\n  }\n  return h;\n}\n\nvoid *hash_find_hash (const HASH * table, int hash, const char *key)\n{\n  struct hash_elem *ptr = table->table[hash];\n  for (; ptr; ptr = ptr->next)\n  {\n    if (table->cmp_string (key, ptr->key) == 0)\n      return (ptr->data);\n  }\n  return NULL;\n}\n\nvoid hash_delete_hash (HASH * table, int hash, const char *key, const void *data,\n\t\t       void (*destroy) (void *))\n{\n  struct hash_elem *ptr = table->table[hash];\n  struct hash_elem **last = &table->table[hash];\n\n  while (ptr) \n  {\n    if ((data == ptr->data || !data)\n\t&& table->cmp_string (ptr->key, key) == 0)\n    {\n      *last = ptr->next;\n      if (destroy)\n\tdestroy (ptr->data);\n      FREE (&ptr);\n      \n      ptr = *last;\n    }\n    else\n    {\n      last = &ptr->next;\n      ptr = ptr->next;\n    }\n  }\n}\n\n/* ptr\t\tpointer to the hash table to be freed\n * destroy()\tfunction to call to free the ->data member (optional) \n */\nvoid hash_destroy (HASH **ptr, void (*destroy) (void *))\n{\n  int i;\n  HASH *pptr = *ptr;\n  struct hash_elem *elem, *tmp;\n\n  for (i = 0 ; i < pptr->nelem; i++)\n  {\n    for (elem = pptr->table[i]; elem; )\n    {\n      tmp = elem;\n      elem = elem->next;\n      if (destroy)\n\tdestroy (tmp->data);\n      FREE (&tmp);\n    }\n  }\n  FREE (&pptr->table);\n  FREE (ptr);\t\t/* __FREE_CHECKED__ */\n}\n"
  },
  {
    "path": "hash.h",
    "content": "/*\n * Copyright (C) 1996-2009 Michael R. Elkins <me@mutt.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifndef _HASH_H\n#define _HASH_H\n\nstruct hash_elem\n{\n  const char *key;\n  void *data;\n  struct hash_elem *next;\n};\n\ntypedef struct\n{\n  int nelem;\n  struct hash_elem **table;\n  unsigned int (*hash_string)(const unsigned char *, unsigned int);\n  int (*cmp_string)(const char *, const char *);\n}\nHASH;\n\n#define hash_find(table, key) hash_find_hash(table, table->hash_string ((unsigned char *)key, table->nelem), key)\n\n#define hash_delete(table,key,data,destroy) hash_delete_hash(table, table->hash_string ((unsigned char *)key, table->nelem), key, data, destroy)\n\nHASH *hash_create (int nelem, int lower);\nint hash_insert (HASH * table, const char *key, void *data, int allow_dup);\nvoid *hash_find_hash (const HASH * table, int hash, const char *key);\nvoid hash_delete_hash (HASH * table, int hash, const char *key, const void *data,\n\t\t       void (*destroy) (void *));\nvoid hash_destroy (HASH ** hash, void (*destroy) (void *));\n\n#endif\n"
  },
  {
    "path": "hcache.c",
    "content": "/*\n * Copyright (C) 2004 Thomas Glanzmann <sithglan@stud.uni-erlangen.de>\n * Copyright (C) 2004 Tobias Werth <sitowert@stud.uni-erlangen.de>\n * Copyright (C) 2004 Brian Fundakowski Feldman <green@FreeBSD.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n#include \"config.h\"\n#endif\t\t\t\t/* HAVE_CONFIG_H */\n\n#if HAVE_QDBM\n#include <depot.h>\n#include <cabin.h>\n#include <villa.h>\n#elif HAVE_TC\n#include <tcbdb.h>\n#elif HAVE_GDBM\n#include <gdbm.h>\n#elif HAVE_DB4\n#include <db.h>\n#endif\n\n#include <errno.h>\n#include <fcntl.h>\n#if HAVE_SYS_TIME_H\n#include <sys/time.h>\n#endif\n#include \"mutt.h\"\n#include \"hcache.h\"\n#include \"hcversion.h\"\n#include \"mx.h\"\n#include \"lib.h\"\n#include \"md5.h\"\n#include \"rfc822.h\"\n\nunsigned int hcachever = 0x0;\n\n#if HAVE_QDBM\nstruct header_cache\n{\n  VILLA *db;\n  char *folder;\n  unsigned int crc;\n};\n#elif HAVE_TC\nstruct header_cache\n{\n  TCBDB *db;\n  char *folder;\n  unsigned int crc;\n};\n#elif HAVE_GDBM\nstruct header_cache\n{\n  GDBM_FILE db;\n  char *folder;\n  unsigned int crc;\n};\n#elif HAVE_DB4\nstruct header_cache\n{\n  DB_ENV *env;\n  DB *db;\n  char *folder;\n  unsigned int crc;\n  int fd;\n  char lockfile[_POSIX_PATH_MAX];\n};\n\nstatic void mutt_hcache_dbt_init(DBT * dbt, void *data, size_t len);\nstatic void mutt_hcache_dbt_empty_init(DBT * dbt);\n#endif\n\ntypedef union\n{\n  struct timeval timeval;\n  unsigned int uidvalidity;\n} validate;\n\nstatic void *\nlazy_malloc(size_t siz)\n{\n  if (0 < siz && siz < 4096)\n    siz = 4096;\n\n  return safe_malloc(siz);\n}\n\nstatic void\nlazy_realloc(void *ptr, size_t siz)\n{\n  void **p = (void **) ptr;\n\n  if (p != NULL && 0 < siz && siz < 4096)\n    return;\n\n  safe_realloc(ptr, siz);\n}\n\nstatic unsigned char *\ndump_int(unsigned int i, unsigned char *d, int *off)\n{\n  lazy_realloc(&d, *off + sizeof (int));\n  memcpy(d + *off, &i, sizeof (int));\n  (*off) += sizeof (int);\n\n  return d;\n}\n\nstatic void\nrestore_int(unsigned int *i, const unsigned char *d, int *off)\n{\n  memcpy(i, d + *off, sizeof (int));\n  (*off) += sizeof (int);\n}\n\nstatic inline int is_ascii (const char *p, size_t len) {\n  register const char *s = p;\n  while (s && (unsigned) (s - p) < len) {\n    if ((*s & 0x80) != 0)\n      return 0;\n    s++;\n  }\n  return 1;\n}\n\nstatic unsigned char *\ndump_char_size(char *c, unsigned char *d, int *off, ssize_t size, int convert)\n{\n  char *p = c;\n\n  if (c == NULL)\n  {\n    size = 0;\n    d = dump_int(size, d, off);\n    return d;\n  }\n\n  if (convert && !is_ascii (c, size)) {\n    p = mutt_substrdup (c, c + size);\n    if (mutt_convert_string (&p, Charset, \"utf-8\", 0) == 0) {\n      c = p;\n      size = mutt_strlen (c) + 1;\n    }\n  }\n\n  d = dump_int(size, d, off);\n  lazy_realloc(&d, *off + size);\n  memcpy(d + *off, p, size);\n  *off += size;\n\n  if (p != c)\n    FREE(&p);\n\n  return d;\n}\n\nstatic unsigned char *\ndump_char(char *c, unsigned char *d, int *off, int convert)\n{\n  return dump_char_size (c, d, off, mutt_strlen (c) + 1, convert);\n}\n\nstatic void\nrestore_char(char **c, const unsigned char *d, int *off, int convert)\n{\n  unsigned int size;\n  restore_int(&size, d, off);\n\n  if (size == 0)\n  {\n    *c = NULL;\n    return;\n  }\n\n  *c = safe_malloc(size);\n  memcpy(*c, d + *off, size);\n  if (convert && !is_ascii (*c, size)) {\n    char *tmp = safe_strdup (*c);\n    if (mutt_convert_string (&tmp, \"utf-8\", Charset, 0) == 0) {\n      mutt_str_replace (c, tmp);\n    } else {\n      FREE(&tmp);\n    }\n  }\n  *off += size;\n}\n\nstatic unsigned char *\ndump_address(ADDRESS * a, unsigned char *d, int *off, int convert)\n{\n  unsigned int counter = 0;\n  unsigned int start_off = *off;\n\n  d = dump_int(0xdeadbeef, d, off);\n\n  while (a)\n  {\n#ifdef EXACT_ADDRESS\n    d = dump_char(a->val, d, off, convert);\n#endif\n    d = dump_char(a->personal, d, off, convert);\n    d = dump_char(a->mailbox, d, off, 0);\n    d = dump_int(a->group, d, off);\n    a = a->next;\n    counter++;\n  }\n\n  memcpy(d + start_off, &counter, sizeof (int));\n\n  return d;\n}\n\nstatic void\nrestore_address(ADDRESS ** a, const unsigned char *d, int *off, int convert)\n{\n  unsigned int counter;\n\n  restore_int(&counter, d, off);\n\n  while (counter)\n  {\n    *a = rfc822_new_address();\n#ifdef EXACT_ADDRESS\n    restore_char(&(*a)->val, d, off, convert);\n#endif\n    restore_char(&(*a)->personal, d, off, convert);\n    restore_char(&(*a)->mailbox, d, off, 0);\n    restore_int((unsigned int *) &(*a)->group, d, off);\n    a = &(*a)->next;\n    counter--;\n  }\n\n  *a = NULL;\n}\n\nstatic unsigned char *\ndump_list(LIST * l, unsigned char *d, int *off, int convert)\n{\n  unsigned int counter = 0;\n  unsigned int start_off = *off;\n\n  d = dump_int(0xdeadbeef, d, off);\n\n  while (l)\n  {\n    d = dump_char(l->data, d, off, convert);\n    l = l->next;\n    counter++;\n  }\n\n  memcpy(d + start_off, &counter, sizeof (int));\n\n  return d;\n}\n\nstatic void\nrestore_list(LIST ** l, const unsigned char *d, int *off, int convert)\n{\n  unsigned int counter;\n\n  restore_int(&counter, d, off);\n\n  while (counter)\n  {\n    *l = safe_malloc(sizeof (LIST));\n    restore_char(&(*l)->data, d, off, convert);\n    l = &(*l)->next;\n    counter--;\n  }\n\n  *l = NULL;\n}\n\nstatic unsigned char *\ndump_buffer(BUFFER * b, unsigned char *d, int *off, int convert)\n{\n  if (!b)\n  {\n    d = dump_int(0, d, off);\n    return d;\n  }\n  else\n    d = dump_int(1, d, off);\n\n  d = dump_char_size(b->data, d, off, b->dsize + 1, convert);\n  d = dump_int(b->dptr - b->data, d, off);\n  d = dump_int(b->dsize, d, off);\n  d = dump_int(b->destroy, d, off);\n\n  return d;\n}\n\nstatic void\nrestore_buffer(BUFFER ** b, const unsigned char *d, int *off, int convert)\n{\n  unsigned int used;\n  unsigned int offset;\n  restore_int(&used, d, off);\n  if (!used)\n  {\n    return;\n  }\n\n  *b = safe_malloc(sizeof (BUFFER));\n\n  restore_char(&(*b)->data, d, off, convert);\n  restore_int(&offset, d, off);\n  (*b)->dptr = (*b)->data + offset;\n  restore_int (&used, d, off);\n  (*b)->dsize = used;\n  restore_int (&used, d, off);\n  (*b)->destroy = used;\n}\n\nstatic unsigned char *\ndump_parameter(PARAMETER * p, unsigned char *d, int *off, int convert)\n{\n  unsigned int counter = 0;\n  unsigned int start_off = *off;\n\n  d = dump_int(0xdeadbeef, d, off);\n\n  while (p)\n  {\n    d = dump_char(p->attribute, d, off, 0);\n    d = dump_char(p->value, d, off, convert);\n    p = p->next;\n    counter++;\n  }\n\n  memcpy(d + start_off, &counter, sizeof (int));\n\n  return d;\n}\n\nstatic void\nrestore_parameter(PARAMETER ** p, const unsigned char *d, int *off, int convert)\n{\n  unsigned int counter;\n\n  restore_int(&counter, d, off);\n\n  while (counter)\n  {\n    *p = safe_malloc(sizeof (PARAMETER));\n    restore_char(&(*p)->attribute, d, off, 0);\n    restore_char(&(*p)->value, d, off, convert);\n    p = &(*p)->next;\n    counter--;\n  }\n\n  *p = NULL;\n}\n\nstatic unsigned char *\ndump_body(BODY * c, unsigned char *d, int *off, int convert)\n{\n  BODY nb;\n\n  memcpy (&nb, c, sizeof (BODY));\n\n  /* some fields are not safe to cache */\n  nb.content = NULL;\n  nb.charset = NULL;\n  nb.next = NULL;\n  nb.parts = NULL;\n  nb.hdr = NULL;\n  nb.aptr = NULL;\n\n  lazy_realloc(&d, *off + sizeof (BODY));\n  memcpy(d + *off, &nb, sizeof (BODY));\n  *off += sizeof (BODY);\n\n  d = dump_char(nb.xtype, d, off, 0);\n  d = dump_char(nb.subtype, d, off, 0);\n\n  d = dump_parameter(nb.parameter, d, off, convert);\n\n  d = dump_char(nb.description, d, off, convert);\n  d = dump_char(nb.form_name, d, off, convert);\n  d = dump_char(nb.filename, d, off, convert);\n  d = dump_char(nb.d_filename, d, off, convert);\n\n  return d;\n}\n\nstatic void\nrestore_body(BODY * c, const unsigned char *d, int *off, int convert)\n{\n  memcpy(c, d + *off, sizeof (BODY));\n  *off += sizeof (BODY);\n\n  restore_char(&c->xtype, d, off, 0);\n  restore_char(&c->subtype, d, off, 0);\n\n  restore_parameter(&c->parameter, d, off, convert);\n\n  restore_char(&c->description, d, off, convert);\n  restore_char(&c->form_name, d, off, convert);\n  restore_char(&c->filename, d, off, convert);\n  restore_char(&c->d_filename, d, off, convert);\n}\n\nstatic unsigned char *\ndump_envelope(ENVELOPE * e, unsigned char *d, int *off, int convert)\n{\n  d = dump_address(e->return_path, d, off, convert);\n  d = dump_address(e->from, d, off, convert);\n  d = dump_address(e->to, d, off, convert);\n  d = dump_address(e->cc, d, off, convert);\n  d = dump_address(e->bcc, d, off, convert);\n  d = dump_address(e->sender, d, off, convert);\n  d = dump_address(e->reply_to, d, off, convert);\n  d = dump_address(e->mail_followup_to, d, off, convert);\n\n  d = dump_char(e->list_post, d, off, convert);\n  d = dump_char(e->subject, d, off, convert);\n\n  if (e->real_subj)\n    d = dump_int(e->real_subj - e->subject, d, off);\n  else\n    d = dump_int(-1, d, off);\n\n  d = dump_char(e->message_id, d, off, 0);\n  d = dump_char(e->supersedes, d, off, 0);\n  d = dump_char(e->date, d, off, 0);\n  d = dump_char(e->x_label, d, off, convert);\n\n  d = dump_buffer(e->spam, d, off, convert);\n\n  d = dump_list(e->references, d, off, 0);\n  d = dump_list(e->in_reply_to, d, off, 0);\n  d = dump_list(e->userhdrs, d, off, convert);\n\n  return d;\n}\n\nstatic void\nrestore_envelope(ENVELOPE * e, const unsigned char *d, int *off, int convert)\n{\n  int real_subj_off;\n\n  restore_address(&e->return_path, d, off, convert);\n  restore_address(&e->from, d, off, convert);\n  restore_address(&e->to, d, off, convert);\n  restore_address(&e->cc, d, off, convert);\n  restore_address(&e->bcc, d, off, convert);\n  restore_address(&e->sender, d, off, convert);\n  restore_address(&e->reply_to, d, off, convert);\n  restore_address(&e->mail_followup_to, d, off, convert);\n\n  restore_char(&e->list_post, d, off, convert);\n  restore_char(&e->subject, d, off, convert);\n  restore_int((unsigned int *) (&real_subj_off), d, off);\n\n  if (0 <= real_subj_off)\n    e->real_subj = e->subject + real_subj_off;\n  else\n    e->real_subj = NULL;\n\n  restore_char(&e->message_id, d, off, 0);\n  restore_char(&e->supersedes, d, off, 0);\n  restore_char(&e->date, d, off, 0);\n  restore_char(&e->x_label, d, off, convert);\n\n  restore_buffer(&e->spam, d, off, convert);\n\n  restore_list(&e->references, d, off, 0);\n  restore_list(&e->in_reply_to, d, off, 0);\n  restore_list(&e->userhdrs, d, off, convert);\n}\n\nstatic int\ncrc_matches(const char *d, unsigned int crc)\n{\n  int off = sizeof (validate);\n  unsigned int mycrc = 0;\n\n  if (!d)\n    return 0;\n\n  restore_int(&mycrc, (unsigned char *) d, &off);\n\n  return (crc == mycrc);\n}\n\n/* Append md5sumed folder to path if path is a directory. */\nstatic const char *\nmutt_hcache_per_folder(const char *path, const char *folder,\n                       hcache_namer_t namer)\n{\n  static char hcpath[_POSIX_PATH_MAX];\n  struct stat sb;\n  unsigned char md5sum[16];\n  char* s;\n  int ret, plen;\n#ifndef HAVE_ICONV\n  const char *chs = Charset && *Charset ? Charset : \n\t\t    mutt_get_default_charset ();\n#endif\n\n  plen = mutt_strlen (path);\n\n  ret = stat(path, &sb);\n  if (ret < 0 && path[plen-1] != '/')\n  {\n#ifdef HAVE_ICONV\n    return path;\n#else\n    snprintf (hcpath, _POSIX_PATH_MAX, \"%s-%s\", path, chs);\n    return hcpath;\n#endif\n  }\n\n  if (ret >= 0 && !S_ISDIR(sb.st_mode))\n  {\n#ifdef HAVE_ICONV\n    return path;\n#else\n    snprintf (hcpath, _POSIX_PATH_MAX, \"%s-%s\", path, chs);\n    return hcpath;\n#endif\n  }\n\n  if (namer)\n  {\n    snprintf (hcpath, sizeof (hcpath), \"%s%s\", path,\n              path[plen-1] == '/' ? \"\" : \"/\");\n    if (path[plen-1] != '/')\n      plen++;\n\n    ret = namer (folder, hcpath + plen, sizeof (hcpath) - plen);\n  }\n  else\n  {\n    md5_buffer (folder, strlen (folder), &md5sum);\n\n    /* On some systems (e.g. OS X), snprintf is defined as a macro.\n     * Embedding directives inside macros is undefined, so we have to duplicate\n     * the whole call:\n     */\n#ifndef HAVE_ICONV\n    ret = snprintf(hcpath, _POSIX_PATH_MAX,\n                   \"%s/%02x%02x%02x%02x%02x%02x%02x%02x\"\n                   \"%02x%02x%02x%02x%02x%02x%02x%02x\"\n\t\t   \"-%s\"\n\t\t   ,\n\t\t   path, md5sum[0], md5sum[1], md5sum[2], md5sum[3],\n                   md5sum[4], md5sum[5], md5sum[6], md5sum[7], md5sum[8],\n                   md5sum[9], md5sum[10], md5sum[11], md5sum[12],\n                   md5sum[13], md5sum[14], md5sum[15]\n\t\t   ,chs\n\t\t   );\n#else\n    ret = snprintf(hcpath, _POSIX_PATH_MAX,\n                   \"%s/%02x%02x%02x%02x%02x%02x%02x%02x\"\n                   \"%02x%02x%02x%02x%02x%02x%02x%02x\"\n\t\t   ,\n\t\t   path, md5sum[0], md5sum[1], md5sum[2], md5sum[3],\n                   md5sum[4], md5sum[5], md5sum[6], md5sum[7], md5sum[8],\n                   md5sum[9], md5sum[10], md5sum[11], md5sum[12],\n                   md5sum[13], md5sum[14], md5sum[15]\n\t\t   );\n#endif\n  }\n  \n  if (ret <= 0)\n    return path;\n\n  if (stat (hcpath, &sb) >= 0)\n    return hcpath;\n\n  s = strchr (hcpath + 1, '/');\n  while (s)\n  {\n    /* create missing path components */\n    *s = '\\0';\n    if (stat (hcpath, &sb) < 0 && (errno != ENOENT || mkdir (hcpath, 0777) < 0))\n      return path;\n    *s = '/';\n    s = strchr (s + 1, '/');\n  }\n\n  return hcpath;\n}\n\n/* This function transforms a header into a char so that it is useable by\n * db_store.\n */\nstatic void *\nmutt_hcache_dump(header_cache_t *h, HEADER * header, int *off,\n\t\t unsigned int uidvalidity, mutt_hcache_store_flags_t flags)\n{\n  unsigned char *d = NULL;\n  HEADER nh;\n  int convert = !Charset_is_utf8;\n\n  *off = 0;\n  d = lazy_malloc(sizeof (validate));\n\n  if (flags & M_GENERATE_UIDVALIDITY)\n  {\n    struct timeval now;\n    gettimeofday(&now, NULL);\n    memcpy(d, &now, sizeof (struct timeval));\n  }\n  else\n    memcpy(d, &uidvalidity, sizeof (uidvalidity));\n  *off += sizeof (validate);\n\n  d = dump_int(h->crc, d, off);\n\n  lazy_realloc(&d, *off + sizeof (HEADER));\n  memcpy(&nh, header, sizeof (HEADER));\n\n  /* some fields are not safe to cache */\n  nh.tagged = 0;\n  nh.changed = 0;\n  nh.threaded = 0;\n  nh.recip_valid = 0;\n  nh.searched = 0;\n  nh.matched = 0;\n  nh.collapsed = 0;\n  nh.limited = 0;\n  nh.num_hidden = 0;\n  nh.recipient = 0;\n  nh.pair = 0;\n  nh.attach_valid = 0;\n  nh.path = NULL;\n  nh.tree = NULL;\n  nh.thread = NULL;\n#ifdef MIXMASTER\n  nh.chain = NULL;\n#endif\n#if defined USE_POP || defined USE_IMAP\n  nh.data = NULL;\n#endif\n\n  memcpy(d + *off, &nh, sizeof (HEADER));\n  *off += sizeof (HEADER);\n\n  d = dump_envelope(nh.env, d, off, convert);\n  d = dump_body(nh.content, d, off, convert);\n  d = dump_char(nh.maildir_flags, d, off, convert);\n\n  return d;\n}\n\nHEADER *\nmutt_hcache_restore(const unsigned char *d, HEADER ** oh)\n{\n  int off = 0;\n  HEADER *h = mutt_new_header();\n  int convert = !Charset_is_utf8;\n\n  /* skip validate */\n  off += sizeof (validate);\n\n  /* skip crc */\n  off += sizeof (unsigned int);\n\n  memcpy(h, d + off, sizeof (HEADER));\n  off += sizeof (HEADER);\n\n  h->env = mutt_new_envelope();\n  restore_envelope(h->env, d, &off, convert);\n\n  h->content = mutt_new_body();\n  restore_body(h->content, d, &off, convert);\n\n  restore_char(&h->maildir_flags, d, &off, convert);\n\n  /* this is needed for maildir style mailboxes */\n  if (oh)\n  {\n    h->old = (*oh)->old;\n    h->path = safe_strdup((*oh)->path);\n    mutt_free_header(oh);\n  }\n\n  return h;\n}\n\nvoid *\nmutt_hcache_fetch(header_cache_t *h, const char *filename,\n\t\t  size_t(*keylen) (const char *fn))\n{\n  void* data;\n\n  data = mutt_hcache_fetch_raw (h, filename, keylen);\n\n  if (!data || !crc_matches(data, h->crc))\n  {\n    FREE(&data);\n    return NULL;\n  }\n  \n  return data;\n}\n\nvoid *\nmutt_hcache_fetch_raw (header_cache_t *h, const char *filename,\n                       size_t(*keylen) (const char *fn))\n{\n#ifndef HAVE_DB4\n  char path[_POSIX_PATH_MAX];\n  int ksize;\n#endif\n#ifdef HAVE_QDBM\n  char *data = NULL;\n#elif HAVE_TC\n  void *data;\n  int sp;\n#elif HAVE_GDBM\n  datum key;\n  datum data;\n#elif HAVE_DB4\n  DBT key;\n  DBT data;\n#endif\n  \n  if (!h)\n    return NULL;\n  \n#ifdef HAVE_DB4\n  if (filename[0] == '/')\n    filename++;\n\n  mutt_hcache_dbt_init(&key, (void *) filename, keylen(filename));\n  mutt_hcache_dbt_empty_init(&data);\n  data.flags = DB_DBT_MALLOC;\n  \n  h->db->get(h->db, NULL, &key, &data, 0);\n  \n  return data.data;\n#else\n  strncpy(path, h->folder, sizeof (path));\n  safe_strcat(path, sizeof (path), filename);\n\n  ksize = strlen (h->folder) + keylen (path + strlen (h->folder));  \n#endif\n#ifdef HAVE_QDBM\n  data = vlget(h->db, path, ksize, NULL);\n  \n  return data;\n#elif HAVE_TC\n  data = tcbdbget(h->db, path, ksize, &sp);\n\n  return data;\n#elif HAVE_GDBM\n  key.dptr = path;\n  key.dsize = ksize;\n  \n  data = gdbm_fetch(h->db, key);\n  \n  return data.dptr;\n#endif\n}\n\n/*\n * flags\n *\n * M_GENERATE_UIDVALIDITY\n * ignore uidvalidity param and store gettimeofday() as the value\n */\nint\nmutt_hcache_store(header_cache_t *h, const char *filename, HEADER * header,\n\t\t  unsigned int uidvalidity,\n\t\t  size_t(*keylen) (const char *fn),\n\t\t  mutt_hcache_store_flags_t flags)\n{\n  char* data;\n  int dlen;\n  int ret;\n  \n  if (!h)\n    return -1;\n  \n  data = mutt_hcache_dump(h, header, &dlen, uidvalidity, flags);\n  ret = mutt_hcache_store_raw (h, filename, data, dlen, keylen);\n  \n  FREE(&data);\n  \n  return ret;\n}\n\nint\nmutt_hcache_store_raw (header_cache_t* h, const char* filename, void* data,\n                       size_t dlen, size_t(*keylen) (const char* fn))\n{\n#ifndef HAVE_DB4\n  char path[_POSIX_PATH_MAX];\n  int ksize;\n#endif\n#if HAVE_GDBM\n  datum key;\n  datum databuf;\n#elif HAVE_DB4\n  DBT key;\n  DBT databuf;\n#endif\n  \n  if (!h)\n    return -1;\n\n#if HAVE_DB4\n  if (filename[0] == '/')\n    filename++;\n  \n  mutt_hcache_dbt_init(&key, (void *) filename, keylen(filename));\n  \n  mutt_hcache_dbt_empty_init(&databuf);\n  databuf.flags = DB_DBT_USERMEM;\n  databuf.data = data;\n  databuf.size = dlen;\n  databuf.ulen = dlen;\n  \n  return h->db->put(h->db, NULL, &key, &databuf, 0);\n#else\n  strncpy(path, h->folder, sizeof (path));\n  safe_strcat(path, sizeof (path), filename);\n\n  ksize = strlen(h->folder) + keylen(path + strlen(h->folder));\n#endif\n#if HAVE_QDBM\n  return vlput(h->db, path, ksize, data, dlen, VL_DOVER);\n#elif HAVE_TC\n  return tcbdbput(h->db, path, ksize, data, dlen);\n#elif HAVE_GDBM\n  key.dptr = path;\n  key.dsize = ksize;\n  \n  databuf.dsize = dlen;\n  databuf.dptr = data;\n  \n  return gdbm_store(h->db, key, databuf, GDBM_REPLACE);\n#endif\n}\n\nstatic char* get_foldername(const char *folder)\n{\n  char *p = NULL;\n  char path[_POSIX_PATH_MAX];\n  struct stat st;\n\n  mutt_encode_path (path, sizeof (path), folder);\n\n  /* if the folder is local, canonify the path to avoid\n   * to ensure equivalent paths share the hcache */\n  if (stat (path, &st) == 0)\n  {\n    p = safe_malloc (PATH_MAX+1);\n    if (!realpath (path, p))\n      mutt_str_replace (&p, path);\n  } else\n    p = safe_strdup (path);\n\n  return p;\n}\n\n#if HAVE_QDBM\nstatic int\nhcache_open_qdbm (struct header_cache* h, const char* path)\n{\n  int    flags = VL_OWRITER | VL_OCREAT;\n\n  if (option(OPTHCACHECOMPRESS))\n    flags |= VL_OZCOMP;\n\n  h->db = vlopen (path, flags, VL_CMPLEX);\n  if (h->db)\n    return 0;\n  else\n    return -1;\n}\n\nvoid\nmutt_hcache_close(header_cache_t *h)\n{\n  if (!h)\n    return;\n\n  vlclose(h->db);\n  FREE(&h->folder);\n  FREE(&h);\n}\n\nint\nmutt_hcache_delete(header_cache_t *h, const char *filename,\n\t\t   size_t(*keylen) (const char *fn))\n{\n  char path[_POSIX_PATH_MAX];\n  int ksize;\n\n  if (!h)\n    return -1;\n\n  strncpy(path, h->folder, sizeof (path));\n  safe_strcat(path, sizeof (path), filename);\n\n  ksize = strlen(h->folder) + keylen(path + strlen(h->folder));\n\n  return vlout(h->db, path, ksize);\n}\n\n#elif HAVE_TC\nstatic int\nhcache_open_tc (struct header_cache* h, const char* path)\n{\n  h->db = tcbdbnew();\n  if (!h->db)\n      return -1;\n  if (option(OPTHCACHECOMPRESS))\n    tcbdbtune(h->db, 0, 0, 0, -1, -1, BDBTDEFLATE);\n  if (tcbdbopen(h->db, path, BDBOWRITER | BDBOCREAT))\n    return 0;\n  else\n  {\n#ifdef DEBUG\n    int ecode = tcbdbecode (h->db);\n    dprint (2, (debugfile, \"tcbdbopen failed for %s: %s (ecode %d)\\n\", path, tcbdberrmsg (ecode), ecode));\n#endif\n    tcbdbdel(h->db);\n    return -1;\n  }\n}\n\nvoid\nmutt_hcache_close(header_cache_t *h)\n{\n  if (!h)\n    return;\n\n  if (!tcbdbclose(h->db))\n  {\n#ifdef DEBUG\n    int ecode = tcbdbecode (h->db);\n    dprint (2, (debugfile, \"tcbdbclose failed for %s: %s (ecode %d)\\n\", h->folder, tcbdberrmsg (ecode), ecode));\n#endif\n  }\n  tcbdbdel(h->db);\n  FREE(&h->folder);\n  FREE(&h);\n}\n\nint\nmutt_hcache_delete(header_cache_t *h, const char *filename,\n\t\t   size_t(*keylen) (const char *fn))\n{\n  char path[_POSIX_PATH_MAX];\n  int ksize;\n\n  if (!h)\n    return -1;\n\n  strncpy(path, h->folder, sizeof (path));\n  safe_strcat(path, sizeof (path), filename);\n\n  ksize = strlen(h->folder) + keylen(path + strlen(h->folder));\n\n  return tcbdbout(h->db, path, ksize);\n}\n\n#elif HAVE_GDBM\nstatic int\nhcache_open_gdbm (struct header_cache* h, const char* path)\n{\n  int pagesize;\n\n  if (mutt_atoi (HeaderCachePageSize, &pagesize) < 0 || pagesize <= 0)\n    pagesize = 16384;\n\n  h->db = gdbm_open((char *) path, pagesize, GDBM_WRCREAT, 00600, NULL);\n  if (h->db)\n    return 0;\n\n  /* if rw failed try ro */\n  h->db = gdbm_open((char *) path, pagesize, GDBM_READER, 00600, NULL);\n  if (h->db)\n    return 0;\n\n  return -1;\n}\n\nvoid\nmutt_hcache_close(header_cache_t *h)\n{\n  if (!h)\n    return;\n\n  gdbm_close(h->db);\n  FREE(&h->folder);\n  FREE(&h);\n}\n\nint\nmutt_hcache_delete(header_cache_t *h, const char *filename,\n\t\t   size_t(*keylen) (const char *fn))\n{\n  datum key;\n  char path[_POSIX_PATH_MAX];\n\n  if (!h)\n    return -1;\n\n  strncpy(path, h->folder, sizeof (path));\n  safe_strcat(path, sizeof (path), filename);\n\n  key.dptr = path;\n  key.dsize = strlen(h->folder) + keylen(path + strlen(h->folder));\n\n  return gdbm_delete(h->db, key);\n}\n#elif HAVE_DB4\n\nstatic void\nmutt_hcache_dbt_init(DBT * dbt, void *data, size_t len)\n{\n  dbt->data = data;\n  dbt->size = dbt->ulen = len;\n  dbt->dlen = dbt->doff = 0;\n  dbt->flags = DB_DBT_USERMEM;\n}\n\nstatic void\nmutt_hcache_dbt_empty_init(DBT * dbt)\n{\n  dbt->data = NULL;\n  dbt->size = dbt->ulen = dbt->dlen = dbt->doff = 0;\n  dbt->flags = 0;\n}\n\nstatic int\nhcache_open_db4 (struct header_cache* h, const char* path)\n{\n  struct stat sb;\n  int ret;\n  u_int32_t createflags = DB_CREATE;\n  int pagesize;\n\n  if (mutt_atoi (HeaderCachePageSize, &pagesize) < 0 || pagesize <= 0)\n    pagesize = 16384;\n\n  snprintf (h->lockfile, _POSIX_PATH_MAX, \"%s-lock-hack\", path);\n\n  h->fd = open (h->lockfile, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);\n  if (h->fd < 0)\n    return -1;\n\n  if (mx_lock_file (h->lockfile, h->fd, 1, 0, 5))\n    goto fail_close;\n\n  ret = db_env_create (&h->env, 0);\n  if (ret)\n    goto fail_unlock;\n\n  ret = (*h->env->open)(h->env, NULL, DB_INIT_MPOOL | DB_CREATE | DB_PRIVATE,\n\t0600);\n  if (ret)\n    goto fail_env;\n\n  ret = db_create (&h->db, h->env, 0);\n  if (ret)\n    goto fail_env;\n\n  if (stat(path, &sb) != 0 && errno == ENOENT)\n  {\n    createflags |= DB_EXCL;\n    h->db->set_pagesize(h->db, pagesize);\n  }\n\n  ret = (*h->db->open)(h->db, NULL, path, h->folder, DB_BTREE, createflags,\n                       0600);\n  if (ret)\n    goto fail_db;\n\n  return 0;\n\n  fail_db:\n  h->db->close (h->db, 0);\n  fail_env:\n  h->env->close (h->env, 0);\n  fail_unlock:\n  mx_unlock_file (h->lockfile, h->fd, 0);\n  fail_close:\n  close (h->fd);\n  unlink (h->lockfile);\n\n  return -1;\n}\n\nvoid\nmutt_hcache_close(header_cache_t *h)\n{\n  if (!h)\n    return;\n\n  h->db->close (h->db, 0);\n  h->env->close (h->env, 0);\n  mx_unlock_file (h->lockfile, h->fd, 0);\n  close (h->fd);\n  unlink (h->lockfile);\n  FREE (&h->folder);\n  FREE (&h);\n}\n\nint\nmutt_hcache_delete(header_cache_t *h, const char *filename,\n\t\t   size_t(*keylen) (const char *fn))\n{\n  DBT key;\n\n  if (!h)\n    return -1;\n\n  if (filename[0] == '/')\n    filename++;\n\n  mutt_hcache_dbt_init(&key, (void *) filename, keylen(filename));\n  return h->db->del(h->db, NULL, &key, 0);\n}\n#endif\n\nheader_cache_t *\nmutt_hcache_open(const char *path, const char *folder, hcache_namer_t namer)\n{\n  struct header_cache *h = safe_calloc(1, sizeof (struct header_cache));\n  int (*hcache_open) (struct header_cache* h, const char* path);\n  struct stat sb;\n\n#if HAVE_QDBM\n  hcache_open = hcache_open_qdbm;\n#elif HAVE_TC\n  hcache_open= hcache_open_tc;\n#elif HAVE_GDBM\n  hcache_open = hcache_open_gdbm;\n#elif HAVE_DB4\n  hcache_open = hcache_open_db4;\n#endif\n\n  /* Calculate the current hcache version from dynamic configuration */\n  if (hcachever == 0x0) {\n    union {\n      unsigned char charval[16];\n      unsigned int intval;\n    } digest;\n    struct md5_ctx ctx;\n    SPAM_LIST *spam;\n    RX_LIST *nospam;\n\n    hcachever = HCACHEVER;\n\n    md5_init_ctx(&ctx);\n\n    /* Seed with the compiled-in header structure hash */\n    md5_process_bytes(&hcachever, sizeof(hcachever), &ctx);\n\n    /* Mix in user's spam list */\n    for (spam = SpamList; spam; spam = spam->next)\n    {\n      md5_process_bytes(spam->rx->pattern, strlen(spam->rx->pattern), &ctx);\n      md5_process_bytes(spam->template, strlen(spam->template), &ctx);\n    }\n\n    /* Mix in user's nospam list */\n    for (nospam = NoSpamList; nospam; nospam = nospam->next)\n    {\n      md5_process_bytes(nospam->rx->pattern, strlen(nospam->rx->pattern), &ctx);\n    }\n\n    /* Get a hash and take its bytes as an (unsigned int) hash version */\n    md5_finish_ctx(&ctx, digest.charval);\n    hcachever = digest.intval;\n  }\n\n  h->db = NULL;\n  h->folder = get_foldername(folder);\n  h->crc = hcachever;\n\n  if (!path || path[0] == '\\0')\n  {\n    FREE(&h->folder);\n    FREE(&h);\n    return NULL;\n  }\n\n  path = mutt_hcache_per_folder(path, h->folder, namer);\n\n  if (!hcache_open (h, path))\n    return h;\n  else\n  {\n    /* remove a possibly incompatible version */\n    if (!stat (path, &sb) && !unlink (path))\n    {\n      if (!hcache_open (h, path))\n        return h;\n    }\n    FREE(&h->folder);\n    FREE(&h);\n\n    return NULL;\n  }\n}\n\n#if HAVE_DB4\nconst char *mutt_hcache_backend (void)\n{\n  return DB_VERSION_STRING;\n}\n#elif HAVE_GDBM\nconst char *mutt_hcache_backend (void)\n{\n  return gdbm_version;\n}\n#elif HAVE_QDBM\nconst char *mutt_hcache_backend (void)\n{\n  return \"qdbm \" _QDBM_VERSION;\n}\n#elif HAVE_TC\nconst char *mutt_hcache_backend (void)\n{\n  return \"tokyocabinet \" _TC_VERSION;\n}\n#endif\n"
  },
  {
    "path": "hcache.h",
    "content": "/*\n * Copyright (C) 2004 Thomas Glanzmann <sithglan@stud.uni-erlangen.de>\n * Copyright (C) 2004 Tobias Werth <sitowert@stud.uni-erlangen.de>\n * Copyright (C) 2004 Brian Fundakowski Feldman <green@FreeBSD.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifndef _HCACHE_H_\n#define _HCACHE_H_ 1\n\nstruct header_cache;\ntypedef struct header_cache header_cache_t;\n\ntypedef int (*hcache_namer_t)(const char* path, char* dest, size_t dlen);\n\nheader_cache_t *mutt_hcache_open(const char *path, const char *folder,\n  hcache_namer_t namer);\nvoid mutt_hcache_close(header_cache_t *h);\nHEADER *mutt_hcache_restore(const unsigned char *d, HEADER **oh);\nvoid *mutt_hcache_fetch(header_cache_t *h, const char *filename, size_t (*keylen)(const char *fn));\nvoid *mutt_hcache_fetch_raw (header_cache_t *h, const char *filename,\n                             size_t (*keylen)(const char *fn));\n\ntypedef enum {\n  M_GENERATE_UIDVALIDITY = 1 /* use gettimeofday() as value */\n} mutt_hcache_store_flags_t;\n\n/* uidvalidity is an IMAP-specific unsigned 32 bit number */\nint mutt_hcache_store(header_cache_t *h, const char *filename, HEADER *header,\n                      unsigned int uidvalidity, size_t (*keylen)(const char *fn), mutt_hcache_store_flags_t flags_t);\nint mutt_hcache_store_raw (header_cache_t *h, const char* filename, void* data,\n                           size_t dlen, size_t(*keylen) (const char* fn));\nint mutt_hcache_delete(header_cache_t *h, const char *filename, size_t (*keylen)(const char *fn));\n\nconst char *mutt_hcache_backend (void);\n\n#endif /* _HCACHE_H_ */\n"
  },
  {
    "path": "hcachever.sh.in",
    "content": "#!/bin/sh\n\nBASEVERSION=2\n\ncleanstruct () {\n  echo \"$1\" | sed -e 's/} *//' -e 's/;$//'\n}\n\ncleanbody () {\n  echo \"$1\" | sed -e 's/{ *//'\n}\n\ngetstruct () {\n  STRUCT=\"\"\n  BODY=''\n  inbody=0\n  case \"$1\" in\n    *'{') inbody=1 ;;\n    *';') return ;;\n  esac\n\n  while read line\n  do\n    if test $inbody -eq 0\n    then\n      case \"$line\" in\n        '{'*) inbody=1 ;;\n        *';') return ;;\n      esac\n    fi\n\n    case \"$line\" in\n      '} '*)\n        STRUCT=`cleanstruct \"$line\"`\n        break\n      ;;\n      '}')\n        read line\n        STRUCT=`cleanstruct \"$line\"`\n        break\n      ;;\n      '#'*) continue ;;\n      *)\n        if test $inbody -ne 0\n        then\n          BODY=\"$BODY $line\"\n        fi\n      ;;\n    esac\n  done\n\n  case $STRUCT in\n    ADDRESS|LIST|BUFFER|PARAMETER|BODY|ENVELOPE|HEADER)\n      BODY=`cleanbody \"$BODY\"`\n      echo \"$STRUCT: $BODY\"\n    ;;\n  esac\n  return\n}\n\nDEST=\"$1\"\nTMPD=\"$DEST.tmp\"\n\nTEXT=\"$BASEVERSION\"\n\necho \"/* base version: $BASEVERSION\" > $TMPD\nwhile read line\ndo\n  case \"$line\" in\n    'typedef struct'*)\n       STRUCT=`getstruct \"$line\"`\n       if test -n \"$STRUCT\"\n       then\n\t NAME=`echo $STRUCT | cut -d: -f1`\n\t BODY=`echo $STRUCT | cut -d' ' -f2-`\n         echo \" * $NAME:\" $BODY >> $TMPD\n         TEXT=\"$TEXT $NAME {$BODY}\"\n       fi\n    ;;\n  esac\ndone\necho \" */\" >> $TMPD\n\nMD5TEXT=`echo \"$TEXT\" | ./mutt_md5`\necho \"#define HCACHEVER 0x\"`echo $MD5TEXT | cut -c-8` >> $TMPD\n\n# TODO: validate we have all structs\n\nmv $TMPD $DEST\n"
  },
  {
    "path": "hdrline.c",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2007 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"sort.h\"\n#include \"charset.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_idna.h\"\n\n#include <ctype.h>\n#include <stdlib.h>\n#include <string.h>\n#include <locale.h>\n\n#ifdef HAVE_ALLOCA_H\n#include <alloca.h>\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\nint mutt_is_mail_list (ADDRESS *addr)\n{\n  if (!mutt_match_rx_list (addr->mailbox, UnMailLists))\n    return mutt_match_rx_list (addr->mailbox, MailLists);\n  return 0;\n}\n\nint mutt_is_subscribed_list (ADDRESS *addr)\n{\n  if (!mutt_match_rx_list (addr->mailbox, UnMailLists)\n      && !mutt_match_rx_list (addr->mailbox, UnSubscribedLists))\n    return mutt_match_rx_list (addr->mailbox, SubscribedLists);\n  return 0;\n}\n\n/* Search for a mailing list in the list of addresses pointed to by adr.\n * If one is found, print pfx and the name of the list into buf, then\n * return 1.  Otherwise, simply return 0.\n */\nstatic int\ncheck_for_mailing_list (ADDRESS *adr, char *pfx, char *buf, int buflen)\n{\n  for (; adr; adr = adr->next)\n  {\n    if (mutt_is_subscribed_list (adr))\n    {\n      if (pfx && buf && buflen)\n\tsnprintf (buf, buflen, \"%s%s\", pfx, mutt_get_name (adr));\n      return 1;\n    }\n  }\n  return 0;\n}\n\n/* Search for a mailing list in the list of addresses pointed to by adr.\n * If one is found, print the address of the list into buf, then return 1.\n * Otherwise, simply return 0.\n */\nstatic int\ncheck_for_mailing_list_addr (ADDRESS *adr, char *buf, int buflen)\n{\n  for (; adr; adr = adr->next)\n  {\n    if (mutt_is_subscribed_list (adr))\n    {\n      if (buf && buflen)\n\tsnprintf (buf, buflen, \"%s\", adr->mailbox);\n      return 1;\n    }\n  }\n  return 0;\n}\n\n\nstatic int first_mailing_list (char *buf, size_t buflen, ADDRESS *a)\n{\n  for (; a; a = a->next)\n  {\n    if (mutt_is_subscribed_list (a))\n    {\n      mutt_save_path (buf, buflen, a);\n      return 1;\n    }\n  }\n  return 0;\n}\n\n/**\n * add_index_color - XXX\n *\n * Takes the color to embed, the buffer to manipulate and the buffer length as\n * arguments.\n * Returns the number of chars written.\n */\nstatic size_t\nadd_index_color (char *buf, size_t buflen, format_flag flags, char color)\n{\n\tint len;\n\n\t/* only add color markers if we are operating on main index entries. */\n\tif (!(flags & M_FORMAT_INDEX))\n\t\treturn 0;\n\n\tif (color == MT_COLOR_INDEX) { /* buf might be uninitialized other cases */\n\t\tlen = mutt_strlen (buf);\n\t\tbuf += len;\n\t\tbuflen -= len;\n\t}\n\n\tif (buflen < 2)\n\t\treturn 0;\n\n\tbuf[0] = M_SPECIAL_INDEX;\n\tbuf[1] = color;\n\tbuf[2] = '\\0';\n\n\treturn 2;\n}\n\nstatic void make_from (ENVELOPE *hdr, char *buf, size_t len, int do_lists)\n{\n  int me;\n\n  me = mutt_addr_is_user (hdr->from);\n\n  if (do_lists || me)\n  {\n    if (check_for_mailing_list (hdr->to, \"To \", buf, len))\n      return;\n    if (check_for_mailing_list (hdr->cc, \"Cc \", buf, len))\n      return;\n  }\n\n  if (me && hdr->to)\n    snprintf (buf, len, \"To %s\", mutt_get_name (hdr->to));\n  else if (me && hdr->cc)\n    snprintf (buf, len, \"Cc %s\", mutt_get_name (hdr->cc));\n  else if (me && hdr->bcc)\n    snprintf (buf, len, \"Bcc %s\", mutt_get_name (hdr->bcc));\n  else if (hdr->from)\n    strfcpy (buf, mutt_get_name (hdr->from), len);\n  else\n    *buf = 0;\n}\n\nstatic void make_from_addr (ENVELOPE *hdr, char *buf, size_t len, int do_lists)\n{\n  int me;\n\n  me = mutt_addr_is_user (hdr->from);\n\n  if (do_lists || me)\n  {\n    if (check_for_mailing_list_addr (hdr->to, buf, len))\n      return;\n    if (check_for_mailing_list_addr (hdr->cc, buf, len))\n      return;\n  }\n\n  if (me && hdr->to)\n    snprintf (buf, len, \"%s\", hdr->to->mailbox);\n  else if (me && hdr->cc)\n    snprintf (buf, len, \"%s\", hdr->cc->mailbox);\n  else if (hdr->from)\n    strfcpy (buf, hdr->from->mailbox, len);\n  else\n    *buf = 0;\n}\n\nstatic int user_in_addr (ADDRESS *a)\n{\n  for (; a; a = a->next)\n    if (mutt_addr_is_user (a))\n      return 1;\n  return 0;\n}\n\n/* Return values:\n * 0: user is not in list\n * 1: user is unique recipient\n * 2: user is in the TO list\n * 3: user is in the CC list\n * 4: user is originator\n * 5: sent to a subscribed mailinglist\n */\nint mutt_user_is_recipient (HEADER *h)\n{\n  ENVELOPE *env = h->env;\n\n  if(!h->recip_valid)\n  {\n    h->recip_valid = 1;\n    \n    if (mutt_addr_is_user (env->from))\n      h->recipient = 4;\n    else if (user_in_addr (env->to))\n    {\n      if (env->to->next || env->cc)\n\th->recipient = 2; /* non-unique recipient */\n      else\n\th->recipient = 1; /* unique recipient */\n    }\n    else if (user_in_addr (env->cc))\n      h->recipient = 3;\n    else if (check_for_mailing_list (env->to, NULL, NULL, 0))\n      h->recipient = 5;\n    else if (check_for_mailing_list (env->cc, NULL, NULL, 0))\n      h->recipient = 5;\n    else\n      h->recipient = 0;\n  }\n  \n  return h->recipient;\n}\n\n/* %a = address of author\n * %A = reply-to address (if present; otherwise: address of author\n * %b = filename of the originating folder\n * %B = the list to which the letter was sent\n * %c = size of message in bytes\n * %C = current message number\n * %d = date and time of message using $date_format and sender's timezone\n * %D = date and time of message using $date_format and local timezone\n * %e = current message number in thread\n * %E = number of messages in current thread\n * %f = entire from line\n * %F = like %n, unless from self\n * %g = message labels (e.g. notmuch tags)\n * %i = message-id\n * %l = number of lines in the message\n * %L = like %F, except `lists' are displayed first\n * %m = number of messages in the mailbox\n * %n = name of author\n * %N = score\n * %O = like %L, except using address instead of name\n * %P = progress indicator for builtin pager\n * %r = comma separated list of To: recipients\n * %R = comma separated list of Cc: recipients\n * %s = subject\n * %S = short message status (e.g., N/O/D/!/r/-)\n * %t = `to:' field (recipients)\n * %T = $to_chars\n * %u = user (login) name of author\n * %v = first name of author, unless from self\n * %X = number of MIME attachments\n * %y = `x-label:' field (if present)\n * %Y = `x-label:' field (if present, tree unfolded, and != parent's x-label)\n * %Z = status flags\t*/\n\nstatic const char *\nhdr_format_str (char *dest,\n\t\tsize_t destlen,\n\t\tsize_t col,\n\t\tchar op,\n\t\tconst char *src,\n\t\tconst char *prefix,\n\t\tconst char *ifstring,\n\t\tconst char *elsestring,\n\t\tunsigned long data,\n\t\tformat_flag flags)\n{\n  struct hdr_format_info *hfi = (struct hdr_format_info *) data;\n  HEADER *hdr, *htmp;\n  CONTEXT *ctx;\n  char fmt[SHORT_STRING], buf2[LONG_STRING], ch, *p;\n  int do_locales, i;\n  int optional = (flags & M_FORMAT_OPTIONAL);\n  int threads = ((Sort & SORT_MASK) == SORT_THREADS);\n  int is_index = (flags & M_FORMAT_INDEX);\n#define THREAD_NEW (threads && hdr->collapsed && hdr->num_hidden > 1 && mutt_thread_contains_unread (ctx, hdr) == 1)\n#define THREAD_OLD (threads && hdr->collapsed && hdr->num_hidden > 1 && mutt_thread_contains_unread (ctx, hdr) == 2)\n  size_t len;\n  size_t colorlen;\n\n  hdr = hfi->hdr;\n  ctx = hfi->ctx;\n\n  dest[0] = 0;\n  switch (op)\n  {\n    case 'A':\n      if(hdr->env->reply_to && hdr->env->reply_to->mailbox)\n      {\n        colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_AUTHOR);\n        mutt_format_s (dest + colorlen, destlen - colorlen, prefix, mutt_addr_for_display (hdr->env->reply_to));\n        add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n\tbreak;\n      }\n      /* fall through if 'A' returns nothing */\n\n    case 'a':\n      if(hdr->env->from && hdr->env->from->mailbox)\n      {\n        colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_AUTHOR);\n        mutt_format_s (dest + colorlen, destlen - colorlen, prefix, mutt_addr_for_display (hdr->env->from));\n        add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n      }\n      else\n        dest[0] = '\\0';\n      break;\n\n    case 'B':\n      if (!first_mailing_list (dest, destlen, hdr->env->to) &&\n\t  !first_mailing_list (dest, destlen, hdr->env->cc))\n\tdest[0] = 0;\n      if (dest[0])\n      {\n\tstrfcpy (buf2, dest, sizeof(buf2));\n\tmutt_format_s (dest, destlen, prefix, buf2);\n\tbreak;\n      }\n      /* fall through if 'B' returns nothing */\n\n    case 'b':\n      if(ctx)\n      {\n\tif ((p = strrchr (ctx->path, '/')))\n\t  strfcpy (dest, p + 1, destlen);\n\telse\n\t  strfcpy (dest, ctx->path, destlen);\n      }\n      else \n\tstrfcpy(dest, \"(null)\", destlen);\n      strfcpy (buf2, dest, sizeof(buf2));\n      mutt_format_s (dest, destlen, prefix, buf2);\n      break;\n    \n    case 'c':\n      colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_SIZE);\n      mutt_pretty_size (buf2, sizeof (buf2), (long) hdr->content->length);\n      mutt_format_s (dest + colorlen, destlen - colorlen, prefix, buf2);\n      add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n      break;\n\n    case 'C':\n      colorlen = add_index_color (fmt, sizeof (fmt), flags, MT_COLOR_INDEX_NUMBER);\n      snprintf (fmt + colorlen, sizeof (fmt) - colorlen, \"%%%sd\", prefix);\n      add_index_color (fmt + colorlen, sizeof (fmt) - colorlen, flags, MT_COLOR_INDEX);\n      snprintf (dest, destlen, fmt, hdr->msgno + 1);\n      break;\n\n    case 'd':\n    case 'D':\n    case '{':\n    case '[':\n    case '(':\n    case '<':\n\n      /* preprocess $date_format to handle %Z */\n      {\n\tconst char *cp;\n\tstruct tm *tm; \n\ttime_t T;\n\tint i = 0, invert = 0;\n\n\tif (optional && ((op == '[') || (op == '('))) {\n\t  char *is;\n\t  T = time (NULL);\n\t  tm = localtime (&T);\n\t  T -= (op == '(') ? hdr->received : hdr->date_sent;\n\n\t  is = (char *) prefix;\n\t  if (*is == '>') {\n\t    invert = 1;\n\t    is++;\n\t  }\n\n\t  while (*is && (*is != '?')) {\n\t    int t = strtol (is, &is, 10);\n\t    /* semi-broken (assuming 30 days in all months) */\n\t    switch (*(is++)) {\n\t      case 'y':\n\t\tif (t > 1) {\n\t\t  t--;\n\t\t  t *= (60 * 60 * 24 * 365);\n\t\t}\n\t\tt += ((tm->tm_mon  * 60 * 60 * 24 * 30) +\n\t\t      (tm->tm_mday * 60 * 60 * 24) +\n\t\t      (tm->tm_hour * 60 * 60) +\n\t\t      (tm->tm_min  * 60) +\n\t\t       tm->tm_sec);\n\t\tbreak;\n\n\t      case 'm':\n\t\tif (t > 1) {\n\t\t  t--;\n\t\t  t *= (60 * 60 * 24 * 30);\n\t\t}\n\t\tt += ((tm->tm_mday * 60 * 60 * 24) +\n\t\t      (tm->tm_hour * 60 * 60) +\n\t\t      (tm->tm_min  * 60) +\n\t\t      tm->tm_sec);\n\t\tbreak;\n\n\t      case 'w':\n\t\tif (t > 1) {\n\t\t  t--;\n\t\t  t *= (60 * 60 * 24 * 7);\n\t\t}\n\t\tt += ((tm->tm_wday * 60 * 60 * 24) +\n\t\t      (tm->tm_hour * 60 * 60) +\n\t\t      (tm->tm_min  * 60) +\n\t\t       tm->tm_sec);\n\t\tbreak;\n\n\t      case 'd':\n\t\tif (t > 1) {\n\t\t  t--;\n\t\t  t *= (60 * 60 * 24);\n\t\t}\n\t\tt += ((tm->tm_hour * 60 * 60) +\n\t\t      (tm->tm_min  * 60) +\n\t\t       tm->tm_sec);\n\t\tbreak;\n\n\t      case 'H':\n\t\tif (t > 1) {\n\t\t  t--;\n\t\t  t *= (60 * 60);\n\t\t}\n\t\tt += ((tm->tm_min * 60) +\n\t\t       tm->tm_sec);\n\t\tbreak;\n\n\t      case 'M':\n\t\tif (t > 1) {\n\t\t  t--;\n\t\t  t *= (60);\n\t\t}\n\t\tt += (tm->tm_sec);\n\t\tbreak;\n\n\t      default:\n\t\tbreak;\n\t    }\n\t    i += t;\n\t  }\n\n\t  if (i < 0)\n\t    i *= -1;\n\n\t  if (((T > i) || (T < (-1*i))) ^ invert)\n\t    optional = 0;\n\t  break;\n\t}\n\n\tp = dest;\n\n\tcp = (op == 'd' || op == 'D') ? (NONULL (DateFmt)) : src;\n\tif (*cp == '!')\n\t{\n\t  do_locales = 0;\n\t  cp++;\n\t}\n\telse\n\t  do_locales = 1;\n\n\tlen = destlen - 1;\n\twhile (len > 0 && (((op == 'd' || op == 'D') && *cp) ||\n\t\t\t   (op == '{' && *cp != '}') || \n\t\t\t   (op == '[' && *cp != ']') ||\n\t\t\t   (op == '(' && *cp != ')') ||\n\t\t\t   (op == '<' && *cp != '>')))\n\t{\n\t  if (*cp == '%')\n\t  {\n\t    cp++;\n\t    if ((*cp == 'Z' || *cp == 'z') && (op == 'd' || op == '{'))\n\t    {\n\t      if (len >= 5)\n\t      {\n\t\tsprintf (p, \"%c%02u%02u\", hdr->zoccident ? '-' : '+',\n\t\t\t hdr->zhours, hdr->zminutes);\n\t\tp += 5;\n\t\tlen -= 5;\n\t      }\n\t      else\n\t\tbreak; /* not enough space left */\n\t    }\n\t    else\n\t    {\n\t      if (len >= 2)\n\t      {\n\t\t*p++ = '%';\n\t\t*p++ = *cp;\n\t\tlen -= 2;\n\t      }\n\t      else\n\t\tbreak; /* not enough space */\n\t    }\n\t    cp++;\n\t  }\n\t  else\n\t  {\n\t    *p++ = *cp++;\n\t    len--;\n\t  }\n\t}\n\t*p = 0;\n\n\tif (do_locales && Locale)\n\t  setlocale (LC_TIME, Locale);\n\n\tif (op == '[' || op == 'D')\n\t  tm = localtime (&hdr->date_sent);\n\telse if (op == '(')\n\t  tm = localtime (&hdr->received);\n\telse if (op == '<')\n\t{\n\t  T = time (NULL);\n\t  tm = localtime (&T);\n\t}\n\telse\n\t{\n\t  /* restore sender's time zone */\n\t  T = hdr->date_sent;\n\t  if (hdr->zoccident)\n\t    T -= (hdr->zhours * 3600 + hdr->zminutes * 60);\n\t  else\n\t    T += (hdr->zhours * 3600 + hdr->zminutes * 60);\n\t  tm = gmtime (&T);\n\t}\n\n\tstrftime (buf2, sizeof (buf2), dest, tm);\n\n\tif (do_locales)\n\t  setlocale (LC_TIME, \"C\");\n\n\tcolorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_DATE);\n\tmutt_format_s (dest + colorlen, destlen - colorlen, prefix, buf2);\n\tadd_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n\n\tif (len > 0 && op != 'd' && op != 'D') /* Skip ending op */\n\t  src = cp + 1;\n      }\n      break;\n\n    case 'e':\n      snprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n      snprintf (dest, destlen, fmt, mutt_messages_in_thread(ctx, hdr, 1));\n      break;\n\n    case 'E':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (dest, destlen, fmt, mutt_messages_in_thread(ctx, hdr, 0));\n      }\n      else if (mutt_messages_in_thread(ctx, hdr, 0) <= 1)\n\toptional = 0;\n      break;\n\n    case 'f':\n      buf2[0] = 0;\n      rfc822_write_address (buf2, sizeof (buf2), hdr->env->from, 1);\n      mutt_format_s (dest, destlen, prefix, buf2);\n      break;\n\n    case 'F':\n      if (!optional)\n      {\n        colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_AUTHOR);\n        make_from (hdr->env, buf2, sizeof (buf2), 0);\n        mutt_format_s (dest + colorlen, destlen - colorlen, prefix, buf2);\n        add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n      }\n      else if (mutt_addr_is_user (hdr->env->from))\n        optional = 0;\n      break;\n\n#ifdef USE_NOTMUCH\n    case 'g':\n      if (!optional)\n      {\n        colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_TAGS);\n        mutt_format_s (dest+colorlen, destlen-colorlen, prefix, nm_header_get_tags_transformed(hdr));\n        add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);\n      }\n      else if (!nm_header_get_tags_transformed(hdr))\n        optional = 0;\n      break;\n#endif\n\n    case 'H':\n      /* (Hormel) spam score */\n      if (optional)\n\toptional = hdr->env->spam ? 1 : 0;\n\n       if (hdr->env->spam)\n         mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->spam->data));\n       else\n         mutt_format_s (dest, destlen, prefix, \"\");\n\n      break;\n\n    case 'i':\n      mutt_format_s (dest, destlen, prefix, hdr->env->message_id ? hdr->env->message_id : \"<no.id>\");\n      break;\n\n    case 'l':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tcolorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_SIZE);\n\tsnprintf (dest + colorlen, destlen - colorlen, fmt, (int) hdr->lines);\n\tadd_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n      }\n      else if (hdr->lines <= 0)\n        optional = 0;\n      break;\n\n    case 'L':\n      if (!optional)\n      {\n\tcolorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_AUTHOR);\n\tmake_from (hdr->env, buf2, sizeof (buf2), 1);\n\tmutt_format_s (dest + colorlen, destlen - colorlen, prefix, buf2);\n\tadd_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n      }\n      else if (!check_for_mailing_list (hdr->env->to, NULL, NULL, 0) &&\n\t       !check_for_mailing_list (hdr->env->cc, NULL, NULL, 0))\n      {\n\toptional = 0;\n      }\n      break;\n\n    case 'm':\n      if(ctx)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (dest, destlen, fmt, ctx->msgcount);\n      }\n      else\n\tstrfcpy(dest, \"(null)\", destlen);\n      break;\n\n    case 'n':\n      colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_AUTHOR);\n      mutt_format_s (dest + colorlen, destlen - colorlen, prefix, mutt_get_name (hdr->env->from));\n      add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n      break;\n\n    case 'N':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (dest, destlen, fmt, hdr->score);\n      }\n      else\n      {\n\tif (hdr->score == 0)\n\t  optional = 0;\n      }\n      break;\n\n    case 'O':\n      if (!optional)\n      {\n\tmake_from_addr (hdr->env, buf2, sizeof (buf2), 1);\n\tif (!option (OPTSAVEADDRESS) && (p = strpbrk (buf2, \"%@\")))\n\t  *p = 0;\n\tmutt_format_s (dest, destlen, prefix, buf2);\n      }\n      else if (!check_for_mailing_list_addr (hdr->env->to, NULL, 0) &&\n\t       !check_for_mailing_list_addr (hdr->env->cc, NULL, 0))\n      {\n\toptional = 0;\n      }\n      break;\n\n    case 'M':\n      snprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n      if (!optional)\n      {\n\tcolorlen = add_index_color (dest, destlen, flags,\n\t\t\t\t   MT_COLOR_INDEX_COLLAPSED);\n\tif (threads && is_index && hdr->collapsed && hdr->num_hidden > 1) {\n\t  snprintf (dest + colorlen, destlen - colorlen, fmt, hdr->num_hidden);\n\t  add_index_color (dest, destlen - colorlen, flags, MT_COLOR_INDEX);\n\t} else if (is_index && threads) {\n\t  mutt_format_s (dest + colorlen, destlen - colorlen, prefix, \" \");\n\t  add_index_color (dest, destlen - colorlen, flags, MT_COLOR_INDEX);\n\t}\n\telse\n\t  *dest = '\\0';\n      }\n      else\n      {\n\tif (!(threads && is_index && hdr->collapsed && hdr->num_hidden > 1))\n\t  optional = 0;\n      }\n      break;\n\n    case 'P':\n      strfcpy(dest, NONULL(hfi->pager_progress), destlen);\n      break;\n\n    case 'r':\n      buf2[0] = 0;\n      rfc822_write_address(buf2, sizeof(buf2), hdr->env->to, 1);\n      if (optional && buf2[0] == '\\0')\n        optional = 0;\n      mutt_format_s (dest, destlen, prefix, buf2);\n      break;\n\n    case 'R':\n      buf2[0] = 0;\n      rfc822_write_address(buf2, sizeof(buf2), hdr->env->cc, 1);\n      if (optional && buf2[0] == '\\0')\n        optional = 0;\n      mutt_format_s (dest, destlen, prefix, buf2);\n      break;\n\n    case 's':\n      \n      if (flags & M_FORMAT_TREE && !hdr->collapsed)\n      {\n\tif (flags & M_FORMAT_FORCESUBJ)\n\t{\n\t  colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_SUBJECT);\n\t  mutt_format_s (dest + colorlen, destlen - colorlen, \"\", NONULL (hdr->env->subject));\n\t  add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n\t  snprintf (buf2, sizeof (buf2), \"%s%s\", hdr->tree, dest);\n\t  mutt_format_s_tree (dest, destlen, prefix, buf2);\n\t}\n\telse\n\t  mutt_format_s_tree (dest, destlen, prefix, hdr->tree);\n      }\n      else {\n\tcolorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_SUBJECT);\n\tmutt_format_s (dest + colorlen, destlen - colorlen, prefix, NONULL (hdr->env->subject));\n\tadd_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n      }\n      break;\n\n    case 'S':\n      if (hdr->deleted)\n\tch = 'D';\n      else if (hdr->attach_del)\n\tch = 'd';\n      else if (hdr->tagged)\n\tch = '*';\n      else if (hdr->flagged)\n\tch = '!';\n      else if (hdr->replied)\n\tch = 'r';\n      else if (hdr->read && (ctx && ctx->msgnotreadyet != hdr->msgno))\n\tch = '-';\n      else if (hdr->old)\n\tch = 'O';\n      else\n\tch = 'N';\n\n      /* FOO - this is probably unsafe, but we are not likely to have such\n\t a short string passed into this routine */\n      buf2[0] = ch;\n      buf2[1] = 0;\n      colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_FLAGS);\n      mutt_format_s (dest + colorlen, destlen - colorlen, prefix, buf2);\n      add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n      break;\n\n    case 't':\n      buf2[0] = 0;\n      if (!check_for_mailing_list (hdr->env->to, \"To \", buf2, sizeof (buf2)) &&\n\t  !check_for_mailing_list (hdr->env->cc, \"Cc \", buf2, sizeof (buf2)))\n      {\n\tif (hdr->env->to)\n\t  snprintf (buf2, sizeof (buf2), \"To %s\", mutt_get_name (hdr->env->to));\n\telse if (hdr->env->cc)\n\t  snprintf (buf2, sizeof (buf2), \"Cc %s\", mutt_get_name (hdr->env->cc));\n      }\n      mutt_format_s (dest, destlen, prefix, buf2);\n      break;\n\n    case 'T':\n      snprintf (fmt, sizeof (fmt), \"%%%sc\", prefix);\n      snprintf (dest, destlen, fmt,\n\t\t(Tochars && ((i = mutt_user_is_recipient (hdr))) < mutt_strlen (Tochars)) ? Tochars[i] : ' ');\n      break;\n\n    case 'u':\n      if (hdr->env->from && hdr->env->from->mailbox)\n      {\n\tstrfcpy (buf2, mutt_addr_for_display (hdr->env->from), sizeof (buf2));\n\tif ((p = strpbrk (buf2, \"%@\")))\n\t  *p = 0;\n      }\n      else\n\tbuf2[0] = 0;\n      mutt_format_s (dest, destlen, prefix, buf2);\n      break;\n\n    case 'v':\n      if (mutt_addr_is_user (hdr->env->from)) \n      {\n\tif (hdr->env->to)\n\t  mutt_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->to));\n\telse if (hdr->env->cc)\n\t  mutt_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->cc));\n\telse\n\t  *buf2 = 0;\n      }\n      else\n\tmutt_format_s (buf2, sizeof (buf2), prefix, mutt_get_name (hdr->env->from));\n      if ((p = strpbrk (buf2, \" %@\")))\n\t*p = 0;\n      mutt_format_s (dest, destlen, prefix, buf2);\n      break;\n\n    case 'Z':\n    \n      ch = ' ';\n\n      if (WithCrypto && hdr->security & GOODSIGN)\n        ch = 'S';\n      else if (WithCrypto && hdr->security & ENCRYPT)\n      \tch = 'P';\n      else if (WithCrypto && hdr->security & SIGN)\n        ch = 's';\n      else if ((WithCrypto & APPLICATION_PGP) && hdr->security & PGPKEY)\n        ch = 'K';\n\n      snprintf (buf2, sizeof (buf2),\n\t\t\"%c%c%c\", (THREAD_NEW ? 'n' : (THREAD_OLD ? 'o' : \n\t\t((hdr->read && (ctx && ctx->msgnotreadyet != hdr->msgno))\n\t\t? (hdr->replied ? 'r' : ' ') : (hdr->old ? 'O' : 'N')))),\n\t\thdr->deleted ? 'D' : (hdr->attach_del ? 'd' : ch),\n\t\thdr->tagged ? '*' :\n\t\t(hdr->flagged ? '!' :\n\t\t (Tochars && ((i = mutt_user_is_recipient (hdr)) < mutt_strlen (Tochars)) ? Tochars[i] : ' ')));\n      colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_FLAGS);\n      mutt_format_s (dest + colorlen, destlen - colorlen, prefix, buf2);\n      add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n      break;\n\n    case 'X':\n      {\n\tint count = mutt_count_body_parts (ctx, hdr);\n\n\t/* The recursion allows messages without depth to return 0. */\n\tif (optional)\n          optional = count != 0;\n\n        snprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n        snprintf (dest, destlen, fmt, count);\n      }\n      break;\n\n     case 'y':\n       if (optional)\n\t optional = hdr->env->x_label ? 1 : 0;\n\n       colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_LABEL);\n       mutt_format_s (dest + colorlen, destlen - colorlen, prefix, NONULL (hdr->env->x_label));\n       add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n       break;\n \n    case 'Y':\n      if (hdr->env->x_label)\n      {\n\ti = 1;\t/* reduce reuse recycle */\n\thtmp = NULL;\n\tif (flags & M_FORMAT_TREE\n\t    && (hdr->thread->prev && hdr->thread->prev->message\n\t\t&& hdr->thread->prev->message->env->x_label))\n\t  htmp = hdr->thread->prev->message;\n\telse if (flags & M_FORMAT_TREE\n\t\t && (hdr->thread->parent && hdr->thread->parent->message\n\t\t     && hdr->thread->parent->message->env->x_label))\n\t  htmp = hdr->thread->parent->message;\n\tif (htmp && mutt_strcasecmp (hdr->env->x_label,\n\t\t\t\t     htmp->env->x_label) == 0)\n\t  i = 0;\n      }\n      else\n\ti = 0;\n\n      if (optional)\n\toptional = i;\n\n      colorlen = add_index_color (dest, destlen, flags, MT_COLOR_INDEX_LABEL);\n      if (i)\n        mutt_format_s (dest + colorlen, destlen - colorlen, prefix, NONULL (hdr->env->x_label));\n      else\n        mutt_format_s (dest + colorlen, destlen - colorlen, prefix, \"\");\n      add_index_color (dest + colorlen, destlen - colorlen, flags, MT_COLOR_INDEX);\n\n      break;\n\n#ifdef USE_NOTMUCH\n    case 'G':\n    {\n      char *tag_transformed;\n      char format[3];\n      char *tag;\n\n      if (!optional)\n      {\n        format[0] = op;\n        format[1] = *src;\n        format[2] = 0;\n\n        tag = hash_find(TagFormats, format);\n        if (tag != NULL)\n        {\n            tag_transformed = nm_header_get_tag_transformed(tag, hdr);\n\n            colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_TAG);\n            mutt_format_s (dest+colorlen, destlen-colorlen, prefix,\n                           (tag_transformed) ? tag_transformed : \"\");\n            add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);\n        }\n\n        src++;\n      }\n      else\n      {\n        format[0] = op;\n        format[1] = *prefix;\n        format[2] = 0;\n\n        tag = hash_find(TagFormats, format);\n        if (tag != NULL)\n          if (nm_header_get_tag_transformed(tag, hdr) == NULL)\n            optional = 0;\n      }\n\n      break;\n    }\n#endif\n\n    default:\n      snprintf (dest, destlen, \"%%%s%c\", prefix, op);\n      break;\n  }\n\n  if (optional)\n    mutt_FormatString (dest, destlen, col, ifstring, hdr_format_str, (unsigned long) hfi, flags);\n  else if (flags & M_FORMAT_OPTIONAL)\n    mutt_FormatString (dest, destlen, col, elsestring, hdr_format_str, (unsigned long) hfi, flags);\n\n  return (src);\n#undef THREAD_NEW\n#undef THREAD_OLD\n}\n\nvoid\n_mutt_make_string (char *dest, size_t destlen, const char *s, CONTEXT *ctx, HEADER *hdr, format_flag flags)\n{\n  struct hdr_format_info hfi;\n\n  hfi.hdr = hdr;\n  hfi.ctx = ctx;\n  hfi.pager_progress = 0;\n\n  mutt_FormatString (dest, destlen, 0, s, hdr_format_str, (unsigned long) &hfi, flags);\n}\n\nvoid\nmutt_make_string_info (char *dst, size_t dstlen, const char *s, struct hdr_format_info *hfi, format_flag flags)\n{\n  mutt_FormatString (dst, dstlen, 0, s, hdr_format_str, (unsigned long) hfi, flags);\n}\n"
  },
  {
    "path": "headers.c",
    "content": "/* \n * Copyright (C) 1996-2009,2012 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_idna.h\"\n\n#include <sys/stat.h>\n#include <string.h>\n#include <ctype.h>\n\nvoid mutt_edit_headers (const char *editor,\n\t\t\tconst char *body,\n\t\t\tHEADER *msg,\n\t\t\tchar *fcc,\n\t\t\tsize_t fcclen)\n{\n  char path[_POSIX_PATH_MAX];\t/* tempfile used to edit headers + body */\n  char buffer[LONG_STRING];\n  const char *p;\n  FILE *ifp, *ofp;\n  int i, keep;\n  ENVELOPE *n;\n  time_t mtime;\n  struct stat st;\n  LIST *cur, **last = NULL, *tmp;\n\n  mutt_mktemp (path, sizeof (path));\n  if ((ofp = safe_fopen (path, \"w\")) == NULL)\n  {\n    mutt_perror (path);\n    return;\n  }\n  \n  mutt_env_to_local (msg->env);\n  mutt_write_rfc822_header (ofp, msg->env, NULL, 1, 0);\n  fputc ('\\n', ofp);\t/* tie off the header. */\n\n  /* now copy the body of the message. */\n  if ((ifp = fopen (body, \"r\")) == NULL)\n  {\n    mutt_perror (body);\n    return;\n  }\n\n  mutt_copy_stream (ifp, ofp);\n\n  safe_fclose (&ifp);\n  safe_fclose (&ofp);\n\n  if (stat (path, &st) == -1)\n  {\n    mutt_perror (path);\n    return;\n  }\n\n  mtime = mutt_decrease_mtime (path, &st);\n\n  mutt_edit_file (editor, path);\n  stat (path, &st);\n  if (mtime == st.st_mtime)\n  {\n    dprint (1, (debugfile, \"ci_edit_headers(): temp file was not modified.\\n\"));\n    /* the file has not changed! */\n    mutt_unlink (path);\n    return;\n  }\n\n  mutt_unlink (body);\n  mutt_free_list (&msg->env->userhdrs);\n\n  /* Read the temp file back in */\n  if ((ifp = fopen (path, \"r\")) == NULL)\n  {\n    mutt_perror (path);\n    return;\n  }\n  \n  if ((ofp = safe_fopen (body, \"w\")) == NULL)\n  {\n    /* intentionally leak a possible temporary file here */\n    safe_fclose (&ifp);\n    mutt_perror (body);\n    return;\n  }\n  \n  n = mutt_read_rfc822_header (ifp, NULL, 1, 0);\n  while ((i = fread (buffer, 1, sizeof (buffer), ifp)) > 0)\n    fwrite (buffer, 1, i, ofp);\n  safe_fclose (&ofp);\n  safe_fclose (&ifp);\n  mutt_unlink (path);\n\n  /* in case the user modifies/removes the In-Reply-To header with\n     $edit_headers set, we remove References: as they're likely invalid;\n     we can simply compare strings as we don't generate References for\n     multiple Message-Ids in IRT anyways */\n  if (msg->env->in_reply_to &&\n      (!n->in_reply_to || mutt_strcmp (n->in_reply_to->data,\n\t\t\t\t       msg->env->in_reply_to->data) != 0))\n    mutt_free_list (&msg->env->references);\n\n  /* restore old info. */\n  mutt_free_list (&n->references);\n  n->references = msg->env->references;\n  msg->env->references = NULL;\n\n  mutt_free_envelope (&msg->env);\n  msg->env = n; n = NULL;\n\n  mutt_expand_aliases_env (msg->env);\n\n  /* search through the user defined headers added to see if \n   * fcc: or attach: or pgp: was specified\n   */\n\n  cur = msg->env->userhdrs;\n  last = &msg->env->userhdrs;\n  while (cur)\n  {\n    keep = 1;\n\n    if (fcc && ascii_strncasecmp (\"fcc:\", cur->data, 4) == 0)\n    {\n      p = skip_email_wsp(cur->data + 4);\n      if (*p)\n      {\n\tstrfcpy (fcc, p, fcclen);\n\tmutt_pretty_mailbox (fcc, fcclen);\n      }\n      keep = 0;\n    }\n    else if (ascii_strncasecmp (\"attach:\", cur->data, 7) == 0)\n    {\n      BODY *body;\n      BODY *parts;\n      size_t l = 0;\n\n      p = skip_email_wsp(cur->data + 7);\n      if (*p)\n      {\n\tfor ( ; *p && *p != ' ' && *p != '\\t'; p++)\n\t{\n\t  if (*p == '\\\\')\n\t  {\n\t    if (!*(p+1))\n\t      break;\n\t    p++;\n\t  }\n\t  if (l < sizeof (path) - 1)\n\t    path[l++] = *p;\n\t}\n\tp = skip_email_wsp(p);\n\tpath[l] = 0;\n\n\tmutt_expand_path (path, sizeof (path));\n\tif ((body = mutt_make_file_attach (path)))\n\t{\n\t  body->description = safe_strdup (p);\n\t  for (parts = msg->content; parts->next; parts = parts->next) ;\n\t  parts->next = body;\n\t}\n\telse\n\t{\n\t  mutt_pretty_mailbox (path, sizeof (path));\n\t  mutt_error (_(\"%s: unable to attach file\"), path);\n\t}\n      }\n      keep = 0;\n    }\n    else if ((WithCrypto & APPLICATION_PGP)\n             && ascii_strncasecmp (\"pgp:\", cur->data, 4) == 0)\n    {\n      msg->security = mutt_parse_crypt_hdr (cur->data + 4, 0, APPLICATION_PGP);\n      if (msg->security)\n\tmsg->security |= APPLICATION_PGP;\n      keep = 0;\n    }\n\n    if (keep)\n    {\n      last = &cur->next;\n      cur  = cur->next;\n    }\n    else\n    {\n      tmp       = cur;\n      *last     = cur->next;\n      cur       = cur->next;\n      tmp->next = NULL;\n      mutt_free_list (&tmp);\n    }\n  }\n}\n"
  },
  {
    "path": "help.c",
    "content": "/*\n * Copyright (C) 1996-2000,2009 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#define HELP_C\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"keymap.h\"\n#include \"pager.h\"\n#include \"mapping.h\"\n\n#include <ctype.h>\n#include <string.h>\n\nstatic const struct binding_t *help_lookupFunction (int op, int menu)\n{\n  int i;\n  const struct binding_t *map;\n\n  if (menu != MENU_PAGER)\n  {\n    /* first look in the generic map for the function */\n    for (i = 0; OpGeneric[i].name; i++)\n      if (OpGeneric[i].op == op)\n\treturn (&OpGeneric[i]);    \n  }\n\n  if ((map = km_get_table(menu)))\n  {\n    for (i = 0; map[i].name; i++)\n      if (map[i].op == op)\n\treturn (&map[i]);\n  }\n  \n  return (NULL);\n}\n\nvoid mutt_make_help (char *d, size_t dlen, const char *txt, int menu, int op)\n{\n  char buf[SHORT_STRING];\n\n  if (km_expand_key (buf, sizeof (buf), km_find_func (menu, op)) ||\n      km_expand_key (buf, sizeof (buf), km_find_func (MENU_GENERIC, op)))\n    snprintf (d, dlen, \"%s:%s\", buf, txt);\n  else\n    d[0] = 0;\n}\n\nchar *\nmutt_compile_help (char *buf, size_t buflen, int menu, const struct mapping_t *items)\n{\n  int i;\n  size_t len;\n  char *pbuf = buf;\n  \n  for (i = 0; items[i].name && buflen > 2; i++)\n  {\n    if (i)\n    {\n      *pbuf++ = ' ';\n      *pbuf++ = ' ';\n      buflen -= 2;\n    }\n    mutt_make_help (pbuf, buflen, _(items[i].name), menu, items[i].value);\n    len = mutt_strlen (pbuf);\n    pbuf += len;\n    buflen -= len;\n  }\n  return buf;\n}\n\nstatic int print_macro (FILE *f, int maxwidth, const char **macro)\n{\n  int n = maxwidth;\n  wchar_t wc;\n  int w;\n  size_t k;\n  size_t len = mutt_strlen (*macro);\n  mbstate_t mbstate1, mbstate2;\n\n  memset (&mbstate1, 0, sizeof (mbstate1));\n  memset (&mbstate2, 0, sizeof (mbstate2));\n  for (; len && (k = mbrtowc (&wc, *macro, len, &mbstate1)); *macro += k, len -= k)\n  {\n    if (k == (size_t)(-1) || k == (size_t)(-2))\n    {\n      k = (k == (size_t)(-1)) ? 1 : len;\n      wc = replacement_char ();\n    }\n    /* glibc-2.1.3's wcwidth() returns 1 for unprintable chars! */\n    if (IsWPrint (wc) && (w = wcwidth (wc)) >= 0)\n    {\n      if (w > n)\n\tbreak;\n      n -= w;\n      {\n\tchar buf[MB_LEN_MAX*2];\n\tsize_t n1, n2;\n\tif ((n1 = wcrtomb (buf, wc, &mbstate2)) != (size_t)(-1) &&\n\t    (n2 = wcrtomb (buf + n1, 0, &mbstate2)) != (size_t)(-1))\n\t  fputs (buf, f);\n      }\n    }\n    else if (wc < 0x20 || wc == 0x7f)\n    {\n      if (2 > n)\n\tbreak;\n      n -= 2;\n      if (wc == '\\033')\n\tfprintf (f, \"\\\\e\");\n      else if (wc == '\\n')\n\tfprintf (f, \"\\\\n\");\n      else if (wc == '\\r')\n\tfprintf (f, \"\\\\r\");\n      else if (wc == '\\t')\n\tfprintf (f, \"\\\\t\");\n      else\n\tfprintf (f, \"^%c\", (char)((wc + '@') & 0x7f));\n    }\n    else\n    {\n      if (1 > n)\n\tbreak;\n      n -= 1;\n      fprintf (f, \"?\");\n    }\n  }\n  return (maxwidth - n);\n}\n\nstatic int get_wrapped_width (const char *t, size_t wid)\n{\n  wchar_t wc;\n  size_t k;\n  size_t m, n;\n  size_t len = mutt_strlen (t);\n  const char *s = t;\n  mbstate_t mbstate;\n\n  memset (&mbstate, 0, sizeof (mbstate));\n  for (m = wid, n = 0;\n       len && (k = mbrtowc (&wc, s, len, &mbstate)) && (n <= wid);\n       s += k, len -= k)\n  {\n    if (*s == ' ')\n      m = n;\n    if (k == (size_t)(-1) || k == (size_t)(-2))\n    {\n      k = (k == (size_t)(-1)) ? 1 : len;\n      wc = replacement_char ();\n    }\n    if (!IsWPrint (wc))\n      wc = '?';\n    n += wcwidth (wc);\n  }\n  if (n > wid)\n    n = m;\n  else\n    n = wid;\n  return n;\n}\n\nstatic int pad (FILE *f, int col, int i)\n{\n  char fmt[8];\n\n  if (col < i)\n  {\n    snprintf (fmt, sizeof(fmt), \"%%-%ds\", i - col);\n    fprintf (f, fmt, \"\");\n    return (i);\n  }\n  fputc (' ', f);\n  return (col + 1);\n}\n\nstatic void format_line (FILE *f, int ismacro,\n\t\t\t const char *t1, const char *t2, const char *t3)\n{\n  int col;\n  int col_a, col_b;\n  int split;\n  int n;\n\n  fputs (t1, f);\n\n  /* don't try to press string into one line with less than 40 characters.\n     The double parenthesis avoids a gcc warning, sigh ... */\n  if ((split = COLS < 40))\n  {\n    col_a = col = 0;\n    col_b = LONG_STRING;\n    fputc ('\\n', f);\n  }\n  else\n  {\n    col_a = COLS > 83 ? (COLS - 32) >> 2 : 12;\n    col_b = COLS > 49 ? (COLS - 10) >> 1 : 19;\n    col = pad (f, mutt_strwidth(t1), col_a);\n  }\n\n  if (ismacro > 0)\n  {\n    if (!mutt_strcmp (Pager, \"builtin\"))\n      fputs (\"_\\010\", f);\n    fputs (\"M \", f);\n    col += 2;\n\n    if (!split)\n    {\n      col += print_macro (f, col_b - col - 4, &t2);\n      if (mutt_strwidth (t2) > col_b - col)\n\tt2 = \"...\";\n    }\n  }\n\n  col += print_macro (f, col_b - col - 1, &t2);\n  if (split)\n    fputc ('\\n', f);\n  else\n    col = pad (f, col, col_b);\n\n  if (split)\n  {\n    print_macro (f, LONG_STRING, &t3);\n    fputc ('\\n', f);\n  }\n  else\n  {\n    while (*t3)\n    {\n      n = COLS - col;\n\n      if (ismacro >= 0)\n      {\n\tSKIPWS(t3);\n\tn = get_wrapped_width (t3, n);\n      }\n\n      n = print_macro (f, n, &t3);\n\n      if (*t3)\n      {\n        if (mutt_strcmp (Pager, \"builtin\"))\n\t{\n\t  fputc ('\\n', f);\n\t  n = 0;\n\t}\n\telse\n\t{\n\t  n += col - COLS;\n\t  if (option (OPTMARKERS))\n\t    ++n;\n\t}\n\tcol = pad (f, n, col_b);\n      }\n    }\n  }\n\n  fputc ('\\n', f);\n}\n\nstatic void dump_menu (FILE *f, int menu)\n{\n  struct keymap_t *map;\n  const struct binding_t *b;\n  char buf[SHORT_STRING];\n\n  /* browse through the keymap table */\n  for (map = Keymaps[menu]; map; map = map->next)\n  {\n    if (map->op != OP_NULL)\n    {\n      km_expand_key (buf, sizeof (buf), map);\n\n      if (map->op == OP_MACRO)\n      {\n\tif (map->descr == NULL)\n\t  format_line (f, -1, buf, \"macro\", map->macro);\n        else\n\t  format_line (f, 1, buf, map->macro, map->descr);\n      }\n      else\n      {\n\tb = help_lookupFunction (map->op, menu);\n\tformat_line (f, 0, buf, b ? b->name : \"UNKNOWN\",\n\t      b ? _(HelpStrings[b->op]) : _(\"ERROR: please report this bug\"));\n      }\n    }\n  }\n}\n\nstatic int is_bound (struct keymap_t *map, int op)\n{\n  for (; map; map = map->next)\n    if (map->op == op)\n      return 1;\n  return 0;\n}\n\nstatic void dump_unbound (FILE *f,\n\t\t\t  const struct binding_t *funcs,\n\t\t\t  struct keymap_t *map,\n\t\t\t  struct keymap_t *aux)\n{\n  int i;\n\n  for (i = 0; funcs[i].name; i++)\n  {\n    if (! is_bound (map, funcs[i].op) &&\n\t(!aux || ! is_bound (aux, funcs[i].op)))\n      format_line (f, 0, funcs[i].name, \"\", _(HelpStrings[funcs[i].op]));\n  }\n}\n\nvoid mutt_help (int menu)\n{\n  char t[_POSIX_PATH_MAX];\n  char buf[SHORT_STRING];\n  const char *desc;\n  FILE *f;\n  const struct binding_t *funcs;\n\n  mutt_mktemp (t, sizeof (t));\n\n  funcs = km_get_table (menu);\n  desc = mutt_getnamebyvalue (menu, Menus);\n  if (!desc)\n    desc = _(\"<UNKNOWN>\");\n  \n  do {\n    if ((f = safe_fopen (t, \"w\")) == NULL)\n    {\n      mutt_perror (t);\n      return;\n    }\n  \n    dump_menu (f, menu);\n    if (menu != MENU_EDITOR && menu != MENU_PAGER)\n    {\n      fputs (_(\"\\nGeneric bindings:\\n\\n\"), f);\n      dump_menu (f, MENU_GENERIC);\n    }\n  \n    fputs (_(\"\\nUnbound functions:\\n\\n\"), f);\n    if (funcs)\n      dump_unbound (f, funcs, Keymaps[menu], NULL);\n    if (menu != MENU_PAGER)\n      dump_unbound (f, OpGeneric, Keymaps[MENU_GENERIC], Keymaps[menu]);\n  \n    safe_fclose (&f);\n  \n    snprintf (buf, sizeof (buf), _(\"Help for %s\"), desc);\n  }\n  while\n    (mutt_do_pager (buf, t,\n\t\t    M_PAGER_RETWINCH | M_PAGER_MARKER | M_PAGER_NSKIP | M_PAGER_NOWRAP,\n\t\t    NULL)\n     == OP_REFORMAT_WINCH);\n}\n"
  },
  {
    "path": "hg-changelog-map",
    "content": "header = '{date|isodate}  {author|person}  <{author|email}>  ({node|short})\\n\\n'\nchangeset = '\\t* {files|stringify|fill68|tabindent|strip}\\n\\n'\nfile = '{file}, '\nlast_file = '{file}: {desc}\\n\\t'\nno_files = '{desc}'\n"
  },
  {
    "path": "hg-commit",
    "content": "#!/bin/bash\n\nMUTTDIR=$(dirname $0)\n\n(cd $MUTTDIR && ./check_sec.sh) || exit 1\n\nif [ -f $MUTTDIR/doc/manual.xml ] ; then\n  ( cd $MUTTDIR/doc/ && make validate ) || exit 1\nfi\n\nlrev=$(hg log --limit 1 --template '{rev}' $MUTTDIR/ChangeLog)\ntrev=$(hg tip --template '{rev}')\nif [ $lrev = $trev ]\nthen\n  exec hg commit \"$@\"\nfi\n\n# Include ChangeLog if given any explicit file names\ni=0\nwhile [[ $i -lt $# ]]\ndo\n  i=$((i+1))\n  case \"${!i}\" in\n    # no-argument options\n    -A) continue ;;\n    # one-argument options\n    -?) i=$((i+1)); continue ;;\n    # one-argument options with no space\n    -*) continue ;;\n    *) cl=$MUTTDIR/ChangeLog ;;\n  esac\ndone\n\n{\n  hg log --no-merges --style=$MUTTDIR/hg-changelog-map -r tip:$lrev | sed 's#ChangeLog, ##' \n  hg cat $MUTTDIR/ChangeLog\n} > $MUTTDIR/ChangeLog\n${VISUAL:-${EDITOR:-vi}} $MUTTDIR/ChangeLog\n\nhg commit \"$@\" $cl\n"
  },
  {
    "path": "history.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"history.h\"\n\nstruct history\n{\n  char **hist;\n  short cur;\n  short last;\n}; \n\n/* global vars used for the string-history routines */\n\nstatic struct history History[HC_LAST];\nstatic int OldSize = 0;\n\n#define GET_HISTORY(CLASS)\t((CLASS >= HC_LAST) ? NULL : &History[CLASS])\n\nstatic void init_history (struct history *h)\n{\n  int i;\n\n  if(OldSize)\n  {\n    if (h->hist)\n    {\n      for (i = 0 ; i <= OldSize ; i ++)\n\tFREE (&h->hist[i]);\n      FREE (&h->hist);\n    }\n  }\n  \n  if (HistSize)\n    h->hist = safe_calloc (HistSize + 1, sizeof (char *));\n  \n  h->cur = 0;\n  h->last = 0;\n}\n\nvoid mutt_read_histfile (void)\n{\n  FILE *f;\n  int line = 0, hclass, read;\n  char *linebuf = NULL, *p;\n  size_t buflen;\n\n  if ((f = fopen (HistFile, \"r\")) == NULL)\n    return;\n\n  while ((linebuf = mutt_read_line (linebuf, &buflen, f, &line, 0)) != NULL)\n  {\n    read = 0;\n    if (sscanf (linebuf, \"%d:%n\", &hclass, &read) < 1 || read == 0 ||\n        *(p = linebuf + strlen (linebuf) - 1) != '|' || hclass < 0)\n    {\n      mutt_error (_(\"Bad history file format (line %d)\"), line);\n      break;\n    }\n    /* silently ignore too high class (probably newer mutt) */\n    if (hclass >= HC_LAST)\n      continue;\n    *p = '\\0';\n    p = safe_strdup (linebuf + read);\n    if (p)\n    {\n      mutt_convert_string (&p, \"utf-8\", Charset, 0);\n      mutt_history_add (hclass, p, 0);\n      FREE (&p);\n    }\n  }\n\n  safe_fclose (&f);\n  FREE (&linebuf);\n}\n\nstatic void shrink_histfile (void)\n{\n  char tmpfname[_POSIX_PATH_MAX];\n  FILE *f, *tmp = NULL;\n  int n[HC_LAST] = { 0 };\n  int line, hclass;\n  char *linebuf = NULL;\n  size_t buflen;\n\n  if ((f = fopen (HistFile, \"r\")) == NULL)\n    return;\n\n  line = 0;\n  while ((linebuf = mutt_read_line (linebuf, &buflen, f, &line, 0)) != NULL)\n  {\n    if (sscanf (linebuf, \"%d\", &hclass) < 1 || hclass < 0)\n    {\n      mutt_error (_(\"Bad history file format (line %d)\"), line);\n      goto cleanup;\n    }\n    /* silently ignore too high class (probably newer mutt) */\n    if (hclass >= HC_LAST)\n      continue;\n    n[hclass]++;\n  }\n\n  for(hclass = HC_FIRST; hclass < HC_LAST; hclass++)\n    if (n[hclass] > SaveHist)\n    {\n      mutt_mktemp (tmpfname, sizeof (tmpfname));\n      if ((tmp = safe_fopen (tmpfname, \"w+\")) == NULL)\n        mutt_perror (tmpfname);\n      break;\n    }\n\n  if (tmp != NULL)\n  {\n    rewind (f);\n    line = 0;\n    while ((linebuf = mutt_read_line (linebuf, &buflen, f, &line, 0)) != NULL)\n    {\n      if (sscanf (linebuf, \"%d\", &hclass) < 1 || hclass < 0)\n      {\n        mutt_error (_(\"Bad history file format (line %d)\"), line);\n        goto cleanup;\n      }\n      /* silently ignore too high class (probably newer mutt) */\n      if (hclass >= HC_LAST)\n\tcontinue;\n      if (n[hclass]-- <= SaveHist)\n        fprintf (tmp, \"%s\\n\", linebuf);\n    }\n  }\n\ncleanup:\n  safe_fclose (&f);\n  FREE (&linebuf);\n  if (tmp != NULL)\n  {\n    if (fflush (tmp) == 0 &&\n        (f = fopen (HistFile, \"w\")) != NULL) /* __FOPEN_CHECKED__ */\n    {\n      rewind (tmp);\n      mutt_copy_stream (tmp, f);\n      safe_fclose (&f);\n    }\n    safe_fclose (&tmp);\n    unlink (tmpfname);\n  }\n}\n\nstatic void save_history (history_class_t hclass, const char *s)\n{\n  static int n = 0;\n  FILE *f;\n  char *tmp, *p;\n\n  if (!s || !*s)  /* This shouldn't happen, but it's safer. */\n    return;\n\n  if ((f = fopen (HistFile, \"a\")) == NULL)\n  {\n    mutt_perror (\"fopen\");\n    return;\n  }\n\n  tmp = safe_strdup (s);\n  mutt_convert_string (&tmp, Charset, \"utf-8\", 0);\n\n  /* Format of a history item (1 line): \"<histclass>:<string>|\".\n     We add a '|' in order to avoid lines ending with '\\'. */\n  fprintf (f, \"%d:\", (int) hclass);\n  for (p = tmp; *p; p++)\n  {\n    /* Don't copy \\n as a history item must fit on one line. The string\n       shouldn't contain such a character anyway, but as this can happen\n       in practice, we must deal with that. */\n    if (*p != '\\n')\n      putc ((unsigned char) *p, f);\n  }\n  fputs (\"|\\n\", f);\n\n  safe_fclose (&f);\n  FREE (&tmp);\n\n  if (--n < 0)\n  {\n    n = SaveHist;\n    shrink_histfile();\n  }\n}\n\nvoid mutt_init_history(void)\n{\n  history_class_t hclass;\n  \n  if (HistSize == OldSize)\n    return;\n  \n  for(hclass = HC_FIRST; hclass < HC_LAST; hclass++)\n    init_history(&History[hclass]);\n\n  OldSize = HistSize;\n}\n  \nvoid mutt_history_add (history_class_t hclass, const char *s, int save)\n{\n  int prev;\n  struct history *h = GET_HISTORY(hclass);\n\n  if (!HistSize || !h)\n    return; /* disabled */\n\n  if (*s)\n  {\n    prev = h->last - 1;\n    if (prev < 0) prev = HistSize;\n\n    /* don't add to prompt history:\n     *  - lines beginning by a space\n     *  - repeated lines\n     */\n    if (*s != ' ' && (!h->hist[prev] || mutt_strcmp (h->hist[prev], s) != 0))\n    {\n      if (save && SaveHist)\n        save_history (hclass, s);\n      mutt_str_replace (&h->hist[h->last++], s);\n      if (h->last > HistSize)\n\th->last = 0;\n    }\n  }\n  h->cur = h->last; /* reset to the last entry */\n}\n\nchar *mutt_history_next (history_class_t hclass)\n{\n  int next;\n  struct history *h = GET_HISTORY(hclass);\n\n  if (!HistSize || !h)\n    return (\"\"); /* disabled */\n\n  next = h->cur + 1;\n  if (next > HistSize)\n    next = 0;\n  if (h->hist[next] || (next == h->last))\n    h->cur = next;\n  else\n    h->cur = 0;\n  return (h->hist[h->cur] ? h->hist[h->cur] : \"\");\n}\n\nchar *mutt_history_prev (history_class_t hclass)\n{\n  int prev;\n  struct history *h = GET_HISTORY(hclass);\n\n  if (!HistSize || !h)\n    return (\"\"); /* disabled */\n\n  prev = h->cur - 1;\n  if (prev < 0)\n  {\n    prev = HistSize;\n    while ((prev > 0) && (prev != h->last) && (h->hist[prev] == NULL))\n      prev--;\n  }\n  if (h->hist[prev] || (prev == h->last))\n    h->cur = prev;\n  return (h->hist[h->cur] ? h->hist[h->cur] : \"\");\n}\n\nvoid mutt_reset_history_state (history_class_t hclass)\n{\n  struct history *h = GET_HISTORY(hclass);\n\n  if (!HistSize || !h)\n    return; /* disabled */\n\n  h->cur = h->last;\n}\n\nint mutt_history_at_scratch (history_class_t hclass)\n{\n  struct history *h = GET_HISTORY(hclass);\n\n  if (!HistSize || !h)\n    return 0; /* disabled */\n\n  return h->cur == h->last;\n}\n\nvoid mutt_history_save_scratch (history_class_t hclass, const char *s)\n{\n  struct history *h = GET_HISTORY(hclass);\n\n  if (!HistSize || !h)\n    return; /* disabled */\n\n  /* Don't check if s has a value because the scratch buffer may contain\n   * an old garbage value that should be overwritten */\n  mutt_str_replace (&h->hist[h->last], s);\n}\n"
  },
  {
    "path": "history.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _HISTORY_H\n#define _HISTORY_H\n\nenum history_class\n{\n  HC_CMD,\n  HC_ALIAS,\n  HC_COMMAND,\n  HC_FILE,\n  HC_PATTERN,\n  HC_OTHER,\n  HC_MBOX,\n  /* insert new items here to keep history file working */\n  HC_LAST\n};\n\n#define HC_FIRST HC_CMD\n\ntypedef enum history_class history_class_t;\n\nvoid mutt_init_history(void);\nvoid mutt_read_histfile(void);\nvoid mutt_history_add(history_class_t, const char *, int);\nchar *mutt_history_next(history_class_t);\nchar *mutt_history_prev(history_class_t);\nvoid mutt_reset_history_state (history_class_t);\nint mutt_history_at_scratch (history_class_t);\nvoid mutt_history_save_scratch (history_class_t, const char *);\n\n#endif\n"
  },
  {
    "path": "hook.c",
    "content": "/* \n * Copyright (C) 1996-2002,2004,2007 Michael R. Elkins <me@mutt.org>, and others\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mailbox.h\"\n#include \"mutt_crypt.h\"\n\n#include <limits.h>\n#include <string.h>\n#include <stdlib.h>\n#include <ctype.h>\n#include <unistd.h>\n\ntypedef struct hook\n{\n  int type;\t\t/* hook type */\n  REGEXP rx;\t\t/* regular expression */\n  char *command;\t/* filename, command or pattern to execute */\n  pattern_t *pattern;\t/* used for fcc,save,send-hook */\n  struct hook *next;\n} HOOK;\n\nstatic HOOK *Hooks = NULL;\n\nstatic int current_hook_type = 0;\n\nint mutt_parse_hook (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  HOOK *ptr;\n  BUFFER command, pattern;\n  int rc, not = 0;\n  regex_t *rx = NULL;\n  pattern_t *pat = NULL;\n  char path[_POSIX_PATH_MAX];\n\n  mutt_buffer_init (&pattern);\n  mutt_buffer_init (&command);\n\n  if (*s->dptr == '!')\n  {\n    s->dptr++;\n    SKIPWS (s->dptr);\n    not = 1;\n  }\n\n  mutt_extract_token (&pattern, s, 0);\n\n  if (!MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"too few arguments\"), err->dsize);\n    goto error;\n  }\n\n  mutt_extract_token (&command, s, (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_ACCOUNTHOOK | M_REPLYHOOK)) ?  M_TOKEN_SPACE : 0);\n\n  if (!command.data)\n  {\n    strfcpy (err->data, _(\"too few arguments\"), err->dsize);\n    goto error;\n  }\n\n  if (MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"too many arguments\"), err->dsize);\n    goto error;\n  }\n\n  if (data & (M_FOLDERHOOK | M_MBOXHOOK))\n  {\n    /* Accidentally using the ^ mailbox shortcut in the .muttrc is a\n     * common mistake */\n    if ((*pattern.data == '^') && (! CurrentFolder))\n    {\n      strfcpy (err->data, _(\"current mailbox shortcut '^' is unset\"), err->dsize);\n      goto error;\n    }\n\n    strfcpy (path, pattern.data, sizeof (path));\n    _mutt_expand_path (path, sizeof (path), 1);\n\n    /* Check for other mailbox shortcuts that expand to the empty string.\n     * This is likely a mistake too */\n    if (!*path && *pattern.data)\n    {\n      strfcpy (err->data, _(\"mailbox shortcut expanded to empty regexp\"), err->dsize);\n      goto error;\n    }\n\n    FREE (&pattern.data);\n    memset (&pattern, 0, sizeof (pattern));\n    pattern.data = safe_strdup (path);\n  }\n  else if (DefaultHook && !(data & (M_CHARSETHOOK | M_ICONVHOOK | M_ACCOUNTHOOK))\n           && (!WithCrypto || !(data & M_CRYPTHOOK))\n      )\n  {\n    char tmp[HUGE_STRING];\n\n    /* At this stage remain only message-hooks, reply-hooks, send-hooks,\n     * send2-hooks, save-hooks, and fcc-hooks: All those allowing full\n     * patterns. If given a simple regexp, we expand $default_hook.\n     */\n    strfcpy (tmp, pattern.data, sizeof (tmp));\n    mutt_check_simple (tmp, sizeof (tmp), DefaultHook);\n    FREE (&pattern.data);\n    memset (&pattern, 0, sizeof (pattern));\n    pattern.data = safe_strdup (tmp);\n  }\n\n  if (data & (M_MBOXHOOK | M_SAVEHOOK | M_FCCHOOK))\n  {\n    strfcpy (path, command.data, sizeof (path));\n    mutt_expand_path (path, sizeof (path));\n    FREE (&command.data);\n    memset (&command, 0, sizeof (command));\n    command.data = safe_strdup (path);\n  }\n\n  /* check to make sure that a matching hook doesn't already exist */\n  for (ptr = Hooks; ptr; ptr = ptr->next)\n  {\n    if (ptr->type == data &&\n\tptr->rx.not == not &&\n\t!mutt_strcmp (pattern.data, ptr->rx.pattern))\n    {\n      if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK | M_CRYPTHOOK))\n      {\n\t/* these hooks allow multiple commands with the same\n\t * pattern, so if we've already seen this pattern/command pair, just\n\t * ignore it instead of creating a duplicate */\n\tif (!mutt_strcmp (ptr->command, command.data))\n\t{\n\t  FREE (&command.data);\n\t  FREE (&pattern.data);\n\t  return 0;\n\t}\n      }\n      else\n      {\n\t/* other hooks only allow one command per pattern, so update the\n\t * entry with the new command.  this currently does not change the\n\t * order of execution of the hooks, which i think is desirable since\n\t * a common action to perform is to change the default (.) entry\n\t * based upon some other information. */\n\tFREE (&ptr->command);\n\tptr->command = command.data;\n\tFREE (&pattern.data);\n\treturn 0;\n      }\n    }\n    if (!ptr->next)\n      break;\n  }\n\n  if (data & (M_SENDHOOK | M_SEND2HOOK | M_SAVEHOOK | M_FCCHOOK | M_MESSAGEHOOK | M_REPLYHOOK))\n  {\n    if ((pat = mutt_pattern_comp (pattern.data,\n\t   (data & (M_SENDHOOK | M_SEND2HOOK | M_FCCHOOK)) ? 0 : M_FULL_MSG,\n\t\t\t\t  err)) == NULL)\n      goto error;\n  }\n  else\n  {\n    /* Hooks not allowing full patterns: Check syntax of regexp */\n    rx = safe_malloc (sizeof (regex_t));\n#ifdef M_CRYPTHOOK\n    if ((rc = REGCOMP (rx, NONULL(pattern.data), ((data & (M_CRYPTHOOK|M_CHARSETHOOK|M_ICONVHOOK)) ? REG_ICASE : 0))) != 0)\n#else\n    if ((rc = REGCOMP (rx, NONULL(pattern.data), (data & (M_CHARSETHOOK|M_ICONVHOOK)) ? REG_ICASE : 0)) != 0)\n#endif /* M_CRYPTHOOK */\n    {\n      regerror (rc, rx, err->data, err->dsize);\n      FREE (&rx);\n      goto error;\n    }\n  }\n\n  if (ptr)\n  {\n    ptr->next = safe_calloc (1, sizeof (HOOK));\n    ptr = ptr->next;\n  }\n  else\n    Hooks = ptr = safe_calloc (1, sizeof (HOOK));\n  ptr->type = data;\n  ptr->command = command.data;\n  ptr->pattern = pat;\n  ptr->rx.pattern = pattern.data;\n  ptr->rx.rx = rx;\n  ptr->rx.not = not;\n  return 0;\n\nerror:\n  FREE (&pattern.data);\n  FREE (&command.data);\n  return (-1);\n}\n\nstatic void delete_hook (HOOK *h)\n{\n  FREE (&h->command);\n  FREE (&h->rx.pattern);\n  if (h->rx.rx)\n  {\n    regfree (h->rx.rx);\n  }\n  mutt_pattern_free (&h->pattern);\n  FREE (&h);\n}\n\n/* Deletes all hooks of type ``type'', or all defined hooks if ``type'' is 0 */\nstatic void delete_hooks (int type)\n{\n  HOOK *h;\n  HOOK *prev;\n\n  while (h = Hooks, h && (type == 0 || type == h->type))\n  {\n    Hooks = h->next;\n    delete_hook (h);\n  }\n\n  prev = h; /* Unused assignment to avoid compiler warnings */\n\n  while (h)\n  {\n    if (type == h->type)\n    {\n      prev->next = h->next;\n      delete_hook (h);\n    }\n    else\n      prev = h;\n    h = prev->next;\n  }\n}\n\nint mutt_parse_unhook (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  while (MoreArgs (s))\n  {\n    mutt_extract_token (buf, s, 0);\n    if (mutt_strcmp (\"*\", buf->data) == 0)\n    {\n      if (current_hook_type)\n      {\n\tsnprintf (err->data, err->dsize,\n\t\t  _(\"unhook: Can't do unhook * from within a hook.\"));\n\treturn -1;\n      }\n      delete_hooks (0);\n    }\n    else\n    {\n      int type = mutt_get_hook_type (buf->data);\n\n      if (!type)\n      {\n\tsnprintf (err->data, err->dsize,\n\t\t _(\"unhook: unknown hook type: %s\"), buf->data);\n\treturn (-1);\n      }\n      if (current_hook_type == type)\n      {\n\tsnprintf (err->data, err->dsize,\n\t\t  _(\"unhook: Can't delete a %s from within a %s.\"),\n\t\t  buf->data, buf->data);\n\treturn -1;\n      }\n      delete_hooks (type);\n    }\n  }\n  return 0;\n}\n\nvoid mutt_folder_hook (char *path)\n{\n  HOOK *tmp = Hooks;\n  BUFFER err, token;\n\n  current_hook_type = M_FOLDERHOOK;\n\n  mutt_buffer_init (&err);\n  err.dsize = STRING;\n  err.data = safe_malloc (err.dsize);\n  mutt_buffer_init (&token);\n  for (; tmp; tmp = tmp->next)\n  {\n    if(!tmp->command)\n      continue;\n\n    if (tmp->type & M_FOLDERHOOK)\n    {\n      if ((regexec (tmp->rx.rx, path, 0, NULL, 0) == 0) ^ tmp->rx.not)\n      {\n\tif (mutt_parse_rc_line (tmp->command, &token, &err) == -1)\n\t{\n\t  mutt_error (\"%s\", err.data);\n\t  FREE (&token.data);\n\t  mutt_sleep (1);\t/* pause a moment to let the user see the error */\n\t  current_hook_type = 0;\n\t  FREE (&err.data);\n\n\t  return;\n\t}\n      }\n    }\n  }\n  FREE (&token.data);\n  FREE (&err.data);\n  \n  current_hook_type = 0;\n}\n\nchar *mutt_find_hook (int type, const char *pat)\n{\n  HOOK *tmp = Hooks;\n\n  for (; tmp; tmp = tmp->next)\n    if (tmp->type & type)\n    {\n      if (regexec (tmp->rx.rx, pat, 0, NULL, 0) == 0)\n\treturn (tmp->command);\n    }\n  return (NULL);\n}\n\nvoid mutt_message_hook (CONTEXT *ctx, HEADER *hdr, int type)\n{\n  BUFFER err, token;\n  HOOK *hook;\n\n  current_hook_type = type;\n\n  mutt_buffer_init (&err);\n  err.dsize = STRING;\n  err.data = safe_malloc (err.dsize);\n  mutt_buffer_init (&token);\n  for (hook = Hooks; hook; hook = hook->next)\n  {\n    if(!hook->command)\n      continue;\n\n    if (hook->type & type)\n      if ((mutt_pattern_exec (hook->pattern, 0, ctx, hdr) > 0) ^ hook->rx.not)\n\tif (mutt_parse_rc_line (hook->command, &token, &err) != 0)\n\t{\n\t  FREE (&token.data);\n\t  mutt_error (\"%s\", err.data);\n\t  mutt_sleep (1);\n\t  current_hook_type = 0;\n\t  FREE (&err.data);\n\n\t  return;\n\t}\n  }\n  FREE (&token.data);\n  FREE (&err.data);\n\n  current_hook_type = 0;\n}\n\nstatic int\nmutt_addr_hook (char *path, size_t pathlen, int type, CONTEXT *ctx, HEADER *hdr)\n{\n  HOOK *hook;\n\n  /* determine if a matching hook exists */\n  for (hook = Hooks; hook; hook = hook->next)\n  {\n    if(!hook->command)\n      continue;\n\n    if (hook->type & type)\n      if ((mutt_pattern_exec (hook->pattern, 0, ctx, hdr) > 0) ^ hook->rx.not)\n      {\n\tmutt_make_string (path, pathlen, hook->command, ctx, hdr);\n\treturn 0;\n      }\n  }\n\n  return -1;\n}\n\nvoid mutt_default_save (char *path, size_t pathlen, HEADER *hdr)\n{\n  *path = 0;\n  if (mutt_addr_hook (path, pathlen, M_SAVEHOOK, Context, hdr) != 0)\n  {\n    char tmp[_POSIX_PATH_MAX];\n    ADDRESS *adr;\n    ENVELOPE *env = hdr->env;\n    int fromMe = mutt_addr_is_user (env->from);\n\n    if (!fromMe && env->reply_to && env->reply_to->mailbox)\n      adr = env->reply_to;\n    else if (!fromMe && env->from && env->from->mailbox)\n      adr = env->from;\n    else if (env->to && env->to->mailbox)\n      adr = env->to;\n    else if (env->cc && env->cc->mailbox)\n      adr = env->cc;\n    else\n      adr = NULL;\n    if (adr)\n    {\n      mutt_safe_path (tmp, sizeof (tmp), adr);\n      snprintf (path, pathlen, \"=%s\", tmp);\n    }\n  }\n}\n\nvoid mutt_select_fcc (char *path, size_t pathlen, HEADER *hdr)\n{\n  ADDRESS *adr;\n  char buf[_POSIX_PATH_MAX];\n  ENVELOPE *env = hdr->env;\n\n  if (mutt_addr_hook (path, pathlen, M_FCCHOOK, NULL, hdr) != 0)\n  {\n    if ((option (OPTSAVENAME) || option (OPTFORCENAME)) &&\n\t(env->to || env->cc || env->bcc))\n    {\n      adr = env->to ? env->to : (env->cc ? env->cc : env->bcc);\n      mutt_safe_path (buf, sizeof (buf), adr);\n      mutt_concat_path (path, NONULL(Maildir), buf, pathlen);\n      if (!option (OPTFORCENAME) && mx_access (path, W_OK) != 0)\n\tstrfcpy (path, NONULL (Outbox), pathlen);\n    }\n    else\n      strfcpy (path, NONULL (Outbox), pathlen);\n  }\n  mutt_pretty_mailbox (path, pathlen);\n}\n\nstatic char *_mutt_string_hook (const char *match, int hook)\n{\n  HOOK *tmp = Hooks;\n\n  for (; tmp; tmp = tmp->next)\n  {\n    if ((tmp->type & hook) && ((match &&\n\t regexec (tmp->rx.rx, match, 0, NULL, 0) == 0) ^ tmp->rx.not))\n      return (tmp->command);\n  }\n  return (NULL);\n}\n\nstatic LIST *_mutt_list_hook (const char *match, int hook)\n{\n  HOOK *tmp = Hooks;\n  LIST *matches = NULL;\n\n  for (; tmp; tmp = tmp->next)\n  {\n    if ((tmp->type & hook) &&\n        ((match && regexec (tmp->rx.rx, match, 0, NULL, 0) == 0) ^ tmp->rx.not))\n      matches = mutt_add_list (matches, tmp->command);\n  }\n  return (matches);\n}\n\nchar *mutt_charset_hook (const char *chs)\n{\n  return _mutt_string_hook (chs, M_CHARSETHOOK);\n}\n\nchar *mutt_iconv_hook (const char *chs)\n{\n  return _mutt_string_hook (chs, M_ICONVHOOK);\n}\n\nLIST *mutt_crypt_hook (ADDRESS *adr)\n{\n  return _mutt_list_hook (adr->mailbox, M_CRYPTHOOK);\n}\n\n#ifdef USE_SOCKET\nvoid mutt_account_hook (const char* url)\n{\n  /* parsing commands with URLs in an account hook can cause a recursive\n   * call. We just skip processing if this occurs. Typically such commands\n   * belong in a folder-hook -- perhaps we should warn the user. */\n  static int inhook = 0;\n\n  HOOK* hook;\n  BUFFER token;\n  BUFFER err;\n\n  if (inhook)\n    return;\n\n  mutt_buffer_init (&err);\n  err.dsize = STRING;\n  err.data = safe_malloc (err.dsize);\n  mutt_buffer_init (&token);\n\n  for (hook = Hooks; hook; hook = hook->next)\n  {\n    if (! (hook->command && (hook->type & M_ACCOUNTHOOK)))\n      continue;\n\n    if ((regexec (hook->rx.rx, url, 0, NULL, 0) == 0) ^ hook->rx.not)\n    {\n      inhook = 1;\n\n      if (mutt_parse_rc_line (hook->command, &token, &err) == -1)\n      {\n\tFREE (&token.data);\n\tmutt_error (\"%s\", err.data);\n\tFREE (&err.data);\n\tmutt_sleep (1);\n\n        inhook = 0;\n\treturn;\n      }\n\n      inhook = 0;\n    }\n  }\n\n  FREE (&token.data);\n  FREE (&err.data);\n}\n#endif\n"
  },
  {
    "path": "imap/Makefile.am",
    "content": "## Process this file with automake to produce Makefile.in\ninclude $(top_srcdir)/flymake.am\n\nAUTOMAKE_OPTIONS = 1.6 foreign\n\nif USE_GSS\nGSSSOURCES = auth_gss.c\nendif\n\nif USE_SASL\nAUTHENTICATORS = auth_sasl.c\nelse\nAUTHENTICATORS = auth_anon.c auth_cram.c\nendif\n\nEXTRA_DIST = README TODO auth_anon.c auth_cram.c auth_gss.c auth_sasl.c\n\nAM_CPPFLAGS = -I$(top_srcdir) -I../intl\n\nnoinst_LIBRARIES = libimap.a\nnoinst_HEADERS = auth.h imap_private.h message.h\n\nlibimap_a_SOURCES = auth.c auth_login.c browse.c command.c imap.c imap.h \\\n\tmessage.c utf7.c util.c $(AUTHENTICATORS) $(GSSSOURCES)\n"
  },
  {
    "path": "imap/README",
    "content": "IMAP in mutt should be considered beta quality. For the most part it\nworks well, but it is still not quite as stable or as full-featured\nas some of the other drivers. I believe it is now acceptable for\ndaily use (and that's how I use it now, currently against Cyrus 1.6.24 and\npreviously against UW-IMAP 4.7 and 2000).\n\nYou may still lose some work if you are suddenly disconnected from your\nserver (but your mailboxes should be fine). Currently accessing the same\nIMAP folder with multiple clients is not supported - it may work, but\nno guarantees. There are still several non-critical known bugs, see\nhttp://bugs.guug.de/ for the current list.\n\nYou may also be disappointed in mutt's handling of very large IMAP mailboxes.\nTo build the message index mutt must fetch a subset of headers from every\nmessage in the mailbox, which costs time and network traffic linear to the\nnumber of messages in your mailbox.\n\nNevertheless in general mutt is quite a fast and fully-featured IMAP client.\nIt tries to be polite to IMAP servers as well, opening few connections and\navoiding needless polls of the server, unlike certain other popular IMAP\nclients by certain large corporations :)\n\nMutt supports almost all official authentication and security protocols for\nIMAP, including SSL/TLS, native CRAM-MD5 and GSSAPI routines, and a SASL\nplugin which can handle just about everything else.\n\nPlease report bugs to mutt-dev@mutt.org and/or brendan@kublai.com. Version,\noptions, stack-trace and .muttdebug files are a plus.\n\nBrendan Cully <brendan@kublai.com>\n20010506\n"
  },
  {
    "path": "imap/TODO",
    "content": "IMAP enhancements, by priority:\n\n[ -- socket -- ]\n\n* Smarter connection code. Mutt should handle dropped connections/routing\n  problems gracefully. It should be able to transparently reconnect. This\n  is facilitated by the next item.\n\n* Interruptible socket calls, preferably without having to abort the\n  connection. For example large downloads could be chunked.\n\n[ -- browsing -- ]\n\n* We should maybe add a new imap_format string for IMAP browsing, without all\n  the stat variables but with tags like how many messages are in the folders,\n  how many subfolders, that weird \\Marked tag, etc.\n \n[ -- speed -- ]\n\n* Partial index loading, using server-side threading and sorting\n\n* Partial message loading, including parsing BODYSTRUCTURE for the\n  view-attachments menu\n\n* Disconnected mode, probably based on an augmented header cache\n\n[ -- new mail detection -- ]\n\n* Possibly opening multiple connections for mailbox polling, now that\n  we have IDLE support.\n\nBrendan Cully <brendan@kublai.com>\nUpdated: 20070409\n"
  },
  {
    "path": "imap/auth.c",
    "content": "/*\n * Copyright (C) 1996-1998 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1996-1999 Brandon Long <blong@fiction.net>\n * Copyright (C) 1999-2001 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* IMAP login/authentication code */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"imap_private.h\"\n#include \"auth.h\"\n\nstatic const imap_auth_t imap_authenticators[] = {\n#ifdef USE_SASL\n  { imap_auth_sasl, NULL },\n#else\n  { imap_auth_anon, \"anonymous\" },\n#endif\n#ifdef USE_GSS\n  { imap_auth_gss, \"gssapi\" },\n#endif\n  /* SASL includes CRAM-MD5 (and GSSAPI, but that's not enabled by default) */\n#ifndef USE_SASL\n  { imap_auth_cram_md5, \"cram-md5\" },\n#endif\n  { imap_auth_login, \"login\" },\n\n  { NULL, NULL }\n};\n\n/* imap_authenticate: Attempt to authenticate using either user-specified\n *   authentication method if specified, or any. */\nint imap_authenticate (IMAP_DATA* idata)\n{\n  const imap_auth_t* authenticator;\n  char* methods;\n  char* method;\n  char* delim;\n  int r = -1;\n\n  if (ImapAuthenticators && *ImapAuthenticators)\n  {\n    /* Try user-specified list of authentication methods */\n    methods = safe_strdup (ImapAuthenticators);\n\n    for (method = methods; method; method = delim)\n    {\n      delim = strchr (method, ':');\n      if (delim)\n\t*delim++ = '\\0';\n      if (! method[0])\n\tcontinue;\n      \n      dprint (2, (debugfile, \"imap_authenticate: Trying method %s\\n\", method));\n      authenticator = imap_authenticators;\n\n      while (authenticator->authenticate)\n      {\n\tif (!authenticator->method ||\n\t    !ascii_strcasecmp (authenticator->method, method))\n\t  if ((r = authenticator->authenticate (idata, method)) !=\n\t      IMAP_AUTH_UNAVAIL)\n\t  {\n\t    FREE (&methods);\n\t    return r;\n\t  }\n\t\n\tauthenticator++;\n      }\n    }\n\n    FREE (&methods);\n  }\n  else\n  {\n    /* Fall back to default: any authenticator */\n    dprint (2, (debugfile, \"imap_authenticate: Using any available method.\\n\"));\n    authenticator = imap_authenticators;\n\n    while (authenticator->authenticate)\n    {\n      if ((r = authenticator->authenticate (idata, NULL)) != IMAP_AUTH_UNAVAIL)\n\treturn r;\n      authenticator++;\n    }\n  }\n\n  if (r == IMAP_AUTH_UNAVAIL)\n  {\n    mutt_error (_(\"No authenticators available\"));\n    mutt_sleep (1);\n  }\n  \n  return r;\n}\n"
  },
  {
    "path": "imap/auth.h",
    "content": "/*\n * Copyright (C) 2000-2001 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* common defs for authenticators. A good place to set up a generic callback\n * system */\n\n#ifndef _IMAP_AUTH_H\n#define _IMAP_AUTH_H 1\n\ntypedef enum\n{\n  IMAP_AUTH_SUCCESS = 0,\n  IMAP_AUTH_FAILURE,\n  IMAP_AUTH_UNAVAIL\n} imap_auth_res_t;\n\n\ntypedef struct\n{\n  /* do authentication, using named method or any available if method is NULL */\n  imap_auth_res_t (*authenticate) (IMAP_DATA* idata, const char* method);\n  /* name of authentication method supported, NULL means variable. If this\n   * is not null, authenticate may ignore the second parameter. */\n  const char* method;\n} imap_auth_t;\n\n/* external authenticator prototypes */\n#ifndef USE_SASL\nimap_auth_res_t imap_auth_anon (IMAP_DATA* idata, const char* method);\nimap_auth_res_t imap_auth_cram_md5 (IMAP_DATA* idata, const char* method);\n#endif\nimap_auth_res_t imap_auth_login (IMAP_DATA* idata, const char* method);\n#ifdef USE_GSS\nimap_auth_res_t imap_auth_gss (IMAP_DATA* idata, const char* method);\n#endif\n#ifdef USE_SASL\nimap_auth_res_t imap_auth_sasl (IMAP_DATA* idata, const char* method);\n#endif\n\n#endif /* _IMAP_AUTH_H */\n"
  },
  {
    "path": "imap/auth_anon.c",
    "content": "/*\n * Copyright (C) 1999-2001,2005 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* IMAP login/authentication code */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"imap_private.h\"\n#include \"auth.h\"\n\n/* this is basically a stripped-down version of the cram-md5 method. */\nimap_auth_res_t imap_auth_anon (IMAP_DATA* idata, const char* method)\n{\n  int rc;\n\n  if (!mutt_bit_isset (idata->capabilities, AUTH_ANON))\n    return IMAP_AUTH_UNAVAIL;\n\n  if (mutt_account_getuser (&idata->conn->account))\n    return IMAP_AUTH_FAILURE;\n\n  if (idata->conn->account.user[0] != '\\0')\n    return IMAP_AUTH_UNAVAIL;\n\n  mutt_message _(\"Authenticating (anonymous)...\");\n\n  imap_cmd_start (idata, \"AUTHENTICATE ANONYMOUS\");\n\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n\n  if (rc != IMAP_CMD_RESPOND)\n  {\n    dprint (1, (debugfile, \"Invalid response from server.\\n\"));\n    goto bail;\n  }\n\n  mutt_socket_write (idata->conn, \"ZHVtbXkK\\r\\n\"); /* base64 (\"dummy\") */\n\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n  \n  if (rc != IMAP_CMD_OK)\n  {\n    dprint (1, (debugfile, \"Error receiving server response.\\n\"));\n    goto bail;\n  }\n\n  if (imap_code (idata->buf))\n    return IMAP_AUTH_SUCCESS;\n\n bail:\n  mutt_error _(\"Anonymous authentication failed.\");\n  mutt_sleep (2);\n  return IMAP_AUTH_FAILURE;\n}\n"
  },
  {
    "path": "imap/auth_cram.c",
    "content": "/*\n * Copyright (C) 1999-2001,2005 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* IMAP login/authentication code */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"imap_private.h\"\n#include \"auth.h\"\n#include \"md5.h\"\n\n#define MD5_BLOCK_LEN 64\n#define MD5_DIGEST_LEN 16\n\n/* forward declarations */\nstatic void hmac_md5 (const char* password, char* challenge,\n  unsigned char* response);\n\n/* imap_auth_cram_md5: AUTH=CRAM-MD5 support. */\nimap_auth_res_t imap_auth_cram_md5 (IMAP_DATA* idata, const char* method)\n{\n  char ibuf[LONG_STRING*2], obuf[LONG_STRING];\n  unsigned char hmac_response[MD5_DIGEST_LEN];\n  int len;\n  int rc;\n\n  if (!mutt_bit_isset (idata->capabilities, ACRAM_MD5))\n    return IMAP_AUTH_UNAVAIL;\n\n  mutt_message _(\"Authenticating (CRAM-MD5)...\");\n\n  /* get auth info */\n  if (mutt_account_getlogin (&idata->conn->account))\n    return IMAP_AUTH_FAILURE;\n  if (mutt_account_getpass (&idata->conn->account))\n    return IMAP_AUTH_FAILURE;\n\n  imap_cmd_start (idata, \"AUTHENTICATE CRAM-MD5\");\n\n  /* From RFC 2195:\n   * The data encoded in the first ready response contains a presumptively\n   * arbitrary string of random digits, a timestamp, and the fully-qualified\n   * primary host name of the server. The syntax of the unencoded form must\n   * correspond to that of an RFC 822 'msg-id' [RFC822] as described in [POP3].\n   */\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n  \n  if (rc != IMAP_CMD_RESPOND)\n  {\n    dprint (1, (debugfile, \"Invalid response from server: %s\\n\", ibuf));\n    goto bail;\n  }\n\n  if ((len = mutt_from_base64 (obuf, idata->buf + 2)) == -1)\n  {\n    dprint (1, (debugfile, \"Error decoding base64 response.\\n\"));\n    goto bail;\n  }\n\n  obuf[len] = '\\0';\n  dprint (2, (debugfile, \"CRAM challenge: %s\\n\", obuf));\n\n  /* The client makes note of the data and then responds with a string\n   * consisting of the user name, a space, and a 'digest'. The latter is\n   * computed by applying the keyed MD5 algorithm from [KEYED-MD5] where the\n   * key is a shared secret and the digested text is the timestamp (including\n   * angle-brackets).\n   * \n   * Note: The user name shouldn't be quoted. Since the digest can't contain\n   *   spaces, there is no ambiguity. Some servers get this wrong, we'll work\n   *   around them when the bug report comes in. Until then, we'll remain\n   *   blissfully RFC-compliant.\n   */\n  hmac_md5 (idata->conn->account.pass, obuf, hmac_response);\n  /* dubious optimisation I saw elsewhere: make the whole string in one call */\n  snprintf (obuf, sizeof (obuf),\n    \"%s %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\",\n    idata->conn->account.user,\n    hmac_response[0], hmac_response[1], hmac_response[2], hmac_response[3],\n    hmac_response[4], hmac_response[5], hmac_response[6], hmac_response[7],\n    hmac_response[8], hmac_response[9], hmac_response[10], hmac_response[11],\n    hmac_response[12], hmac_response[13], hmac_response[14], hmac_response[15]);\n  dprint(2, (debugfile, \"CRAM response: %s\\n\", obuf));\n\n  /* XXX - ibuf must be long enough to store the base64 encoding of obuf, \n   * plus the additional debris\n   */\n  \n  mutt_to_base64 ((unsigned char*) ibuf, (unsigned char*) obuf, strlen (obuf),\n\t\t  sizeof (ibuf) - 2);\n  safe_strcat (ibuf, sizeof (ibuf), \"\\r\\n\");\n  mutt_socket_write (idata->conn, ibuf);\n\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n\n  if (rc != IMAP_CMD_OK)\n  {\n    dprint (1, (debugfile, \"Error receiving server response.\\n\"));\n    goto bail;\n  }\n\n  if (imap_code (idata->buf))\n    return IMAP_AUTH_SUCCESS;\n\n bail:\n  mutt_error _(\"CRAM-MD5 authentication failed.\");\n  mutt_sleep (2);\n  return IMAP_AUTH_FAILURE;\n}\n\n/* hmac_md5: produce CRAM-MD5 challenge response. */\nstatic void hmac_md5 (const char* password, char* challenge,\n  unsigned char* response)\n{\n  struct md5_ctx ctx;\n  unsigned char ipad[MD5_BLOCK_LEN], opad[MD5_BLOCK_LEN];\n  unsigned char secret[MD5_BLOCK_LEN+1];\n  unsigned char hash_passwd[MD5_DIGEST_LEN];\n  unsigned int secret_len, chal_len;\n  int i;\n\n  secret_len = strlen (password);\n  chal_len = strlen (challenge);\n\n  /* passwords longer than MD5_BLOCK_LEN bytes are substituted with their MD5\n   * digests */\n  if (secret_len > MD5_BLOCK_LEN)\n  {\n    md5_buffer (password, secret_len, hash_passwd);\n    strfcpy ((char*) secret, (char*) hash_passwd, MD5_DIGEST_LEN);\n    secret_len = MD5_DIGEST_LEN;\n  }\n  else\n    strfcpy ((char *) secret, password, sizeof (secret));\n\n  memset (ipad, 0, sizeof (ipad));\n  memset (opad, 0, sizeof (opad));\n  memcpy (ipad, secret, secret_len);\n  memcpy (opad, secret, secret_len);\n\n  for (i = 0; i < MD5_BLOCK_LEN; i++)\n  {\n    ipad[i] ^= 0x36;\n    opad[i] ^= 0x5c;\n  }\n\n  /* inner hash: challenge and ipadded secret */\n  md5_init_ctx (&ctx);\n  md5_process_bytes (ipad, MD5_BLOCK_LEN, &ctx);\n  md5_process_bytes (challenge, chal_len, &ctx);\n  md5_finish_ctx (&ctx, response);\n\n  /* outer hash: inner hash and opadded secret */\n  md5_init_ctx (&ctx);\n  md5_process_bytes (opad, MD5_BLOCK_LEN, &ctx);\n  md5_process_bytes (response, MD5_DIGEST_LEN, &ctx);\n  md5_finish_ctx (&ctx, response);\n}\n"
  },
  {
    "path": "imap/auth_gss.c",
    "content": "/*\n * Copyright (C) 1999-2001,2005,2009 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* GSS login/authentication code */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"imap_private.h\"\n#include \"auth.h\"\n\n#include <netinet/in.h>\n\n#ifdef HAVE_HEIMDAL\n#  include <gssapi/gssapi.h>\n#  define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE\n#else\n#  include <gssapi/gssapi.h>\n#  include <gssapi/gssapi_generic.h>\n#endif\n\n#define GSS_BUFSIZE 8192\n\n#define GSS_AUTH_P_NONE      1\n#define GSS_AUTH_P_INTEGRITY 2\n#define GSS_AUTH_P_PRIVACY   4\nstatic void print_gss_error(OM_uint32 err_maj, OM_uint32 err_min)\n{\n\tOM_uint32 maj_stat, min_stat; \n\tOM_uint32 msg_ctx = 0;\n\tgss_buffer_desc status_string;\n\tchar buf_maj[512];\n\tchar buf_min[512];\n\t\n\tdo\n\t{\n\t\tmaj_stat = gss_display_status (&min_stat,\n\t\t\t\t\t       err_maj,\n\t\t\t\t\t       GSS_C_GSS_CODE,\n\t\t\t\t\t       GSS_C_NO_OID,\n\t\t\t\t\t       &msg_ctx,\n\t\t\t\t\t       &status_string);\n\t\tif (GSS_ERROR(maj_stat))\n\t\t\tbreak;\n\t\tstrncpy(buf_maj, (char*) status_string.value, sizeof(buf_maj));\n\t\tgss_release_buffer(&min_stat, &status_string);\n\t\t\n\t\tmaj_stat = gss_display_status (&min_stat,\n\t\t\t\t\t       err_min,\n\t\t\t\t\t       GSS_C_MECH_CODE,\n\t\t\t\t\t       GSS_C_NULL_OID,\n\t\t\t\t\t       &msg_ctx,\n\t\t\t\t\t       &status_string);\n\t\tif (!GSS_ERROR(maj_stat))\n\t\t{\n\t\t\tstrncpy(buf_min, (char*) status_string.value, sizeof(buf_min));\n\t\t\tgss_release_buffer(&min_stat, &status_string);\n\t\t}\n\t} while (!GSS_ERROR(maj_stat) && msg_ctx != 0);\n\t\n\tdprint (2, (debugfile, \"((%s:%d )(%s:%d))\", buf_maj, err_maj, buf_min, err_min));\n}\n\n/* imap_auth_gss: AUTH=GSSAPI support. */\nimap_auth_res_t imap_auth_gss (IMAP_DATA* idata, const char* method)\n{\n  gss_buffer_desc request_buf, send_token;\n  gss_buffer_t sec_token;\n  gss_name_t target_name;\n  gss_ctx_id_t context;\n#ifdef DEBUG\n  gss_OID mech_name;\n  char server_conf_flags;\n#endif\n  gss_qop_t quality;\n  int cflags;\n  OM_uint32 maj_stat, min_stat;\n  char buf1[GSS_BUFSIZE], buf2[GSS_BUFSIZE];\n  unsigned long buf_size;\n  int rc;\n\n  if (!mutt_bit_isset (idata->capabilities, AGSSAPI))\n    return IMAP_AUTH_UNAVAIL;\n\n  if (mutt_account_getuser (&idata->conn->account))\n    return IMAP_AUTH_FAILURE;\n  \n  /* get an IMAP service ticket for the server */\n  snprintf (buf1, sizeof (buf1), \"imap@%s\", idata->conn->account.host);\n  request_buf.value = buf1;\n  request_buf.length = strlen (buf1) + 1;\n  maj_stat = gss_import_name (&min_stat, &request_buf, gss_nt_service_name,\n    &target_name);\n  if (maj_stat != GSS_S_COMPLETE)\n  {\n    dprint (2, (debugfile, \"Couldn't get service name for [%s]\\n\", buf1));\n    return IMAP_AUTH_UNAVAIL;\n  }\n#ifdef DEBUG\t\n  else if (debuglevel >= 2)\n  {\n    maj_stat = gss_display_name (&min_stat, target_name, &request_buf,\n      &mech_name);\n    dprint (2, (debugfile, \"Using service name [%s]\\n\",\n      (char*) request_buf.value));\n    maj_stat = gss_release_buffer (&min_stat, &request_buf);\n  }\n#endif\n  /* Acquire initial credentials - without a TGT GSSAPI is UNAVAIL */\n  sec_token = GSS_C_NO_BUFFER;\n  context = GSS_C_NO_CONTEXT;\n\n  /* build token */\n  maj_stat = gss_init_sec_context (&min_stat, GSS_C_NO_CREDENTIAL, &context,\n    target_name, GSS_C_NO_OID, GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG, 0, \n    GSS_C_NO_CHANNEL_BINDINGS, sec_token, NULL, &send_token,\n    (unsigned int*) &cflags, NULL);\n  if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CONTINUE_NEEDED)\n  {\n    print_gss_error(maj_stat, min_stat);\n    dprint (1, (debugfile, \"Error acquiring credentials - no TGT?\\n\"));\n    gss_release_name (&min_stat, &target_name);\n\n    return IMAP_AUTH_UNAVAIL;\n  }\n\n  /* now begin login */\n  mutt_message _(\"Authenticating (GSSAPI)...\");\n\n  imap_cmd_start (idata, \"AUTHENTICATE GSSAPI\");\n\n  /* expect a null continuation response (\"+\") */\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n\n  if (rc != IMAP_CMD_RESPOND)\n  {\n    dprint (2, (debugfile, \"Invalid response from server: %s\\n\", buf1));\n    gss_release_name (&min_stat, &target_name);\n    goto bail;\n  }\n\n  /* now start the security context initialisation loop... */\n  dprint (2, (debugfile, \"Sending credentials\\n\"));\n  mutt_to_base64 ((unsigned char*) buf1, send_token.value, send_token.length,\n    sizeof (buf1) - 2);\n  gss_release_buffer (&min_stat, &send_token);\n  safe_strcat (buf1, sizeof (buf1), \"\\r\\n\");\n  mutt_socket_write (idata->conn, buf1);\n\n  while (maj_stat == GSS_S_CONTINUE_NEEDED)\n  {\n    /* Read server data */\n    do\n      rc = imap_cmd_step (idata);\n    while (rc == IMAP_CMD_CONTINUE);\n\n    if (rc != IMAP_CMD_RESPOND)\n    {\n      dprint (1, (debugfile, \"Error receiving server response.\\n\"));\n      gss_release_name (&min_stat, &target_name);\n      goto bail;\n    }\n\n    request_buf.length = mutt_from_base64 (buf2, idata->buf + 2);\n    request_buf.value = buf2;\n    sec_token = &request_buf;\n\n    /* Write client data */\n    maj_stat = gss_init_sec_context (&min_stat, GSS_C_NO_CREDENTIAL, &context,\n      target_name, GSS_C_NO_OID, GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG, 0, \n      GSS_C_NO_CHANNEL_BINDINGS, sec_token, NULL, &send_token,\n      (unsigned int*) &cflags, NULL);\n    if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CONTINUE_NEEDED)\n    {\n      print_gss_error(maj_stat, min_stat);\n      dprint (1, (debugfile, \"Error exchanging credentials\\n\"));\n      gss_release_name (&min_stat, &target_name);\n\n      goto err_abort_cmd;\n    }\n    mutt_to_base64 ((unsigned char*) buf1, send_token.value,\n      send_token.length, sizeof (buf1) - 2);\n    gss_release_buffer (&min_stat, &send_token);\n    safe_strcat (buf1, sizeof (buf1), \"\\r\\n\");\n    mutt_socket_write (idata->conn, buf1);\n  }\n\n  gss_release_name (&min_stat, &target_name);\n\n  /* get security flags and buffer size */\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n\n  if (rc != IMAP_CMD_RESPOND)\n  {\n    dprint (1, (debugfile, \"Error receiving server response.\\n\"));\n    goto bail;\n  }\n  request_buf.length = mutt_from_base64 (buf2, idata->buf + 2);\n  request_buf.value = buf2;\n\n  maj_stat = gss_unwrap (&min_stat, context, &request_buf, &send_token,\n    &cflags, &quality);\n  if (maj_stat != GSS_S_COMPLETE)\n  {\n    print_gss_error(maj_stat, min_stat);\n    dprint (2, (debugfile, \"Couldn't unwrap security level data\\n\"));\n    gss_release_buffer (&min_stat, &send_token);\n    goto err_abort_cmd;\n  }\n  dprint (2, (debugfile, \"Credential exchange complete\\n\"));\n\n  /* first octet is security levels supported. We want NONE */\n#ifdef DEBUG\n  server_conf_flags = ((char*) send_token.value)[0];\n#endif\n  if ( !(((char*) send_token.value)[0] & GSS_AUTH_P_NONE) )\n  {\n    dprint (2, (debugfile, \"Server requires integrity or privacy\\n\"));\n    gss_release_buffer (&min_stat, &send_token);\n    goto err_abort_cmd;\n  }\n\n  /* we don't care about buffer size if we don't wrap content. But here it is */\n  ((char*) send_token.value)[0] = 0;\n  buf_size = ntohl (*((long *) send_token.value));\n  gss_release_buffer (&min_stat, &send_token);\n  dprint (2, (debugfile, \"Unwrapped security level flags: %c%c%c\\n\",\n    server_conf_flags & GSS_AUTH_P_NONE      ? 'N' : '-',\n    server_conf_flags & GSS_AUTH_P_INTEGRITY ? 'I' : '-',\n    server_conf_flags & GSS_AUTH_P_PRIVACY   ? 'P' : '-'));\n  dprint (2, (debugfile, \"Maximum GSS token size is %ld\\n\", buf_size));\n\n  /* agree to terms (hack!) */\n  buf_size = htonl (buf_size); /* not relevant without integrity/privacy */\n  memcpy (buf1, &buf_size, 4);\n  buf1[0] = GSS_AUTH_P_NONE;\n  /* server decides if principal can log in as user */\n  strncpy (buf1 + 4, idata->conn->account.user, sizeof (buf1) - 4);\n  request_buf.value = buf1;\n  request_buf.length = 4 + strlen (idata->conn->account.user) + 1;\n  maj_stat = gss_wrap (&min_stat, context, 0, GSS_C_QOP_DEFAULT, &request_buf,\n    &cflags, &send_token);\n  if (maj_stat != GSS_S_COMPLETE)\n  {\n    dprint (2, (debugfile, \"Error creating login request\\n\"));\n    goto err_abort_cmd;\n  }\n\n  mutt_to_base64 ((unsigned char*) buf1, send_token.value, send_token.length,\n\t\t  sizeof (buf1) - 2);\n  dprint (2, (debugfile, \"Requesting authorisation as %s\\n\",\n    idata->conn->account.user));\n  safe_strcat (buf1, sizeof (buf1), \"\\r\\n\");\n  mutt_socket_write (idata->conn, buf1);\n\n  /* Joy of victory or agony of defeat? */\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n  if (rc == IMAP_CMD_RESPOND)\n  {\n    dprint (1, (debugfile, \"Unexpected server continuation request.\\n\"));\n    goto err_abort_cmd;\n  }\n  if (imap_code (idata->buf))\n  {\n    /* flush the security context */\n    dprint (2, (debugfile, \"Releasing GSS credentials\\n\"));\n    maj_stat = gss_delete_sec_context (&min_stat, &context, &send_token);\n    if (maj_stat != GSS_S_COMPLETE)\n      dprint (1, (debugfile, \"Error releasing credentials\\n\"));\n\n    /* send_token may contain a notification to the server to flush\n     * credentials. RFC 1731 doesn't specify what to do, and since this\n     * support is only for authentication, we'll assume the server knows\n     * enough to flush its own credentials */\n    gss_release_buffer (&min_stat, &send_token);\n\n    return IMAP_AUTH_SUCCESS;\n  }\n  else\n    goto bail;\n\n err_abort_cmd:\n  mutt_socket_write (idata->conn, \"*\\r\\n\");\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n\n bail:\n  mutt_error _(\"GSSAPI authentication failed.\");\n  mutt_sleep (2);\n  return IMAP_AUTH_FAILURE;\n}\n"
  },
  {
    "path": "imap/auth_login.c",
    "content": "/*\n * Copyright (C) 1999-2001,2005,2009 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* plain LOGIN support */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"imap_private.h\"\n#include \"auth.h\"\n\n/* imap_auth_login: Plain LOGIN support */\nimap_auth_res_t imap_auth_login (IMAP_DATA* idata, const char* method)\n{\n  char q_user[SHORT_STRING], q_pass[SHORT_STRING];\n  char buf[STRING];\n  int rc;\n\n  if (mutt_bit_isset (idata->capabilities, LOGINDISABLED))\n  {\n    mutt_message _(\"LOGIN disabled on this server.\");\n    return IMAP_AUTH_UNAVAIL;\n  }\n\n  if (mutt_account_getuser (&idata->conn->account))\n    return IMAP_AUTH_FAILURE;\n  if (mutt_account_getpass (&idata->conn->account))\n    return IMAP_AUTH_FAILURE;\n\n  mutt_message _(\"Logging in...\");\n\n  imap_quote_string (q_user, sizeof (q_user), idata->conn->account.user);\n  imap_quote_string (q_pass, sizeof (q_pass), idata->conn->account.pass);\n\n#ifdef DEBUG\n  /* don't print the password unless we're at the ungodly debugging level\n   * of 5 or higher */\n\n  if (debuglevel < IMAP_LOG_PASS)\n    dprint (2, (debugfile, \"Sending LOGIN command for %s...\\n\",\n      idata->conn->account.user));\n#endif\n\n  snprintf (buf, sizeof (buf), \"LOGIN %s %s\", q_user, q_pass);\n  rc = imap_exec (idata, buf, IMAP_CMD_FAIL_OK | IMAP_CMD_PASS);\n  \n  if (!rc)\n  {\n    mutt_clear_error(); /* clear \"Logging in...\".  fixes #3524 */\n    return IMAP_AUTH_SUCCESS;\n  }\n\n  mutt_error _(\"Login failed.\");\n  mutt_sleep (2);\n  return IMAP_AUTH_FAILURE;\n}\n"
  },
  {
    "path": "imap/auth_sasl.c",
    "content": "/*\n * Copyright (C) 2000-2006,2012 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* SASL login/authentication code */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_sasl.h\"\n#include \"imap_private.h\"\n#include \"auth.h\"\n\n#include <sasl/sasl.h>\n#include <sasl/saslutil.h>\n\n/* imap_auth_sasl: Default authenticator if available. */\nimap_auth_res_t imap_auth_sasl (IMAP_DATA* idata, const char* method)\n{\n  sasl_conn_t* saslconn;\n  sasl_interact_t* interaction = NULL;\n  int rc, irc;\n  char *buf = NULL;\n  size_t bufsize = 0;\n  const char* mech;\n  const char *pc = NULL;\n  unsigned int len, olen;\n  unsigned char client_start;\n\n  if (mutt_sasl_client_new (idata->conn, &saslconn) < 0)\n  {\n    dprint (1, (debugfile,\n      \"imap_auth_sasl: Error allocating SASL connection.\\n\"));\n    return IMAP_AUTH_FAILURE;\n  }\n\n  rc = SASL_FAIL;\n\n  /* If the user hasn't specified a method, use any available */\n  if (!method)\n  {\n    method = idata->capstr;\n\n    /* hack for SASL ANONYMOUS support:\n     * 1. Fetch username. If it's \"\" or \"anonymous\" then\n     * 2. attempt sasl_client_start with only \"AUTH=ANONYMOUS\" capability\n     * 3. if sasl_client_start fails, fall through... */\n\n    if (mutt_account_getuser (&idata->conn->account))\n      return IMAP_AUTH_FAILURE;\n\n    if (mutt_bit_isset (idata->capabilities, AUTH_ANON) &&\n\t(!idata->conn->account.user[0] ||\n\t !ascii_strncmp (idata->conn->account.user, \"anonymous\", 9)))\n      rc = sasl_client_start (saslconn, \"AUTH=ANONYMOUS\", NULL, &pc, &olen, \n                              &mech);\n  } else if (!ascii_strcasecmp (\"login\", method) &&\n\t!strstr (NONULL (idata->capstr), \"AUTH=LOGIN\"))\n    /* do not use SASL login for regular IMAP login (#3556) */\n    return IMAP_AUTH_UNAVAIL;\n  \n  if (rc != SASL_OK && rc != SASL_CONTINUE)\n    do\n    {\n      rc = sasl_client_start (saslconn, method, &interaction,\n        &pc, &olen, &mech);\n      if (rc == SASL_INTERACT)\n\tmutt_sasl_interact (interaction);\n    }\n    while (rc == SASL_INTERACT);\n\n  client_start = (olen > 0);\n\n  if (rc != SASL_OK && rc != SASL_CONTINUE)\n  {\n    if (method)\n      dprint (2, (debugfile, \"imap_auth_sasl: %s unavailable\\n\", method));\n    else\n      dprint (1, (debugfile, \"imap_auth_sasl: Failure starting authentication exchange. No shared mechanisms?\\n\"));\n    /* SASL doesn't support LOGIN, so fall back */\n\n    return IMAP_AUTH_UNAVAIL;\n  }\n\n  mutt_message (_(\"Authenticating (%s)...\"), mech);\n\n  bufsize = ((olen * 2) > LONG_STRING) ? (olen * 2) : LONG_STRING;\n  buf = safe_malloc (bufsize);\n\n  snprintf (buf, bufsize, \"AUTHENTICATE %s\", mech);\n  if (mutt_bit_isset (idata->capabilities, SASL_IR) && client_start)\n  {\n    len = mutt_strlen (buf);\n    buf[len++] = ' ';\n    if (sasl_encode64 (pc, olen, buf + len, bufsize - len, &olen) != SASL_OK)\n    {\n      dprint (1, (debugfile, \"imap_auth_sasl: error base64-encoding client response.\\n\"));\n      goto bail;\n    }\n    client_start = olen = 0;\n  }\n  imap_cmd_start (idata, buf);\n  irc = IMAP_CMD_CONTINUE;\n\n  /* looping protocol */\n  while (rc == SASL_CONTINUE || olen > 0)\n  {\n    do\n      irc = imap_cmd_step (idata);\n    while (irc == IMAP_CMD_CONTINUE);\n\n    if (irc == IMAP_CMD_BAD || irc == IMAP_CMD_NO)\n      goto bail;\n\n    if (irc == IMAP_CMD_RESPOND)\n    {\n      /* Exchange incorrectly returns +\\r\\n instead of + \\r\\n */\n      if (idata->buf[1] == '\\0')\n      {\n\tbuf[0] = '\\0';\n\tlen = 0;\n      }\n      else\n      {\n        len = strlen (idata->buf + 2);\n        if (len > bufsize)\n        {\n          bufsize = len;\n          safe_realloc (&buf, bufsize);\n        }\n        /* For sasl_decode64, the fourth parameter, outmax, doesn't\n         * include space for the trailing null */\n        if (sasl_decode64 (idata->buf+2, len, buf, bufsize - 1, &len) != SASL_OK)\n        {\n          dprint (1, (debugfile, \"imap_auth_sasl: error base64-decoding server response.\\n\"));\n          goto bail;\n        }\n      }\n    }\n\n    /* client-start is only available with the SASL-IR extension, but\n     * SASL 2.1 seems to want to use it regardless, at least for DIGEST\n     * fast reauth. Override if the server sent an initial continuation */\n    if (!client_start || buf[0])\n    {\n      do\n      {\n\trc = sasl_client_step (saslconn, buf, len, &interaction, &pc, &olen);\n\tif (rc == SASL_INTERACT)\n\t  mutt_sasl_interact (interaction);\n      }\n      while (rc == SASL_INTERACT);\n    }\n    else\n      client_start = 0;\n\n    /* send out response, or line break if none needed */\n    if (olen)\n    {\n      if ((olen * 2) > bufsize)\n      {\n        bufsize = olen * 2;\n        safe_realloc (&buf, bufsize);\n      }\n      if (sasl_encode64 (pc, olen, buf, bufsize, &olen) != SASL_OK)\n      {\n\tdprint (1, (debugfile, \"imap_auth_sasl: error base64-encoding client response.\\n\"));\n\tgoto bail;\n      }\n    }\n    \n    if (irc == IMAP_CMD_RESPOND)\n    {\n      strfcpy (buf + olen, \"\\r\\n\", bufsize - olen);\n      mutt_socket_write (idata->conn, buf);\n    }\n\n    /* If SASL has errored out, send an abort string to the server */\n    if (rc < 0)\n    {\n      mutt_socket_write (idata->conn, \"*\\r\\n\");\n      dprint (1, (debugfile, \"imap_auth_sasl: sasl_client_step error %d\\n\",rc));\n    }\n\t  \n    olen = 0;\n  }\n\n  while (irc != IMAP_CMD_OK)\n    if ((irc = imap_cmd_step (idata)) != IMAP_CMD_CONTINUE)\n      break;\n\n  if (rc != SASL_OK)\n    goto bail;\n\n  if (imap_code (idata->buf))\n  {\n    mutt_sasl_setup_conn (idata->conn, saslconn);\n    FREE (&buf);\n    return IMAP_AUTH_SUCCESS;\n  }\n\n bail:\n  sasl_dispose (&saslconn);\n  FREE (&buf);\n\n  if (method)\n  {\n    dprint (2, (debugfile, \"imap_auth_sasl: %s failed\\n\", method));\n    return IMAP_AUTH_UNAVAIL;\n  }\n\n  mutt_error _(\"SASL authentication failed.\");\n  mutt_sleep(2);\n\n  return IMAP_AUTH_FAILURE;\n}\n"
  },
  {
    "path": "imap/browse.c",
    "content": "/*\n * Copyright (C) 1996-1999 Brandon Long <blong@fiction.net>\n * Copyright (C) 1999-2008 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* Mutt browser support routines */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdlib.h>\n#include <ctype.h>\n\n#include \"mutt.h\"\n#include \"imap_private.h\"\n\n/* -- forward declarations -- */\nstatic int browse_add_list_result (IMAP_DATA* idata, const char* cmd,\n  struct browser_state* state, short isparent);\nstatic void imap_add_folder (char delim, char *folder, int noselect,\n  int noinferiors, struct browser_state *state, short isparent);\nstatic int compare_names(struct folder_file *a, struct folder_file *b);\n\n/* imap_browse: IMAP hook into the folder browser, fills out browser_state,\n *   given a current folder to browse */\nint imap_browse (char* path, struct browser_state* state)\n{\n  IMAP_DATA* idata;\n  IMAP_LIST list;\n  char buf[LONG_STRING];\n  char mbox[LONG_STRING];\n  char munged_mbox[LONG_STRING];\n  char list_cmd[5];\n  int n;\n  int nsup;\n  char ctmp;\n  short showparents = 0;\n  int save_lsub;\n  IMAP_MBOX mx;\n\n  if (imap_parse_path (path, &mx))\n  {\n    mutt_error (_(\"%s is an invalid IMAP path\"), path);\n    return -1;\n  }\n\n  save_lsub = option (OPTIMAPCHECKSUBSCRIBED);\n  unset_option (OPTIMAPCHECKSUBSCRIBED);\n  strfcpy (list_cmd, option (OPTIMAPLSUB) ? \"LSUB\" : \"LIST\", sizeof (list_cmd));\n\n  if (!(idata = imap_conn_find (&(mx.account), 0)))\n    goto fail;\n\n  mutt_message _(\"Getting folder list...\");\n\n  /* skip check for parents when at the root */\n  if (mx.mbox && mx.mbox[0] != '\\0')\n  {\n    imap_fix_path (idata, mx.mbox, mbox, sizeof (mbox));\n    n = mutt_strlen (mbox);\n  }\n  else\n  {\n    mbox[0] = '\\0';\n    n = 0;\n  }\n\n  if (n)\n  {\n    int rc;\n    dprint (3, (debugfile, \"imap_browse: mbox: %s\\n\", mbox));\n\n    /* if our target exists and has inferiors, enter it if we\n     * aren't already going to */\n    imap_munge_mbox_name (idata, munged_mbox, sizeof (munged_mbox), mbox);\n    snprintf (buf, sizeof (buf), \"%s \\\"\\\" %s\", list_cmd, munged_mbox);\n    imap_cmd_start (idata, buf);\n    idata->cmdtype = IMAP_CT_LIST;\n    idata->cmddata = &list;\n    do\n    {\n      list.name = 0;\n      rc = imap_cmd_step (idata);\n      if (rc == IMAP_CMD_CONTINUE && list.name)\n      {\n        if (!list.noinferiors && list.name[0] &&\n            !imap_mxcmp (list.name, mbox) &&\n            n < sizeof (mbox) - 1)\n        {\n          mbox[n++] = list.delim;\n          mbox[n] = '\\0';\n        }\n      }\n    }\n    while (rc == IMAP_CMD_CONTINUE);\n    idata->cmddata = NULL;\n\n    /* if we're descending a folder, mark it as current in browser_state */\n    if (mbox[n-1] == list.delim)\n    {\n      showparents = 1;\n      imap_qualify_path (buf, sizeof (buf), &mx, mbox);\n      state->folder = safe_strdup (buf);\n      n--;\n    }\n\n    /* Find superiors to list\n     * Note: UW-IMAP servers return folder + delimiter when asked to list\n     *  folder + delimiter. Cyrus servers don't. So we ask for folder,\n     *  and tack on delimiter ourselves.\n     * Further note: UW-IMAP servers return nothing when asked for \n     *  NAMESPACES without delimiters at the end. Argh! */\n    for (n--; n >= 0 && mbox[n] != list.delim ; n--);\n    if (n > 0)\t\t\t/* \"aaaa/bbbb/\" -> \"aaaa\" */\n    {\n      /* forget the check, it is too delicate (see above). Have we ever\n       * had the parent not exist? */\n      ctmp = mbox[n];\n      mbox[n] = '\\0';\n\n      if (showparents)\n      {\n\tdprint (3, (debugfile, \"imap_init_browse: adding parent %s\\n\", mbox));\n\timap_add_folder (list.delim, mbox, 1, 0, state, 1);\n      }\n\n      /* if our target isn't a folder, we are in our superior */\n      if (!state->folder)\n      {\n        /* store folder with delimiter */\n        mbox[n++] = ctmp;\n        ctmp = mbox[n];\n        mbox[n] = '\\0';\n        imap_qualify_path (buf, sizeof (buf), &mx, mbox);\n        state->folder = safe_strdup (buf);\n      }\n      mbox[n] = ctmp;\n    } \n    /* \"/bbbb/\" -> add  \"/\", \"aaaa/\" -> add \"\" */\n    else\n    {\n      char relpath[2];\n      /* folder may be \"/\" */\n      snprintf (relpath, sizeof (relpath), \"%c\" , n < 0 ? '\\0' : idata->delim);\n      if (showparents)\n        imap_add_folder (idata->delim, relpath, 1, 0, state, 1); \n      if (!state->folder)\n      {\n        imap_qualify_path (buf, sizeof (buf), &mx, relpath);\n        state->folder = safe_strdup (buf);\n      }\n    }\n  }\n\n  /* no namespace, no folder: set folder to host only */\n  if (!state->folder)\n  {\n    imap_qualify_path (buf, sizeof (buf), &mx, NULL);\n    state->folder = safe_strdup (buf);\n  }\n\n  nsup = state->entrylen;\n\n  dprint (3, (debugfile, \"imap_browse: Quoting mailbox scan: %s -> \", mbox));\n  snprintf (buf, sizeof (buf), \"%s%%\", mbox);\n  imap_munge_mbox_name (idata, munged_mbox, sizeof (munged_mbox), buf);\n  dprint (3, (debugfile, \"%s\\n\", munged_mbox));\n  snprintf (buf, sizeof (buf), \"%s \\\"\\\" %s\", list_cmd, munged_mbox);\n  if (browse_add_list_result (idata, buf, state, 0))\n    goto fail;\n\n  if (!state->entrylen)\n  {\n    mutt_error _(\"No such folder\");\n    goto fail;\n  }\n\n  mutt_clear_error ();\n\n  qsort(&(state->entry[nsup]),state->entrylen-nsup,sizeof(state->entry[0]),\n\t(int (*)(const void*,const void*)) compare_names);\n\n  if (save_lsub)\n    set_option (OPTIMAPCHECKSUBSCRIBED);\n\n  FREE (&mx.mbox);\n  return 0;\n\n fail:\n  if (save_lsub)\n    set_option (OPTIMAPCHECKSUBSCRIBED);\n  FREE (&mx.mbox);\n  return -1;\n}\n\nint imap_mailbox_state (const char* path, struct mailbox_state* state)\n{\n  IMAP_DATA* idata;\n  IMAP_MBOX mx;\n  IMAP_STATUS* status;\n\n  memset (state, 0, sizeof (*state));\n  if (imap_parse_path (path, &mx) < 0)\n  {\n    dprint (1, (debugfile, \"imap_mailbox_state: bad path %s\\n\", path));\n    return -1;\n  }\n  if (!(idata = imap_conn_find (&mx.account, M_IMAP_CONN_NONEW)))\n  {\n    dprint (2, (debugfile, \"imap_mailbox_state: no open connection for %s\\n\",\n\t\tpath));\n    FREE (&mx.mbox);\n    return -1;\n  }\n\n  if (idata->ctx && !imap_mxcmp(mx.mbox, idata->mailbox))\n  {\n    state->new = idata->ctx->new;\n    state->messages = idata->ctx->msgcount;\n  }\n  else if ((status = imap_mboxcache_get (idata, mx.mbox, 0)))\n  {\n    state->new = status->unseen;\n    state->messages = status->messages;\n  }\n\n  FREE (&mx.mbox);\n\n  return 0;\n}\n\n/* imap_mailbox_create: Prompt for a new mailbox name, and try to create it */\nint imap_mailbox_create (const char* folder)\n{\n  IMAP_DATA* idata;\n  IMAP_MBOX mx;\n  char buf[LONG_STRING];\n  short n;\n\n  if (imap_parse_path (folder, &mx) < 0)\n  {\n    dprint (1, (debugfile, \"imap_mailbox_create: Bad starting path %s\\n\",\n      folder));\n    return -1;\n  }\n\n  if (!(idata = imap_conn_find (&mx.account, M_IMAP_CONN_NONEW)))\n  {\n    dprint (1, (debugfile, \"imap_mailbox_create: Couldn't find open connection to %s\", mx.account.host));\n    goto fail;\n  }\n  \n  strfcpy (buf, NONULL (mx.mbox), sizeof (buf));\n\n  /* append a delimiter if necessary */\n  n = mutt_strlen (buf);\n  if (n && (n < sizeof (buf) - 1) && (buf[n-1] != idata->delim))\n  {\n    buf[n++] = idata->delim;\n    buf[n] = '\\0';\n  }\n  \n  if (mutt_get_field (_(\"Create mailbox: \"), buf, sizeof (buf), M_FILE) < 0)\n    goto fail;\n\n  if (!mutt_strlen (buf))\n  {\n    mutt_error (_(\"Mailbox must have a name.\"));\n    mutt_sleep(1);\n    goto fail;\n  }\n  \n  if (imap_create_mailbox (idata, buf) < 0)\n    goto fail;\n\n  mutt_message _(\"Mailbox created.\");\n  mutt_sleep (0);\n\n  FREE (&mx.mbox);\n  return 0;\n\n fail:\n  FREE (&mx.mbox);\n  return -1;\n}\n\nint imap_mailbox_rename(const char* mailbox)\n{\n  IMAP_DATA* idata;\n  IMAP_MBOX mx;\n  char buf[LONG_STRING];\n  char newname[SHORT_STRING];\n\n  if (imap_parse_path (mailbox, &mx) < 0)\n  {\n    dprint (1, (debugfile, \"imap_mailbox_rename: Bad source mailbox %s\\n\",\n      mailbox));\n    return -1;\n  }\n\n  if (!(idata = imap_conn_find (&mx.account, M_IMAP_CONN_NONEW)))\n  {\n    dprint (1, (debugfile, \"imap_mailbox_rename: Couldn't find open connection to %s\", mx.account.host));\n    goto fail;\n  }\n\n  /* TODO: add mutt_error call, such as\n   * \"Cannot rename root folder\"\n   */\n  if (!mx.mbox)\n  {\n    goto fail;\n  }\n\n  snprintf(buf, sizeof (buf), _(\"Rename mailbox %s to: \"), mx.mbox);\n  strfcpy (newname, mx.mbox, sizeof (newname));\n  \n if (mutt_get_field (buf, newname, sizeof (newname), M_FILE) < 0)\n    goto fail;\n\n  if (!mutt_strlen (newname))\n  {\n    mutt_error (_(\"Mailbox must have a name.\"));\n    mutt_sleep (1);\n    goto fail;\n  }\n\n  imap_fix_path (idata, newname, buf, sizeof (buf));\n\n  if (imap_rename_mailbox (idata, &mx, buf) < 0) {\n    mutt_error (_(\"Rename failed: %s\"), imap_get_qualifier (idata->buf));\n    mutt_sleep (1);\n    goto fail;\n  }\n\n  mutt_message (_(\"Mailbox renamed.\"));\n  mutt_sleep (0);\n\n  FREE (&mx.mbox);\n  return 0;\n\n fail:\n  FREE (&mx.mbox);\n  return -1;\n}\n\nstatic int browse_add_list_result (IMAP_DATA* idata, const char* cmd,\n  struct browser_state* state, short isparent)\n{\n  IMAP_LIST list;\n  IMAP_MBOX mx;\n  int rc;\n\n  if (imap_parse_path (state->folder, &mx))\n  {\n    dprint (2, (debugfile,\n      \"browse_add_list_result: current folder %s makes no sense\\n\", state->folder));\n    return -1;\n  }\n\n  imap_cmd_start (idata, cmd);\n  idata->cmdtype = IMAP_CT_LIST;\n  idata->cmddata = &list;\n  do\n  {\n    list.name = NULL;\n    rc = imap_cmd_step (idata);\n\n    if (rc == IMAP_CMD_CONTINUE && list.name)\n    {\n      /* Let a parent folder never be selectable for navigation */\n      if (isparent)\n        list.noselect = 1;\n      /* prune current folder from output */\n      if (isparent || mutt_strncmp (list.name, mx.mbox, strlen (list.name)))\n        imap_add_folder (list.delim, list.name, list.noselect, list.noinferiors,\n                         state, isparent);\n    }\n  }\n  while (rc == IMAP_CMD_CONTINUE);\n  idata->cmddata = NULL;\n\n  FREE (&mx.mbox);\n  return rc == IMAP_CMD_OK ? 0 : -1;\n}\n\n/* imap_add_folder:\n * add a folder name to the browser list, formatting it as necessary.\n *\n * The folder parameter should already be 'unmunged' via\n * imap_unmunge_mbox_name().\n */\nstatic void imap_add_folder (char delim, char *folder, int noselect,\n  int noinferiors, struct browser_state *state, short isparent)\n{\n  char tmp[LONG_STRING];\n  char relpath[LONG_STRING];\n  IMAP_MBOX mx;\n\n  if (imap_parse_path (state->folder, &mx))\n    return;\n\n  if (state->entrylen + 1 == state->entrymax)\n  {\n    safe_realloc (&state->entry,\n      sizeof (struct folder_file) * (state->entrymax += 256));\n    memset (state->entry + state->entrylen, 0,\n      (sizeof (struct folder_file) * (state->entrymax - state->entrylen)));\n  }\n\n  /* render superiors as unix-standard \"..\" */\n  if (isparent)\n    strfcpy (relpath, \"../\", sizeof (relpath));\n  /* strip current folder from target, to render a relative path */\n  else if (!mutt_strncmp (mx.mbox, folder, mutt_strlen (mx.mbox)))\n    strfcpy (relpath, folder + mutt_strlen (mx.mbox), sizeof (relpath));\n  else\n    strfcpy (relpath, folder, sizeof (relpath));\n\n  /* apply filemask filter. This should really be done at menu setup rather\n   * than at scan, since it's so expensive to scan. But that's big changes\n   * to browser.c */\n  if (!((regexec (Mask.rx, relpath, 0, NULL, 0) == 0) ^ Mask.not))\n  {\n    FREE (&mx.mbox);\n    return;\n  }\n\n  imap_qualify_path (tmp, sizeof (tmp), &mx, folder);\n  (state->entry)[state->entrylen].name = safe_strdup (tmp);\n\n  /* mark desc with delim in browser if it can have subfolders */\n  if (!isparent && !noinferiors && strlen (relpath) < sizeof (relpath) - 1)\n  {\n    relpath[strlen (relpath) + 1] = '\\0';\n    relpath[strlen (relpath)] = delim;\n  }\n  \n  (state->entry)[state->entrylen].desc = safe_strdup (relpath);\n\n  (state->entry)[state->entrylen].imap = 1;\n  /* delimiter at the root is useless. */\n  if (folder[0] == '\\0')\n    delim = '\\0';\n  (state->entry)[state->entrylen].delim = delim;\n  (state->entry)[state->entrylen].selectable = !noselect;\n  (state->entry)[state->entrylen].inferiors = !noinferiors;\n  (state->entrylen)++;\n\n  FREE (&mx.mbox);\n}\n\nstatic int compare_names(struct folder_file *a, struct folder_file *b) \n{\n  return mutt_strcmp(a->name, b->name);\n}\n"
  },
  {
    "path": "imap/command.c",
    "content": "/*\n * Copyright (C) 1996-1998,2010,2012 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1996-1999 Brandon Long <blong@fiction.net>\n * Copyright (C) 1999-2009,2011 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* command.c: routines for sending commands to an IMAP server and parsing\n *  responses */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"imap_private.h\"\n#include \"mx.h\"\n#include \"buffy.h\"\n\n#include <ctype.h>\n#include <stdlib.h>\n\n#define IMAP_CMD_BUFSIZE 512\n\n/* forward declarations */\nstatic int cmd_start (IMAP_DATA* idata, const char* cmdstr, int flags);\nstatic int cmd_queue_full (IMAP_DATA* idata);\nstatic int cmd_queue (IMAP_DATA* idata, const char* cmdstr);\nstatic IMAP_COMMAND* cmd_new (IMAP_DATA* idata);\nstatic int cmd_status (const char *s);\nstatic void cmd_handle_fatal (IMAP_DATA* idata);\nstatic int cmd_handle_untagged (IMAP_DATA* idata);\nstatic void cmd_parse_capability (IMAP_DATA* idata, char* s);\nstatic void cmd_parse_expunge (IMAP_DATA* idata, const char* s);\nstatic void cmd_parse_list (IMAP_DATA* idata, char* s);\nstatic void cmd_parse_lsub (IMAP_DATA* idata, char* s);\nstatic void cmd_parse_fetch (IMAP_DATA* idata, char* s);\nstatic void cmd_parse_myrights (IMAP_DATA* idata, const char* s);\nstatic void cmd_parse_search (IMAP_DATA* idata, const char* s);\nstatic void cmd_parse_status (IMAP_DATA* idata, char* s);\nstatic void cmd_parse_enabled (IMAP_DATA* idata, const char* s);\n\nstatic const char * const Capabilities[] = {\n  \"IMAP4\",\n  \"IMAP4rev1\",\n  \"STATUS\",\n  \"ACL\", \n  \"NAMESPACE\",\n  \"AUTH=CRAM-MD5\",\n  \"AUTH=GSSAPI\",\n  \"AUTH=ANONYMOUS\",\n  \"STARTTLS\",\n  \"LOGINDISABLED\",\n  \"IDLE\",\n  \"SASL-IR\",\n  \"ENABLE\",\n\n  NULL\n};\n\n/* imap_cmd_start: Given an IMAP command, send it to the server.\n *   If cmdstr is NULL, sends queued commands. */\nint imap_cmd_start (IMAP_DATA* idata, const char* cmdstr)\n{\n  return cmd_start (idata, cmdstr, 0);\n}\n\n/* imap_cmd_step: Reads server responses from an IMAP command, detects\n *   tagged completion response, handles untagged messages, can read\n *   arbitrarily large strings (using malloc, so don't make it _too_\n *   large!). */\nint imap_cmd_step (IMAP_DATA* idata)\n{\n  size_t len = 0;\n  int c;\n  int rc;\n  int stillrunning = 0;\n  IMAP_COMMAND* cmd;\n\n  if (idata->status == IMAP_FATAL)\n  {\n    cmd_handle_fatal (idata);\n    return IMAP_CMD_BAD;\n  }\n\n  /* read into buffer, expanding buffer as necessary until we have a full\n   * line */\n  do\n  {\n    if (len == idata->blen)\n    {\n      safe_realloc (&idata->buf, idata->blen + IMAP_CMD_BUFSIZE);\n      idata->blen = idata->blen + IMAP_CMD_BUFSIZE;\n      dprint (3, (debugfile, \"imap_cmd_step: grew buffer to %u bytes\\n\",\n\t\t  idata->blen));\n    }\n\n    /* back up over '\\0' */\n    if (len)\n      len--;\n    c = mutt_socket_readln (idata->buf + len, idata->blen - len, idata->conn);\n    if (c <= 0)\n    {\n      dprint (1, (debugfile, \"imap_cmd_step: Error reading server response.\\n\"));\n      cmd_handle_fatal (idata);\n      return IMAP_CMD_BAD;\n    }\n\n    len += c;\n  }\n  /* if we've read all the way to the end of the buffer, we haven't read a\n   * full line (mutt_socket_readln strips the \\r, so we always have at least\n   * one character free when we've read a full line) */\n  while (len == idata->blen);\n\n  /* don't let one large string make cmd->buf hog memory forever */\n  if ((idata->blen > IMAP_CMD_BUFSIZE) && (len <= IMAP_CMD_BUFSIZE))\n  {\n    safe_realloc (&idata->buf, IMAP_CMD_BUFSIZE);\n    idata->blen = IMAP_CMD_BUFSIZE;\n    dprint (3, (debugfile, \"imap_cmd_step: shrank buffer to %u bytes\\n\", idata->blen));\n  }\n\n  idata->lastread = time (NULL);\n\n  /* handle untagged messages. The caller still gets its shot afterwards. */\n  if ((!ascii_strncmp (idata->buf, \"* \", 2)\n       || !ascii_strncmp (imap_next_word (idata->buf), \"OK [\", 4))\n      && cmd_handle_untagged (idata))\n    return IMAP_CMD_BAD;\n\n  /* server demands a continuation response from us */\n  if (idata->buf[0] == '+')\n    return IMAP_CMD_RESPOND;\n\n  /* look for tagged command completions */\n  rc = IMAP_CMD_CONTINUE;\n  c = idata->lastcmd;\n  do\n  {\n    cmd = &idata->cmds[c];\n    if (cmd->state == IMAP_CMD_NEW)\n    {\n      if (!ascii_strncmp (idata->buf, cmd->seq, SEQLEN)) {\n\tif (!stillrunning)\n\t{\n\t  /* first command in queue has finished - move queue pointer up */\n\t  idata->lastcmd = (idata->lastcmd + 1) % idata->cmdslots;\n\t}\n\tcmd->state = cmd_status (idata->buf);\n\t/* bogus - we don't know which command result to return here. Caller\n\t * should provide a tag. */\n\trc = cmd->state;\n      }\n      else\n\tstillrunning++;\n    }\n\n    c = (c + 1) % idata->cmdslots;\n  }\n  while (c != idata->nextcmd);\n\n  if (stillrunning)\n    rc = IMAP_CMD_CONTINUE;\n  else\n  {\n    dprint (3, (debugfile, \"IMAP queue drained\\n\"));\n    imap_cmd_finish (idata);\n  }\n  \n\n  return rc;\n}\n\n/* imap_code: returns 1 if the command result was OK, or 0 if NO or BAD */\nint imap_code (const char *s)\n{\n  return cmd_status (s) == IMAP_CMD_OK;\n}\n\n/* imap_cmd_trailer: extra information after tagged command response if any */\nconst char* imap_cmd_trailer (IMAP_DATA* idata)\n{\n  static const char* notrailer = \"\";\n  const char* s = idata->buf;\n\n  if (!s)\n  {\n    dprint (2, (debugfile, \"imap_cmd_trailer: not a tagged response\"));\n    return notrailer;\n  }\n\n  s = imap_next_word ((char *)s);\n  if (!s || (ascii_strncasecmp (s, \"OK\", 2) &&\n\t     ascii_strncasecmp (s, \"NO\", 2) &&\n\t     ascii_strncasecmp (s, \"BAD\", 3)))\n  {\n    dprint (2, (debugfile, \"imap_cmd_trailer: not a command completion: %s\",\n\t\tidata->buf));\n    return notrailer;\n  }\n\n  s = imap_next_word ((char *)s);\n  if (!s)\n    return notrailer;\n\n  return s;\n}\n\n/* imap_exec: execute a command, and wait for the response from the server.\n * Also, handle untagged responses.\n * Flags:\n *   IMAP_CMD_FAIL_OK: the calling procedure can handle failure. This is used\n *     for checking for a mailbox on append and login\n *   IMAP_CMD_PASS: command contains a password. Suppress logging.\n *   IMAP_CMD_QUEUE: only queue command, do not execute.\n * Return 0 on success, -1 on Failure, -2 on OK Failure\n */\nint imap_exec (IMAP_DATA* idata, const char* cmdstr, int flags)\n{\n  int rc;\n\n  if ((rc = cmd_start (idata, cmdstr, flags)) < 0)\n  {\n    cmd_handle_fatal (idata);\n    return -1;\n  }\n\n  if (flags & IMAP_CMD_QUEUE)\n    return 0;\n\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n\n  if (rc == IMAP_CMD_NO && (flags & IMAP_CMD_FAIL_OK))\n    return -2;\n\n  if (rc != IMAP_CMD_OK)\n  {\n    if ((flags & IMAP_CMD_FAIL_OK) && idata->status != IMAP_FATAL)\n      return -2;\n\n    dprint (1, (debugfile, \"imap_exec: command failed: %s\\n\", idata->buf));\n    return -1;\n  }\n\n  return 0;\n}\n\n/* imap_cmd_finish: Attempts to perform cleanup (eg fetch new mail if\n *   detected, do expunge). Called automatically by imap_cmd_step, but\n *   may be called at any time. Called by imap_check_mailbox just before\n *   the index is refreshed, for instance. */\nvoid imap_cmd_finish (IMAP_DATA* idata)\n{\n  if (idata->status == IMAP_FATAL)\n  {\n    cmd_handle_fatal (idata);\n    return;\n  }\n\n  if (!(idata->state >= IMAP_SELECTED) || idata->ctx->closing)\n    return;\n  \n  if (idata->reopen & IMAP_REOPEN_ALLOW)\n  {\n    int count = idata->newMailCount;\n\n    if (!(idata->reopen & IMAP_EXPUNGE_PENDING) &&\n\t(idata->reopen & IMAP_NEWMAIL_PENDING)\n\t&& count > idata->ctx->msgcount)\n    {\n      /* read new mail messages */\n      dprint (2, (debugfile, \"imap_cmd_finish: Fetching new mail\\n\"));\n      /* check_status: curs_main uses imap_check_mailbox to detect\n       *   whether the index needs updating */\n      idata->check_status = IMAP_NEWMAIL_PENDING;\n      imap_read_headers (idata, idata->ctx->msgcount, count-1);\n    }\n    else if (idata->reopen & IMAP_EXPUNGE_PENDING)\n    {\n      dprint (2, (debugfile, \"imap_cmd_finish: Expunging mailbox\\n\"));\n      imap_expunge_mailbox (idata);\n      /* Detect whether we've gotten unexpected EXPUNGE messages */\n      if ((idata->reopen & IMAP_EXPUNGE_PENDING) &&\n\t  !(idata->reopen & IMAP_EXPUNGE_EXPECTED))\n\tidata->check_status = IMAP_EXPUNGE_PENDING;\n      idata->reopen &= ~(IMAP_EXPUNGE_PENDING | IMAP_NEWMAIL_PENDING |\n\t\t\t IMAP_EXPUNGE_EXPECTED);\n    }\n  }\n\n  idata->status = 0;\n}\n\n/* imap_cmd_idle: Enter the IDLE state. */\nint imap_cmd_idle (IMAP_DATA* idata)\n{\n  int rc;\n\n  imap_cmd_start (idata, \"IDLE\");\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n\n  if (rc == IMAP_CMD_RESPOND)\n  {\n    /* successfully entered IDLE state */\n    idata->state = IMAP_IDLE;\n    /* queue automatic exit when next command is issued */\n    mutt_buffer_printf (idata->cmdbuf, \"DONE\\r\\n\");\n    rc = IMAP_CMD_OK;\n  }\n  if (rc != IMAP_CMD_OK)\n  {\n    dprint (1, (debugfile, \"imap_cmd_idle: error starting IDLE\\n\"));\n    return -1;\n  }\n  \n  return 0;\n}\n\nstatic int cmd_queue_full (IMAP_DATA* idata)\n{\n  if ((idata->nextcmd + 1) % idata->cmdslots == idata->lastcmd)\n    return 1;\n\n  return 0;\n}\n\n/* sets up a new command control block and adds it to the queue.\n * Returns NULL if the pipeline is full. */\nstatic IMAP_COMMAND* cmd_new (IMAP_DATA* idata)\n{\n  IMAP_COMMAND* cmd;\n\n  if (cmd_queue_full (idata))\n  {\n    dprint (3, (debugfile, \"cmd_new: IMAP command queue full\\n\"));\n    return NULL;\n  }\n\n  cmd = idata->cmds + idata->nextcmd;\n  idata->nextcmd = (idata->nextcmd + 1) % idata->cmdslots;\n\n  snprintf (cmd->seq, sizeof (cmd->seq), \"a%04u\", idata->seqno++);\n  if (idata->seqno > 9999)\n    idata->seqno = 0;\n\n  cmd->state = IMAP_CMD_NEW;\n\n  return cmd;\n}\n\n/* queues command. If the queue is full, attempts to drain it. */\nstatic int cmd_queue (IMAP_DATA* idata, const char* cmdstr)\n{\n  IMAP_COMMAND* cmd;\n  int rc;\n\n  if (cmd_queue_full (idata))\n  {\n    dprint (3, (debugfile, \"Draining IMAP command pipeline\\n\"));\n\n    rc = imap_exec (idata, NULL, IMAP_CMD_FAIL_OK);\n\n    if (rc < 0 && rc != -2)\n      return rc;\n  }\n\n  if (!(cmd = cmd_new (idata)))\n    return IMAP_CMD_BAD;\n\n  if (mutt_buffer_printf (idata->cmdbuf, \"%s %s\\r\\n\", cmd->seq, cmdstr) < 0)\n    return IMAP_CMD_BAD;\n\n  return 0;\n}\n\nstatic int cmd_start (IMAP_DATA* idata, const char* cmdstr, int flags)\n{\n  int rc;\n\n  if (idata->status == IMAP_FATAL)\n  {\n    cmd_handle_fatal (idata);\n    return -1;\n  }\n\n  if (cmdstr && ((rc = cmd_queue (idata, cmdstr)) < 0))\n    return rc;\n\n  if (flags & IMAP_CMD_QUEUE)\n    return 0;\n\n  if (idata->cmdbuf->dptr == idata->cmdbuf->data)\n    return IMAP_CMD_BAD;\n\n  rc = mutt_socket_write_d (idata->conn, idata->cmdbuf->data, -1,\n                            flags & IMAP_CMD_PASS ? IMAP_LOG_PASS : IMAP_LOG_CMD);\n  idata->cmdbuf->dptr = idata->cmdbuf->data;\n\n  /* unidle when command queue is flushed */\n  if (idata->state == IMAP_IDLE)\n    idata->state = IMAP_SELECTED;\n\n  return (rc < 0) ? IMAP_CMD_BAD : 0;\n}\n\n/* parse response line for tagged OK/NO/BAD */\nstatic int cmd_status (const char *s)\n{\n  s = imap_next_word((char*)s);\n  \n  if (!ascii_strncasecmp(\"OK\", s, 2))\n    return IMAP_CMD_OK;\n  if (!ascii_strncasecmp(\"NO\", s, 2))\n    return IMAP_CMD_NO;\n\n  return IMAP_CMD_BAD;\n}\n\n/* cmd_handle_fatal: when IMAP_DATA is in fatal state, do what we can */\nstatic void cmd_handle_fatal (IMAP_DATA* idata)\n{\n  idata->status = IMAP_FATAL;\n\n  if ((idata->state >= IMAP_SELECTED) &&\n      (idata->reopen & IMAP_REOPEN_ALLOW))\n  {\n    mx_fastclose_mailbox (idata->ctx);\n    mutt_error (_(\"Mailbox closed\"));\n    mutt_sleep (1);\n    idata->state = IMAP_DISCONNECTED;\n  }\n\n  if (idata->state < IMAP_SELECTED)\n    imap_close_connection (idata);\n}\n\n/* cmd_handle_untagged: fallback parser for otherwise unhandled messages. */\nstatic int cmd_handle_untagged (IMAP_DATA* idata)\n{\n  char* s;\n  char* pn;\n  int count;\n\n  s = imap_next_word (idata->buf);\n  pn = imap_next_word (s);\n\n  if ((idata->state >= IMAP_SELECTED) && isdigit ((unsigned char) *s))\n  {\n    pn = s;\n    s = imap_next_word (s);\n\n    /* EXISTS and EXPUNGE are always related to the SELECTED mailbox for the\n     * connection, so update that one.\n     */\n    if (ascii_strncasecmp (\"EXISTS\", s, 6) == 0)\n    {\n      dprint (2, (debugfile, \"Handling EXISTS\\n\"));\n\n      /* new mail arrived */\n      count = atoi (pn);\n\n      if ( !(idata->reopen & IMAP_EXPUNGE_PENDING) &&\n\t   count < idata->ctx->msgcount)\n      {\n        /* Notes 6.0.3 has a tendency to report fewer messages exist than\n         * it should. */\n\tdprint (1, (debugfile, \"Message count is out of sync\"));\n\treturn 0;\n      }\n      /* at least the InterChange server sends EXISTS messages freely,\n       * even when there is no new mail */\n      else if (count == idata->ctx->msgcount)\n\tdprint (3, (debugfile,\n          \"cmd_handle_untagged: superfluous EXISTS message.\\n\"));\n      else\n      {\n\tif (!(idata->reopen & IMAP_EXPUNGE_PENDING))\n        {\n          dprint (2, (debugfile,\n            \"cmd_handle_untagged: New mail in %s - %d messages total.\\n\",\n            idata->mailbox, count));\n\t  idata->reopen |= IMAP_NEWMAIL_PENDING;\n        }\n\tidata->newMailCount = count;\n      }\n    }\n    /* pn vs. s: need initial seqno */\n    else if (ascii_strncasecmp (\"EXPUNGE\", s, 7) == 0)\n      cmd_parse_expunge (idata, pn);\n    else if (ascii_strncasecmp (\"FETCH\", s, 5) == 0)\n      cmd_parse_fetch (idata, pn);\n  }\n  else if (ascii_strncasecmp (\"CAPABILITY\", s, 10) == 0)\n    cmd_parse_capability (idata, s);\n  else if (!ascii_strncasecmp (\"OK [CAPABILITY\", s, 14))\n    cmd_parse_capability (idata, pn);\n  else if (!ascii_strncasecmp (\"OK [CAPABILITY\", pn, 14))\n    cmd_parse_capability (idata, imap_next_word (pn));\n  else if (ascii_strncasecmp (\"LIST\", s, 4) == 0)\n    cmd_parse_list (idata, s);\n  else if (ascii_strncasecmp (\"LSUB\", s, 4) == 0)\n    cmd_parse_lsub (idata, s);\n  else if (ascii_strncasecmp (\"MYRIGHTS\", s, 8) == 0)\n    cmd_parse_myrights (idata, s);\n  else if (ascii_strncasecmp (\"SEARCH\", s, 6) == 0)\n    cmd_parse_search (idata, s);\n  else if (ascii_strncasecmp (\"STATUS\", s, 6) == 0)\n    cmd_parse_status (idata, s);\n  else if (ascii_strncasecmp (\"ENABLED\", s, 7) == 0)\n    cmd_parse_enabled (idata, s);\n  else if (ascii_strncasecmp (\"BYE\", s, 3) == 0)\n  {\n    dprint (2, (debugfile, \"Handling BYE\\n\"));\n\n    /* check if we're logging out */\n    if (idata->status == IMAP_BYE)\n      return 0;\n\n    /* server shut down our connection */\n    s += 3;\n    SKIPWS (s);\n    mutt_error (\"%s\", s);\n    mutt_sleep (2);\n    cmd_handle_fatal (idata);\n\n    return -1;\n  }\n  else if (option (OPTIMAPSERVERNOISE) && (ascii_strncasecmp (\"NO\", s, 2) == 0))\n  {\n    dprint (2, (debugfile, \"Handling untagged NO\\n\"));\n\n    /* Display the warning message from the server */\n    mutt_error (\"%s\", s+3);\n    mutt_sleep (2);\n  }\n\n  return 0;\n}\n\n/* cmd_parse_capabilities: set capability bits according to CAPABILITY\n *   response */\nstatic void cmd_parse_capability (IMAP_DATA* idata, char* s)\n{\n  int x;\n  char* bracket;\n\n  dprint (3, (debugfile, \"Handling CAPABILITY\\n\"));\n\n  s = imap_next_word (s);\n  if ((bracket = strchr (s, ']')))\n    *bracket = '\\0';\n  FREE(&idata->capstr);\n  idata->capstr = safe_strdup (s);\n\n  memset (idata->capabilities, 0, sizeof (idata->capabilities));\n\n  while (*s)\n  {\n    for (x = 0; x < CAPMAX; x++)\n      if (imap_wordcasecmp(Capabilities[x], s) == 0)\n      {\n\tmutt_bit_set (idata->capabilities, x);\n\tbreak;\n      }\n    s = imap_next_word (s);\n  }\n}\n\n/* cmd_parse_expunge: mark headers with new sequence ID and mark idata to\n *   be reopened at our earliest convenience */\nstatic void cmd_parse_expunge (IMAP_DATA* idata, const char* s)\n{\n  int expno, cur;\n  HEADER* h;\n\n  dprint (2, (debugfile, \"Handling EXPUNGE\\n\"));\n\n  expno = atoi (s);\n\n  /* walk headers, zero seqno of expunged message, decrement seqno of those\n   * above. Possibly we could avoid walking the whole list by resorting\n   * and guessing a good starting point, but I'm guessing the resort would\n   * nullify the gains */\n  for (cur = 0; cur < idata->ctx->msgcount; cur++)\n  {\n    h = idata->ctx->hdrs[cur];\n\n    if (h->index+1 == expno)\n      h->index = -1;\n    else if (h->index+1 > expno)\n      h->index--;\n  }\n\n  idata->reopen |= IMAP_EXPUNGE_PENDING;\n}\n\n/* cmd_parse_fetch: Load fetch response into IMAP_DATA. Currently only\n *   handles unanticipated FETCH responses, and only FLAGS data. We get\n *   these if another client has changed flags for a mailbox we've selected.\n *   Of course, a lot of code here duplicates code in message.c. */\nstatic void cmd_parse_fetch (IMAP_DATA* idata, char* s)\n{\n  int msgno, cur;\n  HEADER* h = NULL;\n\n  dprint (3, (debugfile, \"Handling FETCH\\n\"));\n\n  msgno = atoi (s);\n  \n  if (msgno <= idata->ctx->msgcount)\n  /* see cmd_parse_expunge */\n    for (cur = 0; cur < idata->ctx->msgcount; cur++)\n    {\n      h = idata->ctx->hdrs[cur];\n      \n      if (h && h->active && h->index+1 == msgno)\n      {\n\tdprint (2, (debugfile, \"Message UID %d updated\\n\", HEADER_DATA(h)->uid));\n\tbreak;\n      }\n      \n      h = NULL;\n    }\n  \n  if (!h)\n  {\n    dprint (3, (debugfile, \"FETCH response ignored for this message\\n\"));\n    return;\n  }\n  \n  /* skip FETCH */\n  s = imap_next_word (s);\n  s = imap_next_word (s);\n\n  if (*s != '(')\n  {\n    dprint (1, (debugfile, \"Malformed FETCH response\"));\n    return;\n  }\n  s++;\n\n  if (ascii_strncasecmp (\"FLAGS\", s, 5) != 0)\n  {\n    dprint (2, (debugfile, \"Only handle FLAGS updates\\n\"));\n    return;\n  }\n\n  /* If server flags could conflict with mutt's flags, reopen the mailbox. */\n  if (h->changed)\n    idata->reopen |= IMAP_EXPUNGE_PENDING;\n  else {\n    imap_set_flags (idata, h, s);\n    idata->check_status = IMAP_FLAGS_PENDING;\n  }\n}\n\nstatic void cmd_parse_list (IMAP_DATA* idata, char* s)\n{\n  IMAP_LIST* list;\n  IMAP_LIST lb;\n  char delimbuf[5]; /* worst case: \"\\\\\"\\0 */\n  long litlen;\n\n  if (idata->cmddata && idata->cmdtype == IMAP_CT_LIST)\n    list = (IMAP_LIST*)idata->cmddata;\n  else\n    list = &lb;\n\n  memset (list, 0, sizeof (IMAP_LIST));\n\n  /* flags */\n  s = imap_next_word (s);\n  if (*s != '(')\n  {\n    dprint (1, (debugfile, \"Bad LIST response\\n\"));\n    return;\n  }\n  s++;\n  while (*s)\n  {\n    if (!ascii_strncasecmp (s, \"\\\\NoSelect\", 9))\n      list->noselect = 1;\n    else if (!ascii_strncasecmp (s, \"\\\\NoInferiors\", 12))\n      list->noinferiors = 1;\n    /* See draft-gahrns-imap-child-mailbox-?? */\n    else if (!ascii_strncasecmp (s, \"\\\\HasNoChildren\", 14))\n      list->noinferiors = 1;\n    \n    s = imap_next_word (s);\n    if (*(s - 2) == ')')\n      break;\n  }\n\n  /* Delimiter */\n  if (ascii_strncasecmp (s, \"NIL\", 3))\n  {\n    delimbuf[0] = '\\0';\n    safe_strcat (delimbuf, 5, s); \n    imap_unquote_string (delimbuf);\n    list->delim = delimbuf[0];\n  }\n\n  /* Name */\n  s = imap_next_word (s);\n  /* Notes often responds with literals here. We need a real tokenizer. */\n  if (!imap_get_literal_count (s, &litlen))\n  {\n    if (imap_cmd_step (idata) != IMAP_CMD_CONTINUE)\n    {\n      idata->status = IMAP_FATAL;\n      return;\n    }\n    list->name = idata->buf;\n  }\n  else\n  {\n    imap_unmunge_mbox_name (idata, s);\n    list->name = s;\n  }\n\n  if (list->name[0] == '\\0')\n  {\n    idata->delim = list->delim;\n    dprint (3, (debugfile, \"Root delimiter: %c\\n\", idata->delim));\n  }\n}\n\nstatic void cmd_parse_lsub (IMAP_DATA* idata, char* s)\n{\n  char buf[STRING];\n  char errstr[STRING];\n  BUFFER err, token;\n  ciss_url_t url;\n  IMAP_LIST list;\n\n  if (idata->cmddata && idata->cmdtype == IMAP_CT_LIST)\n  {\n    /* caller will handle response itself */\n    cmd_parse_list (idata, s);\n    return;\n  }\n\n  if (!option (OPTIMAPCHECKSUBSCRIBED))\n    return;\n\n  idata->cmdtype = IMAP_CT_LIST;\n  idata->cmddata = &list;\n  cmd_parse_list (idata, s);\n  idata->cmddata = NULL;\n  /* noselect is for a gmail quirk (#3445) */\n  if (!list.name || list.noselect)\n    return;\n\n  dprint (3, (debugfile, \"Subscribing to %s\\n\", list.name));\n\n  strfcpy (buf, \"mailboxes \\\"\", sizeof (buf));\n  mutt_account_tourl (&idata->conn->account, &url);\n  /* escape \\ and \" */\n  imap_quote_string(errstr, sizeof (errstr), list.name);\n  url.path = errstr + 1;\n  url.path[strlen(url.path) - 1] = '\\0';\n  if (!mutt_strcmp (url.user, ImapUser))\n    url.user = NULL;\n  url_ciss_tostring (&url, buf + 11, sizeof (buf) - 10, 0);\n  safe_strcat (buf, sizeof (buf), \"\\\"\");\n  mutt_buffer_init (&token);\n  mutt_buffer_init (&err);\n  err.data = errstr;\n  err.dsize = sizeof (errstr);\n  if (mutt_parse_rc_line (buf, &token, &err))\n    dprint (1, (debugfile, \"Error adding subscribed mailbox: %s\\n\", errstr));\n  FREE (&token.data);\n}\n\n/* cmd_parse_myrights: set rights bits according to MYRIGHTS response */\nstatic void cmd_parse_myrights (IMAP_DATA* idata, const char* s)\n{\n  dprint (2, (debugfile, \"Handling MYRIGHTS\\n\"));\n\n  s = imap_next_word ((char*)s);\n  s = imap_next_word ((char*)s);\n\n  /* zero out current rights set */\n  memset (idata->ctx->rights, 0, sizeof (idata->ctx->rights));\n\n  while (*s && !isspace((unsigned char) *s))\n  {\n    switch (*s) \n    {\n      case 'l':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_LOOKUP);\n\tbreak;\n      case 'r':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_READ);\n\tbreak;\n      case 's':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_SEEN);\n\tbreak;\n      case 'w':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_WRITE);\n\tbreak;\n      case 'i':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_INSERT);\n\tbreak;\n      case 'p':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_POST);\n\tbreak;\n      case 'a':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_ADMIN);\n\tbreak;\n      case 'k':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_CREATE);\n        break;\n      case 'x':\n        mutt_bit_set (idata->ctx->rights, M_ACL_DELMX);\n        break;\n      case 't':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_DELETE);\n        break;\n      case 'e':\n        mutt_bit_set (idata->ctx->rights, M_ACL_EXPUNGE);\n        break;\n\n        /* obsolete rights */\n      case 'c':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_CREATE);\n        mutt_bit_set (idata->ctx->rights, M_ACL_DELMX);\n\tbreak;\n      case 'd':\n\tmutt_bit_set (idata->ctx->rights, M_ACL_DELETE);\n        mutt_bit_set (idata->ctx->rights, M_ACL_EXPUNGE);\n\tbreak;\n      default:\n        dprint(1, (debugfile, \"Unknown right: %c\\n\", *s));\n    }\n    s++;\n  }\n}\n\n/* This should be optimised (eg with a tree or hash) */\nstatic int uid2msgno (IMAP_DATA* idata, unsigned int uid)\n{\n  int i;\n  \n  for (i = 0; i < idata->ctx->msgcount; i++)\n  {\n    HEADER* h = idata->ctx->hdrs[i];\n    if (HEADER_DATA(h)->uid == uid)\n      return i;\n  }\n  \n  return -1;\n}\n\n/* cmd_parse_search: store SEARCH response for later use */\nstatic void cmd_parse_search (IMAP_DATA* idata, const char* s)\n{\n  unsigned int uid;\n  int msgno;\n\n  dprint (2, (debugfile, \"Handling SEARCH\\n\"));\n\n  while ((s = imap_next_word ((char*)s)) && *s != '\\0')\n  {\n    uid = atoi (s);\n    msgno = uid2msgno (idata, uid);\n    \n    if (msgno >= 0)\n      idata->ctx->hdrs[uid2msgno (idata, uid)]->matched = 1;\n  }\n}\n\n/* first cut: just do buffy update. Later we may wish to cache all\n * mailbox information, even that not desired by buffy */\nstatic void cmd_parse_status (IMAP_DATA* idata, char* s)\n{\n  char* mailbox;\n  char* value;\n  BUFFY* inc;\n  IMAP_MBOX mx;\n  int count;\n  IMAP_STATUS *status;\n  unsigned int olduv, oldun;\n  long litlen;\n\n  mailbox = imap_next_word (s);\n\n  /* We need a real tokenizer. */\n  if (!imap_get_literal_count (mailbox, &litlen))\n  {\n    if (imap_cmd_step (idata) != IMAP_CMD_CONTINUE)\n    {\n      idata->status = IMAP_FATAL;\n      return;\n    }\n    mailbox = idata->buf;\n    s = mailbox + litlen;\n    *s = '\\0';\n    s++;\n    SKIPWS(s);\n  }\n  else\n  {\n    s = imap_next_word (mailbox);\n    *(s - 1) = '\\0';\n    imap_unmunge_mbox_name (idata, mailbox);\n  }\n\n  status = imap_mboxcache_get (idata, mailbox, 1);\n  olduv = status->uidvalidity;\n  oldun = status->uidnext;\n\n  if (*s++ != '(')\n  {\n    dprint (1, (debugfile, \"Error parsing STATUS\\n\"));\n    return;\n  }\n  while (*s && *s != ')')\n  {\n    value = imap_next_word (s);\n    count = strtol (value, &value, 10);\n\n    if (!ascii_strncmp (\"MESSAGES\", s, 8))\n      status->messages = count;\n    else if (!ascii_strncmp (\"RECENT\", s, 6))\n      status->recent = count;\n    else if (!ascii_strncmp (\"UIDNEXT\", s, 7))\n      status->uidnext = count;\n    else if (!ascii_strncmp (\"UIDVALIDITY\", s, 11))\n      status->uidvalidity = count;\n    else if (!ascii_strncmp (\"UNSEEN\", s, 6))\n      status->unseen = count;\n\n    s = value;\n    if (*s && *s != ')')\n      s = imap_next_word (s);\n  }\n  dprint (3, (debugfile, \"%s (UIDVALIDITY: %d, UIDNEXT: %d) %d messages, %d recent, %d unseen\\n\",\n              status->name, status->uidvalidity, status->uidnext,\n              status->messages, status->recent, status->unseen));\n\n  /* caller is prepared to handle the result herself */\n  if (idata->cmddata && idata->cmdtype == IMAP_CT_STATUS)\n  {\n    memcpy (idata->cmddata, status, sizeof (IMAP_STATUS));\n    return;\n  }\n\n  dprint (3, (debugfile, \"Running default STATUS handler\\n\"));\n\n  /* should perhaps move this code back to imap_buffy_check */\n  for (inc = Incoming; inc; inc = inc->next)\n  {\n    if (inc->magic != M_IMAP)\n      continue;\n    \n    if (imap_parse_path (inc->path, &mx) < 0)\n    {\n      dprint (1, (debugfile, \"Error parsing mailbox %s, skipping\\n\", inc->path));\n      continue;\n    }\n    /* dprint (2, (debugfile, \"Buffy entry: [%s] mbox: [%s]\\n\", inc->path, NONULL(mx.mbox))); */\n    \n    if (imap_account_match (&idata->conn->account, &mx.account))\n    {\n      if (mx.mbox)\n      {\n\tvalue = safe_strdup (mx.mbox);\n\timap_fix_path (idata, mx.mbox, value, mutt_strlen (value) + 1);\n\tFREE (&mx.mbox);\n      }\n      else\n\tvalue = safe_strdup (\"INBOX\");\n\n      if (value && !imap_mxcmp (mailbox, value))\n      {\n        dprint (3, (debugfile, \"Found %s in buffy list (OV: %d ON: %d U: %d)\\n\",\n                    mailbox, olduv, oldun, status->unseen));\n        \n\tif (option(OPTMAILCHECKRECENT))\n\t{\n\t  if (olduv && olduv == status->uidvalidity)\n\t  {\n\t    if (oldun < status->uidnext)\n\t      inc->new = status->unseen;\n\t  }\n\t  else if (!olduv && !oldun)\n\t    /* first check per session, use recent. might need a flag for this. */\n\t    inc->new = status->recent;\n\t  else\n\t    inc->new = status->unseen;\n\t}\n\telse\n          inc->new = status->unseen;\n\n\tif (inc->new)\n\t  /* force back to keep detecting new mail until the mailbox is\n\t     opened */\n\t  status->uidnext = oldun;\n\n#ifdef USE_SIDEBAR\n\t/* Make the sidebar show the correct numbers */\n\tif (status->messages) {\n\t  inc->msg_count  = status->messages;\n\t  inc->msg_unread = status->unseen;\n\t}\n#endif\n\n        FREE (&value);\n        return;\n      }\n\n      FREE (&value);\n    }\n\n    FREE (&mx.mbox);\n  }\n}\n\n/* cmd_parse_enabled: record what the server has enabled */\nstatic void cmd_parse_enabled (IMAP_DATA* idata, const char* s)\n{\n  dprint (2, (debugfile, \"Handling ENABLED\\n\"));\n\n  while ((s = imap_next_word ((char*)s)) && *s != '\\0')\n  {\n    if (ascii_strncasecmp(s, \"UTF8=ACCEPT\", 11) == 0 ||\n        ascii_strncasecmp(s, \"UTF8=ONLY\", 9) == 0)\n      idata->unicode = 1;\n  }\n}\n"
  },
  {
    "path": "imap/imap.c",
    "content": "/*\n * Copyright (C) 1996-1998,2012 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1996-1999 Brandon Long <blong@fiction.net>\n * Copyright (C) 1999-2009,2012 Brendan Cully <brendan@kublai.com>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/* Support for IMAP4rev1, with the occasional nod to IMAP 4. */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mx.h\"\n#include \"mailbox.h\"\n#include \"globals.h\"\n#include \"sort.h\"\n#include \"browser.h\"\n#include \"imap_private.h\"\n#if defined(USE_SSL)\n# include \"mutt_ssl.h\"\n#endif\n#include \"buffy.h\"\n#if USE_HCACHE\n#include \"hcache.h\"\n#endif\n\n#include <unistd.h>\n#include <ctype.h>\n#include <string.h>\n#include <stdlib.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n\n/* imap forward declarations */\nstatic char* imap_get_flags (LIST** hflags, char* s);\nstatic int imap_check_capabilities (IMAP_DATA* idata);\nstatic void imap_set_flag (IMAP_DATA* idata, int aclbit, int flag,\n\t\t\t   const char* str, char* flags, size_t flsize);\n\n/* imap_access: Check permissions on an IMAP mailbox.\n * TODO: ACL checks. Right now we assume if it exists we can\n *       mess with it. */\nint imap_access (const char* path, int flags)\n{\n  IMAP_DATA* idata;\n  IMAP_MBOX mx;\n  char buf[LONG_STRING];\n  char mailbox[LONG_STRING];\n  char mbox[LONG_STRING];\n  int rc;\n\n  if (imap_parse_path (path, &mx))\n    return -1;\n\n  if (!(idata = imap_conn_find (&mx.account,\n    option (OPTIMAPPASSIVE) ? M_IMAP_CONN_NONEW : 0)))\n  {\n    FREE (&mx.mbox);\n    return -1;\n  }\n\n  imap_fix_path (idata, mx.mbox, mailbox, sizeof (mailbox));\n  if (!*mailbox)\n    strfcpy (mailbox, \"INBOX\", sizeof (mailbox));\n\n  /* we may already be in the folder we're checking */\n  if (!ascii_strcmp(idata->mailbox, mx.mbox))\n  {\n    FREE (&mx.mbox);\n    return 0;\n  }\n  FREE (&mx.mbox);\n\n  if (imap_mboxcache_get (idata, mailbox, 0))\n  {\n    dprint (3, (debugfile, \"imap_access: found %s in cache\\n\", mailbox));\n    return 0;\n  }\n\n  imap_munge_mbox_name (idata, mbox, sizeof (mbox), mailbox);\n\n  if (mutt_bit_isset (idata->capabilities, IMAP4REV1))\n    snprintf (buf, sizeof (buf), \"STATUS %s (UIDVALIDITY)\", mbox);\n  else if (mutt_bit_isset (idata->capabilities, STATUS))\n    snprintf (buf, sizeof (buf), \"STATUS %s (UID-VALIDITY)\", mbox);\n  else\n  {\n    dprint (2, (debugfile, \"imap_access: STATUS not supported?\\n\"));\n    return -1;\n  }\n\n  if ((rc = imap_exec (idata, buf, IMAP_CMD_FAIL_OK)) < 0)\n  {\n    dprint (1, (debugfile, \"imap_access: Can't check STATUS of %s\\n\", mbox));\n    return rc;\n  }\n\n  return 0;\n}\n\nint imap_create_mailbox (IMAP_DATA* idata, char* mailbox)\n{\n  char buf[LONG_STRING], mbox[LONG_STRING];\n\n  imap_munge_mbox_name (idata, mbox, sizeof (mbox), mailbox);\n  snprintf (buf, sizeof (buf), \"CREATE %s\", mbox);\n\n  if (imap_exec (idata, buf, 0) != 0)\n  {\n    mutt_error (_(\"CREATE failed: %s\"), imap_cmd_trailer (idata));\n    return -1;\n  }\n\n  return 0;\n}\n\nint imap_rename_mailbox (IMAP_DATA* idata, IMAP_MBOX* mx, const char* newname)\n{\n  char oldmbox[LONG_STRING];\n  char newmbox[LONG_STRING];\n  char buf[LONG_STRING];\n\n  imap_munge_mbox_name (idata, oldmbox, sizeof (oldmbox), mx->mbox);\n  imap_munge_mbox_name (idata, newmbox, sizeof (newmbox), newname);\n\n  snprintf (buf, sizeof (buf), \"RENAME %s %s\", oldmbox, newmbox);\n\n  if (imap_exec (idata, buf, 0) != 0)\n    return -1;\n\n  return 0;\n}\n\nint imap_delete_mailbox (CONTEXT* ctx, IMAP_MBOX mx)\n{\n  char buf[LONG_STRING], mbox[LONG_STRING];\n  IMAP_DATA *idata;\n\n  if (!ctx || !ctx->data) {\n    if (!(idata = imap_conn_find (&mx.account,\n          option (OPTIMAPPASSIVE) ? M_IMAP_CONN_NONEW : 0)))\n    {\n      FREE (&mx.mbox);\n      return -1;\n    }\n  } else {\n    idata = ctx->data;\n  }\n\n  imap_munge_mbox_name (idata, mbox, sizeof (mbox), mx.mbox);\n  snprintf (buf, sizeof (buf), \"DELETE %s\", mbox);\n\n  if (imap_exec ((IMAP_DATA*) idata, buf, 0) != 0)\n    return -1;\n\n  return 0;\n}\n\n/* imap_logout_all: close all open connections. Quick and dirty until we can\n *   make sure we've got all the context we need. */\nvoid imap_logout_all (void)\n{\n  CONNECTION* conn;\n  CONNECTION* tmp;\n\n  conn = mutt_socket_head ();\n\n  while (conn)\n  {\n    tmp = conn->next;\n\n    if (conn->account.type == M_ACCT_TYPE_IMAP && conn->fd >= 0)\n    {\n      mutt_message (_(\"Closing connection to %s...\"), conn->account.host);\n      imap_logout ((IMAP_DATA**) (void*) &conn->data);\n      mutt_clear_error ();\n      mutt_socket_free (conn);\n    }\n\n    conn = tmp;\n  }\n}\n\n/* imap_read_literal: read bytes bytes from server into file. Not explicitly\n *   buffered, relies on FILE buffering. NOTE: strips \\r from \\r\\n.\n *   Apparently even literals use \\r\\n-terminated strings ?! */\nint imap_read_literal (FILE* fp, IMAP_DATA* idata, long bytes, progress_t* pbar)\n{\n  long pos;\n  char c;\n\n  int r = 0;\n\n  dprint (2, (debugfile, \"imap_read_literal: reading %ld bytes\\n\", bytes));\n\n  for (pos = 0; pos < bytes; pos++)\n  {\n    if (mutt_socket_readchar (idata->conn, &c) != 1)\n    {\n      dprint (1, (debugfile, \"imap_read_literal: error during read, %ld bytes read\\n\", pos));\n      idata->status = IMAP_FATAL;\n\n      return -1;\n    }\n\n#if 1\n    if (r == 1 && c != '\\n')\n      fputc ('\\r', fp);\n\n    if (c == '\\r')\n    {\n      r = 1;\n      continue;\n    }\n    else\n      r = 0;\n#endif\n    fputc (c, fp);\n\n    if (pbar && !(pos % 1024))\n      mutt_progress_update (pbar, pos, -1);\n#ifdef DEBUG\n    if (debuglevel >= IMAP_LOG_LTRL)\n      fputc (c, debugfile);\n#endif\n  }\n\n  return 0;\n}\n\n/* imap_expunge_mailbox: Purge IMAP portion of expunged messages from the\n *   context. Must not be done while something has a handle on any headers\n *   (eg inside pager or editor). That is, check IMAP_REOPEN_ALLOW. */\nvoid imap_expunge_mailbox (IMAP_DATA* idata)\n{\n  HEADER* h;\n  int i, cacheno;\n\n#ifdef USE_HCACHE\n  idata->hcache = imap_hcache_open (idata, NULL);\n#endif\n\n  for (i = 0; i < idata->ctx->msgcount; i++)\n  {\n    h = idata->ctx->hdrs[i];\n\n    if (h->index == -1)\n    {\n      dprint (2, (debugfile, \"Expunging message UID %d.\\n\", HEADER_DATA (h)->uid));\n\n      h->active = 0;\n      idata->ctx->size -= h->content->length;\n\n      imap_cache_del (idata, h);\n#if USE_HCACHE\n      imap_hcache_del (idata, HEADER_DATA(h)->uid);\n#endif\n\n      /* free cached body from disk, if necessary */\n      cacheno = HEADER_DATA(h)->uid % IMAP_CACHE_LEN;\n      if (idata->cache[cacheno].uid == HEADER_DATA(h)->uid &&\n\t  idata->cache[cacheno].path)\n      {\n\tunlink (idata->cache[cacheno].path);\n\tFREE (&idata->cache[cacheno].path);\n      }\n\n      imap_free_header_data ((IMAP_HEADER_DATA**)&h->data);\n    }\n  }\n\n#if USE_HCACHE\n  imap_hcache_close (idata);\n#endif\n\n  /* We may be called on to expunge at any time. We can't rely on the caller\n   * to always know to rethread */\n  mx_update_tables (idata->ctx, 0);\n  mutt_sort_headers (idata->ctx, 1);\n}\n\n/* imap_check_capabilities: make sure we can log in to this server. */\nstatic int imap_check_capabilities (IMAP_DATA* idata)\n{\n  if (imap_exec (idata, \"CAPABILITY\", 0) != 0)\n  {\n    imap_error (\"imap_check_capabilities\", idata->buf);\n    return -1;\n  }\n\n  if (!(mutt_bit_isset(idata->capabilities,IMAP4)\n      ||mutt_bit_isset(idata->capabilities,IMAP4REV1)))\n  {\n    mutt_error _(\"This IMAP server is ancient. Mutt does not work with it.\");\n    mutt_sleep (2);\t/* pause a moment to let the user see the error */\n\n    return -1;\n  }\n\n  return 0;\n}\n\n/* imap_conn_find: Find an open IMAP connection matching account, or open\n *   a new one if none can be found. */\nIMAP_DATA* imap_conn_find (const ACCOUNT* account, int flags)\n{\n  CONNECTION* conn = NULL;\n  ACCOUNT* creds = NULL;\n  IMAP_DATA* idata = NULL;\n  int new = 0;\n\n  while ((conn = mutt_conn_find (conn, account)))\n  {\n    if (!creds)\n      creds = &conn->account;\n    else\n      memcpy (&conn->account, creds, sizeof (ACCOUNT));\n\n    idata = (IMAP_DATA*)conn->data;\n    if (flags & M_IMAP_CONN_NONEW)\n    {\n      if (!idata)\n      {\n        /* This should only happen if we've come to the end of the list */\n        mutt_socket_free (conn);\n        return NULL;\n      }\n      else if (idata->state < IMAP_AUTHENTICATED)\n        continue;\n    }\n    if (flags & M_IMAP_CONN_NOSELECT && idata && idata->state >= IMAP_SELECTED)\n      continue;\n    if (idata && idata->status == IMAP_FATAL)\n      continue;\n    break;\n  }\n  if (!conn)\n    return NULL; /* this happens when the initial connection fails */\n\n  if (!idata)\n  {\n    /* The current connection is a new connection */\n    if (! (idata = imap_new_idata ()))\n    {\n      mutt_socket_free (conn);\n      return NULL;\n    }\n\n    conn->data = idata;\n    idata->conn = conn;\n    new = 1;\n  }\n\n  if (idata->state == IMAP_DISCONNECTED)\n    imap_open_connection (idata);\n  if (idata->state == IMAP_CONNECTED)\n  {\n    if (!imap_authenticate (idata))\n    {\n      idata->state = IMAP_AUTHENTICATED;\n      FREE (&idata->capstr);\n      new = 1;\n      if (idata->conn->ssf)\n\tdprint (2, (debugfile, \"Communication encrypted at %d bits\\n\",\n\t\t    idata->conn->ssf));\n    }\n    else\n      mutt_account_unsetpass (&idata->conn->account);\n  }\n  if (new && idata->state == IMAP_AUTHENTICATED)\n  {\n    /* capabilities may have changed */\n    imap_exec (idata, \"CAPABILITY\", IMAP_CMD_QUEUE);\n    /* enable RFC6855, if the server supports that */\n    if (mutt_bit_isset (idata->capabilities, ENABLE))\n      imap_exec (idata, \"ENABLE UTF8=ACCEPT\", IMAP_CMD_QUEUE);\n    /* get root delimiter, '/' as default */\n    idata->delim = '/';\n    imap_exec (idata, \"LIST \\\"\\\" \\\"\\\"\", IMAP_CMD_QUEUE);\n    if (option (OPTIMAPCHECKSUBSCRIBED))\n      imap_exec (idata, \"LSUB \\\"\\\" \\\"*\\\"\", IMAP_CMD_QUEUE);\n    /* we may need the root delimiter before we open a mailbox */\n    imap_exec (idata, NULL, IMAP_CMD_FAIL_OK);\n  }\n\n  return idata;\n}\n\nint imap_open_connection (IMAP_DATA* idata)\n{\n  char buf[LONG_STRING];\n\n  if (mutt_socket_open (idata->conn) < 0)\n    return -1;\n\n  idata->state = IMAP_CONNECTED;\n\n  if (imap_cmd_step (idata) != IMAP_CMD_CONTINUE)\n  {\n    imap_close_connection (idata);\n    return -1;\n  }\n\n  if (ascii_strncasecmp (\"* OK\", idata->buf, 4) == 0)\n  {\n    if (ascii_strncasecmp (\"* OK [CAPABILITY\", idata->buf, 16)\n        && imap_check_capabilities (idata))\n      goto bail;\n#if defined(USE_SSL)\n    /* Attempt STARTTLS if available and desired. */\n    if (!idata->conn->ssf && (option(OPTSSLFORCETLS) ||\n                              mutt_bit_isset (idata->capabilities, STARTTLS)))\n    {\n      int rc;\n\n      if (option(OPTSSLFORCETLS))\n        rc = M_YES;\n      else if ((rc = query_quadoption (OPT_SSLSTARTTLS,\n        _(\"Secure connection with TLS?\"))) == -1)\n\tgoto err_close_conn;\n      if (rc == M_YES) {\n\tif ((rc = imap_exec (idata, \"STARTTLS\", IMAP_CMD_FAIL_OK)) == -1)\n\t  goto bail;\n\tif (rc != -2)\n\t{\n\t  if (mutt_ssl_starttls (idata->conn))\n\t  {\n\t    mutt_error (_(\"Could not negotiate TLS connection\"));\n\t    mutt_sleep (1);\n\t    goto err_close_conn;\n\t  }\n\t  else\n\t  {\n\t    /* RFC 2595 demands we recheck CAPABILITY after TLS completes. */\n\t    if (imap_exec (idata, \"CAPABILITY\", 0))\n\t      goto bail;\n\t  }\n\t}\n      }\n    }\n\n    if (option(OPTSSLFORCETLS) && ! idata->conn->ssf)\n    {\n      mutt_error _(\"Encrypted connection unavailable\");\n      mutt_sleep (1);\n      goto err_close_conn;\n    }\n#endif\n  }\n  else if (ascii_strncasecmp (\"* PREAUTH\", idata->buf, 9) == 0)\n  {\n    idata->state = IMAP_AUTHENTICATED;\n    if (imap_check_capabilities (idata) != 0)\n      goto bail;\n    FREE (&idata->capstr);\n  }\n  else\n  {\n    imap_error (\"imap_open_connection()\", buf);\n    goto bail;\n  }\n\n  return 0;\n\n#if defined(USE_SSL)\n err_close_conn:\n  imap_close_connection (idata);\n#endif\n bail:\n  FREE (&idata->capstr);\n  return -1;\n}\n\nvoid imap_close_connection(IMAP_DATA* idata)\n{\n  if (idata->state != IMAP_DISCONNECTED)\n  {\n    mutt_socket_close (idata->conn);\n    idata->state = IMAP_DISCONNECTED;\n  }\n  idata->seqno = idata->nextcmd = idata->lastcmd = idata->status = 0;\n  memset (idata->cmds, 0, sizeof (IMAP_COMMAND) * idata->cmdslots);\n}\n\n/* imap_get_flags: Make a simple list out of a FLAGS response.\n *   return stream following FLAGS response */\nstatic char* imap_get_flags (LIST** hflags, char* s)\n{\n  LIST* flags;\n  char* flag_word;\n  char ctmp;\n\n  /* sanity-check string */\n  if (ascii_strncasecmp (\"FLAGS\", s, 5) != 0)\n  {\n    dprint (1, (debugfile, \"imap_get_flags: not a FLAGS response: %s\\n\",\n      s));\n    return NULL;\n  }\n  s += 5;\n  SKIPWS(s);\n  if (*s != '(')\n  {\n    dprint (1, (debugfile, \"imap_get_flags: bogus FLAGS response: %s\\n\",\n      s));\n    return NULL;\n  }\n\n  /* create list, update caller's flags handle */\n  flags = mutt_new_list();\n  *hflags = flags;\n\n  while (*s && *s != ')')\n  {\n    s++;\n    SKIPWS(s);\n    flag_word = s;\n    while (*s && (*s != ')') && !ISSPACE (*s))\n      s++;\n    ctmp = *s;\n    *s = '\\0';\n    if (*flag_word)\n      mutt_add_list (flags, flag_word);\n    *s = ctmp;\n  }\n\n  /* note bad flags response */\n  if (*s != ')')\n  {\n    dprint (1, (debugfile,\n      \"imap_get_flags: Unterminated FLAGS response: %s\\n\", s));\n    mutt_free_list (hflags);\n\n    return NULL;\n  }\n\n  s++;\n\n  return s;\n}\n\nint imap_open_mailbox (CONTEXT* ctx)\n{\n  IMAP_DATA *idata;\n  IMAP_STATUS* status;\n  char buf[LONG_STRING];\n  char bufout[LONG_STRING];\n  int count = 0;\n  IMAP_MBOX mx, pmx;\n  int rc;\n\n  if (imap_parse_path (ctx->path, &mx))\n  {\n    mutt_error (_(\"%s is an invalid IMAP path\"), ctx->path);\n    return -1;\n  }\n\n  /* we require a connection which isn't currently in IMAP_SELECTED state */\n  if (!(idata = imap_conn_find (&(mx.account), M_IMAP_CONN_NOSELECT)))\n    goto fail_noidata;\n  if (idata->state < IMAP_AUTHENTICATED)\n    goto fail;\n\n  /* once again the context is new */\n  ctx->data = idata;\n  ctx->mx_close = imap_close_mailbox;\n\n  /* Clean up path and replace the one in the ctx */\n  imap_fix_path (idata, mx.mbox, buf, sizeof (buf));\n  if (!*buf)\n    strfcpy (buf, \"INBOX\", sizeof (buf));\n  FREE(&(idata->mailbox));\n  idata->mailbox = safe_strdup (buf);\n  imap_qualify_path (buf, sizeof (buf), &mx, idata->mailbox);\n\n  FREE (&(ctx->path));\n  ctx->path = safe_strdup (buf);\n\n  idata->ctx = ctx;\n\n  /* clear mailbox status */\n  idata->status = 0;\n  memset (idata->ctx->rights, 0, sizeof (idata->ctx->rights));\n  idata->newMailCount = 0;\n\n  mutt_message (_(\"Selecting %s...\"), idata->mailbox);\n  imap_munge_mbox_name (idata, buf, sizeof(buf), idata->mailbox);\n\n  /* pipeline ACL test */\n  if (mutt_bit_isset (idata->capabilities, ACL))\n  {\n    snprintf (bufout, sizeof (bufout), \"MYRIGHTS %s\", buf);\n    imap_exec (idata, bufout, IMAP_CMD_QUEUE);\n  }\n  /* assume we have all rights if ACL is unavailable */\n  else\n  {\n    mutt_bit_set (idata->ctx->rights, M_ACL_LOOKUP);\n    mutt_bit_set (idata->ctx->rights, M_ACL_READ);\n    mutt_bit_set (idata->ctx->rights, M_ACL_SEEN);\n    mutt_bit_set (idata->ctx->rights, M_ACL_WRITE);\n    mutt_bit_set (idata->ctx->rights, M_ACL_INSERT);\n    mutt_bit_set (idata->ctx->rights, M_ACL_POST);\n    mutt_bit_set (idata->ctx->rights, M_ACL_CREATE);\n    mutt_bit_set (idata->ctx->rights, M_ACL_DELETE);\n  }\n  /* pipeline the postponed count if possible */\n  pmx.mbox = NULL;\n  if (mx_is_imap (Postponed) && !imap_parse_path (Postponed, &pmx)\n      && mutt_account_match (&pmx.account, &mx.account))\n    imap_status (Postponed, 1);\n  FREE (&pmx.mbox);\n\n  snprintf (bufout, sizeof (bufout), \"%s %s\",\n    ctx->readonly ? \"EXAMINE\" : \"SELECT\", buf);\n\n  idata->state = IMAP_SELECTED;\n\n  imap_cmd_start (idata, bufout);\n\n  status = imap_mboxcache_get (idata, idata->mailbox, 1);\n\n  do\n  {\n    char *pc;\n\n    if ((rc = imap_cmd_step (idata)) != IMAP_CMD_CONTINUE)\n      break;\n\n    pc = idata->buf + 2;\n\n    /* Obtain list of available flags here, may be overridden by a\n     * PERMANENTFLAGS tag in the OK response */\n    if (ascii_strncasecmp (\"FLAGS\", pc, 5) == 0)\n    {\n      /* don't override PERMANENTFLAGS */\n      if (!idata->flags)\n      {\n\tdprint (3, (debugfile, \"Getting mailbox FLAGS\\n\"));\n\tif ((pc = imap_get_flags (&(idata->flags), pc)) == NULL)\n\t  goto fail;\n      }\n    }\n    /* PERMANENTFLAGS are massaged to look like FLAGS, then override FLAGS */\n    else if (ascii_strncasecmp (\"OK [PERMANENTFLAGS\", pc, 18) == 0)\n    {\n      dprint (3, (debugfile, \"Getting mailbox PERMANENTFLAGS\\n\"));\n      /* safe to call on NULL */\n      mutt_free_list (&(idata->flags));\n      /* skip \"OK [PERMANENT\" so syntax is the same as FLAGS */\n      pc += 13;\n      if ((pc = imap_get_flags (&(idata->flags), pc)) == NULL)\n\tgoto fail;\n    }\n    /* save UIDVALIDITY for the header cache */\n    else if (ascii_strncasecmp (\"OK [UIDVALIDITY\", pc, 14) == 0)\n    {\n      dprint (3, (debugfile, \"Getting mailbox UIDVALIDITY\\n\"));\n      pc += 3;\n      pc = imap_next_word (pc);\n      idata->uid_validity = strtol (pc, NULL, 10);\n      status->uidvalidity = idata->uid_validity;\n    }\n    else if (ascii_strncasecmp (\"OK [UIDNEXT\", pc, 11) == 0)\n    {\n      dprint (3, (debugfile, \"Getting mailbox UIDNEXT\\n\"));\n      pc += 3;\n      pc = imap_next_word (pc);\n      idata->uidnext = strtol (pc, NULL, 10);\n      status->uidnext = idata->uidnext;\n    }\n    else\n    {\n      pc = imap_next_word (pc);\n      if (!ascii_strncasecmp (\"EXISTS\", pc, 6))\n      {\n\tcount = idata->newMailCount;\n\tidata->newMailCount = 0;\n      }\n    }\n  }\n  while (rc == IMAP_CMD_CONTINUE);\n\n  if (rc == IMAP_CMD_NO)\n  {\n    char *s;\n    s = imap_next_word (idata->buf); /* skip seq */\n    s = imap_next_word (s); /* Skip response */\n    mutt_error (\"%s\", s);\n    mutt_sleep (2);\n    goto fail;\n  }\n\n  if (rc != IMAP_CMD_OK)\n    goto fail;\n\n  /* check for READ-ONLY notification */\n  if (!ascii_strncasecmp (imap_get_qualifier (idata->buf), \"[READ-ONLY]\", 11)  \\\n  && !mutt_bit_isset (idata->capabilities, ACL))\n  {\n    dprint (2, (debugfile, \"Mailbox is read-only.\\n\"));\n    ctx->readonly = 1;\n  }\n\n#ifdef DEBUG\n  /* dump the mailbox flags we've found */\n  if (debuglevel > 2)\n  {\n    if (!idata->flags)\n      dprint (3, (debugfile, \"No folder flags found\\n\"));\n    else\n    {\n      LIST* t = idata->flags;\n\n      dprint (3, (debugfile, \"Mailbox flags: \"));\n\n      t = t->next;\n      while (t)\n      {\n        dprint (3, (debugfile, \"[%s] \", t->data));\n        t = t->next;\n      }\n      dprint (3, (debugfile, \"\\n\"));\n    }\n  }\n#endif\n\n  if (!(mutt_bit_isset(idata->ctx->rights, M_ACL_DELETE) ||\n        mutt_bit_isset(idata->ctx->rights, M_ACL_SEEN) ||\n        mutt_bit_isset(idata->ctx->rights, M_ACL_WRITE) ||\n        mutt_bit_isset(idata->ctx->rights, M_ACL_INSERT)))\n     ctx->readonly = 1;\n\n  ctx->hdrmax = count;\n  ctx->hdrs = safe_calloc (count, sizeof (HEADER *));\n  ctx->v2r = safe_calloc (count, sizeof (int));\n  ctx->msgcount = 0;\n\n  if (count && (imap_read_headers (idata, 0, count-1) < 0))\n  {\n    mutt_error _(\"Error opening mailbox\");\n    mutt_sleep (1);\n    goto fail;\n  }\n\n  dprint (2, (debugfile, \"imap_open_mailbox: msgcount is %d\\n\", ctx->msgcount));\n  FREE (&mx.mbox);\n  return 0;\n\n fail:\n  if (idata->state == IMAP_SELECTED)\n    idata->state = IMAP_AUTHENTICATED;\n fail_noidata:\n  FREE (&mx.mbox);\n  return -1;\n}\n\nint imap_open_mailbox_append (CONTEXT *ctx)\n{\n  IMAP_DATA *idata;\n  char buf[LONG_STRING];\n  char mailbox[LONG_STRING];\n  IMAP_MBOX mx;\n  int rc;\n\n  if (imap_parse_path (ctx->path, &mx))\n    return -1;\n\n  /* in APPEND mode, we appear to hijack an existing IMAP connection -\n   * ctx is brand new and mostly empty */\n\n  if (!(idata = imap_conn_find (&(mx.account), 0)))\n  {\n    FREE (&mx.mbox);\n    return -1;\n  }\n\n  ctx->magic = M_IMAP;\n  ctx->data = idata;\n\n  imap_fix_path (idata, mx.mbox, mailbox, sizeof (mailbox));\n  if (!*mailbox)\n    strfcpy (mailbox, \"INBOX\", sizeof (mailbox));\n  FREE (&mx.mbox);\n\n  /* really we should also check for W_OK */\n  if ((rc = imap_access (ctx->path, F_OK)) == 0)\n    return 0;\n\n  if (rc == -1)\n    return -1;\n\n  snprintf (buf, sizeof (buf), _(\"Create %s?\"), mailbox);\n  if (option (OPTCONFIRMCREATE) && mutt_yesorno (buf, 1) < 1)\n    return -1;\n\n  if (imap_create_mailbox (idata, mailbox) < 0)\n    return -1;\n\n  return 0;\n}\n\n/* imap_logout: Gracefully log out of server. */\nvoid imap_logout (IMAP_DATA** idata)\n{\n  /* we set status here to let imap_handle_untagged know we _expect_ to\n   * receive a bye response (so it doesn't freak out and close the conn) */\n  (*idata)->status = IMAP_BYE;\n  imap_cmd_start (*idata, \"LOGOUT\");\n  while (imap_cmd_step (*idata) == IMAP_CMD_CONTINUE)\n    ;\n\n  mutt_socket_close ((*idata)->conn);\n  imap_free_idata (idata);\n}\n\n/* imap_set_flag: append str to flags if we currently have permission\n *   according to aclbit */\nstatic void imap_set_flag (IMAP_DATA* idata, int aclbit, int flag,\n  const char *str, char *flags, size_t flsize)\n{\n  if (mutt_bit_isset (idata->ctx->rights, aclbit))\n    if (flag && imap_has_flag (idata->flags, str))\n      safe_strcat (flags, flsize, str);\n}\n\n/* imap_has_flag: do a caseless comparison of the flag against a flag list,\n*   return 1 if found or flag list has '\\*', 0 otherwise */\nint imap_has_flag (LIST* flag_list, const char* flag)\n{\n  if (!flag_list)\n    return 0;\n\n  flag_list = flag_list->next;\n  while (flag_list)\n  {\n    if (!ascii_strncasecmp (flag_list->data, flag, strlen (flag_list->data)))\n      return 1;\n\n    if (!ascii_strncmp (flag_list->data, \"\\\\*\", strlen (flag_list->data)))\n      return 1;\n\n    flag_list = flag_list->next;\n  }\n\n  return 0;\n}\n\n/* Note: headers must be in SORT_ORDER. See imap_exec_msgset for args.\n * Pos is an opaque pointer a la strtok. It should be 0 at first call. */\nstatic int imap_make_msg_set (IMAP_DATA* idata, BUFFER* buf, int flag,\n                              int changed, int invert, int* pos)\n{\n  HEADER** hdrs = idata->ctx->hdrs;\n  int count = 0;\t/* number of messages in message set */\n  int match = 0;\t/* whether current message matches flag condition */\n  unsigned int setstart = 0;\t/* start of current message range */\n  int n;\n  int started = 0;\n\n  hdrs = idata->ctx->hdrs;\n\n  for (n = *pos;\n       n < idata->ctx->msgcount && buf->dptr - buf->data < IMAP_MAX_CMDLEN;\n       n++)\n  {\n    match = 0;\n    /* don't include pending expunged messages */\n    if (hdrs[n]->active)\n      switch (flag)\n      {\n        case M_DELETED:\n          if (hdrs[n]->deleted != HEADER_DATA(hdrs[n])->deleted)\n            match = invert ^ hdrs[n]->deleted;\n\t  break;\n        case M_FLAG:\n          if (hdrs[n]->flagged != HEADER_DATA(hdrs[n])->flagged)\n            match = invert ^ hdrs[n]->flagged;\n\t  break;\n        case M_OLD:\n          if (hdrs[n]->old != HEADER_DATA(hdrs[n])->old)\n            match = invert ^ hdrs[n]->old;\n\t  break;\n        case M_READ:\n          if (hdrs[n]->read != HEADER_DATA(hdrs[n])->read)\n            match = invert ^ hdrs[n]->read;\n\t  break;\n        case M_REPLIED:\n          if (hdrs[n]->replied != HEADER_DATA(hdrs[n])->replied)\n            match = invert ^ hdrs[n]->replied;\n\t  break;\n\n        case M_TAG:\n\t  if (hdrs[n]->tagged)\n\t    match = 1;\n\t  break;\n      }\n\n    if (match && (!changed || hdrs[n]->changed))\n    {\n      count++;\n      if (setstart == 0)\n      {\n        setstart = HEADER_DATA (hdrs[n])->uid;\n        if (started == 0)\n\t{\n\t  mutt_buffer_printf (buf, \"%u\", HEADER_DATA (hdrs[n])->uid);\n\t  started = 1;\n\t}\n        else\n\t  mutt_buffer_printf (buf, \",%u\", HEADER_DATA (hdrs[n])->uid);\n      }\n      /* tie up if the last message also matches */\n      else if (n == idata->ctx->msgcount-1)\n\tmutt_buffer_printf (buf, \":%u\", HEADER_DATA (hdrs[n])->uid);\n    }\n    /* End current set if message doesn't match or we've reached the end\n     * of the mailbox via inactive messages following the last match. */\n    else if (setstart && (hdrs[n]->active || n == idata->ctx->msgcount-1))\n    {\n      if (HEADER_DATA (hdrs[n-1])->uid > setstart)\n\tmutt_buffer_printf (buf, \":%u\", HEADER_DATA (hdrs[n-1])->uid);\n      setstart = 0;\n    }\n  }\n\n  *pos = n;\n\n  return count;\n}\n\n/* Prepares commands for all messages matching conditions (must be flushed\n * with imap_exec)\n * Params:\n *   idata: IMAP_DATA containing context containing header set\n *   pre, post: commands are of the form \"%s %s %s %s\", tag,\n *     pre, message set, post\n *   flag: enum of flag type on which to filter\n *   changed: include only changed messages in message set\n *   invert: invert sense of flag, eg M_READ matches unread messages\n * Returns: number of matched messages, or -1 on failure */\nint imap_exec_msgset (IMAP_DATA* idata, const char* pre, const char* post,\n                      int flag, int changed, int invert)\n{\n  HEADER** hdrs = NULL;\n  short oldsort;\n  BUFFER* cmd;\n  int pos;\n  int rc;\n  int count = 0;\n\n  if (! (cmd = mutt_buffer_new ()))\n  {\n    dprint (1, (debugfile, \"imap_exec_msgset: unable to allocate buffer\\n\"));\n    return -1;\n  }\n\n  /* We make a copy of the headers just in case resorting doesn't give\n   exactly the original order (duplicate messages?), because other parts of\n   the ctx are tied to the header order. This may be overkill. */\n  oldsort = Sort;\n  if (Sort != SORT_ORDER)\n  {\n    hdrs = idata->ctx->hdrs;\n    idata->ctx->hdrs = safe_malloc (idata->ctx->msgcount * sizeof (HEADER*));\n    memcpy (idata->ctx->hdrs, hdrs, idata->ctx->msgcount * sizeof (HEADER*));\n\n    Sort = SORT_ORDER;\n    qsort (idata->ctx->hdrs, idata->ctx->msgcount, sizeof (HEADER*),\n           mutt_get_sort_func (SORT_ORDER));\n  }\n\n  pos = 0;\n\n  do\n  {\n    cmd->dptr = cmd->data;\n    mutt_buffer_printf (cmd, \"%s \", pre);\n    rc = imap_make_msg_set (idata, cmd, flag, changed, invert, &pos);\n    if (rc > 0)\n    {\n      mutt_buffer_printf (cmd, \" %s\", post);\n      if (imap_exec (idata, cmd->data, IMAP_CMD_QUEUE))\n      {\n        rc = -1;\n        goto out;\n      }\n      count += rc;\n    }\n  }\n  while (rc > 0);\n\n  rc = count;\n\nout:\n  mutt_buffer_free (&cmd);\n  if (oldsort != Sort)\n  {\n    Sort = oldsort;\n    FREE (&idata->ctx->hdrs);\n    idata->ctx->hdrs = hdrs;\n  }\n\n  return rc;\n}\n\n/* returns 0 if mutt's flags match cached server flags */\nstatic int compare_flags (HEADER* h)\n{\n  IMAP_HEADER_DATA* hd = (IMAP_HEADER_DATA*)h->data;\n\n  if (h->read != hd->read)\n    return 1;\n  if (h->old != hd->old)\n    return 1;\n  if (h->flagged != hd->flagged)\n    return 1;\n  if (h->replied != hd->replied)\n    return 1;\n  if (h->deleted != hd->deleted)\n    return 1;\n\n  return 0;\n}\n\n/* Update the IMAP server to reflect the flags a single message.  */\nint imap_sync_message (IMAP_DATA *idata, HEADER *hdr, BUFFER *cmd,\n\t\t       int *err_continue)\n{\n  char flags[LONG_STRING];\n  char uid[11];\n\n  hdr->changed = 0;\n\n  if (!compare_flags (hdr))\n  {\n    idata->ctx->changed--;\n    return 0;\n  }\n\n  snprintf (uid, sizeof (uid), \"%u\", HEADER_DATA(hdr)->uid);\n  cmd->dptr = cmd->data;\n  mutt_buffer_addstr (cmd, \"UID STORE \");\n  mutt_buffer_addstr (cmd, uid);\n\n  flags[0] = '\\0';\n\n  imap_set_flag (idata, M_ACL_SEEN, hdr->read, \"\\\\Seen \",\n\t\t flags, sizeof (flags));\n  imap_set_flag (idata, M_ACL_WRITE, hdr->old,\n                 \"Old \", flags, sizeof (flags));\n  imap_set_flag (idata, M_ACL_WRITE, hdr->flagged,\n\t\t \"\\\\Flagged \", flags, sizeof (flags));\n  imap_set_flag (idata, M_ACL_WRITE, hdr->replied,\n\t\t \"\\\\Answered \", flags, sizeof (flags));\n  imap_set_flag (idata, M_ACL_DELETE, hdr->deleted,\n\t\t \"\\\\Deleted \", flags, sizeof (flags));\n\n  /* now make sure we don't lose custom tags */\n  if (mutt_bit_isset (idata->ctx->rights, M_ACL_WRITE))\n    imap_add_keywords (flags, hdr, idata->flags, sizeof (flags));\n\n  mutt_remove_trailing_ws (flags);\n\n  /* UW-IMAP is OK with null flags, Cyrus isn't. The only solution is to\n   * explicitly revoke all system flags (if we have permission) */\n  if (!*flags)\n  {\n    imap_set_flag (idata, M_ACL_SEEN, 1, \"\\\\Seen \", flags, sizeof (flags));\n    imap_set_flag (idata, M_ACL_WRITE, 1, \"Old \", flags, sizeof (flags));\n    imap_set_flag (idata, M_ACL_WRITE, 1, \"\\\\Flagged \", flags, sizeof (flags));\n    imap_set_flag (idata, M_ACL_WRITE, 1, \"\\\\Answered \", flags, sizeof (flags));\n    imap_set_flag (idata, M_ACL_DELETE, 1, \"\\\\Deleted \", flags, sizeof (flags));\n\n    mutt_remove_trailing_ws (flags);\n\n    mutt_buffer_addstr (cmd, \" -FLAGS.SILENT (\");\n  } else\n    mutt_buffer_addstr (cmd, \" FLAGS.SILENT (\");\n\n  mutt_buffer_addstr (cmd, flags);\n  mutt_buffer_addstr (cmd, \")\");\n\n  /* dumb hack for bad UW-IMAP 4.7 servers spurious FLAGS updates */\n  hdr->active = 0;\n\n  /* after all this it's still possible to have no flags, if you\n   * have no ACL rights */\n  if (*flags && (imap_exec (idata, cmd->data, 0) != 0) &&\n      err_continue && (*err_continue != M_YES))\n  {\n    *err_continue = imap_continue (\"imap_sync_message: STORE failed\",\n\t\t\t\t   idata->buf);\n    if (*err_continue != M_YES)\n      return -1;\n  }\n\n  hdr->active = 1;\n  idata->ctx->changed--;\n\n  return 0;\n}\n\nstatic int sync_helper (IMAP_DATA* idata, int right, int flag, const char* name)\n{\n  int count = 0;\n  int rc;\n  char buf[LONG_STRING];\n\n  if (!idata->ctx)\n    return -1;\n\n  if (!mutt_bit_isset (idata->ctx->rights, right))\n    return 0;\n\n  if (right == M_ACL_WRITE && !imap_has_flag (idata->flags, name))\n    return 0;\n\n  snprintf (buf, sizeof(buf), \"+FLAGS.SILENT (%s)\", name);\n  if ((rc = imap_exec_msgset (idata, \"UID STORE\", buf, flag, 1, 0)) < 0)\n    return rc;\n  count += rc;\n\n  buf[0] = '-';\n  if ((rc = imap_exec_msgset (idata, \"UID STORE\", buf, flag, 1, 1)) < 0)\n    return rc;\n  count += rc;\n\n  return count;\n}\n\n/* update the IMAP server to reflect message changes done within mutt.\n * Arguments\n *   ctx: the current context\n *   expunge: 0 or 1 - do expunge?\n */\nint imap_sync_mailbox (CONTEXT* ctx, int expunge, int* index_hint)\n{\n  IMAP_DATA* idata;\n  CONTEXT* appendctx = NULL;\n  HEADER* h;\n  HEADER** hdrs = NULL;\n  int oldsort;\n  int n;\n  int rc;\n\n  idata = (IMAP_DATA*) ctx->data;\n\n  if (idata->state < IMAP_SELECTED)\n  {\n    dprint (2, (debugfile, \"imap_sync_mailbox: no mailbox selected\\n\"));\n    return -1;\n  }\n\n  /* This function is only called when the calling code expects the context\n   * to be changed. */\n  imap_allow_reopen (ctx);\n\n  if ((rc = imap_check_mailbox (ctx, index_hint, 0)) != 0)\n    return rc;\n\n  /* if we are expunging anyway, we can do deleted messages very quickly... */\n  if (expunge && mutt_bit_isset (ctx->rights, M_ACL_DELETE))\n  {\n    if ((rc = imap_exec_msgset (idata, \"UID STORE\", \"+FLAGS.SILENT (\\\\Deleted)\",\n                                M_DELETED, 1, 0)) < 0)\n    {\n      mutt_error (_(\"Expunge failed\"));\n      mutt_sleep (1);\n      goto out;\n    }\n\n    if (rc > 0)\n    {\n      /* mark these messages as unchanged so second pass ignores them. Done\n       * here so BOGUS UW-IMAP 4.7 SILENT FLAGS updates are ignored. */\n      for (n = 0; n < ctx->msgcount; n++)\n        if (ctx->hdrs[n]->deleted && ctx->hdrs[n]->changed)\n          ctx->hdrs[n]->active = 0;\n      mutt_message (_(\"Marking %d messages deleted...\"), rc);\n    }\n  }\n\n#if USE_HCACHE\n  idata->hcache = imap_hcache_open (idata, NULL);\n#endif\n\n  /* save messages with real (non-flag) changes */\n  for (n = 0; n < ctx->msgcount; n++)\n  {\n    h = ctx->hdrs[n];\n\n    if (h->deleted)\n    {\n      imap_cache_del (idata, h);\n#if USE_HCACHE\n      imap_hcache_del (idata, HEADER_DATA(h)->uid);\n#endif\n    }\n\n    if (h->active && h->changed)\n    {\n#if USE_HCACHE\n      imap_hcache_put (idata, h);\n#endif\n      /* if the message has been rethreaded or attachments have been deleted\n       * we delete the message and reupload it.\n       * This works better if we're expunging, of course. */\n      if ((h->env && (h->env->refs_changed || h->env->irt_changed)) ||\n\t  h->attach_del)\n      {\n        mutt_message (_(\"Saving changed messages... [%d/%d]\"), n+1,\n                      ctx->msgcount);\n\tif (!appendctx)\n\t  appendctx = mx_open_mailbox (ctx->path, M_APPEND | M_QUIET, NULL);\n\tif (!appendctx)\n\t  dprint (1, (debugfile, \"imap_sync_mailbox: Error opening mailbox in append mode\\n\"));\n\telse\n\t  _mutt_save_message (h, appendctx, 1, 0, 0);\n      }\n    }\n  }\n\n#if USE_HCACHE\n  imap_hcache_close (idata);\n#endif\n\n  /* presort here to avoid doing 10 resorts in imap_exec_msgset */\n  oldsort = Sort;\n  if (Sort != SORT_ORDER)\n  {\n    hdrs = ctx->hdrs;\n    ctx->hdrs = safe_malloc (ctx->msgcount * sizeof (HEADER*));\n    memcpy (ctx->hdrs, hdrs, ctx->msgcount * sizeof (HEADER*));\n\n    Sort = SORT_ORDER;\n    qsort (ctx->hdrs, ctx->msgcount, sizeof (HEADER*),\n           mutt_get_sort_func (SORT_ORDER));\n  }\n\n  rc = sync_helper (idata, M_ACL_DELETE, M_DELETED, \"\\\\Deleted\");\n  if (rc >= 0)\n    rc |= sync_helper (idata, M_ACL_WRITE, M_FLAG, \"\\\\Flagged\");\n  if (rc >= 0)\n    rc |= sync_helper (idata, M_ACL_WRITE, M_OLD, \"Old\");\n  if (rc >= 0)\n    rc |= sync_helper (idata, M_ACL_SEEN, M_READ, \"\\\\Seen\");\n  if (rc >= 0)\n    rc |= sync_helper (idata, M_ACL_WRITE, M_REPLIED, \"\\\\Answered\");\n\n  if (oldsort != Sort)\n  {\n    Sort = oldsort;\n    FREE (&ctx->hdrs);\n    ctx->hdrs = hdrs;\n  }\n\n  /* Flush the queued flags if any were changed in sync_helper. */\n  if (rc > 0)\n    if (imap_exec (idata, NULL, 0) != IMAP_CMD_OK)\n      rc = -1;\n\n  if (rc < 0)\n  {\n    if (ctx->closing)\n    {\n      if (mutt_yesorno (_(\"Error saving flags. Close anyway?\"), 0) == M_YES)\n      {\n        rc = 0;\n        idata->state = IMAP_AUTHENTICATED;\n        goto out;\n      }\n    }\n    else\n      mutt_error _(\"Error saving flags\");\n    rc = -1;\n    goto out;\n  }\n\n  /* Update local record of server state to reflect the synchronization just\n   * completed.  imap_read_headers always overwrites hcache-origin flags, so\n   * there is no need to mutate the hcache after flag-only changes. */\n  for (n = 0; n < ctx->msgcount; n++)\n  {\n    HEADER_DATA(ctx->hdrs[n])->deleted = ctx->hdrs[n]->deleted;\n    HEADER_DATA(ctx->hdrs[n])->flagged = ctx->hdrs[n]->flagged;\n    HEADER_DATA(ctx->hdrs[n])->old = ctx->hdrs[n]->old;\n    HEADER_DATA(ctx->hdrs[n])->read = ctx->hdrs[n]->read;\n    HEADER_DATA(ctx->hdrs[n])->replied = ctx->hdrs[n]->replied;\n    ctx->hdrs[n]->changed = 0;\n  }\n  ctx->changed = 0;\n\n  /* We must send an EXPUNGE command if we're not closing. */\n  if (expunge && !(ctx->closing) &&\n      mutt_bit_isset(ctx->rights, M_ACL_DELETE))\n  {\n    mutt_message _(\"Expunging messages from server...\");\n    /* Set expunge bit so we don't get spurious reopened messages */\n    idata->reopen |= IMAP_EXPUNGE_EXPECTED;\n    if (imap_exec (idata, \"EXPUNGE\", 0) != 0)\n    {\n      imap_error (_(\"imap_sync_mailbox: EXPUNGE failed\"), idata->buf);\n      rc = -1;\n      goto out;\n    }\n  }\n\n  if (expunge && ctx->closing)\n  {\n    imap_exec (idata, \"CLOSE\", IMAP_CMD_QUEUE);\n    idata->state = IMAP_AUTHENTICATED;\n  }\n\n  if (option (OPTMESSAGECACHECLEAN))\n    imap_cache_clean (idata);\n\n  rc = 0;\n\n out:\n  if (appendctx)\n  {\n    mx_fastclose_mailbox (appendctx);\n    FREE (&appendctx);\n  }\n  return rc;\n}\n\n/* imap_close_mailbox: clean up IMAP data in CONTEXT */\nint imap_close_mailbox (CONTEXT* ctx)\n{\n  IMAP_DATA* idata;\n  int i;\n\n  idata = (IMAP_DATA*) ctx->data;\n  /* Check to see if the mailbox is actually open */\n  if (!idata)\n    return 0;\n\n  if (ctx == idata->ctx)\n  {\n    if (idata->status != IMAP_FATAL && idata->state >= IMAP_SELECTED)\n    {\n      /* mx_close_mailbox won't sync if there are no deleted messages\n       * and the mailbox is unchanged, so we may have to close here */\n      if (!ctx->deleted)\n        imap_exec (idata, \"CLOSE\", IMAP_CMD_QUEUE);\n      idata->state = IMAP_AUTHENTICATED;\n    }\n\n    idata->reopen &= IMAP_REOPEN_ALLOW;\n    FREE (&(idata->mailbox));\n    mutt_free_list (&idata->flags);\n    idata->ctx = NULL;\n  }\n\n  /* free IMAP part of headers */\n  for (i = 0; i < ctx->msgcount; i++)\n    /* mailbox may not have fully loaded */\n    if (ctx->hdrs[i] && ctx->hdrs[i]->data)\n      imap_free_header_data ((IMAP_HEADER_DATA**)&(ctx->hdrs[i]->data));\n\n  for (i = 0; i < IMAP_CACHE_LEN; i++)\n  {\n    if (idata->cache[i].path)\n    {\n      unlink (idata->cache[i].path);\n      FREE (&idata->cache[i].path);\n    }\n  }\n\n  mutt_bcache_close (&idata->bcache);\n\n  return 0;\n}\n\n/* use the NOOP or IDLE command to poll for new mail\n *\n * return values:\n *\tM_REOPENED\tmailbox has been externally modified\n *\tM_NEW_MAIL\tnew mail has arrived!\n *\t0\t\tno change\n *\t-1\t\terror\n */\nint imap_check_mailbox (CONTEXT *ctx, int *index_hint, int force)\n{\n  /* overload keyboard timeout to avoid many mailbox checks in a row.\n   * Most users don't like having to wait exactly when they press a key. */\n  IMAP_DATA* idata;\n  int result = 0;\n\n  idata = (IMAP_DATA*) ctx->data;\n\n  /* try IDLE first, unless force is set */\n  if (!force && option (OPTIMAPIDLE) && mutt_bit_isset (idata->capabilities, IDLE)\n      && (idata->state != IMAP_IDLE || time(NULL) >= idata->lastread + ImapKeepalive))\n  {\n    if (imap_cmd_idle (idata) < 0)\n      return -1;\n  }\n  if (idata->state == IMAP_IDLE)\n  {\n    while ((result = mutt_socket_poll (idata->conn)) > 0)\n    {\n      if (imap_cmd_step (idata) != IMAP_CMD_CONTINUE)\n      {\n        dprint (1, (debugfile, \"Error reading IDLE response\\n\"));\n        return -1;\n      }\n    }\n    if (result < 0)\n    {\n      dprint (1, (debugfile, \"Poll failed, disabling IDLE\\n\"));\n      mutt_bit_unset (idata->capabilities, IDLE);\n    }\n  }\n\n  if ((force ||\n       (idata->state != IMAP_IDLE && time(NULL) >= idata->lastread + Timeout))\n      && imap_exec (idata, \"NOOP\", 0) != 0)\n    return -1;\n\n  /* We call this even when we haven't run NOOP in case we have pending\n   * changes to process, since we can reopen here. */\n  imap_cmd_finish (idata);\n\n  if (idata->check_status & IMAP_EXPUNGE_PENDING)\n    result = M_REOPENED;\n  else if (idata->check_status & IMAP_NEWMAIL_PENDING)\n    result = M_NEW_MAIL;\n  else if (idata->check_status & IMAP_FLAGS_PENDING)\n    result = M_FLAGS;\n\n  idata->check_status = 0;\n\n  return result;\n}\n\n/* split path into (idata,mailbox name) */\nstatic int imap_get_mailbox (const char* path, IMAP_DATA** hidata, char* buf, size_t blen)\n{\n  IMAP_MBOX mx;\n\n  if (imap_parse_path (path, &mx))\n  {\n    dprint (1, (debugfile, \"imap_get_mailbox: Error parsing %s\\n\", path));\n    return -1;\n  }\n  if (!(*hidata = imap_conn_find (&(mx.account), option (OPTIMAPPASSIVE) ? M_IMAP_CONN_NONEW : 0))\n      || (*hidata)->state < IMAP_AUTHENTICATED)\n  {\n    FREE (&mx.mbox);\n    return -1;\n  }\n\n  imap_fix_path (*hidata, mx.mbox, buf, blen);\n  if (!*buf)\n    strfcpy (buf, \"INBOX\", blen);\n  FREE (&mx.mbox);\n\n  return 0;\n}\n\n/* check for new mail in any subscribed mailboxes. Given a list of mailboxes\n * rather than called once for each so that it can batch the commands and\n * save on round trips. Returns number of mailboxes with new mail. */\nint imap_buffy_check (int force)\n{\n  IMAP_DATA* idata;\n  IMAP_DATA* lastdata = NULL;\n  BUFFY* mailbox;\n  char name[LONG_STRING];\n  char command[LONG_STRING];\n  char munged[LONG_STRING];\n  int buffies = 0;\n\n  for (mailbox = Incoming; mailbox; mailbox = mailbox->next)\n  {\n    /* Init newly-added mailboxes */\n    if (! mailbox->magic)\n    {\n      if (mx_is_imap (mailbox->path))\n        mailbox->magic = M_IMAP;\n    }\n\n    if (mailbox->magic != M_IMAP)\n      continue;\n\n    mailbox->new = 0;\n\n    if (imap_get_mailbox (mailbox->path, &idata, name, sizeof (name)) < 0)\n      continue;\n\n    /* Don't issue STATUS on the selected mailbox, it will be NOOPed or\n     * IDLEd elsewhere.\n     * idata->mailbox may be NULL for connections other than the current\n     * mailbox's, and shouldn't expand to INBOX in that case. #3216. */\n    if (idata->mailbox && !imap_mxcmp (name, idata->mailbox))\n      continue;\n\n    if (!mutt_bit_isset (idata->capabilities, IMAP4REV1) &&\n        !mutt_bit_isset (idata->capabilities, STATUS))\n    {\n      dprint (2, (debugfile, \"Server doesn't support STATUS\\n\"));\n      continue;\n    }\n\n    if (lastdata && idata != lastdata)\n    {\n      /* Send commands to previous server. Sorting the buffy list\n       * may prevent some infelicitous interleavings */\n      if (imap_exec (lastdata, NULL, IMAP_CMD_FAIL_OK) == -1)\n        dprint (1, (debugfile, \"Error polling mailboxes\\n\"));\n\n      lastdata = NULL;\n    }\n\n    if (!lastdata)\n      lastdata = idata;\n\n    imap_munge_mbox_name (idata, munged, sizeof (munged), name);\n    snprintf (command, sizeof (command),\n#ifdef USE_SIDEBAR\n\t      \"STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT MESSAGES)\", munged);\n#else\n\t      \"STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT)\", munged);\n#endif\n\n    if (imap_exec (idata, command, IMAP_CMD_QUEUE) < 0)\n    {\n      dprint (1, (debugfile, \"Error queueing command\\n\"));\n      return 0;\n    }\n  }\n\n  if (lastdata && (imap_exec (lastdata, NULL, IMAP_CMD_FAIL_OK) == -1))\n  {\n    dprint (1, (debugfile, \"Error polling mailboxes\\n\"));\n    return 0;\n  }\n\n  /* collect results */\n  for (mailbox = Incoming; mailbox; mailbox = mailbox->next)\n  {\n    if (mailbox->magic == M_IMAP && mailbox->new)\n      buffies++;\n  }\n\n  return buffies;\n}\n\n/* imap_status: returns count of messages in mailbox, or -1 on error.\n * if queue != 0, queue the command and expect it to have been run\n * on the next call (for pipelining the postponed count) */\nint imap_status (char* path, int queue)\n{\n  static int queued = 0;\n\n  IMAP_DATA *idata;\n  char buf[LONG_STRING];\n  char mbox[LONG_STRING];\n  IMAP_STATUS* status;\n\n  if (imap_get_mailbox (path, &idata, buf, sizeof (buf)) < 0)\n    return -1;\n\n  if (!imap_mxcmp (buf, idata->mailbox))\n    /* We are in the folder we're polling - just return the mailbox count */\n    return idata->ctx->msgcount;\n  else if (mutt_bit_isset(idata->capabilities,IMAP4REV1) ||\n\t   mutt_bit_isset(idata->capabilities,STATUS))\n  {\n    imap_munge_mbox_name (idata, mbox, sizeof(mbox), buf);\n    snprintf (buf, sizeof (buf), \"STATUS %s (%s)\", mbox, \"MESSAGES\");\n    imap_unmunge_mbox_name (idata, mbox);\n  }\n  else\n    /* Server does not support STATUS, and this is not the current mailbox.\n     * There is no lightweight way to check recent arrivals */\n    return -1;\n\n  if (queue)\n  {\n    imap_exec (idata, buf, IMAP_CMD_QUEUE);\n    queued = 1;\n    return 0;\n  }\n  else if (!queued)\n    imap_exec (idata, buf, 0);\n\n  queued = 0;\n  if ((status = imap_mboxcache_get (idata, mbox, 0)))\n    return status->messages;\n\n  return 0;\n}\n\n/* return cached mailbox stats or NULL if create is 0 */\nIMAP_STATUS* imap_mboxcache_get (IMAP_DATA* idata, const char* mbox, int create)\n{\n  LIST* cur;\n  IMAP_STATUS* status;\n  IMAP_STATUS scache;\n#ifdef USE_HCACHE\n  header_cache_t *hc = NULL;\n  unsigned int *uidvalidity = NULL;\n  unsigned int *uidnext = NULL;\n#endif\n\n  for (cur = idata->mboxcache; cur; cur = cur->next)\n  {\n    status = (IMAP_STATUS*)cur->data;\n\n    if (!imap_mxcmp (mbox, status->name))\n      return status;\n  }\n  status = NULL;\n\n  /* lame */\n  if (create)\n  {\n    memset (&scache, 0, sizeof (scache));\n    scache.name = (char*)mbox;\n    idata->mboxcache = mutt_add_list_n (idata->mboxcache, &scache,\n                                        sizeof (scache));\n    status = imap_mboxcache_get (idata, mbox, 0);\n    status->name = safe_strdup (mbox);\n  }\n\n#ifdef USE_HCACHE\n  hc = imap_hcache_open (idata, mbox);\n  if (hc)\n  {\n    uidvalidity = mutt_hcache_fetch_raw (hc, \"/UIDVALIDITY\", imap_hcache_keylen);\n    uidnext = mutt_hcache_fetch_raw (hc, \"/UIDNEXT\", imap_hcache_keylen);\n    mutt_hcache_close (hc);\n    if (uidvalidity)\n    {\n      if (!status)\n      {\n        FREE (&uidvalidity);\n        FREE (&uidnext);\n        return imap_mboxcache_get (idata, mbox, 1);\n      }\n      status->uidvalidity = *uidvalidity;\n      status->uidnext = uidnext ? *uidnext: 0;\n      dprint (3, (debugfile, \"mboxcache: hcache uidvalidity %d, uidnext %d\\n\",\n                  status->uidvalidity, status->uidnext));\n    }\n    FREE (&uidvalidity);\n    FREE (&uidnext);\n  }\n#endif\n\n  return status;\n}\n\nvoid imap_mboxcache_free (IMAP_DATA* idata)\n{\n  LIST* cur;\n  IMAP_STATUS* status;\n\n  for (cur = idata->mboxcache; cur; cur = cur->next)\n  {\n    status = (IMAP_STATUS*)cur->data;\n\n    FREE (&status->name);\n  }\n\n  mutt_free_list (&idata->mboxcache);\n}\n\n/* returns number of patterns in the search that should be done server-side\n * (eg are full-text) */\nstatic int do_search (const pattern_t* search, int allpats)\n{\n  int rc = 0;\n  const pattern_t* pat;\n\n  for (pat = search; pat; pat = pat->next)\n  {\n    switch (pat->op)\n    {\n      case M_BODY:\n      case M_HEADER:\n      case M_WHOLE_MSG:\n        if (pat->stringmatch)\n          rc++;\n        break;\n      default:\n        if (pat->child && do_search (pat->child, 1))\n          rc++;\n    }\n\n    if (!allpats)\n      break;\n  }\n\n  return rc;\n}\n\n/* convert mutt pattern_t to IMAP SEARCH command containing only elements\n * that require full-text search (mutt already has what it needs for most\n * match types, and does a better job (eg server doesn't support regexps). */\nstatic int imap_compile_search (const pattern_t* pat, BUFFER* buf)\n{\n  if (! do_search (pat, 0))\n    return 0;\n\n  if (pat->not)\n    mutt_buffer_addstr (buf, \"NOT \");\n\n  if (pat->child)\n  {\n    int clauses;\n\n    if ((clauses = do_search (pat->child, 1)) > 0)\n    {\n      const pattern_t* clause = pat->child;\n\n      mutt_buffer_addch (buf, '(');\n\n      while (clauses)\n      {\n        if (do_search (clause, 0))\n        {\n          if (pat->op == M_OR && clauses > 1)\n            mutt_buffer_addstr (buf, \"OR \");\n          clauses--;\n\n          if (imap_compile_search (clause, buf) < 0)\n            return -1;\n\n          if (clauses)\n            mutt_buffer_addch (buf, ' ');\n\n        }\n        clause = clause->next;\n      }\n\n      mutt_buffer_addch (buf, ')');\n    }\n  }\n  else\n  {\n    char term[STRING];\n    char *delim;\n\n    switch (pat->op)\n    {\n      case M_HEADER:\n        mutt_buffer_addstr (buf, \"HEADER \");\n\n        /* extract header name */\n        if (! (delim = strchr (pat->p.str, ':')))\n        {\n          mutt_error (_(\"Header search without header name: %s\"), pat->p.str);\n          return -1;\n        }\n        *delim = '\\0';\n        imap_quote_string (term, sizeof (term), pat->p.str);\n        mutt_buffer_addstr (buf, term);\n        mutt_buffer_addch (buf, ' ');\n\n        /* and field */\n        *delim = ':';\n        delim++;\n        SKIPWS(delim);\n        imap_quote_string (term, sizeof (term), delim);\n        mutt_buffer_addstr (buf, term);\n        break;\n      case M_BODY:\n        mutt_buffer_addstr (buf, \"BODY \");\n        imap_quote_string (term, sizeof (term), pat->p.str);\n        mutt_buffer_addstr (buf, term);\n        break;\n      case M_WHOLE_MSG:\n        mutt_buffer_addstr (buf, \"TEXT \");\n        imap_quote_string (term, sizeof (term), pat->p.str);\n        mutt_buffer_addstr (buf, term);\n        break;\n    }\n  }\n\n  return 0;\n}\n\nint imap_search (CONTEXT* ctx, const pattern_t* pat)\n{\n  BUFFER buf;\n  IMAP_DATA* idata = (IMAP_DATA*)ctx->data;\n  int i;\n\n  for (i = 0; i < ctx->msgcount; i++)\n    ctx->hdrs[i]->matched = 0;\n\n  if (!do_search (pat, 1))\n    return 0;\n\n  mutt_buffer_init (&buf);\n  mutt_buffer_addstr (&buf, \"UID SEARCH \");\n  if (imap_compile_search (pat, &buf) < 0)\n  {\n    FREE (&buf.data);\n    return -1;\n  }\n  if (imap_exec (idata, buf.data, 0) < 0)\n  {\n    FREE (&buf.data);\n    return -1;\n  }\n\n  FREE (&buf.data);\n  return 0;\n}\n\nint imap_subscribe (char *path, int subscribe)\n{\n  IMAP_DATA *idata;\n  char buf[LONG_STRING];\n  char mbox[LONG_STRING];\n  char errstr[STRING];\n  BUFFER err, token;\n  IMAP_MBOX mx;\n\n  if (!mx_is_imap (path) || imap_parse_path (path, &mx) || !mx.mbox)\n  {\n    mutt_error (_(\"Bad mailbox name\"));\n    return -1;\n  }\n  if (!(idata = imap_conn_find (&(mx.account), 0)))\n    goto fail;\n\n  imap_fix_path (idata, mx.mbox, buf, sizeof (buf));\n  if (!*buf)\n    strfcpy (buf, \"INBOX\", sizeof (buf));\n\n  if (option (OPTIMAPCHECKSUBSCRIBED))\n  {\n    mutt_buffer_init (&token);\n    mutt_buffer_init (&err);\n    err.data = errstr;\n    err.dsize = sizeof (errstr);\n    snprintf (mbox, sizeof (mbox), \"%smailboxes \\\"%s\\\"\",\n              subscribe ? \"\" : \"un\", path);\n    if (mutt_parse_rc_line (mbox, &token, &err))\n      dprint (1, (debugfile, \"Error adding subscribed mailbox: %s\\n\", errstr));\n    FREE (&token.data);\n  }\n\n  if (subscribe)\n    mutt_message (_(\"Subscribing to %s...\"), buf);\n  else\n    mutt_message (_(\"Unsubscribing from %s...\"), buf);\n  imap_munge_mbox_name (idata, mbox, sizeof(mbox), buf);\n\n  snprintf (buf, sizeof (buf), \"%sSUBSCRIBE %s\", subscribe ? \"\" : \"UN\", mbox);\n\n  if (imap_exec (idata, buf, 0) < 0)\n    goto fail;\n\n  imap_unmunge_mbox_name(idata, mx.mbox);\n  if (subscribe)\n    mutt_message (_(\"Subscribed to %s\"), mx.mbox);\n  else\n    mutt_message (_(\"Unsubscribed from %s\"), mx.mbox);\n  FREE (&mx.mbox);\n  return 0;\n\n fail:\n  FREE (&mx.mbox);\n  return -1;\n}\n\n/* trim dest to the length of the longest prefix it shares with src,\n * returning the length of the trimmed string */\nstatic int\nlongest_common_prefix (char *dest, const char* src, int start, size_t dlen)\n{\n  int pos = start;\n\n  while (pos < dlen && dest[pos] && dest[pos] == src[pos])\n    pos++;\n  dest[pos] = '\\0';\n\n  return pos;\n}\n\n/* look for IMAP URLs to complete from defined mailboxes. Could be extended\n * to complete over open connections and account/folder hooks too. */\nstatic int\nimap_complete_hosts (char *dest, size_t len)\n{\n  BUFFY* mailbox;\n  CONNECTION* conn;\n  int rc = -1;\n  int matchlen;\n\n  matchlen = mutt_strlen (dest);\n  for (mailbox = Incoming; mailbox; mailbox = mailbox->next)\n  {\n    if (!mutt_strncmp (dest, mailbox->path, matchlen))\n    {\n      if (rc)\n      {\n        strfcpy (dest, mailbox->path, len);\n        rc = 0;\n      }\n      else\n        longest_common_prefix (dest, mailbox->path, matchlen, len);\n    }\n  }\n\n  for (conn = mutt_socket_head (); conn; conn = conn->next)\n  {\n    ciss_url_t url;\n    char urlstr[LONG_STRING];\n\n    if (conn->account.type != M_ACCT_TYPE_IMAP)\n      continue;\n\n    mutt_account_tourl (&conn->account, &url);\n    /* FIXME: how to handle multiple users on the same host? */\n    url.user = NULL;\n    url.path = NULL;\n    url_ciss_tostring (&url, urlstr, sizeof (urlstr), 0);\n    if (!mutt_strncmp (dest, urlstr, matchlen))\n    {\n      if (rc)\n      {\n        strfcpy (dest, urlstr, len);\n        rc = 0;\n      }\n      else\n        longest_common_prefix (dest, urlstr, matchlen, len);\n    }\n  }\n\n  return rc;\n}\n\n/* imap_complete: given a partial IMAP folder path, return a string which\n *   adds as much to the path as is unique */\nint imap_complete(char* dest, size_t dlen, char* path) {\n  IMAP_DATA* idata;\n  char list[LONG_STRING];\n  char buf[LONG_STRING];\n  IMAP_LIST listresp;\n  char completion[LONG_STRING];\n  int clen, matchlen = 0;\n  int completions = 0;\n  IMAP_MBOX mx;\n  int rc;\n\n  if (imap_parse_path (path, &mx))\n  {\n    strfcpy (dest, path, dlen);\n    return imap_complete_hosts (dest, dlen);\n  }\n\n  /* don't open a new socket just for completion. Instead complete over\n   * known mailboxes/hooks/etc */\n  if (!(idata = imap_conn_find (&(mx.account), M_IMAP_CONN_NONEW)))\n  {\n    FREE (&mx.mbox);\n    strfcpy (dest, path, dlen);\n    return imap_complete_hosts (dest, dlen);\n  }\n\n  /* reformat path for IMAP list, and append wildcard */\n  /* don't use INBOX in place of \"\" */\n  if (mx.mbox && mx.mbox[0])\n    imap_fix_path (idata, mx.mbox, list, sizeof(list));\n  else\n    list[0] = '\\0';\n\n  /* fire off command */\n  snprintf (buf, sizeof(buf), \"%s \\\"\\\" \\\"%s%%\\\"\",\n    option (OPTIMAPLSUB) ? \"LSUB\" : \"LIST\", list);\n\n  imap_cmd_start (idata, buf);\n\n  /* and see what the results are */\n  strfcpy (completion, NONULL(mx.mbox), sizeof(completion));\n  idata->cmdtype = IMAP_CT_LIST;\n  idata->cmddata = &listresp;\n  do\n  {\n    listresp.name = NULL;\n    rc = imap_cmd_step (idata);\n\n    if (rc == IMAP_CMD_CONTINUE && listresp.name)\n    {\n      /* if the folder isn't selectable, append delimiter to force browse\n       * to enter it on second tab. */\n      if (listresp.noselect)\n      {\n        clen = strlen(listresp.name);\n        listresp.name[clen++] = listresp.delim;\n        listresp.name[clen] = '\\0';\n      }\n      /* copy in first word */\n      if (!completions)\n      {\n        strfcpy (completion, listresp.name, sizeof(completion));\n        matchlen = strlen (completion);\n        completions++;\n        continue;\n      }\n\n      matchlen = longest_common_prefix (completion, listresp.name, 0, matchlen);\n      completions++;\n    }\n  }\n  while (rc == IMAP_CMD_CONTINUE);\n  idata->cmddata = NULL;\n\n  if (completions)\n  {\n    /* reformat output */\n    imap_qualify_path (dest, dlen, &mx, completion);\n    mutt_pretty_mailbox (dest, dlen);\n\n    FREE (&mx.mbox);\n    return 0;\n  }\n\n  return -1;\n}\n"
  },
  {
    "path": "imap/imap.h",
    "content": "/*\n * Copyright (C) 1996-1998 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2000-2007 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _IMAP_H\n#define _IMAP_H 1\n\n#include \"account.h\"\n#include \"browser.h\"\n#include \"mailbox.h\"\n\n/* -- data structures -- */\ntypedef struct\n{\n  ACCOUNT account;\n  char* mbox;\n} IMAP_MBOX;\n\n/* imap.c */\nint imap_access (const char*, int);\nint imap_check_mailbox (CONTEXT *ctx, int *index_hint, int force);\nint imap_delete_mailbox (CONTEXT* idata, IMAP_MBOX mx);\nint imap_open_mailbox (CONTEXT *ctx);\nint imap_open_mailbox_append (CONTEXT *ctx);\nint imap_sync_mailbox (CONTEXT *ctx, int expunge, int *index_hint);\nint imap_close_mailbox (CONTEXT *ctx);\nint imap_buffy_check (int force);\nint imap_status (char *path, int queue);\nint imap_search (CONTEXT* ctx, const pattern_t* pat);\nint imap_subscribe (char *path, int subscribe);\nint imap_complete (char* dest, size_t dlen, char* path);\n\nvoid imap_allow_reopen (CONTEXT *ctx);\nvoid imap_disallow_reopen (CONTEXT *ctx);\n\n/* browse.c */\nint imap_browse (char* path, struct browser_state* state);\nint imap_mailbox_state (const char* path, struct mailbox_state* state);\nint imap_mailbox_create (const char* folder);\nint imap_mailbox_rename (const char* mailbox);\n\n/* message.c */\nint imap_append_message (CONTEXT* ctx, MESSAGE* msg);\nint imap_copy_messages (CONTEXT* ctx, HEADER* h, char* dest, int delete);\nint imap_fetch_message (MESSAGE* msg, CONTEXT* ctx, int msgno);\n\n/* socket.c */\nvoid imap_logout_all (void);\n\n/* util.c */\nint imap_expand_path (char* path, size_t len);\nint imap_parse_path (const char* path, IMAP_MBOX* mx);\nvoid imap_pretty_mailbox (char* path);\n\nint imap_wait_keepalive (pid_t pid);\nvoid imap_keepalive (void);\n\nint imap_account_match (const ACCOUNT* a1, const ACCOUNT* a2);\n\n#endif\n"
  },
  {
    "path": "imap/imap_private.h",
    "content": "/*\n * Copyright (C) 1996-1999 Brandon Long <blong@fiction.net>\n * Copyright (C) 1999-2009 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _IMAP_PRIVATE_H\n#define _IMAP_PRIVATE_H 1\n\n#include \"imap.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_socket.h\"\n#include \"bcache.h\"\n#ifdef USE_HCACHE\n#include \"hcache.h\"\n#endif\n#include \"message.h\"  /* for IMAP_HEADER_DATA */\n\n/* -- symbols -- */\n#define IMAP_PORT 143\n#define IMAP_SSL_PORT 993\n\n/* logging levels */\n#define IMAP_LOG_CMD  2\n#define IMAP_LOG_LTRL 4\n#define IMAP_LOG_PASS 5\n\n/* IMAP command responses. Used in IMAP_COMMAND.state too */\n/* <tag> OK ... */\n#define IMAP_CMD_OK       (0)\n/* <tag> BAD ... */\n#define IMAP_CMD_BAD      (-1)\n/* <tag> NO ... */\n#define IMAP_CMD_NO       (-2)\n/* * ... */\n#define IMAP_CMD_CONTINUE (1)\n/* + */\n#define IMAP_CMD_RESPOND  (2)\n/* IMAP_COMMAND.state additions */\n#define IMAP_CMD_NEW    (3)\n\n/* number of entries in the hash table */\n#define IMAP_CACHE_LEN 10\n\n#define SEQLEN 5\n/* maximum length of command lines before they must be split (for\n * lazy servers) */\n#define IMAP_MAX_CMDLEN 1024\n\n#define IMAP_REOPEN_ALLOW     (1<<0)\n#define IMAP_EXPUNGE_EXPECTED (1<<1)\n#define IMAP_EXPUNGE_PENDING  (1<<2)\n#define IMAP_NEWMAIL_PENDING  (1<<3)\n#define IMAP_FLAGS_PENDING    (1<<4)\n\n/* imap_exec flags (see imap_exec) */\n#define IMAP_CMD_FAIL_OK (1<<0)\n#define IMAP_CMD_PASS    (1<<1)\n#define IMAP_CMD_QUEUE   (1<<2)\n\n/* length of \"DD-MMM-YYYY HH:MM:SS +ZZzz\" (null-terminated) */\n#define IMAP_DATELEN 27\n\nenum\n{\n  IMAP_FATAL = 1,\n  IMAP_BYE\n};\n\nenum\n{\n  /* States */\n  IMAP_DISCONNECTED = 0,\n  IMAP_CONNECTED,\n  IMAP_AUTHENTICATED,\n  IMAP_SELECTED,\n  \n  /* and pseudo-states */\n  IMAP_IDLE\n};\n\nenum\n{\n  /* Namespace types */\n  IMAP_NS_PERSONAL = 0,\n  IMAP_NS_OTHER,\n  IMAP_NS_SHARED\n};\n\n/* Capabilities we are interested in */\nenum\n{\n  IMAP4 = 0,\n  IMAP4REV1,\n  STATUS,\n  ACL,\t\t\t\t/* RFC 2086: IMAP4 ACL extension */\n  NAMESPACE,                   \t/* RFC 2342: IMAP4 Namespace */\n  ACRAM_MD5,\t\t\t/* RFC 2195: CRAM-MD5 authentication */\n  AGSSAPI,\t\t\t/* RFC 1731: GSSAPI authentication */\n  AUTH_ANON,\t\t\t/* AUTH=ANONYMOUS */\n  STARTTLS,\t\t\t/* RFC 2595: STARTTLS */\n  LOGINDISABLED,\t\t/*           LOGINDISABLED */\n  IDLE,                         /* RFC 2177: IDLE */\n  SASL_IR,                      /* SASL initial response draft */\n  ENABLE,                       /* RFC 5161 */\n\n  CAPMAX\n};\n\n/* imap_conn_find flags */\n#define M_IMAP_CONN_NONEW    (1<<0)\n#define M_IMAP_CONN_NOSELECT (1<<1)\n\n/* -- data structures -- */\ntypedef struct\n{\n  unsigned int uid;\n  char* path;\n} IMAP_CACHE;\n\ntypedef struct\n{\n  char* name;\n\n  unsigned int messages;\n  unsigned int recent;\n  unsigned int uidnext;\n  unsigned int uidvalidity;\n  unsigned int unseen;\n} IMAP_STATUS;\n\ntypedef struct\n{\n  char* name;\n\n  char delim;\n  /* if we end up storing a lot of these we could turn this into a bitfield */\n  unsigned char noselect;\n  unsigned char noinferiors;\n} IMAP_LIST;\n\n/* IMAP command structure */\ntypedef struct\n{\n  char seq[SEQLEN+1];\n  int state;\n} IMAP_COMMAND;\n\ntypedef enum\n{\n  IMAP_CT_NONE = 0,\n  IMAP_CT_LIST,\n  IMAP_CT_STATUS\n} IMAP_COMMAND_TYPE;\n\ntypedef struct\n{\n  /* This data is specific to a CONNECTION to an IMAP server */\n  CONNECTION *conn;\n  unsigned char state;\n  unsigned char status;\n  /* let me explain capstr: SASL needs the capability string (not bits).\n   * we have 3 options:\n   *   1. rerun CAPABILITY inside SASL function.\n   *   2. build appropriate CAPABILITY string by reverse-engineering from bits.\n   *   3. keep a copy until after authentication.\n   * I've chosen (3) for now. (2) might not be too bad, but it involves\n   * tracking all possible capabilities. bah. (1) I don't like because\n   * it's just no fun to get the same information twice */\n  char* capstr;\n  unsigned char capabilities[(CAPMAX + 7)/8];\n  unsigned int seqno;\n  time_t lastread; /* last time we read a command for the server */\n  char* buf;\n  unsigned int blen;\n  \n  /* If nonzero, we can send UTF-8, and the server will use UTF8 rather\n   * than mUTF7 */\n  int unicode;\n\n  /* if set, the response parser will store results for complicated commands\n   * here. */\n  IMAP_COMMAND_TYPE cmdtype;\n  void* cmddata;\n\n  /* command queue */\n  IMAP_COMMAND* cmds;\n  int cmdslots;\n  int nextcmd;\n  int lastcmd;\n  BUFFER* cmdbuf;\n\n  /* cache IMAP_STATUS of visited mailboxes */\n  LIST* mboxcache;\n\n  /* The following data is all specific to the currently SELECTED mbox */\n  char delim;\n  CONTEXT *ctx;\n  char *mailbox;\n  unsigned short check_status;\n  unsigned char reopen;\n  unsigned int newMailCount;\n  IMAP_CACHE cache[IMAP_CACHE_LEN];\n  unsigned int uid_validity;\n  unsigned int uidnext;\n  body_cache_t *bcache;\n\n  /* all folder flags - system flags AND keywords */\n  LIST *flags;\n#ifdef USE_HCACHE\n  header_cache_t *hcache;\n#endif\n} IMAP_DATA;\n/* I wish that were called IMAP_CONTEXT :( */\n\n/* -- macros -- */\n#define CTX_DATA ((IMAP_DATA *) ctx->data)\n\n/* -- private IMAP functions -- */\n/* imap.c */\nint imap_create_mailbox (IMAP_DATA* idata, char* mailbox);\nint imap_rename_mailbox (IMAP_DATA* idata, IMAP_MBOX* mx, const char* newname);\nIMAP_STATUS* imap_mboxcache_get (IMAP_DATA* idata, const char* mbox,\n                                 int create);\nvoid imap_mboxcache_free (IMAP_DATA* idata);\nint imap_exec_msgset (IMAP_DATA* idata, const char* pre, const char* post,\n                      int flag, int changed, int invert);\nint imap_open_connection (IMAP_DATA* idata);\nvoid imap_close_connection (IMAP_DATA* idata);\nIMAP_DATA* imap_conn_find (const ACCOUNT* account, int flags);\nint imap_read_literal (FILE* fp, IMAP_DATA* idata, long bytes, progress_t*);\nvoid imap_expunge_mailbox (IMAP_DATA* idata);\nvoid imap_logout (IMAP_DATA** idata);\nint imap_sync_message (IMAP_DATA *idata, HEADER *hdr, BUFFER *cmd,\n  int *err_continue);\nint imap_has_flag (LIST* flag_list, const char* flag);\n\n/* auth.c */\nint imap_authenticate (IMAP_DATA* idata);\n\n/* command.c */\nint imap_cmd_start (IMAP_DATA* idata, const char* cmd);\nint imap_cmd_step (IMAP_DATA* idata);\nvoid imap_cmd_finish (IMAP_DATA* idata);\nint imap_code (const char* s);\nconst char* imap_cmd_trailer (IMAP_DATA* idata);\nint imap_exec (IMAP_DATA* idata, const char* cmd, int flags);\nint imap_cmd_idle (IMAP_DATA* idata);\n\n/* message.c */\nvoid imap_add_keywords (char* s, HEADER* keywords, LIST* mailbox_flags, size_t slen);\nvoid imap_free_header_data (IMAP_HEADER_DATA** data);\nint imap_read_headers (IMAP_DATA* idata, int msgbegin, int msgend);\nchar* imap_set_flags (IMAP_DATA* idata, HEADER* h, char* s);\nint imap_cache_del (IMAP_DATA* idata, HEADER* h);\nint imap_cache_clean (IMAP_DATA* idata);\n\n/* util.c */\n#ifdef USE_HCACHE\nheader_cache_t* imap_hcache_open (IMAP_DATA* idata, const char* path);\nvoid imap_hcache_close (IMAP_DATA* idata);\nHEADER* imap_hcache_get (IMAP_DATA* idata, unsigned int uid);\nint imap_hcache_put (IMAP_DATA* idata, HEADER* h);\nint imap_hcache_del (IMAP_DATA* idata, unsigned int uid);\n#endif\n\nint imap_continue (const char* msg, const char* resp);\nvoid imap_error (const char* where, const char* msg);\nIMAP_DATA* imap_new_idata (void);\nvoid imap_free_idata (IMAP_DATA** idata);\nchar* imap_fix_path (IMAP_DATA* idata, const char* mailbox, char* path, \n  size_t plen);\nvoid imap_cachepath(IMAP_DATA* idata, const char* mailbox, char* dest,\n                    size_t dlen);\nint imap_get_literal_count (const char* buf, long* bytes);\nchar* imap_get_qualifier (char* buf);\nint imap_mxcmp (const char* mx1, const char* mx2);\nchar* imap_next_word (char* s);\ntime_t imap_parse_date (char* s);\nvoid imap_make_date (char* buf, time_t timestamp);\nvoid imap_qualify_path (char *dest, size_t len, IMAP_MBOX *mx, char* path);\nvoid imap_quote_string (char* dest, size_t slen, const char* src);\nvoid imap_unquote_string (char* s);\nvoid imap_munge_mbox_name (IMAP_DATA *idata, char *dest, size_t dlen, const char *src);\nvoid imap_unmunge_mbox_name (IMAP_DATA *idata, char *s);\nint imap_wordcasecmp(const char *a, const char *b);\n\n/* utf7.c */\nvoid imap_utf_encode (IMAP_DATA *idata, char **s);\nvoid imap_utf_decode (IMAP_DATA *idata, char **s);\n\n#if USE_HCACHE\n/* typedef size_t (*hcache_keylen_t)(const char* fn); */\n#define imap_hcache_keylen mutt_strlen\n#endif /* USE_HCACHE */\n\n#endif\n"
  },
  {
    "path": "imap/message.c",
    "content": "/*\n * Copyright (C) 1996-1999 Brandon Long <blong@fiction.net>\n * Copyright (C) 1999-2009 Brendan Cully <brendan@kublai.com>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */\n\n/* message parsing/updating functions */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <errno.h>\n#include <stdlib.h>\n#include <ctype.h>\n\n#include \"mutt.h\"\n#include \"imap_private.h\"\n#include \"mx.h\"\n\n#ifdef HAVE_PGP\n#include \"pgp.h\"\n#endif\n\n#if USE_HCACHE\n#include \"hcache.h\"\n#endif\n\n#include \"bcache.h\"\n\nstatic FILE* msg_cache_get (IMAP_DATA* idata, HEADER* h);\nstatic FILE* msg_cache_put (IMAP_DATA* idata, HEADER* h);\nstatic int msg_cache_commit (IMAP_DATA* idata, HEADER* h);\n\nstatic void flush_buffer(char* buf, size_t* len, CONNECTION* conn);\nstatic int msg_fetch_header (CONTEXT* ctx, IMAP_HEADER* h, char* buf,\n  FILE* fp);\nstatic int msg_parse_fetch (IMAP_HEADER* h, char* s);\nstatic char* msg_parse_flags (IMAP_HEADER* h, char* s);\n\n/* imap_read_headers:\n * Changed to read many headers instead of just one. It will return the\n * msgno of the last message read. It will return a value other than\n * msgend if mail comes in while downloading headers (in theory).\n */\nint imap_read_headers (IMAP_DATA* idata, int msgbegin, int msgend)\n{\n  CONTEXT* ctx;\n  char *hdrreq = NULL;\n  FILE *fp;\n  char tempfile[_POSIX_PATH_MAX];\n  int msgno, idx = msgbegin - 1;\n  IMAP_HEADER h;\n  IMAP_STATUS* status;\n  int rc, mfhrc, oldmsgcount;\n  int fetchlast = 0;\n  int maxuid = 0;\n  static const char * const want_headers = \"DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES LIST-POST X-LABEL\";\n  progress_t progress;\n  int retval = -1;\n\n#if USE_HCACHE\n  char buf[LONG_STRING];\n  unsigned int *uid_validity = NULL;\n  unsigned int *puidnext = NULL;\n  unsigned int uidnext = 0;\n  int evalhc = 0;\n#endif /* USE_HCACHE */\n\n  ctx = idata->ctx;\n\n  if (mutt_bit_isset (idata->capabilities,IMAP4REV1))\n  {\n    safe_asprintf (&hdrreq, \"BODY.PEEK[HEADER.FIELDS (%s%s%s)]\",\n                           want_headers, ImapHeaders ? \" \" : \"\", NONULL (ImapHeaders));\n  }\n  else if (mutt_bit_isset (idata->capabilities,IMAP4))\n  {\n    safe_asprintf (&hdrreq, \"RFC822.HEADER.LINES (%s%s%s)\",\n                           want_headers, ImapHeaders ? \" \" : \"\", NONULL (ImapHeaders));\n  }\n  else\n  {\t/* Unable to fetch headers for lower versions */\n    mutt_error _(\"Unable to fetch headers from this IMAP server version.\");\n    mutt_sleep (2);\t/* pause a moment to let the user see the error */\n    goto error_out_0;\n  }\n\n  /* instead of downloading all headers and then parsing them, we parse them\n   * as they come in. */\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (!(fp = safe_fopen (tempfile, \"w+\")))\n  {\n    mutt_error (_(\"Could not create temporary file %s\"), tempfile);\n    mutt_sleep (2);\n    goto error_out_0;\n  }\n  unlink (tempfile);\n\n  /* make sure context has room to hold the mailbox */\n  while ((msgend) >= idata->ctx->hdrmax)\n    mx_alloc_memory (idata->ctx);\n\n  oldmsgcount = ctx->msgcount;\n  idata->reopen &= ~(IMAP_REOPEN_ALLOW|IMAP_NEWMAIL_PENDING);\n  idata->newMailCount = 0;\n\n#if USE_HCACHE\n  idata->hcache = imap_hcache_open (idata, NULL);\n\n  if (idata->hcache && !msgbegin)\n  {\n    uid_validity = mutt_hcache_fetch_raw (idata->hcache, \"/UIDVALIDITY\", imap_hcache_keylen);\n    puidnext = mutt_hcache_fetch_raw (idata->hcache, \"/UIDNEXT\", imap_hcache_keylen);\n    if (puidnext)\n    {\n      uidnext = *puidnext;\n      FREE (&puidnext);\n    }\n    if (uid_validity && uidnext && *uid_validity == idata->uid_validity)\n      evalhc = 1;\n    FREE (&uid_validity);\n  }\n  if (evalhc)\n  {\n    /* L10N:\n       Comparing the cached data with the IMAP server's data */\n    mutt_progress_init (&progress, _(\"Evaluating cache...\"),\n\t\t\tM_PROGRESS_MSG, ReadInc, msgend + 1);\n\n    snprintf (buf, sizeof (buf),\n      \"UID FETCH 1:%u (UID FLAGS)\", uidnext - 1);\n\n    imap_cmd_start (idata, buf);\n\n    rc = IMAP_CMD_CONTINUE;\n    for (msgno = msgbegin; rc == IMAP_CMD_CONTINUE; msgno++)\n    {\n      mutt_progress_update (&progress, msgno + 1, -1);\n\n      memset (&h, 0, sizeof (h));\n      h.data = safe_calloc (1, sizeof (IMAP_HEADER_DATA));\n      do\n      {\n        mfhrc = 0;\n\n        rc = imap_cmd_step (idata);\n        if (rc != IMAP_CMD_CONTINUE)\n\t{\n\t  imap_free_header_data (&h.data);\n          break;\n\t}\n\n        /* hole in the header cache */\n        if (!evalhc)\n          continue;\n\n        if ((mfhrc = msg_fetch_header (ctx, &h, idata->buf, NULL)) == -1)\n          continue;\n        else if (mfhrc < 0)\n\t{\n\t  imap_free_header_data (&h.data);\n          break;\n\t}\n\n        if (!h.data->uid)\n        {\n          dprint (2, (debugfile, \"imap_read_headers: skipping hcache FETCH \"\n                      \"response for unknown message number %d\\n\", h.sid));\n          mfhrc = -1;\n          continue;\n        }\n\n        idx++;\n        ctx->hdrs[idx] = imap_hcache_get (idata, h.data->uid);\n        if (ctx->hdrs[idx])\n        {\n  \t  ctx->hdrs[idx]->index = idx;\n  \t  /* messages which have not been expunged are ACTIVE (borrowed from mh\n  \t   * folders) */\n  \t  ctx->hdrs[idx]->active = 1;\n          ctx->hdrs[idx]->read = h.data->read;\n          ctx->hdrs[idx]->old = h.data->old;\n          ctx->hdrs[idx]->deleted = h.data->deleted;\n          ctx->hdrs[idx]->flagged = h.data->flagged;\n          ctx->hdrs[idx]->replied = h.data->replied;\n          ctx->hdrs[idx]->changed = h.data->changed;\n          /*  ctx->hdrs[msgno]->received is restored from mutt_hcache_restore */\n          ctx->hdrs[idx]->data = (void *) (h.data);\n\n          ctx->msgcount++;\n          ctx->size += ctx->hdrs[idx]->content->length;\n        }\n\telse\n        {\n\t  /* bad header in the cache, we'll have to refetch. */\n          dprint (3, (debugfile, \"bad cache entry at %d, giving up\\n\", h.sid - 1));\n          imap_free_header_data(&h.data);\n          evalhc = 0;\n          idx--;\n        }\n      }\n      while (rc != IMAP_CMD_OK && mfhrc == -1);\n      if (rc == IMAP_CMD_OK)\n        break;\n      if ((mfhrc < -1) || ((rc != IMAP_CMD_CONTINUE) && (rc != IMAP_CMD_OK)))\n      {\n        imap_free_header_data (&h.data);\n        imap_hcache_close (idata);\n\tgoto error_out_1;\n      }\n    }\n    /* could also look for first null header in case hcache is holey */\n    msgbegin = ctx->msgcount;\n  }\n#endif /* USE_HCACHE */\n\n  mutt_progress_init (&progress, _(\"Fetching message headers...\"),\n\t\t      M_PROGRESS_MSG, ReadInc, msgend + 1);\n\n  for (msgno = msgbegin; msgno <= msgend ; msgno++)\n  {\n    mutt_progress_update (&progress, msgno + 1, -1);\n\n    /* we may get notification of new mail while fetching headers */\n    if (msgno + 1 > fetchlast)\n    {\n      char *cmd;\n\n      fetchlast = msgend + 1;\n      safe_asprintf (&cmd, \"FETCH %d:%d (UID FLAGS INTERNALDATE RFC822.SIZE %s)\",\n                     msgno + 1, fetchlast, hdrreq);\n      imap_cmd_start (idata, cmd);\n      FREE (&cmd);\n    }\n\n    rewind (fp);\n    memset (&h, 0, sizeof (h));\n    h.data = safe_calloc (1, sizeof (IMAP_HEADER_DATA));\n\n    /* this DO loop does two things:\n     * 1. handles untagged messages, so we can try again on the same msg\n     * 2. fetches the tagged response at the end of the last message.\n     */\n    do\n    {\n      mfhrc = 0;\n\n      rc = imap_cmd_step (idata);\n      if (rc != IMAP_CMD_CONTINUE)\n\tbreak;\n\n      if ((mfhrc = msg_fetch_header (ctx, &h, idata->buf, fp)) == -1)\n\tcontinue;\n      else if (mfhrc < 0)\n\tbreak;\n\n      if (!ftello (fp))\n      {\n        dprint (2, (debugfile, \"msg_fetch_header: ignoring fetch response with no body\\n\"));\n        mfhrc = -1;\n        msgend--;\n        continue;\n      }\n\n      /* make sure we don't get remnants from older larger message headers */\n      fputs (\"\\n\\n\", fp);\n\n      idx++;\n      if (idx > msgend)\n      {\n        dprint (1, (debugfile, \"imap_read_headers: skipping FETCH response for \"\n                    \"unknown message number %d\\n\", h.sid));\n        mfhrc = -1;\n        idx--;\n        continue;\n      }\n      /* May receive FLAGS updates in a separate untagged response (#2935) */\n      if (idx < ctx->msgcount)\n      {\n\tdprint (2, (debugfile, \"imap_read_headers: message %d is not new\\n\",\n\t\t    h.sid));\n        idx--;\n\tcontinue;\n      }\n\n      ctx->hdrs[idx] = mutt_new_header ();\n\n      ctx->hdrs[idx]->index = h.sid - 1;\n      /* messages which have not been expunged are ACTIVE (borrowed from mh\n       * folders) */\n      ctx->hdrs[idx]->active = 1;\n      ctx->hdrs[idx]->read = h.data->read;\n      ctx->hdrs[idx]->old = h.data->old;\n      ctx->hdrs[idx]->deleted = h.data->deleted;\n      ctx->hdrs[idx]->flagged = h.data->flagged;\n      ctx->hdrs[idx]->replied = h.data->replied;\n      ctx->hdrs[idx]->changed = h.data->changed;\n      ctx->hdrs[idx]->received = h.received;\n      ctx->hdrs[idx]->data = (void *) (h.data);\n\n      if (maxuid < h.data->uid)\n        maxuid = h.data->uid;\n\n      rewind (fp);\n      /* NOTE: if Date: header is missing, mutt_read_rfc822_header depends\n       *   on h.received being set */\n      ctx->hdrs[idx]->env = mutt_read_rfc822_header (fp, ctx->hdrs[idx],\n        0, 0);\n      /* content built as a side-effect of mutt_read_rfc822_header */\n      ctx->hdrs[idx]->content->length = h.content_length;\n      ctx->size += h.content_length;\n\n#if USE_HCACHE\n      imap_hcache_put (idata, ctx->hdrs[idx]);\n#endif /* USE_HCACHE */\n\n      ctx->msgcount++;\n    }\n    while ((rc != IMAP_CMD_OK) && ((mfhrc == -1) ||\n      ((msgno + 1) >= fetchlast)));\n\n    if ((mfhrc < -1) || ((rc != IMAP_CMD_CONTINUE) && (rc != IMAP_CMD_OK)))\n    {\n      imap_free_header_data (&h.data);\n#if USE_HCACHE\n      imap_hcache_close (idata);\n#endif\n      goto error_out_1;\n    }\n\n    /* in case we get new mail while fetching the headers */\n    if (idata->reopen & IMAP_NEWMAIL_PENDING)\n    {\n      msgend = idata->newMailCount - 1;\n      while ((msgend) >= ctx->hdrmax)\n\tmx_alloc_memory (ctx);\n      idata->reopen &= ~IMAP_NEWMAIL_PENDING;\n      idata->newMailCount = 0;\n    }\n  }\n\n  if (maxuid && (status = imap_mboxcache_get (idata, idata->mailbox, 0)))\n  status->uidnext = maxuid + 1;\n\n#if USE_HCACHE\n  mutt_hcache_store_raw (idata->hcache, \"/UIDVALIDITY\", &idata->uid_validity,\n                         sizeof (idata->uid_validity), imap_hcache_keylen);\n  if (maxuid && idata->uidnext < maxuid + 1)\n  {\n    dprint (2, (debugfile, \"Overriding UIDNEXT: %u -> %u\\n\", idata->uidnext, maxuid + 1));\n    idata->uidnext = maxuid + 1;\n  }\n  if (idata->uidnext > 1)\n    mutt_hcache_store_raw (idata->hcache, \"/UIDNEXT\", &idata->uidnext,\n\t\t\t   sizeof (idata->uidnext), imap_hcache_keylen);\n\n  imap_hcache_close (idata);\n#endif /* USE_HCACHE */\n\n  if (ctx->msgcount > oldmsgcount)\n  {\n    mx_alloc_memory(ctx);\n    mx_update_context (ctx, ctx->msgcount - oldmsgcount);\n  }\n\n  idata->reopen |= IMAP_REOPEN_ALLOW;\n\n  retval = msgend;\n\nerror_out_1:\n  safe_fclose (&fp);\n\nerror_out_0:\n  FREE (&hdrreq);\n\n  return retval;\n}\n\nint imap_fetch_message (MESSAGE *msg, CONTEXT *ctx, int msgno)\n{\n  IMAP_DATA* idata;\n  HEADER* h;\n  ENVELOPE* newenv;\n  char buf[LONG_STRING];\n  char path[_POSIX_PATH_MAX];\n  char *pc;\n  long bytes;\n  progress_t progressbar;\n  int uid;\n  int cacheno;\n  IMAP_CACHE *cache;\n  int read;\n  int rc;\n  /* Sam's weird courier server returns an OK response even when FETCH\n   * fails. Thanks Sam. */\n  short fetched = 0;\n\n  idata = (IMAP_DATA*) ctx->data;\n  h = ctx->hdrs[msgno];\n\n  if ((msg->fp = msg_cache_get (idata, h)))\n  {\n    if (HEADER_DATA(h)->parsed)\n      return 0;\n    else\n      goto parsemsg;\n  }\n\n  /* we still do some caching even if imap_cachedir is unset */\n  /* see if we already have the message in our cache */\n  cacheno = HEADER_DATA(h)->uid % IMAP_CACHE_LEN;\n  cache = &idata->cache[cacheno];\n\n  if (cache->path)\n  {\n    /* don't treat cache errors as fatal, just fall back. */\n    if (cache->uid == HEADER_DATA(h)->uid &&\n        (msg->fp = fopen (cache->path, \"r\")))\n      return 0;\n    else\n    {\n      unlink (cache->path);\n      FREE (&cache->path);\n    }\n  }\n\n  if (!isendwin())\n    mutt_message _(\"Fetching message...\");\n\n  if (!(msg->fp = msg_cache_put (idata, h)))\n  {\n    cache->uid = HEADER_DATA(h)->uid;\n    mutt_mktemp (path, sizeof (path));\n    cache->path = safe_strdup (path);\n    if (!(msg->fp = safe_fopen (path, \"w+\")))\n    {\n      FREE (&cache->path);\n      return -1;\n    }\n  }\n\n  /* mark this header as currently inactive so the command handler won't\n   * also try to update it. HACK until all this code can be moved into the\n   * command handler */\n  h->active = 0;\n\n  snprintf (buf, sizeof (buf), \"UID FETCH %u %s\", HEADER_DATA(h)->uid,\n\t    (mutt_bit_isset (idata->capabilities, IMAP4REV1) ?\n\t     (option (OPTIMAPPEEK) ? \"BODY.PEEK[]\" : \"BODY[]\") :\n\t     \"RFC822\"));\n\n  imap_cmd_start (idata, buf);\n  do\n  {\n    if ((rc = imap_cmd_step (idata)) != IMAP_CMD_CONTINUE)\n      break;\n\n    pc = idata->buf;\n    pc = imap_next_word (pc);\n    pc = imap_next_word (pc);\n\n    if (!ascii_strncasecmp (\"FETCH\", pc, 5))\n    {\n      while (*pc)\n      {\n\tpc = imap_next_word (pc);\n\tif (pc[0] == '(')\n\t  pc++;\n\tif (ascii_strncasecmp (\"UID\", pc, 3) == 0)\n\t{\n\t  pc = imap_next_word (pc);\n\t  uid = atoi (pc);\n\t  if (uid != HEADER_DATA(h)->uid)\n\t    mutt_error (_(\"The message index is incorrect. Try reopening the mailbox.\"));\n\t}\n\telse if ((ascii_strncasecmp (\"RFC822\", pc, 6) == 0) ||\n\t\t (ascii_strncasecmp (\"BODY[]\", pc, 6) == 0))\n\t{\n\t  pc = imap_next_word (pc);\n\t  if (imap_get_literal_count(pc, &bytes) < 0)\n\t  {\n\t    imap_error (\"imap_fetch_message()\", buf);\n\t    goto bail;\n\t  }\n\t  mutt_progress_init (&progressbar, _(\"Fetching message...\"),\n\t\t\t      M_PROGRESS_SIZE, NetInc, bytes);\n\t  if (imap_read_literal (msg->fp, idata, bytes, &progressbar) < 0)\n\t    goto bail;\n\t  /* pick up trailing line */\n\t  if ((rc = imap_cmd_step (idata)) != IMAP_CMD_CONTINUE)\n\t    goto bail;\n\t  pc = idata->buf;\n\n\t  fetched = 1;\n\t}\n\t/* UW-IMAP will provide a FLAGS update here if the FETCH causes a\n\t * change (eg from \\Unseen to \\Seen).\n\t * Uncommitted changes in mutt take precedence. If we decide to\n\t * incrementally update flags later, this won't stop us syncing */\n\telse if ((ascii_strncasecmp (\"FLAGS\", pc, 5) == 0) && !h->changed)\n\t{\n\t  if ((pc = imap_set_flags (idata, h, pc)) == NULL)\n\t    goto bail;\n\t}\n      }\n    }\n  }\n  while (rc == IMAP_CMD_CONTINUE);\n\n  /* see comment before command start. */\n  h->active = 1;\n\n  fflush (msg->fp);\n  if (ferror (msg->fp))\n  {\n    mutt_perror (cache->path);\n    goto bail;\n  }\n\n  if (rc != IMAP_CMD_OK)\n    goto bail;\n\n  if (!fetched || !imap_code (idata->buf))\n    goto bail;\n\n  msg_cache_commit (idata, h);\n\n  parsemsg:\n  /* Update the header information.  Previously, we only downloaded a\n   * portion of the headers, those required for the main display.\n   */\n  rewind (msg->fp);\n  /* It may be that the Status header indicates a message is read, but the\n   * IMAP server doesn't know the message has been \\Seen. So we capture\n   * the server's notion of 'read' and if it differs from the message info\n   * picked up in mutt_read_rfc822_header, we mark the message (and context\n   * changed). Another possibility: ignore Status on IMAP?*/\n  read = h->read;\n  newenv = mutt_read_rfc822_header (msg->fp, h, 0, 0);\n  mutt_merge_envelopes(h->env, &newenv);\n\n  /* see above. We want the new status in h->read, so we unset it manually\n   * and let mutt_set_flag set it correctly, updating context. */\n  if (read != h->read)\n  {\n    h->read = read;\n    mutt_set_flag (ctx, h, M_NEW, read);\n  }\n\n  h->lines = 0;\n  fgets (buf, sizeof (buf), msg->fp);\n  while (!feof (msg->fp))\n  {\n    h->lines++;\n    fgets (buf, sizeof (buf), msg->fp);\n  }\n\n  h->content->length = ftell (msg->fp) - h->content->offset;\n\n  /* This needs to be done in case this is a multipart message */\n#if defined(HAVE_PGP) || defined(HAVE_SMIME)\n  h->security = crypt_query (h->content);\n#endif\n\n  mutt_clear_error();\n  rewind (msg->fp);\n  HEADER_DATA(h)->parsed = 1;\n\n  return 0;\n\nbail:\n  safe_fclose (&msg->fp);\n  imap_cache_del (idata, h);\n  if (cache->path)\n  {\n    unlink (cache->path);\n    FREE (&cache->path);\n  }\n\n  return -1;\n}\n\nint imap_append_message (CONTEXT *ctx, MESSAGE *msg)\n{\n  IMAP_DATA* idata;\n  FILE *fp;\n  char buf[LONG_STRING];\n  char mbox[LONG_STRING];\n  char mailbox[LONG_STRING];\n  char internaldate[IMAP_DATELEN];\n  char imap_flags[SHORT_STRING];\n  size_t len;\n  progress_t progressbar;\n  size_t sent;\n  int c, last;\n  IMAP_MBOX mx;\n  int rc;\n\n  idata = (IMAP_DATA*) ctx->data;\n\n  if (imap_parse_path (ctx->path, &mx))\n    return -1;\n\n  imap_fix_path (idata, mx.mbox, mailbox, sizeof (mailbox));\n  if (!*mailbox)\n    strfcpy (mailbox, \"INBOX\", sizeof (mailbox));\n\n  if ((fp = fopen (msg->path, \"r\")) == NULL)\n  {\n    mutt_perror (msg->path);\n    goto fail;\n  }\n\n  /* currently we set the \\Seen flag on all messages, but probably we\n   * should scan the message Status header for flag info. Since we're\n   * already rereading the whole file for length it isn't any more\n   * expensive (it'd be nice if we had the file size passed in already\n   * by the code that writes the file, but that's a lot of changes.\n   * Ideally we'd have a HEADER structure with flag info here... */\n  for (last = EOF, len = 0; (c = fgetc(fp)) != EOF; last = c)\n  {\n    if(c == '\\n' && last != '\\r')\n      len++;\n\n    len++;\n  }\n  rewind (fp);\n\n  mutt_progress_init (&progressbar, _(\"Uploading message...\"),\n\t\t      M_PROGRESS_SIZE, NetInc, len);\n\n  imap_munge_mbox_name (idata, mbox, sizeof (mbox), mailbox);\n  imap_make_date (internaldate, msg->received);\n\n  imap_flags[0] = imap_flags[1] = 0;\n  if (msg->flags.read)\n    safe_strcat (imap_flags, sizeof (imap_flags), \" \\\\Seen\");\n  if (msg->flags.replied)\n    safe_strcat (imap_flags, sizeof (imap_flags), \" \\\\Answered\");\n  if (msg->flags.flagged)\n    safe_strcat (imap_flags, sizeof (imap_flags), \" \\\\Flagged\");\n  if (msg->flags.draft)\n    safe_strcat (imap_flags, sizeof (imap_flags), \" \\\\Draft\");\n\n  snprintf (buf, sizeof (buf), \"APPEND %s (%s) \\\"%s\\\" {%lu}\", mbox,\n            imap_flags + 1,\n\t    internaldate,\n\t    (unsigned long) len);\n\n  imap_cmd_start (idata, buf);\n\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n\n  if (rc != IMAP_CMD_RESPOND)\n  {\n    char *pc;\n\n    dprint (1, (debugfile, \"imap_append_message(): command failed: %s\\n\",\n\t\tidata->buf));\n\n    pc = idata->buf + SEQLEN;\n    SKIPWS (pc);\n    pc = imap_next_word (pc);\n    mutt_error (\"%s\", pc);\n    mutt_sleep (1);\n    safe_fclose (&fp);\n    goto fail;\n  }\n\n  for (last = EOF, sent = len = 0; (c = fgetc(fp)) != EOF; last = c)\n  {\n    if (c == '\\n' && last != '\\r')\n      buf[len++] = '\\r';\n\n    buf[len++] = c;\n\n    if (len > sizeof(buf) - 3)\n    {\n      sent += len;\n      flush_buffer(buf, &len, idata->conn);\n      mutt_progress_update (&progressbar, sent, -1);\n    }\n  }\n\n  if (len)\n    flush_buffer(buf, &len, idata->conn);\n\n  mutt_socket_write (idata->conn, \"\\r\\n\");\n  safe_fclose (&fp);\n\n  do\n    rc = imap_cmd_step (idata);\n  while (rc == IMAP_CMD_CONTINUE);\n\n  if (!imap_code (idata->buf))\n  {\n    char *pc;\n\n    dprint (1, (debugfile, \"imap_append_message(): command failed: %s\\n\",\n\t\tidata->buf));\n    pc = idata->buf + SEQLEN;\n    SKIPWS (pc);\n    pc = imap_next_word (pc);\n    mutt_error (\"%s\", pc);\n    mutt_sleep (1);\n    goto fail;\n  }\n\n  FREE (&mx.mbox);\n  return 0;\n\n fail:\n  FREE (&mx.mbox);\n  return -1;\n}\n\n/* imap_copy_messages: use server COPY command to copy messages to another\n *   folder.\n *   Return codes:\n *      -1: error\n *       0: success\n *       1: non-fatal error - try fetch/append */\nint imap_copy_messages (CONTEXT* ctx, HEADER* h, char* dest, int delete)\n{\n  IMAP_DATA* idata;\n  BUFFER cmd, sync_cmd;\n  char mbox[LONG_STRING];\n  char mmbox[LONG_STRING];\n  char prompt[LONG_STRING];\n  int rc;\n  int n;\n  IMAP_MBOX mx;\n  int err_continue = M_NO;\n  int triedcreate = 0;\n\n  idata = (IMAP_DATA*) ctx->data;\n\n  if (imap_parse_path (dest, &mx))\n  {\n    dprint (1, (debugfile, \"imap_copy_messages: bad destination %s\\n\", dest));\n    return -1;\n  }\n\n  /* check that the save-to folder is in the same account */\n  if (!mutt_account_match (&(CTX_DATA->conn->account), &(mx.account)))\n  {\n    dprint (3, (debugfile, \"imap_copy_messages: %s not same server as %s\\n\",\n      dest, ctx->path));\n    return 1;\n  }\n\n  if (h && h->attach_del)\n  {\n    dprint (3, (debugfile, \"imap_copy_messages: Message contains attachments to be deleted\\n\"));\n    return 1;\n  }\n\n  imap_fix_path (idata, mx.mbox, mbox, sizeof (mbox));\n  if (!*mbox)\n    strfcpy (mbox, \"INBOX\", sizeof (mbox));\n  imap_munge_mbox_name (idata, mmbox, sizeof (mmbox), mbox);\n\n  /* loop in case of TRYCREATE */\n  do\n  {\n    mutt_buffer_init (&sync_cmd);\n    mutt_buffer_init (&cmd);\n\n    /* Null HEADER* means copy tagged messages */\n    if (!h)\n    {\n      /* if any messages have attachments to delete, fall through to FETCH\n       * and APPEND. TODO: Copy what we can with COPY, fall through for the\n       * remainder. */\n      for (n = 0; n < ctx->msgcount; n++)\n      {\n        if (ctx->hdrs[n]->tagged && ctx->hdrs[n]->attach_del)\n        {\n          dprint (3, (debugfile, \"imap_copy_messages: Message contains attachments to be deleted\\n\"));\n          return 1;\n        }\n\n        if (ctx->hdrs[n]->tagged && ctx->hdrs[n]->active &&\n            ctx->hdrs[n]->changed)\n        {\n          rc = imap_sync_message (idata, ctx->hdrs[n], &sync_cmd, &err_continue);\n          if (rc < 0)\n          {\n            dprint (1, (debugfile, \"imap_copy_messages: could not sync\\n\"));\n            goto out;\n          }\n        }\n      }\n\n      rc = imap_exec_msgset (idata, \"UID COPY\", mmbox, M_TAG, 0, 0);\n      if (!rc)\n      {\n        dprint (1, (debugfile, \"imap_copy_messages: No messages tagged\\n\"));\n        rc = -1;\n        goto out;\n      }\n      else if (rc < 0)\n      {\n        dprint (1, (debugfile, \"could not queue copy\\n\"));\n        goto out;\n      }\n      else\n        mutt_message (_(\"Copying %d messages to %s...\"), rc, mbox);\n    }\n    else\n    {\n      mutt_message (_(\"Copying message %d to %s...\"), h->index+1, mbox);\n      mutt_buffer_printf (&cmd, \"UID COPY %u %s\", HEADER_DATA (h)->uid, mmbox);\n\n      if (h->active && h->changed)\n      {\n        rc = imap_sync_message (idata, h, &sync_cmd, &err_continue);\n        if (rc < 0)\n        {\n          dprint (1, (debugfile, \"imap_copy_messages: could not sync\\n\"));\n          goto out;\n        }\n      }\n      if ((rc = imap_exec (idata, cmd.data, IMAP_CMD_QUEUE)) < 0)\n      {\n        dprint (1, (debugfile, \"could not queue copy\\n\"));\n        goto out;\n      }\n    }\n\n    /* let's get it on */\n    rc = imap_exec (idata, NULL, IMAP_CMD_FAIL_OK);\n    if (rc == -2)\n    {\n      if (triedcreate)\n      {\n        dprint (1, (debugfile, \"Already tried to create mailbox %s\\n\", mbox));\n        break;\n      }\n      /* bail out if command failed for reasons other than nonexistent target */\n      if (ascii_strncasecmp (imap_get_qualifier (idata->buf), \"[TRYCREATE]\", 11))\n        break;\n      dprint (3, (debugfile, \"imap_copy_messages: server suggests TRYCREATE\\n\"));\n      snprintf (prompt, sizeof (prompt), _(\"Create %s?\"), mbox);\n      if (option (OPTCONFIRMCREATE) && mutt_yesorno (prompt, 1) < 1)\n      {\n        mutt_clear_error ();\n        goto out;\n      }\n      if (imap_create_mailbox (idata, mbox) < 0)\n        break;\n      triedcreate = 1;\n    }\n  }\n  while (rc == -2);\n\n  if (rc != 0)\n  {\n    imap_error (\"imap_copy_messages\", idata->buf);\n    goto out;\n  }\n\n  /* cleanup */\n  if (delete)\n  {\n    if (!h)\n      for (n = 0; n < ctx->msgcount; n++)\n      {\n        if (ctx->hdrs[n]->tagged)\n        {\n          mutt_set_flag (ctx, ctx->hdrs[n], M_DELETE, 1);\n          if (option (OPTDELETEUNTAG))\n            mutt_set_flag (ctx, ctx->hdrs[n], M_TAG, 0);\n        }\n      }\n    else\n    {\n      mutt_set_flag (ctx, h, M_DELETE, 1);\n      if (option (OPTDELETEUNTAG))\n        mutt_set_flag (ctx, h, M_TAG, 0);\n    }\n  }\n\n  rc = 0;\n\n out:\n  if (cmd.data)\n    FREE (&cmd.data);\n  if (sync_cmd.data)\n    FREE (&sync_cmd.data);\n  FREE (&mx.mbox);\n\n  return rc < 0 ? -1 : rc;\n}\n\nstatic body_cache_t *msg_cache_open (IMAP_DATA *idata)\n{\n  char mailbox[_POSIX_PATH_MAX];\n\n  if (idata->bcache)\n    return idata->bcache;\n\n  imap_cachepath (idata, idata->mailbox, mailbox, sizeof (mailbox));\n\n  return mutt_bcache_open (&idata->conn->account, mailbox);\n}\n\nstatic FILE* msg_cache_get (IMAP_DATA* idata, HEADER* h)\n{\n  char id[_POSIX_PATH_MAX];\n\n  if (!idata || !h)\n    return NULL;\n\n  idata->bcache = msg_cache_open (idata);\n  snprintf (id, sizeof (id), \"%u-%u\", idata->uid_validity, HEADER_DATA(h)->uid);\n  return mutt_bcache_get (idata->bcache, id);\n}\n\nstatic FILE* msg_cache_put (IMAP_DATA* idata, HEADER* h)\n{\n  char id[_POSIX_PATH_MAX];\n\n  if (!idata || !h)\n    return NULL;\n\n  idata->bcache = msg_cache_open (idata);\n  snprintf (id, sizeof (id), \"%u-%u\", idata->uid_validity, HEADER_DATA(h)->uid);\n  return mutt_bcache_put (idata->bcache, id, 1);\n}\n\nstatic int msg_cache_commit (IMAP_DATA* idata, HEADER* h)\n{\n  char id[_POSIX_PATH_MAX];\n\n  if (!idata || !h)\n    return -1;\n\n  idata->bcache = msg_cache_open (idata);\n  snprintf (id, sizeof (id), \"%u-%u\", idata->uid_validity, HEADER_DATA(h)->uid);\n\n  return mutt_bcache_commit (idata->bcache, id);\n}\n\nint imap_cache_del (IMAP_DATA* idata, HEADER* h)\n{\n  char id[_POSIX_PATH_MAX];\n\n  if (!idata || !h)\n    return -1;\n\n  idata->bcache = msg_cache_open (idata);\n  snprintf (id, sizeof (id), \"%u-%u\", idata->uid_validity, HEADER_DATA(h)->uid);\n  return mutt_bcache_del (idata->bcache, id);\n}\n\nstatic int msg_cache_clean_cb (const char* id, body_cache_t* bcache, void* data)\n{\n  unsigned int uv, uid, n;\n  IMAP_DATA* idata = (IMAP_DATA*)data;\n\n  if (sscanf (id, \"%u-%u\", &uv, &uid) != 2)\n    return 0;\n\n  /* bad UID */\n  if (uv != idata->uid_validity)\n    mutt_bcache_del (bcache, id);\n\n  /* TODO: presort UIDs, walk in order */\n  for (n = 0; n < idata->ctx->msgcount; n++)\n  {\n    if (uid == HEADER_DATA(idata->ctx->hdrs[n])->uid)\n      return 0;\n  }\n  mutt_bcache_del (bcache, id);\n\n  return 0;\n}\n\nint imap_cache_clean (IMAP_DATA* idata)\n{\n  idata->bcache = msg_cache_open (idata);\n  mutt_bcache_list (idata->bcache, msg_cache_clean_cb, idata);\n\n  return 0;\n}\n\n/* imap_add_keywords: concatenate custom IMAP tags to list, if they\n *   appear in the folder flags list. Why wouldn't they? */\nvoid imap_add_keywords (char* s, HEADER* h, LIST* mailbox_flags, size_t slen)\n{\n  LIST *keywords;\n\n  if (!mailbox_flags || !HEADER_DATA(h) || !HEADER_DATA(h)->keywords)\n    return;\n\n  keywords = HEADER_DATA(h)->keywords->next;\n\n  while (keywords)\n  {\n    if (imap_has_flag (mailbox_flags, keywords->data))\n    {\n      safe_strcat (s, slen, keywords->data);\n      safe_strcat (s, slen, \" \");\n    }\n    keywords = keywords->next;\n  }\n}\n\n/* imap_free_header_data: free IMAP_HEADER structure */\nvoid imap_free_header_data (IMAP_HEADER_DATA** data)\n{\n  if (*data)\n  {\n    /* this should be safe even if the list wasn't used */\n    mutt_free_list (&((*data)->keywords));\n    FREE (data); /* __FREE_CHECKED__ */\n  }\n}\n\n/* imap_set_flags: fill out the message header according to the flags from\n *   the server. Expects a flags line of the form \"FLAGS (flag flag ...)\" */\nchar* imap_set_flags (IMAP_DATA* idata, HEADER* h, char* s)\n{\n  CONTEXT* ctx = idata->ctx;\n  IMAP_HEADER newh;\n  IMAP_HEADER_DATA* hd;\n  unsigned char readonly;\n\n  memset (&newh, 0, sizeof (newh));\n  hd = h->data;\n  newh.data = hd;\n\n  dprint (2, (debugfile, \"imap_fetch_message: parsing FLAGS\\n\"));\n  if ((s = msg_parse_flags (&newh, s)) == NULL)\n    return NULL;\n\n  /* YAUH (yet another ugly hack): temporarily set context to\n   * read-write even if it's read-only, so *server* updates of\n   * flags can be processed by mutt_set_flag. ctx->changed must\n   * be restored afterwards */\n  readonly = ctx->readonly;\n  ctx->readonly = 0;\n\n  mutt_set_flag (ctx, h, M_NEW, !(hd->read || hd->old));\n  mutt_set_flag (ctx, h, M_OLD, hd->old);\n  mutt_set_flag (ctx, h, M_READ, hd->read);\n  mutt_set_flag (ctx, h, M_DELETE, hd->deleted);\n  mutt_set_flag (ctx, h, M_FLAG, hd->flagged);\n  mutt_set_flag (ctx, h, M_REPLIED, hd->replied);\n\n  /* this message is now definitively *not* changed (mutt_set_flag\n   * marks things changed as a side-effect) */\n  h->changed = 0;\n  ctx->changed &= ~readonly;\n  ctx->readonly = readonly;\n\n  return s;\n}\n\n\n/* msg_fetch_header: import IMAP FETCH response into an IMAP_HEADER.\n *   Expects string beginning with * n FETCH.\n *   Returns:\n *      0 on success\n *     -1 if the string is not a fetch response\n *     -2 if the string is a corrupt fetch response */\nstatic int msg_fetch_header (CONTEXT* ctx, IMAP_HEADER* h, char* buf, FILE* fp)\n{\n  IMAP_DATA* idata;\n  long bytes;\n  int rc = -1; /* default now is that string isn't FETCH response*/\n\n  idata = (IMAP_DATA*) ctx->data;\n\n  if (buf[0] != '*')\n    return rc;\n\n  /* skip to message number */\n  buf = imap_next_word (buf);\n  h->sid = atoi (buf);\n\n  /* find FETCH tag */\n  buf = imap_next_word (buf);\n  if (ascii_strncasecmp (\"FETCH\", buf, 5))\n    return rc;\n\n  rc = -2; /* we've got a FETCH response, for better or worse */\n  if (!(buf = strchr (buf, '(')))\n    return rc;\n  buf++;\n\n  /* FIXME: current implementation - call msg_parse_fetch - if it returns -2,\n   *   read header lines and call it again. Silly. */\n  if ((rc = msg_parse_fetch (h, buf)) != -2 || !fp)\n    return rc;\n\n  if (imap_get_literal_count (buf, &bytes) == 0)\n  {\n    imap_read_literal (fp, idata, bytes, NULL);\n\n    /* we may have other fields of the FETCH _after_ the literal\n     * (eg Domino puts FLAGS here). Nothing wrong with that, either.\n     * This all has to go - we should accept literals and nonliterals\n     * interchangeably at any time. */\n    if (imap_cmd_step (idata) != IMAP_CMD_CONTINUE)\n      return rc;\n\n    if (msg_parse_fetch (h, idata->buf) == -1)\n      return rc;\n  }\n\n  rc = 0; /* success */\n\n  /* subtract headers from message size - unfortunately only the subset of\n   * headers we've requested. */\n  h->content_length -= bytes;\n\n  return rc;\n}\n\n/* msg_parse_fetch: handle headers returned from header fetch */\nstatic int msg_parse_fetch (IMAP_HEADER *h, char *s)\n{\n  char tmp[SHORT_STRING];\n  char *ptmp;\n\n  if (!s)\n    return -1;\n\n  while (*s)\n  {\n    SKIPWS (s);\n\n    if (ascii_strncasecmp (\"FLAGS\", s, 5) == 0)\n    {\n      if ((s = msg_parse_flags (h, s)) == NULL)\n        return -1;\n    }\n    else if (ascii_strncasecmp (\"UID\", s, 3) == 0)\n    {\n      s += 3;\n      SKIPWS (s);\n      h->data->uid = (unsigned int) atoi (s);\n\n      s = imap_next_word (s);\n    }\n    else if (ascii_strncasecmp (\"INTERNALDATE\", s, 12) == 0)\n    {\n      s += 12;\n      SKIPWS (s);\n      if (*s != '\\\"')\n      {\n        dprint (1, (debugfile, \"msg_parse_fetch(): bogus INTERNALDATE entry: %s\\n\", s));\n        return -1;\n      }\n      s++;\n      ptmp = tmp;\n      while (*s && *s != '\\\"')\n        *ptmp++ = *s++;\n      if (*s != '\\\"')\n        return -1;\n      s++; /* skip past the trailing \" */\n      *ptmp = 0;\n      h->received = imap_parse_date (tmp);\n    }\n    else if (ascii_strncasecmp (\"RFC822.SIZE\", s, 11) == 0)\n    {\n      s += 11;\n      SKIPWS (s);\n      ptmp = tmp;\n      while (isdigit ((unsigned char) *s))\n        *ptmp++ = *s++;\n      *ptmp = 0;\n      h->content_length = atoi (tmp);\n    }\n    else if (!ascii_strncasecmp (\"BODY\", s, 4) ||\n      !ascii_strncasecmp (\"RFC822.HEADER\", s, 13))\n    {\n      /* handle above, in msg_fetch_header */\n      return -2;\n    }\n    else if (*s == ')')\n      s++; /* end of request */\n    else if (*s)\n    {\n      /* got something i don't understand */\n      imap_error (\"msg_parse_fetch\", s);\n      return -1;\n    }\n  }\n\n  return 0;\n}\n\n/* msg_parse_flags: read a FLAGS token into an IMAP_HEADER */\nstatic char* msg_parse_flags (IMAP_HEADER* h, char* s)\n{\n  IMAP_HEADER_DATA* hd = h->data;\n\n  /* sanity-check string */\n  if (ascii_strncasecmp (\"FLAGS\", s, 5) != 0)\n  {\n    dprint (1, (debugfile, \"msg_parse_flags: not a FLAGS response: %s\\n\",\n      s));\n    return NULL;\n  }\n  s += 5;\n  SKIPWS(s);\n  if (*s != '(')\n  {\n    dprint (1, (debugfile, \"msg_parse_flags: bogus FLAGS response: %s\\n\",\n      s));\n    return NULL;\n  }\n  s++;\n\n  mutt_free_list (&hd->keywords);\n  hd->deleted = hd->flagged = hd->replied = hd->read = hd->old = 0;\n\n  /* start parsing */\n  while (*s && *s != ')')\n  {\n    if (ascii_strncasecmp (\"\\\\deleted\", s, 8) == 0)\n    {\n      s += 8;\n      hd->deleted = 1;\n    }\n    else if (ascii_strncasecmp (\"\\\\flagged\", s, 8) == 0)\n    {\n      s += 8;\n      hd->flagged = 1;\n    }\n    else if (ascii_strncasecmp (\"\\\\answered\", s, 9) == 0)\n    {\n      s += 9;\n      hd->replied = 1;\n    }\n    else if (ascii_strncasecmp (\"\\\\seen\", s, 5) == 0)\n    {\n      s += 5;\n      hd->read = 1;\n    }\n    else if (ascii_strncasecmp (\"\\\\recent\", s, 7) == 0)\n      s += 7;\n    else if (ascii_strncasecmp (\"old\", s, 3) == 0)\n    {\n      s += 3;\n      hd->old = 1;\n    }\n    else\n    {\n      /* store custom flags as well */\n      char ctmp;\n      char* flag_word = s;\n\n      if (!hd->keywords)\n        hd->keywords = mutt_new_list ();\n\n      while (*s && !ISSPACE (*s) && *s != ')')\n        s++;\n      ctmp = *s;\n      *s = '\\0';\n      mutt_add_list (hd->keywords, flag_word);\n      *s = ctmp;\n    }\n    SKIPWS(s);\n  }\n\n  /* wrap up, or note bad flags response */\n  if (*s == ')')\n    s++;\n  else\n  {\n    dprint (1, (debugfile,\n      \"msg_parse_flags: Unterminated FLAGS response: %s\\n\", s));\n    return NULL;\n  }\n\n  return s;\n}\n\nstatic void flush_buffer(char *buf, size_t *len, CONNECTION *conn)\n{\n  buf[*len] = '\\0';\n  mutt_socket_write_n(conn, buf, *len);\n  *len = 0;\n}\n"
  },
  {
    "path": "imap/message.h",
    "content": "/*\n * Copyright (C) 1996-1999 Brandon Long <blong@fiction.net>\n * Copyright (C) 1999-2000,2005 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* message.c data structures */\n\n#ifndef MESSAGE_H\n#define MESSAGE_H 1\n\n/* -- data structures -- */\n/* IMAP-specific header data, stored as HEADER->data */\ntypedef struct imap_header_data\n{\n  /* server-side flags */\n  unsigned int read : 1;\n  unsigned int old : 1;\n  unsigned int deleted : 1;\n  unsigned int flagged : 1;\n  unsigned int replied : 1;\n  unsigned int changed : 1;\n\n  unsigned int parsed : 1;\n\n  unsigned int uid;\t/* 32-bit Message UID */\n  LIST *keywords;\n} IMAP_HEADER_DATA;\n\ntypedef struct\n{\n  unsigned int sid;\n\n  IMAP_HEADER_DATA* data;\n\n  time_t received;\n  long content_length;\n} IMAP_HEADER;\n\n/* -- macros -- */\n#define HEADER_DATA(ph) ((IMAP_HEADER_DATA*) ((ph)->data))\n\n#endif /* MESSAGE_H */\n"
  },
  {
    "path": "imap/utf7.c",
    "content": "/*\n * Copyright (C) 2000,2003 Edmund Grimley Evans <edmundo@rano.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"charset.h\"\n#include \"imap_private.h\"\n\nstatic const int Index_64[128] = {\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, 63,-1,-1,-1,\n    52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,\n    -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,\n    15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,\n    -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,\n    41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1\n};\n\nstatic const char B64Chars[64] = {\n  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',\n  'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',\n  'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',\n  't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',\n  '8', '9', '+', ','\n};\n\n/*\n * Convert the data (u7,u7len) from RFC 2060's UTF-7 to UTF-8.\n * The result is null-terminated and returned, and also stored\n * in (*u8,*u8len) if u8 or u8len is non-zero.\n * If input data is invalid, return 0 and don't store anything.\n * RFC 2060 obviously intends the encoding to be unique (see\n * point 5 in section 5.1.3), so we reject any non-canonical\n * form, such as &ACY- (instead of &-) or &AMA-&AMA- (instead\n * of &AMAAwA-).\n */\nstatic char *utf7_to_utf8 (const char *u7, size_t u7len, char **u8,\n  size_t *u8len)\n{\n  char *buf, *p;\n  int b, ch, k;\n\n  p = buf = safe_malloc (u7len + u7len / 8 + 1);\n\n  for (; u7len; u7++, u7len--)\n  {\n    if (*u7 == '&')\n    {\n      u7++, u7len--;\n\n      if (u7len && *u7 == '-')\n      {\n\t*p++ = '&';\n\tcontinue;\n      }\n\n      ch = 0;\n      k = 10;\n      for (; u7len; u7++, u7len--)\n      {\n\tif ((*u7 & 0x80) || (b = Index_64[(int)*u7]) == -1)\n\t  break;\n\tif (k > 0)\n\t{\n\t  ch |= b << k;\n\t  k -= 6;\n\t}\n\telse\n\t{\n\t  ch |= b >> (-k);\n\t  if (ch < 0x80)\n\t  {\n\t    if (0x20 <= ch && ch < 0x7f)\n\t      /* Printable US-ASCII */\n\t      goto bail;\n\t    *p++ = ch;\n\t  }\n\t  else if (ch < 0x800)\n\t  {\n\t    *p++ = 0xc0 | (ch >> 6);\n\t    *p++ = 0x80 | (ch & 0x3f);\n\t  }\n\t  else\n\t  {\n\t    *p++ = 0xe0 | (ch >> 12);\n\t    *p++ = 0x80 | ((ch >> 6) & 0x3f);\n\t    *p++ = 0x80 | (ch & 0x3f);\n\t  }\n\t  ch = (b << (16 + k)) & 0xffff;\n\t  k += 10;\n\t}\n      }\n      if (ch || k < 6)\n\t/* Non-zero or too many extra bits */\n\tgoto bail;\n      if (!u7len || *u7 != '-')\n\t/* BASE64 not properly terminated */\n\tgoto bail;\n      if (u7len > 2 && u7[1] == '&' && u7[2] != '-')\n\t/* Adjacent BASE64 sections */\n\tgoto bail;\n    }\n    else if (*u7 < 0x20 || *u7 >= 0x7f)\n      /* Not printable US-ASCII */\n      goto bail;\n    else\n      *p++ = *u7;\n  }\n  *p++ = '\\0';\n  if (u8len)\n    *u8len = p - buf;\n\n  safe_realloc (&buf, p - buf);\n  if (u8)\n    *u8 = buf;\n  return buf;\n\n bail:\n  FREE (&buf);\n  return 0;\n}\n\n/*\n * Convert the data (u8,u8len) from UTF-8 to RFC 2060's UTF-7.\n * The result is null-terminated and returned, and also stored\n * in (*u7,*u7len) if u7 or u7len is non-zero.\n * Unicode characters above U+FFFF are replaced by U+FFFE.\n * If input data is invalid, return 0 and don't store anything.\n */\nstatic char *utf8_to_utf7 (const char *u8, size_t u8len, char **u7,\n  size_t *u7len)\n{\n  char *buf, *p;\n  int ch;\n  int n, i, b = 0, k = 0;\n  int base64 = 0;\n\n  /*\n   * In the worst case we convert 2 chars to 7 chars. For example:\n   * \"\\x10&\\x10&...\" -> \"&ABA-&-&ABA-&-...\".\n   */\n  p = buf = safe_malloc ((u8len / 2) * 7 + 6);\n\n  while (u8len)\n  {\n    unsigned char c = *u8;\n\n    if (c < 0x80)\n      ch = c, n = 0;\n    else if (c < 0xc2)\n      goto bail;\n    else if (c < 0xe0)\n      ch = c & 0x1f, n = 1;\n    else if (c < 0xf0)\n      ch = c & 0x0f, n = 2;\n    else if (c < 0xf8)\n      ch = c & 0x07, n = 3;\n    else if (c < 0xfc)\n      ch = c & 0x03, n = 4;\n    else if (c < 0xfe)\n      ch = c & 0x01, n = 5;\n    else\n      goto bail;\n\n    u8++, u8len--;\n    if (n > u8len)\n      goto bail;\n    for (i = 0; i < n; i++)\n    {\n      if ((u8[i] & 0xc0) != 0x80)\n\tgoto bail;\n      ch = (ch << 6) | (u8[i] & 0x3f);\n    }\n    if (n > 1 && !(ch >> (n * 5 + 1)))\n      goto bail;\n    u8 += n, u8len -= n;\n\n    if (ch < 0x20 || ch >= 0x7f)\n    {\n      if (!base64)\n      {\n\t*p++ = '&';\n\tbase64 = 1;\n\tb = 0;\n\tk = 10;\n      }\n      if (ch & ~0xffff)\n\tch = 0xfffe;\n      *p++ = B64Chars[b | ch >> k];\n      k -= 6;\n      for (; k >= 0; k -= 6)\n\t*p++ = B64Chars[(ch >> k) & 0x3f];\n      b = (ch << (-k)) & 0x3f;\n      k += 16;\n    }\n    else\n    {\n      if (base64)\n      {\n\tif (k > 10)\n\t  *p++ = B64Chars[b];\n\t*p++ = '-';\n\tbase64 = 0;\n      }\n      *p++ = ch;\n      if (ch == '&')\n\t*p++ = '-';\n    }\n  }\n\n  if (u8len)\n  {\n    FREE (&buf);\n    return 0;\n  }\n\n  if (base64)\n  {\n    if (k > 10)\n      *p++ = B64Chars[b];\n    *p++ = '-';\n  }\n\n  *p++ = '\\0';\n  if (u7len)\n    *u7len = p - buf;\n  safe_realloc (&buf, p - buf);\n  if (u7)  *u7 = buf;\n  return buf;\n\n bail:\n  FREE (&buf);\n  return 0;\n}\n\nvoid imap_utf_encode (IMAP_DATA *idata, char **s)\n{\n  if (Charset)\n  {\n    char *t = safe_strdup (*s);\n    if (t && !mutt_convert_string (&t, Charset, \"utf-8\", 0))\n    {\n      FREE (s);\t\t/* __FREE_CHECKED__ */\n      if (idata->unicode)\n        *s = safe_strdup (t);\n      else\n        *s = utf8_to_utf7 (t, strlen (t), NULL, 0);\n    }\n    FREE (&t);\n  }\n}\n\nvoid imap_utf_decode (IMAP_DATA *idata, char **s)\n{\n  char *t;\n\n  if (Charset)\n  {\n    if (idata->unicode)\n      t = safe_strdup (*s);\n    else\n      t = utf7_to_utf8 (*s, strlen (*s), 0, 0);\n\n    if (t && !mutt_convert_string (&t, \"utf-8\", Charset, 0))\n    {\n      FREE (s);\t\t/* __FREE_CHECKED__ */\n      *s = t;\n    }\n    else\n      FREE (&t);\n  }\n}\n"
  },
  {
    "path": "imap/util.c",
    "content": "/*\n * Copyright (C) 1996-1998,2010,2012-2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1996-1999 Brandon Long <blong@fiction.net>\n * Copyright (C) 1999-2009,2012 Brendan Cully <brendan@kublai.com>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/* general IMAP utility functions */\n\n#include \"config.h\"\n\n#include \"mutt.h\"\n#include \"mx.h\"\t/* for M_IMAP */\n#include \"url.h\"\n#include \"imap_private.h\"\n#ifdef USE_HCACHE\n#include \"hcache.h\"\n#endif\n\n#include <stdlib.h>\n#include <ctype.h>\n\n#include <sys/types.h>\n#include <sys/wait.h>\n#include <signal.h>\n#include <netdb.h>\n#include <netinet/in.h>\n\n#include <errno.h>\n\n/* -- public functions -- */\n\n/* imap_expand_path: IMAP implementation of mutt_expand_path. Rewrite\n *   an IMAP path in canonical and absolute form.\n * Inputs: a buffer containing an IMAP path, and the number of bytes in\n *   that buffer.\n * Outputs: The buffer is rewritten in place with the canonical IMAP path.\n * Returns 0 on success, or -1 if imap_parse_path chokes or url_ciss_tostring\n *   fails, which it might if there isn't enough room in the buffer. */\nint imap_expand_path (char* path, size_t len)\n{\n  IMAP_MBOX mx;\n  IMAP_DATA* idata;\n  ciss_url_t url;\n  char fixedpath[LONG_STRING];\n  int rc;\n\n  if (imap_parse_path (path, &mx) < 0)\n    return -1;\n\n  idata = imap_conn_find (&mx.account, M_IMAP_CONN_NONEW);\n  mutt_account_tourl (&mx.account, &url);\n  imap_fix_path (idata, mx.mbox, fixedpath, sizeof (fixedpath));\n  url.path = fixedpath;\n\n  rc = url_ciss_tostring (&url, path, len, U_DECODE_PASSWD);\n  FREE (&mx.mbox);\n\n  return rc;\n}\n\n#ifdef USE_HCACHE\nstatic int imap_hcache_namer (const char* path, char* dest, size_t dlen)\n{\n  return snprintf (dest, dlen, \"%s.hcache\", path);\n}\n\nheader_cache_t* imap_hcache_open (IMAP_DATA* idata, const char* path)\n{\n  IMAP_MBOX mx;\n  ciss_url_t url;\n  char cachepath[LONG_STRING];\n  char mbox[LONG_STRING];\n\n  if (path)\n    imap_cachepath (idata, path, mbox, sizeof (mbox));\n  else\n  {\n    if (!idata->ctx || imap_parse_path (idata->ctx->path, &mx) < 0)\n      return NULL;\n\n    imap_cachepath (idata, mx.mbox, mbox, sizeof (mbox));\n    FREE (&mx.mbox);\n  }\n\n  mutt_account_tourl (&idata->conn->account, &url);\n  url.path = mbox;\n  url_ciss_tostring (&url, cachepath, sizeof (cachepath), U_PATH);\n\n  return mutt_hcache_open (HeaderCache, cachepath, imap_hcache_namer);\n}\n\nvoid imap_hcache_close (IMAP_DATA* idata)\n{\n  if (!idata->hcache)\n    return;\n\n  mutt_hcache_close (idata->hcache);\n  idata->hcache = NULL;\n}\n\nHEADER* imap_hcache_get (IMAP_DATA* idata, unsigned int uid)\n{\n  char key[16];\n  unsigned int* uv;\n  HEADER* h = NULL;\n\n  if (!idata->hcache)\n    return NULL;\n\n  sprintf (key, \"/%u\", uid);\n  uv = (unsigned int*)mutt_hcache_fetch (idata->hcache, key,\n                                         imap_hcache_keylen);\n  if (uv)\n  {\n    if (*uv == idata->uid_validity)\n      h = mutt_hcache_restore ((unsigned char*)uv, NULL);\n    else\n      dprint (3, (debugfile, \"hcache uidvalidity mismatch: %u\", *uv));\n    FREE (&uv);\n  }\n\n  return h;\n}\n\nint imap_hcache_put (IMAP_DATA* idata, HEADER* h)\n{\n  char key[16];\n\n  if (!idata->hcache)\n    return -1;\n\n  sprintf (key, \"/%u\", HEADER_DATA (h)->uid);\n  return mutt_hcache_store (idata->hcache, key, h, idata->uid_validity,\n                            imap_hcache_keylen, 0);\n}\n\nint imap_hcache_del (IMAP_DATA* idata, unsigned int uid)\n{\n  char key[16];\n\n  if (!idata->hcache)\n    return -1;\n\n  sprintf (key, \"/%u\", uid);\n  return mutt_hcache_delete (idata->hcache, key, imap_hcache_keylen);\n}\n#endif\n\n/* imap_parse_path: given an IMAP mailbox name, return host, port\n *   and a path IMAP servers will recognize.\n * mx.mbox is malloc'd, caller must free it */\nint imap_parse_path (const char* path, IMAP_MBOX* mx)\n{\n  static unsigned short ImapPort = 0;\n  static unsigned short ImapsPort = 0;\n  struct servent* service;\n  char tmp[128];\n  ciss_url_t url;\n  char *c;\n  int n;\n\n  if (!ImapPort)\n  {\n    service = getservbyname (\"imap\", \"tcp\");\n    if (service)\n      ImapPort = ntohs (service->s_port);\n    else\n      ImapPort = IMAP_PORT;\n    dprint (3, (debugfile, \"Using default IMAP port %d\\n\", ImapPort));\n  }\n  if (!ImapsPort)\n  {\n    service = getservbyname (\"imaps\", \"tcp\");\n    if (service)\n      ImapsPort = ntohs (service->s_port);\n    else\n      ImapsPort = IMAP_SSL_PORT;\n    dprint (3, (debugfile, \"Using default IMAPS port %d\\n\", ImapsPort));\n  }\n\n  /* Defaults */\n  memset(&mx->account, 0, sizeof(mx->account));\n  mx->account.port = ImapPort;\n  mx->account.type = M_ACCT_TYPE_IMAP;\n\n  c = safe_strdup (path);\n  url_parse_ciss (&url, c);\n  if (url.scheme == U_IMAP || url.scheme == U_IMAPS)\n  {\n    if (mutt_account_fromurl (&mx->account, &url) < 0 || !*mx->account.host)\n    {\n      FREE (&c);\n      return -1;\n    }\n\n    mx->mbox = safe_strdup (url.path);\n\n    if (url.scheme == U_IMAPS)\n      mx->account.flags |= M_ACCT_SSL;\n\n    FREE (&c);\n  }\n  /* old PINE-compatibility code */\n  else\n  {\n    FREE (&c);\n    if (sscanf (path, \"{%127[^}]}\", tmp) != 1)\n      return -1;\n\n    c = strchr (path, '}');\n    if (!c)\n      return -1;\n    else\n      /* walk past closing '}' */\n      mx->mbox = safe_strdup (c+1);\n\n    if ((c = strrchr (tmp, '@')))\n    {\n      *c = '\\0';\n      strfcpy (mx->account.user, tmp, sizeof (mx->account.user));\n      strfcpy (tmp, c+1, sizeof (tmp));\n      mx->account.flags |= M_ACCT_USER;\n    }\n\n    if ((n = sscanf (tmp, \"%127[^:/]%127s\", mx->account.host, tmp)) < 1)\n    {\n      dprint (1, (debugfile, \"imap_parse_path: NULL host in %s\\n\", path));\n      FREE (&mx->mbox);\n      return -1;\n    }\n\n    if (n > 1) {\n      if (sscanf (tmp, \":%hu%127s\", &(mx->account.port), tmp) >= 1)\n\tmx->account.flags |= M_ACCT_PORT;\n      if (sscanf (tmp, \"/%s\", tmp) == 1)\n      {\n\tif (!ascii_strncmp (tmp, \"ssl\", 3))\n\t  mx->account.flags |= M_ACCT_SSL;\n\telse\n\t{\n\t  dprint (1, (debugfile, \"imap_parse_path: Unknown connection type in %s\\n\", path));\n\t  FREE (&mx->mbox);\n\t  return -1;\n\t}\n      }\n    }\n  }\n\n  if ((mx->account.flags & M_ACCT_SSL) && !(mx->account.flags & M_ACCT_PORT))\n    mx->account.port = ImapsPort;\n\n  return 0;\n}\n\n/* silly helper for mailbox name string comparisons, because of INBOX */\nint imap_mxcmp (const char* mx1, const char* mx2)\n{\n  char* b1;\n  char* b2;\n  int rc;\n\n  if (!mx1 || !*mx1)\n    mx1 = \"INBOX\";\n  if (!mx2 || !*mx2)\n    mx2 = \"INBOX\";\n  if (!ascii_strcasecmp (mx1, \"INBOX\") && !ascii_strcasecmp (mx2, \"INBOX\"))\n    return 0;\n\n  b1 = safe_malloc (strlen (mx1) + 1);\n  b2 = safe_malloc (strlen (mx2) + 1);\n\n  imap_fix_path (NULL, mx1, b1, strlen (mx1) + 1);\n  imap_fix_path (NULL, mx2, b2, strlen (mx2) + 1);\n\n  rc = mutt_strcmp (b1, b2);\n  FREE (&b1);\n  FREE (&b2);\n\n  return rc;\n}\n\n/* imap_pretty_mailbox: called by mutt_pretty_mailbox to make IMAP paths\n *   look nice. */\nvoid imap_pretty_mailbox (char* path)\n{\n  IMAP_MBOX home, target;\n  ciss_url_t url;\n  char* delim;\n  int tlen;\n  int hlen = 0;\n  char home_match = 0;\n\n  if (imap_parse_path (path, &target) < 0)\n    return;\n\n  tlen = mutt_strlen (target.mbox);\n  /* check whether we can do '=' substitution */\n  if (mx_is_imap(Maildir) && !imap_parse_path (Maildir, &home))\n  {\n    hlen = mutt_strlen (home.mbox);\n    if (tlen && mutt_account_match (&home.account, &target.account) &&\n\t!mutt_strncmp (home.mbox, target.mbox, hlen))\n    {\n      if (! hlen)\n\thome_match = 1;\n      else if (ImapDelimChars)\n\tfor (delim = ImapDelimChars; *delim != '\\0'; delim++)\n\t  if (target.mbox[hlen] == *delim)\n\t    home_match = 1;\n    }\n    FREE (&home.mbox);\n  }\n\n  /* do the '=' substitution */\n  if (home_match) {\n    *path++ = '=';\n    /* copy remaining path, skipping delimiter */\n    if (! hlen)\n      hlen = -1;\n    memcpy (path, target.mbox + hlen + 1, tlen - hlen - 1);\n    path[tlen - hlen - 1] = '\\0';\n  }\n  else\n  {\n    mutt_account_tourl (&target.account, &url);\n    url.path = target.mbox;\n    /* FIXME: That hard-coded constant is bogus. But we need the actual\n     *   size of the buffer from mutt_pretty_mailbox. And these pretty\n     *   operations usually shrink the result. Still... */\n    url_ciss_tostring (&url, path, 1024, 0);\n  }\n\n  FREE (&target.mbox);\n}\n\n/* -- library functions -- */\n\n/* imap_continue: display a message and ask the user if she wants to\n *   go on. */\nint imap_continue (const char* msg, const char* resp)\n{\n  imap_error (msg, resp);\n  return mutt_yesorno (_(\"Continue?\"), 0);\n}\n\n/* imap_error: show an error and abort */\nvoid imap_error (const char *where, const char *msg)\n{\n  mutt_error (\"%s [%s]\\n\", where, msg);\n  mutt_sleep (2);\n}\n\n/* imap_new_idata: Allocate and initialise a new IMAP_DATA structure.\n *   Returns NULL on failure (no mem) */\nIMAP_DATA* imap_new_idata (void)\n{\n  IMAP_DATA* idata = safe_calloc (1, sizeof (IMAP_DATA));\n\n  if (!idata)\n    return NULL;\n\n  if (!(idata->cmdbuf = mutt_buffer_new ()))\n    FREE (&idata);\n\n  idata->cmdslots = ImapPipelineDepth + 2;\n  if (!(idata->cmds = safe_calloc(idata->cmdslots, sizeof(*idata->cmds))))\n  {\n    mutt_buffer_free(&idata->cmdbuf);\n    FREE (&idata);\n  }\n\n  return idata;\n}\n\n/* imap_free_idata: Release and clear storage in an IMAP_DATA structure. */\nvoid imap_free_idata (IMAP_DATA** idata)\n{\n  if (!idata)\n    return;\n\n  FREE (&(*idata)->capstr);\n  mutt_free_list (&(*idata)->flags);\n  imap_mboxcache_free (*idata);\n  mutt_buffer_free(&(*idata)->cmdbuf);\n  FREE (&(*idata)->buf);\n  mutt_bcache_close (&(*idata)->bcache);\n  FREE (&(*idata)->cmds);\n  FREE (idata);\t\t/* __FREE_CHECKED__ */\n}\n\n/*\n * Fix up the imap path.  This is necessary because the rest of mutt\n * assumes a hierarchy delimiter of '/', which is not necessarily true\n * in IMAP.  Additionally, the filesystem converts multiple hierarchy\n * delimiters into a single one, ie \"///\" is equal to \"/\".  IMAP servers\n * are not required to do this.\n * Moreover, IMAP servers may dislike the path ending with the delimiter.\n */\nchar *imap_fix_path (IMAP_DATA *idata, const char *mailbox, char *path,\n    size_t plen)\n{\n  int i = 0;\n  char delim = '\\0';\n\n  if (idata)\n    delim = idata->delim;\n\n  while (mailbox && *mailbox && i < plen - 1)\n  {\n    if ((ImapDelimChars && strchr(ImapDelimChars, *mailbox))\n        || (delim && *mailbox == delim))\n    {\n      /* use connection delimiter if known. Otherwise use user delimiter */\n      if (!idata)\n        delim = *mailbox;\n\n      while (*mailbox\n\t     && ((ImapDelimChars && strchr(ImapDelimChars, *mailbox))\n\t         || (delim && *mailbox == delim)))\n        mailbox++;\n      path[i] = delim;\n    }\n    else\n    {\n      path[i] = *mailbox;\n      mailbox++;\n    }\n    i++;\n  }\n  if (i && path[--i] != delim)\n    i++;\n  path[i] = '\\0';\n\n  return path;\n}\n\nvoid imap_cachepath(IMAP_DATA* idata, const char* mailbox, char* dest,\n                    size_t dlen)\n{\n  char* s;\n  const char* p = mailbox;\n\n  for (s = dest; p && *p && dlen; dlen--)\n  {\n    if (*p == idata->delim)\n    {\n      *s = '/';\n      /* simple way to avoid collisions with UIDs */\n      if (*(p + 1) >= '0' && *(p + 1) <= '9')\n      {\n\tif (--dlen)\n\t  *++s = '_';\n      }\n    }\n    else\n      *s = *p;\n    p++;\n    s++;\n  }\n  *s = '\\0';\n}\n\n/* imap_get_literal_count: write number of bytes in an IMAP literal into\n *   bytes, return 0 on success, -1 on failure. */\nint imap_get_literal_count(const char *buf, long *bytes)\n{\n  char *pc;\n  char *pn;\n\n  if (!buf || !(pc = strchr (buf, '{')))\n    return -1;\n\n  pc++;\n  pn = pc;\n  while (isdigit ((unsigned char) *pc))\n    pc++;\n  *pc = 0;\n  *bytes = atoi(pn);\n\n  return 0;\n}\n\n/* imap_get_qualifier: in a tagged response, skip tag and status for\n *   the qualifier message. Used by imap_copy_message for TRYCREATE */\nchar* imap_get_qualifier (char* buf)\n{\n  char *s = buf;\n\n  /* skip tag */\n  s = imap_next_word (s);\n  /* skip OK/NO/BAD response */\n  s = imap_next_word (s);\n\n  return s;\n}\n\n/* imap_next_word: return index into string where next IMAP word begins */\nchar *imap_next_word (char *s)\n{\n  int quoted = 0;\n\n  while (*s) {\n    if (*s == '\\\\') {\n      s++;\n      if (*s)\n\ts++;\n      continue;\n    }\n    if (*s == '\\\"')\n      quoted = quoted ? 0 : 1;\n    if (!quoted && ISSPACE (*s))\n      break;\n    s++;\n  }\n\n  SKIPWS (s);\n  return s;\n}\n\n/* imap_parse_date: date is of the form: DD-MMM-YYYY HH:MM:SS +ZZzz */\ntime_t imap_parse_date (char *s)\n{\n  struct tm t;\n  time_t tz;\n\n  t.tm_mday = (s[0] == ' '? s[1] - '0' : (s[0] - '0') * 10 + (s[1] - '0'));\n  s += 2;\n  if (*s != '-')\n    return 0;\n  s++;\n  t.tm_mon = mutt_check_month (s);\n  s += 3;\n  if (*s != '-')\n    return 0;\n  s++;\n  t.tm_year = (s[0] - '0') * 1000 + (s[1] - '0') * 100 + (s[2] - '0') * 10 + (s[3] - '0') - 1900;\n  s += 4;\n  if (*s != ' ')\n    return 0;\n  s++;\n\n  /* time */\n  t.tm_hour = (s[0] - '0') * 10 + (s[1] - '0');\n  s += 2;\n  if (*s != ':')\n    return 0;\n  s++;\n  t.tm_min = (s[0] - '0') * 10 + (s[1] - '0');\n  s += 2;\n  if (*s != ':')\n    return 0;\n  s++;\n  t.tm_sec = (s[0] - '0') * 10 + (s[1] - '0');\n  s += 2;\n  if (*s != ' ')\n    return 0;\n  s++;\n\n  /* timezone */\n  tz = ((s[1] - '0') * 10 + (s[2] - '0')) * 3600 +\n    ((s[3] - '0') * 10 + (s[4] - '0')) * 60;\n  if (s[0] == '+')\n    tz = -tz;\n\n  return (mutt_mktime (&t, 0) + tz);\n}\n\n/* format date in IMAP style: DD-MMM-YYYY HH:MM:SS +ZZzz.\n * Caller should provide a buffer of IMAP_DATELEN bytes */\nvoid imap_make_date (char *buf, time_t timestamp)\n{\n  struct tm* tm = localtime (&timestamp);\n  time_t tz = mutt_local_tz (timestamp);\n\n  tz /= 60;\n\n  snprintf (buf, IMAP_DATELEN, \"%02d-%s-%d %02d:%02d:%02d %+03d%02d\",\n      tm->tm_mday, Months[tm->tm_mon], tm->tm_year + 1900,\n      tm->tm_hour, tm->tm_min, tm->tm_sec,\n      (int) tz / 60, (int) abs ((int) tz) % 60);\n}\n\n/* imap_qualify_path: make an absolute IMAP folder target, given IMAP_MBOX\n *   and relative path. */\nvoid imap_qualify_path (char *dest, size_t len, IMAP_MBOX *mx, char* path)\n{\n  ciss_url_t url;\n\n  mutt_account_tourl (&mx->account, &url);\n  url.path = path;\n\n  url_ciss_tostring (&url, dest, len, 0);\n}\n\n\n/* imap_quote_string: quote string according to IMAP rules:\n *   surround string with quotes, escape \" and \\ with \\ */\nvoid imap_quote_string (char *dest, size_t dlen, const char *src)\n{\n  static const char quote[] = \"\\\"\\\\\";\n  char *pt;\n  const char *s;\n\n  pt = dest;\n  s  = src;\n\n  *pt++ = '\"';\n  /* save room for trailing quote-char */\n  dlen -= 2;\n\n  for (; *s && dlen; s++)\n  {\n    if (strchr (quote, *s))\n    {\n      dlen -= 2;\n      if (!dlen)\n\tbreak;\n      *pt++ = '\\\\';\n      *pt++ = *s;\n    }\n    else\n    {\n      *pt++ = *s;\n      dlen--;\n    }\n  }\n  *pt++ = '\"';\n  *pt = 0;\n}\n\n/* imap_unquote_string: equally stupid unquoting routine */\nvoid imap_unquote_string (char *s)\n{\n  char *d = s;\n\n  if (*s == '\\\"')\n    s++;\n  else\n    return;\n\n  while (*s)\n  {\n    if (*s == '\\\"')\n    {\n      *d = '\\0';\n      return;\n    }\n    if (*s == '\\\\')\n    {\n      s++;\n    }\n    if (*s)\n    {\n      *d = *s;\n      d++;\n      s++;\n    }\n  }\n  *d = '\\0';\n}\n\n\n/*\n * Quoting and UTF-7 conversion\n */\n\nvoid imap_munge_mbox_name (IMAP_DATA *idata, char *dest, size_t dlen, const char *src)\n{\n  char *buf;\n\n  buf = safe_strdup (src);\n  imap_utf_encode (idata, &buf);\n\n  imap_quote_string (dest, dlen, buf);\n\n  FREE (&buf);\n}\n\nvoid imap_unmunge_mbox_name (IMAP_DATA *idata, char *s)\n{\n  char *buf;\n\n  imap_unquote_string(s);\n\n  buf = safe_strdup (s);\n  if (buf)\n  {\n    imap_utf_decode (idata, &buf);\n    strncpy (s, buf, strlen (s));\n  }\n\n  FREE (&buf);\n}\n\n/* imap_wordcasecmp: find word a in word list b */\nint imap_wordcasecmp(const char *a, const char *b)\n{\n  char tmp[SHORT_STRING];\n  char *s = (char *)b;\n  int i;\n\n  tmp[SHORT_STRING-1] = 0;\n  for(i=0;i < SHORT_STRING-2;i++,s++)\n  {\n    if (!*s || ISSPACE(*s))\n    {\n      tmp[i] = 0;\n      break;\n    }\n    tmp[i] = *s;\n  }\n  tmp[i+1] = 0;\n\n  return ascii_strcasecmp(a, tmp);\n}\n\n/*\n * Imap keepalive: poll the current folder to keep the\n * connection alive.\n *\n */\n\nstatic void alrm_handler (int sig)\n{\n  /* empty */\n}\n\nvoid imap_keepalive (void)\n{\n  CONNECTION *conn;\n  CONTEXT *ctx = NULL;\n  IMAP_DATA *idata;\n\n  conn = mutt_socket_head ();\n  while (conn)\n  {\n    if (conn->account.type == M_ACCT_TYPE_IMAP)\n    {\n      int need_free = 0;\n\n      idata = (IMAP_DATA*) conn->data;\n\n      if (idata->state >= IMAP_AUTHENTICATED\n\t  && time(NULL) >= idata->lastread + ImapKeepalive)\n      {\n\tif (idata->ctx)\n\t  ctx = idata->ctx;\n\telse\n\t{\n\t  ctx = safe_calloc (1, sizeof (CONTEXT));\n\t  ctx->data = idata;\n\t  /* imap_close_mailbox will set ctx->iadata->ctx to NULL, so we can't\n\t   * rely on the value of iadata->ctx to determine if this placeholder\n\t   * context needs to be freed.\n\t   */\n\t  need_free = 1;\n\t}\n\t/* if the imap connection closes during this call, ctx may be invalid\n\t * after this point, and thus should not be read.\n\t */\n\timap_check_mailbox (ctx, NULL, 1);\n\tif (need_free)\n\t  FREE (&ctx);\n      }\n    }\n\n    conn = conn->next;\n  }\n}\n\nint imap_wait_keepalive (pid_t pid)\n{\n  struct sigaction oldalrm;\n  struct sigaction act;\n  sigset_t oldmask;\n  int rc;\n\n  short imap_passive = option (OPTIMAPPASSIVE);\n\n  set_option (OPTIMAPPASSIVE);\n  set_option (OPTKEEPQUIET);\n\n  sigprocmask (SIG_SETMASK, NULL, &oldmask);\n\n  sigemptyset (&act.sa_mask);\n  act.sa_handler = alrm_handler;\n#ifdef SA_INTERRUPT\n  act.sa_flags = SA_INTERRUPT;\n#else\n  act.sa_flags = 0;\n#endif\n\n  sigaction (SIGALRM, &act, &oldalrm);\n\n  alarm (ImapKeepalive);\n  while (waitpid (pid, &rc, 0) < 0 && errno == EINTR)\n  {\n    alarm (0); /* cancel a possibly pending alarm */\n    imap_keepalive ();\n    alarm (ImapKeepalive);\n  }\n\n  alarm (0);\t/* cancel a possibly pending alarm */\n\n  sigaction (SIGALRM, &oldalrm, NULL);\n  sigprocmask (SIG_SETMASK, &oldmask, NULL);\n\n  unset_option (OPTKEEPQUIET);\n  if (!imap_passive)\n    unset_option (OPTIMAPPASSIVE);\n\n  return rc;\n}\n\n/* Allow/disallow re-opening a folder upon expunge. */\n\nvoid imap_allow_reopen (CONTEXT *ctx)\n{\n  if (ctx && ctx->magic == M_IMAP && CTX_DATA->ctx == ctx)\n    CTX_DATA->reopen |= IMAP_REOPEN_ALLOW;\n}\n\nvoid imap_disallow_reopen (CONTEXT *ctx)\n{\n  if (ctx && ctx->magic == M_IMAP && CTX_DATA->ctx == ctx)\n    CTX_DATA->reopen &= ~IMAP_REOPEN_ALLOW;\n}\n\nint imap_account_match (const ACCOUNT* a1, const ACCOUNT* a2)\n{\n  IMAP_DATA* a1_idata = imap_conn_find (a1, M_IMAP_CONN_NONEW);\n  IMAP_DATA* a2_idata = imap_conn_find (a2, M_IMAP_CONN_NONEW);\n  const ACCOUNT* a1_canon = a1_idata == NULL ? a1 : &a1_idata->conn->account;\n  const ACCOUNT* a2_canon = a2_idata == NULL ? a2 : &a2_idata->conn->account;\n\n  return mutt_account_match (a1_canon, a2_canon);\n}\n"
  },
  {
    "path": "init.c",
    "content": "/*\n * Copyright (C) 1996-2002,2010,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mapping.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_regex.h\"\n#include \"history.h\"\n#include \"keymap.h\"\n#include \"mbyte.h\"\n#include \"charset.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_idna.h\"\n#include \"group.h\"\n\n#if defined(USE_SSL)\n#include \"mutt_ssl.h\"\n#endif\n\n#if USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#include \"mx.h\"\n#include \"init.h\"\n#include \"mailbox.h\"\n\n#include <ctype.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <string.h>\n#include <sys/utsname.h>\n#include <errno.h>\n#include <sys/wait.h>\n#include <sys/time.h>\n\n#define CHECK_PAGER \\\n  if ((CurrentMenu == MENU_PAGER) && (idx >= 0) &&\t\\\n\t    (MuttVars[idx].flags & R_RESORT)) \\\n\t{ \\\n\t  snprintf (err->data, err->dsize, \\\n\t    _(\"Not available in this menu.\")); \\\n\t  return (-1); \\\n\t}\n\ntypedef struct myvar\n{\n  char *name;\n  char *value;\n  struct myvar* next;\n} myvar_t;\n\nstatic myvar_t* MyVars;\n\nstatic int var_to_string (int idx, char* val, size_t len);\n\nstatic void myvar_set (const char* var, const char* val);\nstatic const char* myvar_get (const char* var);\nstatic void myvar_del (const char* var);\n\n#if USE_NOTMUCH\n/* List of tags found in last call to mutt_nm_query_complete(). */\nstatic char **nm_tags;\n#endif\n\n\nstatic void toggle_quadoption (int opt)\n{\n  int n = opt/4;\n  int b = (opt % 4) * 2;\n\n  QuadOptions[n] ^= (1 << b);\n}\n\nvoid set_quadoption (int opt, int flag)\n{\n  int n = opt/4;\n  int b = (opt % 4) * 2;\n\n  QuadOptions[n] &= ~(0x3 << b);\n  QuadOptions[n] |= (flag & 0x3) << b;\n}\n\nint quadoption (int opt)\n{\n  int n = opt/4;\n  int b = (opt % 4) * 2;\n\n  return (QuadOptions[n] >> b) & 0x3;\n}\n\nint query_quadoption (int opt, const char *prompt)\n{\n  int v = quadoption (opt);\n\n  switch (v)\n  {\n    case M_YES:\n    case M_NO:\n      return (v);\n\n    default:\n      v = mutt_yesorno (prompt, (v == M_ASKYES));\n      CLEARLINE (LINES - 1);\n      return (v);\n  }\n\n  /* not reached */\n}\n\n/* given the variable ``s'', return the index into the rc_vars array which\n   matches, or -1 if the variable is not found.  */\nstatic int mutt_option_index (char *s)\n{\n  int i;\n\n  for (i = 0; MuttVars[i].option; i++)\n    if (mutt_strcmp (s, MuttVars[i].option) == 0)\n      return (MuttVars[i].type == DT_SYN ?  mutt_option_index ((char *) MuttVars[i].data) : i);\n  return (-1);\n}\n\nint mutt_extract_token (BUFFER *dest, BUFFER *tok, int flags)\n{\n  char\t\tch;\n  char\t\tqc = 0; /* quote char */\n  char\t\t*pc;\n\n  /* reset the destination pointer to the beginning of the buffer */\n  dest->dptr = dest->data;\n\n  SKIPWS (tok->dptr);\n  while ((ch = *tok->dptr))\n  {\n    if (!qc)\n    {\n      if ((ISSPACE (ch) && !(flags & M_TOKEN_SPACE)) ||\n\t  (ch == '#' && !(flags & M_TOKEN_COMMENT)) ||\n\t  (ch == '=' && (flags & M_TOKEN_EQUAL)) ||\n\t  (ch == ';' && !(flags & M_TOKEN_SEMICOLON)) ||\n\t  ((flags & M_TOKEN_PATTERN) && strchr (\"~%=!|\", ch)))\n\tbreak;\n    }\n\n    tok->dptr++;\n\n    if (ch == qc)\n      qc = 0; /* end of quote */\n    else if (!qc && (ch == '\\'' || ch == '\"') && !(flags & M_TOKEN_QUOTE))\n      qc = ch;\n    else if (ch == '\\\\' && qc != '\\'')\n    {\n\tif (!*tok->dptr)\n\t    return -1; /* premature end of token */\n      switch (ch = *tok->dptr++)\n      {\n\tcase 'c':\n\tcase 'C':\n\t    if (!*tok->dptr)\n\t\treturn -1; /* premature end of token */\n\t  mutt_buffer_addch (dest, (toupper ((unsigned char) *tok->dptr)\n                                    - '@') & 0x7f);\n\t  tok->dptr++;\n\t  break;\n\tcase 'r':\n\t  mutt_buffer_addch (dest, '\\r');\n\t  break;\n\tcase 'n':\n\t  mutt_buffer_addch (dest, '\\n');\n\t  break;\n\tcase 't':\n\t  mutt_buffer_addch (dest, '\\t');\n\t  break;\n\tcase 'f':\n\t  mutt_buffer_addch (dest, '\\f');\n\t  break;\n\tcase 'e':\n\t  mutt_buffer_addch (dest, '\\033');\n\t  break;\n\tdefault:\n\t  if (isdigit ((unsigned char) ch) &&\n\t      isdigit ((unsigned char) *tok->dptr) &&\n\t      isdigit ((unsigned char) *(tok->dptr + 1)))\n\t  {\n\n\t    mutt_buffer_addch (dest, (ch << 6) + (*tok->dptr << 3) + *(tok->dptr + 1) - 3504);\n\t    tok->dptr += 2;\n\t  }\n\t  else\n\t    mutt_buffer_addch (dest, ch);\n      }\n    }\n    else if (ch == '^' && (flags & M_TOKEN_CONDENSE))\n    {\n\tif (!*tok->dptr)\n\t    return -1; /* premature end of token */\n      ch = *tok->dptr++;\n      if (ch == '^')\n\tmutt_buffer_addch (dest, ch);\n      else if (ch == '[')\n\tmutt_buffer_addch (dest, '\\033');\n      else if (isalpha ((unsigned char) ch))\n\tmutt_buffer_addch (dest, toupper ((unsigned char) ch) - '@');\n      else\n      {\n\tmutt_buffer_addch (dest, '^');\n\tmutt_buffer_addch (dest, ch);\n      }\n    }\n    else if (ch == '`' && (!qc || qc == '\"'))\n    {\n      FILE\t*fp;\n      pid_t\tpid;\n      char\t*cmd, *ptr;\n      size_t\texpnlen;\n      BUFFER\texpn;\n      int\tline = 0;\n\n      pc = tok->dptr;\n      do {\n\tif ((pc = strpbrk (pc, \"\\\\`\")))\n\t{\n\t  /* skip any quoted chars */\n\t  if (*pc == '\\\\')\n\t    pc += 2;\n\t}\n      } while (pc && *pc != '`');\n      if (!pc)\n      {\n\tdprint (1, (debugfile, \"mutt_get_token: mismatched backticks\\n\"));\n\treturn (-1);\n      }\n      cmd = mutt_substrdup (tok->dptr, pc);\n      if ((pid = mutt_create_filter (cmd, NULL, &fp, NULL)) < 0)\n      {\n\tdprint (1, (debugfile, \"mutt_get_token: unable to fork command: %s\", cmd));\n\tFREE (&cmd);\n\treturn (-1);\n      }\n      FREE (&cmd);\n\n      tok->dptr = pc + 1;\n\n      /* read line */\n      mutt_buffer_init (&expn);\n      expn.data = mutt_read_line (NULL, &expn.dsize, fp, &line, 0);\n      safe_fclose (&fp);\n      mutt_wait_filter (pid);\n\n      /* if we got output, make a new string consisting of the shell output\n\t plus whatever else was left on the original line */\n      /* BUT: If this is inside a quoted string, directly add output to \n       * the token */\n      if (expn.data && qc)\n      {\n\tmutt_buffer_addstr (dest, expn.data);\n\tFREE (&expn.data);\n      }\n      else if (expn.data)\n      {\n\texpnlen = mutt_strlen (expn.data);\n\ttok->dsize = expnlen + mutt_strlen (tok->dptr) + 1;\n\tptr = safe_malloc (tok->dsize);\n\tmemcpy (ptr, expn.data, expnlen);\n\tstrcpy (ptr + expnlen, tok->dptr);\t/* __STRCPY_CHECKED__ */\n\tif (tok->destroy)\n\t  FREE (&tok->data);\n\ttok->data = ptr;\n\ttok->dptr = ptr;\n\ttok->destroy = 1; /* mark that the caller should destroy this data */\n\tptr = NULL;\n\tFREE (&expn.data);\n      }\n    }\n    else if (ch == '$' && (!qc || qc == '\"') && (*tok->dptr == '{' || isalpha ((unsigned char) *tok->dptr)))\n    {\n      const char *env = NULL;\n      char *var = NULL;\n      int idx;\n\n      if (*tok->dptr == '{')\n      {\n\ttok->dptr++;\n\tif ((pc = strchr (tok->dptr, '}')))\n\t{\n\t  var = mutt_substrdup (tok->dptr, pc);\n\t  tok->dptr = pc + 1;\n\t}\n      }\n      else\n      {\n\tfor (pc = tok->dptr; isalnum ((unsigned char) *pc) || *pc == '_'; pc++)\n\t  ;\n\tvar = mutt_substrdup (tok->dptr, pc);\n\ttok->dptr = pc;\n      }\n      if (var)\n      {\n        if ((env = getenv (var)) || (env = myvar_get (var)))\n          mutt_buffer_addstr (dest, env);\n        else if ((idx = mutt_option_index (var)) != -1)\n        {\n          /* expand settable mutt variables */\n          char val[LONG_STRING];\n\n          if (var_to_string (idx, val, sizeof (val)))\n            mutt_buffer_addstr (dest, val);\n        }\n        FREE (&var);\n      }\n    }\n    else\n      mutt_buffer_addch (dest, ch);\n  }\n  mutt_buffer_addch (dest, 0); /* terminate the string */\n  SKIPWS (tok->dptr);\n  return 0;\n}\n\nstatic void mutt_free_opt (struct option_t* p)\n{\n  REGEXP* pp;\n\n  switch (p->type & DT_MASK)\n  {\n  case DT_ADDR:\n    rfc822_free_address ((ADDRESS**)p->data);\n    break;\n  case DT_RX:\n    pp = (REGEXP*)p->data;\n    FREE (&pp->pattern);\n    if (pp->rx)\n    {\n      regfree (pp->rx);\n      FREE (&pp->rx);\n    }\n    break;\n  case DT_PATH:\n  case DT_STR:\n    FREE ((char**)p->data);\t\t/* __FREE_CHECKED__ */\n    break;\n  }\n}\n\n/* clean up before quitting */\nvoid mutt_free_opts (void)\n{\n  int i;\n\n  for (i = 0; MuttVars[i].option; i++)\n    mutt_free_opt (MuttVars + i);\n\n  mutt_free_rx_list (&Alternates);\n  mutt_free_rx_list (&UnAlternates);\n  mutt_free_rx_list (&MailLists);\n  mutt_free_rx_list (&UnMailLists);\n  mutt_free_rx_list (&SubscribedLists);\n  mutt_free_rx_list (&UnSubscribedLists);\n  mutt_free_rx_list (&NoSpamList);\n}\n\nstatic void add_to_list (LIST **list, const char *str)\n{\n  LIST *t, *last = NULL;\n\n  /* don't add a NULL or empty string to the list */\n  if (!str || *str == '\\0')\n    return;\n\n  /* check to make sure the item is not already on this list */\n  for (last = *list; last; last = last->next)\n  {\n    if (ascii_strcasecmp (str, last->data) == 0)\n    {\n      /* already on the list, so just ignore it */\n      last = NULL;\n      break;\n    }\n    if (!last->next)\n      break;\n  }\n\n  if (!*list || last)\n  {\n    t = (LIST *) safe_calloc (1, sizeof (LIST));\n    t->data = safe_strdup (str);\n    if (last)\n    {\n      last->next = t;\n      last = last->next;\n    }\n    else\n      *list = last = t;\n  }\n}\n\nint mutt_add_to_rx_list (RX_LIST **list, const char *s, int flags, BUFFER *err)\n{\n  RX_LIST *t, *last = NULL;\n  REGEXP *rx;\n\n  if (!s || !*s)\n    return 0;\n\n  if (!(rx = mutt_compile_regexp (s, flags)))\n  {\n    snprintf (err->data, err->dsize, \"Bad regexp: %s\\n\", s);\n    return -1;\n  }\n\n  /* check to make sure the item is not already on this list */\n  for (last = *list; last; last = last->next)\n  {\n    if (ascii_strcasecmp (rx->pattern, last->rx->pattern) == 0)\n    {\n      /* already on the list, so just ignore it */\n      last = NULL;\n      break;\n    }\n    if (!last->next)\n      break;\n  }\n\n  if (!*list || last)\n  {\n    t = mutt_new_rx_list();\n    t->rx = rx;\n    if (last)\n    {\n      last->next = t;\n      last = last->next;\n    }\n    else\n      *list = last = t;\n  }\n  else /* duplicate */\n    mutt_free_regexp (&rx);\n\n  return 0;\n}\n\nstatic int remove_from_spam_list (SPAM_LIST **list, const char *pat);\n\nstatic int add_to_spam_list (SPAM_LIST **list, const char *pat, const char *templ, BUFFER *err)\n{\n  SPAM_LIST *t = NULL, *last = NULL;\n  REGEXP *rx;\n  int n;\n  const char *p;\n\n  if (!pat || !*pat || !templ)\n    return 0;\n\n  if (!(rx = mutt_compile_regexp (pat, REG_ICASE)))\n  {\n    snprintf (err->data, err->dsize, _(\"Bad regexp: %s\"), pat);\n    return -1;\n  }\n\n  /* check to make sure the item is not already on this list */\n  for (last = *list; last; last = last->next)\n  {\n    if (ascii_strcasecmp (rx->pattern, last->rx->pattern) == 0)\n    {\n      /* Already on the list. Formerly we just skipped this case, but\n       * now we're supporting removals, which means we're supporting\n       * re-adds conceptually. So we probably want this to imply a\n       * removal, then do an add. We can achieve the removal by freeing\n       * the template, and leaving t pointed at the current item.\n       */\n      t = last;\n      FREE(&t->template);\n      break;\n    }\n    if (!last->next)\n      break;\n  }\n\n  /* If t is set, it's pointing into an extant SPAM_LIST* that we want to\n   * update. Otherwise we want to make a new one to link at the list's end.\n   */\n  if (!t)\n  {\n    t = mutt_new_spam_list();\n    t->rx = rx;\n    if (last)\n      last->next = t;\n    else\n      *list = t;\n  }\n\n  /* Now t is the SPAM_LIST* that we want to modify. It is prepared. */\n  t->template = safe_strdup(templ);\n\n  /* Find highest match number in template string */\n  t->nmatch = 0;\n  for (p = templ; *p;)\n  {\n    if (*p == '%')\n    {\n        n = atoi(++p);\n        if (n > t->nmatch)\n          t->nmatch = n;\n        while (*p && isdigit((int)*p))\n          ++p;\n    }\n    else\n        ++p;\n  }\n\n  if (t->nmatch > t->rx->rx->re_nsub)\n  {\n    snprintf (err->data, err->dsize, _(\"Not enough subexpressions for spam \"\n                                       \"template\"));\n    remove_from_spam_list(list, pat);\n    return -1;\n  }\n\n  t->nmatch++;         /* match 0 is always the whole expr */\n\n  return 0;\n}\n\nstatic int remove_from_spam_list (SPAM_LIST **list, const char *pat)\n{\n  SPAM_LIST *spam, *prev;\n  int nremoved = 0;\n\n  /* Being first is a special case. */\n  spam = *list;\n  if (!spam)\n    return 0;\n  if (spam->rx && !mutt_strcmp(spam->rx->pattern, pat))\n  {\n    *list = spam->next;\n    mutt_free_regexp(&spam->rx);\n    FREE(&spam->template);\n    FREE(&spam);\n    return 1;\n  }\n\n  prev = spam;\n  for (spam = prev->next; spam;)\n  {\n    if (!mutt_strcmp(spam->rx->pattern, pat))\n    {\n      prev->next = spam->next;\n      mutt_free_regexp(&spam->rx);\n      FREE(&spam->template);\n      FREE(&spam);\n      spam = prev->next;\n      ++nremoved;\n    }\n    else\n      spam = spam->next;\n  }\n\n  return nremoved;\n}\n\n\nstatic void remove_from_list (LIST **l, const char *str)\n{\n  LIST *p, *last = NULL;\n\n  if (mutt_strcmp (\"*\", str) == 0)\n    mutt_free_list (l);    /* ``unCMD *'' means delete all current entries */\n  else\n  {\n    p = *l;\n    last = NULL;\n    while (p)\n    {\n      if (ascii_strcasecmp (str, p->data) == 0)\n      {\n\tFREE (&p->data);\n\tif (last)\n\t  last->next = p->next;\n\telse\n\t  (*l) = p->next;\n\tFREE (&p);\n      }\n      else\n      {\n\tlast = p;\n\tp = p->next;\n      }\n    }\n  }\n}\n\nstatic int parse_unignore (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n\n    /* don't add \"*\" to the unignore list */\n    if (strcmp (buf->data, \"*\")) \n      add_to_list (&UnIgnore, buf->data);\n\n    remove_from_list (&Ignore, buf->data);\n  }\n  while (MoreArgs (s));\n\n  return 0;\n}\n\nstatic int parse_ignore (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    remove_from_list (&UnIgnore, buf->data);\n    add_to_list (&Ignore, buf->data);\n  }\n  while (MoreArgs (s));\n\n  return 0;\n}\n\nstatic int parse_list (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    add_to_list ((LIST **) data, buf->data);\n  }\n  while (MoreArgs (s));\n\n  return 0;\n}\n\nstatic void _alternates_clean (void)\n{\n  int i;\n  if (Context && Context->msgcount) \n  {\n    for (i = 0; i < Context->msgcount; i++)\n      Context->hdrs[i]->recip_valid = 0;\n  }\n}\n\nstatic int parse_alternates (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  group_context_t *gc = NULL;\n  \n  _alternates_clean();\n\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n\n    if (parse_group_context (&gc, buf, s, data, err) == -1)\n      goto bail;\n\n    mutt_remove_from_rx_list (&UnAlternates, buf->data);\n\n    if (mutt_add_to_rx_list (&Alternates, buf->data, REG_ICASE, err) != 0)\n      goto bail;\n\n    if (mutt_group_context_add_rx (gc, buf->data, REG_ICASE, err) != 0)\n      goto bail;\n  }\n  while (MoreArgs (s));\n  \n  mutt_group_context_destroy (&gc);\n  return 0;\n  \n bail:\n  mutt_group_context_destroy (&gc);\n  return -1;\n}\n\nstatic int parse_unalternates (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  _alternates_clean();\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    mutt_remove_from_rx_list (&Alternates, buf->data);\n\n    if (mutt_strcmp (buf->data, \"*\") &&\n\tmutt_add_to_rx_list (&UnAlternates, buf->data, REG_ICASE, err) != 0)\n      return -1;\n\n  }\n  while (MoreArgs (s));\n\n  return 0;\n}\n\nstatic int parse_spam_list (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  BUFFER templ;\n\n  mutt_buffer_init (&templ);\n\n  /* Insist on at least one parameter */\n  if (!MoreArgs(s))\n  {\n    if (data == M_SPAM)\n      strfcpy(err->data, _(\"spam: no matching pattern\"), err->dsize);\n    else\n      strfcpy(err->data, _(\"nospam: no matching pattern\"), err->dsize);\n    return -1;\n  }\n\n  /* Extract the first token, a regexp */\n  mutt_extract_token (buf, s, 0);\n\n  /* data should be either M_SPAM or M_NOSPAM. M_SPAM is for spam commands. */\n  if (data == M_SPAM)\n  {\n    /* If there's a second parameter, it's a template for the spam tag. */\n    if (MoreArgs(s))\n    {\n      mutt_extract_token (&templ, s, 0);\n\n      /* Add to the spam list. */\n      if (add_to_spam_list (&SpamList, buf->data, templ.data, err) != 0) {\n\t  FREE(&templ.data);\n          return -1;\n      }\n      FREE(&templ.data);\n    }\n\n    /* If not, try to remove from the nospam list. */\n    else\n    {\n      mutt_remove_from_rx_list(&NoSpamList, buf->data);\n    }\n\n    return 0;\n  }\n\n  /* M_NOSPAM is for nospam commands. */\n  else if (data == M_NOSPAM)\n  {\n    /* nospam only ever has one parameter. */\n\n    /* \"*\" is a special case. */\n    if (!mutt_strcmp(buf->data, \"*\"))\n    {\n      mutt_free_spam_list (&SpamList);\n      mutt_free_rx_list (&NoSpamList);\n      return 0;\n    }\n\n    /* If it's on the spam list, just remove it. */\n    if (remove_from_spam_list(&SpamList, buf->data) != 0)\n      return 0;\n\n    /* Otherwise, add it to the nospam list. */\n    if (mutt_add_to_rx_list (&NoSpamList, buf->data, REG_ICASE, err) != 0)\n      return -1;\n\n    return 0;\n  }\n\n  /* This should not happen. */\n  strfcpy(err->data, \"This is no good at all.\", err->dsize);\n  return -1;\n}\n\n\nstatic int parse_unlist (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    /*\n     * Check for deletion of entire list\n     */\n    if (mutt_strcmp (buf->data, \"*\") == 0)\n    {\n      mutt_free_list ((LIST **) data);\n      break;\n    }\n    remove_from_list ((LIST **) data, buf->data);\n  }\n  while (MoreArgs (s));\n\n  return 0;\n}\n\nstatic int parse_lists (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  group_context_t *gc = NULL;\n\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    \n    if (parse_group_context (&gc, buf, s, data, err) == -1)\n      goto bail;\n    \n    mutt_remove_from_rx_list (&UnMailLists, buf->data);\n    \n    if (mutt_add_to_rx_list (&MailLists, buf->data, REG_ICASE, err) != 0)\n      goto bail;\n    \n    if (mutt_group_context_add_rx (gc, buf->data, REG_ICASE, err) != 0)\n      goto bail;\n  }\n  while (MoreArgs (s));\n\n  mutt_group_context_destroy (&gc);\n  return 0;\n  \n bail:\n  mutt_group_context_destroy (&gc);\n  return -1;\n}\n\ntypedef enum group_state_t {\n  NONE, RX, ADDR\n} group_state_t;\n\nstatic int parse_group (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  group_context_t *gc = NULL;\n  group_state_t state = NONE;\n  ADDRESS *addr = NULL;\n  char *estr = NULL;\n\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    if (parse_group_context (&gc, buf, s, data, err) == -1)\n      goto bail;\n\n    if (data == M_UNGROUP && !mutt_strcasecmp (buf->data, \"*\"))\n    {\n      if (mutt_group_context_clear (&gc) < 0)\n\tgoto bail;\n      goto out;\n    }\n\n    if (!mutt_strcasecmp (buf->data, \"-rx\"))\n      state = RX;\n    else if (!mutt_strcasecmp (buf->data, \"-addr\"))\n      state = ADDR;\n    else\n    {\n      switch (state)\n      {\n\tcase NONE:\n\t  snprintf (err->data, err->dsize, _(\"%sgroup: missing -rx or -addr.\"),\n\t\t   data == M_UNGROUP ? \"un\" : \"\");\n\t  goto bail;\n\n\tcase RX:\n\t  if (data == M_GROUP &&\n\t      mutt_group_context_add_rx (gc, buf->data, REG_ICASE, err) != 0)\n\t    goto bail;\n\t  else if (data == M_UNGROUP &&\n\t\t   mutt_group_context_remove_rx (gc, buf->data) < 0)\n\t    goto bail;\n\t  break;\n\n\tcase ADDR:\n\t  if ((addr = mutt_parse_adrlist (NULL, buf->data)) == NULL)\n\t    goto bail;\n\t  if (mutt_addrlist_to_intl (addr, &estr))\n\t  { \n\t    snprintf (err->data, err->dsize, _(\"%sgroup: warning: bad IDN '%s'.\\n\"),\n\t\t      data == 1 ? \"un\" : \"\", estr);\n\t    goto bail;\n\t  }\n\t  if (data == M_GROUP)\n\t    mutt_group_context_add_adrlist (gc, addr);\n\t  else if (data == M_UNGROUP)\n\t    mutt_group_context_remove_adrlist (gc, addr);\n\t  rfc822_free_address (&addr);\n\t  break;\n      }\n    }\n  } while (MoreArgs (s));\n\nout:\n  mutt_group_context_destroy (&gc);\n  return 0;\n\nbail:\n  mutt_group_context_destroy (&gc);\n  return -1;\n}\n\n/* always wise to do what someone else did before */\nstatic void _attachments_clean (void)\n{\n  int i;\n  if (Context && Context->msgcount) \n  {\n    for (i = 0; i < Context->msgcount; i++)\n      Context->hdrs[i]->attach_valid = 0;\n  }\n}\n\nstatic int parse_attach_list (BUFFER *buf, BUFFER *s, LIST **ldata, BUFFER *err)\n{\n  ATTACH_MATCH *a;\n  LIST *listp, *lastp;\n  char *p;\n  char *tmpminor;\n  int len;\n  int ret;\n\n  /* Find the last item in the list that data points to. */\n  lastp = NULL;\n  dprint(5, (debugfile, \"parse_attach_list: ldata = %p, *ldata = %p\\n\",\n\t      (void *)ldata, (void *)*ldata));\n  for (listp = *ldata; listp; listp = listp->next)\n  {\n    a = (ATTACH_MATCH *)listp->data;\n    dprint(5, (debugfile, \"parse_attach_list: skipping %s/%s\\n\",\n\t\ta->major, a->minor));\n    lastp = listp;\n  }\n\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n\n    if (!buf->data || *buf->data == '\\0')\n      continue;\n   \n    a = safe_malloc(sizeof(ATTACH_MATCH));\n\n    /* some cheap hacks that I expect to remove */\n    if (!ascii_strcasecmp(buf->data, \"any\"))\n      a->major = safe_strdup(\"*/.*\");\n    else if (!ascii_strcasecmp(buf->data, \"none\"))\n      a->major = safe_strdup(\"cheap_hack/this_should_never_match\");\n    else\n      a->major = safe_strdup(buf->data);\n\n    if ((p = strchr(a->major, '/')))\n    {\n      *p = '\\0';\n      ++p;\n      a->minor = p;\n    }\n    else\n    {\n      a->minor = \"unknown\";\n    }\n\n    len = strlen(a->minor);\n    tmpminor = safe_malloc(len+3);\n    strcpy(&tmpminor[1], a->minor); /* __STRCPY_CHECKED__ */\n    tmpminor[0] = '^';\n    tmpminor[len+1] = '$';\n    tmpminor[len+2] = '\\0';\n\n    a->major_int = mutt_check_mime_type(a->major);\n    ret = REGCOMP(&a->minor_rx, tmpminor, REG_ICASE);\n\n    FREE(&tmpminor);\n\n    if (ret)\n    {\n      regerror(ret, &a->minor_rx, err->data, err->dsize);\n      FREE(&a->major);\n      FREE(&a);\n      return -1;\n    }\n\n    dprint(5, (debugfile, \"parse_attach_list: added %s/%s [%d]\\n\",\n\t\ta->major, a->minor, a->major_int));\n\n    listp = safe_malloc(sizeof(LIST));\n    listp->data = (char *)a;\n    listp->next = NULL;\n    if (lastp)\n    {\n      lastp->next = listp;\n    }\n    else\n    {\n      *ldata = listp;\n    }\n    lastp = listp;\n  }\n  while (MoreArgs (s));\n   \n  _attachments_clean();\n  return 0;\n}\n\nstatic int parse_unattach_list (BUFFER *buf, BUFFER *s, LIST **ldata, BUFFER *err)\n{\n  ATTACH_MATCH *a;\n  LIST *lp, *lastp, *newlp;\n  char *tmp;\n  int major;\n  char *minor;\n\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n\n    if (!ascii_strcasecmp(buf->data, \"any\"))\n      tmp = safe_strdup(\"*/.*\");\n    else if (!ascii_strcasecmp(buf->data, \"none\"))\n      tmp = safe_strdup(\"cheap_hack/this_should_never_match\");\n    else\n      tmp = safe_strdup(buf->data);\n\n    if ((minor = strchr(tmp, '/')))\n    {\n      *minor = '\\0';\n      ++minor;\n    }\n    else\n    {\n      minor = \"unknown\";\n    }\n    major = mutt_check_mime_type(tmp);\n\n    /* We must do our own walk here because remove_from_list() will only\n     * remove the LIST->data, not anything pointed to by the LIST->data. */\n    lastp = NULL;\n    for(lp = *ldata; lp; )\n    {\n      a = (ATTACH_MATCH *)lp->data;\n      dprint(5, (debugfile, \"parse_unattach_list: check %s/%s [%d] : %s/%s [%d]\\n\",\n\t\t  a->major, a->minor, a->major_int, tmp, minor, major));\n      if (a->major_int == major && !mutt_strcasecmp(minor, a->minor))\n      {\n\tdprint(5, (debugfile, \"parse_unattach_list: removed %s/%s [%d]\\n\",\n\t\t    a->major, a->minor, a->major_int));\n\tregfree(&a->minor_rx);\n\tFREE(&a->major);\n\n\t/* Relink backward */\n\tif (lastp)\n\t  lastp->next = lp->next;\n\telse\n\t  *ldata = lp->next;\n\n        newlp = lp->next;\n        FREE(&lp->data);\t/* same as a */\n        FREE(&lp);\n        lp = newlp;\n        continue;\n      }\n\n      lastp = lp;\n      lp = lp->next;\n    }\n\n  }\n  while (MoreArgs (s));\n   \n  FREE(&tmp);\n  _attachments_clean();\n  return 0;\n}\n\nstatic int print_attach_list (LIST *lp, char op, char *name)\n{\n  while (lp) {\n    printf(\"attachments %c%s %s/%s\\n\", op, name,\n           ((ATTACH_MATCH *)lp->data)->major,\n           ((ATTACH_MATCH *)lp->data)->minor);\n    lp = lp->next;\n  }\n\n  return 0;\n}\n\n\nstatic int parse_attachments (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  char op, *category;\n  LIST **listp;\n\n  mutt_extract_token(buf, s, 0);\n  if (!buf->data || *buf->data == '\\0') {\n    strfcpy(err->data, _(\"attachments: no disposition\"), err->dsize);\n    return -1;\n  }\n\n  category = buf->data;\n  op = *category++;\n\n  if (op == '?') {\n    mutt_endwin (NULL);\n    fflush (stdout);\n    printf(\"\\nCurrent attachments settings:\\n\\n\");\n    print_attach_list(AttachAllow,   '+', \"A\");\n    print_attach_list(AttachExclude, '-', \"A\");\n    print_attach_list(InlineAllow,   '+', \"I\");\n    print_attach_list(InlineExclude, '-', \"I\");\n    set_option (OPTFORCEREDRAWINDEX);\n    set_option (OPTFORCEREDRAWPAGER);\n    mutt_any_key_to_continue (NULL);\n    return 0;\n  }\n\n  if (op != '+' && op != '-') {\n    op = '+';\n    category--;\n  }\n  if (!ascii_strncasecmp(category, \"attachment\", strlen(category))) {\n    if (op == '+')\n      listp = &AttachAllow;\n    else\n      listp = &AttachExclude;\n  }\n  else if (!ascii_strncasecmp(category, \"inline\", strlen(category))) {\n    if (op == '+')\n      listp = &InlineAllow;\n    else\n      listp = &InlineExclude;\n  }\n  else {\n    strfcpy(err->data, _(\"attachments: invalid disposition\"), err->dsize);\n    return -1;\n  }\n\n  return parse_attach_list(buf, s, listp, err);\n}\n\nstatic int parse_unattachments (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  char op, *p;\n  LIST **listp;\n\n  mutt_extract_token(buf, s, 0);\n  if (!buf->data || *buf->data == '\\0') {\n    strfcpy(err->data, _(\"unattachments: no disposition\"), err->dsize);\n    return -1;\n  }\n\n  p = buf->data;\n  op = *p++;\n  if (op != '+' && op != '-') {\n    op = '+';\n    p--;\n  }\n  if (!ascii_strncasecmp(p, \"attachment\", strlen(p))) {\n    if (op == '+')\n      listp = &AttachAllow;\n    else\n      listp = &AttachExclude;\n  }\n  else if (!ascii_strncasecmp(p, \"inline\", strlen(p))) {\n    if (op == '+')\n      listp = &InlineAllow;\n    else\n      listp = &InlineExclude;\n  }\n  else {\n    strfcpy(err->data, _(\"unattachments: invalid disposition\"), err->dsize);\n    return -1;\n  }\n\n  return parse_unattach_list(buf, s, listp, err);\n}\n\nstatic int parse_unlists (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    mutt_remove_from_rx_list (&SubscribedLists, buf->data);\n    mutt_remove_from_rx_list (&MailLists, buf->data);\n    \n    if (mutt_strcmp (buf->data, \"*\") && \n\tmutt_add_to_rx_list (&UnMailLists, buf->data, REG_ICASE, err) != 0)\n      return -1;\n  }\n  while (MoreArgs (s));\n\n  return 0;\n}\n\nstatic int parse_subscribe (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  group_context_t *gc = NULL;\n  \n  do\n  {\n    mutt_extract_token (buf, s, 0);\n\n    if (parse_group_context (&gc, buf, s, data, err) == -1)\n      goto bail;\n    \n    mutt_remove_from_rx_list (&UnMailLists, buf->data);\n    mutt_remove_from_rx_list (&UnSubscribedLists, buf->data);\n\n    if (mutt_add_to_rx_list (&MailLists, buf->data, REG_ICASE, err) != 0)\n      goto bail;\n    if (mutt_add_to_rx_list (&SubscribedLists, buf->data, REG_ICASE, err) != 0)\n      goto bail;\n    if (mutt_group_context_add_rx (gc, buf->data, REG_ICASE, err) != 0)\n      goto bail;\n  }\n  while (MoreArgs (s));\n  \n  mutt_group_context_destroy (&gc);\n  return 0;\n  \n bail:\n  mutt_group_context_destroy (&gc);\n  return -1;\n}\n\nstatic int parse_unsubscribe (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    mutt_remove_from_rx_list (&SubscribedLists, buf->data);\n    \n    if (mutt_strcmp (buf->data, \"*\") &&\n\tmutt_add_to_rx_list (&UnSubscribedLists, buf->data, REG_ICASE, err) != 0)\n      return -1;\n  }\n  while (MoreArgs (s));\n\n  return 0;\n}\n  \nstatic int parse_unalias (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  ALIAS *tmp, *last = NULL;\n\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n\n    if (mutt_strcmp (\"*\", buf->data) == 0)\n    {\n      if (CurrentMenu == MENU_ALIAS)\n      {\n\tfor (tmp = Aliases; tmp ; tmp = tmp->next) \n\t  tmp->del = 1;\n\tset_option (OPTFORCEREDRAWINDEX);\n      }\n      else\n\tmutt_free_alias (&Aliases);\n      break;\n    }\n    else\n      for (tmp = Aliases; tmp; tmp = tmp->next)\n      {\n\tif (mutt_strcasecmp (buf->data, tmp->name) == 0)\n\t{\n\t  if (CurrentMenu == MENU_ALIAS)\n\t  {\n\t    tmp->del = 1;\n\t    set_option (OPTFORCEREDRAWINDEX);\n\t    break;\n\t  }\n\n\t  if (last)\n\t    last->next = tmp->next;\n\t  else\n\t    Aliases = tmp->next;\n\t  tmp->next = NULL;\n\t  mutt_free_alias (&tmp);\n\t  break;\n\t}\n\tlast = tmp;\n      }\n  }\n  while (MoreArgs (s));\n  return 0;\n}\n\nstatic int parse_alias (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  ALIAS *tmp = Aliases;\n  ALIAS *last = NULL;\n  char *estr = NULL;\n  group_context_t *gc = NULL;\n  \n  if (!MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"alias: no address\"), err->dsize);\n    return (-1);\n  }\n\n  mutt_extract_token (buf, s, 0);\n\n  if (parse_group_context (&gc, buf, s, data, err) == -1)\n    return -1;\n  \n  /* check to see if an alias with this name already exists */\n  for (; tmp; tmp = tmp->next)\n  {\n    if (!mutt_strcasecmp (tmp->name, buf->data))\n      break;\n    last = tmp;\n  }\n\n  if (!tmp)\n  {\n    /* create a new alias */\n    tmp = (ALIAS *) safe_calloc (1, sizeof (ALIAS));\n    tmp->self = tmp;\n    tmp->name = safe_strdup (buf->data);\n    /* give the main addressbook code a chance */\n    if (CurrentMenu == MENU_ALIAS)\n      set_option (OPTMENUCALLER);\n  }\n  else\n  {\n    mutt_alias_delete_reverse (tmp);\n    /* override the previous value */\n    rfc822_free_address (&tmp->addr);\n    if (CurrentMenu == MENU_ALIAS)\n      set_option (OPTFORCEREDRAWINDEX);\n  }\n\n  mutt_extract_token (buf, s, M_TOKEN_QUOTE | M_TOKEN_SPACE | M_TOKEN_SEMICOLON);\n  dprint (3, (debugfile, \"parse_alias: Second token is '%s'.\\n\",\n\t      buf->data));\n\n  tmp->addr = mutt_parse_adrlist (tmp->addr, buf->data);\n\n  if (last)\n    last->next = tmp;\n  else\n    Aliases = tmp;\n  if (mutt_addrlist_to_intl (tmp->addr, &estr))\n  {\n    snprintf (err->data, err->dsize, _(\"Warning: Bad IDN '%s' in alias '%s'.\\n\"),\n\t      estr, tmp->name);\n    goto bail;\n  }\n\n  mutt_group_context_add_adrlist (gc, tmp->addr);\n  mutt_alias_add_reverse (tmp);\n\n#ifdef DEBUG\n  if (debuglevel >= 2) \n  {\n    ADDRESS *a;\n    /* A group is terminated with an empty address, so check a->mailbox */\n    for (a = tmp->addr; a && a->mailbox; a = a->next)\n    {\n      if (!a->group)\n\tdprint (3, (debugfile, \"parse_alias:   %s\\n\",\n\t\t    a->mailbox));\n      else\n\tdprint (3, (debugfile, \"parse_alias:   Group %s\\n\",\n\t\t    a->mailbox));\n    }\n  }\n#endif\n  mutt_group_context_destroy (&gc);\n  return 0;\n  \n  bail:\n  mutt_group_context_destroy (&gc);\n  return -1;\n}\n\nstatic int\nparse_unmy_hdr (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  LIST *last = NULL;\n  LIST *tmp = UserHeader;\n  LIST *ptr;\n  size_t l;\n\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    if (mutt_strcmp (\"*\", buf->data) == 0)\n      mutt_free_list (&UserHeader);\n    else\n    {\n      tmp = UserHeader;\n      last = NULL;\n\n      l = mutt_strlen (buf->data);\n      if (buf->data[l - 1] == ':')\n\tl--;\n\n      while (tmp)\n      {\n\tif (ascii_strncasecmp (buf->data, tmp->data, l) == 0 && tmp->data[l] == ':')\n\t{\n\t  ptr = tmp;\n\t  if (last)\n\t    last->next = tmp->next;\n\t  else\n\t    UserHeader = tmp->next;\n\t  tmp = tmp->next;\n\t  ptr->next = NULL;\n\t  mutt_free_list (&ptr);\n\t}\n\telse\n\t{\n\t  last = tmp;\n\t  tmp = tmp->next;\n\t}\n      }\n    }\n  }\n  while (MoreArgs (s));\n  return 0;\n}\n\nstatic int parse_my_hdr (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  LIST *tmp;\n  size_t keylen;\n  char *p;\n\n  mutt_extract_token (buf, s, M_TOKEN_SPACE | M_TOKEN_QUOTE);\n  if ((p = strpbrk (buf->data, \": \\t\")) == NULL || *p != ':')\n  {\n    strfcpy (err->data, _(\"invalid header field\"), err->dsize);\n    return (-1);\n  }\n  keylen = p - buf->data + 1;\n\n  if (UserHeader)\n  {\n    for (tmp = UserHeader; ; tmp = tmp->next)\n    {\n      /* see if there is already a field by this name */\n      if (ascii_strncasecmp (buf->data, tmp->data, keylen) == 0)\n      {\n\t/* replace the old value */\n\tFREE (&tmp->data);\n\ttmp->data = buf->data;\n\tmutt_buffer_init (buf);\n\treturn 0;\n      }\n      if (!tmp->next)\n\tbreak;\n    }\n    tmp->next = mutt_new_list ();\n    tmp = tmp->next;\n  }\n  else\n  {\n    tmp = mutt_new_list ();\n    UserHeader = tmp;\n  }\n  tmp->data = buf->data;\n  mutt_buffer_init (buf);\n  return 0;\n}\n\nstatic int\nparse_sort (short *val, const char *s, const struct mapping_t *map, BUFFER *err)\n{\n  int i, flags = 0;\n\n  if (mutt_strncmp (\"reverse-\", s, 8) == 0)\n  {\n    s += 8;\n    flags = SORT_REVERSE;\n  }\n  \n  if (mutt_strncmp (\"last-\", s, 5) == 0)\n  {\n    s += 5;\n    flags |= SORT_LAST;\n  }\n\n  if ((i = mutt_getvaluebyname (s, map)) == -1)\n  {\n    snprintf (err->data, err->dsize, _(\"%s: unknown sorting method\"), s);\n    return (-1);\n  }\n\n  *val = i | flags;\n\n  return 0;\n}\n\nstatic void mutt_set_default (struct option_t *p)\n{\n  switch (p->type & DT_MASK)\n  {\n    case DT_STR:\n      if (!p->init && *((char **) p->data))\n        p->init = (unsigned long) safe_strdup (* ((char **) p->data));\n      break;\n    case DT_PATH:\n      if (!p->init && *((char **) p->data))\n      {\n\tchar *cp = safe_strdup (*((char **) p->data));\n\t/* mutt_pretty_mailbox (cp); */\n        p->init = (unsigned long) cp;\n      }\n      break;\n    case DT_ADDR:\n      if (!p->init && *((ADDRESS **) p->data))\n      {\n\tchar tmp[HUGE_STRING];\n\t*tmp = '\\0';\n\trfc822_write_address (tmp, sizeof (tmp), *((ADDRESS **) p->data), 0);\n\tp->init = (unsigned long) safe_strdup (tmp);\n      }\n      break;\n    case DT_RX:\n    {\n      REGEXP *pp = (REGEXP *) p->data;\n      if (!p->init && pp->pattern)\n\tp->init = (unsigned long) safe_strdup (pp->pattern);\n      break;\n    }\n  }\n}\n\nstatic void mutt_restore_default (struct option_t *p)\n{\n  switch (p->type & DT_MASK)\n  {\n    case DT_STR:\n      mutt_str_replace ((char **) p->data, (char *) p->init); \n      break;\n    case DT_PATH:\n      FREE((char **) p->data);\t\t/* __FREE_CHECKED__ */\n      if (p->init)\n      {\n\tchar path[_POSIX_PATH_MAX];\n\tstrfcpy (path, (char *) p->init, sizeof (path));\n\tmutt_expand_path (path, sizeof (path));\n\t*((char **) p->data) = safe_strdup (path);\n      }\n      break;\n    case DT_ADDR:\n      rfc822_free_address ((ADDRESS **) p->data);\n      if (p->init)\n\t*((ADDRESS **) p->data) = rfc822_parse_adrlist (NULL, (char *) p->init);\n      break;\n    case DT_BOOL:\n      if (p->init)\n\tset_option (p->data);\n      else\n\tunset_option (p->data);\n      break;\n    case DT_QUAD:\n      set_quadoption (p->data, p->init);\n      break;\n    case DT_NUM:\n    case DT_SORT:\n    case DT_MAGIC:\n      *((short *) p->data) = p->init;\n      break;\n    case DT_RX:\n      {\n\tREGEXP *pp = (REGEXP *) p->data;\n\tint flags = 0;\n\n\tFREE (&pp->pattern);\n\tif (pp->rx)\n\t{\n\t  regfree (pp->rx);\n\t  FREE (&pp->rx);\n\t}\n\n\tif (p->init)\n\t{\n\t  char *s = (char *) p->init;\n\n\t  pp->rx = safe_calloc (1, sizeof (regex_t));\n\t  pp->pattern = safe_strdup ((char *) p->init);\n\t  if (mutt_strcmp (p->option, \"mask\") != 0)\n\t    flags |= mutt_which_case ((const char *) p->init);\n\t  if (mutt_strcmp (p->option, \"mask\") == 0 && *s == '!')\n\t  {\n\t    s++;\n\t    pp->not = 1;\n\t  }\n\t  if (REGCOMP (pp->rx, s, flags) != 0)\n\t  {\n\t    fprintf (stderr, _(\"mutt_restore_default(%s): error in regexp: %s\\n\"),\n\t\t     p->option, pp->pattern);\n\t    FREE (&pp->pattern);\n\t    FREE (&pp->rx);\n\t  }\n\t}\n      }\n      break;\n  }\n\n  if (p->flags & R_INDEX)\n    set_option (OPTFORCEREDRAWINDEX);\n  if (p->flags & R_PAGER)\n    set_option (OPTFORCEREDRAWPAGER);\n  if (p->flags & R_RESORT_SUB)\n    set_option (OPTSORTSUBTHREADS);\n  if (p->flags & R_RESORT)\n    set_option (OPTNEEDRESORT);\n  if (p->flags & R_RESORT_INIT)\n    set_option (OPTRESORTINIT);\n  if (p->flags & R_TREE)\n    set_option (OPTREDRAWTREE);\n}\n\nstatic size_t escape_string (char *dst, size_t len, const char* src)\n{\n  char* p = dst;\n\n  if (!len)\n    return 0;\n  len--; /* save room for \\0 */\n#define ESC_CHAR(C)\tdo { *p++ = '\\\\'; if (p - dst < len) *p++ = C; } while(0)\n  while (p - dst < len && src && *src)\n  {\n    switch (*src)\n    {\n    case '\\n':\n      ESC_CHAR('n');\n      break;\n    case '\\r':\n      ESC_CHAR('r');\n      break;\n    case '\\t':\n      ESC_CHAR('t');\n      break;\n    default:\n      if ((*src == '\\\\' || *src == '\"') && p - dst < len - 1)\n\t*p++ = '\\\\';\n      *p++ = *src;\n    }\n    src++;\n  }\n#undef ESC_CHAR\n  *p = '\\0';\n  return p - dst;\n}\n\nstatic void pretty_var (char *dst, size_t len, const char *option, const char *val)\n{\n  char *p;\n\n  if (!len)\n    return;\n\n  strfcpy (dst, option, len);\n  len--; /* save room for \\0 */\n  p = dst + mutt_strlen (dst);\n\n  if (p - dst < len)\n    *p++ = '=';\n  if (p - dst < len)\n    *p++ = '\"';\n  p += escape_string (p, len - (p - dst) + 1, val);\t/* \\0 terminate it */\n  if (p - dst < len)\n    *p++ = '\"';\n  *p = 0;\n}\n\nstatic int check_charset (struct option_t *opt, const char *val)\n{\n  char *p, *q = NULL, *s = safe_strdup (val);\n  int rc = 0, strict = strcmp (opt->option, \"send_charset\") == 0;\n\n  if (!s)\n    return rc;\n\n  for (p = strtok_r (s, \":\", &q); p; p = strtok_r (NULL, \":\", &q))\n  {\n    if (!*p)\n      continue;\n    if (mutt_check_charset (p, strict) < 0)\n    {\n      rc = -1;\n      break;\n    }\n  }\n\n  FREE(&s);\n  return rc;\n}\n\nstatic int parse_set (BUFFER *tmp, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  int query, unset, inv, reset, r = 0;\n  int idx = -1;\n  const char *p;\n  char scratch[_POSIX_PATH_MAX];\n  char* myvar;\n\n  while (MoreArgs (s))\n  {\n    /* reset state variables */\n    query = 0;\n    unset = data & M_SET_UNSET;\n    inv = data & M_SET_INV;\n    reset = data & M_SET_RESET;\n    myvar = NULL;\n\n    if (*s->dptr == '?')\n    {\n      query = 1;\n      s->dptr++;\n    }\n    else if (mutt_strncmp (\"no\", s->dptr, 2) == 0)\n    {\n      s->dptr += 2;\n      unset = !unset;\n    }\n    else if (mutt_strncmp (\"inv\", s->dptr, 3) == 0)\n    {\n      s->dptr += 3;\n      inv = !inv;\n    }\n    else if (*s->dptr == '&')\n    {\n      reset = 1;\n      s->dptr++;\n    }\n\n    /* get the variable name */\n    mutt_extract_token (tmp, s, M_TOKEN_EQUAL);\n\n    if (!mutt_strncmp (\"my_\", tmp->data, 3))\n      myvar = tmp->data;\n    else if ((idx = mutt_option_index (tmp->data)) == -1 &&\n\t!(reset && !mutt_strcmp (\"all\", tmp->data)))\n    {\n      snprintf (err->data, err->dsize, _(\"%s: unknown variable\"), tmp->data);\n      return (-1);\n    }\n    SKIPWS (s->dptr);\n\n    if (reset)\n    {\n      if (query || unset || inv)\n      {\n\tsnprintf (err->data, err->dsize, _(\"prefix is illegal with reset\"));\n\treturn (-1);\n      }\n\n      if (s && *s->dptr == '=')\n      {\n\tsnprintf (err->data, err->dsize, _(\"value is illegal with reset\"));\n\treturn (-1);\n      }\n     \n      if (!mutt_strcmp (\"all\", tmp->data))\n      {\n\tif (CurrentMenu == MENU_PAGER)\n\t{\n\t  snprintf (err->data, err->dsize, _(\"Not available in this menu.\"));\n\t  return (-1);\n\t}\n\tfor (idx = 0; MuttVars[idx].option; idx++)\n\t  mutt_restore_default (&MuttVars[idx]);\n\tset_option (OPTFORCEREDRAWINDEX);\n\tset_option (OPTFORCEREDRAWPAGER);\n\tset_option (OPTSORTSUBTHREADS);\n\tset_option (OPTNEEDRESORT);\n\tset_option (OPTRESORTINIT);\n\tset_option (OPTREDRAWTREE);\n\treturn 0;\n      }\n      else\n      {\n\tCHECK_PAGER;\n        if (myvar)\n          myvar_del (myvar);\n        else\n          mutt_restore_default (&MuttVars[idx]);\n      }\n    } \n    else if (!myvar && DTYPE (MuttVars[idx].type) == DT_BOOL)\n    { \n      if (s && *s->dptr == '=')\n      {\n\tif (unset || inv || query)\n\t{\n\t  snprintf (err->data, err->dsize, _(\"Usage: set variable=yes|no\"));\n\t  return (-1);\n\t}\n\n\ts->dptr++;\n\tmutt_extract_token (tmp, s, 0);\n\tif (ascii_strcasecmp (\"yes\", tmp->data) == 0)\n\t  unset = inv = 0;\n\telse if (ascii_strcasecmp (\"no\", tmp->data) == 0)\n\t  unset = 1;\n\telse\n\t{\n\t  snprintf (err->data, err->dsize, _(\"Usage: set variable=yes|no\"));\n\t  return (-1);\n\t}\n      }\n\n      if (query)\n      {\n\tsnprintf (err->data, err->dsize, option (MuttVars[idx].data)\n\t\t\t? _(\"%s is set\") : _(\"%s is unset\"), tmp->data);\n\treturn 0;\n      }\n\n      CHECK_PAGER;\n      if (unset)\n\tunset_option (MuttVars[idx].data);\n      else if (inv)\n\ttoggle_option (MuttVars[idx].data);\n      else\n\tset_option (MuttVars[idx].data);\n    }\n    else if (myvar || DTYPE (MuttVars[idx].type) == DT_STR ||\n\t     DTYPE (MuttVars[idx].type) == DT_PATH ||\n\t     DTYPE (MuttVars[idx].type) == DT_ADDR)\n    {\n      if (unset)\n      {\n\tCHECK_PAGER;\n        if (myvar)\n          myvar_del (myvar);\n\telse if (DTYPE (MuttVars[idx].type) == DT_ADDR)\n\t  rfc822_free_address ((ADDRESS **) MuttVars[idx].data);\n\telse\n\t  /* MuttVars[idx].data is already 'char**' (or some 'void**') or... \n\t   * so cast to 'void*' is okay */\n\t  FREE ((void *) MuttVars[idx].data);\t\t/* __FREE_CHECKED__ */\n      }\n      else if (query || *s->dptr != '=')\n      {\n\tchar _tmp[LONG_STRING];\n\tconst char *val = NULL;\n\n        if (myvar)\n        {\n          if ((val = myvar_get (myvar)))\n          {\n\t    pretty_var (err->data, err->dsize, myvar, val);\n            break;\n          }\n          else\n          {\n            snprintf (err->data, err->dsize, _(\"%s: unknown variable\"), myvar);\n            return (-1);\n          }\n        }\n\telse if (DTYPE (MuttVars[idx].type) == DT_ADDR)\n\t{\n\t  _tmp[0] = '\\0';\n\t  rfc822_write_address (_tmp, sizeof (_tmp), *((ADDRESS **) MuttVars[idx].data), 0);\n\t  val = _tmp;\n\t}\n\telse if (DTYPE (MuttVars[idx].type) == DT_PATH)\n\t{\n\t  _tmp[0] = '\\0';\n\t  strfcpy (_tmp, NONULL(*((char **) MuttVars[idx].data)), sizeof (_tmp));\n\t  mutt_pretty_mailbox (_tmp, sizeof (_tmp));\n\t  val = _tmp;\n\t}\n\telse\n\t  val = *((char **) MuttVars[idx].data);\n\t\n\t/* user requested the value of this variable */\n\tpretty_var (err->data, err->dsize, MuttVars[idx].option, NONULL(val));\n\tbreak;\n      }\n      else\n      {\n\tCHECK_PAGER;\n        s->dptr++;\n\n        if (myvar)\n\t{\n\t  /* myvar is a pointer to tmp and will be lost on extract_token */\n\t  myvar = safe_strdup (myvar);\n          myvar_del (myvar);\n\t}\n\n        mutt_extract_token (tmp, s, 0);\n\n        if (myvar)\n        {\n          myvar_set (myvar, tmp->data);\n          FREE (&myvar);\n\t  myvar=\"don't resort\";\n        }\n        else if (DTYPE (MuttVars[idx].type) == DT_PATH)\n        {\n\t  /* MuttVars[idx].data is already 'char**' (or some 'void**') or... \n\t   * so cast to 'void*' is okay */\n\t  FREE ((void *) MuttVars[idx].data);\t\t/* __FREE_CHECKED__ */\n\n\t  strfcpy (scratch, tmp->data, sizeof (scratch));\n\t  mutt_expand_path (scratch, sizeof (scratch));\n\t  *((char **) MuttVars[idx].data) = safe_strdup (scratch);\n        }\n        else if (DTYPE (MuttVars[idx].type) == DT_STR)\n        {\n\t  if ((strstr (MuttVars[idx].option, \"charset\") &&\n\t       check_charset (&MuttVars[idx], tmp->data) < 0) |\n\t      /* $charset can't be empty, others can */\n\t      (strcmp(MuttVars[idx].option, \"charset\") == 0 && ! *tmp->data))\n\t  {\n\t    snprintf (err->data, err->dsize, _(\"Invalid value for option %s: \\\"%s\\\"\"),\n\t\t      MuttVars[idx].option, tmp->data);\n\t    return (-1);\n\t  }\n\n\t  FREE ((void *) MuttVars[idx].data);\t\t/* __FREE_CHECKED__ */\n\t  *((char **) MuttVars[idx].data) = safe_strdup (tmp->data);\n\t  if (mutt_strcmp (MuttVars[idx].option, \"charset\") == 0)\n\t    mutt_set_charset (Charset);\n        }\n        else\n        {\n\t  rfc822_free_address ((ADDRESS **) MuttVars[idx].data);\n\t  *((ADDRESS **) MuttVars[idx].data) = rfc822_parse_adrlist (NULL, tmp->data);\n        }\n      }\n    }\n    else if (DTYPE(MuttVars[idx].type) == DT_RX)\n    {\n      REGEXP *ptr = (REGEXP *) MuttVars[idx].data;\n      regex_t *rx;\n      int e, flags = 0;\n\n      if (query || *s->dptr != '=')\n      {\n\t/* user requested the value of this variable */\n\tpretty_var (err->data, err->dsize, MuttVars[idx].option, NONULL(ptr->pattern));\n\tbreak;\n      }\n\n      if (option(OPTATTACHMSG) && !mutt_strcmp(MuttVars[idx].option, \"reply_regexp\"))\n      {\n\tsnprintf (err->data, err->dsize, \"Operation not permitted when in attach-message mode.\");\n\tr = -1;\n\tbreak;\n      }\n      \n      CHECK_PAGER;\n      s->dptr++;\n\n      /* copy the value of the string */\n      mutt_extract_token (tmp, s, 0);\n\n      if (!ptr->pattern || mutt_strcmp (ptr->pattern, tmp->data) != 0)\n      {\n\tint not = 0;\n\n\t/* $mask is case-sensitive */\n\tif (mutt_strcmp (MuttVars[idx].option, \"mask\") != 0)\n\t  flags |= mutt_which_case (tmp->data);\n\n\tp = tmp->data;\n\tif (mutt_strcmp (MuttVars[idx].option, \"mask\") == 0)\n\t{\n\t  if (*p == '!')\n\t  {\n\t    not = 1;\n\t    p++;\n\t  }\n\t}\n\t  \n\trx = (regex_t *) safe_malloc (sizeof (regex_t));\n\tif ((e = REGCOMP (rx, p, flags)) != 0)\n\t{\n\t  regerror (e, rx, err->data, err->dsize);\n\t  FREE (&rx);\n\t  break;\n\t}\n\n\t/* get here only if everything went smootly */\n\tif (ptr->pattern)\n\t{\n\t  FREE (&ptr->pattern);\n\t  regfree ((regex_t *) ptr->rx);\n\t  FREE (&ptr->rx);\n\t}\n\n\tptr->pattern = safe_strdup (tmp->data);\n\tptr->rx = rx;\n\tptr->not = not;\n\n\t/* $reply_regexp and $alterantes require special treatment */\n\t\n\tif (Context && Context->msgcount &&\n\t    mutt_strcmp (MuttVars[idx].option, \"reply_regexp\") == 0)\n\t{\n\t  regmatch_t pmatch[1];\n\t  int i;\n\t  \n#define CUR_ENV Context->hdrs[i]->env\n\t  for (i = 0; i < Context->msgcount; i++)\n\t  {\n\t    if (CUR_ENV && CUR_ENV->subject)\n\t    {\n\t      CUR_ENV->real_subj = (regexec (ReplyRegexp.rx,\n\t\t\t\t    CUR_ENV->subject, 1, pmatch, 0)) ?\n\t\t\t\t    CUR_ENV->subject : \n\t\t\t\t    CUR_ENV->subject + pmatch[0].rm_eo;\n\t    }\n\t  }\n#undef CUR_ENV\n\t}\n      }\n    }\n    else if (DTYPE(MuttVars[idx].type) == DT_MAGIC)\n    {\n      if (query || *s->dptr != '=')\n      {\n\tswitch (DefaultMagic)\n\t{\n\t  case M_MBOX:\n\t    p = \"mbox\";\n\t    break;\n\t  case M_MMDF:\n\t    p = \"MMDF\";\n\t    break;\n\t  case M_MH:\n\t    p = \"MH\";\n\t    break;\n\t  case M_MAILDIR:\n\t    p = \"Maildir\";\n\t    break;\n\t  default:\n\t    p = \"unknown\";\n\t    break;\n\t}\n\tsnprintf (err->data, err->dsize, \"%s=%s\", MuttVars[idx].option, p);\n\tbreak;\n      }\n\n      CHECK_PAGER;\n      s->dptr++;\n\n      /* copy the value of the string */\n      mutt_extract_token (tmp, s, 0);\n      if (mx_set_magic (tmp->data))\n      {\n\tsnprintf (err->data, err->dsize, _(\"%s: invalid mailbox type\"), tmp->data);\n\tr = -1;\n\tbreak;\n      }\n    }\n    else if (DTYPE(MuttVars[idx].type) == DT_NUM)\n    {\n      short *ptr = (short *) MuttVars[idx].data;\n      short val;\n      int rc;\n\n      if (query || *s->dptr != '=')\n      {\n\tval = *ptr;\n\t/* compatibility alias */\n\tif (mutt_strcmp (MuttVars[idx].option, \"wrapmargin\") == 0)\n\t  val = *ptr < 0 ? -*ptr : 0;\n\n\t/* user requested the value of this variable */\n\tsnprintf (err->data, err->dsize, \"%s=%d\", MuttVars[idx].option, val);\n\tbreak;\n      }\n\n      CHECK_PAGER;\n      s->dptr++;\n\n      mutt_extract_token (tmp, s, 0);\n      rc = mutt_atos (tmp->data, (short *) &val);\n\n      if (rc < 0 || !*tmp->data)\n      {\n\tsnprintf (err->data, err->dsize, _(\"%s: invalid value (%s)\"), tmp->data,\n\t\t  rc == -1 ? _(\"format error\") : _(\"number overflow\"));\n\tr = -1;\n\tbreak;\n      }\n      else\n\t*ptr = val;\n\n      /* these ones need a sanity check */\n      if (mutt_strcmp (MuttVars[idx].option, \"history\") == 0)\n      {\n\tif (*ptr < 0)\n\t  *ptr = 0;\n\tmutt_init_history ();\n      }\n      else if (mutt_strcmp (MuttVars[idx].option, \"pager_index_lines\") == 0)\n      {\n\tif (*ptr < 0)\n\t  *ptr = 0;\n      }\n      else if (mutt_strcmp (MuttVars[idx].option, \"wrapmargin\") == 0)\n      {\n\tif (*ptr < 0)\n\t  *ptr = 0;\n\telse\n\t  *ptr = -*ptr;\n      }\n#ifdef USE_IMAP\n      else if (mutt_strcmp (MuttVars[idx].option, \"imap_pipeline_depth\") == 0)\n      {\n        if (*ptr < 0)\n          *ptr = 0;\n      }\n#endif\n    }\n    else if (DTYPE (MuttVars[idx].type) == DT_QUAD)\n    {\n      if (query)\n      {\n\tstatic const char * const vals[] = { \"no\", \"yes\", \"ask-no\", \"ask-yes\" };\n\n\tsnprintf (err->data, err->dsize, \"%s=%s\", MuttVars[idx].option,\n\t\t  vals [ quadoption (MuttVars[idx].data) ]);\n\tbreak;\n      }\n\n      CHECK_PAGER;\n      if (*s->dptr == '=')\n      {\n\ts->dptr++;\n\tmutt_extract_token (tmp, s, 0);\n\tif (ascii_strcasecmp (\"yes\", tmp->data) == 0)\n\t  set_quadoption (MuttVars[idx].data, M_YES);\n\telse if (ascii_strcasecmp (\"no\", tmp->data) == 0)\n\t  set_quadoption (MuttVars[idx].data, M_NO);\n\telse if (ascii_strcasecmp (\"ask-yes\", tmp->data) == 0)\n\t  set_quadoption (MuttVars[idx].data, M_ASKYES);\n\telse if (ascii_strcasecmp (\"ask-no\", tmp->data) == 0)\n\t  set_quadoption (MuttVars[idx].data, M_ASKNO);\n\telse\n\t{\n\t  snprintf (err->data, err->dsize, _(\"%s: invalid value\"), tmp->data);\n\t  r = -1;\n\t  break;\n\t}\n      }\n      else\n      {\n\tif (inv)\n\t  toggle_quadoption (MuttVars[idx].data);\n\telse if (unset)\n\t  set_quadoption (MuttVars[idx].data, M_NO);\n\telse\n\t  set_quadoption (MuttVars[idx].data, M_YES);\n      }\n    }\n    else if (DTYPE (MuttVars[idx].type) == DT_SORT)\n    {\n      const struct mapping_t *map = NULL;\n\n      switch (MuttVars[idx].type & DT_SUBTYPE_MASK)\n      {\n\tcase DT_SORT_ALIAS:\n\t  map = SortAliasMethods;\n\t  break;\n\tcase DT_SORT_BROWSER:\n\t  map = SortBrowserMethods;\n\t  break;\n\tcase DT_SORT_KEYS:\n          if ((WithCrypto & APPLICATION_PGP))\n            map = SortKeyMethods;\n\t  break;\n\tcase DT_SORT_AUX:\n\t  map = SortAuxMethods;\n\t  break;\n\tcase DT_SORT_SIDEBAR:\n\t  map = SortSidebarMethods;\n\t  break;\n\tdefault:\n\t  map = SortMethods;\n\t  break;\n      }\n\n      if (!map)\n      {\n\tsnprintf (err->data, err->dsize, _(\"%s: Unknown type.\"), MuttVars[idx].option);\n\tr = -1;\n\tbreak;\n      }\n      \n      if (query || *s->dptr != '=')\n      {\n\tp = mutt_getnamebyvalue (*((short *) MuttVars[idx].data) & SORT_MASK, map);\n\n\tsnprintf (err->data, err->dsize, \"%s=%s%s%s\", MuttVars[idx].option,\n\t\t  (*((short *) MuttVars[idx].data) & SORT_REVERSE) ? \"reverse-\" : \"\",\n\t\t  (*((short *) MuttVars[idx].data) & SORT_LAST) ? \"last-\" : \"\",\n\t\t  p);\n\treturn 0;\n      }\n      CHECK_PAGER;\n      s->dptr++;\n      mutt_extract_token (tmp, s , 0);\n\n      if (parse_sort ((short *) MuttVars[idx].data, tmp->data, map, err) == -1)\n      {\n\tr = -1;\n\tbreak;\n      }\n    }\n    else\n    {\n      snprintf (err->data, err->dsize, _(\"%s: unknown type\"), MuttVars[idx].option);\n      r = -1;\n      break;\n    }\n\n    if (!myvar)\n    {\n      if (MuttVars[idx].flags & R_INDEX)\n        set_option (OPTFORCEREDRAWINDEX);\n      if (MuttVars[idx].flags & R_PAGER)\n        set_option (OPTFORCEREDRAWPAGER);\n      if (MuttVars[idx].flags & R_RESORT_SUB)\n        set_option (OPTSORTSUBTHREADS);\n      if (MuttVars[idx].flags & R_RESORT)\n        set_option (OPTNEEDRESORT);\n      if (MuttVars[idx].flags & R_RESORT_INIT)\n        set_option (OPTRESORTINIT);\n      if (MuttVars[idx].flags & R_TREE)\n        set_option (OPTREDRAWTREE);\n    }\n  }\n  return (r);\n}\n\n#define MAXERRS 128\n\n/* reads the specified initialization file.  returns -1 if errors were found\n   so that we can pause to let the user know...  */\nstatic int source_rc (const char *rcfile, BUFFER *err)\n{\n  FILE *f;\n  int line = 0, rc = 0, conv = 0;\n  BUFFER token;\n  char *linebuf = NULL;\n  char *currentline = NULL;\n  size_t buflen;\n  pid_t pid;\n\n  dprint (2, (debugfile, \"Reading configuration file '%s'.\\n\",\n\t  rcfile));\n  \n  if ((f = mutt_open_read (rcfile, &pid)) == NULL)\n  {\n    snprintf (err->data, err->dsize, \"%s: %s\", rcfile, strerror (errno));\n    return (-1);\n  }\n\n  mutt_buffer_init (&token);\n  while ((linebuf = mutt_read_line (linebuf, &buflen, f, &line, M_CONT)) != NULL)\n  {\n    conv=ConfigCharset && (*ConfigCharset) && Charset;\n    if (conv) \n    {\n      currentline=safe_strdup(linebuf);\n      if (!currentline) continue;\n      mutt_convert_string(&currentline, ConfigCharset, Charset, 0);\n    } \n    else \n      currentline=linebuf;\n\n    if (mutt_parse_rc_line (currentline, &token, err) == -1)\n    {\n      mutt_error (_(\"Error in %s, line %d: %s\"), rcfile, line, err->data);\n      if (--rc < -MAXERRS) \n      {\n        if (conv) FREE(&currentline);\n        break;\n      }\n    }\n    else\n    {\n      if (rc < 0)\n        rc = -1;\n    }\n    if (conv) \n      FREE(&currentline);\n  }\n  FREE (&token.data);\n  FREE (&linebuf);\n  safe_fclose (&f);\n  if (pid != -1)\n    mutt_wait_filter (pid);\n  if (rc)\n  {\n    /* the muttrc source keyword */\n    snprintf (err->data, err->dsize, rc >= -MAXERRS ? _(\"source: errors in %s\")\n      : _(\"source: reading aborted due to too many errors in %s\"), rcfile);\n    rc = -1;\n  }\n  return (rc);\n}\n\n#undef MAXERRS\n\nstatic int parse_source (BUFFER *tmp, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  char path[_POSIX_PATH_MAX];\n\n  if (mutt_extract_token (tmp, s, 0) != 0)\n  {\n    snprintf (err->data, err->dsize, _(\"source: error at %s\"), s->dptr);\n    return (-1);\n  }\n  if (MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"source: too many arguments\"), err->dsize);\n    return (-1);\n  }\n  strfcpy (path, tmp->data, sizeof (path));\n  mutt_expand_path (path, sizeof (path));\n  return (source_rc (path, err));\n}\n\n/* line\t\tcommand to execute\n\n   token\tscratch buffer to be used by parser.  caller should free\n   \t\ttoken->data when finished.  the reason for this variable is\n\t\tto avoid having to allocate and deallocate a lot of memory\n\t\tif we are parsing many lines.  the caller can pass in the\n\t\tmemory to use, which avoids having to create new space for\n\t\tevery call to this function.\n\n   err\t\twhere to write error messages */\nint mutt_parse_rc_line (/* const */ char *line, BUFFER *token, BUFFER *err)\n{\n  int i, r = -1;\n  BUFFER expn;\n\n  if (!line || !*line)\n    return 0;\n\n  mutt_buffer_init (&expn);\n  expn.data = expn.dptr = line;\n  expn.dsize = mutt_strlen (line);\n\n  *err->data = 0;\n\n  SKIPWS (expn.dptr);\n  while (*expn.dptr)\n  {\n    if (*expn.dptr == '#')\n      break; /* rest of line is a comment */\n    if (*expn.dptr == ';')\n    {\n      expn.dptr++;\n      continue;\n    }\n    mutt_extract_token (token, &expn, 0);\n    for (i = 0; Commands[i].name; i++)\n    {\n      if (!mutt_strcmp (token->data, Commands[i].name))\n      {\n\tif (Commands[i].func (token, &expn, Commands[i].data, err) != 0)\n\t  goto finish;\n        break;\n      }\n    }\n    if (!Commands[i].name)\n    {\n      snprintf (err->data, err->dsize, _(\"%s: unknown command\"), NONULL (token->data));\n      goto finish;\n    }\n  }\n  r = 0;\nfinish:\n  if (expn.destroy)\n    FREE (&expn.data);\n  return (r);\n}\n\n\n#define NUMVARS (sizeof (MuttVars)/sizeof (MuttVars[0]))\n#define NUMCOMMANDS (sizeof (Commands)/sizeof (Commands[0]))\n/* initial string that starts completion. No telling how much crap \n * the user has typed so far. Allocate LONG_STRING just to be sure! */\nstatic char User_typed [LONG_STRING] = {0}; \n\nstatic int  Num_matched = 0; /* Number of matches for completion */\nstatic char Completed [STRING] = {0}; /* completed string (command or variable) */\nstatic const char **Matches;\n/* this is a lie until mutt_init runs: */\nstatic int  Matches_listsize = MAX(NUMVARS,NUMCOMMANDS) + 10;\n\nstatic void matches_ensure_morespace(int current)\n{\n  int base_space, extra_space, space;\n\n  if (current > Matches_listsize - 2)\n  {\n    base_space = MAX(NUMVARS,NUMCOMMANDS) + 1; \n    extra_space = Matches_listsize - base_space;\n    extra_space *= 2;\n    space = base_space + extra_space;\n    safe_realloc (&Matches, space * sizeof (char *));\n    memset (&Matches[current + 1], 0, space - current);\n    Matches_listsize = space;\n  }\n}\n\n/* helper function for completion.  Changes the dest buffer if\n   necessary/possible to aid completion.\n\tdest == completion result gets here.\n\tsrc == candidate for completion.\n\ttry == user entered data for completion.\n\tlen == length of dest buffer.\n*/\nstatic void candidate (char *dest, char *try, const char *src, int len)\n{\n  int l;\n\n  if (strstr (src, try) == src)\n  {\n    matches_ensure_morespace (Num_matched);\n    Matches[Num_matched++] = src;\n    if (dest[0] == 0)\n      strfcpy (dest, src, len);\n    else\n    {\n      for (l = 0; src[l] && src[l] == dest[l]; l++);\n      dest[l] = 0;\n    }\n  }\n}\n\nint mutt_command_complete (char *buffer, size_t len, int pos, int numtabs)\n{\n  char *pt = buffer;\n  int num;\n  int spaces; /* keep track of the number of leading spaces on the line */\n  myvar_t *myv;\n\n  SKIPWS (buffer);\n  spaces = buffer - pt;\n\n  pt = buffer + pos - spaces;\n  while ((pt > buffer) && !isspace ((unsigned char) *pt))\n    pt--;\n\n  if (pt == buffer) /* complete cmd */\n  {\n    /* first TAB. Collect all the matches */\n    if (numtabs == 1)\n    {\n      Num_matched = 0;\n      strfcpy (User_typed, pt, sizeof (User_typed));\n      memset (Matches, 0, Matches_listsize);\n      memset (Completed, 0, sizeof (Completed));\n      for (num = 0; Commands[num].name; num++)\n\tcandidate (Completed, User_typed, Commands[num].name, sizeof (Completed));\n      matches_ensure_morespace (Num_matched);\n      Matches[Num_matched++] = User_typed;\n\n      /* All matches are stored. Longest non-ambiguous string is \"\"\n       * i.e. don't change 'buffer'. Fake successful return this time */\n      if (User_typed[0] == 0)\n\treturn 1;\n    }\n\n    if (Completed[0] == 0 && User_typed[0])\n      return 0;\n\n     /* Num_matched will _always_ be at least 1 since the initial\n      * user-typed string is always stored */\n    if (numtabs == 1 && Num_matched == 2)\n      snprintf(Completed, sizeof(Completed),\"%s\", Matches[0]);\n    else if (numtabs > 1 && Num_matched > 2)\n      /* cycle thru all the matches */\n      snprintf(Completed, sizeof(Completed), \"%s\", \n\t       Matches[(numtabs - 2) % Num_matched]);\n\n    /* return the completed command */\n    strncpy (buffer, Completed, len - spaces);\n  }\n  else if (!mutt_strncmp (buffer, \"set\", 3)\n\t   || !mutt_strncmp (buffer, \"unset\", 5)\n\t   || !mutt_strncmp (buffer, \"reset\", 5)\n\t   || !mutt_strncmp (buffer, \"toggle\", 6))\n  { \t\t/* complete variables */\n    static const char * const prefixes[] = { \"no\", \"inv\", \"?\", \"&\", 0 };\n    \n    pt++;\n    /* loop through all the possible prefixes (no, inv, ...) */\n    if (!mutt_strncmp (buffer, \"set\", 3))\n    {\n      for (num = 0; prefixes[num]; num++)\n      {\n\tif (!mutt_strncmp (pt, prefixes[num], mutt_strlen (prefixes[num])))\n\t{\n\t  pt += mutt_strlen (prefixes[num]);\n\t  break;\n\t}\n      }\n    }\n    \n    /* first TAB. Collect all the matches */\n    if (numtabs == 1)\n    {\n      Num_matched = 0;\n      strfcpy (User_typed, pt, sizeof (User_typed));\n      memset (Matches, 0, Matches_listsize);\n      memset (Completed, 0, sizeof (Completed));\n      for (num = 0; MuttVars[num].option; num++)\n\tcandidate (Completed, User_typed, MuttVars[num].option, sizeof (Completed));\n      for (myv = MyVars; myv; myv = myv->next)\n\tcandidate (Completed, User_typed, myv->name, sizeof (Completed));\n      matches_ensure_morespace (Num_matched);\n      Matches[Num_matched++] = User_typed;\n\n      /* All matches are stored. Longest non-ambiguous string is \"\"\n       * i.e. don't change 'buffer'. Fake successful return this time */\n      if (User_typed[0] == 0)\n\treturn 1;\n    }\n\n    if (Completed[0] == 0 && User_typed[0])\n      return 0;\n\n    /* Num_matched will _always_ be at least 1 since the initial\n     * user-typed string is always stored */\n    if (numtabs == 1 && Num_matched == 2)\n      snprintf(Completed, sizeof(Completed),\"%s\", Matches[0]);\n    else if (numtabs > 1 && Num_matched > 2)\n    /* cycle thru all the matches */\n      snprintf(Completed, sizeof(Completed), \"%s\", \n\t       Matches[(numtabs - 2) % Num_matched]);\n\n    strncpy (pt, Completed, buffer + len - pt - spaces);\n  }\n  else if (!mutt_strncmp (buffer, \"exec\", 4))\n  {\n    const struct binding_t *menu = km_get_table (CurrentMenu);\n\n    if (!menu && CurrentMenu != MENU_PAGER)\n      menu = OpGeneric;\n    \n    pt++;\n    /* first TAB. Collect all the matches */\n    if (numtabs == 1)\n    {\n      Num_matched = 0;\n      strfcpy (User_typed, pt, sizeof (User_typed));\n      memset (Matches, 0, Matches_listsize);\n      memset (Completed, 0, sizeof (Completed));\n      for (num = 0; menu[num].name; num++)\n\tcandidate (Completed, User_typed, menu[num].name, sizeof (Completed));\n      /* try the generic menu */\n      if (Completed[0] == 0 && CurrentMenu != MENU_PAGER) \n      {\n\tmenu = OpGeneric;\n\tfor (num = 0; menu[num].name; num++)\n\t  candidate (Completed, User_typed, menu[num].name, sizeof (Completed));\n      }\n      matches_ensure_morespace (Num_matched);\n      Matches[Num_matched++] = User_typed;\n\n      /* All matches are stored. Longest non-ambiguous string is \"\"\n       * i.e. don't change 'buffer'. Fake successful return this time */\n      if (User_typed[0] == 0)\n\treturn 1;\n    }\n\n    if (Completed[0] == 0 && User_typed[0])\n      return 0;\n\n    /* Num_matched will _always_ be at least 1 since the initial\n     * user-typed string is always stored */\n    if (numtabs == 1 && Num_matched == 2)\n      snprintf(Completed, sizeof(Completed),\"%s\", Matches[0]);\n    else if (numtabs > 1 && Num_matched > 2)\n    /* cycle thru all the matches */\n      snprintf(Completed, sizeof(Completed), \"%s\", \n\t       Matches[(numtabs - 2) % Num_matched]);\n\n    strncpy (pt, Completed, buffer + len - pt - spaces);\n  }\n  else\n    return 0;\n\n  return 1;\n}\n\nint mutt_var_value_complete (char *buffer, size_t len, int pos)\n{\n  char var[STRING], *pt = buffer;\n  int spaces;\n  \n  if (buffer[0] == 0)\n    return 0;\n\n  SKIPWS (buffer);\n  spaces = buffer - pt;\n\n  pt = buffer + pos - spaces;\n  while ((pt > buffer) && !isspace ((unsigned char) *pt))\n    pt--;\n  pt++; /* move past the space */\n  if (*pt == '=') /* abort if no var before the '=' */\n    return 0;\n\n  if (mutt_strncmp (buffer, \"set\", 3) == 0)\n  {\n    int idx;\n    char val[LONG_STRING];\n    const char *myvarval;\n\n    strfcpy (var, pt, sizeof (var));\n    /* ignore the trailing '=' when comparing */\n    var[mutt_strlen (var) - 1] = 0;\n    if ((idx = mutt_option_index (var)) == -1)\n    {\n      if ((myvarval = myvar_get(var)) != NULL)\n      {\n\tpretty_var (pt, len - (pt - buffer), var, myvarval);\n\treturn 1;\n      }\n      return 0; /* no such variable. */\n    }\n    else if (var_to_string (idx, val, sizeof (val)))\n    {\n      snprintf (pt, len - (pt - buffer), \"%s=\\\"%s\\\"\", var, val);\n      return 1;\n    }\n  }\n  return 0;\n}\n\n#if USE_NOTMUCH\n\n/* Fetch a list of all notmuch tags and insert them into the completion\n * machinery.\n */\nstatic int complete_all_nm_tags (const char *pt)\n{\n  int num;\n  int tag_count_1 = 0;\n  int tag_count_2 = 0;\n\n  Num_matched = 0;\n  strfcpy (User_typed, pt, sizeof (User_typed));\n  memset (Matches, 0, Matches_listsize);\n  memset (Completed, 0, sizeof (Completed));\n\n  nm_longrun_init(Context, FALSE);\n\n  /* Work out how many tags there are. */\n  if (nm_get_all_tags(Context, NULL, &tag_count_1) || tag_count_1 == 0)\n    goto done;\n\n  /* Free the old list, if any. */\n  if (nm_tags != NULL) {\n    int i;\n    for (i = 0; nm_tags[i] != NULL; i++)\n      FREE (&nm_tags[i]);\n    FREE (&nm_tags);\n  }\n  /* Allocate a new list, with sentinel. */\n  nm_tags = safe_malloc((tag_count_1 + 1) * sizeof (char *));\n  nm_tags[tag_count_1] = NULL;\n\n  /* Get all the tags. */\n  if (nm_get_all_tags(Context, nm_tags, &tag_count_2) ||\n      tag_count_1 != tag_count_2) {\n    FREE (&nm_tags);\n    nm_tags = NULL;\n    nm_longrun_done(Context);\n    return -1;\n  }\n\n  /* Put them into the completion machinery. */\n  for (num = 0; num < tag_count_1; num++) {\n    candidate (Completed, User_typed, nm_tags[num], sizeof (Completed));\n  }\n\n  matches_ensure_morespace (Num_matched);\n  Matches[Num_matched++] = User_typed;\n\ndone:\n  nm_longrun_done(Context);\n  return 0;\n}\n\n/* Return the last instance of needle in the haystack, or NULL.\n * Like strstr(), only backwards, and for a limited haystack length.\n */\nstatic const char* rstrnstr(const char* haystack,\n                            size_t haystack_length,\n                            const char* needle)\n{\n  int needle_length = strlen(needle);\n  const char* haystack_end = haystack + haystack_length - needle_length;\n  const char* p;\n\n  for (p = haystack_end; p >= haystack; --p)\n  {\n    size_t i;\n    for (i = 0; i < needle_length; ++i) {\n      if (p[i] != needle[i])\n        goto next;\n    }\n    return p;\n\n    next:;\n  }\n  return NULL;\n}\n\n/* Complete the nearest \"tag:\"-prefixed string previous to pos. */\nint mutt_nm_query_complete (char *buffer, size_t len, int pos, int numtabs)\n{\n  char *pt = buffer;\n  int spaces;\n\n  SKIPWS (buffer);\n  spaces = buffer - pt;\n\n  pt = (char *)rstrnstr((char *)buffer, pos, \"tag:\");\n  if (pt != NULL) {\n    pt += 4;\n    if (numtabs == 1) {\n      /* First TAB. Collect all the matches */\n      complete_all_nm_tags(pt);\n\n      /* All matches are stored. Longest non-ambiguous string is \"\"\n       * i.e. don't change 'buffer'. Fake successful return this time.\n       */\n      if (User_typed[0] == 0)\n\treturn 1;\n    }\n\n    if (Completed[0] == 0 && User_typed[0])\n      return 0;\n\n    /* Num_matched will _always_ be atleast 1 since the initial\n     * user-typed string is always stored */\n    if (numtabs == 1 && Num_matched == 2)\n      snprintf(Completed, sizeof(Completed),\"%s\", Matches[0]);\n    else if (numtabs > 1 && Num_matched > 2)\n      /* cycle thru all the matches */\n      snprintf(Completed, sizeof(Completed), \"%s\",\n\t       Matches[(numtabs - 2) % Num_matched]);\n\n    /* return the completed query */\n    strncpy (pt, Completed, buffer + len - pt - spaces);\n  }\n  else\n    return 0;\n\n  return 1;\n}\n\n/* Complete the nearest \"+\" or \"-\" -prefixed string previous to pos. */\nint mutt_nm_tag_complete (char *buffer, size_t len, int pos, int numtabs)\n{\n  char *pt = buffer;\n  int spaces;\n  const char *first_plus = NULL;\n  const char *first_minus = NULL;\n\n  SKIPWS (buffer);\n  spaces = buffer - pt;\n\n  first_plus = rstrnstr((char *)buffer, pos, \"+\");\n  first_minus = rstrnstr((char *)buffer, pos, \"-\");\n  pt = (char *)MAX(first_plus, first_minus);\n\n  if (pt != NULL) {\n    pt++;\n\n    if (numtabs == 1)\n    {\n      /* First TAB. Collect all the matches */\n      complete_all_nm_tags(pt);\n\n      /* All matches are stored. Longest non-ambiguous string is \"\"\n       * i.e. don't change 'buffer'. Fake successful return this time.\n       */\n      if (User_typed[0] == 0)\n\treturn 1;\n    }\n\n    if (Completed[0] == 0 && User_typed[0])\n      return 0;\n\n    /* Num_matched will _always_ be atleast 1 since the initial\n     * user-typed string is always stored */\n    if (numtabs == 1 && Num_matched == 2)\n      snprintf(Completed, sizeof(Completed),\"%s\", Matches[0]);\n    else if (numtabs > 1 && Num_matched > 2)\n      /* cycle thru all the matches */\n      snprintf(Completed, sizeof(Completed), \"%s\",\n\t       Matches[(numtabs - 2) % Num_matched]);\n\n    /* return the completed query */\n    strncpy (pt, Completed, buffer + len - pt - spaces);\n  }\n  else\n    return 0;\n\n  return 1;\n}\n#endif\n\nstatic int var_to_string (int idx, char* val, size_t len)\n{\n  char tmp[LONG_STRING];\n  static const char * const vals[] = { \"no\", \"yes\", \"ask-no\", \"ask-yes\" };\n\n  tmp[0] = '\\0';\n\n  if ((DTYPE(MuttVars[idx].type) == DT_STR) ||\n      (DTYPE(MuttVars[idx].type) == DT_PATH) ||\n      (DTYPE(MuttVars[idx].type) == DT_RX))\n  {\n    strfcpy (tmp, NONULL (*((char **) MuttVars[idx].data)), sizeof (tmp));\n    if (DTYPE (MuttVars[idx].type) == DT_PATH)\n      mutt_pretty_mailbox (tmp, sizeof (tmp));\n  }\n  else if (DTYPE (MuttVars[idx].type) == DT_ADDR)\n  {\n    rfc822_write_address (tmp, sizeof (tmp), *((ADDRESS **) MuttVars[idx].data), 0);\n  }\n  else if (DTYPE (MuttVars[idx].type) == DT_QUAD)\n    strfcpy (tmp, vals[quadoption (MuttVars[idx].data)], sizeof (tmp));\n  else if (DTYPE (MuttVars[idx].type) == DT_NUM)\n  {\n    short sval = *((short *) MuttVars[idx].data);\n\n    /* avert your eyes, gentle reader */\n    if (mutt_strcmp (MuttVars[idx].option, \"wrapmargin\") == 0)\n      sval = sval > 0 ? 0 : -sval;\n\n    snprintf (tmp, sizeof (tmp), \"%d\", sval);\n  }\n  else if (DTYPE (MuttVars[idx].type) == DT_SORT)\n  {\n    const struct mapping_t *map;\n    const char *p;\n\n    switch (MuttVars[idx].type & DT_SUBTYPE_MASK)\n    {\n      case DT_SORT_ALIAS:\n        map = SortAliasMethods;\n        break;\n      case DT_SORT_BROWSER:\n        map = SortBrowserMethods;\n        break;\n      case DT_SORT_KEYS:\n        if ((WithCrypto & APPLICATION_PGP))\n          map = SortKeyMethods;\n        else\n          map = SortMethods;\n        break;\n      default:\n        map = SortMethods;\n        break;\n    }\n    p = mutt_getnamebyvalue (*((short *) MuttVars[idx].data) & SORT_MASK, map);\n    snprintf (tmp, sizeof (tmp), \"%s%s%s\",\n              (*((short *) MuttVars[idx].data) & SORT_REVERSE) ? \"reverse-\" : \"\",\n              (*((short *) MuttVars[idx].data) & SORT_LAST) ? \"last-\" : \"\",\n              p);\n  }\n  else if (DTYPE (MuttVars[idx].type) == DT_MAGIC)\n  {\n    char *p;\n\n    switch (DefaultMagic)\n    {\n      case M_MBOX:\n        p = \"mbox\";\n        break;\n      case M_MMDF:\n        p = \"MMDF\";\n        break;\n      case M_MH:\n        p = \"MH\";\n        break;\n      case M_MAILDIR:\n        p = \"Maildir\";\n        break;\n      default:\n        p = \"unknown\";\n    }\n    strfcpy (tmp, p, sizeof (tmp));\n  }\n  else if (DTYPE (MuttVars[idx].type) == DT_BOOL)\n    strfcpy (tmp, option (MuttVars[idx].data) ? \"yes\" : \"no\", sizeof (tmp));\n  else\n    return 0;\n\n  escape_string (val, len - 1, tmp);\n\n  return 1;\n}\n\n/* Implement the -Q command line flag */\nint mutt_query_variables (LIST *queries)\n{\n  LIST *p;\n  \n  char command[STRING];\n  \n  BUFFER err, token;\n\n  mutt_buffer_init (&err);\n  mutt_buffer_init (&token);\n\n  err.dsize = STRING;\n  err.data = safe_malloc (err.dsize);\n  \n  for (p = queries; p; p = p->next)\n  {\n    snprintf (command, sizeof (command), \"set ?%s\\n\", p->data);\n    if (mutt_parse_rc_line (command, &token, &err) == -1)\n    {\n      fprintf (stderr, \"%s\\n\", err.data);\n      FREE (&token.data);\n      FREE (&err.data);\n\n      return 1;\n    }\n    printf (\"%s\\n\", err.data);\n  }\n  \n  FREE (&token.data);\n  FREE (&err.data);\n\n  return 0;\n}\n\n/* dump out the value of all the variables we have */\nint mutt_dump_variables (void)\n{\n  int i;\n  \n  char command[STRING];\n  \n  BUFFER err, token;\n\n  mutt_buffer_init (&err);\n  mutt_buffer_init (&token);\n\n  err.dsize = STRING;\n  err.data = safe_malloc (err.dsize);\n  \n  for (i = 0; MuttVars[i].option; i++)\n  {\n    if (MuttVars[i].type == DT_SYN)\n      continue;\n\n    snprintf (command, sizeof (command), \"set ?%s\\n\", MuttVars[i].option);\n    if (mutt_parse_rc_line (command, &token, &err) == -1)\n    {\n      fprintf (stderr, \"%s\\n\", err.data);\n      FREE (&token.data);\n      FREE (&err.data);\n\n      return 1;\n    }\n    printf(\"%s\\n\", err.data);\n  }\n  \n  FREE (&token.data);\n  FREE (&err.data);\n\n  return 0;\n}\n\nconst char *mutt_getnamebyvalue (int val, const struct mapping_t *map)\n{\n  int i;\n\n  for (i=0; map[i].name; i++)\n    if (map[i].value == val)\n      return (map[i].name);\n  return NULL;\n}\n\nint mutt_getvaluebyname (const char *name, const struct mapping_t *map)\n{\n  int i;\n\n  for (i = 0; map[i].name; i++)\n    if (ascii_strcasecmp (map[i].name, name) == 0)\n      return (map[i].value);\n  return (-1);\n}\n\n#ifdef DEBUG\nstatic void start_debug (void)\n{\n  int i;\n  char buf[_POSIX_PATH_MAX];\n  char buf2[_POSIX_PATH_MAX];\n\n  /* rotate the old debug logs */\n  for (i=3; i>=0; i--)\n  {\n    snprintf (buf, sizeof(buf), \"%s/.muttdebug%d\", NONULL(Homedir), i);\n    snprintf (buf2, sizeof(buf2), \"%s/.muttdebug%d\", NONULL(Homedir), i+1);\n    rename (buf, buf2);\n  }\n  if ((debugfile = safe_fopen(buf, \"w\")) != NULL)\n  {\n    setbuf (debugfile, NULL); /* don't buffer the debugging output! */\n    dprint(1,(debugfile,\"Mutt/%s (%s) debugging at level %d\\n\",\n\t      MUTT_VERSION, ReleaseDate, debuglevel));\n  }\n}\n#endif\n\nstatic int mutt_execute_commands (LIST *p)\n{\n  BUFFER err, token;\n\n  mutt_buffer_init (&err);\n  err.dsize = STRING;\n  err.data = safe_malloc (err.dsize);\n  mutt_buffer_init (&token);\n  for (; p; p = p->next)\n  {\n    if (mutt_parse_rc_line (p->data, &token, &err) != 0)\n    {\n      fprintf (stderr, _(\"Error in command line: %s\\n\"), err.data);\n      FREE (&token.data);\n      FREE (&err.data);\n\n      return -1;\n    }\n  }\n  FREE (&token.data);\n  FREE (&err.data);\n\n  return 0;\n}\n\nvoid mutt_init (int skip_sys_rc, LIST *commands)\n{\n  struct passwd *pw;\n  struct utsname utsname;\n  char *p, buffer[STRING];\n  char *domain = NULL;\n  int i, default_rc = 0, need_pause = 0;\n  BUFFER err;\n\n  mutt_buffer_init (&err);\n  err.dsize = STRING;\n  err.data = safe_malloc(err.dsize);\n  err.dptr = err.data;\n\n  Groups = hash_create (1031, 0);\n  ReverseAlias = hash_create (1031, 1);\n#ifdef USE_NOTMUCH\n  TagTransforms = hash_create (64, 1);\n  TagFormats = hash_create (64, 0);\n#endif\n\n  mutt_menu_init ();\n\n  snprintf (AttachmentMarker, sizeof (AttachmentMarker),\n\t    \"\\033]9;%\" PRIu64 \"\\a\", mutt_rand64());\n  \n  /* on one of the systems I use, getcwd() does not return the same prefix\n     as is listed in the passwd file */\n  if ((p = getenv (\"HOME\")))\n    Homedir = safe_strdup (p);\n\n  /* Get some information about the user */\n  if ((pw = getpwuid (getuid ())))\n  {\n    char rnbuf[STRING];\n\n    Username = safe_strdup (pw->pw_name);\n    if (!Homedir)\n      Homedir = safe_strdup (pw->pw_dir);\n\n    Realname = safe_strdup (mutt_gecos_name (rnbuf, sizeof (rnbuf), pw));\n    Shell = safe_strdup (pw->pw_shell);\n    endpwent ();\n  }\n  else \n  {\n    if (!Homedir)\n    {\n      mutt_endwin (NULL);\n      fputs (_(\"unable to determine home directory\"), stderr);\n      exit (1);\n    }\n    if ((p = getenv (\"USER\")))\n      Username = safe_strdup (p);\n    else\n    {\n      mutt_endwin (NULL);\n      fputs (_(\"unable to determine username\"), stderr);\n      exit (1);\n    }\n    Shell = safe_strdup ((p = getenv (\"SHELL\")) ? p : \"/bin/sh\");\n  }\n\n#ifdef DEBUG\n  /* Start up debugging mode if requested */\n  if (debuglevel > 0)\n    start_debug ();\n#endif\n\n  /* And about the host... */\n\n#ifdef DOMAIN\n  domain = safe_strdup (DOMAIN);\n#endif /* DOMAIN */\n\n  /*\n   * The call to uname() shouldn't fail, but if it does, the system is horribly\n   * broken, and the system's networking configuration is in an unreliable\n   * state.  We should bail.\n   */\n  if ((uname (&utsname)) == -1)\n  {\n    mutt_endwin (NULL);\n    perror (_(\"unable to determine nodename via uname()\"));\n    exit (1);\n  }\n\n  /* some systems report the FQDN instead of just the hostname */\n  if ((p = strchr (utsname.nodename, '.')))\n    Hostname = mutt_substrdup (utsname.nodename, p);\n  else\n    Hostname = safe_strdup (utsname.nodename);\n\n  /* now get FQDN.  Use configured domain first, DNS next, then uname */\n  if (domain)\n  {\n    /* we have a compile-time domain name, use that for Fqdn */\n    Fqdn = safe_malloc (mutt_strlen (domain) + mutt_strlen (Hostname) + 2);\n    sprintf (Fqdn, \"%s.%s\", NONULL(Hostname), domain);\t/* __SPRINTF_CHECKED__ */\n  }\n  else if (!(getdnsdomainname (buffer, sizeof buffer)))\n  {\n    Fqdn = safe_malloc (mutt_strlen (buffer) + mutt_strlen (Hostname) + 2);\n    sprintf (Fqdn, \"%s.%s\", NONULL(Hostname), buffer);\t/* __SPRINTF_CHECKED__ */\n  }\n  else\n    /*\n     * DNS failed, use the nodename.  Whether or not the nodename had a '.' in\n     * it, we can use the nodename as the FQDN.  On hosts where DNS is not\n     * being used, e.g. small network that relies on hosts files, a short host\n     * name is all that is required for SMTP to work correctly.  It could be\n     * wrong, but we've done the best we can, at this point the onus is on the\n     * user to provide the correct hostname if the nodename won't work in their\n     * network.\n     */\n    Fqdn = safe_strdup(utsname.nodename);\n\n\n  if ((p = getenv (\"MAIL\")))\n    Spoolfile = safe_strdup (p);\n  else if ((p = getenv (\"MAILDIR\")))\n    Spoolfile = safe_strdup (p);\n  else\n  {\n#ifdef HOMESPOOL\n    mutt_concat_path (buffer, NONULL (Homedir), MAILPATH, sizeof (buffer));\n#else\n    mutt_concat_path (buffer, MAILPATH, NONULL(Username), sizeof (buffer));\n#endif\n    Spoolfile = safe_strdup (buffer);\n  }\n\n  if ((p = getenv (\"MAILCAPS\")))\n    MailcapPath = safe_strdup (p);\n  else\n  {\n    /* Default search path from RFC1524 */\n    MailcapPath = safe_strdup (\"~/.mailcap:\" PKGDATADIR \"/mailcap:\" SYSCONFDIR \"/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap\");\n  }\n\n  Tempdir = safe_strdup ((p = getenv (\"TMPDIR\")) ? p : \"/tmp\");\n\n  p = getenv (\"VISUAL\");\n  if (!p)\n  {\n    p = getenv (\"EDITOR\");\n    if (!p)\n      p = \"vi\";\n  }\n  Editor = safe_strdup (p);\n  Visual = safe_strdup (p);\n\n  if ((p = getenv (\"REPLYTO\")) != NULL)\n  {\n    BUFFER buf, token;\n\n    snprintf (buffer, sizeof (buffer), \"Reply-To: %s\", p);\n\n    mutt_buffer_init (&buf);\n    buf.data = buf.dptr = buffer;\n    buf.dsize = mutt_strlen (buffer);\n\n    mutt_buffer_init (&token);\n    parse_my_hdr (&token, &buf, 0, &err);\n    FREE (&token.data);\n  }\n\n  if ((p = getenv (\"EMAIL\")) != NULL)\n    From = rfc822_parse_adrlist (NULL, p);\n  \n  mutt_set_langinfo_charset ();\n  mutt_set_charset (Charset);\n  \n  Matches = safe_calloc (Matches_listsize, sizeof (char *));\n  \n  /* Set standard defaults */\n  for (i = 0; MuttVars[i].option; i++)\n  {\n    mutt_set_default (&MuttVars[i]);\n    mutt_restore_default (&MuttVars[i]);\n  }\n\n  CurrentMenu = MENU_MAIN;\n\n\n#ifndef LOCALES_HACK\n  /* Do we have a locale definition? */\n  if (((p = getenv (\"LC_ALL\")) != NULL && p[0]) ||\n      ((p = getenv (\"LANG\")) != NULL && p[0]) ||\n      ((p = getenv (\"LC_CTYPE\")) != NULL && p[0]))\n    set_option (OPTLOCALES);\n#endif\n\n#ifdef HAVE_GETSID\n  /* Unset suspend by default if we're the session leader */\n  if (getsid(0) == getpid())\n    unset_option (OPTSUSPEND);\n#endif\n\n  mutt_init_history ();\n\n  /* RFC2368, \"4. Unsafe headers\"\n   * The creator of a mailto URL cannot expect the resolver of a URL to\n   * understand more than the \"subject\" and \"body\" headers. Clients that\n   * resolve mailto URLs into mail messages should be able to correctly\n   * create RFC 822-compliant mail messages using the \"subject\" and \"body\"\n   * headers.\n   */\n  add_to_list(&MailtoAllow, \"body\");\n  add_to_list(&MailtoAllow, \"subject\");\n  \n  \n  \n  /*\n   * \n   *\t\t\t   BIG FAT WARNING\n   * \n   * When changing the code which looks for a configuration file,\n   * please also change the corresponding code in muttbug.sh.in.\n   * \n   * \n   */\n  \n  \n  \n  \n  if (!Muttrc)\n  {\n    snprintf (buffer, sizeof(buffer), \"%s/.muttrc-%s\", NONULL(Homedir), MUTT_VERSION);\n    if (access(buffer, F_OK) == -1)\n      snprintf (buffer, sizeof(buffer), \"%s/.muttrc\", NONULL(Homedir));\n    if (access(buffer, F_OK) == -1)\n      snprintf (buffer, sizeof (buffer), \"%s/.mutt/muttrc-%s\", NONULL(Homedir), MUTT_VERSION);\n    if (access(buffer, F_OK) == -1)\n      snprintf (buffer, sizeof (buffer), \"%s/.mutt/muttrc\", NONULL(Homedir));\n    if (access(buffer, F_OK) == -1) /* default to .muttrc for alias_file */\n      snprintf (buffer, sizeof(buffer), \"%s/.muttrc\", NONULL(Homedir));\n\n    default_rc = 1;\n    Muttrc = safe_strdup (buffer);\n  }\n  else\n  {\n    strfcpy (buffer, Muttrc, sizeof (buffer));\n    FREE (&Muttrc);\n    mutt_expand_path (buffer, sizeof (buffer));\n    Muttrc = safe_strdup (buffer);\n  }\n  FREE (&AliasFile);\n  AliasFile = safe_strdup (NONULL(Muttrc));\n\n  /* Process the global rc file if it exists and the user hasn't explicity\n     requested not to via \"-n\".  */\n  if (!skip_sys_rc)\n  {\n    snprintf (buffer, sizeof(buffer), \"%s/Muttrc-%s\", SYSCONFDIR, MUTT_VERSION);\n    if (access (buffer, F_OK) == -1)\n      snprintf (buffer, sizeof(buffer), \"%s/Muttrc\", SYSCONFDIR);\n    if (access (buffer, F_OK) == -1)\n      snprintf (buffer, sizeof (buffer), \"%s/Muttrc-%s\", PKGDATADIR, MUTT_VERSION);\n    if (access (buffer, F_OK) == -1)\n      snprintf (buffer, sizeof (buffer), \"%s/Muttrc\", PKGDATADIR);\n    if (access (buffer, F_OK) != -1)\n    {\n      if (source_rc (buffer, &err) != 0)\n      {\n\tfputs (err.data, stderr);\n\tfputc ('\\n', stderr);\n\tneed_pause = 1;\n      }\n    }\n  }\n\n  /* Read the user's initialization file.  */\n  if (access (Muttrc, F_OK) != -1)\n  {\n    if (!option (OPTNOCURSES))\n      endwin ();\n    if (source_rc (Muttrc, &err) != 0)\n    {\n      fputs (err.data, stderr);\n      fputc ('\\n', stderr);\n      need_pause = 1;\n    }\n  }\n  else if (!default_rc)\n  {\n    /* file specified by -F does not exist */\n    snprintf (buffer, sizeof (buffer), \"%s: %s\", Muttrc, strerror (errno));\n    mutt_endwin (buffer);\n    exit (1);\n  }\n\n  if (mutt_execute_commands (commands) != 0)\n    need_pause = 1;\n\n  if (need_pause && !option (OPTNOCURSES))\n  {\n    if (mutt_any_key_to_continue (NULL) == -1)\n      mutt_exit(1);\n  }\n\n  mutt_read_histfile ();\n\n#ifdef USE_NOTMUCH\n  if (option (OPTVIRTSPOOLFILE) && VirtIncoming)\n    mutt_str_replace(&Spoolfile, VirtIncoming->path);\n#endif\n\n#if 0\n  set_option (OPTWEED); /* turn weeding on by default */\n#endif\n\n  FREE (&err.data);\n}\n\nint mutt_get_hook_type (const char *name)\n{\n  const struct command_t *c;\n\n  for (c = Commands ; c->name ; c++)\n    if (c->func == mutt_parse_hook && ascii_strcasecmp (c->name, name) == 0)\n      return c->data;\n  return 0;\n}\n\nstatic int parse_group_context (group_context_t **ctx, BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  while (!mutt_strcasecmp (buf->data, \"-group\"))\n  {\n    if (!MoreArgs (s)) \n    {\n      strfcpy (err->data, _(\"-group: no group name\"), err->dsize);\n      goto bail;\n    }\n    \n    mutt_extract_token (buf, s, 0);\n\n    mutt_group_context_add (ctx, mutt_pattern_group (buf->data));\n    \n    if (!MoreArgs (s))\n    {\n      strfcpy (err->data, _(\"out of arguments\"), err->dsize);\n      goto bail;\n    }\n    \n    mutt_extract_token (buf, s, 0);\n  }\n  \n  return 0;\n  \n  bail:\n  mutt_group_context_destroy (ctx);\n  return -1;\n}\n\n#ifdef USE_NOTMUCH\nint parse_tag_transforms (BUFFER *b, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  char *tmp;\n\n  while (MoreArgs (s))\n  {\n    char *tag, *transform;\n\n    mutt_extract_token (b, s, 0);\n    if (b->data && *b->data)\n      tag = safe_strdup (b->data);\n    else\n      continue;\n\n    mutt_extract_token (b, s, 0);\n    transform = safe_strdup (b->data);\n\n    /* avoid duplicates */\n    tmp = hash_find(TagTransforms, tag);\n    if (tmp) {\n      dprint(3,(debugfile,\"tag transform '%s' already registered as '%s'\\n\", tag, tmp));\n      FREE(&tag);\n      FREE(&transform);\n      continue;\n    }\n\n    hash_insert(TagTransforms, tag, transform, 0);\n  }\n  return 0;\n}\n\nint parse_tag_formats (BUFFER *b, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  char *tmp;\n\n  while (MoreArgs (s))\n  {\n    char *tag, *format;\n\n    mutt_extract_token (b, s, 0);\n    if (b->data && *b->data)\n      tag = safe_strdup (b->data);\n    else\n      continue;\n\n    mutt_extract_token (b, s, 0);\n    format = safe_strdup (b->data);\n\n    /* avoid duplicates */\n    tmp = hash_find(TagFormats, format);\n    if (tmp) {\n      dprint(3,(debugfile,\"tag format '%s' already registered as '%s'\\n\", format, tmp));\n      FREE(&tag);\n      FREE(&format);\n      continue;\n    }\n\n    hash_insert(TagFormats, format, tag, 0);\n  }\n  return 0;\n}\n#endif\n\nstatic void myvar_set (const char* var, const char* val)\n{\n  myvar_t** cur;\n\n  for (cur = &MyVars; *cur; cur = &((*cur)->next))\n    if (!mutt_strcmp ((*cur)->name, var))\n      break;\n\n  if (!*cur)\n    *cur = safe_calloc (1, sizeof (myvar_t));\n  \n  if (!(*cur)->name)\n    (*cur)->name = safe_strdup (var);\n  \n  mutt_str_replace (&(*cur)->value, val);\n}\n\nstatic void myvar_del (const char* var)\n{\n  myvar_t **cur;\n  myvar_t *tmp;\n  \n\n  for (cur = &MyVars; *cur; cur = &((*cur)->next))\n    if (!mutt_strcmp ((*cur)->name, var))\n      break;\n  \n  if (*cur) \n  {\n    tmp = (*cur)->next;\n    FREE (&(*cur)->name);\n    FREE (&(*cur)->value);\n    FREE (cur);\t\t/* __FREE_CHECKED__ */\n    *cur = tmp;\n  }\n}\n\nstatic const char* myvar_get (const char* var)\n{\n  myvar_t* cur;\n\n  for (cur = MyVars; cur; cur = cur->next)\n    if (!mutt_strcmp (cur->name, var))\n      return NONULL(cur->value);\n\n  return NULL;\n}\n"
  },
  {
    "path": "init.h",
    "content": "/*\n * Copyright (C) 1996-2002,2007,2010,2012-2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifdef _MAKEDOC\n# include \"config.h\"\n# include \"doc/makedoc-defs.h\"\n#else\n# include \"sort.h\"\n#endif\n\n#include \"buffy.h\"\n\n#ifndef _MAKEDOC\n#define DT_MASK\t\t0x0f\n#define DT_BOOL\t\t1 /* boolean option */\n#define DT_NUM\t\t2 /* a number */\n#define DT_STR\t\t3 /* a string */\n#define DT_PATH\t\t4 /* a pathname */\n#define DT_QUAD\t\t5 /* quad-option (yes/no/ask-yes/ask-no) */\n#define DT_SORT\t\t6 /* sorting methods */\n#define DT_RX\t\t7 /* regular expressions */\n#define DT_MAGIC\t8 /* mailbox type */\n#define DT_SYN\t\t9 /* synonym for another variable */\n#define DT_ADDR\t       10 /* e-mail address */\n\n#define DTYPE(x) ((x) & DT_MASK)\n\n/* subtypes */\n#define DT_SUBTYPE_MASK\t0xff0\n#define DT_SORT_ALIAS\t0x10\n#define DT_SORT_BROWSER 0x20\n#define DT_SORT_KEYS\t0x40\n#define DT_SORT_AUX\t0x80\n#define DT_SORT_SIDEBAR\t0x100\n\n/* flags to parse_set() */\n#define M_SET_INV\t(1<<0)\t/* default is to invert all vars */\n#define M_SET_UNSET\t(1<<1)\t/* default is to unset all vars */\n#define M_SET_RESET\t(1<<2)\t/* default is to reset all vars to default */\n\n/* forced redraw/resort types */\n#define R_NONE\t\t0\n#define R_INDEX\t\t(1<<0)\n#define R_PAGER\t\t(1<<1)\n#define R_RESORT\t(1<<2)\t/* resort the mailbox */\n#define R_RESORT_SUB\t(1<<3)\t/* resort subthreads */\n#define R_RESORT_INIT\t(1<<4)  /* resort from scratch */\n#define R_TREE\t\t(1<<5)  /* redraw the thread tree */\n#define R_BOTH\t\t(R_INDEX | R_PAGER)\n#define R_RESORT_BOTH\t(R_RESORT | R_RESORT_SUB)\n\nstruct option_t\n{\n  char *option;\n  short type;\n  short flags;\n  unsigned long data;\n  unsigned long init; /* initial value */\n};\n\n#define UL (unsigned long)\n\n#endif /* _MAKEDOC */\n\n#ifndef ISPELL\n#define ISPELL \"ispell\"\n#endif\n\nstruct option_t MuttVars[] = {\n  /*++*/\n  { \"abort_nosubject\",\tDT_QUAD, R_NONE, OPT_SUBJECT, M_ASKYES },\n  /*\n  ** .pp\n  ** If set to \\fIyes\\fP, when composing messages and no subject is given\n  ** at the subject prompt, composition will be aborted.  If set to\n  ** \\fIno\\fP, composing messages with no subject given at the subject\n  ** prompt will never be aborted.\n  */\n  { \"abort_unmodified\",\tDT_QUAD, R_NONE, OPT_ABORT, M_YES },\n  /*\n  ** .pp\n  ** If set to \\fIyes\\fP, composition will automatically abort after\n  ** editing the message body if no changes are made to the file (this\n  ** check only happens after the \\fIfirst\\fP edit of the file).  When set\n  ** to \\fIno\\fP, composition will never be aborted.\n  */\n  { \"alias_file\",\tDT_PATH, R_NONE, UL &AliasFile, UL \"~/.muttrc\" },\n  /*\n  ** .pp\n  ** The default file in which to save aliases created by the\n  ** \\fC$<create-alias>\\fP function. Entries added to this file are\n  ** encoded in the character set specified by $$config_charset if it\n  ** is \\fIset\\fP or the current character set otherwise.\n  ** .pp\n  ** \\fBNote:\\fP Mutt will not automatically source this file; you must\n  ** explicitly use the ``$source'' command for it to be executed in case\n  ** this option points to a dedicated alias file.\n  ** .pp\n  ** The default for this option is the currently used muttrc file, or\n  ** ``~/.muttrc'' if no user muttrc was found.\n  */\n  { \"alias_format\",\tDT_STR,  R_NONE, UL &AliasFmt, UL \"%4n %2f %t %-10a   %r\" },\n  /*\n  ** .pp\n  ** Specifies the format of the data displayed for the ``$alias'' menu.  The\n  ** following \\fCprintf(3)\\fP-style sequences are available:\n  ** .dl\n  ** .dt %a .dd alias name\n  ** .dt %f .dd flags - currently, a ``d'' for an alias marked for deletion\n  ** .dt %n .dd index number\n  ** .dt %r .dd address which alias expands to\n  ** .dt %t .dd character which indicates if the alias is tagged for inclusion\n  ** .de\n  */\n  { \"allow_8bit\",\tDT_BOOL, R_NONE, OPTALLOW8BIT, 1 },\n  /*\n  ** .pp\n  ** Controls whether 8-bit data is converted to 7-bit using either Quoted-\n  ** Printable or Base64 encoding when sending mail.\n  */\n  { \"allow_ansi\",      DT_BOOL, R_NONE, OPTALLOWANSI, 0 },\n  /*\n  ** .pp\n  ** Controls whether ANSI color codes in messages (and color tags in\n  ** rich text messages) are to be interpreted.\n  ** Messages containing these codes are rare, but if this option is \\fIset\\fP,\n  ** their text will be colored accordingly. Note that this may override\n  ** your color choices, and even present a security problem, since a\n  ** message could include a line like\n  ** .ts\n  ** [-- PGP output follows ...\n  ** .te\n  ** .pp\n  ** and give it the same color as your attachment color (see also\n  ** $$crypt_timestamp).\n  */\n  { \"arrow_cursor\",\tDT_BOOL, R_BOTH, OPTARROWCURSOR, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, an arrow (``->'') will be used to indicate the current entry\n  ** in menus instead of highlighting the whole line.  On slow network or modem\n  ** links this will make response faster because there is less that has to\n  ** be redrawn on the screen when moving to the next or previous entries\n  ** in the menu.\n  */\n  { \"ascii_chars\",\tDT_BOOL, R_BOTH, OPTASCIICHARS, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, Mutt will use plain ASCII characters when displaying thread\n  ** and attachment trees, instead of the default \\fIACS\\fP characters.\n  */\n  { \"askbcc\",\t\tDT_BOOL, R_NONE, OPTASKBCC, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, Mutt will prompt you for blind-carbon-copy (Bcc) recipients\n  ** before editing an outgoing message.\n  */\n  { \"askcc\",\t\tDT_BOOL, R_NONE, OPTASKCC, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, Mutt will prompt you for carbon-copy (Cc) recipients before\n  ** editing the body of an outgoing message.\n  */\n  { \"assumed_charset\", DT_STR, R_NONE, UL &AssumedCharset, UL 0},\n  /*\n  ** .pp\n  ** This variable is a colon-separated list of character encoding\n  ** schemes for messages without character encoding indication.\n  ** Header field values and message body content without character encoding\n  ** indication would be assumed that they are written in one of this list.\n  ** By default, all the header fields and message body without any charset\n  ** indication are assumed to be in ``us-ascii''.\n  ** .pp\n  ** For example, Japanese users might prefer this:\n  ** .ts\n  ** set assumed_charset=\"iso-2022-jp:euc-jp:shift_jis:utf-8\"\n  ** .te\n  ** .pp\n  ** However, only the first content is valid for the message body.\n  */\n  { \"attach_charset\",    DT_STR,  R_NONE, UL &AttachCharset, UL 0 },\n  /*\n  ** .pp\n  ** This variable is a colon-separated list of character encoding\n  ** schemes for text file attachments. Mutt uses this setting to guess\n  ** which encoding files being attached are encoded in to convert them to\n  ** a proper character set given in $$send_charset.\n  ** .pp\n  ** If \\fIunset\\fP, the value of $$charset will be used instead.\n  ** For example, the following configuration would work for Japanese\n  ** text handling:\n  ** .ts\n  ** set attach_charset=\"iso-2022-jp:euc-jp:shift_jis:utf-8\"\n  ** .te\n  ** .pp\n  ** Note: for Japanese users, ``iso-2022-*'' must be put at the head\n  ** of the value as shown above if included.\n  */\n  { \"attach_format\",\tDT_STR,  R_NONE, UL &AttachFormat, UL \"%u%D%I %t%4n %T%.40d%> [%.7m/%.10M, %.6e%?C?, %C?, %s] \" },\n  /*\n  ** .pp\n  ** This variable describes the format of the ``attachment'' menu.  The\n  ** following \\fCprintf(3)\\fP-style sequences are understood:\n  ** .dl\n  ** .dt %C  .dd charset\n  ** .dt %c  .dd requires charset conversion (``n'' or ``c'')\n  ** .dt %D  .dd deleted flag\n  ** .dt %d  .dd description\n  ** .dt %e  .dd MIME content-transfer-encoding\n  ** .dt %f  .dd filename\n  ** .dt %I  .dd disposition (``I'' for inline, ``A'' for attachment)\n  ** .dt %m  .dd major MIME type\n  ** .dt %M  .dd MIME subtype\n  ** .dt %n  .dd attachment number\n  ** .dt %Q  .dd ``Q'', if MIME part qualifies for attachment counting\n  ** .dt %s  .dd size\n  ** .dt %t  .dd tagged flag\n  ** .dt %T  .dd graphic tree characters\n  ** .dt %u  .dd unlink (=to delete) flag\n  ** .dt %X  .dd number of qualifying MIME parts in this part and its children\n  **             (please see the ``$attachments'' section for possible speed effects)\n  ** .dt %>X .dd right justify the rest of the string and pad with character ``X''\n  ** .dt %|X .dd pad to the end of the line with character ``X''\n  ** .dt %*X .dd soft-fill with character ``X'' as pad\n  ** .de\n  ** .pp\n  ** For an explanation of ``soft-fill'', see the $$index_format documentation.\n  */\n  { \"attach_sep\",\tDT_STR,\t R_NONE, UL &AttachSep, UL \"\\n\" },\n  /*\n  ** .pp\n  ** The separator to add between attachments when operating (saving,\n  ** printing, piping, etc) on a list of tagged attachments.\n  */\n  { \"attach_split\",\tDT_BOOL, R_NONE, OPTATTACHSPLIT, 1 },\n  /*\n  ** .pp\n  ** If this variable is \\fIunset\\fP, when operating (saving, printing, piping,\n  ** etc) on a list of tagged attachments, Mutt will concatenate the\n  ** attachments and will operate on them as a single attachment. The\n  ** $$attach_sep separator is added after each attachment. When \\fIset\\fP,\n  ** Mutt will operate on the attachments one by one.\n  */\n  { \"attribution\",\tDT_STR,\t R_NONE, UL &Attribution, UL \"On %d, %n wrote:\" },\n  /*\n  ** .pp\n  ** This is the string that will precede a message which has been included\n  ** in a reply.  For a full listing of defined \\fCprintf(3)\\fP-like sequences see\n  ** the section on $$index_format.\n  */\n  { \"auto_tag\",\t\tDT_BOOL, R_NONE, OPTAUTOTAG, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, functions in the \\fIindex\\fP menu which affect a message\n  ** will be applied to all tagged messages (if there are any).  When\n  ** unset, you must first use the \\fC<tag-prefix>\\fP function (bound to ``;''\n  ** by default) to make the next function apply to all tagged messages.\n  */\n  { \"autoedit\",\t\tDT_BOOL, R_NONE, OPTAUTOEDIT, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP along with $$edit_headers, Mutt will skip the initial\n  ** send-menu (prompting for subject and recipients) and allow you to\n  ** immediately begin editing the body of your\n  ** message.  The send-menu may still be accessed once you have finished\n  ** editing the body of your message.\n  ** .pp\n  ** .pp\n  ** \\fBNote:\\fP when this option is \\fIset\\fP, you cannot use send-hooks that depend\n  ** on the recipients when composing a new (non-reply) message, as the initial\n  ** list of recipients is empty.\n  ** .pp\n  ** Also see $$fast_reply.\n  */\n  { \"beep\",\t\tDT_BOOL, R_NONE, OPTBEEP, 1 },\n  /*\n  ** .pp\n  ** When this variable is \\fIset\\fP, mutt will beep when an error occurs.\n  */\n  { \"beep_new\",\t\tDT_BOOL, R_NONE, OPTBEEPNEW, 0 },\n  /*\n  ** .pp\n  ** When this variable is \\fIset\\fP, mutt will beep whenever it prints a message\n  ** notifying you of new mail.  This is independent of the setting of the\n  ** $$beep variable.\n  */\n  { \"bounce\",\tDT_QUAD, R_NONE, OPT_BOUNCE, M_ASKYES },\n  /*\n  ** .pp\n  ** Controls whether you will be asked to confirm bouncing messages.\n  ** If set to \\fIyes\\fP you don't get asked if you want to bounce a\n  ** message. Setting this variable to \\fIno\\fP is not generally useful,\n  ** and thus not recommended, because you are unable to bounce messages.\n  */\n  { \"bounce_delivered\", DT_BOOL, R_NONE, OPTBOUNCEDELIVERED, 1 },\n  /*\n  ** .pp\n  ** When this variable is \\fIset\\fP, mutt will include Delivered-To headers when\n  ** bouncing messages.  Postfix users may wish to \\fIunset\\fP this variable.\n  */\n  { \"braille_friendly\", DT_BOOL, R_NONE, OPTBRAILLEFRIENDLY, 0 },\n  /*\n  ** .pp\n  ** When this variable is \\fIset\\fP, mutt will place the cursor at the beginning\n  ** of the current line in menus, even when the $$arrow_cursor variable\n  ** is \\fIunset\\fP, making it easier for blind persons using Braille displays to\n  ** follow these menus.  The option is \\fIunset\\fP by default because many\n  ** visual terminals don't permit making the cursor invisible.\n  */\n#if defined(USE_SSL)\n  { \"certificate_file\",\tDT_PATH, R_NONE, UL &SslCertFile, UL \"~/.mutt_certificates\" },\n  /*\n  ** .pp\n  ** This variable specifies the file where the certificates you trust\n  ** are saved. When an unknown certificate is encountered, you are asked\n  ** if you accept it or not. If you accept it, the certificate can also\n  ** be saved in this file and further connections are automatically\n  ** accepted.\n  ** .pp\n  ** You can also manually add CA certificates in this file. Any server\n  ** certificate that is signed with one of these CA certificates is\n  ** also automatically accepted.\n  ** .pp\n  ** Example:\n  ** .ts\n  ** set certificate_file=~/.mutt/certificates\n  ** .te\n  **\n  */\n#endif\n  { \"charset\",\t\tDT_STR,\t R_NONE, UL &Charset, UL 0 },\n  /*\n  ** .pp\n  ** Character set your terminal uses to display and enter textual data.\n  ** It is also the fallback for $$send_charset.\n  ** .pp\n  ** Upon startup Mutt tries to derive this value from environment variables\n  ** such as \\fC$$$LC_CTYPE\\fP or \\fC$$$LANG\\fP.\n  ** .pp\n  ** \\fBNote:\\fP It should only be set in case Mutt isn't able to determine the\n  ** character set used correctly.\n  */\n  { \"check_mbox_size\",\tDT_BOOL, R_NONE, OPTCHECKMBOXSIZE, 0 },\n  /*\n  ** .pp\n  ** When this variable is \\fIset\\fP, mutt will use file size attribute instead of\n  ** access time when checking for new mail in mbox and mmdf folders.\n  ** .pp\n  ** This variable is \\fIunset\\fP by default and should only be enabled when\n  ** new mail detection for these folder types is unreliable or doesn't work.\n  ** .pp\n  ** Note that enabling this variable should happen before any ``$mailboxes''\n  ** directives occur in configuration files regarding mbox or mmdf folders\n  ** because mutt needs to determine the initial new mail status of such a\n  ** mailbox by performing a fast mailbox scan when it is defined.\n  ** Afterwards the new mail status is tracked by file size changes.\n  */\n  { \"check_new\",\tDT_BOOL, R_NONE, OPTCHECKNEW, 1 },\n  /*\n  ** .pp\n  ** \\fBNote:\\fP this option only affects \\fImaildir\\fP and \\fIMH\\fP style\n  ** mailboxes.\n  ** .pp\n  ** When \\fIset\\fP, Mutt will check for new mail delivered while the\n  ** mailbox is open.  Especially with MH mailboxes, this operation can\n  ** take quite some time since it involves scanning the directory and\n  ** checking each file to see if it has already been looked at.  If\n  ** this variable is \\fIunset\\fP, no check for new mail is performed\n  ** while the mailbox is open.\n  */\n  { \"collapse_unread\",\tDT_BOOL, R_NONE, OPTCOLLAPSEUNREAD, 1 },\n  /*\n  ** .pp\n  ** When \\fIunset\\fP, Mutt will not collapse a thread if it contains any\n  ** unread messages.\n  */\n  { \"compose_format\",\tDT_STR,\t R_BOTH, UL &ComposeFormat, UL \"-- Mutt: Compose  [Approx. msg size: %l   Atts: %a]%>-\" },\n  /*\n  ** .pp\n  ** Controls the format of the status line displayed in the ``compose''\n  ** menu.  This string is similar to $$status_format, but has its own\n  ** set of \\fCprintf(3)\\fP-like sequences:\n  ** .dl\n  ** .dt %a .dd total number of attachments\n  ** .dt %h .dd local hostname\n  ** .dt %l .dd approximate size (in bytes) of the current message\n  ** .dt %v .dd Mutt version string\n  ** .de\n  ** .pp\n  ** See the text describing the $$status_format option for more\n  ** information on how to set $$compose_format.\n  */\n  { \"config_charset\",\tDT_STR,  R_NONE, UL &ConfigCharset, UL 0 },\n  /*\n  ** .pp\n  ** When defined, Mutt will recode commands in rc files from this\n  ** encoding to the current character set as specified by $$charset\n  ** and aliases written to $$alias_file from the current character set.\n  ** .pp\n  ** Please note that if setting $$charset it must be done before\n  ** setting $$config_charset.\n  ** .pp\n  ** Recoding should be avoided as it may render unconvertable\n  ** characters as question marks which can lead to undesired\n  ** side effects (for example in regular expressions).\n  */\n  { \"confirmappend\",\tDT_BOOL, R_NONE, OPTCONFIRMAPPEND, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will prompt for confirmation when appending messages to\n  ** an existing mailbox.\n  */\n  { \"confirmcreate\",\tDT_BOOL, R_NONE, OPTCONFIRMCREATE, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will prompt for confirmation when saving messages to a\n  ** mailbox which does not yet exist before creating it.\n  */\n  { \"connect_timeout\",\tDT_NUM,\tR_NONE, UL &ConnectTimeout, 30 },\n  /*\n  ** .pp\n  ** Causes Mutt to timeout a network connection (for IMAP, POP or SMTP) after this\n  ** many seconds if the connection is not able to be established.  A negative\n  ** value causes Mutt to wait indefinitely for the connection attempt to succeed.\n  */\n  { \"content_type\",\tDT_STR, R_NONE, UL &ContentType, UL \"text/plain\" },\n  /*\n  ** .pp\n  ** Sets the default Content-Type for the body of newly composed messages.\n  */\n  { \"copy\",\t\tDT_QUAD, R_NONE, OPT_COPY, M_YES },\n  /*\n  ** .pp\n  ** This variable controls whether or not copies of your outgoing messages\n  ** will be saved for later references.  Also see $$record,\n  ** $$save_name, $$force_name and ``$fcc-hook''.\n  */\n  { \"pgp_autoencrypt\",\t\tDT_SYN,  R_NONE, UL \"crypt_autoencrypt\", 0 },\n  { \"crypt_autoencrypt\",\tDT_BOOL, R_NONE, OPTCRYPTAUTOENCRYPT, 0 },\n  /*\n  ** .pp\n  ** Setting this variable will cause Mutt to always attempt to PGP\n  ** encrypt outgoing messages.  This is probably only useful in\n  ** connection to the ``$send-hook'' command.  It can be overridden\n  ** by use of the pgp menu, when encryption is not required or\n  ** signing is requested as well.  If $$smime_is_default is \\fIset\\fP,\n  ** then OpenSSL is used instead to create S/MIME messages and\n  ** settings can be overridden by use of the smime menu instead.\n  ** (Crypto only)\n  */\n  { \"crypt_autopgp\",\tDT_BOOL, R_NONE, OPTCRYPTAUTOPGP, 1 },\n  /*\n  ** .pp\n  ** This variable controls whether or not mutt may automatically enable\n  ** PGP encryption/signing for messages.  See also $$crypt_autoencrypt,\n  ** $$crypt_replyencrypt,\n  ** $$crypt_autosign, $$crypt_replysign and $$smime_is_default.\n  */\n  { \"pgp_autosign\", \tDT_SYN,  R_NONE, UL \"crypt_autosign\", 0 },\n  { \"crypt_autosign\",\tDT_BOOL, R_NONE, OPTCRYPTAUTOSIGN, 0 },\n  /*\n  ** .pp\n  ** Setting this variable will cause Mutt to always attempt to\n  ** cryptographically sign outgoing messages.  This can be overridden\n  ** by use of the pgp menu, when signing is not required or\n  ** encryption is requested as well. If $$smime_is_default is \\fIset\\fP,\n  ** then OpenSSL is used instead to create S/MIME messages and settings can\n  ** be overridden by use of the smime menu instead of the pgp menu.\n  ** (Crypto only)\n  */\n  { \"crypt_autosmime\",\tDT_BOOL, R_NONE, OPTCRYPTAUTOSMIME, 1 },\n  /*\n  ** .pp\n  ** This variable controls whether or not mutt may automatically enable\n  ** S/MIME encryption/signing for messages. See also $$crypt_autoencrypt,\n  ** $$crypt_replyencrypt,\n  ** $$crypt_autosign, $$crypt_replysign and $$smime_is_default.\n  */\n  { \"crypt_confirmhook\",\tDT_BOOL, R_NONE, OPTCRYPTCONFIRMHOOK, 1 },\n  /*\n  ** .pp\n  ** If set, then you will be prompted for confirmation of keys when using\n  ** the \\fIcrypt-hook\\fP command.  If unset, no such confirmation prompt will\n  ** be presented.  This is generally considered unsafe, especially where\n  ** typos are concerned.\n  */\n  { \"crypt_opportunistic_encrypt\", DT_BOOL, R_NONE, OPTCRYPTOPPORTUNISTICENCRYPT, 0 },\n  /*\n  ** .pp\n  ** Setting this variable will cause Mutt to automatically enable and\n  ** disable encryption, based on whether all message recipient keys\n  ** can be located by mutt.\n  ** .pp\n  ** When this option is enabled, mutt will determine the encryption\n  ** setting each time the TO, CC, and BCC lists are edited.  If\n  ** $$edit_headers is set, mutt will also do so each time the message\n  ** is edited.\n  ** .pp\n  ** While this is set, encryption settings can't be manually changed.\n  ** The pgp or smime menus provide an option to disable the option for\n  ** a particular message.\n  ** .pp\n  ** If $$crypt_autoencrypt or $$crypt_replyencrypt enable encryption for\n  ** a message, this option will be disabled for the message.  It can\n  ** be manually re-enabled in the pgp or smime menus.\n  ** (Crypto only)\n   */\n  { \"pgp_replyencrypt\",\t\tDT_SYN,  R_NONE, UL \"crypt_replyencrypt\", 1  },\n  { \"crypt_replyencrypt\",\tDT_BOOL, R_NONE, OPTCRYPTREPLYENCRYPT, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, automatically PGP or OpenSSL encrypt replies to messages which are\n  ** encrypted.\n  ** (Crypto only)\n  */\n  { \"pgp_replysign\",\tDT_SYN, R_NONE, UL \"crypt_replysign\", 0 },\n  { \"crypt_replysign\",\tDT_BOOL, R_NONE, OPTCRYPTREPLYSIGN, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, automatically PGP or OpenSSL sign replies to messages which are\n  ** signed.\n  ** .pp\n  ** \\fBNote:\\fP this does not work on messages that are encrypted\n  ** \\fIand\\fP signed!\n  ** (Crypto only)\n  */\n  { \"pgp_replysignencrypted\",   DT_SYN,  R_NONE, UL \"crypt_replysignencrypted\", 0},\n  { \"crypt_replysignencrypted\", DT_BOOL, R_NONE, OPTCRYPTREPLYSIGNENCRYPTED, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, automatically PGP or OpenSSL sign replies to messages\n  ** which are encrypted. This makes sense in combination with\n  ** $$crypt_replyencrypt, because it allows you to sign all\n  ** messages which are automatically encrypted.  This works around\n  ** the problem noted in $$crypt_replysign, that mutt is not able\n  ** to find out whether an encrypted message is also signed.\n  ** (Crypto only)\n  */\n  { \"crypt_timestamp\", DT_BOOL, R_NONE, OPTCRYPTTIMESTAMP, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, mutt will include a time stamp in the lines surrounding\n  ** PGP or S/MIME output, so spoofing such lines is more difficult.\n  ** If you are using colors to mark these lines, and rely on these,\n  ** you may \\fIunset\\fP this setting.\n  ** (Crypto only)\n  */\n  { \"crypt_use_gpgme\",  DT_BOOL, R_NONE, OPTCRYPTUSEGPGME, 0 },\n  /*\n  ** .pp\n  ** This variable controls the use of the GPGME-enabled crypto backends.\n  ** If it is \\fIset\\fP and Mutt was built with gpgme support, the gpgme code for\n  ** S/MIME and PGP will be used instead of the classic code.  Note that\n  ** you need to set this option in .muttrc; it won't have any effect when\n  ** used interactively.\n  ** .pp\n  ** Note that the GPGME backend does not support creating old-style inline\n  ** (traditional) PGP encrypted or signed messages (see $$pgp_autoinline).\n  */\n  { \"crypt_use_pka\", DT_BOOL, R_NONE, OPTCRYPTUSEPKA, 0 },\n  /*\n  ** .pp\n  ** Controls whether mutt uses PKA\n  ** (see http://www.g10code.de/docs/pka-intro.de.pdf) during signature\n  ** verification (only supported by the GPGME backend).\n  */\n  { \"pgp_verify_sig\",   DT_SYN,  R_NONE, UL \"crypt_verify_sig\", 0},\n  { \"crypt_verify_sig\",\tDT_QUAD, R_NONE, OPT_VERIFYSIG, M_YES },\n  /*\n  ** .pp\n  ** If \\fI``yes''\\fP, always attempt to verify PGP or S/MIME signatures.\n  ** If \\fI``ask-*''\\fP, ask whether or not to verify the signature.\n  ** If \\fI``no''\\fP, never attempt to verify cryptographic signatures.\n  ** (Crypto only)\n  */\n  { \"date_format\",\tDT_STR,\t R_BOTH, UL &DateFmt, UL \"!%a, %b %d, %Y at %I:%M:%S%p %Z\" },\n  /*\n  ** .pp\n  ** This variable controls the format of the date printed by the ``%d''\n  ** sequence in $$index_format.  This is passed to the \\fCstrftime(3)\\fP\n  ** function to process the date, see the man page for the proper syntax.\n  ** .pp\n  ** Unless the first character in the string is a bang (``!''), the month\n  ** and week day names are expanded according to the locale specified in\n  ** the variable $$locale. If the first character in the string is a\n  ** bang, the bang is discarded, and the month and week day names in the\n  ** rest of the string are expanded in the \\fIC\\fP locale (that is in US\n  ** English).\n  */\n  { \"default_hook\",\tDT_STR,\t R_NONE, UL &DefaultHook, UL \"~f %s !~P | (~P ~C %s)\" },\n  /*\n  ** .pp\n  ** This variable controls how ``$message-hook'', ``$reply-hook'', ``$send-hook'',\n  ** ``$send2-hook'', ``$save-hook'', and ``$fcc-hook'' will\n  ** be interpreted if they are specified with only a simple regexp,\n  ** instead of a matching pattern.  The hooks are expanded when they are\n  ** declared, so a hook will be interpreted according to the value of this\n  ** variable at the time the hook is declared.\n  ** .pp\n  ** The default value matches\n  ** if the message is either from a user matching the regular expression\n  ** given, or if it is from you (if the from address matches\n  ** ``$alternates'') and is to or cc'ed to a user matching the given\n  ** regular expression.\n  */\n  { \"delete\",\t\tDT_QUAD, R_NONE, OPT_DELETE, M_ASKYES },\n  /*\n  ** .pp\n  ** Controls whether or not messages are really deleted when closing or\n  ** synchronizing a mailbox.  If set to \\fIyes\\fP, messages marked for\n  ** deleting will automatically be purged without prompting.  If set to\n  ** \\fIno\\fP, messages marked for deletion will be kept in the mailbox.\n  */\n  { \"delete_untag\",\tDT_BOOL, R_NONE, OPTDELETEUNTAG, 1 },\n  /*\n  ** .pp\n  ** If this option is \\fIset\\fP, mutt will untag messages when marking them\n  ** for deletion.  This applies when you either explicitly delete a message,\n  ** or when you save it to another folder.\n  */\n  { \"digest_collapse\",\tDT_BOOL, R_NONE, OPTDIGESTCOLLAPSE, 1},\n  /*\n  ** .pp\n  ** If this option is \\fIset\\fP, mutt's received-attachments menu will not show the subparts of\n  ** individual messages in a multipart/digest.  To see these subparts, press ``v'' on that menu.\n  */\n  { \"display_filter\",\tDT_PATH, R_PAGER, UL &DisplayFilter, UL \"\" },\n  /*\n  ** .pp\n  ** When set, specifies a command used to filter messages.  When a message\n  ** is viewed it is passed as standard input to $$display_filter, and the\n  ** filtered message is read from the standard output.\n  */\n#if defined(DL_STANDALONE) && defined(USE_DOTLOCK)\n  { \"dotlock_program\",  DT_PATH, R_NONE, UL &MuttDotlock, UL BINDIR \"/mutt_dotlock\" },\n  /*\n  ** .pp\n  ** Contains the path of the \\fCmutt_dotlock(8)\\fP binary to be used by\n  ** mutt.\n  */\n#endif\n  { \"dsn_notify\",\tDT_STR,\t R_NONE, UL &DsnNotify, UL \"\" },\n  /*\n  ** .pp\n  ** This variable sets the request for when notification is returned.  The\n  ** string consists of a comma separated list (no spaces!) of one or more\n  ** of the following: \\fInever\\fP, to never request notification,\n  ** \\fIfailure\\fP, to request notification on transmission failure,\n  ** \\fIdelay\\fP, to be notified of message delays, \\fIsuccess\\fP, to be\n  ** notified of successful transmission.\n  ** .pp\n  ** Example:\n  ** .ts\n  ** set dsn_notify=\"failure,delay\"\n  ** .te\n  ** .pp\n  ** \\fBNote:\\fP when using $$sendmail for delivery, you should not enable\n  ** this unless you are either using Sendmail 8.8.x or greater or a MTA\n  ** providing a \\fCsendmail(1)\\fP-compatible interface supporting the \\fC-N\\fP option\n  ** for DSN. For SMTP delivery, DSN support is auto-detected so that it\n  ** depends on the server whether DSN will be used or not.\n  */\n  { \"dsn_return\",\tDT_STR,\t R_NONE, UL &DsnReturn, UL \"\" },\n  /*\n  ** .pp\n  ** This variable controls how much of your message is returned in DSN\n  ** messages.  It may be set to either \\fIhdrs\\fP to return just the\n  ** message header, or \\fIfull\\fP to return the full message.\n  ** .pp\n  ** Example:\n  ** .ts\n  ** set dsn_return=hdrs\n  ** .te\n  ** .pp\n  ** \\fBNote:\\fP when using $$sendmail for delivery, you should not enable\n  ** this unless you are either using Sendmail 8.8.x or greater or a MTA\n  ** providing a \\fCsendmail(1)\\fP-compatible interface supporting the \\fC-R\\fP option\n  ** for DSN. For SMTP delivery, DSN support is auto-detected so that it\n  ** depends on the server whether DSN will be used or not.\n  */\n  { \"duplicate_threads\",\tDT_BOOL, R_RESORT|R_RESORT_INIT|R_INDEX, OPTDUPTHREADS, 1 },\n  /*\n  ** .pp\n  ** This variable controls whether mutt, when $$sort is set to \\fIthreads\\fP, threads\n  ** messages with the same Message-Id together.  If it is \\fIset\\fP, it will indicate\n  ** that it thinks they are duplicates of each other with an equals sign\n  ** in the thread tree.\n  */\n  { \"edit_headers\",\tDT_BOOL, R_NONE, OPTEDITHDRS, 0 },\n  /*\n  ** .pp\n  ** This option allows you to edit the header of your outgoing messages\n  ** along with the body of your message.\n  ** .pp\n  ** \\fBNote\\fP that changes made to the References: and Date: headers are\n  ** ignored for interoperability reasons.\n  */\n  { \"edit_hdrs\",\tDT_SYN,  R_NONE, UL \"edit_headers\", 0 },\n  /*\n  */\n  { \"editor\",\t\tDT_PATH, R_NONE, UL &Editor, 0 },\n  /*\n  ** .pp\n  ** This variable specifies which editor is used by mutt.\n  ** It defaults to the value of the \\fC$$$VISUAL\\fP, or \\fC$$$EDITOR\\fP, environment\n  ** variable, or to the string ``vi'' if neither of those are set.\n  ** .pp\n  ** The \\fC$$editor\\fP string may contain a \\fI%s\\fP escape, which will be replaced by the name\n  ** of the file to be edited.  If the \\fI%s\\fP escape does not appear in \\fC$$editor\\fP, a\n  ** space and the name to be edited are appended.\n  ** .pp\n  ** The resulting string is then executed by running\n  ** .ts\n  ** sh -c 'string'\n  ** .te\n  ** .pp\n  ** where \\fIstring\\fP is the expansion of \\fC$$editor\\fP described above.\n  */\n  { \"encode_from\",\tDT_BOOL, R_NONE, OPTENCODEFROM, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will quoted-printable encode messages when\n  ** they contain the string ``From '' (note the trailing space) in the beginning of a line.\n  ** This is useful to avoid the tampering certain mail delivery and transport\n  ** agents tend to do with messages (in order to prevent tools from\n  ** misinterpreting the line as a mbox message separator).\n  */\n#if defined(USE_SSL_OPENSSL)\n  { \"entropy_file\",\tDT_PATH, R_NONE, UL &SslEntropyFile, 0 },\n  /*\n  ** .pp\n  ** The file which includes random data that is used to initialize SSL\n  ** library functions.\n  */\n#endif\n  { \"envelope_from_address\", DT_ADDR, R_NONE, UL &EnvFrom, 0 },\n  /*\n  ** .pp\n  ** Manually sets the \\fIenvelope\\fP sender for outgoing messages.\n  ** This value is ignored if $$use_envelope_from is \\fIunset\\fP.\n  */\n  { \"escape\",\t\tDT_STR,\t R_NONE, UL &EscChar, UL \"~\" },\n  /*\n  ** .pp\n  ** Escape character to use for functions in the built-in editor.\n  */\n  { \"fast_reply\",\tDT_BOOL, R_NONE, OPTFASTREPLY, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, the initial prompt for recipients and subject are skipped\n  ** when replying to messages, and the initial prompt for subject is\n  ** skipped when forwarding messages.\n  ** .pp\n  ** \\fBNote:\\fP this variable has no effect when the $$autoedit\n  ** variable is \\fIset\\fP.\n  */\n  { \"fcc_attach\",\tDT_QUAD, R_NONE, OPT_FCCATTACH, M_YES },\n  /*\n  ** .pp\n  ** This variable controls whether or not attachments on outgoing messages\n  ** are saved along with the main body of your message.\n  */\n  { \"fcc_clear\",\tDT_BOOL, R_NONE, OPTFCCCLEAR, 0 },\n  /*\n  ** .pp\n  ** When this variable is \\fIset\\fP, FCCs will be stored unencrypted and\n  ** unsigned, even when the actual message is encrypted and/or\n  ** signed.\n  ** (PGP only)\n  */\n  { \"folder\",\t\tDT_PATH, R_NONE, UL &Maildir, UL \"~/Mail\" },\n  /*\n  ** .pp\n  ** Specifies the default location of your mailboxes.  A ``+'' or ``='' at the\n  ** beginning of a pathname will be expanded to the value of this\n  ** variable.  Note that if you change this variable (from the default)\n  ** value you need to make sure that the assignment occurs \\fIbefore\\fP\n  ** you use ``+'' or ``='' for any other variables since expansion takes place\n  ** when handling the ``$mailboxes'' command.\n  */\n  { \"folder_format\",\tDT_STR,\t R_INDEX, UL &FolderFormat, UL \"%2C %t %N %F %2l %-8.8u %-8.8g %8s %d %f\" },\n  /*\n  ** .pp\n  ** This variable allows you to customize the file browser display to your\n  ** personal taste.  This string is similar to $$index_format, but has\n  ** its own set of \\fCprintf(3)\\fP-like sequences:\n  ** .dl\n  ** .dt %C  .dd current file number\n  ** .dt %d  .dd date/time folder was last modified\n  ** .dt %D  .dd date/time folder was last modified using $$date_format.\n  ** .dt %f  .dd filename (``/'' is appended to directory names,\n  **             ``@'' to symbolic links and ``*'' to executable\n  **             files)\n  ** .dt %F  .dd file permissions\n  ** .dt %g  .dd group name (or numeric gid, if missing)\n  ** .dt %l  .dd number of hard links\n  ** .dt %N  .dd N if folder has new mail, blank otherwise\n  ** .dt %s  .dd size in bytes\n  ** .dt %t  .dd ``*'' if the file is tagged, blank otherwise\n  ** .dt %u  .dd owner name (or numeric uid, if missing)\n  ** .dt %>X .dd right justify the rest of the string and pad with character ``X''\n  ** .dt %|X .dd pad to the end of the line with character ``X''\n  ** .dt %*X .dd soft-fill with character ``X'' as pad\n  ** .de\n  ** .pp\n  ** For an explanation of ``soft-fill'', see the $$index_format documentation.\n  */\n  { \"followup_to\",\tDT_BOOL, R_NONE, OPTFOLLOWUPTO, 1 },\n  /*\n  ** .pp\n  ** Controls whether or not the ``Mail-Followup-To:'' header field is\n  ** generated when sending mail.  When \\fIset\\fP, Mutt will generate this\n  ** field when you are replying to a known mailing list, specified with\n  ** the ``$subscribe'' or ``$lists'' commands.\n  ** .pp\n  ** This field has two purposes.  First, preventing you from\n  ** receiving duplicate copies of replies to messages which you send\n  ** to mailing lists, and second, ensuring that you do get a reply\n  ** separately for any messages sent to known lists to which you are\n  ** not subscribed.\n  ** .pp\n  ** The header will contain only the list's address\n  ** for subscribed lists, and both the list address and your own\n  ** email address for unsubscribed lists.  Without this header, a\n  ** group reply to your message sent to a subscribed list will be\n  ** sent to both the list and your address, resulting in two copies\n  ** of the same email for you.\n  */\n  { \"force_name\",\tDT_BOOL, R_NONE, OPTFORCENAME, 0 },\n  /*\n  ** .pp\n  ** This variable is similar to $$save_name, except that Mutt will\n  ** store a copy of your outgoing message by the username of the address\n  ** you are sending to even if that mailbox does not exist.\n  ** .pp\n  ** Also see the $$record variable.\n  */\n  { \"forward_decode\",\tDT_BOOL, R_NONE, OPTFORWDECODE, 1 },\n  /*\n  ** .pp\n  ** Controls the decoding of complex MIME messages into \\fCtext/plain\\fP when\n  ** forwarding a message.  The message header is also RFC2047 decoded.\n  ** This variable is only used, if $$mime_forward is \\fIunset\\fP,\n  ** otherwise $$mime_forward_decode is used instead.\n  */\n  { \"forw_decode\",\tDT_SYN,  R_NONE, UL \"forward_decode\", 0 },\n  /*\n  */\n  { \"forward_decrypt\",\tDT_BOOL, R_NONE, OPTFORWDECRYPT, 1 },\n  /*\n  ** .pp\n  ** Controls the handling of encrypted messages when forwarding a message.\n  ** When \\fIset\\fP, the outer layer of encryption is stripped off.  This\n  ** variable is only used if $$mime_forward is \\fIset\\fP and\n  ** $$mime_forward_decode is \\fIunset\\fP.\n  ** (PGP only)\n  */\n  { \"forw_decrypt\",\tDT_SYN,  R_NONE, UL \"forward_decrypt\", 0 },\n  /*\n  */\n  { \"forward_edit\",\tDT_QUAD, R_NONE, OPT_FORWEDIT, M_YES },\n  /*\n  ** .pp\n  ** This quadoption controls whether or not the user is automatically\n  ** placed in the editor when forwarding messages.  For those who always want\n  ** to forward with no modification, use a setting of ``no''.\n  */\n  { \"forward_format\",\tDT_STR,\t R_NONE, UL &ForwFmt, UL \"[%a: %s]\" },\n  /*\n  ** .pp\n  ** This variable controls the default subject when forwarding a message.\n  ** It uses the same format sequences as the $$index_format variable.\n  */\n  { \"forw_format\",\tDT_SYN,  R_NONE, UL \"forward_format\", 0 },\n  /*\n  */\n  { \"forward_quote\",\tDT_BOOL, R_NONE, OPTFORWQUOTE, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, forwarded messages included in the main body of the\n  ** message (when $$mime_forward is \\fIunset\\fP) will be quoted using\n  ** $$indent_string.\n  */\n  { \"forw_quote\",\tDT_SYN,  R_NONE, UL \"forward_quote\", 0 },\n  /*\n  */\n  { \"from\",\t\tDT_ADDR, R_NONE, UL &From, UL 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, this variable contains a default from address.  It\n  ** can be overridden using ``$my_hdr'' (including from a ``$send-hook'') and\n  ** $$reverse_name.  This variable is ignored if $$use_from is \\fIunset\\fP.\n  ** .pp\n  ** This setting defaults to the contents of the environment variable \\fC$$$EMAIL\\fP.\n  */\n  { \"gecos_mask\",\tDT_RX,\t R_NONE, UL &GecosMask, UL \"^[^,]*\" },\n  /*\n  ** .pp\n  ** A regular expression used by mutt to parse the GECOS field of a password\n  ** entry when expanding the alias.  The default value\n  ** will return the string up to the first ``,'' encountered.\n  ** If the GECOS field contains a string like ``lastname, firstname'' then you\n  ** should set it to ``\\fC.*\\fP''.\n  ** .pp\n  ** This can be useful if you see the following behavior: you address an e-mail\n  ** to user ID ``stevef'' whose full name is ``Steve Franklin''.  If mutt expands\n  ** ``stevef'' to ``\"Franklin\" stevef@foo.bar'' then you should set the $$gecos_mask to\n  ** a regular expression that will match the whole name so mutt will expand\n  ** ``Franklin'' to ``Franklin, Steve''.\n  */\n  { \"hdr_format\",\tDT_SYN,  R_NONE, UL \"index_format\", 0 },\n  /*\n  */\n  { \"hdrs\",\t\tDT_BOOL, R_NONE, OPTHDRS, 1 },\n  /*\n  ** .pp\n  ** When \\fIunset\\fP, the header fields normally added by the ``$my_hdr''\n  ** command are not created.  This variable \\fImust\\fP be unset before\n  ** composing a new message or replying in order to take effect.  If \\fIset\\fP,\n  ** the user defined header fields are added to every new message.\n  */\n  { \"header\",\t\tDT_BOOL, R_NONE, OPTHEADER, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, this variable causes Mutt to include the header\n  ** of the message you are replying to into the edit buffer.\n  ** The $$weed setting applies.\n  */\n#ifdef USE_HCACHE\n  { \"header_cache\", DT_PATH, R_NONE, UL &HeaderCache, 0 },\n  /*\n  ** .pp\n  ** This variable points to the header cache database.\n  ** If pointing to a directory Mutt will contain a header cache\n  ** database file per folder, if pointing to a file that file will\n  ** be a single global header cache. By default it is \\fIunset\\fP so no header\n  ** caching will be used.\n  ** .pp\n  ** Header caching can greatly improve speed when opening POP, IMAP\n  ** MH or Maildir folders, see ``$caching'' for details.\n  */\n#if defined(HAVE_QDBM) || defined(HAVE_TC)\n  { \"header_cache_compress\", DT_BOOL, R_NONE, OPTHCACHECOMPRESS, 1 },\n  /*\n  ** .pp\n  ** When mutt is compiled with qdbm or tokyocabinet as header cache backend,\n  ** this option determines whether the database will be compressed.\n  ** Compression results in database files roughly being one fifth\n  ** of the usual diskspace, but the decompression can result in a\n  ** slower opening of cached folder(s) which in general is still\n  ** much faster than opening non header cached folders.\n  */\n#endif /* HAVE_QDBM */\n#if defined(HAVE_GDBM) || defined(HAVE_DB4)\n  { \"header_cache_pagesize\", DT_STR, R_NONE, UL &HeaderCachePageSize, UL \"16384\" },\n  /*\n  ** .pp\n  ** When mutt is compiled with either gdbm or bdb4 as the header cache backend,\n  ** this option changes the database page size.  Too large or too small\n  ** values can waste space, memory, or CPU time. The default should be more\n  ** or less optimal for most use cases.\n  */\n#endif /* HAVE_GDBM || HAVE_DB4 */\n#endif /* USE_HCACHE */\n  { \"help\",\t\tDT_BOOL, R_BOTH, OPTHELP, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, help lines describing the bindings for the major functions\n  ** provided by each menu are displayed on the first line of the screen.\n  ** .pp\n  ** \\fBNote:\\fP The binding will not be displayed correctly if the\n  ** function is bound to a sequence rather than a single keystroke.  Also,\n  ** the help line may not be updated if a binding is changed while Mutt is\n  ** running.  Since this variable is primarily aimed at new users, neither\n  ** of these should present a major problem.\n  */\n  { \"hidden_host\",\tDT_BOOL, R_NONE, OPTHIDDENHOST, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will skip the host name part of $$hostname variable\n  ** when adding the domain part to addresses.  This variable does not\n  ** affect the generation of Message-IDs, and it will not lead to the\n  ** cut-off of first-level domains.\n  */\n  { \"hide_limited\",\tDT_BOOL, R_TREE|R_INDEX, OPTHIDELIMITED, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will not show the presence of messages that are hidden\n  ** by limiting, in the thread tree.\n  */\n  { \"hide_missing\",\tDT_BOOL, R_TREE|R_INDEX, OPTHIDEMISSING, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will not show the presence of missing messages in the\n  ** thread tree.\n  */\n  { \"hide_thread_subject\", DT_BOOL, R_TREE|R_INDEX, OPTHIDETHREADSUBJECT, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will not show the subject of messages in the thread\n  ** tree that have the same subject as their parent or closest previously\n  ** displayed sibling.\n  */\n  { \"hide_top_limited\",\tDT_BOOL, R_TREE|R_INDEX, OPTHIDETOPLIMITED, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will not show the presence of messages that are hidden\n  ** by limiting, at the top of threads in the thread tree.  Note that when\n  ** $$hide_limited is \\fIset\\fP, this option will have no effect.\n  */\n  { \"hide_top_missing\",\tDT_BOOL, R_TREE|R_INDEX, OPTHIDETOPMISSING, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will not show the presence of missing messages at the\n  ** top of threads in the thread tree.  Note that when $$hide_missing is\n  ** \\fIset\\fP, this option will have no effect.\n  */\n  { \"history\",\t\tDT_NUM,\t R_NONE, UL &HistSize, 10 },\n  /*\n  ** .pp\n  ** This variable controls the size (in number of strings remembered) of\n  ** the string history buffer per category. The buffer is cleared each time the\n  ** variable is set.\n  */\n  { \"history_file\",     DT_PATH, R_NONE, UL &HistFile, UL \"~/.mutthistory\" },\n  /*\n  ** .pp\n  ** The file in which Mutt will save its history.\n  */\n  { \"honor_disposition\", DT_BOOL, R_NONE, OPTHONORDISP, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will not display attachments with a\n  ** disposition of ``attachment'' inline even if it could\n  ** render the part to plain text. These MIME parts can only\n  ** be viewed from the attachment menu.\n  ** .pp\n  ** If \\fIunset\\fP, Mutt will render all MIME parts it can\n  ** properly transform to plain text.\n  */\n  { \"honor_followup_to\", DT_QUAD, R_NONE, OPT_MFUPTO, M_YES },\n  /*\n  ** .pp\n  ** This variable controls whether or not a Mail-Followup-To header is\n  ** honored when group-replying to a message.\n  */\n  { \"hostname\",\t\tDT_STR,\t R_NONE, UL &Fqdn, 0 },\n  /*\n  ** .pp\n  ** Specifies the fully-qualified hostname of the system mutt is running on\n  ** containing the host's name and the DNS domain it belongs to. It is used\n  ** as the domain part (after ``@'') for local email addresses as well as\n  ** Message-Id headers.\n  ** .pp\n  ** Its value is determined at startup as follows: the node's\n  ** hostname is first determined by the \\fCuname(3)\\fP function.  The\n  ** domain is then looked up using the \\fCgethostname(2)\\fP and\n  ** \\fCgetaddrinfo(3)\\fP functions.  If those calls are unable to\n  ** determine the domain, the full value returned by uname is used.\n  ** Optionally, Mutt can be compiled with a fixed domain name in\n  ** which case a detected one is not used.\n  ** .pp\n  ** Also see $$use_domain and $$hidden_host.\n  */\n#ifdef HAVE_LIBIDN\n  { \"idn_decode\",\tDT_BOOL, R_BOTH, OPTIDNDECODE, 1},\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will show you international domain names decoded.\n  ** Note: You can use IDNs for addresses even if this is \\fIunset\\fP.\n  ** This variable only affects decoding. (IDN only)\n  */\n  { \"idn_encode\",\tDT_BOOL, R_BOTH, OPTIDNENCODE, 1},\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will encode international domain names using\n  ** IDN.  Unset this if your SMTP server can handle newer (RFC 6531)\n  ** UTF-8 encoded domains. (IDN only)\n  */\n#endif /* HAVE_LIBIDN */\n  { \"ignore_linear_white_space\",    DT_BOOL, R_NONE, OPTIGNORELWS, 0 },\n  /*\n  ** .pp\n  ** This option replaces linear-white-space between encoded-word\n  ** and text to a single space to prevent the display of MIME-encoded\n  ** ``Subject:'' field from being divided into multiple lines.\n  */\n  { \"ignore_list_reply_to\", DT_BOOL, R_NONE, OPTIGNORELISTREPLYTO, 0 },\n  /*\n  ** .pp\n  ** Affects the behavior of the \\fC<reply>\\fP function when replying to\n  ** messages from mailing lists (as defined by the ``$subscribe'' or\n  ** ``$lists'' commands).  When \\fIset\\fP, if the ``Reply-To:'' field is\n  ** set to the same value as the ``To:'' field, Mutt assumes that the\n  ** ``Reply-To:'' field was set by the mailing list to automate responses\n  ** to the list, and will ignore this field.  To direct a response to the\n  ** mailing list when this option is \\fIset\\fP, use the \\fC$<list-reply>\\fP\n  ** function; \\fC<group-reply>\\fP will reply to both the sender and the\n  ** list.\n  */\n#ifdef USE_IMAP\n  { \"imap_authenticators\", DT_STR, R_NONE, UL &ImapAuthenticators, UL 0 },\n  /*\n  ** .pp\n  ** This is a colon-delimited list of authentication methods mutt may\n  ** attempt to use to log in to an IMAP server, in the order mutt should\n  ** try them.  Authentication methods are either ``login'' or the right\n  ** side of an IMAP ``AUTH=xxx'' capability string, e.g. ``digest-md5'', ``gssapi''\n  ** or ``cram-md5''. This option is case-insensitive. If it's\n  ** \\fIunset\\fP (the default) mutt will try all available methods,\n  ** in order from most-secure to least-secure.\n  ** .pp\n  ** Example:\n  ** .ts\n  ** set imap_authenticators=\"gssapi:cram-md5:login\"\n  ** .te\n  ** .pp\n  ** \\fBNote:\\fP Mutt will only fall back to other authentication methods if\n  ** the previous methods are unavailable. If a method is available but\n  ** authentication fails, mutt will not connect to the IMAP server.\n  */\n  { \"imap_check_subscribed\",  DT_BOOL, R_NONE, OPTIMAPCHECKSUBSCRIBED, 0 },\n  /*\n   ** .pp\n   ** When \\fIset\\fP, mutt will fetch the set of subscribed folders from\n   ** your server on connection, and add them to the set of mailboxes\n   ** it polls for new mail just as if you had issued individual ``$mailboxes''\n   ** commands.\n   */\n  { \"imap_delim_chars\",\t\tDT_STR, R_NONE, UL &ImapDelimChars, UL \"/.\" },\n  /*\n  ** .pp\n  ** This contains the list of characters which you would like to treat\n  ** as folder separators for displaying IMAP paths. In particular it\n  ** helps in using the ``='' shortcut for your \\fIfolder\\fP variable.\n  */\n  { \"imap_headers\",\tDT_STR, R_INDEX, UL &ImapHeaders, UL 0},\n  /*\n  ** .pp\n  ** Mutt requests these header fields in addition to the default headers\n  ** (``Date:'', ``From:'', ``Subject:'', ``To:'', ``Cc:'', ``Message-Id:'',\n  ** ``References:'', ``Content-Type:'', ``Content-Description:'', ``In-Reply-To:'',\n  ** ``Reply-To:'', ``Lines:'', ``List-Post:'', ``X-Label:'') from IMAP\n  ** servers before displaying the index menu. You may want to add more\n  ** headers for spam detection.\n  ** .pp\n  ** \\fBNote:\\fP This is a space separated list, items should be uppercase\n  ** and not contain the colon, e.g. ``X-BOGOSITY X-SPAM-STATUS'' for the\n  ** ``X-Bogosity:'' and ``X-Spam-Status:'' header fields.\n  */\n  { \"imap_idle\",                DT_BOOL, R_NONE, OPTIMAPIDLE, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will attempt to use the IMAP IDLE extension\n  ** to check for new mail in the current mailbox. Some servers\n  ** (dovecot was the inspiration for this option) react badly\n  ** to mutt's implementation. If your connection seems to freeze\n  ** up periodically, try unsetting this.\n  */\n  { \"imap_keepalive\",           DT_NUM,  R_NONE, UL &ImapKeepalive, 300 },\n  /*\n  ** .pp\n  ** This variable specifies the maximum amount of time in seconds that mutt\n  ** will wait before polling open IMAP connections, to prevent the server\n  ** from closing them before mutt has finished with them. The default is\n  ** well within the RFC-specified minimum amount of time (30 minutes) before\n  ** a server is allowed to do this, but in practice the RFC does get\n  ** violated every now and then. Reduce this number if you find yourself\n  ** getting disconnected from your IMAP server due to inactivity.\n  */\n  { \"imap_list_subscribed\",\tDT_BOOL, R_NONE, OPTIMAPLSUB, 0 },\n  /*\n  ** .pp\n  ** This variable configures whether IMAP folder browsing will look for\n  ** only subscribed folders or all folders.  This can be toggled in the\n  ** IMAP browser with the \\fC<toggle-subscribed>\\fP function.\n  */\n  { \"imap_login\",\tDT_STR,  R_NONE, UL &ImapLogin, UL 0 },\n  /*\n  ** .pp\n  ** Your login name on the IMAP server.\n  ** .pp\n  ** This variable defaults to the value of $$imap_user.\n  */\n  { \"imap_pass\", \tDT_STR,  R_NONE, UL &ImapPass, UL 0 },\n  /*\n  ** .pp\n  ** Specifies the password for your IMAP account.  If \\fIunset\\fP, Mutt will\n  ** prompt you for your password when you invoke the \\fC<imap-fetch-mail>\\fP function\n  ** or try to open an IMAP folder.\n  ** .pp\n  ** \\fBWarning\\fP: you should only use this option when you are on a\n  ** fairly secure machine, because the superuser can read your muttrc even\n  ** if you are the only one who can read the file.\n  */\n  { \"imap_passive\",\t\tDT_BOOL, R_NONE, OPTIMAPPASSIVE, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will not open new IMAP connections to check for new\n  ** mail.  Mutt will only check for new mail over existing IMAP\n  ** connections.  This is useful if you don't want to be prompted to\n  ** user/password pairs on mutt invocation, or if opening the connection\n  ** is slow.\n  */\n  { \"imap_peek\", DT_BOOL, R_NONE, OPTIMAPPEEK, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will avoid implicitly marking your mail as read whenever\n  ** you fetch a message from the server. This is generally a good thing,\n  ** but can make closing an IMAP folder somewhat slower. This option\n  ** exists to appease speed freaks.\n  */\n  { \"imap_pipeline_depth\", DT_NUM,  R_NONE, UL &ImapPipelineDepth, 15 },\n  /*\n  ** .pp\n  ** Controls the number of IMAP commands that may be queued up before they\n  ** are sent to the server. A deeper pipeline reduces the amount of time\n  ** mutt must wait for the server, and can make IMAP servers feel much\n  ** more responsive. But not all servers correctly handle pipelined commands,\n  ** so if you have problems you might want to try setting this variable to 0.\n  ** .pp\n  ** \\fBNote:\\fP Changes to this variable have no effect on open connections.\n  */\n  { \"imap_servernoise\",\t\tDT_BOOL, R_NONE, OPTIMAPSERVERNOISE, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will display warning messages from the IMAP\n  ** server as error messages. Since these messages are often\n  ** harmless, or generated due to configuration problems on the\n  ** server which are out of the users' hands, you may wish to suppress\n  ** them at some point.\n  */\n  { \"imap_user\",\tDT_STR,  R_NONE, UL &ImapUser, UL 0 },\n  /*\n  ** .pp\n  ** The name of the user whose mail you intend to access on the IMAP\n  ** server.\n  ** .pp\n  ** This variable defaults to your user name on the local machine.\n  */\n#endif\n  { \"implicit_autoview\", DT_BOOL,R_NONE, OPTIMPLICITAUTOVIEW, 0},\n  /*\n  ** .pp\n  ** If set to ``yes'', mutt will look for a mailcap entry with the\n  ** ``\\fCcopiousoutput\\fP'' flag set for \\fIevery\\fP MIME attachment it doesn't have\n  ** an internal viewer defined for.  If such an entry is found, mutt will\n  ** use the viewer defined in that entry to convert the body part to text\n  ** form.\n  */\n  { \"include\",\t\tDT_QUAD, R_NONE, OPT_INCLUDE, M_ASKYES },\n  /*\n  ** .pp\n  ** Controls whether or not a copy of the message(s) you are replying to\n  ** is included in your reply.\n  */\n  { \"include_onlyfirst\",\tDT_BOOL, R_NONE, OPTINCLUDEONLYFIRST, 0},\n  /*\n  ** .pp\n  ** Controls whether or not Mutt includes only the first attachment\n  ** of the message you are replying.\n  */\n  { \"indent_string\",\tDT_STR,\t R_NONE, UL &Prefix, UL \"> \" },\n  /*\n  ** .pp\n  ** Specifies the string to prepend to each line of text quoted in a\n  ** message to which you are replying.  You are strongly encouraged not to\n  ** change this value, as it tends to agitate the more fanatical netizens.\n  ** .pp\n  ** The value of this option is ignored if $$text_flowed is set, too because\n  ** the quoting mechanism is strictly defined for format=flowed.\n  ** .pp\n  ** This option is a format string, please see the description of\n  ** $$index_format for supported \\fCprintf(3)\\fP-style sequences.\n  */\n  { \"indent_str\",\tDT_SYN,  R_NONE, UL \"indent_string\", 0 },\n  /*\n  */\n  { \"index_format\",\tDT_STR,\t R_BOTH, UL &HdrFmt, UL \"%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s\" },\n  /*\n  ** .pp\n  ** This variable allows you to customize the message index display to\n  ** your personal taste.\n  ** .pp\n  ** ``Format strings'' are similar to the strings used in the C\n  ** function \\fCprintf(3)\\fP to format output (see the man page for more details).\n  ** The following sequences are defined in Mutt:\n  ** .dl\n  ** .dt %a .dd address of the author\n  ** .dt %A .dd reply-to address (if present; otherwise: address of author)\n  ** .dt %b .dd filename of the original message folder (think mailbox)\n  ** .dt %B .dd the list to which the letter was sent, or else the folder name (%b).\n  ** .dt %c .dd number of characters (bytes) in the message\n  ** .dt %C .dd current message number\n  ** .dt %d .dd date and time of the message in the format specified by\n  **            $$date_format converted to sender's time zone\n  ** .dt %D .dd date and time of the message in the format specified by\n  **            $$date_format converted to the local time zone\n  ** .dt %e .dd current message number in thread\n  ** .dt %E .dd number of messages in current thread\n  ** .dt %f .dd sender (address + real name), either From: or Return-Path:\n  ** .dt %F .dd author name, or recipient name if the message is from you\n  ** .dt %g .dd message labels (e.g. notmuch tags)\n  ** .dt %H .dd spam attribute(s) of this message\n  ** .dt %i .dd message-id of the current message\n  ** .dt %l .dd number of lines in the message (does not work with maildir,\n  **            mh, and possibly IMAP folders)\n  ** .dt %L .dd If an address in the ``To:'' or ``Cc:'' header field matches an address\n  **            defined by the users ``$subscribe'' command, this displays\n  **            \"To <list-name>\", otherwise the same as %F.\n  ** .dt %m .dd total number of message in the mailbox\n  ** .dt %M .dd number of hidden messages if the thread is collapsed.\n  ** .dt %N .dd message score\n  ** .dt %n .dd author's real name (or address if missing)\n  ** .dt %O .dd original save folder where mutt would formerly have\n  **            stashed the message: list name or recipient name\n  **            if not sent to a list\n  ** .dt %P .dd progress indicator for the built-in pager (how much of the file has been displayed)\n  ** .dt %r .dd comma separated list of ``To:'' recipients\n  ** .dt %R .dd comma separated list of ``Cc:'' recipients\n  ** .dt %s .dd subject of the message\n  ** .dt %S .dd status of the message (``N''/``D''/``d''/``!''/``r''/\\(as)\n  ** .dt %t .dd ``To:'' field (recipients)\n  ** .dt %T .dd the appropriate character from the $$to_chars string\n  ** .dt %u .dd user (login) name of the author\n  ** .dt %v .dd first name of the author, or the recipient if the message is from you\n  ** .dt %X .dd number of attachments\n  **            (please see the ``$attachments'' section for possible speed effects)\n  ** .dt %y .dd ``X-Label:'' field, if present\n  ** .dt %Y .dd ``X-Label:'' field, if present, and \\fI(1)\\fP not at part of a thread tree,\n  **            \\fI(2)\\fP at the top of a thread, or \\fI(3)\\fP ``X-Label:'' is different from\n  **            preceding message's ``X-Label:''.\n  ** .dt %Z .dd message status flags\n  ** .dt %{fmt} .dd the date and time of the message is converted to sender's\n  **                time zone, and ``fmt'' is expanded by the library function\n  **                \\fCstrftime(3)\\fP; a leading bang disables locales\n  ** .dt %[fmt] .dd the date and time of the message is converted to the local\n  **                time zone, and ``fmt'' is expanded by the library function\n  **                \\fCstrftime(3)\\fP; a leading bang disables locales\n  ** .dt %(fmt) .dd the local date and time when the message was received.\n  **                ``fmt'' is expanded by the library function \\fCstrftime(3)\\fP;\n  **                a leading bang disables locales\n  ** .dt %<fmt> .dd the current local time. ``fmt'' is expanded by the library\n  **                function \\fCstrftime(3)\\fP; a leading bang disables locales.\n  ** .dt %>X    .dd right justify the rest of the string and pad with character ``X''\n  ** .dt %|X    .dd pad to the end of the line with character ``X''\n  ** .dt %*X    .dd soft-fill with character ``X'' as pad\n  ** .de\n  ** .pp\n  ** Date format expressions can be constructed based on relative dates. Using\n  ** the date formatting operators along with nested conditionals, the date\n  ** format can be modified based on how old a message is.  See the section on\n  ** ``Conditional Dates'' for an explanation and examples\n  ** ``Soft-fill'' deserves some explanation: Normal right-justification\n  ** will print everything to the left of the ``%>'', displaying padding and\n  ** whatever lies to the right only if there's room. By contrast,\n  ** soft-fill gives priority to the right-hand side, guaranteeing space\n  ** to display it and showing padding only if there's still room. If\n  ** necessary, soft-fill will eat text leftwards to make room for\n  ** rightward text.\n  ** .pp\n  ** Note that these expandos are supported in\n  ** ``$save-hook'', ``$fcc-hook'' and ``$fcc-save-hook'', too.\n  */\n  { \"ispell\",\t\tDT_PATH, R_NONE, UL &Ispell, UL ISPELL },\n  /*\n  ** .pp\n  ** How to invoke ispell (GNU's spell-checking software).\n  */\n  { \"keep_flagged\", DT_BOOL, R_NONE, OPTKEEPFLAGGED, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, read messages marked as flagged will not be moved\n  ** from your spool mailbox to your $$mbox mailbox, or as a result of\n  ** a ``$mbox-hook'' command.\n  */\n  { \"locale\",\t\tDT_STR,  R_BOTH, UL &Locale, UL \"C\" },\n  /*\n  ** .pp\n  ** The locale used by \\fCstrftime(3)\\fP to format dates. Legal values are\n  ** the strings your system accepts for the locale environment variable \\fC$$$LC_TIME\\fP.\n  */\n  { \"mail_check\",\tDT_NUM,  R_NONE, UL &BuffyTimeout, 5 },\n  /*\n  ** .pp\n  ** This variable configures how often (in seconds) mutt should look for\n  ** new mail. Also see the $$timeout variable.\n  */\n  { \"mail_check_recent\",DT_BOOL, R_NONE, OPTMAILCHECKRECENT, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will only notify you about new mail that has been received\n  ** since the last time you opened the mailbox.  When \\fIunset\\fP, Mutt will notify you\n  ** if any new mail exists in the mailbox, regardless of whether you have visited it\n  ** recently.\n  ** .pp\n  ** When \\fI$$mark_old\\fP is set, Mutt does not consider the mailbox to contain new\n  ** mail if only old messages exist.\n  */\n  { \"mailcap_path\",\tDT_STR,\t R_NONE, UL &MailcapPath, 0 },\n  /*\n  ** .pp\n  ** This variable specifies which files to consult when attempting to\n  ** display MIME bodies not directly supported by Mutt.\n  */\n  { \"mailcap_sanitize\",\tDT_BOOL, R_NONE, OPTMAILCAPSANITIZE, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, mutt will restrict possible characters in mailcap % expandos\n  ** to a well-defined set of safe characters.  This is the safe setting,\n  ** but we are not sure it doesn't break some more advanced MIME stuff.\n  ** .pp\n  ** \\fBDON'T CHANGE THIS SETTING UNLESS YOU ARE REALLY SURE WHAT YOU ARE\n  ** DOING!\\fP\n  */\n#ifdef USE_HCACHE\n  { \"maildir_header_cache_verify\", DT_BOOL, R_NONE, OPTHCACHEVERIFY, 1 },\n  /*\n  ** .pp\n  ** Check for Maildir unaware programs other than mutt having modified maildir\n  ** files when the header cache is in use.  This incurs one \\fCstat(2)\\fP per\n  ** message every time the folder is opened (which can be very slow for NFS\n  ** folders).\n  */\n#endif\n  { \"maildir_trash\", DT_BOOL, R_NONE, OPTMAILDIRTRASH, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, messages marked as deleted will be saved with the maildir\n  ** trashed flag instead of unlinked.  \\fBNote:\\fP this only applies\n  ** to maildir-style mailboxes.  Setting it will have no effect on other\n  ** mailbox types.\n  */\n  { \"maildir_check_cur\", DT_BOOL, R_NONE, OPTMAILDIRCHECKCUR, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, mutt will poll both the new and cur directories of\n  ** a maildir folder for new messages.  This might be useful if other\n  ** programs interacting with the folder (e.g. dovecot) are moving new\n  ** messages to the cur directory.  Note that setting this option may\n  ** slow down polling for new messages in large folders, since mutt has\n  ** to scan all cur messages.\n  */\n  { \"mark_old\",\t\tDT_BOOL, R_BOTH, OPTMARKOLD, 1 },\n  /*\n  ** .pp\n  ** Controls whether or not mutt marks \\fInew\\fP \\fBunread\\fP\n  ** messages as \\fIold\\fP if you exit a mailbox without reading them.\n  ** With this option \\fIset\\fP, the next time you start mutt, the messages\n  ** will show up with an ``O'' next to them in the index menu,\n  ** indicating that they are old.\n  */\n  { \"markers\",\t\tDT_BOOL, R_PAGER, OPTMARKERS, 1 },\n  /*\n  ** .pp\n  ** Controls the display of wrapped lines in the internal pager. If set, a\n  ** ``+'' marker is displayed at the beginning of wrapped lines.\n  ** .pp\n  ** Also see the $$smart_wrap variable.\n  */\n  { \"mask\",\t\tDT_RX,\t R_NONE, UL &Mask, UL \"!^\\\\.[^.]\" },\n  /*\n  ** .pp\n  ** A regular expression used in the file browser, optionally preceded by\n  ** the \\fInot\\fP operator ``!''.  Only files whose names match this mask\n  ** will be shown. The match is always case-sensitive.\n  */\n  { \"mbox\",\t\tDT_PATH, R_BOTH, UL &Inbox, UL \"~/mbox\" },\n  /*\n  ** .pp\n  ** This specifies the folder into which read mail in your $$spoolfile\n  ** folder will be appended.\n  ** .pp\n  ** Also see the $$move variable.\n  */\n  { \"mbox_type\",\tDT_MAGIC,R_NONE, UL &DefaultMagic, M_MBOX },\n  /*\n  ** .pp\n  ** The default mailbox type used when creating new folders. May be any of\n  ** ``mbox'', ``MMDF'', ``MH'' and ``Maildir''. This is overridden by the\n  ** \\fC-m\\fP command-line option.\n  */\n  { \"menu_context\",\tDT_NUM,  R_NONE, UL &MenuContext, 0 },\n  /*\n  ** .pp\n  ** This variable controls the number of lines of context that are given\n  ** when scrolling through menus. (Similar to $$pager_context.)\n  */\n  { \"menu_move_off\",\tDT_BOOL, R_NONE, OPTMENUMOVEOFF, 1 },\n  /*\n  ** .pp\n  ** When \\fIunset\\fP, the bottom entry of menus will never scroll up past\n  ** the bottom of the screen, unless there are less entries than lines.\n  ** When \\fIset\\fP, the bottom entry may move off the bottom.\n  */\n  { \"menu_scroll\",\tDT_BOOL, R_NONE, OPTMENUSCROLL, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, menus will be scrolled up or down one line when you\n  ** attempt to move across a screen boundary.  If \\fIunset\\fP, the screen\n  ** is cleared and the next or previous page of the menu is displayed\n  ** (useful for slow links to avoid many redraws).\n  */\n#if defined(USE_IMAP) || defined(USE_POP)\n  { \"message_cache_clean\", DT_BOOL, R_NONE, OPTMESSAGECACHECLEAN, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, mutt will clean out obsolete entries from the message cache when\n  ** the mailbox is synchronized. You probably only want to set it\n  ** every once in a while, since it can be a little slow\n  ** (especially for large folders).\n  */\n  { \"message_cachedir\",\tDT_PATH,\tR_NONE,\tUL &MessageCachedir, 0 },\n  /*\n  ** .pp\n  ** Set this to a directory and mutt will cache copies of messages from\n  ** your IMAP and POP servers here. You are free to remove entries at any\n  ** time.\n  ** .pp\n  ** When setting this variable to a directory, mutt needs to fetch every\n  ** remote message only once and can perform regular expression searches\n  ** as fast as for local folders.\n  ** .pp\n  ** Also see the $$message_cache_clean variable.\n  */\n#endif\n  { \"message_format\",\tDT_STR,\t R_NONE, UL &MsgFmt, UL \"%s\" },\n  /*\n  ** .pp\n  ** This is the string displayed in the ``attachment'' menu for\n  ** attachments of type \\fCmessage/rfc822\\fP.  For a full listing of defined\n  ** \\fCprintf(3)\\fP-like sequences see the section on $$index_format.\n  */\n  { \"msg_format\",\tDT_SYN,  R_NONE, UL \"message_format\", 0 },\n  /*\n  */\n  { \"meta_key\",\t\tDT_BOOL, R_NONE, OPTMETAKEY, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, forces Mutt to interpret keystrokes with the high bit (bit 8)\n  ** set as if the user had pressed the Esc key and whatever key remains\n  ** after having the high bit removed.  For example, if the key pressed\n  ** has an ASCII value of \\fC0xf8\\fP, then this is treated as if the user had\n  ** pressed Esc then ``x''.  This is because the result of removing the\n  ** high bit from \\fC0xf8\\fP is \\fC0x78\\fP, which is the ASCII character\n  ** ``x''.\n  */\n  { \"metoo\",\t\tDT_BOOL, R_NONE, OPTMETOO, 0 },\n  /*\n  ** .pp\n  ** If \\fIunset\\fP, Mutt will remove your address (see the ``$alternates''\n  ** command) from the list of recipients when replying to a message.\n  */\n  { \"mh_purge\",\t\tDT_BOOL, R_NONE, OPTMHPURGE, 0 },\n  /*\n  ** .pp\n  ** When \\fIunset\\fP, mutt will mimic mh's behavior and rename deleted messages\n  ** to \\fI,<old file name>\\fP in mh folders instead of really deleting\n  ** them. This leaves the message on disk but makes programs reading the folder\n  ** ignore it. If the variable is \\fIset\\fP, the message files will simply be\n  ** deleted.\n  ** .pp\n  ** This option is similar to $$maildir_trash for Maildir folders.\n  */\n  { \"mh_seq_flagged\",\tDT_STR, R_NONE, UL &MhFlagged, UL \"flagged\" },\n  /*\n  ** .pp\n  ** The name of the MH sequence used for flagged messages.\n  */\n  { \"mh_seq_replied\",\tDT_STR, R_NONE, UL &MhReplied, UL \"replied\" },\n  /*\n  ** .pp\n  ** The name of the MH sequence used to tag replied messages.\n  */\n  { \"mh_seq_unseen\",\tDT_STR, R_NONE, UL &MhUnseen, UL \"unseen\" },\n  /*\n  ** .pp\n  ** The name of the MH sequence used for unseen messages.\n  */\n  { \"mime_forward\",\tDT_QUAD, R_NONE, OPT_MIMEFWD, M_NO },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, the message you are forwarding will be attached as a\n  ** separate \\fCmessage/rfc822\\fP MIME part instead of included in the main body of the\n  ** message.  This is useful for forwarding MIME messages so the receiver\n  ** can properly view the message as it was delivered to you. If you like\n  ** to switch between MIME and not MIME from mail to mail, set this\n  ** variable to ``ask-no'' or ``ask-yes''.\n  ** .pp\n  ** Also see $$forward_decode and $$mime_forward_decode.\n  */\n  { \"mime_forward_decode\", DT_BOOL, R_NONE, OPTMIMEFORWDECODE, 0 },\n  /*\n  ** .pp\n  ** Controls the decoding of complex MIME messages into \\fCtext/plain\\fP when\n  ** forwarding a message while $$mime_forward is \\fIset\\fP. Otherwise\n  ** $$forward_decode is used instead.\n  */\n  { \"mime_fwd\",\t\tDT_SYN,  R_NONE, UL \"mime_forward\", 0 },\n  /*\n  */\n  { \"mime_forward_rest\", DT_QUAD, R_NONE, OPT_MIMEFWDREST, M_YES },\n  /*\n  ** .pp\n  ** When forwarding multiple attachments of a MIME message from the attachment\n  ** menu, attachments which cannot be decoded in a reasonable manner will\n  ** be attached to the newly composed message if this option is \\fIset\\fP.\n  */\n#ifdef MIXMASTER\n  { \"mix_entry_format\", DT_STR,  R_NONE, UL &MixEntryFormat, UL \"%4n %c %-16s %a\" },\n  /*\n  ** .pp\n  ** This variable describes the format of a remailer line on the mixmaster\n  ** chain selection screen.  The following \\fCprintf(3)\\fP-like sequences are\n  ** supported:\n  ** .dl\n  ** .dt %n .dd The running number on the menu.\n  ** .dt %c .dd Remailer capabilities.\n  ** .dt %s .dd The remailer's short name.\n  ** .dt %a .dd The remailer's e-mail address.\n  ** .de\n  */\n  { \"mixmaster\",\tDT_PATH, R_NONE, UL &Mixmaster, UL MIXMASTER },\n  /*\n  ** .pp\n  ** This variable contains the path to the Mixmaster binary on your\n  ** system.  It is used with various sets of parameters to gather the\n  ** list of known remailers, and to finally send a message through the\n  ** mixmaster chain.\n  */\n#endif\n  { \"move\",\t\tDT_QUAD, R_NONE, OPT_MOVE, M_NO },\n  /*\n  ** .pp\n  ** Controls whether or not Mutt will move read messages\n  ** from your spool mailbox to your $$mbox mailbox, or as a result of\n  ** a ``$mbox-hook'' command.\n  */\n  { \"narrow_tree\",\tDT_BOOL, R_TREE|R_INDEX, OPTNARROWTREE, 0 },\n  /*\n  ** .pp\n  ** This variable, when \\fIset\\fP, makes the thread tree narrower, allowing\n  ** deeper threads to fit on the screen.\n  */\n#ifdef USE_SOCKET\n  { \"net_inc\",\tDT_NUM,\t R_NONE, UL &NetInc, 10 },\n  /*\n   ** .pp\n   ** Operations that expect to transfer a large amount of data over the\n   ** network will update their progress every $$net_inc kilobytes.\n   ** If set to 0, no progress messages will be displayed.\n   ** .pp\n   ** See also $$read_inc, $$write_inc and $$net_inc.\n   */\n#endif\n#ifdef USE_NOTMUCH\n  { \"nm_open_timeout\", DT_NUM, R_NONE, UL &NotmuchOpenTimeout, 5 },\n  /*\n   ** .pp\n   ** This variable specifies the timeout for database open in seconds.\n   */\n\n  { \"nm_default_uri\", DT_STR, R_NONE, UL &NotmuchDefaultUri, 0 },\n  /*\n   ** .pp\n   ** This variable specifies the default Notmuch database in format\n   ** notmuch://<absolute path>.\n   */\n\n  { \"nm_hidden_tags\", DT_STR, R_NONE, UL &NotmuchHiddenTags, UL \"unread,draft,flagged,passed,replied,attachment,signed,encrypted\" },\n  /*\n   ** .pp\n   ** This variable specifies private notmuch tags which should not be printed\n   ** on screen.\n   */\n  { \"nm_exclude_tags\", DT_STR,  R_NONE, UL &NotmuchExcludeTags, 0 },\n  /*\n   ** .pp\n   ** The messages tagged with these tags are excluded and not loaded\n   ** from notmuch DB to mutt unless specified explicitly.\n   */\n  { \"nm_unread_tag\", DT_STR, R_NONE, UL &NotmuchUnreadTag, UL \"unread\" },\n  /*\n   ** .pp\n   ** This variable specifies notmuch tag which is used for unread messages. The\n   ** variable is used to count unread messages in DB only. All other mutt commands\n   ** use standard (e.g. maildir) flags.\n   */\n  { \"nm_db_limit\", DT_NUM, R_NONE, UL &NotmuchDBLimit, 0 },\n  /*\n   ** .pp\n   ** This variable specifies the default limit used in notmuch queries.\n   */\n  { \"nm_query_type\", DT_STR, R_NONE, UL &NotmuchQueryType, UL \"messages\" },\n  /*\n   ** .pp\n   ** This variable specifies the default query type (threads or messages) used in notmuch queries.\n   */\n  { \"nm_record\", DT_BOOL, R_NONE, OPTNOTMUCHRECORD, 0 },\n  /*\n   ** .pp\n   ** This variable specifies if the mutt record should indexed by notmuch.\n   */\n  { \"nm_record_tags\", DT_STR, R_NONE, UL &NotmuchRecordTags, 0 },\n  /*\n   ** .pp\n   ** This variable specifies the default tags applied to messages stored to the mutt record.\n   */\n#endif\n  { \"pager\",\t\tDT_PATH, R_NONE, UL &Pager, UL \"builtin\" },\n  /*\n  ** .pp\n  ** This variable specifies which pager you would like to use to view\n  ** messages. The value ``builtin'' means to use the built-in pager, otherwise this\n  ** variable should specify the pathname of the external pager you would\n  ** like to use.\n  ** .pp\n  ** Using an external pager may have some disadvantages: Additional\n  ** keystrokes are necessary because you can't call mutt functions\n  ** directly from the pager, and screen resizes cause lines longer than\n  ** the screen width to be badly formatted in the help menu.\n  */\n  { \"pager_context\",\tDT_NUM,\t R_NONE, UL &PagerContext, 0 },\n  /*\n  ** .pp\n  ** This variable controls the number of lines of context that are given\n  ** when displaying the next or previous page in the internal pager.  By\n  ** default, Mutt will display the line after the last one on the screen\n  ** at the top of the next page (0 lines of context).\n  ** .pp\n  ** This variable also specifies the amount of context given for search\n  ** results. If positive, this many lines will be given before a match,\n  ** if 0, the match will be top-aligned.\n  */\n  { \"pager_format\",\tDT_STR,\t R_PAGER, UL &PagerFmt, UL \"-%Z- %C/%m: %-20.20n   %s%*  -- (%P)\" },\n  /*\n  ** .pp\n  ** This variable controls the format of the one-line message ``status''\n  ** displayed before each message in either the internal or an external\n  ** pager.  The valid sequences are listed in the $$index_format\n  ** section.\n  */\n  { \"pager_index_lines\",DT_NUM,\t R_PAGER, UL &PagerIndexLines, 0 },\n  /*\n  ** .pp\n  ** Determines the number of lines of a mini-index which is shown when in\n  ** the pager.  The current message, unless near the top or bottom of the\n  ** folder, will be roughly one third of the way down this mini-index,\n  ** giving the reader the context of a few messages before and after the\n  ** message.  This is useful, for example, to determine how many messages\n  ** remain to be read in the current thread.  One of the lines is reserved\n  ** for the status bar from the index, so a setting of 6\n  ** will only show 5 lines of the actual index.  A value of 0 results in\n  ** no index being shown.  If the number of messages in the current folder\n  ** is less than $$pager_index_lines, then the index will only use as\n  ** many lines as it needs.\n  */\n  { \"pager_stop\",\tDT_BOOL, R_NONE, OPTPAGERSTOP, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, the internal-pager will \\fBnot\\fP move to the next message\n  ** when you are at the end of a message and invoke the \\fC<next-page>\\fP\n  ** function.\n  */\n  { \"pgp_auto_decode\", DT_BOOL, R_NONE, OPTPGPAUTODEC, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, mutt will automatically attempt to decrypt traditional PGP\n  ** messages whenever the user performs an operation which ordinarily would\n  ** result in the contents of the message being operated on.  For example,\n  ** if the user displays a pgp-traditional message which has not been manually\n  ** checked with the \\fC$<check-traditional-pgp>\\fP function, mutt will automatically\n  ** check the message for traditional pgp.\n  */\n  { \"pgp_create_traditional\",\tDT_SYN, R_NONE, UL \"pgp_autoinline\", 0 },\n  { \"pgp_autoinline\",\t\tDT_BOOL, R_NONE, OPTPGPAUTOINLINE, 0 },\n  /*\n  ** .pp\n  ** This option controls whether Mutt generates old-style inline\n  ** (traditional) PGP encrypted or signed messages under certain\n  ** circumstances.  This can be overridden by use of the pgp menu,\n  ** when inline is not required.  The GPGME backend does not support\n  ** this option.\n  ** .pp\n  ** Note that Mutt might automatically use PGP/MIME for messages\n  ** which consist of more than a single MIME part.  Mutt can be\n  ** configured to ask before sending PGP/MIME messages when inline\n  ** (traditional) would not work.\n  ** .pp\n  ** Also see the $$pgp_mime_auto variable.\n  ** .pp\n  ** Also note that using the old-style PGP message format is \\fBstrongly\\fP\n  ** \\fBdeprecated\\fP.\n  ** (PGP only)\n  */\n  { \"pgp_check_exit\",\tDT_BOOL, R_NONE, OPTPGPCHECKEXIT, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, mutt will check the exit code of the PGP subprocess when\n  ** signing or encrypting.  A non-zero exit code means that the\n  ** subprocess failed.\n  ** (PGP only)\n  */\n  { \"pgp_clearsign_command\",\tDT_STR,\tR_NONE, UL &PgpClearSignCommand, 0 },\n  /*\n  ** .pp\n  ** This format is used to create an old-style ``clearsigned'' PGP\n  ** message.  Note that the use of this format is \\fBstrongly\\fP\n  ** \\fBdeprecated\\fP.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_decode_command\",       DT_STR, R_NONE, UL &PgpDecodeCommand, 0},\n  /*\n  ** .pp\n  ** This format strings specifies a command which is used to decode\n  ** application/pgp attachments.\n  ** .pp\n  ** The PGP command formats have their own set of \\fCprintf(3)\\fP-like sequences:\n  ** .dl\n  ** .dt %p .dd Expands to PGPPASSFD=0 when a pass phrase is needed, to an empty\n  **            string otherwise. Note: This may be used with a %? construct.\n  ** .dt %f .dd Expands to the name of a file containing a message.\n  ** .dt %s .dd Expands to the name of a file containing the signature part\n  ** .          of a \\fCmultipart/signed\\fP attachment when verifying it.\n  ** .dt %a .dd The value of $$pgp_sign_as.\n  ** .dt %r .dd One or more key IDs (or fingerprints if available).\n  ** .de\n  ** .pp\n  ** For examples on how to configure these formats for the various versions\n  ** of PGP which are floating around, see the pgp and gpg sample configuration files in\n  ** the \\fCsamples/\\fP subdirectory which has been installed on your system\n  ** alongside the documentation.\n  ** (PGP only)\n  */\n  { \"pgp_decrypt_command\", \tDT_STR, R_NONE, UL &PgpDecryptCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to decrypt a PGP encrypted message.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_decryption_okay\",\tDT_RX,  R_NONE, UL &PgpDecryptionOkay, 0 },\n  /*\n  ** .pp\n  ** If you assign text to this variable, then an encrypted PGP\n  ** message is only considered successfully decrypted if the output\n  ** from $$pgp_decrypt_command contains the text.  This is used to\n  ** protect against a spoofed encrypted message, with multipart/encrypted\n  ** headers but containing a block that is not actually encrypted.\n  ** (e.g. simply signed and ascii armored text).\n  ** (PGP only)\n  */\n  { \"pgp_encrypt_only_command\", DT_STR, R_NONE, UL &PgpEncryptOnlyCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to encrypt a body part without signing it.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_encrypt_sign_command\",\tDT_STR, R_NONE, UL &PgpEncryptSignCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to both sign and encrypt a body part.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_entry_format\", DT_STR,  R_NONE, UL &PgpEntryFormat, UL \"%4n %t%f %4l/0x%k %-4a %2c %u\" },\n  /*\n  ** .pp\n  ** This variable allows you to customize the PGP key selection menu to\n  ** your personal taste. This string is similar to $$index_format, but\n  ** has its own set of \\fCprintf(3)\\fP-like sequences:\n  ** .dl\n  ** .dt %n     .dd number\n  ** .dt %k     .dd key id\n  ** .dt %u     .dd user id\n  ** .dt %a     .dd algorithm\n  ** .dt %l     .dd key length\n  ** .dt %f     .dd flags\n  ** .dt %c     .dd capabilities\n  ** .dt %t     .dd trust/validity of the key-uid association\n  ** .dt %[<s>] .dd date of the key where <s> is an \\fCstrftime(3)\\fP expression\n  ** .de\n  ** .pp\n  ** (PGP only)\n  */\n  { \"pgp_export_command\", \tDT_STR, R_NONE, UL &PgpExportCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to export a public key from the user's\n  ** key ring.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_getkeys_command\",\tDT_STR, R_NONE, UL &PgpGetkeysCommand, 0},\n  /*\n  ** .pp\n  ** This command is invoked whenever Mutt needs to fetch the public key associated with\n  ** an email address.  Of the sequences supported by $$pgp_decode_command, %r is\n  ** the only \\fCprintf(3)\\fP-like sequence used with this format.  Note that\n  ** in this case, %r expands to the email address, not the public key ID (the key ID is\n  ** unknown, which is why Mutt is invoking this command).\n  ** (PGP only)\n  */\n  { \"pgp_good_sign\",\tDT_RX,  R_NONE, UL &PgpGoodSign, 0 },\n  /*\n  ** .pp\n  ** If you assign a text to this variable, then a PGP signature is only\n  ** considered verified if the output from $$pgp_verify_command contains\n  ** the text. Use this variable if the exit code from the command is 0\n  ** even for bad signatures.\n  ** (PGP only)\n  */\n  { \"pgp_ignore_subkeys\", DT_BOOL, R_NONE, OPTPGPIGNORESUB, 1},\n  /*\n  ** .pp\n  ** Setting this variable will cause Mutt to ignore OpenPGP subkeys. Instead,\n  ** the principal key will inherit the subkeys' capabilities.  \\fIUnset\\fP this\n  ** if you want to play interesting key selection games.\n  ** (PGP only)\n  */\n  { \"pgp_import_command\",\tDT_STR, R_NONE, UL &PgpImportCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to import a key from a message into\n  ** the user's public key ring.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_list_pubring_command\", DT_STR, R_NONE, UL &PgpListPubringCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to list the public key ring's contents.  The\n  ** output format must be analogous to the one used by\n  ** .ts\n  ** gpg --list-keys --with-colons --with-fingerprint\n  ** .te\n  ** .pp\n  ** This format is also generated by the \\fCpgpring\\fP utility which comes\n  ** with mutt.\n  ** .pp\n  ** Note: gpg's \\fCfixed-list-mode\\fP option should not be used.  It\n  ** produces a different date format which may result in mutt showing\n  ** incorrect key generation dates.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_list_secring_command\",\tDT_STR, R_NONE, UL &PgpListSecringCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to list the secret key ring's contents.  The\n  ** output format must be analogous to the one used by:\n  ** .ts\n  ** gpg --list-keys --with-colons --with-fingerprint\n  ** .te\n  ** .pp\n  ** This format is also generated by the \\fCpgpring\\fP utility which comes\n  ** with mutt.\n  ** .pp\n  ** Note: gpg's \\fCfixed-list-mode\\fP option should not be used.  It\n  ** produces a different date format which may result in mutt showing\n  ** incorrect key generation dates.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_long_ids\",\tDT_BOOL, R_NONE, OPTPGPLONGIDS, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, use 64 bit PGP key IDs, if \\fIunset\\fP use the normal 32 bit key IDs.\n  ** NOTE: Internally, Mutt has transitioned to using fingerprints (or long key IDs\n  ** as a fallback).  This option now only controls the display of key IDs\n  ** in the key selection menu and a few other places.\n  ** (PGP only)\n  */\n  { \"pgp_mime_auto\", DT_QUAD, R_NONE, OPT_PGPMIMEAUTO, M_ASKYES },\n  /*\n  ** .pp\n  ** This option controls whether Mutt will prompt you for\n  ** automatically sending a (signed/encrypted) message using\n  ** PGP/MIME when inline (traditional) fails (for any reason).\n  ** .pp\n  ** Also note that using the old-style PGP message format is \\fBstrongly\\fP\n  ** \\fBdeprecated\\fP.\n  ** (PGP only)\n  */\n  { \"pgp_auto_traditional\",\tDT_SYN, R_NONE, UL \"pgp_replyinline\", 0 },\n  { \"pgp_replyinline\",\t\tDT_BOOL, R_NONE, OPTPGPREPLYINLINE, 0 },\n  /*\n  ** .pp\n  ** Setting this variable will cause Mutt to always attempt to\n  ** create an inline (traditional) message when replying to a\n  ** message which is PGP encrypted/signed inline.  This can be\n  ** overridden by use of the pgp menu, when inline is not\n  ** required.  This option does not automatically detect if the\n  ** (replied-to) message is inline; instead it relies on Mutt\n  ** internals for previously checked/flagged messages.\n  ** .pp\n  ** Note that Mutt might automatically use PGP/MIME for messages\n  ** which consist of more than a single MIME part.  Mutt can be\n  ** configured to ask before sending PGP/MIME messages when inline\n  ** (traditional) would not work.\n  ** .pp\n  ** Also see the $$pgp_mime_auto variable.\n  ** .pp\n  ** Also note that using the old-style PGP message format is \\fBstrongly\\fP\n  ** \\fBdeprecated\\fP.\n  ** (PGP only)\n  **\n  */\n  { \"pgp_retainable_sigs\", DT_BOOL, R_NONE, OPTPGPRETAINABLESIG, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, signed and encrypted messages will consist of nested\n  ** \\fCmultipart/signed\\fP and \\fCmultipart/encrypted\\fP body parts.\n  ** .pp\n  ** This is useful for applications like encrypted and signed mailing\n  ** lists, where the outer layer (\\fCmultipart/encrypted\\fP) can be easily\n  ** removed, while the inner \\fCmultipart/signed\\fP part is retained.\n  ** (PGP only)\n  */\n  { \"pgp_show_unusable\", DT_BOOL, R_NONE, OPTPGPSHOWUNUSABLE, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, mutt will display non-usable keys on the PGP key selection\n  ** menu.  This includes keys which have been revoked, have expired, or\n  ** have been marked as ``disabled'' by the user.\n  ** (PGP only)\n  */\n  { \"pgp_sign_as\",\tDT_STR,\t R_NONE, UL &PgpSignAs, 0 },\n  /*\n  ** .pp\n  ** If you have more than one key pair, this option allows you to specify\n  ** which of your private keys to use.  It is recommended that you use the\n  ** keyid form to specify your key (e.g. \\fC0x00112233\\fP).\n  ** (PGP only)\n  */\n  { \"pgp_sign_command\",\t\tDT_STR, R_NONE, UL &PgpSignCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to create the detached PGP signature for a\n  ** \\fCmultipart/signed\\fP PGP/MIME body part.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_sort_keys\",\tDT_SORT|DT_SORT_KEYS, R_NONE, UL &PgpSortKeys, SORT_ADDRESS },\n  /*\n  ** .pp\n  ** Specifies how the entries in the pgp menu are sorted. The\n  ** following are legal values:\n  ** .dl\n  ** .dt address .dd sort alphabetically by user id\n  ** .dt keyid   .dd sort alphabetically by key id\n  ** .dt date    .dd sort by key creation date\n  ** .dt trust   .dd sort by the trust of the key\n  ** .de\n  ** .pp\n  ** If you prefer reverse order of the above values, prefix it with\n  ** ``reverse-''.\n  ** (PGP only)\n  */\n  { \"pgp_strict_enc\",\tDT_BOOL, R_NONE, OPTPGPSTRICTENC, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, Mutt will automatically encode PGP/MIME signed messages as\n  ** quoted-printable.  Please note that unsetting this variable may\n  ** lead to problems with non-verifyable PGP signatures, so only change\n  ** this if you know what you are doing.\n  ** (PGP only)\n  */\n  { \"pgp_timeout\",\tDT_NUM,\t R_NONE, UL &PgpTimeout, 300 },\n  /*\n  ** .pp\n  ** The number of seconds after which a cached passphrase will expire if\n  ** not used.\n  ** (PGP only)\n  */\n  { \"pgp_use_gpg_agent\", DT_BOOL, R_NONE, OPTUSEGPGAGENT, 0},\n  /*\n  ** .pp\n  ** If \\fIset\\fP, mutt will use a possibly-running \\fCgpg-agent(1)\\fP process.\n  ** Note that as of version 2.1, GnuPG no longer exports GPG_AGENT_INFO, so\n  ** mutt no longer verifies if the agent is running.\n  ** (PGP only)\n  */\n  { \"pgp_verify_command\", \tDT_STR, R_NONE, UL &PgpVerifyCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to verify PGP signatures.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pgp_verify_key_command\",\tDT_STR, R_NONE, UL &PgpVerifyKeyCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to verify key information from the key selection\n  ** menu.\n  ** .pp\n  ** This is a format string, see the $$pgp_decode_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (PGP only)\n  */\n  { \"pipe_decode\",\tDT_BOOL, R_NONE, OPTPIPEDECODE, 0 },\n  /*\n  ** .pp\n  ** Used in connection with the \\fC<pipe-message>\\fP command.  When \\fIunset\\fP,\n  ** Mutt will pipe the messages without any preprocessing. When \\fIset\\fP, Mutt\n  ** will weed headers and will attempt to decode the messages\n  ** first.\n  */\n  { \"pipe_sep\",\t\tDT_STR,\t R_NONE, UL &PipeSep, UL \"\\n\" },\n  /*\n  ** .pp\n  ** The separator to add between messages when piping a list of tagged\n  ** messages to an external Unix command.\n  */\n  { \"pipe_split\",\tDT_BOOL, R_NONE, OPTPIPESPLIT, 0 },\n  /*\n  ** .pp\n  ** Used in connection with the \\fC<pipe-message>\\fP function following\n  ** \\fC<tag-prefix>\\fP.  If this variable is \\fIunset\\fP, when piping a list of\n  ** tagged messages Mutt will concatenate the messages and will pipe them\n  ** all concatenated.  When \\fIset\\fP, Mutt will pipe the messages one by one.\n  ** In both cases the messages are piped in the current sorted order,\n  ** and the $$pipe_sep separator is added after each message.\n  */\n#ifdef USE_POP\n  { \"pop_auth_try_all\",\tDT_BOOL, R_NONE, OPTPOPAUTHTRYALL, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, Mutt will try all available authentication methods.\n  ** When \\fIunset\\fP, Mutt will only fall back to other authentication\n  ** methods if the previous methods are unavailable. If a method is\n  ** available but authentication fails, Mutt will not connect to the POP server.\n  */\n  { \"pop_authenticators\", DT_STR, R_NONE, UL &PopAuthenticators, UL 0 },\n  /*\n  ** .pp\n  ** This is a colon-delimited list of authentication methods mutt may\n  ** attempt to use to log in to an POP server, in the order mutt should\n  ** try them.  Authentication methods are either ``user'', ``apop'' or any\n  ** SASL mechanism, e.g. ``digest-md5'', ``gssapi'' or ``cram-md5''.\n  ** This option is case-insensitive. If this option is \\fIunset\\fP\n  ** (the default) mutt will try all available methods, in order from\n  ** most-secure to least-secure.\n  ** .pp\n  ** Example:\n  ** .ts\n  ** set pop_authenticators=\"digest-md5:apop:user\"\n  ** .te\n  */\n  { \"pop_checkinterval\", DT_NUM, R_NONE, UL &PopCheckTimeout, 60 },\n  /*\n  ** .pp\n  ** This variable configures how often (in seconds) mutt should look for\n  ** new mail in the currently selected mailbox if it is a POP mailbox.\n  */\n  { \"pop_delete\",\tDT_QUAD, R_NONE, OPT_POPDELETE, M_ASKNO },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, Mutt will delete successfully downloaded messages from the POP\n  ** server when using the \\fC$<fetch-mail>\\fP function.  When \\fIunset\\fP, Mutt will\n  ** download messages but also leave them on the POP server.\n  */\n  { \"pop_host\",\t\tDT_STR,\t R_NONE, UL &PopHost, UL \"\" },\n  /*\n  ** .pp\n  ** The name of your POP server for the \\fC$<fetch-mail>\\fP function.  You\n  ** can also specify an alternative port, username and password, i.e.:\n  ** .ts\n  ** [pop[s]://][username[:password]@]popserver[:port]\n  ** .te\n  ** .pp\n  ** where ``[...]'' denotes an optional part.\n  */\n  { \"pop_last\",\t\tDT_BOOL, R_NONE, OPTPOPLAST, 0 },\n  /*\n  ** .pp\n  ** If this variable is \\fIset\\fP, mutt will try to use the ``\\fCLAST\\fP'' POP command\n  ** for retrieving only unread messages from the POP server when using\n  ** the \\fC$<fetch-mail>\\fP function.\n  */\n  { \"pop_pass\",\t\tDT_STR,\t R_NONE, UL &PopPass, UL \"\" },\n  /*\n  ** .pp\n  ** Specifies the password for your POP account.  If \\fIunset\\fP, Mutt will\n  ** prompt you for your password when you open a POP mailbox.\n  ** .pp\n  ** \\fBWarning\\fP: you should only use this option when you are on a\n  ** fairly secure machine, because the superuser can read your muttrc\n  ** even if you are the only one who can read the file.\n  */\n  { \"pop_reconnect\",\tDT_QUAD, R_NONE, OPT_POPRECONNECT, M_ASKYES },\n  /*\n  ** .pp\n  ** Controls whether or not Mutt will try to reconnect to the POP server if\n  ** the connection is lost.\n  */\n  { \"pop_user\",\t\tDT_STR,\t R_NONE, UL &PopUser, 0 },\n  /*\n  ** .pp\n  ** Your login name on the POP server.\n  ** .pp\n  ** This variable defaults to your user name on the local machine.\n  */\n#endif /* USE_POP */\n  { \"post_indent_string\",DT_STR, R_NONE, UL &PostIndentString, UL \"\" },\n  /*\n  ** .pp\n  ** Similar to the $$attribution variable, Mutt will append this\n  ** string after the inclusion of a message which is being replied to.\n  */\n  { \"post_indent_str\",  DT_SYN,  R_NONE, UL \"post_indent_string\", 0 },\n  /*\n  */\n  { \"postpone\",\t\tDT_QUAD, R_NONE, OPT_POSTPONE, M_ASKYES },\n  /*\n  ** .pp\n  ** Controls whether or not messages are saved in the $$postponed\n  ** mailbox when you elect not to send immediately.\n  ** .pp\n  ** Also see the $$recall variable.\n  */\n  { \"postponed\",\tDT_PATH, R_INDEX, UL &Postponed, UL \"~/postponed\" },\n  /*\n  ** .pp\n  ** Mutt allows you to indefinitely ``$postpone sending a message'' which\n  ** you are editing.  When you choose to postpone a message, Mutt saves it\n  ** in the mailbox specified by this variable.\n  ** .pp\n  ** Also see the $$postpone variable.\n  */\n  { \"postpone_encrypt\",    DT_BOOL, R_NONE, OPTPOSTPONEENCRYPT, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, postponed messages that are marked for encryption will be\n  ** encrypted using the key in $$postpone_encrypt_as before saving.\n  ** (Crypto only)\n  */\n  { \"postpone_encrypt_as\", DT_STR,  R_NONE, UL &PostponeEncryptAs, 0 },\n  /*\n  ** .pp\n  ** This is the key used to encrypt postponed messages.  It should be in\n  ** keyid or fingerprint form (e.g. 0x00112233 for PGP or the\n  ** hash-value that OpenSSL generates for S/MIME).\n  ** (Crypto only)\n  */\n#ifdef USE_SOCKET\n  { \"preconnect\",\tDT_STR, R_NONE, UL &Preconnect, UL 0},\n  /*\n  ** .pp\n  ** If \\fIset\\fP, a shell command to be executed if mutt fails to establish\n  ** a connection to the server. This is useful for setting up secure\n  ** connections, e.g. with \\fCssh(1)\\fP. If the command returns a  nonzero\n  ** status, mutt gives up opening the server. Example:\n  ** .ts\n  ** set preconnect=\"ssh -f -q -L 1234:mailhost.net:143 mailhost.net \\(rs\n  ** sleep 20 < /dev/null > /dev/null\"\n  ** .te\n  ** .pp\n  ** Mailbox ``foo'' on ``mailhost.net'' can now be reached\n  ** as ``{localhost:1234}foo''.\n  ** .pp\n  ** Note: For this example to work, you must be able to log in to the\n  ** remote machine without having to enter a password.\n  */\n#endif /* USE_SOCKET */\n  { \"print\",\t\tDT_QUAD, R_NONE, OPT_PRINT, M_ASKNO },\n  /*\n  ** .pp\n  ** Controls whether or not Mutt really prints messages.\n  ** This is set to ``ask-no'' by default, because some people\n  ** accidentally hit ``p'' often.\n  */\n  { \"print_command\",\tDT_PATH, R_NONE, UL &PrintCmd, UL \"lpr\" },\n  /*\n  ** .pp\n  ** This specifies the command pipe that should be used to print messages.\n  */\n  { \"print_cmd\",\tDT_SYN,  R_NONE, UL \"print_command\", 0 },\n  /*\n  */\n  { \"print_decode\",\tDT_BOOL, R_NONE, OPTPRINTDECODE, 1 },\n  /*\n  ** .pp\n  ** Used in connection with the \\fC<print-message>\\fP command.  If this\n  ** option is \\fIset\\fP, the message is decoded before it is passed to the\n  ** external command specified by $$print_command.  If this option\n  ** is \\fIunset\\fP, no processing will be applied to the message when\n  ** printing it.  The latter setting may be useful if you are using\n  ** some advanced printer filter which is able to properly format\n  ** e-mail messages for printing.\n  */\n  { \"print_split\",\tDT_BOOL, R_NONE, OPTPRINTSPLIT,  0 },\n  /*\n  ** .pp\n  ** Used in connection with the \\fC<print-message>\\fP command.  If this option\n  ** is \\fIset\\fP, the command specified by $$print_command is executed once for\n  ** each message which is to be printed.  If this option is \\fIunset\\fP,\n  ** the command specified by $$print_command is executed only once, and\n  ** all the messages are concatenated, with a form feed as the message\n  ** separator.\n  ** .pp\n  ** Those who use the \\fCenscript\\fP(1) program's mail-printing mode will\n  ** most likely want to \\fIset\\fP this option.\n  */\n  { \"prompt_after\",\tDT_BOOL, R_NONE, OPTPROMPTAFTER, 1 },\n  /*\n  ** .pp\n  ** If you use an \\fIexternal\\fP $$pager, setting this variable will\n  ** cause Mutt to prompt you for a command when the pager exits rather\n  ** than returning to the index menu.  If \\fIunset\\fP, Mutt will return to the\n  ** index menu when the external pager exits.\n  */\n  { \"query_command\",\tDT_PATH, R_NONE, UL &QueryCmd, UL \"\" },\n  /*\n  ** .pp\n  ** This specifies the command Mutt will use to make external address\n  ** queries.  The string may contain a ``%s'', which will be substituted\n  ** with the query string the user types.  Mutt will add quotes around the\n  ** string substituted for ``%s'' automatically according to shell quoting\n  ** rules, so you should avoid adding your own.  If no ``%s'' is found in\n  ** the string, Mutt will append the user's query to the end of the string.\n  ** See ``$query'' for more information.\n  */\n  { \"query_format\",\tDT_STR, R_NONE, UL &QueryFormat, UL \"%4c %t %-25.25a %-25.25n %?e?(%e)?\" },\n  /*\n  ** .pp\n  ** This variable describes the format of the ``query'' menu. The\n  ** following \\fCprintf(3)\\fP-style sequences are understood:\n  ** .dl\n  ** .dt %a  .dd destination address\n  ** .dt %c  .dd current entry number\n  ** .dt %e  .dd extra information *\n  ** .dt %n  .dd destination name\n  ** .dt %t  .dd ``*'' if current entry is tagged, a space otherwise\n  ** .dt %>X .dd right justify the rest of the string and pad with ``X''\n  ** .dt %|X .dd pad to the end of the line with ``X''\n  ** .dt %*X .dd soft-fill with character ``X'' as pad\n  ** .de\n  ** .pp\n  ** For an explanation of ``soft-fill'', see the $$index_format documentation.\n  ** .pp\n  ** * = can be optionally printed if nonzero, see the $$status_format documentation.\n  */\n  { \"quit\",\t\tDT_QUAD, R_NONE, OPT_QUIT, M_YES },\n  /*\n  ** .pp\n  ** This variable controls whether ``quit'' and ``exit'' actually quit\n  ** from mutt.  If this option is \\fIset\\fP, they do quit, if it is \\fIunset\\fP, they\n  ** have no effect, and if it is set to \\fIask-yes\\fP or \\fIask-no\\fP, you are\n  ** prompted for confirmation when you try to quit.\n  */\n  { \"quote_regexp\",\tDT_RX,\t R_PAGER, UL &QuoteRegexp, UL \"^([ \\t]*[|>:}#])+\" },\n  /*\n  ** .pp\n  ** A regular expression used in the internal pager to determine quoted\n  ** sections of text in the body of a message. Quoted text may be filtered\n  ** out using the \\fC<toggle-quoted>\\fP command, or colored according to the\n  ** ``color quoted'' family of directives.\n  ** .pp\n  ** Higher levels of quoting may be colored differently (``color quoted1'',\n  ** ``color quoted2'', etc.). The quoting level is determined by removing\n  ** the last character from the matched text and recursively reapplying\n  ** the regular expression until it fails to produce a match.\n  ** .pp\n  ** Match detection may be overridden by the $$smileys regular expression.\n  */\n  { \"read_inc\",\t\tDT_NUM,\t R_NONE, UL &ReadInc, 10 },\n  /*\n  ** .pp\n  ** If set to a value greater than 0, Mutt will display which message it\n  ** is currently on when reading a mailbox or when performing search actions\n  ** such as search and limit. The message is printed after\n  ** this many messages have been read or searched (e.g., if set to 25, Mutt will\n  ** print a message when it is at message 25, and then again when it gets\n  ** to message 50).  This variable is meant to indicate progress when\n  ** reading or searching large mailboxes which may take some time.\n  ** When set to 0, only a single message will appear before the reading\n  ** the mailbox.\n  ** .pp\n  ** Also see the $$write_inc, $$net_inc and $$time_inc variables and the\n  ** ``$tuning'' section of the manual for performance considerations.\n  */\n  { \"read_only\",\tDT_BOOL, R_NONE, OPTREADONLY, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, all folders are opened in read-only mode.\n  */\n  { \"realname\",\t\tDT_STR,\t R_BOTH, UL &Realname, 0 },\n  /*\n  ** .pp\n  ** This variable specifies what ``real'' or ``personal'' name should be used\n  ** when sending messages.\n  ** .pp\n  ** By default, this is the GECOS field from \\fC/etc/passwd\\fP.  Note that this\n  ** variable will \\fInot\\fP be used when the user has set a real name\n  ** in the $$from variable.\n  */\n  { \"recall\",\t\tDT_QUAD, R_NONE, OPT_RECALL, M_ASKYES },\n  /*\n  ** .pp\n  ** Controls whether or not Mutt recalls postponed messages\n  ** when composing a new message.\n  ** .pp\n  ** Setting this variable to \\fIyes\\fP is not generally useful, and thus not\n  ** recommended.  Note that the \\fC<recall-message>\\fP function can be used\n  ** to manually recall postponed messages.\n  ** .pp\n  ** Also see $$postponed variable.\n  */\n  { \"record\",\t\tDT_PATH, R_NONE, UL &Outbox, UL \"~/sent\" },\n  /*\n  ** .pp\n  ** This specifies the file into which your outgoing messages should be\n  ** appended.  (This is meant as the primary method for saving a copy of\n  ** your messages, but another way to do this is using the ``$my_hdr''\n  ** command to create a ``Bcc:'' field with your email address in it.)\n  ** .pp\n  ** The value of \\fI$$record\\fP is overridden by the $$force_name and\n  ** $$save_name variables, and the ``$fcc-hook'' command.\n  */\n  { \"reflow_space_quotes\",\tDT_BOOL, R_NONE, OPTREFLOWSPACEQUOTES, 1 },\n  /*\n  ** .pp\n  ** This option controls how quotes from format=flowed messages are displayed\n  ** in the pager and when replying (with $$text_flowed \\fIunset\\fP).\n  ** When set, this option adds spaces after each level of quote marks, turning\n  ** \">>>foo\" into \"> > > foo\".\n  ** .pp\n  ** \\fBNote:\\fP If $$reflow_text is \\fIunset\\fP, this option has no effect.\n  ** Also, this option does not affect replies when $$text_flowed is \\fIset\\fP.\n  */\n  { \"reflow_text\",\tDT_BOOL, R_NONE, OPTREFLOWTEXT, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will reformat paragraphs in text/plain\n  ** parts marked format=flowed.  If \\fIunset\\fP, Mutt will display paragraphs\n  ** unaltered from how they appear in the message body.  See RFC3676 for\n  ** details on the \\fIformat=flowed\\fP format.\n  ** .pp\n  ** Also see $$reflow_wrap, and $$wrap.\n  */\n  { \"reflow_wrap\",\tDT_NUM,\tR_NONE, UL &ReflowWrap, 78 },\n  /*\n  ** .pp\n  ** This variable controls the maximum paragraph width when reformatting text/plain\n  ** parts when $$reflow_text is \\fIset\\fP.  When the value is 0, paragraphs will\n  ** be wrapped at the terminal's right margin.  A positive value sets the\n  ** paragraph width relative to the left margin.  A negative value set the\n  ** paragraph width relative to the right margin.\n  ** .pp\n  ** Also see $$wrap.\n  */\n  { \"reply_regexp\",\tDT_RX,\t R_INDEX|R_RESORT, UL &ReplyRegexp, UL \"^(re([\\\\[0-9\\\\]+])*|aw):[ \\t]*\" },\n  /*\n  ** .pp\n  ** A regular expression used to recognize reply messages when threading\n  ** and replying. The default value corresponds to the English \"Re:\" and\n  ** the German \"Aw:\".\n  */\n  { \"reply_self\",\tDT_BOOL, R_NONE, OPTREPLYSELF, 0 },\n  /*\n  ** .pp\n  ** If \\fIunset\\fP and you are replying to a message sent by you, Mutt will\n  ** assume that you want to reply to the recipients of that message rather\n  ** than to yourself.\n  ** .pp\n  ** Also see the ``$alternates'' command.\n  */\n  { \"reply_to\",\t\tDT_QUAD, R_NONE, OPT_REPLYTO, M_ASKYES },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, when replying to a message, Mutt will use the address listed\n  ** in the Reply-to: header as the recipient of the reply.  If \\fIunset\\fP,\n  ** it will use the address in the From: header field instead.  This\n  ** option is useful for reading a mailing list that sets the Reply-To:\n  ** header field to the list address and you want to send a private\n  ** message to the author of a message.\n  */\n  { \"resolve\",\t\tDT_BOOL, R_NONE, OPTRESOLVE, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, the cursor will be automatically advanced to the next\n  ** (possibly undeleted) message whenever a command that modifies the\n  ** current message is executed.\n  */\n  { \"resume_draft_files\", DT_BOOL, R_NONE, OPTRESUMEDRAFTFILES, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, draft files (specified by \\fC-H\\fP on the command\n  ** line) are processed similarly to when resuming a postponed\n  ** message.  Recipients are not prompted for; send-hooks are not\n  ** evaluated; no alias expansion takes place; user-defined headers\n  ** and signatures are not added to the message.\n  */\n  { \"resume_edited_draft_files\", DT_BOOL, R_NONE, OPTRESUMEEDITEDDRAFTFILES, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, draft files previously edited (via \\fC-E -H\\fP on\n  ** the command line) will have $$resume_draft_files automatically\n  ** set when they are used as a draft file again.\n  ** .pp\n  ** The first time a draft file is saved, mutt will add a header,\n  ** X-Mutt-Resume-Draft to the saved file.  The next time the draft\n  ** file is read in, if mutt sees the header, it will set\n  ** $$resume_draft_files.\n  ** .pp\n  ** This option is designed to prevent multiple signatures,\n  ** user-defined headers, and other processing effects from being\n  ** made multiple times to the draft file.\n  */\n  { \"reverse_alias\",\tDT_BOOL, R_BOTH, OPTREVALIAS, 0 },\n  /*\n  ** .pp\n  ** This variable controls whether or not Mutt will display the ``personal''\n  ** name from your aliases in the index menu if it finds an alias that\n  ** matches the message's sender.  For example, if you have the following\n  ** alias:\n  ** .ts\n  ** alias juser abd30425@somewhere.net (Joe User)\n  ** .te\n  ** .pp\n  ** and then you receive mail which contains the following header:\n  ** .ts\n  ** From: abd30425@somewhere.net\n  ** .te\n  ** .pp\n  ** It would be displayed in the index menu as ``Joe User'' instead of\n  ** ``abd30425@somewhere.net.''  This is useful when the person's e-mail\n  ** address is not human friendly.\n  */\n  { \"reverse_name\",\tDT_BOOL, R_BOTH, OPTREVNAME, 0 },\n  /*\n  ** .pp\n  ** It may sometimes arrive that you receive mail to a certain machine,\n  ** move the messages to another machine, and reply to some the messages\n  ** from there.  If this variable is \\fIset\\fP, the default \\fIFrom:\\fP line of\n  ** the reply messages is built using the address where you received the\n  ** messages you are replying to \\fBif\\fP that address matches your\n  ** ``$alternates''.  If the variable is \\fIunset\\fP, or the address that would be\n  ** used doesn't match your ``$alternates'', the \\fIFrom:\\fP line will use\n  ** your address on the current machine.\n  ** .pp\n  ** Also see the ``$alternates'' command.\n  */\n  { \"reverse_realname\",\tDT_BOOL, R_BOTH, OPTREVREAL, 1 },\n  /*\n  ** .pp\n  ** This variable fine-tunes the behavior of the $$reverse_name feature.\n  ** When it is \\fIset\\fP, mutt will use the address from incoming messages as-is,\n  ** possibly including eventual real names.  When it is \\fIunset\\fP, mutt will\n  ** override any such real names with the setting of the $$realname variable.\n  */\n  { \"rfc2047_parameters\", DT_BOOL, R_NONE, OPTRFC2047PARAMS, 0 },\n  /*\n  ** .pp\n  ** When this variable is \\fIset\\fP, Mutt will decode RFC2047-encoded MIME\n  ** parameters. You want to set this variable when mutt suggests you\n  ** to save attachments to files named like:\n  ** .ts\n  ** =?iso-8859-1?Q?file=5F=E4=5F991116=2Ezip?=\n  ** .te\n  ** .pp\n  ** When this variable is \\fIset\\fP interactively, the change won't be\n  ** active until you change folders.\n  ** .pp\n  ** Note that this use of RFC2047's encoding is explicitly\n  ** prohibited by the standard, but nevertheless encountered in the\n  ** wild.\n  ** .pp\n  ** Also note that setting this parameter will \\fInot\\fP have the effect\n  ** that mutt \\fIgenerates\\fP this kind of encoding.  Instead, mutt will\n  ** unconditionally use the encoding specified in RFC2231.\n  */\n  { \"save_address\",\tDT_BOOL, R_NONE, OPTSAVEADDRESS, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, mutt will take the sender's full address when choosing a\n  ** default folder for saving a mail. If $$save_name or $$force_name\n  ** is \\fIset\\fP too, the selection of the Fcc folder will be changed as well.\n  */\n  { \"save_empty\",\tDT_BOOL, R_NONE, OPTSAVEEMPTY, 1 },\n  /*\n  ** .pp\n  ** When \\fIunset\\fP, mailboxes which contain no saved messages will be removed\n  ** when closed (the exception is $$spoolfile which is never removed).\n  ** If \\fIset\\fP, mailboxes are never removed.\n  ** .pp\n  ** \\fBNote:\\fP This only applies to mbox and MMDF folders, Mutt does not\n  ** delete MH and Maildir directories.\n  */\n  { \"save_history\",     DT_NUM,  R_NONE, UL &SaveHist, 0 },\n  /*\n  ** .pp\n  ** This variable controls the size of the history (per category) saved in the\n  ** $$history_file file.\n  */\n  { \"save_name\",\tDT_BOOL, R_NONE, OPTSAVENAME, 0 },\n  /*\n  ** .pp\n  ** This variable controls how copies of outgoing messages are saved.\n  ** When \\fIset\\fP, a check is made to see if a mailbox specified by the\n  ** recipient address exists (this is done by searching for a mailbox in\n  ** the $$folder directory with the \\fIusername\\fP part of the\n  ** recipient address).  If the mailbox exists, the outgoing message will\n  ** be saved to that mailbox, otherwise the message is saved to the\n  ** $$record mailbox.\n  ** .pp\n  ** Also see the $$force_name variable.\n  */\n  { \"score\", \t\tDT_BOOL, R_NONE, OPTSCORE, 1 },\n  /*\n  ** .pp\n  ** When this variable is \\fIunset\\fP, scoring is turned off.  This can\n  ** be useful to selectively disable scoring for certain folders when the\n  ** $$score_threshold_delete variable and related are used.\n  **\n  */\n  { \"score_threshold_delete\", DT_NUM, R_NONE, UL &ScoreThresholdDelete, UL -1 },\n  /*\n  ** .pp\n  ** Messages which have been assigned a score equal to or lower than the value\n  ** of this variable are automatically marked for deletion by mutt.  Since\n  ** mutt scores are always greater than or equal to zero, the default setting\n  ** of this variable will never mark a message for deletion.\n  */\n  { \"score_threshold_flag\", DT_NUM, R_NONE, UL &ScoreThresholdFlag, 9999 },\n  /*\n  ** .pp\n  ** Messages which have been assigned a score greater than or equal to this\n  ** variable's value are automatically marked \"flagged\".\n  */\n  { \"score_threshold_read\", DT_NUM, R_NONE, UL &ScoreThresholdRead, UL -1 },\n  /*\n  ** .pp\n  ** Messages which have been assigned a score equal to or lower than the value\n  ** of this variable are automatically marked as read by mutt.  Since\n  ** mutt scores are always greater than or equal to zero, the default setting\n  ** of this variable will never mark a message read.\n  */\n  { \"search_context\",\tDT_NUM,  R_NONE, UL &SearchContext, UL 0 },\n  /*\n  ** .pp\n  ** For the pager, this variable specifies the number of lines shown\n  ** before search results. By default, search results will be top-aligned.\n  */\n  { \"send_charset\",\tDT_STR,  R_NONE, UL &SendCharset, UL \"us-ascii:iso-8859-1:utf-8\" },\n  /*\n  ** .pp\n  ** A colon-delimited list of character sets for outgoing messages. Mutt will use the\n  ** first character set into which the text can be converted exactly.\n  ** If your $$charset is not ``iso-8859-1'' and recipients may not\n  ** understand ``UTF-8'', it is advisable to include in the list an\n  ** appropriate widely used standard character set (such as\n  ** ``iso-8859-2'', ``koi8-r'' or ``iso-2022-jp'') either instead of or after\n  ** ``iso-8859-1''.\n  ** .pp\n  ** In case the text cannot be converted into one of these exactly,\n  ** mutt uses $$charset as a fallback.\n  */\n  { \"sendmail\",\t\tDT_PATH, R_NONE, UL &Sendmail, UL SENDMAIL \" -oem -oi\" },\n  /*\n  ** .pp\n  ** Specifies the program and arguments used to deliver mail sent by Mutt.\n  ** Mutt expects that the specified program interprets additional\n  ** arguments as recipient addresses.\n  */\n  { \"sendmail_wait\",\tDT_NUM,  R_NONE, UL &SendmailWait, 0 },\n  /*\n  ** .pp\n  ** Specifies the number of seconds to wait for the $$sendmail process\n  ** to finish before giving up and putting delivery in the background.\n  ** .pp\n  ** Mutt interprets the value of this variable as follows:\n  ** .dl\n  ** .dt >0 .dd number of seconds to wait for sendmail to finish before continuing\n  ** .dt 0  .dd wait forever for sendmail to finish\n  ** .dt <0 .dd always put sendmail in the background without waiting\n  ** .de\n  ** .pp\n  ** Note that if you specify a value other than 0, the output of the child\n  ** process will be put in a temporary file.  If there is some error, you\n  ** will be informed as to where to find the output.\n  */\n  { \"shell\",\t\tDT_PATH, R_NONE, UL &Shell, 0 },\n  /*\n  ** .pp\n  ** Command to use when spawning a subshell.  By default, the user's login\n  ** shell from \\fC/etc/passwd\\fP is used.\n  */\n#ifdef USE_SIDEBAR\n  { \"sidebar_divider_char\", DT_STR, R_BOTH, UL &SidebarDividerChar, UL \"|\" },\n  /*\n  ** .pp\n  ** This specifies the characters to be drawn between the sidebar (when\n  ** visible) and the other Mutt panels. ASCII and Unicode line-drawing\n  ** characters are supported.\n  */\n  { \"sidebar_delim_chars\", DT_STR, R_NONE, UL &SidebarDelimChars, UL \"/.\" },\n  /*\n  ** .pp\n  ** This contains the list of characters which you would like to treat\n  ** as folder separators for displaying paths in the sidebar.\n  ** .pp\n  ** Local mail is often arranged in directories: `dir1/dir2/mailbox'.\n  ** .ts\n  ** set sidebar_delim_chars='/'\n  ** .te\n  ** IMAP mailboxes are often named: `folder1.folder2.mailbox'.\n  ** .ts\n  ** set sidebar_delim_chars='.'\n  ** .te\n  ** .pp\n  ** \\fBSee also:\\fP $$sidebar_short_path, $$sidebar_folder_indent, $$sidebar_indent_string.\n  */\n  { \"sidebar_folder_indent\", DT_BOOL, R_BOTH, OPTSIDEBARFOLDERINDENT, 0 },\n  /*\n  ** .pp\n  ** Set this to indent mailboxes in the sidebar.\n  ** .pp\n  ** \\fBSee also:\\fP $$sidebar_short_path, $$sidebar_indent_string, $$sidebar_delim_chars.\n  */\n  { \"sidebar_format\", DT_STR, R_NONE, UL &SidebarFormat, UL \"%B%?F? [%F]?%* %?N?%N/?%S\" },\n  /*\n  ** .pp\n  ** This variable allows you to customize the sidebar display. This string is\n  ** similar to $$index_format, but has its own set of \\fCprintf(3)\\fP-like\n  ** sequences:\n  ** .dl\n  ** .dt %B  .dd Name of the mailbox\n  ** .dt %S  .dd * Size of mailbox (total number of messages)\n  ** .dt %N  .dd * Number of New messages in the mailbox\n  ** .dt %F  .dd * Number of Flagged messages in the mailbox\n  ** .dt %!  .dd ``!'' : one flagged message;\n  **             ``!!'' : two flagged messages;\n  **             ``n!'' : n flagged messages (for n > 2).\n  **             Otherwise prints nothing.\n  ** .dt %d  .dd * @ Number of deleted messages\n  ** .dt %L  .dd * @ Number of messages after limiting\n  ** .dt %t  .dd * @ Number of tagged messages\n  ** .dt %>X .dd right justify the rest of the string and pad with ``X''\n  ** .dt %|X .dd pad to the end of the line with ``X''\n  ** .dt %*X .dd soft-fill with character ``X'' as pad\n  ** .de\n  ** .pp\n  ** * = Can be optionally printed if nonzero\n  ** @ = Only applicable to the current folder\n  */\n  { \"sidebar_indent_string\", DT_STR, R_BOTH, UL &SidebarIndentString, UL \"  \" },\n  /*\n  ** .pp\n  ** This specifies the string that is used to indent mailboxes in the sidebar.\n  ** It defaults to two spaces.\n  ** .pp\n  ** \\fBSee also:\\fP $$sidebar_short_path, $$sidebar_folder_indent, $$sidebar_delim_chars.\n  */\n  { \"sidebar_new_mail_only\", DT_BOOL, R_BOTH, OPTSIDEBARNEWMAILONLY, 0 },\n  /*\n  ** .pp\n  ** When set, the sidebar will only display mailboxes containing new, or\n  ** flagged, mail.\n  ** .pp\n  ** \\fBSee also:\\fP $sidebar_whitelist.\n  */\n  { \"sidebar_next_new_wrap\", DT_BOOL, R_BOTH, UL OPTSIDEBARNEXTNEWWRAP, 0 },\n  /*\n  ** .pp\n  ** When set, the \\fC<sidebar-next-new>\\fP command will not stop and the end of\n  ** the list of mailboxes, but wrap around to the beginning. The\n  ** \\fC<sidebar-prev-new>\\fP command is similarly affected, wrapping around to\n  ** the end of the list.\n  */\n  { \"sidebar_refresh_time\", DT_NUM, R_BOTH, UL &SidebarRefreshTime, 60 },\n  /*\n  ** .pp\n  ** Set sidebar_refresh_time to the minimum number of seconds between refreshes.\n  ** This will reduced network traffic.\n  ** .pp\n  ** \\fBNote:\\fP Set to 0 to disable refreshing.\n  */\n  { \"sidebar_short_path\", DT_BOOL, R_BOTH, OPTSIDEBARSHORTPATH, 0 },\n  /*\n  ** .pp\n  ** By default the sidebar will show the mailbox's path, relative to the\n  ** $$folder variable. Setting \\fCsidebar_shortpath=yes\\fP will shorten the\n  ** names relative to the previous name. Here's an example:\n  ** .dl\n  ** .dt \\fBshortpath=no\\fP .dd \\fBshortpath=yes\\fP .dd \\fBshortpath=yes, folderindent=yes, indentstr=\"..\"\\fP\n  ** .dt \\fCfruit\\fP        .dd \\fCfruit\\fP         .dd \\fCfruit\\fP\n  ** .dt \\fCfruit.apple\\fP  .dd \\fCapple\\fP         .dd \\fC..apple\\fP\n  ** .dt \\fCfruit.banana\\fP .dd \\fCbanana\\fP        .dd \\fC..banana\\fP\n  ** .dt \\fCfruit.cherry\\fP .dd \\fCcherry\\fP        .dd \\fC..cherry\\fP\n  ** .de\n  ** .pp\n  ** \\fBSee also:\\fP $$sidebar_delim_chars, $$sidebar_folder_indent, $$sidebar_indent_string.\n  */\n  { \"sidebar_sort_method\", DT_SORT|DT_SORT_SIDEBAR, R_NONE, UL &SidebarSortMethod, SORT_ORDER },\n  /*\n  ** .pp\n  ** Specifies how to sort entries in the file browser.  By default, the\n  ** entries are sorted alphabetically.  Valid values:\n  ** .il\n  ** .dd alpha (alphabetically)\n  ** .dd count (all message count)\n  ** .dd date\n  ** .dd desc (description)\n  ** .dd new (new message count)\n  ** .dd size\n  ** .dd unsorted\n  ** .ie\n  ** .pp\n  ** You may optionally use the ``reverse-'' prefix to specify reverse sorting\n  ** order (example: ``\\fCset sort_browser=reverse-date\\fP'').\n  */\n  { \"sidebar_visible\", DT_BOOL, R_BOTH, OPTSIDEBAR, 0 },\n  /*\n  ** .pp\n  ** This specifies whether or not to show sidebar. The sidebar shows a list of\n  ** all your mailboxes.\n  ** .pp\n  ** \\fBSee also:\\fP $$sidebar_format, $$sidebar_width\n  */\n  { \"sidebar_width\", DT_NUM, R_BOTH, UL &SidebarWidth, 0 },\n  /*\n  ** .pp\n  ** This controls the width of the sidebar.  It is measured in screen columns.\n  ** For example: sidebar_width=20 could display 20 ASCII characters, or 10\n  ** Chinese characters.\n  */\n#endif\n  { \"sig_dashes\",\tDT_BOOL, R_NONE, OPTSIGDASHES, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, a line containing ``-- '' (note the trailing space) will be inserted before your\n  ** $$signature.  It is \\fBstrongly\\fP recommended that you not \\fIunset\\fP\n  ** this variable unless your signature contains just your name.  The\n  ** reason for this is because many software packages use ``-- \\n'' to\n  ** detect your signature.  For example, Mutt has the ability to highlight\n  ** the signature in a different color in the built-in pager.\n  */\n  { \"sig_on_top\",\tDT_BOOL, R_NONE, OPTSIGONTOP, 0},\n  /*\n  ** .pp\n  ** If \\fIset\\fP, the signature will be included before any quoted or forwarded\n  ** text.  It is \\fBstrongly\\fP recommended that you do not set this variable\n  ** unless you really know what you are doing, and are prepared to take\n  ** some heat from netiquette guardians.\n  */\n  { \"signature\",\tDT_PATH, R_NONE, UL &Signature, UL \"~/.signature\" },\n  /*\n  ** .pp\n  ** Specifies the filename of your signature, which is appended to all\n  ** outgoing messages.   If the filename ends with a pipe (``|''), it is\n  ** assumed that filename is a shell command and input should be read from\n  ** its standard output.\n  */\n  { \"simple_search\",\tDT_STR,\t R_NONE, UL &SimpleSearch, UL \"~f %s | ~s %s\" },\n  /*\n  ** .pp\n  ** Specifies how Mutt should expand a simple search into a real search\n  ** pattern.  A simple search is one that does not contain any of the ``~'' pattern\n  ** operators.  See ``$patterns'' for more information on search patterns.\n  ** .pp\n  ** For example, if you simply type ``joe'' at a search or limit prompt, Mutt\n  ** will automatically expand it to the value specified by this variable by\n  ** replacing ``%s'' with the supplied string.\n  ** For the default value, ``joe'' would be expanded to: ``~f joe | ~s joe''.\n  */\n  { \"sleep_time\",\tDT_NUM, R_NONE, UL &SleepTime, 1 },\n  /*\n  ** .pp\n  ** Specifies time, in seconds, to pause while displaying certain informational\n  ** messages, while moving from folder to folder and after expunging\n  ** messages from the current folder.  The default is to pause one second, so\n  ** a value of zero for this option suppresses the pause.\n  */\n  { \"smart_wrap\",\tDT_BOOL, R_PAGER, OPTWRAP, 1 },\n  /*\n  ** .pp\n  ** Controls the display of lines longer than the screen width in the\n  ** internal pager. If \\fIset\\fP, long lines are wrapped at a word boundary.  If\n  ** \\fIunset\\fP, lines are simply wrapped at the screen edge. Also see the\n  ** $$markers variable.\n  */\n  { \"smileys\",\t\tDT_RX,\t R_PAGER, UL &Smileys, UL \"(>From )|(:[-^]?[][)(><}{|/DP])\" },\n  /*\n  ** .pp\n  ** The \\fIpager\\fP uses this variable to catch some common false\n  ** positives of $$quote_regexp, most notably smileys and not consider\n  ** a line quoted text if it also matches $$smileys. This mostly\n  ** happens at the beginning of a line.\n  */\n\n\n\n  { \"smime_ask_cert_label\",\tDT_BOOL, R_NONE, OPTASKCERTLABEL, 1 },\n  /*\n  ** .pp\n  ** This flag controls whether you want to be asked to enter a label\n  ** for a certificate about to be added to the database or not. It is\n  ** \\fIset\\fP by default.\n  ** (S/MIME only)\n  */\n  { \"smime_ca_location\",\tDT_PATH, R_NONE, UL &SmimeCALocation, 0 },\n  /*\n  ** .pp\n  ** This variable contains the name of either a directory, or a file which\n  ** contains trusted certificates for use with OpenSSL.\n  ** (S/MIME only)\n  */\n  { \"smime_certificates\",\tDT_PATH, R_NONE, UL &SmimeCertificates, 0 },\n  /*\n  ** .pp\n  ** Since for S/MIME there is no pubring/secring as with PGP, mutt has to handle\n  ** storage and retrieval of keys by itself. This is very basic right\n  ** now, and keys and certificates are stored in two different\n  ** directories, both named as the hash-value retrieved from\n  ** OpenSSL. There is an index file which contains mailbox-address\n  ** keyid pairs, and which can be manually edited. This option points to\n  ** the location of the certificates.\n  ** (S/MIME only)\n  */\n  { \"smime_decrypt_command\", \tDT_STR, R_NONE, UL &SmimeDecryptCommand, 0},\n  /*\n  ** .pp\n  ** This format string specifies a command which is used to decrypt\n  ** \\fCapplication/x-pkcs7-mime\\fP attachments.\n  ** .pp\n  ** The OpenSSL command formats have their own set of \\fCprintf(3)\\fP-like sequences\n  ** similar to PGP's:\n  ** .dl\n  ** .dt %f .dd Expands to the name of a file containing a message.\n  ** .dt %s .dd Expands to the name of a file containing the signature part\n  ** .          of a \\fCmultipart/signed\\fP attachment when verifying it.\n  ** .dt %k .dd The key-pair specified with $$smime_default_key\n  ** .dt %c .dd One or more certificate IDs.\n  ** .dt %a .dd The algorithm used for encryption.\n  ** .dt %d .dd The message digest algorithm specified with $$smime_sign_digest_alg.\n  ** .dt %C .dd CA location:  Depending on whether $$smime_ca_location\n  ** .          points to a directory or file, this expands to\n  ** .          ``-CApath $$smime_ca_location'' or ``-CAfile $$smime_ca_location''.\n  ** .de\n  ** .pp\n  ** For examples on how to configure these formats, see the \\fCsmime.rc\\fP in\n  ** the \\fCsamples/\\fP subdirectory which has been installed on your system\n  ** alongside the documentation.\n  ** (S/MIME only)\n  */\n  { \"smime_decrypt_use_default_key\",\tDT_BOOL, R_NONE, OPTSDEFAULTDECRYPTKEY, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP (default) this tells mutt to use the default key for decryption. Otherwise,\n  ** if managing multiple certificate-key-pairs, mutt will try to use the mailbox-address\n  ** to determine the key to use. It will ask you to supply a key, if it can't find one.\n  ** (S/MIME only)\n  */\n  { \"smime_sign_as\",\t\t\tDT_SYN,  R_NONE, UL \"smime_default_key\", 0 },\n  { \"smime_default_key\",\t\tDT_STR,\t R_NONE, UL &SmimeDefaultKey, 0 },\n  /*\n  ** .pp\n  ** This is the default key-pair to use for signing. This must be set to the\n  ** keyid (the hash-value that OpenSSL generates) to work properly\n  ** (S/MIME only)\n  */\n  { \"smime_encrypt_command\", \tDT_STR, R_NONE, UL &SmimeEncryptCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to create encrypted S/MIME messages.\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n  { \"smime_encrypt_with\",\tDT_STR,\t R_NONE, UL &SmimeCryptAlg, UL \"aes256\" },\n  /*\n  ** .pp\n  ** This sets the algorithm that should be used for encryption.\n  ** Valid choices are ``aes128'', ``aes192'', ``aes256'', ``des'', ``des3'', ``rc2-40'', ``rc2-64'', ``rc2-128''.\n  ** (S/MIME only)\n  */\n  { \"smime_get_cert_command\", \tDT_STR, R_NONE, UL &SmimeGetCertCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to extract X509 certificates from a PKCS7 structure.\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n  { \"smime_get_cert_email_command\", \tDT_STR, R_NONE, UL &SmimeGetCertEmailCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to extract the mail address(es) used for storing\n  ** X509 certificates, and for verification purposes (to check whether the\n  ** certificate was issued for the sender's mailbox).\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n  { \"smime_get_signer_cert_command\", \tDT_STR, R_NONE, UL &SmimeGetSignerCertCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to extract only the signers X509 certificate from a S/MIME\n  ** signature, so that the certificate's owner may get compared to the\n  ** email's ``From:'' field.\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n  { \"smime_import_cert_command\", \tDT_STR, R_NONE, UL &SmimeImportCertCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to import a certificate via smime_keys.\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n  { \"smime_is_default\", DT_BOOL,  R_NONE, OPTSMIMEISDEFAULT, 0},\n  /*\n  ** .pp\n  ** The default behavior of mutt is to use PGP on all auto-sign/encryption\n  ** operations. To override and to use OpenSSL instead this must be \\fIset\\fP.\n  ** However, this has no effect while replying, since mutt will automatically\n  ** select the same application that was used to sign/encrypt the original\n  ** message.  (Note that this variable can be overridden by unsetting $$crypt_autosmime.)\n  ** (S/MIME only)\n  */\n  { \"smime_keys\",\t\tDT_PATH, R_NONE, UL &SmimeKeys, 0 },\n  /*\n  ** .pp\n  ** Since for S/MIME there is no pubring/secring as with PGP, mutt has to handle\n  ** storage and retrieval of keys/certs by itself. This is very basic right now,\n  ** and stores keys and certificates in two different directories, both\n  ** named as the hash-value retrieved from OpenSSL. There is an index file\n  ** which contains mailbox-address keyid pair, and which can be manually\n  ** edited. This option points to the location of the private keys.\n  ** (S/MIME only)\n  */\n  { \"smime_pk7out_command\", \tDT_STR, R_NONE, UL &SmimePk7outCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to extract PKCS7 structures of S/MIME signatures,\n  ** in order to extract the public X509 certificate(s).\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n  { \"smime_sign_command\", \tDT_STR, R_NONE, UL &SmimeSignCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to created S/MIME signatures of type\n  ** \\fCmultipart/signed\\fP, which can be read by all mail clients.\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n  { \"smime_sign_digest_alg\",\tDT_STR,\t R_NONE, UL &SmimeDigestAlg, UL \"sha256\" },\n  /*\n  ** .pp\n  ** This sets the algorithm that should be used for the signature message digest.\n  ** Valid choices are ``md5'', ``sha1'', ``sha224'', ``sha256'', ``sha384'', ``sha512''.\n  ** (S/MIME only)\n  */\n  { \"smime_sign_opaque_command\", \tDT_STR, R_NONE, UL &SmimeSignOpaqueCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to created S/MIME signatures of type\n  ** \\fCapplication/x-pkcs7-signature\\fP, which can only be handled by mail\n  ** clients supporting the S/MIME extension.\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n  { \"smime_timeout\",\t\tDT_NUM,\t R_NONE, UL &SmimeTimeout, 300 },\n  /*\n  ** .pp\n  ** The number of seconds after which a cached passphrase will expire if\n  ** not used.\n  ** (S/MIME only)\n  */\n  { \"smime_verify_command\", \tDT_STR, R_NONE, UL &SmimeVerifyCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to verify S/MIME signatures of type \\fCmultipart/signed\\fP.\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n  { \"smime_verify_opaque_command\", \tDT_STR, R_NONE, UL &SmimeVerifyOpaqueCommand, 0},\n  /*\n  ** .pp\n  ** This command is used to verify S/MIME signatures of type\n  ** \\fCapplication/x-pkcs7-mime\\fP.\n  ** .pp\n  ** This is a format string, see the $$smime_decrypt_command command for\n  ** possible \\fCprintf(3)\\fP-like sequences.\n  ** (S/MIME only)\n  */\n#ifdef USE_SMTP\n# ifdef USE_SASL\n  { \"smtp_authenticators\", DT_STR, R_NONE, UL &SmtpAuthenticators, UL 0 },\n  /*\n  ** .pp\n  ** This is a colon-delimited list of authentication methods mutt may\n  ** attempt to use to log in to an SMTP server, in the order mutt should\n  ** try them.  Authentication methods are any SASL mechanism, e.g.\n  ** ``digest-md5'', ``gssapi'' or ``cram-md5''.\n  ** This option is case-insensitive. If it is ``unset''\n  ** (the default) mutt will try all available methods, in order from\n  ** most-secure to least-secure.\n  ** .pp\n  ** Example:\n  ** .ts\n  ** set smtp_authenticators=\"digest-md5:cram-md5\"\n  ** .te\n  */\n# endif /* USE_SASL */\n  { \"smtp_pass\", \tDT_STR,  R_NONE, UL &SmtpPass, UL 0 },\n  /*\n  ** .pp\n  ** Specifies the password for your SMTP account.  If \\fIunset\\fP, Mutt will\n  ** prompt you for your password when you first send mail via SMTP.\n  ** See $$smtp_url to configure mutt to send mail via SMTP.\n  ** .pp\n  ** \\fBWarning\\fP: you should only use this option when you are on a\n  ** fairly secure machine, because the superuser can read your muttrc even\n  ** if you are the only one who can read the file.\n  */\n  { \"smtp_url\",\t\tDT_STR, R_NONE, UL &SmtpUrl, UL 0 },\n  /*\n  ** .pp\n  ** Defines the SMTP smarthost where sent messages should relayed for\n  ** delivery. This should take the form of an SMTP URL, e.g.:\n  ** .ts\n  ** smtp[s]://[user[:pass]@]host[:port]\n  ** .te\n  ** .pp\n  ** where ``[...]'' denotes an optional part.\n  ** Setting this variable overrides the value of the $$sendmail\n  ** variable.\n  */\n#endif /* USE_SMTP */\n  { \"sort\",\t\tDT_SORT, R_INDEX|R_RESORT, UL &Sort, SORT_DATE },\n  /*\n  ** .pp\n  ** Specifies how to sort messages in the ``index'' menu.  Valid values\n  ** are:\n  ** .il\n  ** .dd date or date-sent\n  ** .dd date-received\n  ** .dd from\n  ** .dd mailbox-order (unsorted)\n  ** .dd score\n  ** .dd size\n  ** .dd spam\n  ** .dd subject\n  ** .dd threads\n  ** .dd to\n  ** .ie\n  ** .pp\n  ** You may optionally use the ``reverse-'' prefix to specify reverse sorting\n  ** order (example: ``\\fCset sort=reverse-date-sent\\fP'').\n  */\n  { \"sort_alias\",\tDT_SORT|DT_SORT_ALIAS,\tR_NONE,\tUL &SortAlias, SORT_ALIAS },\n  /*\n  ** .pp\n  ** Specifies how the entries in the ``alias'' menu are sorted.  The\n  ** following are legal values:\n  ** .il\n  ** .dd address (sort alphabetically by email address)\n  ** .dd alias (sort alphabetically by alias name)\n  ** .dd unsorted (leave in order specified in .muttrc)\n  ** .ie\n  */\n  { \"sort_aux\",\t\tDT_SORT|DT_SORT_AUX, R_INDEX|R_RESORT_BOTH, UL &SortAux, SORT_DATE },\n  /*\n  ** .pp\n  ** When sorting by threads, this variable controls how threads are sorted\n  ** in relation to other threads, and how the branches of the thread trees\n  ** are sorted.  This can be set to any value that $$sort can, except\n  ** ``threads'' (in that case, mutt will just use ``date-sent'').  You can also\n  ** specify the ``last-'' prefix in addition to the ``reverse-'' prefix, but ``last-''\n  ** must come after ``reverse-''.  The ``last-'' prefix causes messages to be\n  ** sorted against its siblings by which has the last descendant, using\n  ** the rest of $$sort_aux as an ordering.  For instance,\n  ** .ts\n  ** set sort_aux=last-date-received\n  ** .te\n  ** .pp\n  ** would mean that if a new message is received in a\n  ** thread, that thread becomes the last one displayed (or the first, if\n  ** you have ``\\fCset sort=reverse-threads\\fP''.)\n  ** .pp\n  ** Note: For reversed $$sort\n  ** order $$sort_aux is reversed again (which is not the right thing to do,\n  ** but kept to not break any existing configuration setting).\n  */\n  { \"sort_browser\",\tDT_SORT|DT_SORT_BROWSER, R_NONE, UL &BrowserSort, SORT_ALPHA },\n  /*\n  ** .pp\n  ** Specifies how to sort entries in the file browser.  By default, the\n  ** entries are sorted alphabetically.  Valid values:\n  ** .il\n  ** .dd alpha (alphabetically)\n  ** .dd count (all message count)\n  ** .dd date\n  ** .dd desc (description)\n  ** .dd new (new message count)\n  ** .dd size\n  ** .dd unsorted\n  ** .ie\n  ** .pp\n  ** You may optionally use the ``reverse-'' prefix to specify reverse sorting\n  ** order (example: ``\\fCset sort_browser=reverse-date\\fP'').\n  */\n  { \"sort_re\",\t\tDT_BOOL, R_INDEX|R_RESORT|R_RESORT_INIT, OPTSORTRE, 1 },\n  /*\n  ** .pp\n  ** This variable is only useful when sorting by mailboxes in sidebar. By default,\n  ** entries are unsorted.  Valid values:\n  ** .il\n  ** .dd count (all message count)\n  ** .dd desc  (virtual mailbox description)\n  ** .dd new (new message count)\n  ** .dd path\n  ** .dd unsorted\n  ** .ie\n  */\n  { \"spam_separator\",   DT_STR, R_NONE, UL &SpamSep, UL \",\" },\n  /*\n  ** .pp\n  ** This variable controls what happens when multiple spam headers\n  ** are matched: if \\fIunset\\fP, each successive header will overwrite any\n  ** previous matches value for the spam label. If \\fIset\\fP, each successive\n  ** match will append to the previous, using this variable's value as a\n  ** separator.\n  */\n  { \"spoolfile\",\tDT_PATH, R_NONE, UL &Spoolfile, 0 },\n  /*\n  ** .pp\n  ** If your spool mailbox is in a non-default place where Mutt cannot find\n  ** it, you can specify its location with this variable.  Mutt will\n  ** initially set this variable to the value of the environment\n  ** variable \\fC$$$MAIL\\fP or \\fC$$$MAILDIR\\fP if either is defined.\n  */\n#if defined(USE_SSL)\n#ifdef USE_SSL_GNUTLS\n  { \"ssl_ca_certificates_file\", DT_PATH, R_NONE, UL &SslCACertFile, 0 },\n  /*\n  ** .pp\n  ** This variable specifies a file containing trusted CA certificates.\n  ** Any server certificate that is signed with one of these CA\n  ** certificates is also automatically accepted.\n  ** .pp\n  ** Example:\n  ** .ts\n  ** set ssl_ca_certificates_file=/etc/ssl/certs/ca-certificates.crt\n  ** .te\n  */\n#endif /* USE_SSL_GNUTLS */\n  { \"ssl_client_cert\", DT_PATH, R_NONE, UL &SslClientCert, 0 },\n  /*\n  ** .pp\n  ** The file containing a client certificate and its associated private\n  ** key.\n  */\n  { \"ssl_force_tls\",\t\tDT_BOOL, R_NONE, OPTSSLFORCETLS, 0 },\n  /*\n   ** .pp\n   ** If this variable is \\fIset\\fP, Mutt will require that all connections\n   ** to remote servers be encrypted. Furthermore it will attempt to\n   ** negotiate TLS even if the server does not advertise the capability,\n   ** since it would otherwise have to abort the connection anyway. This\n   ** option supersedes $$ssl_starttls.\n   */\n# ifdef USE_SSL_GNUTLS\n  { \"ssl_min_dh_prime_bits\", DT_NUM, R_NONE, UL &SslDHPrimeBits, 0 },\n  /*\n  ** .pp\n  ** This variable specifies the minimum acceptable prime size (in bits)\n  ** for use in any Diffie-Hellman key exchange. A value of 0 will use\n  ** the default from the GNUTLS library.\n  */\n# endif /* USE_SSL_GNUTLS */\n  { \"ssl_starttls\", DT_QUAD, R_NONE, OPT_SSLSTARTTLS, M_YES },\n  /*\n  ** .pp\n  ** If \\fIset\\fP (the default), mutt will attempt to use \\fCSTARTTLS\\fP on servers\n  ** advertising the capability. When \\fIunset\\fP, mutt will not attempt to\n  ** use \\fCSTARTTLS\\fP regardless of the server's capabilities.\n  */\n# ifdef USE_SSL_OPENSSL\n  { \"ssl_use_sslv2\", DT_BOOL, R_NONE, OPTSSLV2, 0 },\n  /*\n  ** .pp\n  ** This variable specifies whether to attempt to use SSLv2 in the\n  ** SSL authentication process. Note that SSLv2 and SSLv3 are now\n  ** considered fundamentally insecure and are no longer recommended.\n  */\n# endif /* defined USE_SSL_OPENSSL */\n  { \"ssl_use_sslv3\", DT_BOOL, R_NONE, OPTSSLV3, 0 },\n  /*\n  ** .pp\n  ** This variable specifies whether to attempt to use SSLv3 in the\n  ** SSL authentication process. Note that SSLv2 and SSLv3 are now\n  ** considered fundamentally insecure and are no longer recommended.\n  */\n  { \"ssl_use_tlsv1\", DT_BOOL, R_NONE, OPTTLSV1, 1 },\n  /*\n  ** .pp\n  ** This variable specifies whether to attempt to use TLSv1.0 in the\n  ** SSL authentication process.\n  */\n  { \"ssl_use_tlsv1_1\", DT_BOOL, R_NONE, OPTTLSV1_1, 1 },\n  /*\n  ** .pp\n  ** This variable specifies whether to attempt to use TLSv1.1 in the\n  ** SSL authentication process.\n  */\n  { \"ssl_use_tlsv1_2\", DT_BOOL, R_NONE, OPTTLSV1_2, 1 },\n  /*\n  ** .pp\n  ** This variable specifies whether to attempt to use TLSv1.2 in the\n  ** SSL authentication process.\n  */\n#ifdef USE_SSL_OPENSSL\n  { \"ssl_usesystemcerts\", DT_BOOL, R_NONE, OPTSSLSYSTEMCERTS, 1 },\n  /*\n  ** .pp\n  ** If set to \\fIyes\\fP, mutt will use CA certificates in the\n  ** system-wide certificate store when checking if a server certificate\n  ** is signed by a trusted CA.\n  */\n#endif\n  { \"ssl_verify_dates\", DT_BOOL, R_NONE, OPTSSLVERIFYDATES, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP (the default), mutt will not automatically accept a server\n  ** certificate that is either not yet valid or already expired. You should\n  ** only unset this for particular known hosts, using the\n  ** \\fC$<account-hook>\\fP function.\n  */\n  { \"ssl_verify_host\", DT_BOOL, R_NONE, OPTSSLVERIFYHOST, 1 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP (the default), mutt will not automatically accept a server\n  ** certificate whose host name does not match the host used in your folder\n  ** URL. You should only unset this for particular known hosts, using\n  ** the \\fC$<account-hook>\\fP function.\n  */\n  { \"ssl_ciphers\", DT_STR, R_NONE, UL &SslCiphers, UL 0 },\n  /*\n  ** .pp\n  ** Contains a colon-seperated list of ciphers to use when using SSL.\n  ** For OpenSSL, see ciphers(1) for the syntax of the string.\n  ** .pp\n  ** For GnuTLS, this option will be used in place of \"NORMAL\" at the\n  ** start of the priority string.  See gnutls_priority_init(3) for the\n  ** syntax and more details. (Note: GnuTLS version 2.1.7 or higher is\n  ** required.)\n  */\n#endif /* defined(USE_SSL) */\n  { \"status_chars\",\tDT_STR,\t R_BOTH, UL &StChars, UL \"-*%A\" },\n  /*\n  ** .pp\n  ** Controls the characters used by the ``%r'' indicator in\n  ** $$status_format. The first character is used when the mailbox is\n  ** unchanged. The second is used when the mailbox has been changed, and\n  ** it needs to be resynchronized. The third is used if the mailbox is in\n  ** read-only mode, or if the mailbox will not be written when exiting\n  ** that mailbox (You can toggle whether to write changes to a mailbox\n  ** with the \\fC<toggle-write>\\fP operation, bound by default to ``%''). The fourth\n  ** is used to indicate that the current folder has been opened in attach-\n  ** message mode (Certain operations like composing a new mail, replying,\n  ** forwarding, etc. are not permitted in this mode).\n  */\n  { \"status_format\",\tDT_STR,\t R_BOTH, UL &Status, UL \"-%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?%?l? %l?]---(%s/%S)-%>-(%P)---\" },\n  /*\n  ** .pp\n  ** Controls the format of the status line displayed in the ``index''\n  ** menu.  This string is similar to $$index_format, but has its own\n  ** set of \\fCprintf(3)\\fP-like sequences:\n  ** .dl\n  ** .dt %b  .dd number of mailboxes with new mail *\n  ** .dt %d  .dd number of deleted messages *\n  ** .dt %f  .dd the full pathname of the current mailbox\n  ** .dt %F  .dd number of flagged messages *\n  ** .dt %h  .dd local hostname\n  ** .dt %l  .dd size (in bytes) of the current mailbox *\n  ** .dt %L  .dd size (in bytes) of the messages shown\n  **             (i.e., which match the current limit) *\n  ** .dt %m  .dd the number of messages in the mailbox *\n  ** .dt %M  .dd the number of messages shown (i.e., which match the current limit) *\n  ** .dt %n  .dd number of new messages in the mailbox *\n  ** .dt %o  .dd number of old unread messages *\n  ** .dt %p  .dd number of postponed messages *\n  ** .dt %P  .dd percentage of the way through the index\n  ** .dt %r  .dd modified/read-only/won't-write/attach-message indicator,\n  **             according to $$status_chars\n  ** .dt %s  .dd current sorting mode ($$sort)\n  ** .dt %S  .dd current aux sorting method ($$sort_aux)\n  ** .dt %t  .dd number of tagged messages *\n  ** .dt %u  .dd number of unread messages *\n  ** .dt %v  .dd Mutt version string\n  ** .dt %V  .dd currently active limit pattern, if any *\n  ** .dt %>X .dd right justify the rest of the string and pad with ``X''\n  ** .dt %|X .dd pad to the end of the line with ``X''\n  ** .dt %*X .dd soft-fill with character ``X'' as pad\n  ** .de\n  ** .pp\n  ** For an explanation of ``soft-fill'', see the $$index_format documentation.\n  ** .pp\n  ** * = can be optionally printed if nonzero\n  ** .pp\n  ** Some of the above sequences can be used to optionally print a string\n  ** if their value is nonzero.  For example, you may only want to see the\n  ** number of flagged messages if such messages exist, since zero is not\n  ** particularly meaningful.  To optionally print a string based upon one\n  ** of the above sequences, the following construct is used:\n  ** .pp\n  **  \\fC%?<sequence_char>?<optional_string>?\\fP\n  ** .pp\n  ** where \\fIsequence_char\\fP is a character from the table above, and\n  ** \\fIoptional_string\\fP is the string you would like printed if\n  ** \\fIsequence_char\\fP is nonzero.  \\fIoptional_string\\fP \\fBmay\\fP contain\n  ** other sequences as well as normal text, but you may \\fBnot\\fP nest\n  ** optional strings.\n  ** .pp\n  ** Here is an example illustrating how to optionally print the number of\n  ** new messages in a mailbox:\n  ** .pp\n  ** \\fC%?n?%n new messages.?\\fP\n  ** .pp\n  ** You can also switch between two strings using the following construct:\n  ** .pp\n  ** \\fC%?<sequence_char>?<if_string>&<else_string>?\\fP\n  ** .pp\n  ** If the value of \\fIsequence_char\\fP is non-zero, \\fIif_string\\fP will\n  ** be expanded, otherwise \\fIelse_string\\fP will be expanded.\n  ** .pp\n  ** You can force the result of any \\fCprintf(3)\\fP-like sequence to be lowercase\n  ** by prefixing the sequence character with an underscore (``_'') sign.\n  ** For example, if you want to display the local hostname in lowercase,\n  ** you would use: ``\\fC%_h\\fP''.\n  ** .pp\n  ** If you prefix the sequence character with a colon (``:'') character, mutt\n  ** will replace any dots in the expansion by underscores. This might be helpful\n  ** with IMAP folders that don't like dots in folder names.\n  */\n  { \"status_on_top\",\tDT_BOOL, R_BOTH, OPTSTATUSONTOP, 0 },\n  /*\n  ** .pp\n  ** Setting this variable causes the ``status bar'' to be displayed on\n  ** the first line of the screen rather than near the bottom. If $$help\n  ** is \\fIset\\fP, too it'll be placed at the bottom.\n  */\n  { \"strict_threads\",\tDT_BOOL, R_RESORT|R_RESORT_INIT|R_INDEX, OPTSTRICTTHREADS, 0 },\n  /*\n  ** .pp\n  ** If \\fIset\\fP, threading will only make use of the ``In-Reply-To'' and\n  ** ``References:'' fields when you $$sort by message threads.  By\n  ** default, messages with the same subject are grouped together in\n  ** ``pseudo threads.''. This may not always be desirable, such as in a\n  ** personal mailbox where you might have several unrelated messages with\n  ** the subjects like ``hi'' which will get grouped together. See also\n  ** $$sort_re for a less drastic way of controlling this\n  ** behavior.\n  */\n  { \"suspend\",\t\tDT_BOOL, R_NONE, OPTSUSPEND, 1 },\n  /*\n  ** .pp\n  ** When \\fIunset\\fP, mutt won't stop when the user presses the terminal's\n  ** \\fIsusp\\fP key, usually ``^Z''. This is useful if you run mutt\n  ** inside an xterm using a command like ``\\fCxterm -e mutt\\fP''.\n  */\n  { \"text_flowed\", \tDT_BOOL, R_NONE, OPTTEXTFLOWED,  0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will generate ``format=flowed'' bodies with a content type\n  ** of ``\\fCtext/plain; format=flowed\\fP''.\n  ** This format is easier to handle for some mailing software, and generally\n  ** just looks like ordinary text.  To actually make use of this format's\n  ** features, you'll need support in your editor.\n  ** .pp\n  ** Note that $$indent_string is ignored when this option is \\fIset\\fP.\n  */\n  { \"thorough_search\",\tDT_BOOL, R_NONE, OPTTHOROUGHSRC, 1 },\n  /*\n  ** .pp\n  ** Affects the \\fC~b\\fP and \\fC~h\\fP search operations described in\n  ** section ``$patterns''.  If \\fIset\\fP, the headers and body/attachments of\n  ** messages to be searched are decoded before searching. If \\fIunset\\fP,\n  ** messages are searched as they appear in the folder.\n  ** .pp\n  ** Users searching attachments or for non-ASCII characters should \\fIset\\fP\n  ** this value because decoding also includes MIME parsing/decoding and possible\n  ** character set conversions. Otherwise mutt will attempt to match against the\n  ** raw message received (for example quoted-printable encoded or with encoded\n  ** headers) which may lead to incorrect search results.\n  */\n  { \"thread_received\",\tDT_BOOL, R_RESORT|R_RESORT_INIT|R_INDEX, OPTTHREADRECEIVED, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt uses the date received rather than the date sent\n  ** to thread messages by subject.\n  */\n  { \"tilde\",\t\tDT_BOOL, R_PAGER, OPTTILDE, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, the internal-pager will pad blank lines to the bottom of the\n  ** screen with a tilde (``~'').\n  */\n  { \"time_inc\",\t\tDT_NUM,\t R_NONE, UL &TimeInc, 0 },\n  /*\n  ** .pp\n  ** Along with $$read_inc, $$write_inc, and $$net_inc, this\n  ** variable controls the frequency with which progress updates are\n  ** displayed. It suppresses updates less than $$time_inc milliseconds\n  ** apart. This can improve throughput on systems with slow terminals,\n  ** or when running mutt on a remote system.\n  ** .pp\n  ** Also see the ``$tuning'' section of the manual for performance considerations.\n  */\n  { \"timeout\",\t\tDT_NUM,\t R_NONE, UL &Timeout, 600 },\n  /*\n  ** .pp\n  ** When Mutt is waiting for user input either idling in menus or\n  ** in an interactive prompt, Mutt would block until input is\n  ** present. Depending on the context, this would prevent certain\n  ** operations from working, like checking for new mail or keeping\n  ** an IMAP connection alive.\n  ** .pp\n  ** This variable controls how many seconds Mutt will at most wait\n  ** until it aborts waiting for input, performs these operations and\n  ** continues to wait for input.\n  ** .pp\n  ** A value of zero or less will cause Mutt to never time out.\n  */\n  { \"tmpdir\",\t\tDT_PATH, R_NONE, UL &Tempdir, 0 },\n  /*\n  ** .pp\n  ** This variable allows you to specify where Mutt will place its\n  ** temporary files needed for displaying and composing messages.  If\n  ** this variable is not set, the environment variable \\fC$$$TMPDIR\\fP is\n  ** used.  If \\fC$$$TMPDIR\\fP is not set then ``\\fC/tmp\\fP'' is used.\n  */\n  { \"to_chars\",\t\tDT_STR,\t R_BOTH, UL &Tochars, UL \" +TCFL\" },\n  /*\n  ** .pp\n  ** Controls the character used to indicate mail addressed to you.  The\n  ** first character is the one used when the mail is \\fInot\\fP addressed to your\n  ** address.  The second is used when you are the only\n  ** recipient of the message.  The third is when your address\n  ** appears in the ``To:'' header field, but you are not the only recipient of\n  ** the message.  The fourth character is used when your\n  ** address is specified in the ``Cc:'' header field, but you are not the only\n  ** recipient.  The fifth character is used to indicate mail that was sent\n  ** by \\fIyou\\fP.  The sixth character is used to indicate when a mail\n  ** was sent to a mailing-list you subscribe to.\n  */\n  {\"ts_icon_format\",\tDT_STR,  R_BOTH, UL &TSIconFormat, UL \"M%?n?AIL&ail?\"},\n  /*\n  ** .pp\n  ** Controls the format of the icon title, as long as ``$$ts_enabled'' is set.\n  ** This string is identical in formatting to the one used by\n  ** ``$$status_format''.\n  */\n  {\"ts_enabled\",\tDT_BOOL,  R_BOTH, OPTTSENABLED, 0},\n  /* The default must be off to force in the validity checking. */\n  /*\n  ** .pp\n  ** Controls whether mutt tries to set the terminal status line and icon name.\n  ** Most terminal emulators emulate the status line in the window title.\n  */\n  {\"ts_status_format\",\tDT_STR,   R_BOTH, UL &TSStatusFormat, UL \"Mutt with %?m?%m messages&no messages?%?n? [%n NEW]?\"},\n  /*\n  ** .pp\n  ** Controls the format of the terminal status line (or window title),\n  ** provided that ``$$ts_enabled'' has been set. This string is identical in\n  ** formatting to the one used by ``$$status_format''.\n  */\n#ifdef USE_SOCKET\n  { \"tunnel\",            DT_STR, R_NONE, UL &Tunnel, UL 0 },\n  /*\n  ** .pp\n  ** Setting this variable will cause mutt to open a pipe to a command\n  ** instead of a raw socket. You may be able to use this to set up\n  ** preauthenticated connections to your IMAP/POP3/SMTP server. Example:\n  ** .ts\n  ** set tunnel=\"ssh -q mailhost.net /usr/local/libexec/imapd\"\n  ** .te\n  ** .pp\n  ** Note: For this example to work you must be able to log in to the remote\n  ** machine without having to enter a password.\n  ** .pp\n  ** When set, Mutt uses the tunnel for all remote connections.\n  ** Please see ``$account-hook'' in the manual for how to use different\n  ** tunnel commands per connection.\n  */\n#endif\n  { \"uncollapse_jump\", \tDT_BOOL, R_NONE, OPTUNCOLLAPSEJUMP, 0 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will jump to the next unread message, if any,\n  ** when the current thread is \\fIun\\fPcollapsed.\n  */\n  { \"use_8bitmime\",\tDT_BOOL, R_NONE, OPTUSE8BITMIME, 0 },\n  /*\n  ** .pp\n  ** \\fBWarning:\\fP do not set this variable unless you are using a version\n  ** of sendmail which supports the \\fC-B8BITMIME\\fP flag (such as sendmail\n  ** 8.8.x) or you may not be able to send mail.\n  ** .pp\n  ** When \\fIset\\fP, Mutt will invoke $$sendmail with the \\fC-B8BITMIME\\fP\n  ** flag when sending 8-bit messages to enable ESMTP negotiation.\n  */\n  { \"use_domain\",\tDT_BOOL, R_NONE, OPTUSEDOMAIN, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will qualify all local addresses (ones without the\n  ** ``@host'' portion) with the value of $$hostname.  If \\fIunset\\fP, no\n  ** addresses will be qualified.\n  */\n  { \"use_envelope_from\", \tDT_BOOL, R_NONE, OPTENVFROM, 0 },\n  /*\n   ** .pp\n   ** When \\fIset\\fP, mutt will set the \\fIenvelope\\fP sender of the message.\n   ** If $$envelope_from_address is \\fIset\\fP, it will be used as the sender\n   ** address. If \\fIunset\\fP, mutt will attempt to derive the sender from the\n   ** ``From:'' header.\n   ** .pp\n   ** Note that this information is passed to sendmail command using the\n   ** \\fC-f\\fP command line switch. Therefore setting this option is not useful\n   ** if the $$sendmail variable already contains \\fC-f\\fP or if the\n   ** executable pointed to by $$sendmail doesn't support the \\fC-f\\fP switch.\n   */\n  { \"envelope_from\",\tDT_SYN,  R_NONE, UL \"use_envelope_from\", 0 },\n  /*\n  */\n  { \"use_from\",\t\tDT_BOOL, R_NONE, OPTUSEFROM, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will generate the ``From:'' header field when\n  ** sending messages.  If \\fIunset\\fP, no ``From:'' header field will be\n  ** generated unless the user explicitly sets one using the ``$my_hdr''\n  ** command.\n  */\n#ifdef HAVE_GETADDRINFO\n  { \"use_ipv6\",\t\tDT_BOOL, R_NONE, OPTUSEIPV6, 1},\n  /*\n  ** .pp\n  ** When \\fIset\\fP, Mutt will look for IPv6 addresses of hosts it tries to\n  ** contact.  If this option is \\fIunset\\fP, Mutt will restrict itself to IPv4 addresses.\n  ** Normally, the default should work.\n  */\n#endif /* HAVE_GETADDRINFO */\n  { \"user_agent\",\tDT_BOOL, R_NONE, OPTXMAILER, 1},\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will add a ``User-Agent:'' header to outgoing\n  ** messages, indicating which version of mutt was used for composing\n  ** them.\n  */\n  { \"visual\",\t\tDT_PATH, R_NONE, UL &Visual, 0 },\n  /*\n  ** .pp\n  ** Specifies the visual editor to invoke when the ``\\fC~v\\fP'' command is\n  ** given in the built-in editor.\n  */\n#ifdef USE_NOTMUCH\n  { \"vfolder_format\",\tDT_STR,\t R_INDEX, UL &VirtFolderFormat, UL \" %6n(%6N) %f \" },\n  /*\n  ** .pp\n  ** This variable allows you to customize the file browser display for virtual\n  ** folders to your ** personal taste.  This string is similar to $$index_format,\n  ** but has its own set of \\fCprintf(3)\\fP-like sequences:\n  ** .dl\n  ** .dt %f  .dd folder name (description)\n  ** .dt %n  .dd number of all messages\n  ** .dt %N  .dd number of new messages\n  ** .dt %>X .dd right justify the rest of the string and pad with character ``X''\n  ** .dt %|X .dd pad to the end of the line with character ``X''\n  ** .dt %*X .dd soft-fill with character ``X'' as pad\n  ** .de\n  ** .pp\n  ** For an explanation of ``soft-fill'', see the $$index_format documentation.\n  */\n  { \"virtual_spoolfile\", DT_BOOL, R_NONE, OPTVIRTSPOOLFILE, 0 },\n  /*\n  ** .pp\n  ** When \\fset\\fP, mutt will use the first defined virtual mailbox (see\n  ** virtual-mailboxes) as a spool file.\n  */\n#endif\n  { \"wait_key\",\t\tDT_BOOL, R_NONE, OPTWAITKEY, 1 },\n  /*\n  ** .pp\n  ** Controls whether Mutt will ask you to press a key after an external command\n  ** has been invoked by these functions: \\fC<shell-escape>\\fP,\n  ** \\fC<pipe-message>\\fP, \\fC<pipe-entry>\\fP, \\fC<print-message>\\fP,\n  ** and \\fC<print-entry>\\fP commands.\n  ** .pp\n  ** It is also used when viewing attachments with ``$auto_view'', provided\n  ** that the corresponding mailcap entry has a \\fIneedsterminal\\fP flag,\n  ** and the external program is interactive.\n  ** .pp\n  ** When \\fIset\\fP, Mutt will always ask for a key. When \\fIunset\\fP, Mutt will wait\n  ** for a key only if the external command returned a non-zero status.\n  */\n  { \"weed\",\t\tDT_BOOL, R_NONE, OPTWEED, 1 },\n  /*\n  ** .pp\n  ** When \\fIset\\fP, mutt will weed headers when displaying, forwarding,\n  ** printing, or replying to messages.\n  */\n  { \"wrap\",             DT_NUM,  R_PAGER, UL &Wrap, 0 },\n  /*\n  ** .pp\n  ** When set to a positive value, mutt will wrap text at $$wrap characters.\n  ** When set to a negative value, mutt will wrap text so that there are $$wrap\n  ** characters of empty space on the right side of the terminal. Setting it\n  ** to zero makes mutt wrap at the terminal width.\n  ** .pp\n  ** Also see $$reflow_wrap.\n  */\n  { \"wrap_headers\",     DT_NUM,  R_PAGER, UL &WrapHeaders, 78 },\n  /*\n  ** .pp\n  ** This option specifies the number of characters to use for wrapping\n  ** an outgoing message's headers. Allowed values are between 78 and 998\n  ** inclusive.\n  ** .pp\n  ** \\fBNote:\\fP This option usually shouldn't be changed. RFC5233\n  ** recommends a line length of 78 (the default), so \\fBplease only change\n  ** this setting when you know what you're doing\\fP.\n  */\n  { \"wrap_search\",\tDT_BOOL, R_NONE, OPTWRAPSEARCH, 1 },\n  /*\n  ** .pp\n  ** Controls whether searches wrap around the end.\n  ** .pp\n  ** When \\fIset\\fP, searches will wrap around the first (or last) item. When\n  ** \\fIunset\\fP, incremental searches will not wrap.\n  */\n  { \"wrapmargin\",\tDT_NUM,\t R_PAGER, UL &Wrap, 0 },\n  /*\n  ** .pp\n  ** (DEPRECATED) Equivalent to setting $$wrap with a negative value.\n  */\n  { \"write_bcc\",\tDT_BOOL, R_NONE, OPTWRITEBCC, 1},\n  /*\n  ** .pp\n  ** Controls whether mutt writes out the ``Bcc:'' header when preparing\n  ** messages to be sent.  Exim users may wish to unset this. If mutt\n  ** is set to deliver directly via SMTP (see $$smtp_url), this\n  ** option does nothing: mutt will never write out the ``Bcc:'' header\n  ** in this case.\n  */\n  { \"write_inc\",\tDT_NUM,\t R_NONE, UL &WriteInc, 10 },\n  /*\n  ** .pp\n  ** When writing a mailbox, a message will be printed every\n  ** $$write_inc messages to indicate progress.  If set to 0, only a\n  ** single message will be displayed before writing a mailbox.\n  ** .pp\n  ** Also see the $$read_inc, $$net_inc and $$time_inc variables and the\n  ** ``$tuning'' section of the manual for performance considerations.\n  */\n  {\"xterm_icon\",\tDT_SYN,  R_NONE, UL \"ts_icon_format\", 0 },\n  /*\n  */\n  {\"xterm_title\",\tDT_SYN,  R_NONE, UL \"ts_status_format\", 0 },\n  /*\n  */\n  {\"xterm_set_titles\",\tDT_SYN,  R_NONE, UL \"ts_enabled\", 0 },\n  /*\n  */\n  /*--*/\n  { NULL, 0, 0, 0, 0 }\n};\n\nconst struct mapping_t SortMethods[] = {\n  { \"date\",\t\tSORT_DATE },\n  { \"date-sent\",\tSORT_DATE },\n  { \"date-received\",\tSORT_RECEIVED },\n  { \"mailbox-order\",\tSORT_ORDER },\n  { \"subject\",\t\tSORT_SUBJECT },\n  { \"from\",\t\tSORT_FROM },\n  { \"size\",\t\tSORT_SIZE },\n  { \"threads\",\t\tSORT_THREADS },\n  { \"to\",\t\tSORT_TO },\n  { \"score\",\t\tSORT_SCORE },\n  { \"spam\",\t\tSORT_SPAM },\n  { NULL,               0 }\n};\n\n/* same as SortMethods, but with \"threads\" replaced by \"date\" */\n\nconst struct mapping_t SortAuxMethods[] = {\n  { \"date\",\t\tSORT_DATE },\n  { \"date-sent\",\tSORT_DATE },\n  { \"date-received\",\tSORT_RECEIVED },\n  { \"mailbox-order\",\tSORT_ORDER },\n  { \"subject\",\t\tSORT_SUBJECT },\n  { \"from\",\t\tSORT_FROM },\n  { \"size\",\t\tSORT_SIZE },\n  { \"threads\",\t\tSORT_DATE },\t/* note: sort_aux == threads\n\t\t\t\t\t * isn't possible.\n\t\t\t\t\t */\n  { \"to\",\t\tSORT_TO },\n  { \"score\",\t\tSORT_SCORE },\n  { \"spam\",\t\tSORT_SPAM },\n  { NULL,               0 }\n};\n\n\nconst struct mapping_t SortBrowserMethods[] = {\n  { \"alpha\",\tSORT_SUBJECT },\n  { \"count\",\tSORT_COUNT },\n  { \"date\",\tSORT_DATE },\n  { \"desc\",\tSORT_DESC },\n  { \"new\",\tSORT_COUNT_NEW },\n  { \"size\",\tSORT_SIZE },\n  { \"unsorted\",\tSORT_ORDER },\n  { NULL,       0 }\n};\n\nconst struct mapping_t SortAliasMethods[] = {\n  { \"alias\",\tSORT_ALIAS },\n  { \"address\",\tSORT_ADDRESS },\n  { \"unsorted\", SORT_ORDER },\n  { NULL,       0 }\n};\n\nconst struct mapping_t SortKeyMethods[] = {\n  { \"address\",\tSORT_ADDRESS },\n  { \"date\",\tSORT_DATE },\n  { \"keyid\",\tSORT_KEYID },\n  { \"trust\",\tSORT_TRUST },\n  { NULL,       0 }\n};\n\nconst struct mapping_t SortSidebarMethods[] = {\n  { \"alpha\",\t\tSORT_PATH },\n  { \"count\",\t\tSORT_COUNT },\n  { \"desc\",\t\tSORT_DESC },\n  { \"flagged\",\t\tSORT_FLAGGED },\n  { \"mailbox-order\",\tSORT_ORDER },\n  { \"name\",\t\tSORT_PATH },\n  { \"new\",\t\tSORT_COUNT_NEW },\n  { \"path\",\t\tSORT_PATH },\n  { \"unsorted\",\t\tSORT_ORDER },\n  { NULL,\t\t0 }\n};\n\n\n/* functions used to parse commands in a rc file */\n\nstatic int parse_list (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_spam_list (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_unlist (BUFFER *, BUFFER *, unsigned long, BUFFER *);\n\nstatic int parse_group (BUFFER *, BUFFER *, unsigned long, BUFFER *);\n\nstatic int parse_lists (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_unlists (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_alias (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_unalias (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_ignore (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_unignore (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_source (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_set (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_my_hdr (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_unmy_hdr (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_subscribe (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_unsubscribe (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_attachments (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_unattachments (BUFFER *, BUFFER *, unsigned long, BUFFER *);\n\nstatic int parse_alternates (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_unalternates (BUFFER *, BUFFER *, unsigned long, BUFFER *);\n\n/* Parse -group arguments */\nstatic int parse_group_context (group_context_t **ctx, BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err);\n\n#ifdef USE_NOTMUCH\nstatic int parse_tag_transforms (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nstatic int parse_tag_formats (BUFFER *, BUFFER *, unsigned long, BUFFER *);\n#endif\n\nstruct command_t\n{\n  char *name;\n  int (*func) (BUFFER *, BUFFER *, unsigned long, BUFFER *);\n  unsigned long data;\n};\n\nconst struct command_t Commands[] = {\n  { \"alternates\",\tparse_alternates,\t0 },\n  { \"unalternates\",\tparse_unalternates,\t0 },\n#ifdef USE_SOCKET\n  { \"account-hook\",     mutt_parse_hook,        M_ACCOUNTHOOK },\n#endif\n  { \"alias\",\t\tparse_alias,\t\t0 },\n  { \"attachments\",\tparse_attachments,\t0 },\n  { \"unattachments\",parse_unattachments,0 },\n  { \"auto_view\",\tparse_list,\t\tUL &AutoViewList },\n  { \"alternative_order\",\tparse_list,\tUL &AlternativeOrderList},\n  { \"bind\",\t\tmutt_parse_bind,\t0 },\n  { \"charset-hook\",\tmutt_parse_hook,\tM_CHARSETHOOK },\n#ifdef HAVE_COLOR\n  { \"color\",\t\tmutt_parse_color,\t0 },\n  { \"uncolor\",\t\tmutt_parse_uncolor,\t0 },\n#endif\n  { \"exec\",\t\tmutt_parse_exec,\t0 },\n  { \"fcc-hook\",\t\tmutt_parse_hook,\tM_FCCHOOK },\n  { \"fcc-save-hook\",\tmutt_parse_hook,\tM_FCCHOOK | M_SAVEHOOK },\n  { \"folder-hook\",\tmutt_parse_hook,\tM_FOLDERHOOK },\n  { \"group\",\t\tparse_group,\t\tM_GROUP },\n  { \"ungroup\",\t\tparse_group,\t\tM_UNGROUP },\n  { \"hdr_order\",\tparse_list,\t\tUL &HeaderOrderList },\n#ifdef HAVE_ICONV\n  { \"iconv-hook\",\tmutt_parse_hook,\tM_ICONVHOOK },\n#endif\n  { \"ignore\",\t\tparse_ignore,\t\t0 },\n  { \"lists\",\t\tparse_lists,\t\t0 },\n  { \"macro\",\t\tmutt_parse_macro,\t0 },\n  { \"mailboxes\",\tmutt_parse_mailboxes,\tM_MAILBOXES },\n  { \"unmailboxes\",\tmutt_parse_mailboxes,\tM_UNMAILBOXES },\n#ifdef USE_NOTMUCH\n  { \"virtual-mailboxes\",mutt_parse_virtual_mailboxes, 0 },\n  { \"tag-transforms\",\tparse_tag_transforms,\t0 },\n  { \"tag-formats\",\tparse_tag_formats,\t0 },\n#endif\n  { \"mailto_allow\",\tparse_list,\t\tUL &MailtoAllow },\n  { \"unmailto_allow\",\tparse_unlist,\t\tUL &MailtoAllow },\n  { \"message-hook\",\tmutt_parse_hook,\tM_MESSAGEHOOK },\n  { \"mbox-hook\",\tmutt_parse_hook,\tM_MBOXHOOK },\n  { \"mime_lookup\",\tparse_list,\tUL &MimeLookupList },\n  { \"unmime_lookup\",\tparse_unlist,\tUL &MimeLookupList },\n  { \"mono\",\t\tmutt_parse_mono,\t0 },\n  { \"my_hdr\",\t\tparse_my_hdr,\t\t0 },\n  { \"pgp-hook\",\t\tmutt_parse_hook,\tM_CRYPTHOOK },\n  { \"crypt-hook\",\tmutt_parse_hook,\tM_CRYPTHOOK },\n  { \"push\",\t\tmutt_parse_push,\t0 },\n  { \"reply-hook\",\tmutt_parse_hook,\tM_REPLYHOOK },\n  { \"reset\",\t\tparse_set,\t\tM_SET_RESET },\n  { \"save-hook\",\tmutt_parse_hook,\tM_SAVEHOOK },\n  { \"score\",\t\tmutt_parse_score,\t0 },\n  { \"send-hook\",\tmutt_parse_hook,\tM_SENDHOOK },\n  { \"send2-hook\",\tmutt_parse_hook,\tM_SEND2HOOK },\n  { \"set\",\t\tparse_set,\t\t0 },\n#ifdef USE_SIDEBAR\n  { \"sidebar_whitelist\",parse_list,\t\tUL &SidebarWhitelist },\n#endif\n  { \"source\",\t\tparse_source,\t\t0 },\n  { \"spam\",\t\tparse_spam_list,\tM_SPAM },\n  { \"nospam\",\t\tparse_spam_list,\tM_NOSPAM },\n  { \"subscribe\",\tparse_subscribe,\t0 },\n  { \"toggle\",\t\tparse_set,\t\tM_SET_INV },\n  { \"unalias\",\t\tparse_unalias,\t\t0 },\n  { \"unalternative_order\",parse_unlist,\t\tUL &AlternativeOrderList },\n  { \"unauto_view\",\tparse_unlist,\t\tUL &AutoViewList },\n  { \"unhdr_order\",\tparse_unlist,\t\tUL &HeaderOrderList },\n  { \"unhook\",\t\tmutt_parse_unhook,\t0 },\n  { \"unignore\",\t\tparse_unignore,\t\t0 },\n  { \"unlists\",\t\tparse_unlists,\t\t0 },\n  { \"unmono\",\t\tmutt_parse_unmono,\t0 },\n  { \"unmy_hdr\",\t\tparse_unmy_hdr,\t\t0 },\n  { \"unscore\",\t\tmutt_parse_unscore,\t0 },\n  { \"unset\",\t\tparse_set,\t\tM_SET_UNSET },\n  { \"unsubscribe\",\tparse_unsubscribe,\t0 },\n  { NULL,\t\tNULL,\t\t\t0 }\n};\n"
  },
  {
    "path": "intl/COPYING.LIB-2",
    "content": "\t\t  GNU LIBRARY GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1991 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the library GPL.  It is\n numbered 2 because it goes with version 2 of the ordinary GPL.]\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n  This license, the Library General Public License, applies to some\nspecially designated Free Software Foundation software, and to any\nother libraries whose authors decide to use it.  You can use it for\nyour libraries, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if\nyou distribute copies of the library, or if you modify it.\n\n  For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou.  You must make sure that they, too, receive or can get the source\ncode.  If you link a program with the library, you must provide\ncomplete object files to the recipients so that they can relink them\nwith the library, after making changes to the library and recompiling\nit.  And you must show them these terms so they know their rights.\n\n  Our method of protecting your rights has two steps: (1) copyright\nthe library, and (2) offer you this license which gives you legal\npermission to copy, distribute and/or modify the library.\n\n  Also, for each distributor's protection, we want to make certain\nthat everyone understands that there is no warranty for this free\nlibrary.  If the library is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original\nversion, so that any problems introduced by others will not reflect on\nthe original authors' reputations.\n\f\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that companies distributing free\nsoftware will individually obtain patent licenses, thus in effect\ntransforming the program into proprietary software.  To prevent this,\nwe have made it clear that any patent must be licensed for everyone's\nfree use or not licensed at all.\n\n  Most GNU software, including some libraries, is covered by the ordinary\nGNU General Public License, which was designed for utility programs.  This\nlicense, the GNU Library General Public License, applies to certain\ndesignated libraries.  This license is quite different from the ordinary\none; be sure to read it in full, and don't assume that anything in it is\nthe same as in the ordinary license.\n\n  The reason we have a separate public license for some libraries is that\nthey blur the distinction we usually make between modifying or adding to a\nprogram and simply using it.  Linking a program with a library, without\nchanging the library, is in some sense simply using the library, and is\nanalogous to running a utility program or application program.  However, in\na textual and legal sense, the linked executable is a combined work, a\nderivative of the original library, and the ordinary General Public License\ntreats it as such.\n\n  Because of this blurred distinction, using the ordinary General\nPublic License for libraries did not effectively promote software\nsharing, because most developers did not use the libraries.  We\nconcluded that weaker conditions might promote sharing better.\n\n  However, unrestricted linking of non-free programs would deprive the\nusers of those programs of all benefit from the free status of the\nlibraries themselves.  This Library General Public License is intended to\npermit developers of non-free programs to use free libraries, while\npreserving your freedom as a user of such programs to change the free\nlibraries that are incorporated in them.  (We have not seen how to achieve\nthis as regards changes in header files, but we have achieved it as regards\nchanges in the actual functions of the Library.)  The hope is that this\nwill lead to faster development of free libraries.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.  Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\".  The\nformer contains code derived from the library, while the latter only\nworks together with the library.\n\n  Note that it is possible for a library to be covered by the ordinary\nGeneral Public License rather than by this special one.\n\f\n\t\t  GNU LIBRARY GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License Agreement applies to any software library which\ncontains a notice placed by the copyright holder or other authorized\nparty saying it may be distributed under the terms of this Library\nGeneral Public License (also called \"this License\").  Each licensee is\naddressed as \"you\".\n\n  A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n  The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms.  A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language.  (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n  \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it.  For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n  Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it).  Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n  \n  1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n  You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n  2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) The modified work must itself be a software library.\n\n    b) You must cause the files modified to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    c) You must cause the whole of the work to be licensed at no\n    charge to all third parties under the terms of this License.\n\n    d) If a facility in the modified Library refers to a function or a\n    table of data to be supplied by an application program that uses\n    the facility, other than as an argument passed when the facility\n    is invoked, then you must make a good faith effort to ensure that,\n    in the event an application does not supply such function or\n    table, the facility still operates, and performs whatever part of\n    its purpose remains meaningful.\n\n    (For example, a function in a library to compute square roots has\n    a purpose that is entirely well-defined independent of the\n    application.  Therefore, Subsection 2d requires that any\n    application-supplied function or table used by this function must\n    be optional: if the application does not supply it, the square\n    root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library.  To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License.  (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.)  Do not make any other change in\nthese notices.\n\f\n  Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n  This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n  4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n  If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\".  Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n  However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\".  The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n  When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library.  The\nthreshold for this to be true is not precisely defined by law.\n\n  If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork.  (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n  Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n  6. As an exception to the Sections above, you may also compile or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n  You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License.  You must supply a copy of this License.  If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License.  Also, you must do one\nof these things:\n\n    a) Accompany the work with the complete corresponding\n    machine-readable source code for the Library including whatever\n    changes were used in the work (which must be distributed under\n    Sections 1 and 2 above); and, if the work is an executable linked\n    with the Library, with the complete machine-readable \"work that\n    uses the Library\", as object code and/or source code, so that the\n    user can modify the Library and then relink to produce a modified\n    executable containing the modified Library.  (It is understood\n    that the user who changes the contents of definitions files in the\n    Library will not necessarily be able to recompile the application\n    to use the modified definitions.)\n\n    b) Accompany the work with a written offer, valid for at\n    least three years, to give the same user the materials\n    specified in Subsection 6a, above, for a charge no more\n    than the cost of performing this distribution.\n\n    c) If distribution of the work is made by offering access to copy\n    from a designated place, offer equivalent access to copy the above\n    specified materials from the same place.\n\n    d) Verify that the user has already received a copy of these\n    materials or that you have already sent this user a copy.\n\n  For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it.  However, as a special exception,\nthe source code distributed need not include anything that is normally\ndistributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n  It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system.  Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n  7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n    a) Accompany the combined library with a copy of the same work\n    based on the Library, uncombined with any other library\n    facilities.  This must be distributed under the terms of the\n    Sections above.\n\n    b) Give prominent notice with the combined library of the fact\n    that part of it is a work based on the Library, and explaining\n    where to find the accompanying uncombined form of the same work.\n\n  8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License.  Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License.  However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n  9. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n  10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\f\n  11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded.  In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n  13. The Free Software Foundation may publish revised and/or new\nversions of the Library General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation.  If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n  14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission.  For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this.  Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\f\n     Appendix: How to Apply These Terms to Your New Libraries\n\n  If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change.  You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n  To apply these terms, attach the following notices to the library.  It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the library's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This library is free software; you can redistribute it and/or\n    modify it under the terms of the GNU Library General Public\n    License as published by the Free Software Foundation; either\n    version 2 of the License, or (at your option) any later version.\n\n    This library is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n    Library General Public License for more details.\n\n    You should have received a copy of the GNU Library General Public\n    License along with this library; if not, write to the Free\n    Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n    MA  02110-1301, USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the\n  library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n  <signature of Ty Coon>, 1 April 1990\n  Ty Coon, President of Vice\n\nThat's all there is to it!\n"
  },
  {
    "path": "intl/COPYING.LIB-2.1",
    "content": "\t\t  GNU LESSER GENERAL PUBLIC LICENSE\n\t\t       Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL.  It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n  This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it.  You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n  When we speak of free software, we are referring to freedom of use,\nnot price.  Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n  To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights.  These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n  For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou.  You must make sure that they, too, receive or can get the source\ncode.  If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit.  And you must show them these terms so they know their rights.\n\n  We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n  To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library.  Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n  Finally, software patents pose a constant threat to the existence of\nany free program.  We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder.  Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n  Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License.  This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License.  We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n  When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library.  The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom.  The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n  We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License.  It also provides other free software developers Less\nof an advantage over competing non-free programs.  These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries.  However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n  For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard.  To achieve this, non-free programs must be\nallowed to use the library.  A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries.  In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n  In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software.  For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n  Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.  Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\".  The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n\t\t  GNU LESSER GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n  A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n  The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms.  A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language.  (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n  \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it.  For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n  Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it).  Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n  \n  1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n  You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n  2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) The modified work must itself be a software library.\n\n    b) You must cause the files modified to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    c) You must cause the whole of the work to be licensed at no\n    charge to all third parties under the terms of this License.\n\n    d) If a facility in the modified Library refers to a function or a\n    table of data to be supplied by an application program that uses\n    the facility, other than as an argument passed when the facility\n    is invoked, then you must make a good faith effort to ensure that,\n    in the event an application does not supply such function or\n    table, the facility still operates, and performs whatever part of\n    its purpose remains meaningful.\n\n    (For example, a function in a library to compute square roots has\n    a purpose that is entirely well-defined independent of the\n    application.  Therefore, Subsection 2d requires that any\n    application-supplied function or table used by this function must\n    be optional: if the application does not supply it, the square\n    root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library.  To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License.  (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.)  Do not make any other change in\nthese notices.\n\f\n  Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n  This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n  4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n  If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\".  Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n  However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\".  The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n  When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library.  The\nthreshold for this to be true is not precisely defined by law.\n\n  If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork.  (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n  Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n  6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n  You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License.  You must supply a copy of this License.  If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License.  Also, you must do one\nof these things:\n\n    a) Accompany the work with the complete corresponding\n    machine-readable source code for the Library including whatever\n    changes were used in the work (which must be distributed under\n    Sections 1 and 2 above); and, if the work is an executable linked\n    with the Library, with the complete machine-readable \"work that\n    uses the Library\", as object code and/or source code, so that the\n    user can modify the Library and then relink to produce a modified\n    executable containing the modified Library.  (It is understood\n    that the user who changes the contents of definitions files in the\n    Library will not necessarily be able to recompile the application\n    to use the modified definitions.)\n\n    b) Use a suitable shared library mechanism for linking with the\n    Library.  A suitable mechanism is one that (1) uses at run time a\n    copy of the library already present on the user's computer system,\n    rather than copying library functions into the executable, and (2)\n    will operate properly with a modified version of the library, if\n    the user installs one, as long as the modified version is\n    interface-compatible with the version that the work was made with.\n\n    c) Accompany the work with a written offer, valid for at\n    least three years, to give the same user the materials\n    specified in Subsection 6a, above, for a charge no more\n    than the cost of performing this distribution.\n\n    d) If distribution of the work is made by offering access to copy\n    from a designated place, offer equivalent access to copy the above\n    specified materials from the same place.\n\n    e) Verify that the user has already received a copy of these\n    materials or that you have already sent this user a copy.\n\n  For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it.  However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n  It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system.  Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n  7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n    a) Accompany the combined library with a copy of the same work\n    based on the Library, uncombined with any other library\n    facilities.  This must be distributed under the terms of the\n    Sections above.\n\n    b) Give prominent notice with the combined library of the fact\n    that part of it is a work based on the Library, and explaining\n    where to find the accompanying uncombined form of the same work.\n\n  8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License.  Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License.  However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n  9. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n  10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n  11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded.  In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n  13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation.  If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n  14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission.  For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this.  Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\f\n           How to Apply These Terms to Your New Libraries\n\n  If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change.  You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n  To apply these terms, attach the following notices to the library.  It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the library's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This library is free software; you can redistribute it and/or\n    modify it under the terms of the GNU Lesser General Public\n    License as published by the Free Software Foundation; either\n    version 2.1 of the License, or (at your option) any later version.\n\n    This library is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n    Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public\n    License along with this library; if not, write to the Free Software\n    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the\n  library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n  <signature of Ty Coon>, 1 April 1990\n  Ty Coon, President of Vice\n\nThat's all there is to it!\n\n\n"
  },
  {
    "path": "intl/ChangeLog",
    "content": "2001-09-13  GNU  <bug-gnu-utils@gnu.org>\n\n\t* Version 0.10.40 released.\n\n"
  },
  {
    "path": "intl/VERSION",
    "content": "GNU gettext library from gettext-0.10.40\n"
  },
  {
    "path": "intl/bindtextdom.c",
    "content": "/* Implementation of the bindtextdomain(3) function\n   Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <stddef.h>\n#include <stdlib.h>\n#include <string.h>\n\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n#include \"gettextP.h\"\n\n#ifdef _LIBC\n/* We have to handle multi-threaded applications.  */\n# include <bits/libc-lock.h>\n#else\n/* Provide dummy implementation if this is outside glibc.  */\n# define __libc_rwlock_define(CLASS, NAME)\n# define __libc_rwlock_wrlock(NAME)\n# define __libc_rwlock_unlock(NAME)\n#endif\n\n/* The internal variables in the standalone libintl.a must have different\n   names than the internal variables in GNU libc, otherwise programs\n   using libintl.a cannot be linked statically.  */\n#if !defined _LIBC\n# define _nl_default_dirname _nl_default_dirname__\n# define _nl_domain_bindings _nl_domain_bindings__\n#endif\n\n/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>.  */\n#ifndef offsetof\n# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))\n#endif\n\n/* @@ end of prolog @@ */\n\n/* Contains the default location of the message catalogs.  */\nextern const char _nl_default_dirname[];\n\n/* List with bindings of specific domains.  */\nextern struct binding *_nl_domain_bindings;\n\n/* Lock variable to protect the global data in the gettext implementation.  */\n__libc_rwlock_define (extern, _nl_state_lock)\n\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define BINDTEXTDOMAIN __bindtextdomain\n# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset\n# ifndef strdup\n#  define strdup(str) __strdup (str)\n# endif\n#else\n# define BINDTEXTDOMAIN bindtextdomain__\n# define BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset__\n#endif\n\n/* Prototypes for local functions.  */\nstatic void set_binding_values PARAMS ((const char *domainname,\n\t\t\t\t\tconst char **dirnamep,\n\t\t\t\t\tconst char **codesetp));\n     \n/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP\n   to be used for the DOMAINNAME message catalog.\n   If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not\n   modified, only the current value is returned.\n   If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither\n   modified nor returned.  */\nstatic void\nset_binding_values (domainname, dirnamep, codesetp)\n     const char *domainname;\n     const char **dirnamep;\n     const char **codesetp;\n{\n  struct binding *binding;\n  int modified;\n\n  /* Some sanity checks.  */\n  if (domainname == NULL || domainname[0] == '\\0')\n    {\n      if (dirnamep)\n\t*dirnamep = NULL;\n      if (codesetp)\n\t*codesetp = NULL;\n      return;\n    }\n\n  __libc_rwlock_wrlock (_nl_state_lock);\n\n  modified = 0;\n\n  for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)\n    {\n      int compare = strcmp (domainname, binding->domainname);\n      if (compare == 0)\n\t/* We found it!  */\n\tbreak;\n      if (compare < 0)\n\t{\n\t  /* It is not in the list.  */\n\t  binding = NULL;\n\t  break;\n\t}\n    }\n\n  if (binding != NULL)\n    {\n      if (dirnamep)\n\t{\n\t  const char *dirname = *dirnamep;\n\n\t  if (dirname == NULL)\n\t    /* The current binding has be to returned.  */\n\t    *dirnamep = binding->dirname;\n\t  else\n\t    {\n\t      /* The domain is already bound.  If the new value and the old\n\t\t one are equal we simply do nothing.  Otherwise replace the\n\t\t old binding.  */\n\t      char *result = binding->dirname;\n\t      if (strcmp (dirname, result) != 0)\n\t\t{\n\t\t  if (strcmp (dirname, _nl_default_dirname) == 0)\n\t\t    result = (char *) _nl_default_dirname;\n\t\t  else\n\t\t    {\n#if defined _LIBC || defined HAVE_STRDUP\n\t\t      result = strdup (dirname);\n#else\n\t\t      size_t len = strlen (dirname) + 1;\n\t\t      result = (char *) malloc (len);\n\t\t      if (__builtin_expect (result != NULL, 1))\n\t\t\tmemcpy (result, dirname, len);\n#endif\n\t\t    }\n\n\t\t  if (__builtin_expect (result != NULL, 1))\n\t\t    {\n\t\t      if (binding->dirname != _nl_default_dirname)\n\t\t\tfree (binding->dirname);\n\n\t\t      binding->dirname = result;\n\t\t      modified = 1;\n\t\t    }\n\t\t}\n\t      *dirnamep = result;\n\t    }\n\t}\n\n      if (codesetp)\n\t{\n\t  const char *codeset = *codesetp;\n\n\t  if (codeset == NULL)\n\t    /* The current binding has be to returned.  */\n\t    *codesetp = binding->codeset;\n\t  else\n\t    {\n\t      /* The domain is already bound.  If the new value and the old\n\t\t one are equal we simply do nothing.  Otherwise replace the\n\t\t old binding.  */\n\t      char *result = binding->codeset;\n\t      if (result == NULL || strcmp (codeset, result) != 0)\n\t\t{\n#if defined _LIBC || defined HAVE_STRDUP\n\t\t  result = strdup (codeset);\n#else\n\t\t  size_t len = strlen (codeset) + 1;\n\t\t  result = (char *) malloc (len);\n\t\t  if (__builtin_expect (result != NULL, 1))\n\t\t    memcpy (result, codeset, len);\n#endif\n\n\t\t  if (__builtin_expect (result != NULL, 1))\n\t\t    {\n\t\t      if (binding->codeset != NULL)\n\t\t\tfree (binding->codeset);\n\n\t\t      binding->codeset = result;\n\t\t      binding->codeset_cntr++;\n\t\t      modified = 1;\n\t\t    }\n\t\t}\n\t      *codesetp = result;\n\t    }\n\t}\n    }\n  else if ((dirnamep == NULL || *dirnamep == NULL)\n\t   && (codesetp == NULL || *codesetp == NULL))\n    {\n      /* Simply return the default values.  */\n      if (dirnamep)\n\t*dirnamep = _nl_default_dirname;\n      if (codesetp)\n\t*codesetp = NULL;\n    }\n  else\n    {\n      /* We have to create a new binding.  */\n      size_t len = strlen (domainname) + 1;\n      struct binding *new_binding =\n\t(struct binding *) malloc (offsetof (struct binding, domainname) + len);\n\n      if (__builtin_expect (new_binding == NULL, 0))\n\tgoto failed;\n\n      memcpy (new_binding->domainname, domainname, len);\n\n      if (dirnamep)\n\t{\n\t  const char *dirname = *dirnamep;\n\n\t  if (dirname == NULL)\n\t    /* The default value.  */\n\t    dirname = _nl_default_dirname;\n\t  else\n\t    {\n\t      if (strcmp (dirname, _nl_default_dirname) == 0)\n\t\tdirname = _nl_default_dirname;\n\t      else\n\t\t{\n\t\t  char *result;\n#if defined _LIBC || defined HAVE_STRDUP\n\t\t  result = strdup (dirname);\n\t\t  if (__builtin_expect (result == NULL, 0))\n\t\t    goto failed_dirname;\n#else\n\t\t  size_t len = strlen (dirname) + 1;\n\t\t  result = (char *) malloc (len);\n\t\t  if (__builtin_expect (result == NULL, 0))\n\t\t    goto failed_dirname;\n\t\t  memcpy (result, dirname, len);\n#endif\n\t\t  dirname = result;\n\t\t}\n\t    }\n\t  *dirnamep = dirname;\n\t  new_binding->dirname = (char *) dirname;\n\t}\n      else\n\t/* The default value.  */\n\tnew_binding->dirname = (char *) _nl_default_dirname;\n\n      new_binding->codeset_cntr = 0;\n\n      if (codesetp)\n\t{\n\t  const char *codeset = *codesetp;\n\n\t  if (codeset != NULL)\n\t    {\n\t      char *result;\n\n#if defined _LIBC || defined HAVE_STRDUP\n\t      result = strdup (codeset);\n\t      if (__builtin_expect (result == NULL, 0))\n\t\tgoto failed_codeset;\n#else\n\t      size_t len = strlen (codeset) + 1;\n\t      result = (char *) malloc (len);\n\t      if (__builtin_expect (result == NULL, 0))\n\t\tgoto failed_codeset;\n\t      memcpy (result, codeset, len);\n#endif\n\t      codeset = result;\n\t      new_binding->codeset_cntr++;\n\t    }\n\t  *codesetp = codeset;\n\t  new_binding->codeset = (char *) codeset;\n\t}\n      else\n\tnew_binding->codeset = NULL;\n\n      /* Now enqueue it.  */\n      if (_nl_domain_bindings == NULL\n\t  || strcmp (domainname, _nl_domain_bindings->domainname) < 0)\n\t{\n\t  new_binding->next = _nl_domain_bindings;\n\t  _nl_domain_bindings = new_binding;\n\t}\n      else\n\t{\n\t  binding = _nl_domain_bindings;\n\t  while (binding->next != NULL\n\t\t && strcmp (domainname, binding->next->domainname) > 0)\n\t    binding = binding->next;\n\n\t  new_binding->next = binding->next;\n\t  binding->next = new_binding;\n\t}\n\n      modified = 1;\n\n      /* Here we deal with memory allocation failures.  */\n      if (0)\n\t{\n\tfailed_codeset:\n\t  if (new_binding->dirname != _nl_default_dirname)\n\t    free (new_binding->dirname);\n\tfailed_dirname:\n\t  free (new_binding);\n\tfailed:\n\t  if (dirnamep)\n\t    *dirnamep = NULL;\n\t  if (codesetp)\n\t    *codesetp = NULL;\n\t}\n    }\n\n  /* If we modified any binding, we flush the caches.  */\n  if (modified)\n    ++_nl_msg_cat_cntr;\n\n  __libc_rwlock_unlock (_nl_state_lock);\n}\n\n/* Specify that the DOMAINNAME message catalog will be found\n   in DIRNAME rather than in the system locale data base.  */\nchar *\nBINDTEXTDOMAIN (domainname, dirname)\n     const char *domainname;\n     const char *dirname;\n{\n  set_binding_values (domainname, &dirname, NULL);\n  return (char *) dirname;\n}\n\n/* Specify the character encoding in which the messages from the\n   DOMAINNAME message catalog will be returned.  */\nchar *\nBIND_TEXTDOMAIN_CODESET (domainname, codeset)\n     const char *domainname;\n     const char *codeset;\n{\n  set_binding_values (domainname, NULL, &codeset);\n  return (char *) codeset;\n}\n\n#ifdef _LIBC\n/* Aliases for function names in GNU C Library.  */\nweak_alias (__bindtextdomain, bindtextdomain);\nweak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);\n#endif\n"
  },
  {
    "path": "intl/cat-compat.c",
    "content": ""
  },
  {
    "path": "intl/config.charset",
    "content": "#! /bin/sh\n# Output a system dependent table of character encoding aliases.\n#\n#   Copyright (C) 2000-2001 Free Software Foundation, Inc.\n#\n#   This program is free software; you can redistribute it and/or modify it\n#   under the terms of the GNU Library General Public License as published\n#   by the Free Software Foundation; either version 2, or (at your option)\n#   any later version.\n#\n#   This program is distributed in the hope that it will be useful,\n#   but WITHOUT ANY WARRANTY; without even the implied warranty of\n#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n#   Library General Public License for more details.\n#\n#   You should have received a copy of the GNU Library General Public\n#   License along with this program; if not, write to the Free Software\n#   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n#   USA.\n#\n# The table consists of lines of the form\n#    ALIAS  CANONICAL\n#\n# ALIAS is the (system dependent) result of \"nl_langinfo (CODESET)\".\n# ALIAS is compared in a case sensitive way.\n#\n# CANONICAL is the GNU canonical name for this character encoding.\n# It must be an encoding supported by libiconv. Support by GNU libc is\n# also desirable. CANONICAL is case insensitive. Usually an upper case\n# MIME charset name is preferred.\n# The current list of GNU canonical charset names is as follows.\n#\n#       name                         used by which systems         a MIME name?\n#   ASCII, ANSI_X3.4-1968     glibc solaris freebsd\n#   ISO-8859-1                glibc aix hpux irix osf solaris freebsd   yes\n#   ISO-8859-2                glibc aix hpux irix osf solaris freebsd   yes\n#   ISO-8859-3                glibc                                     yes\n#   ISO-8859-4                osf solaris freebsd                       yes\n#   ISO-8859-5                glibc aix hpux irix osf solaris freebsd   yes\n#   ISO-8859-6                glibc aix hpux solaris                    yes\n#   ISO-8859-7                glibc aix hpux irix osf solaris           yes\n#   ISO-8859-8                glibc aix hpux osf solaris                yes\n#   ISO-8859-9                glibc aix hpux irix osf solaris           yes\n#   ISO-8859-13               glibc\n#   ISO-8859-15               glibc aix osf solaris freebsd\n#   KOI8-R                    glibc solaris freebsd                     yes\n#   KOI8-U                    glibc freebsd                             yes\n#   CP437                     dos\n#   CP775                     dos\n#   CP850                     aix osf dos\n#   CP852                     dos\n#   CP855                     dos\n#   CP856                     aix\n#   CP857                     dos\n#   CP861                     dos\n#   CP862                     dos\n#   CP864                     dos\n#   CP865                     dos\n#   CP866                     freebsd dos\n#   CP869                     dos\n#   CP874                     win32 dos\n#   CP922                     aix\n#   CP932                     aix win32 dos\n#   CP943                     aix\n#   CP949                     osf win32 dos\n#   CP950                     win32 dos\n#   CP1046                    aix\n#   CP1124                    aix\n#   CP1129                    aix\n#   CP1250                    win32\n#   CP1251                    glibc win32\n#   CP1252                    aix win32\n#   CP1253                    win32\n#   CP1254                    win32\n#   CP1255                    win32\n#   CP1256                    win32\n#   CP1257                    win32\n#   GB2312                    glibc aix hpux irix solaris freebsd       yes\n#   EUC-JP                    glibc aix hpux irix osf solaris freebsd   yes\n#   EUC-KR                    glibc aix hpux irix osf solaris freebsd   yes\n#   EUC-TW                    glibc aix hpux irix osf solaris\n#   BIG5                      glibc aix hpux osf solaris freebsd        yes\n#   BIG5-HKSCS                glibc\n#   GBK                       aix osf win32 dos\n#   GB18030                   glibc\n#   SHIFT_JIS                 hpux osf solaris freebsd                  yes\n#   JOHAB                     glibc win32\n#   TIS-620                   glibc aix hpux osf solaris\n#   VISCII                    glibc                                     yes\n#   HP-ROMAN8                 hpux\n#   HP-ARABIC8                hpux\n#   HP-GREEK8                 hpux\n#   HP-HEBREW8                hpux\n#   HP-TURKISH8               hpux\n#   HP-KANA8                  hpux\n#   DEC-KANJI                 osf\n#   DEC-HANYU                 osf\n#   UTF-8                     glibc aix hpux osf solaris                yes\n#\n# Note: Names which are not marked as being a MIME name should not be used in\n# Internet protocols for information interchange (mail, news, etc.).\n#\n# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications\n# must understand both names and treat them as equivalent.\n#\n# The first argument passed to this file is the canonical host specification,\n#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM\n# or\n#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM\n\nhost=\"$1\"\nos=`echo \"$host\" | sed -e 's/^[^-]*-[^-]*-\\(.*\\)$/\\1/'`\necho \"# This file contains a table of character encoding aliases,\"\necho \"# suitable for operating system '${os}'.\"\necho \"# It was automatically generated from config.charset.\"\n# List of references, updated during installation:\necho \"# Packages using this file: \"\ncase \"$os\" in\n    linux* | *-gnu*)\n\t# With glibc-2.1 or newer, we don't need any canonicalization,\n\t# because glibc has iconv and both glibc and libiconv support all\n\t# GNU canonical names directly. Therefore, the Makefile does not\n\t# need to install the alias file at all.\n\t# The following applies only to glibc-2.0.x and older libcs.\n\techo \"ISO_646.IRV:1983 ASCII\"\n\t;;\n    aix*)\n\techo \"ISO8859-1 ISO-8859-1\"\n\techo \"ISO8859-2 ISO-8859-2\"\n\techo \"ISO8859-5 ISO-8859-5\"\n\techo \"ISO8859-6 ISO-8859-6\"\n\techo \"ISO8859-7 ISO-8859-7\"\n\techo \"ISO8859-8 ISO-8859-8\"\n\techo \"ISO8859-9 ISO-8859-9\"\n\techo \"ISO8859-15 ISO-8859-15\"\n\techo \"IBM-850 CP850\"\n\techo \"IBM-856 CP856\"\n\techo \"IBM-921 ISO-8859-13\"\n\techo \"IBM-922 CP922\"\n\techo \"IBM-932 CP932\"\n\techo \"IBM-943 CP943\"\n\techo \"IBM-1046 CP1046\"\n\techo \"IBM-1124 CP1124\"\n\techo \"IBM-1129 CP1129\"\n\techo \"IBM-1252 CP1252\"\n\techo \"IBM-eucCN GB2312\"\n\techo \"IBM-eucJP EUC-JP\"\n\techo \"IBM-eucKR EUC-KR\"\n\techo \"IBM-eucTW EUC-TW\"\n\techo \"big5 BIG5\"\n\techo \"GBK GBK\"\n\techo \"TIS-620 TIS-620\"\n\techo \"UTF-8 UTF-8\"\n\t;;\n    hpux*)\n\techo \"iso88591 ISO-8859-1\"\n\techo \"iso88592 ISO-8859-2\"\n\techo \"iso88595 ISO-8859-5\"\n\techo \"iso88596 ISO-8859-6\"\n\techo \"iso88597 ISO-8859-7\"\n\techo \"iso88598 ISO-8859-8\"\n\techo \"iso88599 ISO-8859-9\"\n\techo \"iso885915 ISO-8859-15\"\n\techo \"roman8 HP-ROMAN8\"\n\techo \"arabic8 HP-ARABIC8\"\n\techo \"greek8 HP-GREEK8\"\n\techo \"hebrew8 HP-HEBREW8\"\n\techo \"turkish8 HP-TURKISH8\"\n\techo \"kana8 HP-KANA8\"\n\techo \"tis620 TIS-620\"\n\techo \"big5 BIG5\"\n\techo \"eucJP EUC-JP\"\n\techo \"eucKR EUC-KR\"\n\techo \"eucTW EUC-TW\"\n\techo \"hp15CN GB2312\"\n\t#echo \"ccdc ?\" # what is this?\n\techo \"SJIS SHIFT_JIS\"\n\techo \"utf8 UTF-8\"\n\t;;\n    irix*)\n\techo \"ISO8859-1 ISO-8859-1\"\n\techo \"ISO8859-2 ISO-8859-2\"\n\techo \"ISO8859-5 ISO-8859-5\"\n\techo \"ISO8859-7 ISO-8859-7\"\n\techo \"ISO8859-9 ISO-8859-9\"\n\techo \"eucCN GB2312\"\n\techo \"eucJP EUC-JP\"\n\techo \"eucKR EUC-KR\"\n\techo \"eucTW EUC-TW\"\n\t;;\n    osf*)\n\techo \"ISO8859-1 ISO-8859-1\"\n\techo \"ISO8859-2 ISO-8859-2\"\n\techo \"ISO8859-4 ISO-8859-4\"\n\techo \"ISO8859-5 ISO-8859-5\"\n\techo \"ISO8859-7 ISO-8859-7\"\n\techo \"ISO8859-8 ISO-8859-8\"\n\techo \"ISO8859-9 ISO-8859-9\"\n\techo \"ISO8859-15 ISO-8859-15\"\n\techo \"cp850 CP850\"\n\techo \"big5 BIG5\"\n\techo \"dechanyu DEC-HANYU\"\n\techo \"dechanzi GB2312\"\n\techo \"deckanji DEC-KANJI\"\n\techo \"deckorean EUC-KR\"\n\techo \"eucJP EUC-JP\"\n\techo \"eucKR EUC-KR\"\n\techo \"eucTW EUC-TW\"\n\techo \"GBK GBK\"\n\techo \"KSC5601 CP949\"\n\techo \"sdeckanji EUC-JP\"\n\techo \"SJIS SHIFT_JIS\"\n\techo \"TACTIS TIS-620\"\n\techo \"UTF-8 UTF-8\"\n\t;;\n    solaris*)\n\techo \"646 ASCII\"\n\techo \"ISO8859-1 ISO-8859-1\"\n\techo \"ISO8859-2 ISO-8859-2\"\n\techo \"ISO8859-4 ISO-8859-4\"\n\techo \"ISO8859-5 ISO-8859-5\"\n\techo \"ISO8859-6 ISO-8859-6\"\n\techo \"ISO8859-7 ISO-8859-7\"\n\techo \"ISO8859-8 ISO-8859-8\"\n\techo \"ISO8859-9 ISO-8859-9\"\n\techo \"ISO8859-15 ISO-8859-15\"\n\techo \"koi8-r KOI8-R\"\n\techo \"BIG5 BIG5\"\n\techo \"gb2312 GB2312\"\n\techo \"cns11643 EUC-TW\"\n\techo \"5601 EUC-KR\"\n\techo \"eucJP EUC-JP\"\n\techo \"PCK SHIFT_JIS\"\n\techo \"TIS620.2533 TIS-620\"\n\t#echo \"sun_eu_greek ?\" # what is this?\n\techo \"UTF-8 UTF-8\"\n\t;;\n    freebsd*)\n\t# FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore\n\t# localcharset.c falls back to using the full locale name\n\t# from the environment variables.\n\techo \"C ASCII\"\n\techo \"US-ASCII ASCII\"\n\tfor l in la_LN lt_LN; do\n\t  echo \"$l.ASCII ASCII\"\n\tdone\n\tfor l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \\\n\t         fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \\\n\t         lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do\n\t  echo \"$l.ISO_8859-1 ISO-8859-1\"\n\t  echo \"$l.DIS_8859-15 ISO-8859-15\"\n\tdone\n\tfor l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do\n\t  echo \"$l.ISO_8859-2 ISO-8859-2\"\n\tdone\n\tfor l in la_LN lt_LT; do\n\t  echo \"$l.ISO_8859-4 ISO-8859-4\"\n\tdone\n\tfor l in ru_RU ru_SU; do\n\t  echo \"$l.KOI8-R KOI8-R\"\n\t  echo \"$l.ISO_8859-5 ISO-8859-5\"\n\t  echo \"$l.CP866 CP866\"\n\tdone\n\techo \"uk_UA.KOI8-U KOI8-U\"\n\techo \"zh_TW.BIG5 BIG5\"\n\techo \"zh_TW.Big5 BIG5\"\n\techo \"zh_CN.EUC GB2312\"\n\techo \"ja_JP.EUC EUC-JP\"\n\techo \"ja_JP.SJIS SHIFT_JIS\"\n\techo \"ja_JP.Shift_JIS SHIFT_JIS\"\n\techo \"ko_KR.EUC EUC-KR\"\n\t;;\n    beos*)\n\t# BeOS has a single locale, and it has UTF-8 encoding.\n\techo \"* UTF-8\"\n\t;;\n    msdosdjgpp*)\n\t# DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore\n\t# localcharset.c falls back to using the full locale name\n\t# from the environment variables.\n\techo \"#\"\n\techo \"# The encodings given here may not all be correct.\"\n\techo \"# If you find that the encoding given for your language and\"\n\techo \"# country is not the one your DOS machine actually uses, just\"\n\techo \"# correct it in this file, and send a mail to\"\n\techo \"# Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>\"\n\techo \"# and Bruno Haible <haible@clisp.cons.org>.\"\n\techo \"#\"\n\techo \"C ASCII\"\n\t# ISO-8859-1 languages\n\techo \"ca CP850\"\n\techo \"ca_ES CP850\"\n\techo \"da CP865\"    # not CP850 ??\n\techo \"da_DK CP865\" # not CP850 ??\n\techo \"de CP850\"\n\techo \"de_AT CP850\"\n\techo \"de_CH CP850\"\n\techo \"de_DE CP850\"\n\techo \"en CP850\"\n\techo \"en_AU CP850\" # not CP437 ??\n\techo \"en_CA CP850\"\n\techo \"en_GB CP850\"\n\techo \"en_NZ CP437\"\n\techo \"en_US CP437\"\n\techo \"en_ZA CP850\" # not CP437 ??\n\techo \"es CP850\"\n\techo \"es_AR CP850\"\n\techo \"es_BO CP850\"\n\techo \"es_CL CP850\"\n\techo \"es_CO CP850\"\n\techo \"es_CR CP850\"\n\techo \"es_CU CP850\"\n\techo \"es_DO CP850\"\n\techo \"es_EC CP850\"\n\techo \"es_ES CP850\"\n\techo \"es_GT CP850\"\n\techo \"es_HN CP850\"\n\techo \"es_MX CP850\"\n\techo \"es_NI CP850\"\n\techo \"es_PA CP850\"\n\techo \"es_PY CP850\"\n\techo \"es_PE CP850\"\n\techo \"es_SV CP850\"\n\techo \"es_UY CP850\"\n\techo \"es_VE CP850\"\n\techo \"et CP850\"\n\techo \"et_EE CP850\"\n\techo \"eu CP850\"\n\techo \"eu_ES CP850\"\n\techo \"fi CP850\"\n\techo \"fi_FI CP850\"\n\techo \"fr CP850\"\n\techo \"fr_BE CP850\"\n\techo \"fr_CA CP850\"\n\techo \"fr_CH CP850\"\n\techo \"fr_FR CP850\"\n\techo \"ga CP850\"\n\techo \"ga_IE CP850\"\n\techo \"gd CP850\"\n\techo \"gd_GB CP850\"\n\techo \"gl CP850\"\n\techo \"gl_ES CP850\"\n\techo \"id CP850\"    # not CP437 ??\n\techo \"id_ID CP850\" # not CP437 ??\n\techo \"is CP861\"    # not CP850 ??\n\techo \"is_IS CP861\" # not CP850 ??\n\techo \"it CP850\"\n\techo \"it_CH CP850\"\n\techo \"it_IT CP850\"\n\techo \"lt CP775\"\n\techo \"lt_LT CP775\"\n\techo \"lv CP775\"\n\techo \"lv_LV CP775\"\n\techo \"nb CP865\"    # not CP850 ??\n\techo \"nb_NO CP865\" # not CP850 ??\n\techo \"nl CP850\"\n\techo \"nl_BE CP850\"\n\techo \"nl_NL CP850\"\n\techo \"nn CP865\"    # not CP850 ??\n\techo \"nn_NO CP865\" # not CP850 ??\n\techo \"no CP865\"    # not CP850 ??\n\techo \"no_NO CP865\" # not CP850 ??\n\techo \"pt CP850\"\n\techo \"pt_BR CP850\"\n\techo \"pt_PT CP850\"\n\techo \"sv CP850\"\n\techo \"sv_SE CP850\"\n\t# ISO-8859-2 languages\n\techo \"cs CP852\"\n\techo \"cs_CZ CP852\"\n\techo \"hr CP852\"\n\techo \"hr_HR CP852\"\n\techo \"hu CP852\"\n\techo \"hu_HU CP852\"\n\techo \"pl CP852\"\n\techo \"pl_PL CP852\"\n\techo \"ro CP852\"\n\techo \"ro_RO CP852\"\n\techo \"sk CP852\"\n\techo \"sk_SK CP852\"\n\techo \"sl CP852\"\n\techo \"sl_SI CP852\"\n\techo \"sq CP852\"\n\techo \"sq_AL CP852\"\n\techo \"sr CP852\"    # CP852 or CP866 or CP855 ??\n\techo \"sr_YU CP852\" # CP852 or CP866 or CP855 ??\n\t# ISO-8859-3 languages\n\techo \"mt CP850\"\n\techo \"mt_MT CP850\"\n\t# ISO-8859-5 languages\n\techo \"be CP866\"\n\techo \"be_BE CP866\"\n\techo \"bg CP866\"    # not CP855 ??\n\techo \"bg_BG CP866\" # not CP855 ??\n\techo \"mk CP866\"    # not CP855 ??\n\techo \"mk_MK CP866\" # not CP855 ??\n\techo \"ru KOI8-R\"    # not CP866 ??\n\techo \"ru_RU KOI8-R\" # not CP866 ??\n\t# ISO-8859-6 languages\n\techo \"ar CP864\"\n\techo \"ar_AE CP864\"\n\techo \"ar_DZ CP864\"\n\techo \"ar_EG CP864\"\n\techo \"ar_IQ CP864\"\n\techo \"ar_IR CP864\"\n\techo \"ar_JO CP864\"\n\techo \"ar_KW CP864\"\n\techo \"ar_MA CP864\"\n\techo \"ar_OM CP864\"\n\techo \"ar_QA CP864\"\n\techo \"ar_SA CP864\"\n\techo \"ar_SY CP864\"\n\t# ISO-8859-7 languages\n\techo \"el CP869\"\n\techo \"el_GR CP869\"\n\t# ISO-8859-8 languages\n\techo \"he CP862\"\n\techo \"he_IL CP862\"\n\t# ISO-8859-9 languages\n\techo \"tr CP857\"\n\techo \"tr_TR CP857\"\n\t# Japanese\n\techo \"ja CP932\"\n\techo \"ja_JP CP932\"\n\t# Chinese\n\techo \"zh_CN GBK\"\n\techo \"zh_TW CP950\" # not CP938 ??\n\t# Korean\n\techo \"kr CP949\"    # not CP934 ??\n\techo \"kr_KR CP949\" # not CP934 ??\n\t# Thai\n\techo \"th CP874\"\n\techo \"th_TH CP874\"\n\t# Other\n\techo \"eo CP850\"\n\techo \"eo_EO CP850\"\n\t;;\nesac\n"
  },
  {
    "path": "intl/dcgettext.c",
    "content": "/* Implementation of the dcgettext(3) function.\n   Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include \"gettextP.h\"\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n\n/* @@ end of prolog @@ */\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define DCGETTEXT __dcgettext\n# define DCIGETTEXT __dcigettext\n#else\n# define DCGETTEXT dcgettext__\n# define DCIGETTEXT dcigettext__\n#endif\n\n/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY\n   locale.  */\nchar *\nDCGETTEXT (domainname, msgid, category)\n     const char *domainname;\n     const char *msgid;\n     int category;\n{\n  return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);\n}\n\n#ifdef _LIBC\n/* Alias for function name in GNU C Library.  */\nweak_alias (__dcgettext, dcgettext);\n#endif\n"
  },
  {
    "path": "intl/dcigettext.c",
    "content": "/* Implementation of the internal dcigettext function.\n   Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n/* Tell glibc's <string.h> to provide a prototype for mempcpy().\n   This must come before <config.h> because <config.h> may include\n   <features.h>, and once <features.h> has been included, it's too late.  */\n#ifndef _GNU_SOURCE\n# define _GNU_SOURCE\t1\n#endif\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <sys/types.h>\n\n#ifdef __GNUC__\n# define alloca __builtin_alloca\n# define HAVE_ALLOCA 1\n#else\n# if defined HAVE_ALLOCA_H || defined _LIBC\n#  include <alloca.h>\n# else\n#  ifdef _AIX\n #pragma alloca\n#  else\n#   ifndef alloca\nchar *alloca ();\n#   endif\n#  endif\n# endif\n#endif\n\n#include <errno.h>\n#ifndef errno\nextern int errno;\n#endif\n#ifndef __set_errno\n# define __set_errno(val) errno = (val)\n#endif\n\n#include <stddef.h>\n#include <stdlib.h>\n\n#include <string.h>\n#if !HAVE_STRCHR && !defined _LIBC\n# ifndef strchr\n#  define strchr index\n# endif\n#endif\n\n#if defined HAVE_UNISTD_H || defined _LIBC\n# include <unistd.h>\n#endif\n\n#include <locale.h>\n\n#if defined HAVE_SYS_PARAM_H || defined _LIBC\n# include <sys/param.h>\n#endif\n\n#include \"gettextP.h\"\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n#include \"hash-string.h\"\n\n/* Thread safetyness.  */\n#ifdef _LIBC\n# include <bits/libc-lock.h>\n#else\n/* Provide dummy implementation if this is outside glibc.  */\n# define __libc_lock_define_initialized(CLASS, NAME)\n# define __libc_lock_lock(NAME)\n# define __libc_lock_unlock(NAME)\n# define __libc_rwlock_define_initialized(CLASS, NAME)\n# define __libc_rwlock_rdlock(NAME)\n# define __libc_rwlock_unlock(NAME)\n#endif\n\n/* Alignment of types.  */\n#if defined __GNUC__ && __GNUC__ >= 2\n# define alignof(TYPE) __alignof__ (TYPE)\n#else\n# define alignof(TYPE) \\\n    ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2)\n#endif\n\n/* The internal variables in the standalone libintl.a must have different\n   names than the internal variables in GNU libc, otherwise programs\n   using libintl.a cannot be linked statically.  */\n#if !defined _LIBC\n# define _nl_default_default_domain _nl_default_default_domain__\n# define _nl_current_default_domain _nl_current_default_domain__\n# define _nl_default_dirname _nl_default_dirname__\n# define _nl_domain_bindings _nl_domain_bindings__\n#endif\n\n/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>.  */\n#ifndef offsetof\n# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))\n#endif\n\n/* @@ end of prolog @@ */\n\n#ifdef _LIBC\n/* Rename the non ANSI C functions.  This is required by the standard\n   because some ANSI C functions will require linking with this object\n   file and the name space must not be polluted.  */\n# define getcwd __getcwd\n# ifndef stpcpy\n#  define stpcpy __stpcpy\n# endif\n# define tfind __tfind\n#else\n# if !defined HAVE_GETCWD\nchar *getwd ();\n#  define getcwd(buf, max) getwd (buf)\n# else\nchar *getcwd ();\n# endif\n# ifndef HAVE_STPCPY\nstatic char *stpcpy PARAMS ((char *dest, const char *src));\n# endif\n# ifndef HAVE_MEMPCPY\nstatic void *mempcpy PARAMS ((void *dest, const void *src, size_t n));\n# endif\n#endif\n\n/* Amount to increase buffer size by in each try.  */\n#define PATH_INCR 32\n\n/* The following is from pathmax.h.  */\n/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define\n   PATH_MAX but might cause redefinition warnings when sys/param.h is\n   later included (as on MORE/BSD 4.3).  */\n#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__)\n# include <limits.h>\n#endif\n\n#ifndef _POSIX_PATH_MAX\n# define _POSIX_PATH_MAX 255\n#endif\n\n#if !defined PATH_MAX && defined _PC_PATH_MAX\n# define PATH_MAX (pathconf (\"/\", _PC_PATH_MAX) < 1 ? 1024 : pathconf (\"/\", _PC_PATH_MAX))\n#endif\n\n/* Don't include sys/param.h if it already has been.  */\n#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN\n# include <sys/param.h>\n#endif\n\n#if !defined PATH_MAX && defined MAXPATHLEN\n# define PATH_MAX MAXPATHLEN\n#endif\n\n#ifndef PATH_MAX\n# define PATH_MAX _POSIX_PATH_MAX\n#endif\n\n/* Pathname support.\n   ISSLASH(C)           tests whether C is a directory separator character.\n   IS_ABSOLUTE_PATH(P)  tests whether P is an absolute path.  If it is not,\n                        it may be concatenated to a directory pathname.\n   IS_PATH_WITH_DIR(P)  tests whether P contains a directory specification.\n */\n#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__\n  /* Win32, OS/2, DOS */\n# define ISSLASH(C) ((C) == '/' || (C) == '\\\\')\n# define HAS_DEVICE(P) \\\n    ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \\\n     && (P)[1] == ':')\n# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))\n# define IS_PATH_WITH_DIR(P) \\\n    (strchr (P, '/') != NULL || strchr (P, '\\\\') != NULL || HAS_DEVICE (P))\n#else\n  /* Unix */\n# define ISSLASH(C) ((C) == '/')\n# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])\n# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)\n#endif\n\n/* XPG3 defines the result of `setlocale (category, NULL)' as:\n   ``Directs `setlocale()' to query `category' and return the current\n     setting of `local'.''\n   However it does not specify the exact format.  Neither do SUSV2 and\n   ISO C 99.  So we can use this feature only on selected systems (e.g.\n   those using GNU C Library).  */\n#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2)\n# define HAVE_LOCALE_NULL\n#endif\n\n/* This is the type used for the search tree where known translations\n   are stored.  */\nstruct known_translation_t\n{\n  /* Domain in which to search.  */\n  char *domainname;\n\n  /* The category.  */\n  int category;\n\n  /* State of the catalog counter at the point the string was found.  */\n  int counter;\n\n  /* Catalog where the string was found.  */\n  struct loaded_l10nfile *domain;\n\n  /* And finally the translation.  */\n  const char *translation;\n  size_t translation_length;\n\n  /* Pointer to the string in question.  */\n  char msgid[ZERO];\n};\n\n/* Root of the search tree with known translations.  We can use this\n   only if the system provides the `tsearch' function family.  */\n#if defined HAVE_TSEARCH || defined _LIBC\n# include <search.h>\n\nstatic void *root;\n\n# ifdef _LIBC\n#  define tsearch __tsearch\n# endif\n\n/* Function to compare two entries in the table of known translations.  */\nstatic int transcmp PARAMS ((const void *p1, const void *p2));\nstatic int\ntranscmp (p1, p2)\n     const void *p1;\n     const void *p2;\n{\n  const struct known_translation_t *s1;\n  const struct known_translation_t *s2;\n  int result;\n\n  s1 = (const struct known_translation_t *) p1;\n  s2 = (const struct known_translation_t *) p2;\n\n  result = strcmp (s1->msgid, s2->msgid);\n  if (result == 0)\n    {\n      result = strcmp (s1->domainname, s2->domainname);\n      if (result == 0)\n\t/* We compare the category last (though this is the cheapest\n\t   operation) since it is hopefully always the same (namely\n\t   LC_MESSAGES).  */\n\tresult = s1->category - s2->category;\n    }\n\n  return result;\n}\n#endif\n\n/* Name of the default domain used for gettext(3) prior any call to\n   textdomain(3).  The default value for this is \"messages\".  */\nconst char _nl_default_default_domain[] = \"messages\";\n\n/* Value used as the default domain for gettext(3).  */\nconst char *_nl_current_default_domain = _nl_default_default_domain;\n\n/* Contains the default location of the message catalogs.  */\nconst char _nl_default_dirname[] = LOCALEDIR;\n\n/* List with bindings of specific domains created by bindtextdomain()\n   calls.  */\nstruct binding *_nl_domain_bindings;\n\n/* Prototypes for local functions.  */\nstatic char *plural_lookup PARAMS ((struct loaded_l10nfile *domain,\n\t\t\t\t    unsigned long int n,\n\t\t\t\t    const char *translation,\n\t\t\t\t    size_t translation_len))\n     internal_function;\nstatic unsigned long int plural_eval PARAMS ((struct expression *pexp,\n\t\t\t\t\t      unsigned long int n))\n     internal_function;\nstatic const char *category_to_name PARAMS ((int category)) internal_function;\nstatic const char *guess_category_value PARAMS ((int category,\n\t\t\t\t\t\t const char *categoryname))\n     internal_function;\n\n\n/* For those loosing systems which don't have `alloca' we have to add\n   some additional code emulating it.  */\n#ifdef HAVE_ALLOCA\n/* Nothing has to be done.  */\n# define ADD_BLOCK(list, address) /* nothing */\n# define FREE_BLOCKS(list) /* nothing */\n#else\nstruct block_list\n{\n  void *address;\n  struct block_list *next;\n};\n# define ADD_BLOCK(list, addr)\t\t\t\t\t\t      \\\n  do {\t\t\t\t\t\t\t\t\t      \\\n    struct block_list *newp = (struct block_list *) malloc (sizeof (*newp));  \\\n    /* If we cannot get a free block we cannot add the new element to\t      \\\n       the list.  */\t\t\t\t\t\t\t      \\\n    if (newp != NULL) {\t\t\t\t\t\t\t      \\\n      newp->address = (addr);\t\t\t\t\t\t      \\\n      newp->next = (list);\t\t\t\t\t\t      \\\n      (list) = newp;\t\t\t\t\t\t\t      \\\n    }\t\t\t\t\t\t\t\t\t      \\\n  } while (0)\n# define FREE_BLOCKS(list)\t\t\t\t\t\t      \\\n  do {\t\t\t\t\t\t\t\t\t      \\\n    while (list != NULL) {\t\t\t\t\t\t      \\\n      struct block_list *old = list;\t\t\t\t\t      \\\n      list = list->next;\t\t\t\t\t\t      \\\n      free (old);\t\t\t\t\t\t\t      \\\n    }\t\t\t\t\t\t\t\t\t      \\\n  } while (0)\n# undef alloca\n# define alloca(size) (malloc (size))\n#endif\t/* have alloca */\n\n\n#ifdef _LIBC\n/* List of blocks allocated for translations.  */\ntypedef struct transmem_list\n{\n  struct transmem_list *next;\n  char data[ZERO];\n} transmem_block_t;\nstatic struct transmem_list *transmem_list;\n#else\ntypedef unsigned char transmem_block_t;\n#endif\n\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define DCIGETTEXT __dcigettext\n#else\n# define DCIGETTEXT dcigettext__\n#endif\n\n/* Lock variable to protect the global data in the gettext implementation.  */\n#ifdef _LIBC\n__libc_rwlock_define_initialized (, _nl_state_lock)\n#endif\n\n/* Checking whether the binaries runs SUID must be done and glibc provides\n   easier methods therefore we make a difference here.  */\n#ifdef _LIBC\n# define ENABLE_SECURE __libc_enable_secure\n# define DETERMINE_SECURE\n#else\n# ifndef HAVE_GETUID\n#  define getuid() 0\n# endif\n# ifndef HAVE_GETGID\n#  define getgid() 0\n# endif\n# ifndef HAVE_GETEUID\n#  define geteuid() getuid()\n# endif\n# ifndef HAVE_GETEGID\n#  define getegid() getgid()\n# endif\nstatic int enable_secure;\n# define ENABLE_SECURE (enable_secure == 1)\n# define DETERMINE_SECURE \\\n  if (enable_secure == 0)\t\t\t\t\t\t      \\\n    {\t\t\t\t\t\t\t\t\t      \\\n      if (getuid () != geteuid () || getgid () != getegid ())\t\t      \\\n\tenable_secure = 1;\t\t\t\t\t\t      \\\n      else\t\t\t\t\t\t\t\t      \\\n\tenable_secure = -1;\t\t\t\t\t\t      \\\n    }\n#endif\n\n/* Look up MSGID in the DOMAINNAME message catalog for the current\n   CATEGORY locale and, if PLURAL is nonzero, search over string\n   depending on the plural form determined by N.  */\nchar *\nDCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)\n     const char *domainname;\n     const char *msgid1;\n     const char *msgid2;\n     int plural;\n     unsigned long int n;\n     int category;\n{\n#ifndef HAVE_ALLOCA\n  struct block_list *block_list = NULL;\n#endif\n  struct loaded_l10nfile *domain;\n  struct binding *binding;\n  const char *categoryname;\n  const char *categoryvalue;\n  char *dirname, *xdomainname;\n  char *single_locale;\n  char *retval;\n  size_t retlen;\n  int saved_errno;\n#if defined HAVE_TSEARCH || defined _LIBC\n  struct known_translation_t *search;\n  struct known_translation_t **foundp = NULL;\n  size_t msgid_len;\n#endif\n  size_t domainname_len;\n\n  /* If no real MSGID is given return NULL.  */\n  if (msgid1 == NULL)\n    return NULL;\n\n  __libc_rwlock_rdlock (_nl_state_lock);\n\n  /* If DOMAINNAME is NULL, we are interested in the default domain.  If\n     CATEGORY is not LC_MESSAGES this might not make much sense but the\n     definition left this undefined.  */\n  if (domainname == NULL)\n    domainname = _nl_current_default_domain;\n\n#if defined HAVE_TSEARCH || defined _LIBC\n  msgid_len = strlen (msgid1) + 1;\n\n  /* Try to find the translation among those which we found at\n     some time.  */\n  search = (struct known_translation_t *)\n\t   alloca (offsetof (struct known_translation_t, msgid) + msgid_len);\n  memcpy (search->msgid, msgid1, msgid_len);\n  search->domainname = (char *) domainname;\n  search->category = category;\n\n  foundp = (struct known_translation_t **) tfind (search, &root, transcmp);\n  if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr)\n    {\n      /* Now deal with plural.  */\n      if (plural)\n\tretval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation,\n\t\t\t\t(*foundp)->translation_length);\n      else\n\tretval = (char *) (*foundp)->translation;\n\n      __libc_rwlock_unlock (_nl_state_lock);\n      return retval;\n    }\n#endif\n\n  /* Preserve the `errno' value.  */\n  saved_errno = errno;\n\n  /* See whether this is a SUID binary or not.  */\n  DETERMINE_SECURE;\n\n  /* First find matching binding.  */\n  for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)\n    {\n      int compare = strcmp (domainname, binding->domainname);\n      if (compare == 0)\n\t/* We found it!  */\n\tbreak;\n      if (compare < 0)\n\t{\n\t  /* It is not in the list.  */\n\t  binding = NULL;\n\t  break;\n\t}\n    }\n\n  if (binding == NULL)\n    dirname = (char *) _nl_default_dirname;\n  else if (IS_ABSOLUTE_PATH (binding->dirname))\n    dirname = binding->dirname;\n  else\n    {\n      /* We have a relative path.  Make it absolute now.  */\n      size_t dirname_len = strlen (binding->dirname) + 1;\n      size_t path_max;\n      char *ret;\n\n      path_max = (unsigned int) PATH_MAX;\n      path_max += 2;\t\t/* The getcwd docs say to do this.  */\n\n      for (;;)\n\t{\n\t  dirname = (char *) alloca (path_max + dirname_len);\n\t  ADD_BLOCK (block_list, dirname);\n\n\t  __set_errno (0);\n\t  ret = getcwd (dirname, path_max);\n\t  if (ret != NULL || errno != ERANGE)\n\t    break;\n\n\t  path_max += path_max / 2;\n\t  path_max += PATH_INCR;\n\t}\n\n      if (ret == NULL)\n\t{\n\t  /* We cannot get the current working directory.  Don't signal an\n\t     error but simply return the default string.  */\n\t  FREE_BLOCKS (block_list);\n\t  __libc_rwlock_unlock (_nl_state_lock);\n\t  __set_errno (saved_errno);\n\t  return (plural == 0\n\t\t  ? (char *) msgid1\n\t\t  /* Use the Germanic plural rule.  */\n\t\t  : n == 1 ? (char *) msgid1 : (char *) msgid2);\n\t}\n\n      stpcpy (stpcpy (strchr (dirname, '\\0'), \"/\"), binding->dirname);\n    }\n\n  /* Now determine the symbolic name of CATEGORY and its value.  */\n  categoryname = category_to_name (category);\n  categoryvalue = guess_category_value (category, categoryname);\n\n  domainname_len = strlen (domainname);\n  xdomainname = (char *) alloca (strlen (categoryname)\n\t\t\t\t + domainname_len + 5);\n  ADD_BLOCK (block_list, xdomainname);\n\n  stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), \"/\"),\n\t\t  domainname, domainname_len),\n\t  \".mo\");\n\n  /* Creating working area.  */\n  single_locale = (char *) alloca (strlen (categoryvalue) + 1);\n  ADD_BLOCK (block_list, single_locale);\n\n\n  /* Search for the given string.  This is a loop because we perhaps\n     got an ordered list of languages to consider for the translation.  */\n  while (1)\n    {\n      /* Make CATEGORYVALUE point to the next element of the list.  */\n      while (categoryvalue[0] != '\\0' && categoryvalue[0] == ':')\n\t++categoryvalue;\n      if (categoryvalue[0] == '\\0')\n\t{\n\t  /* The whole contents of CATEGORYVALUE has been searched but\n\t     no valid entry has been found.  We solve this situation\n\t     by implicitly appending a \"C\" entry, i.e. no translation\n\t     will take place.  */\n\t  single_locale[0] = 'C';\n\t  single_locale[1] = '\\0';\n\t}\n      else\n\t{\n\t  char *cp = single_locale;\n\t  while (categoryvalue[0] != '\\0' && categoryvalue[0] != ':')\n\t    *cp++ = *categoryvalue++;\n\t  *cp = '\\0';\n\n\t  /* When this is a SUID binary we must not allow accessing files\n\t     outside the dedicated directories.  */\n\t  if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))\n\t    /* Ingore this entry.  */\n\t    continue;\n\t}\n\n      /* If the current locale value is C (or POSIX) we don't load a\n\t domain.  Return the MSGID.  */\n      if (strcmp (single_locale, \"C\") == 0\n\t  || strcmp (single_locale, \"POSIX\") == 0)\n\t{\n\t  FREE_BLOCKS (block_list);\n\t  __libc_rwlock_unlock (_nl_state_lock);\n\t  __set_errno (saved_errno);\n\t  return (plural == 0\n\t\t  ? (char *) msgid1\n\t\t  /* Use the Germanic plural rule.  */\n\t\t  : n == 1 ? (char *) msgid1 : (char *) msgid2);\n\t}\n\n\n      /* Find structure describing the message catalog matching the\n\t DOMAINNAME and CATEGORY.  */\n      domain = _nl_find_domain (dirname, single_locale, xdomainname, binding);\n\n      if (domain != NULL)\n\t{\n\t  retval = _nl_find_msg (domain, binding, msgid1, &retlen);\n\n\t  if (retval == NULL)\n\t    {\n\t      int cnt;\n\n\t      for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)\n\t\t{\n\t\t  retval = _nl_find_msg (domain->successor[cnt], binding,\n\t\t\t\t\t msgid1, &retlen);\n\n\t\t  if (retval != NULL)\n\t\t    {\n\t\t      domain = domain->successor[cnt];\n\t\t      break;\n\t\t    }\n\t\t}\n\t    }\n\n\t  if (retval != NULL)\n\t    {\n\t      /* Found the translation of MSGID1 in domain DOMAIN:\n\t\t starting at RETVAL, RETLEN bytes.  */\n\t      FREE_BLOCKS (block_list);\n\t      __set_errno (saved_errno);\n#if defined HAVE_TSEARCH || defined _LIBC\n\t      if (foundp == NULL)\n\t\t{\n\t\t  /* Create a new entry and add it to the search tree.  */\n\t\t  struct known_translation_t *newp;\n\n\t\t  newp = (struct known_translation_t *)\n\t\t    malloc (offsetof (struct known_translation_t, msgid)\n\t\t\t    + msgid_len + domainname_len + 1);\n\t\t  if (newp != NULL)\n\t\t    {\n\t\t      newp->domainname =\n\t\t\tmempcpy (newp->msgid, msgid1, msgid_len);\n\t\t      memcpy (newp->domainname, domainname, domainname_len + 1);\n\t\t      newp->category = category;\n\t\t      newp->counter = _nl_msg_cat_cntr;\n\t\t      newp->domain = domain;\n\t\t      newp->translation = retval;\n\t\t      newp->translation_length = retlen;\n\n\t\t      /* Insert the entry in the search tree.  */\n\t\t      foundp = (struct known_translation_t **)\n\t\t\ttsearch (newp, &root, transcmp);\n\t\t      if (foundp == NULL\n\t\t\t  || __builtin_expect (*foundp != newp, 0))\n\t\t\t/* The insert failed.  */\n\t\t\tfree (newp);\n\t\t    }\n\t\t}\n\t      else\n\t\t{\n\t\t  /* We can update the existing entry.  */\n\t\t  (*foundp)->counter = _nl_msg_cat_cntr;\n\t\t  (*foundp)->domain = domain;\n\t\t  (*foundp)->translation = retval;\n\t\t  (*foundp)->translation_length = retlen;\n\t\t}\n#endif\n\t      /* Now deal with plural.  */\n\t      if (plural)\n\t\tretval = plural_lookup (domain, n, retval, retlen);\n\n\t      __libc_rwlock_unlock (_nl_state_lock);\n\t      return retval;\n\t    }\n\t}\n    }\n  /* NOTREACHED */\n}\n\n\nchar *\ninternal_function\n_nl_find_msg (domain_file, domainbinding, msgid, lengthp)\n     struct loaded_l10nfile *domain_file;\n     struct binding *domainbinding;\n     const char *msgid;\n     size_t *lengthp;\n{\n  struct loaded_domain *domain;\n  size_t act;\n  char *result;\n  size_t resultlen;\n\n  if (domain_file->decided == 0)\n    _nl_load_domain (domain_file, domainbinding);\n\n  if (domain_file->data == NULL)\n    return NULL;\n\n  domain = (struct loaded_domain *) domain_file->data;\n\n  /* Locate the MSGID and its translation.  */\n  if (domain->hash_size > 2 && domain->hash_tab != NULL)\n    {\n      /* Use the hashing table.  */\n      nls_uint32 len = strlen (msgid);\n      nls_uint32 hash_val = hash_string (msgid);\n      nls_uint32 idx = hash_val % domain->hash_size;\n      nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));\n\n      while (1)\n\t{\n\t  nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);\n\n\t  if (nstr == 0)\n\t    /* Hash table entry is empty.  */\n\t    return NULL;\n\n\t  /* Compare msgid with the original string at index nstr-1.\n\t     We compare the lengths with >=, not ==, because plural entries\n\t     are represented by strings with an embedded NUL.  */\n\t  if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) >= len\n\t      && (strcmp (msgid,\n\t\t\t  domain->data + W (domain->must_swap,\n\t\t\t\t\t    domain->orig_tab[nstr - 1].offset))\n\t\t  == 0))\n\t    {\n\t      act = nstr - 1;\n\t      goto found;\n\t    }\n\n\t  if (idx >= domain->hash_size - incr)\n\t    idx -= domain->hash_size - incr;\n\t  else\n\t    idx += incr;\n\t}\n      /* NOTREACHED */\n    }\n  else\n    {\n      /* Try the default method:  binary search in the sorted array of\n\t messages.  */\n      size_t top, bottom;\n\n      bottom = 0;\n      top = domain->nstrings;\n      while (bottom < top)\n\t{\n\t  int cmp_val;\n\n\t  act = (bottom + top) / 2;\n\t  cmp_val = strcmp (msgid, (domain->data\n\t\t\t\t    + W (domain->must_swap,\n\t\t\t\t\t domain->orig_tab[act].offset)));\n\t  if (cmp_val < 0)\n\t    top = act;\n\t  else if (cmp_val > 0)\n\t    bottom = act + 1;\n\t  else\n\t    goto found;\n\t}\n      /* No translation was found.  */\n      return NULL;\n    }\n\n found:\n  /* The translation was found at index ACT.  If we have to convert the\n     string to use a different character set, this is the time.  */\n  result = ((char *) domain->data\n\t    + W (domain->must_swap, domain->trans_tab[act].offset));\n  resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1;\n\n#if defined _LIBC || HAVE_ICONV\n  if (domain->codeset_cntr\n      != (domainbinding != NULL ? domainbinding->codeset_cntr : 0))\n    {\n      /* The domain's codeset has changed through bind_textdomain_codeset()\n\t since the message catalog was initialized or last accessed.  We\n\t have to reinitialize the converter.  */\n      _nl_free_domain_conv (domain);\n      _nl_init_domain_conv (domain_file, domain, domainbinding);\n    }\n\n  if (\n# ifdef _LIBC\n      domain->conv != (__gconv_t) -1\n# else\n#  if HAVE_ICONV\n      domain->conv != (iconv_t) -1\n#  endif\n# endif\n      )\n    {\n      /* We are supposed to do a conversion.  First allocate an\n\t appropriate table with the same structure as the table\n\t of translations in the file, where we can put the pointers\n\t to the converted strings in.\n\t There is a slight complication with plural entries.  They\n\t are represented by consecutive NUL terminated strings.  We\n\t handle this case by converting RESULTLEN bytes, including\n\t NULs.  */\n\n      if (domain->conv_tab == NULL\n\t  && ((domain->conv_tab = (char **) calloc (domain->nstrings,\n\t\t\t\t\t\t    sizeof (char *)))\n\t      == NULL))\n\t/* Mark that we didn't succeed allocating a table.  */\n\tdomain->conv_tab = (char **) -1;\n\n      if (__builtin_expect (domain->conv_tab == (char **) -1, 0))\n\t/* Nothing we can do, no more memory.  */\n\tgoto converted;\n\n      if (domain->conv_tab[act] == NULL)\n\t{\n\t  /* We haven't used this string so far, so it is not\n\t     translated yet.  Do this now.  */\n\t  /* We use a bit more efficient memory handling.\n\t     We allocate always larger blocks which get used over\n\t     time.  This is faster than many small allocations.   */\n\t  __libc_lock_define_initialized (static, lock)\n# define INITIAL_BLOCK_SIZE\t4080\n\t  static unsigned char *freemem;\n\t  static size_t freemem_size;\n\n\t  const unsigned char *inbuf;\n\t  unsigned char *outbuf;\n\t  int malloc_count;\n# ifndef _LIBC\n\t  transmem_block_t *transmem_list = NULL;\n# endif\n\n\t  __libc_lock_lock (lock);\n\n\t  inbuf = (const unsigned char *) result;\n\t  outbuf = freemem + sizeof (size_t);\n\n\t  malloc_count = 0;\n\t  while (1)\n\t    {\n\t      transmem_block_t *newmem;\n# ifdef _LIBC\n\t      size_t non_reversible;\n\t      int res;\n\n\t      if (freemem_size < sizeof (size_t))\n\t\tgoto resize_freemem;\n\n\t      res = __gconv (domain->conv,\n\t\t\t     &inbuf, inbuf + resultlen,\n\t\t\t     &outbuf,\n\t\t\t     outbuf + freemem_size - sizeof (size_t),\n\t\t\t     &non_reversible);\n\n\t      if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT)\n\t\tbreak;\n\n\t      if (res != __GCONV_FULL_OUTPUT)\n\t\t{\n\t\t  __libc_lock_unlock (lock);\n\t\t  goto converted;\n\t\t}\n\n\t      inbuf = result;\n# else\n#  if HAVE_ICONV\n\t      const char *inptr = (const char *) inbuf;\n\t      size_t inleft = resultlen;\n\t      char *outptr = (char *) outbuf;\n\t      size_t outleft;\n\n\t      if (freemem_size < sizeof (size_t))\n\t\tgoto resize_freemem;\n\n\t      outleft = freemem_size - sizeof (size_t);\n\t      if (iconv (domain->conv,\n\t\t\t (ICONV_CONST char **) &inptr, &inleft,\n\t\t\t &outptr, &outleft)\n\t\t  != (size_t) (-1))\n\t\t{\n\t\t  outbuf = (unsigned char *) outptr;\n\t\t  break;\n\t\t}\n\t      if (errno != E2BIG)\n\t\t{\n\t\t  __libc_lock_unlock (lock);\n\t\t  goto converted;\n\t\t}\n#  endif\n# endif\n\n\t    resize_freemem:\n\t      /* We must allocate a new buffer or resize the old one.  */\n\t      if (malloc_count > 0)\n\t\t{\n\t\t  ++malloc_count;\n\t\t  freemem_size = malloc_count * INITIAL_BLOCK_SIZE;\n\t\t  newmem = (transmem_block_t *) realloc (transmem_list,\n\t\t\t\t\t\t\t freemem_size);\n# ifdef _LIBC\n\t\t  if (newmem != NULL)\n\t\t    transmem_list = transmem_list->next;\n\t\t  else\n\t\t    {\n\t\t      struct transmem_list *old = transmem_list;\n\n\t\t      transmem_list = transmem_list->next;\n\t\t      free (old);\n\t\t    }\n# endif\n\t\t}\n\t      else\n\t\t{\n\t\t  malloc_count = 1;\n\t\t  freemem_size = INITIAL_BLOCK_SIZE;\n\t\t  newmem = (transmem_block_t *) malloc (freemem_size);\n\t\t}\n\t      if (__builtin_expect (newmem == NULL, 0))\n\t\t{\n\t\t  freemem = NULL;\n\t\t  freemem_size = 0;\n\t\t  __libc_lock_unlock (lock);\n\t\t  goto converted;\n\t\t}\n\n# ifdef _LIBC\n\t      /* Add the block to the list of blocks we have to free\n                 at some point.  */\n\t      newmem->next = transmem_list;\n\t      transmem_list = newmem;\n\n\t      freemem = newmem->data;\n\t      freemem_size -= offsetof (struct transmem_list, data);\n# else\n\t      transmem_list = newmem;\n\t      freemem = newmem;\n# endif\n\n\t      outbuf = freemem + sizeof (size_t);\n\t    }\n\n\t  /* We have now in our buffer a converted string.  Put this\n\t     into the table of conversions.  */\n\t  *(size_t *) freemem = outbuf - freemem - sizeof (size_t);\n\t  domain->conv_tab[act] = (char *) freemem;\n\t  /* Shrink freemem, but keep it aligned.  */\n\t  freemem_size -= outbuf - freemem;\n\t  freemem = outbuf;\n\t  freemem += freemem_size & (alignof (size_t) - 1);\n\t  freemem_size = freemem_size & ~ (alignof (size_t) - 1);\n\n\t  __libc_lock_unlock (lock);\n\t}\n\n      /* Now domain->conv_tab[act] contains the translation of all\n\t the plural variants.  */\n      result = domain->conv_tab[act] + sizeof (size_t);\n      resultlen = *(size_t *) domain->conv_tab[act];\n    }\n\n converted:\n  /* The result string is converted.  */\n\n#endif /* _LIBC || HAVE_ICONV */\n\n  *lengthp = resultlen;\n  return result;\n}\n\n\n/* Look up a plural variant.  */\nstatic char *\ninternal_function\nplural_lookup (domain, n, translation, translation_len)\n     struct loaded_l10nfile *domain;\n     unsigned long int n;\n     const char *translation;\n     size_t translation_len;\n{\n  struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;\n  unsigned long int index;\n  const char *p;\n\n  index = plural_eval (domaindata->plural, n);\n  if (index >= domaindata->nplurals)\n    /* This should never happen.  It means the plural expression and the\n       given maximum value do not match.  */\n    index = 0;\n\n  /* Skip INDEX strings at TRANSLATION.  */\n  p = translation;\n  while (index-- > 0)\n    {\n#ifdef _LIBC\n      p = __rawmemchr (p, '\\0');\n#else\n      p = strchr (p, '\\0');\n#endif\n      /* And skip over the NUL byte.  */\n      p++;\n\n      if (p >= translation + translation_len)\n\t/* This should never happen.  It means the plural expression\n\t   evaluated to a value larger than the number of variants\n\t   available for MSGID1.  */\n\treturn (char *) translation;\n    }\n  return (char *) p;\n}\n\n\n/* Function to evaluate the plural expression and return an index value.  */\nstatic unsigned long int\ninternal_function\nplural_eval (pexp, n)\n     struct expression *pexp;\n     unsigned long int n;\n{\n  switch (pexp->nargs)\n    {\n    case 0:\n      switch (pexp->operation)\n\t{\n\tcase var:\n\t  return n;\n\tcase num:\n\t  return pexp->val.num;\n\tdefault:\n\t  break;\n\t}\n      /* NOTREACHED */\n      break;\n    case 1:\n      {\n\t/* pexp->operation must be lnot.  */\n\tunsigned long int arg = plural_eval (pexp->val.args[0], n);\n\treturn ! arg;\n      }\n    case 2:\n      {\n\tunsigned long int leftarg = plural_eval (pexp->val.args[0], n);\n\tif (pexp->operation == lor)\n\t  return leftarg || plural_eval (pexp->val.args[1], n);\n\telse if (pexp->operation == land)\n\t  return leftarg && plural_eval (pexp->val.args[1], n);\n\telse\n\t  {\n\t    unsigned long int rightarg = plural_eval (pexp->val.args[1], n);\n\n\t    switch (pexp->operation)\n\t      {\n\t      case mult:\n\t\treturn leftarg * rightarg;\n\t      case divide:\n\t\treturn leftarg / rightarg;\n\t      case module:\n\t\treturn leftarg % rightarg;\n\t      case plus:\n\t\treturn leftarg + rightarg;\n\t      case minus:\n\t\treturn leftarg - rightarg;\n\t      case less_than:\n\t\treturn leftarg < rightarg;\n\t      case greater_than:\n\t\treturn leftarg > rightarg;\n\t      case less_or_equal:\n\t\treturn leftarg <= rightarg;\n\t      case greater_or_equal:\n\t\treturn leftarg >= rightarg;\n\t      case equal:\n\t\treturn leftarg == rightarg;\n\t      case not_equal:\n\t\treturn leftarg != rightarg;\n\t      default:\n\t\tbreak;\n\t      }\n\t  }\n\t/* NOTREACHED */\n\tbreak;\n      }\n    case 3:\n      {\n\t/* pexp->operation must be qmop.  */\n\tunsigned long int boolarg = plural_eval (pexp->val.args[0], n);\n\treturn plural_eval (pexp->val.args[boolarg ? 1 : 2], n);\n      }\n    }\n  /* NOTREACHED */\n  return 0;\n}\n\n\n/* Return string representation of locale CATEGORY.  */\nstatic const char *\ninternal_function\ncategory_to_name (category)\n     int category;\n{\n  const char *retval;\n\n  switch (category)\n  {\n#ifdef LC_COLLATE\n  case LC_COLLATE:\n    retval = \"LC_COLLATE\";\n    break;\n#endif\n#ifdef LC_CTYPE\n  case LC_CTYPE:\n    retval = \"LC_CTYPE\";\n    break;\n#endif\n#ifdef LC_MONETARY\n  case LC_MONETARY:\n    retval = \"LC_MONETARY\";\n    break;\n#endif\n#ifdef LC_NUMERIC\n  case LC_NUMERIC:\n    retval = \"LC_NUMERIC\";\n    break;\n#endif\n#ifdef LC_TIME\n  case LC_TIME:\n    retval = \"LC_TIME\";\n    break;\n#endif\n#ifdef LC_MESSAGES\n  case LC_MESSAGES:\n    retval = \"LC_MESSAGES\";\n    break;\n#endif\n#ifdef LC_RESPONSE\n  case LC_RESPONSE:\n    retval = \"LC_RESPONSE\";\n    break;\n#endif\n#ifdef LC_ALL\n  case LC_ALL:\n    /* This might not make sense but is perhaps better than any other\n       value.  */\n    retval = \"LC_ALL\";\n    break;\n#endif\n  default:\n    /* If you have a better idea for a default value let me know.  */\n    retval = \"LC_XXX\";\n  }\n\n  return retval;\n}\n\n/* Guess value of current locale from value of the environment variables.  */\nstatic const char *\ninternal_function\nguess_category_value (category, categoryname)\n     int category;\n     const char *categoryname;\n{\n  const char *language;\n  const char *retval;\n\n  /* The highest priority value is the `LANGUAGE' environment\n     variable.  But we don't use the value if the currently selected\n     locale is the C locale.  This is a GNU extension.  */\n  language = getenv (\"LANGUAGE\");\n  if (language != NULL && language[0] == '\\0')\n    language = NULL;\n\n  /* We have to proceed with the POSIX methods of looking to `LC_ALL',\n     `LC_xxx', and `LANG'.  On some systems this can be done by the\n     `setlocale' function itself.  */\n#if defined _LIBC || (defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL)\n  retval = setlocale (category, NULL);\n#else\n  /* Setting of LC_ALL overwrites all other.  */\n  retval = getenv (\"LC_ALL\");\n  if (retval == NULL || retval[0] == '\\0')\n    {\n      /* Next comes the name of the desired category.  */\n      retval = getenv (categoryname);\n      if (retval == NULL || retval[0] == '\\0')\n\t{\n\t  /* Last possibility is the LANG environment variable.  */\n\t  retval = getenv (\"LANG\");\n\t  if (retval == NULL || retval[0] == '\\0')\n\t    /* We use C as the default domain.  POSIX says this is\n\t       implementation defined.  */\n\t    return \"C\";\n\t}\n    }\n#endif\n\n  return language != NULL && strcmp (retval, \"C\") != 0 ? language : retval;\n}\n\n/* @@ begin of epilog @@ */\n\n/* We don't want libintl.a to depend on any other library.  So we\n   avoid the non-standard function stpcpy.  In GNU C Library this\n   function is available, though.  Also allow the symbol HAVE_STPCPY\n   to be defined.  */\n#if !_LIBC && !HAVE_STPCPY\nstatic char *\nstpcpy (dest, src)\n     char *dest;\n     const char *src;\n{\n  while ((*dest++ = *src++) != '\\0')\n    /* Do nothing. */ ;\n  return dest - 1;\n}\n#endif\n\n#if !_LIBC && !HAVE_MEMPCPY\nstatic void *\nmempcpy (dest, src, n)\n     void *dest;\n     const void *src;\n     size_t n;\n{\n  return (void *) ((char *) memcpy (dest, src, n) + n);\n}\n#endif\n\n\n#ifdef _LIBC\n/* If we want to free all resources we have to do some work at\n   program's end.  */\nstatic void __attribute__ ((unused))\nfree_mem (void)\n{\n  void *old;\n\n  while (_nl_domain_bindings != NULL)\n    {\n      struct binding *oldp = _nl_domain_bindings;\n      _nl_domain_bindings = _nl_domain_bindings->next;\n      if (oldp->dirname != _nl_default_dirname)\n\t/* Yes, this is a pointer comparison.  */\n\tfree (oldp->dirname);\n      free (oldp->codeset);\n      free (oldp);\n    }\n\n  if (_nl_current_default_domain != _nl_default_default_domain)\n    /* Yes, again a pointer comparison.  */\n    free ((char *) _nl_current_default_domain);\n\n  /* Remove the search tree with the known translations.  */\n  __tdestroy (root, free);\n  root = NULL;\n\n  while (transmem_list != NULL)\n    {\n      old = transmem_list;\n      transmem_list = transmem_list->next;\n      free (old);\n    }\n}\n\ntext_set_element (__libc_subfreeres, free_mem);\n#endif\n"
  },
  {
    "path": "intl/dcngettext.c",
    "content": "/* Implementation of the dcngettext(3) function.\n   Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include \"gettextP.h\"\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n\n/* @@ end of prolog @@ */\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define DCNGETTEXT __dcngettext\n# define DCIGETTEXT __dcigettext\n#else\n# define DCNGETTEXT dcngettext__\n# define DCIGETTEXT dcigettext__\n#endif\n\n/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY\n   locale.  */\nchar *\nDCNGETTEXT (domainname, msgid1, msgid2, n, category)\n     const char *domainname;\n     const char *msgid1;\n     const char *msgid2;\n     unsigned long int n;\n     int category;\n{\n  return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);\n}\n\n#ifdef _LIBC\n/* Alias for function name in GNU C Library.  */\nweak_alias (__dcngettext, dcngettext);\n#endif\n"
  },
  {
    "path": "intl/dgettext.c",
    "content": "/* Implementation of the dgettext(3) function.\n   Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <locale.h>\n\n#include \"gettextP.h\"\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n\n/* @@ end of prolog @@ */\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define DGETTEXT __dgettext\n# define DCGETTEXT __dcgettext\n#else\n# define DGETTEXT dgettext__\n# define DCGETTEXT dcgettext__\n#endif\n\n/* Look up MSGID in the DOMAINNAME message catalog of the current\n   LC_MESSAGES locale.  */\nchar *\nDGETTEXT (domainname, msgid)\n     const char *domainname;\n     const char *msgid;\n{\n  return DCGETTEXT (domainname, msgid, LC_MESSAGES);\n}\n\n#ifdef _LIBC\n/* Alias for function name in GNU C Library.  */\nweak_alias (__dgettext, dgettext);\n#endif\n"
  },
  {
    "path": "intl/dngettext.c",
    "content": "/* Implementation of the dngettext(3) function.\n   Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <locale.h>\n\n#include \"gettextP.h\"\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n\n/* @@ end of prolog @@ */\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define DNGETTEXT __dngettext\n# define DCNGETTEXT __dcngettext\n#else\n# define DNGETTEXT dngettext__\n# define DCNGETTEXT dcngettext__\n#endif\n\n/* Look up MSGID in the DOMAINNAME message catalog of the current\n   LC_MESSAGES locale and skip message according to the plural form.  */\nchar *\nDNGETTEXT (domainname, msgid1, msgid2, n)\n     const char *domainname;\n     const char *msgid1;\n     const char *msgid2;\n     unsigned long int n;\n{\n  return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);\n}\n\n#ifdef _LIBC\n/* Alias for function name in GNU C Library.  */\nweak_alias (__dngettext, dngettext);\n#endif\n"
  },
  {
    "path": "intl/explodename.c",
    "content": "/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.\n   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <stdlib.h>\n#include <string.h>\n#include <sys/types.h>\n\n#include \"loadinfo.h\"\n\n/* On some strange systems still no definition of NULL is found.  Sigh!  */\n#ifndef NULL\n# if defined __STDC__ && __STDC__\n#  define NULL ((void *) 0)\n# else\n#  define NULL 0\n# endif\n#endif\n\n/* @@ end of prolog @@ */\n\nchar *\n_nl_find_language (name)\n     const char *name;\n{\n  while (name[0] != '\\0' && name[0] != '_' && name[0] != '@'\n\t && name[0] != '+' && name[0] != ',')\n    ++name;\n\n  return (char *) name;\n}\n\n\nint\n_nl_explode_name (name, language, modifier, territory, codeset,\n\t\t  normalized_codeset, special, sponsor, revision)\n     char *name;\n     const char **language;\n     const char **modifier;\n     const char **territory;\n     const char **codeset;\n     const char **normalized_codeset;\n     const char **special;\n     const char **sponsor;\n     const char **revision;\n{\n  enum { undecided, xpg, cen } syntax;\n  char *cp;\n  int mask;\n\n  *modifier = NULL;\n  *territory = NULL;\n  *codeset = NULL;\n  *normalized_codeset = NULL;\n  *special = NULL;\n  *sponsor = NULL;\n  *revision = NULL;\n\n  /* Now we determine the single parts of the locale name.  First\n     look for the language.  Termination symbols are `_' and `@' if\n     we use XPG4 style, and `_', `+', and `,' if we use CEN syntax.  */\n  mask = 0;\n  syntax = undecided;\n  *language = cp = name;\n  cp = _nl_find_language (*language);\n\n  if (*language == cp)\n    /* This does not make sense: language has to be specified.  Use\n       this entry as it is without exploding.  Perhaps it is an alias.  */\n    cp = strchr (*language, '\\0');\n  else if (cp[0] == '_')\n    {\n      /* Next is the territory.  */\n      cp[0] = '\\0';\n      *territory = ++cp;\n\n      while (cp[0] != '\\0' && cp[0] != '.' && cp[0] != '@'\n\t     && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')\n\t++cp;\n\n      mask |= TERRITORY;\n\n      if (cp[0] == '.')\n\t{\n\t  /* Next is the codeset.  */\n\t  syntax = xpg;\n\t  cp[0] = '\\0';\n\t  *codeset = ++cp;\n\n\t  while (cp[0] != '\\0' && cp[0] != '@')\n\t    ++cp;\n\n\t  mask |= XPG_CODESET;\n\n\t  if (*codeset != cp && (*codeset)[0] != '\\0')\n\t    {\n\t      *normalized_codeset = _nl_normalize_codeset (*codeset,\n\t\t\t\t\t\t\t   cp - *codeset);\n\t      if (strcmp (*codeset, *normalized_codeset) == 0)\n\t\tfree ((char *) *normalized_codeset);\n\t      else\n\t\tmask |= XPG_NORM_CODESET;\n\t    }\n\t}\n    }\n\n  if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))\n    {\n      /* Next is the modifier.  */\n      syntax = cp[0] == '@' ? xpg : cen;\n      cp[0] = '\\0';\n      *modifier = ++cp;\n\n      while (syntax == cen && cp[0] != '\\0' && cp[0] != '+'\n\t     && cp[0] != ',' && cp[0] != '_')\n\t++cp;\n\n      mask |= XPG_MODIFIER | CEN_AUDIENCE;\n    }\n\n  if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))\n    {\n      syntax = cen;\n\n      if (cp[0] == '+')\n\t{\n \t  /* Next is special application (CEN syntax).  */\n\t  cp[0] = '\\0';\n\t  *special = ++cp;\n\n\t  while (cp[0] != '\\0' && cp[0] != ',' && cp[0] != '_')\n\t    ++cp;\n\n\t  mask |= CEN_SPECIAL;\n\t}\n\n      if (cp[0] == ',')\n\t{\n \t  /* Next is sponsor (CEN syntax).  */\n\t  cp[0] = '\\0';\n\t  *sponsor = ++cp;\n\n\t  while (cp[0] != '\\0' && cp[0] != '_')\n\t    ++cp;\n\n\t  mask |= CEN_SPONSOR;\n\t}\n\n      if (cp[0] == '_')\n\t{\n \t  /* Next is revision (CEN syntax).  */\n\t  cp[0] = '\\0';\n\t  *revision = ++cp;\n\n\t  mask |= CEN_REVISION;\n\t}\n    }\n\n  /* For CEN syntax values it might be important to have the\n     separator character in the file name, not for XPG syntax.  */\n  if (syntax == xpg)\n    {\n      if (*territory != NULL && (*territory)[0] == '\\0')\n\tmask &= ~TERRITORY;\n\n      if (*codeset != NULL && (*codeset)[0] == '\\0')\n\tmask &= ~XPG_CODESET;\n\n      if (*modifier != NULL && (*modifier)[0] == '\\0')\n\tmask &= ~XPG_MODIFIER;\n    }\n\n  return mask;\n}\n"
  },
  {
    "path": "intl/finddomain.c",
    "content": "/* Handle list of needed message catalogs\n   Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.\n   Written by Ulrich Drepper <drepper@gnu.org>, 1995.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <stdio.h>\n#include <sys/types.h>\n#include <stdlib.h>\n#include <string.h>\n\n#if defined HAVE_UNISTD_H || defined _LIBC\n# include <unistd.h>\n#endif\n\n#include \"gettextP.h\"\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n\n/* @@ end of prolog @@ */\n/* List of already loaded domains.  */\nstatic struct loaded_l10nfile *_nl_loaded_domains;\n\n\n/* Return a data structure describing the message catalog described by\n   the DOMAINNAME and CATEGORY parameters with respect to the currently\n   established bindings.  */\nstruct loaded_l10nfile *\ninternal_function\n_nl_find_domain (dirname, locale, domainname, domainbinding)\n     const char *dirname;\n     char *locale;\n     const char *domainname;\n     struct binding *domainbinding;\n{\n  struct loaded_l10nfile *retval;\n  const char *language;\n  const char *modifier;\n  const char *territory;\n  const char *codeset;\n  const char *normalized_codeset;\n  const char *special;\n  const char *sponsor;\n  const char *revision;\n  const char *alias_value;\n  int mask;\n\n  /* LOCALE can consist of up to four recognized parts for the XPG syntax:\n\n\t\tlanguage[_territory[.codeset]][@modifier]\n\n     and six parts for the CEN syntax:\n\n\tlanguage[_territory][+audience][+special][,[sponsor][_revision]]\n\n     Beside the first part all of them are allowed to be missing.  If\n     the full specified locale is not found, the less specific one are\n     looked for.  The various parts will be stripped off according to\n     the following order:\n\t\t(1) revision\n\t\t(2) sponsor\n\t\t(3) special\n\t\t(4) codeset\n\t\t(5) normalized codeset\n\t\t(6) territory\n\t\t(7) audience/modifier\n   */\n\n  /* If we have already tested for this locale entry there has to\n     be one data set in the list of loaded domains.  */\n  retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,\n\t\t\t       strlen (dirname) + 1, 0, locale, NULL, NULL,\n\t\t\t       NULL, NULL, NULL, NULL, NULL, domainname, 0);\n  if (retval != NULL)\n    {\n      /* We know something about this locale.  */\n      int cnt;\n\n      if (retval->decided == 0)\n\t_nl_load_domain (retval, domainbinding);\n\n      if (retval->data != NULL)\n\treturn retval;\n\n      for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)\n\t{\n\t  if (retval->successor[cnt]->decided == 0)\n\t    _nl_load_domain (retval->successor[cnt], domainbinding);\n\n\t  if (retval->successor[cnt]->data != NULL)\n\t    break;\n\t}\n      return cnt >= 0 ? retval : NULL;\n      /* NOTREACHED */\n    }\n\n  /* See whether the locale value is an alias.  If yes its value\n     *overwrites* the alias name.  No test for the original value is\n     done.  */\n  alias_value = _nl_expand_alias (locale);\n  if (alias_value != NULL)\n    {\n#if defined _LIBC || defined HAVE_STRDUP\n      locale = strdup (alias_value);\n      if (locale == NULL)\n\treturn NULL;\n#else\n      size_t len = strlen (alias_value) + 1;\n      locale = (char *) malloc (len);\n      if (locale == NULL)\n\treturn NULL;\n\n      memcpy (locale, alias_value, len);\n#endif\n    }\n\n  /* Now we determine the single parts of the locale name.  First\n     look for the language.  Termination symbols are `_' and `@' if\n     we use XPG4 style, and `_', `+', and `,' if we use CEN syntax.  */\n  mask = _nl_explode_name (locale, &language, &modifier, &territory,\n\t\t\t   &codeset, &normalized_codeset, &special,\n\t\t\t   &sponsor, &revision);\n\n  /* Create all possible locale entries which might be interested in\n     generalization.  */\n  retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,\n\t\t\t       strlen (dirname) + 1, mask, language, territory,\n\t\t\t       codeset, normalized_codeset, modifier, special,\n\t\t\t       sponsor, revision, domainname, 1);\n  if (retval == NULL)\n    /* This means we are out of core.  */\n    return NULL;\n\n  if (retval->decided == 0)\n    _nl_load_domain (retval, domainbinding);\n  if (retval->data == NULL)\n    {\n      int cnt;\n      for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)\n\t{\n\t  if (retval->successor[cnt]->decided == 0)\n\t    _nl_load_domain (retval->successor[cnt], domainbinding);\n\t  if (retval->successor[cnt]->data != NULL)\n\t    break;\n\t}\n    }\n\n  /* The room for an alias was dynamically allocated.  Free it now.  */\n  if (alias_value != NULL)\n    free (locale);\n\n  /* The space for normalized_codeset is dynamically allocated.  Free it.  */\n  if (mask & XPG_NORM_CODESET)\n    free ((void *) normalized_codeset);\n\n  return retval;\n}\n\n\n#ifdef _LIBC\nstatic void __attribute__ ((unused))\nfree_mem (void)\n{\n  struct loaded_l10nfile *runp = _nl_loaded_domains;\n\n  while (runp != NULL)\n    {\n      struct loaded_l10nfile *here = runp;\n      if (runp->data != NULL)\n\t_nl_unload_domain ((struct loaded_domain *) runp->data);\n      runp = runp->next;\n      free ((char *) here->filename);\n      free (here);\n    }\n}\n\ntext_set_element (__libc_subfreeres, free_mem);\n#endif\n"
  },
  {
    "path": "intl/gettext.c",
    "content": "/* Implementation of gettext(3) function.\n   Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#ifdef _LIBC\n# define __need_NULL\n# include <stddef.h>\n#else\n# include <stdlib.h>\t\t/* Just for NULL.  */\n#endif\n\n#include \"gettextP.h\"\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n\n/* @@ end of prolog @@ */\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define GETTEXT __gettext\n# define DCGETTEXT __dcgettext\n#else\n# define GETTEXT gettext__\n# define DCGETTEXT dcgettext__\n#endif\n\n/* Look up MSGID in the current default message catalog for the current\n   LC_MESSAGES locale.  If not found, returns MSGID itself (the default\n   text).  */\nchar *\nGETTEXT (msgid)\n     const char *msgid;\n{\n  return DCGETTEXT (NULL, msgid, LC_MESSAGES);\n}\n\n#ifdef _LIBC\n/* Alias for function name in GNU C Library.  */\nweak_alias (__gettext, gettext);\n#endif\n"
  },
  {
    "path": "intl/gettext.h",
    "content": "/* Description of GNU message catalog format: general file layout.\n   Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifndef _GETTEXT_H\n#define _GETTEXT_H 1\n\n#if HAVE_LIMITS_H || _LIBC\n# include <limits.h>\n#endif\n\n/* @@ end of prolog @@ */\n\n/* The magic number of the GNU message catalog format.  */\n#define _MAGIC 0x950412de\n#define _MAGIC_SWAPPED 0xde120495\n\n/* Revision number of the currently used .mo (binary) file format.  */\n#define MO_REVISION_NUMBER 0\n\n/* The following contortions are an attempt to use the C preprocessor\n   to determine an unsigned integral type that is 32 bits wide.  An\n   alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but\n   as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work\n   when cross-compiling.  */\n\n#if __STDC__\n# define UINT_MAX_32_BITS 4294967295U\n#else\n# define UINT_MAX_32_BITS 0xFFFFFFFF\n#endif\n\n/* If UINT_MAX isn't defined, assume it's a 32-bit type.\n   This should be valid for all systems GNU cares about because\n   that doesn't include 16-bit systems, and only modern systems\n   (that certainly have <limits.h>) have 64+-bit integral types.  */\n\n#ifndef UINT_MAX\n# define UINT_MAX UINT_MAX_32_BITS\n#endif\n\n#if UINT_MAX == UINT_MAX_32_BITS\ntypedef unsigned nls_uint32;\n#else\n# if USHRT_MAX == UINT_MAX_32_BITS\ntypedef unsigned short nls_uint32;\n# else\n#  if ULONG_MAX == UINT_MAX_32_BITS\ntypedef unsigned long nls_uint32;\n#  else\n  /* The following line is intended to throw an error.  Using #error is\n     not portable enough.  */\n  \"Cannot determine unsigned 32-bit data type.\"\n#  endif\n# endif\n#endif\n\n\n/* Header for binary .mo file format.  */\nstruct mo_file_header\n{\n  /* The magic number.  */\n  nls_uint32 magic;\n  /* The revision number of the file format.  */\n  nls_uint32 revision;\n  /* The number of strings pairs.  */\n  nls_uint32 nstrings;\n  /* Offset of table with start offsets of original strings.  */\n  nls_uint32 orig_tab_offset;\n  /* Offset of table with start offsets of translation strings.  */\n  nls_uint32 trans_tab_offset;\n  /* Size of hashing table.  */\n  nls_uint32 hash_tab_size;\n  /* Offset of first hashing entry.  */\n  nls_uint32 hash_tab_offset;\n};\n\nstruct string_desc\n{\n  /* Length of addressed string.  */\n  nls_uint32 length;\n  /* Offset of string in file.  */\n  nls_uint32 offset;\n};\n\n/* @@ begin of epilog @@ */\n\n#endif\t/* gettext.h  */\n"
  },
  {
    "path": "intl/gettextP.h",
    "content": "/* Header describing internals of libintl library.\n   Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.\n   Written by Ulrich Drepper <drepper@cygnus.com>, 1995.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifndef _GETTEXTP_H\n#define _GETTEXTP_H\n\n#include <stddef.h>\t\t/* Get size_t.  */\n\n#ifdef _LIBC\n# include \"../iconv/gconv_int.h\"\n#else\n# if HAVE_ICONV\n#  include <iconv.h>\n# endif\n#endif\n\n#include \"loadinfo.h\"\n\n#include \"gettext.h\"\t\t/* Get nls_uint32.  */\n\n/* @@ end of prolog @@ */\n\n#ifndef PARAMS\n# if __STDC__\n#  define PARAMS(args) args\n# else\n#  define PARAMS(args) ()\n# endif\n#endif\n\n#ifndef internal_function\n# define internal_function\n#endif\n\n/* Tell the compiler when a conditional or integer expression is\n   almost always true or almost always false.  */\n#ifndef HAVE_BUILTIN_EXPECT\n# define __builtin_expect(expr, val) (expr)\n#endif\n\n#ifndef W\n# define W(flag, data) ((flag) ? SWAP (data) : (data))\n#endif\n\n\n#ifdef _LIBC\n# include <byteswap.h>\n# define SWAP(i) bswap_32 (i)\n#else\nstatic inline nls_uint32\nSWAP (i)\n     nls_uint32 i;\n{\n  return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);\n}\n#endif\n\n\n/* This is the representation of the expressions to determine the\n   plural form.  */\nstruct expression\n{\n  int nargs;\t\t\t/* Number of arguments.  */\n  enum operator\n  {\n    /* Without arguments:  */\n    var,\t\t\t/* The variable \"n\".  */\n    num,\t\t\t/* Decimal number.  */\n    /* Unary operators:  */\n    lnot,\t\t\t/* Logical NOT.  */\n    /* Binary operators:  */\n    mult,\t\t\t/* Multiplication.  */\n    divide,\t\t\t/* Division.  */\n    module,\t\t\t/* Module operation.  */\n    plus,\t\t\t/* Addition.  */\n    minus,\t\t\t/* Subtraction.  */\n    less_than,\t\t\t/* Comparison.  */\n    greater_than,\t\t/* Comparison.  */\n    less_or_equal,\t\t/* Comparison.  */\n    greater_or_equal,\t\t/* Comparison.  */\n    equal,\t\t\t/* Comparison for equality.  */\n    not_equal,\t\t\t/* Comparison for inequality.  */\n    land,\t\t\t/* Logical AND.  */\n    lor,\t\t\t/* Logical OR.  */\n    /* Ternary operators:  */\n    qmop\t\t\t/* Question mark operator.  */\n  } operation;\n  union\n  {\n    unsigned long int num;\t/* Number value for `num'.  */\n    struct expression *args[3];\t/* Up to three arguments.  */\n  } val;\n};\n\n/* This is the data structure to pass information to the parser and get\n   the result in a thread-safe way.  */\nstruct parse_args\n{\n  const char *cp;\n  struct expression *res;\n};\n\n\n/* The representation of an opened message catalog.  */\nstruct loaded_domain\n{\n  const char *data;\n  int use_mmap;\n  size_t mmap_size;\n  int must_swap;\n  nls_uint32 nstrings;\n  struct string_desc *orig_tab;\n  struct string_desc *trans_tab;\n  nls_uint32 hash_size;\n  nls_uint32 *hash_tab;\n  int codeset_cntr;\n#ifdef _LIBC\n  __gconv_t conv;\n#else\n# if HAVE_ICONV\n  iconv_t conv;\n# endif\n#endif\n  char **conv_tab;\n\n  struct expression *plural;\n  unsigned long int nplurals;\n};\n\n/* We want to allocate a string at the end of the struct.  But ISO C\n   doesn't allow zero sized arrays.  */\n#ifdef __GNUC__\n# define ZERO 0\n#else\n# define ZERO 1\n#endif\n\n/* A set of settings bound to a message domain.  Used to store settings\n   from bindtextdomain() and bind_textdomain_codeset().  */\nstruct binding\n{\n  struct binding *next;\n  char *dirname;\n  int codeset_cntr;\t/* Incremented each time codeset changes.  */\n  char *codeset;\n  char domainname[ZERO];\n};\n\n/* A counter which is incremented each time some previous translations\n   become invalid.\n   This variable is part of the external ABI of the GNU libintl.  */\nextern int _nl_msg_cat_cntr;\n\nstruct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,\n\t\t\t\t\t\t char *__locale,\n\t\t\t\t\t\t const char *__domainname,\n\t\t\t\t\t      struct binding *__domainbinding))\n     internal_function;\nvoid _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain,\n\t\t\t      struct binding *__domainbinding))\n     internal_function;\nvoid _nl_unload_domain PARAMS ((struct loaded_domain *__domain))\n     internal_function;\nconst char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file,\n\t\t\t\t\t  struct loaded_domain *__domain,\n\t\t\t\t\t  struct binding *__domainbinding))\n     internal_function;\nvoid _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain))\n     internal_function;\n\nchar *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file,\n\t\t\t    struct binding *domainbinding,\n\t\t\t    const char *msgid, size_t *lengthp))\n     internal_function;\n\n#ifdef _LIBC\nextern char *__gettext PARAMS ((const char *__msgid));\nextern char *__dgettext PARAMS ((const char *__domainname,\n\t\t\t\t const char *__msgid));\nextern char *__dcgettext PARAMS ((const char *__domainname,\n\t\t\t\t  const char *__msgid, int __category));\nextern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2,\n\t\t\t\t unsigned long int __n));\nextern char *__dngettext PARAMS ((const char *__domainname,\n\t\t\t\t  const char *__msgid1, const char *__msgid2,\n\t\t\t\t  unsigned long int n));\nextern char *__dcngettext PARAMS ((const char *__domainname,\n\t\t\t\t   const char *__msgid1, const char *__msgid2,\n\t\t\t\t   unsigned long int __n, int __category));\nextern char *__dcigettext PARAMS ((const char *__domainname,\n\t\t\t\t   const char *__msgid1, const char *__msgid2,\n\t\t\t\t   int __plural, unsigned long int __n,\n\t\t\t\t   int __category));\nextern char *__textdomain PARAMS ((const char *__domainname));\nextern char *__bindtextdomain PARAMS ((const char *__domainname,\n\t\t\t\t       const char *__dirname));\nextern char *__bind_textdomain_codeset PARAMS ((const char *__domainname,\n\t\t\t\t\t\tconst char *__codeset));\n#else\nextern char *gettext__ PARAMS ((const char *__msgid));\nextern char *dgettext__ PARAMS ((const char *__domainname,\n\t\t\t\t const char *__msgid));\nextern char *dcgettext__ PARAMS ((const char *__domainname,\n\t\t\t\t  const char *__msgid, int __category));\nextern char *ngettext__ PARAMS ((const char *__msgid1, const char *__msgid2,\n\t\t\t\t unsigned long int __n));\nextern char *dngettext__ PARAMS ((const char *__domainname,\n\t\t\t\t  const char *__msgid1, const char *__msgid2,\n\t\t\t\t  unsigned long int __n));\nextern char *dcngettext__ PARAMS ((const char *__domainname,\n\t\t\t\t   const char *__msgid1, const char *__msgid2,\n\t\t\t\t   unsigned long int __n, int __category));\nextern char *dcigettext__ PARAMS ((const char *__domainname,\n\t\t\t\t   const char *__msgid1, const char *__msgid2,\n\t\t\t\t   int __plural, unsigned long int __n,\n\t\t\t\t   int __category));\nextern char *textdomain__ PARAMS ((const char *__domainname));\nextern char *bindtextdomain__ PARAMS ((const char *__domainname,\n\t\t\t\t       const char *__dirname));\nextern char *bind_textdomain_codeset__ PARAMS ((const char *__domainname,\n\t\t\t\t\t\tconst char *__codeset));\n#endif\n\n#ifdef _LIBC\nextern void __gettext_free_exp PARAMS ((struct expression *exp))\n     internal_function;\nextern int __gettextparse PARAMS ((void *arg));\n#else\nextern void gettext_free_exp__ PARAMS ((struct expression *exp))\n     internal_function;\nextern int gettextparse__ PARAMS ((void *arg));\n#endif\n\n/* @@ begin of epilog @@ */\n\n#endif /* gettextP.h  */\n"
  },
  {
    "path": "intl/hash-string.h",
    "content": "/* Description of GNU message catalog format: string hashing function.\n   Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n/* @@ end of prolog @@ */\n\n#ifndef PARAMS\n# if __STDC__\n#  define PARAMS(Args) Args\n# else\n#  define PARAMS(Args) ()\n# endif\n#endif\n\n/* We assume to have `unsigned long int' value with at least 32 bits.  */\n#define HASHWORDBITS 32\n\n\n/* Defines the so called `hashpjw' function by P.J. Weinberger\n   [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,\n   1986, 1987 Bell Telephone Laboratories, Inc.]  */\nstatic unsigned long int hash_string PARAMS ((const char *__str_param));\n\nstatic inline unsigned long int\nhash_string (str_param)\n     const char *str_param;\n{\n  unsigned long int hval, g;\n  const char *str = str_param;\n\n  /* Compute the hash value for the given string.  */\n  hval = 0;\n  while (*str != '\\0')\n    {\n      hval <<= 4;\n      hval += (unsigned long int) *str++;\n      g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));\n      if (g != 0)\n\t{\n\t  hval ^= g >> (HASHWORDBITS - 8);\n\t  hval ^= g;\n\t}\n    }\n  return hval;\n}\n"
  },
  {
    "path": "intl/intl-compat.c",
    "content": "/* intl-compat.c - Stub functions to call gettext functions from GNU gettext\n   Library.\n   Copyright (C) 1995, 2000, 2001 Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include \"libgnuintl.h\"\n#include \"gettextP.h\"\n\n/* @@ end of prolog @@ */\n\n/* This file redirects the gettext functions (without prefix or suffix) to\n   those defined in the included GNU gettext library (with \"__\" suffix).\n   It is compiled into libintl when the included GNU gettext library is\n   configured --with-included-gettext.\n\n   This redirection works also in the case that the system C library or\n   the system libintl library contain gettext/textdomain/... functions.\n   If it didn't, we would need to add preprocessor level redirections to\n   libgnuintl.h of the following form:\n\n#    define gettext gettext__\n#    define dgettext dgettext__\n#    define dcgettext dcgettext__\n#    define ngettext ngettext__\n#    define dngettext dngettext__\n#    define dcngettext dcngettext__\n#    define textdomain textdomain__\n#    define bindtextdomain bindtextdomain__\n#    define bind_textdomain_codeset bind_textdomain_codeset__\n\n   How does this redirection work? There are two cases.\n   A. When libintl.a is linked into an executable, it works because\n      functions defined in the executable always override functions in\n      the shared libraries.\n   B. When libintl.so is used, it works because\n      1. those systems defining gettext/textdomain/... in the C library\n         (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer) are\n         ELF systems and define these symbols as weak, thus explicitly\n         letting other shared libraries override it.\n      2. those systems defining gettext/textdomain/... in a standalone\n         libintl.so library (namely, Solaris 2.3 and newer) have this\n         shared library in /usr/lib, and the linker will search /usr/lib\n         *after* the directory where the GNU gettext library is installed.\n\n   A third case, namely when libintl.a is linked into a shared library\n   whose name is not libintl.so, is not supported. In this case, on\n   Solaris, when -lintl precedes the linker option for the shared library\n   containing GNU gettext, the system's gettext would indeed override\n   the GNU gettext. Anyone doing this kind of stuff must be clever enough\n   to 1. compile libintl.a with -fPIC, 2. remove -lintl from his linker\n   command line.  */\n\n\n#undef gettext\n#undef dgettext\n#undef dcgettext\n#undef ngettext\n#undef dngettext\n#undef dcngettext\n#undef textdomain\n#undef bindtextdomain\n#undef bind_textdomain_codeset\n\n\nchar *\ngettext (msgid)\n     const char *msgid;\n{\n  return gettext__ (msgid);\n}\n\n\nchar *\ndgettext (domainname, msgid)\n     const char *domainname;\n     const char *msgid;\n{\n  return dgettext__ (domainname, msgid);\n}\n\n\nchar *\ndcgettext (domainname, msgid, category)\n     const char *domainname;\n     const char *msgid;\n     int category;\n{\n  return dcgettext__ (domainname, msgid, category);\n}\n\n\nchar *\nngettext (msgid1, msgid2, n)\n     const char *msgid1;\n     const char *msgid2;\n     unsigned long int n;\n{\n  return ngettext__ (msgid1, msgid2, n);\n}\n\n\nchar *\ndngettext (domainname, msgid1, msgid2, n)\n     const char *domainname;\n     const char *msgid1;\n     const char *msgid2;\n     unsigned long int n;\n{\n  return dngettext__ (domainname, msgid1, msgid2, n);\n}\n\n\nchar *\ndcngettext (domainname, msgid1, msgid2, n, category)\n     const char *domainname;\n     const char *msgid1;\n     const char *msgid2;\n     unsigned long int n;\n     int category;\n{\n  return dcngettext__ (domainname, msgid1, msgid2, n, category);\n}\n\n\nchar *\ntextdomain (domainname)\n     const char *domainname;\n{\n  return textdomain__ (domainname);\n}\n\n\nchar *\nbindtextdomain (domainname, dirname)\n     const char *domainname;\n     const char *dirname;\n{\n  return bindtextdomain__ (domainname, dirname);\n}\n\n\nchar *\nbind_textdomain_codeset (domainname, codeset)\n     const char *domainname;\n     const char *codeset;\n{\n  return bind_textdomain_codeset__ (domainname, codeset);\n}\n"
  },
  {
    "path": "intl/l10nflist.c",
    "content": "/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.\n   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n/* Tell glibc's <string.h> to provide a prototype for stpcpy().\n   This must come before <config.h> because <config.h> may include\n   <features.h>, and once <features.h> has been included, it's too late.  */\n#ifndef _GNU_SOURCE\n# define _GNU_SOURCE\t1\n#endif\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <string.h>\n#if !HAVE_STRCHR && !defined _LIBC\n# ifndef strchr\n#  define strchr index\n# endif\n#endif\n\n#if defined _LIBC || defined HAVE_ARGZ_H\n# include <argz.h>\n#endif\n#include <ctype.h>\n#include <sys/types.h>\n#include <stdlib.h>\n\n#include \"loadinfo.h\"\n\n/* On some strange systems still no definition of NULL is found.  Sigh!  */\n#ifndef NULL\n# if defined __STDC__ && __STDC__\n#  define NULL ((void *) 0)\n# else\n#  define NULL 0\n# endif\n#endif\n\n/* @@ end of prolog @@ */\n\n#ifdef _LIBC\n/* Rename the non ANSI C functions.  This is required by the standard\n   because some ANSI C functions will require linking with this object\n   file and the name space must not be polluted.  */\n# ifndef stpcpy\n#  define stpcpy(dest, src) __stpcpy(dest, src)\n# endif\n#else\n# ifndef HAVE_STPCPY\nstatic char *stpcpy PARAMS ((char *dest, const char *src));\n# endif\n#endif\n\n/* Define function which are usually not available.  */\n\n#if !defined _LIBC && !defined HAVE___ARGZ_COUNT\n/* Returns the number of strings in ARGZ.  */\nstatic size_t argz_count__ PARAMS ((const char *argz, size_t len));\n\nstatic size_t\nargz_count__ (argz, len)\n     const char *argz;\n     size_t len;\n{\n  size_t count = 0;\n  while (len > 0)\n    {\n      size_t part_len = strlen (argz);\n      argz += part_len + 1;\n      len -= part_len + 1;\n      count++;\n    }\n  return count;\n}\n# undef __argz_count\n# define __argz_count(argz, len) argz_count__ (argz, len)\n#endif\t/* !_LIBC && !HAVE___ARGZ_COUNT */\n\n#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY\n/* Make '\\0' separated arg vector ARGZ printable by converting all the '\\0's\n   except the last into the character SEP.  */\nstatic void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));\n\nstatic void\nargz_stringify__ (argz, len, sep)\n     char *argz;\n     size_t len;\n     int sep;\n{\n  while (len > 0)\n    {\n      size_t part_len = strlen (argz);\n      argz += part_len;\n      len -= part_len + 1;\n      if (len > 0)\n\t*argz++ = sep;\n    }\n}\n# undef __argz_stringify\n# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)\n#endif\t/* !_LIBC && !HAVE___ARGZ_STRINGIFY */\n\n#if !defined _LIBC && !defined HAVE___ARGZ_NEXT\nstatic char *argz_next__ PARAMS ((char *argz, size_t argz_len,\n\t\t\t\t  const char *entry));\n\nstatic char *\nargz_next__ (argz, argz_len, entry)\n     char *argz;\n     size_t argz_len;\n     const char *entry;\n{\n  if (entry)\n    {\n      if (entry < argz + argz_len)\n        entry = strchr (entry, '\\0') + 1;\n\n      return entry >= argz + argz_len ? NULL : (char *) entry;\n    }\n  else\n    if (argz_len > 0)\n      return argz;\n    else\n      return 0;\n}\n# undef __argz_next\n# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)\n#endif\t/* !_LIBC && !HAVE___ARGZ_NEXT */\n\n\n/* Return number of bits set in X.  */\nstatic int pop PARAMS ((int x));\n\nstatic inline int\npop (x)\n     int x;\n{\n  /* We assume that no more than 16 bits are used.  */\n  x = ((x & ~0x5555) >> 1) + (x & 0x5555);\n  x = ((x & ~0x3333) >> 2) + (x & 0x3333);\n  x = ((x >> 4) + x) & 0x0f0f;\n  x = ((x >> 8) + x) & 0xff;\n\n  return x;\n}\n\n\f\nstruct loaded_l10nfile *\n_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,\n\t\t    territory, codeset, normalized_codeset, modifier, special,\n\t\t    sponsor, revision, filename, do_allocate)\n     struct loaded_l10nfile **l10nfile_list;\n     const char *dirlist;\n     size_t dirlist_len;\n     int mask;\n     const char *language;\n     const char *territory;\n     const char *codeset;\n     const char *normalized_codeset;\n     const char *modifier;\n     const char *special;\n     const char *sponsor;\n     const char *revision;\n     const char *filename;\n     int do_allocate;\n{\n  char *abs_filename;\n  struct loaded_l10nfile *last = NULL;\n  struct loaded_l10nfile *retval;\n  char *cp;\n  size_t entries;\n  int cnt;\n\n  /* Allocate room for the full file name.  */\n  abs_filename = (char *) malloc (dirlist_len\n\t\t\t\t  + strlen (language)\n\t\t\t\t  + ((mask & TERRITORY) != 0\n\t\t\t\t     ? strlen (territory) + 1 : 0)\n\t\t\t\t  + ((mask & XPG_CODESET) != 0\n\t\t\t\t     ? strlen (codeset) + 1 : 0)\n\t\t\t\t  + ((mask & XPG_NORM_CODESET) != 0\n\t\t\t\t     ? strlen (normalized_codeset) + 1 : 0)\n\t\t\t\t  + (((mask & XPG_MODIFIER) != 0\n\t\t\t\t      || (mask & CEN_AUDIENCE) != 0)\n\t\t\t\t     ? strlen (modifier) + 1 : 0)\n\t\t\t\t  + ((mask & CEN_SPECIAL) != 0\n\t\t\t\t     ? strlen (special) + 1 : 0)\n\t\t\t\t  + (((mask & CEN_SPONSOR) != 0\n\t\t\t\t      || (mask & CEN_REVISION) != 0)\n\t\t\t\t     ? (1 + ((mask & CEN_SPONSOR) != 0\n\t\t\t\t\t     ? strlen (sponsor) + 1 : 0)\n\t\t\t\t\t+ ((mask & CEN_REVISION) != 0\n\t\t\t\t\t   ? strlen (revision) + 1 : 0)) : 0)\n\t\t\t\t  + 1 + strlen (filename) + 1);\n\n  if (abs_filename == NULL)\n    return NULL;\n\n  retval = NULL;\n  last = NULL;\n\n  /* Construct file name.  */\n  memcpy (abs_filename, dirlist, dirlist_len);\n  __argz_stringify (abs_filename, dirlist_len, PATH_SEPARATOR);\n  cp = abs_filename + (dirlist_len - 1);\n  *cp++ = '/';\n  cp = stpcpy (cp, language);\n\n  if ((mask & TERRITORY) != 0)\n    {\n      *cp++ = '_';\n      cp = stpcpy (cp, territory);\n    }\n  if ((mask & XPG_CODESET) != 0)\n    {\n      *cp++ = '.';\n      cp = stpcpy (cp, codeset);\n    }\n  if ((mask & XPG_NORM_CODESET) != 0)\n    {\n      *cp++ = '.';\n      cp = stpcpy (cp, normalized_codeset);\n    }\n  if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)\n    {\n      /* This component can be part of both syntaces but has different\n\t leading characters.  For CEN we use `+', else `@'.  */\n      *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';\n      cp = stpcpy (cp, modifier);\n    }\n  if ((mask & CEN_SPECIAL) != 0)\n    {\n      *cp++ = '+';\n      cp = stpcpy (cp, special);\n    }\n  if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)\n    {\n      *cp++ = ',';\n      if ((mask & CEN_SPONSOR) != 0)\n\tcp = stpcpy (cp, sponsor);\n      if ((mask & CEN_REVISION) != 0)\n\t{\n\t  *cp++ = '_';\n\t  cp = stpcpy (cp, revision);\n\t}\n    }\n\n  *cp++ = '/';\n  stpcpy (cp, filename);\n\n  /* Look in list of already loaded domains whether it is already\n     available.  */\n  last = NULL;\n  for (retval = *l10nfile_list; retval != NULL; retval = retval->next)\n    if (retval->filename != NULL)\n      {\n\tint compare = strcmp (retval->filename, abs_filename);\n\tif (compare == 0)\n\t  /* We found it!  */\n\t  break;\n\tif (compare < 0)\n\t  {\n\t    /* It's not in the list.  */\n\t    retval = NULL;\n\t    break;\n\t  }\n\n\tlast = retval;\n      }\n\n  if (retval != NULL || do_allocate == 0)\n    {\n      free (abs_filename);\n      return retval;\n    }\n\n  retval = (struct loaded_l10nfile *)\n    malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len)\n\t\t\t\t* (1 << pop (mask))\n\t\t\t\t* sizeof (struct loaded_l10nfile *)));\n  if (retval == NULL)\n    return NULL;\n\n  retval->filename = abs_filename;\n  retval->decided = (__argz_count (dirlist, dirlist_len) != 1\n\t\t     || ((mask & XPG_CODESET) != 0\n\t\t\t && (mask & XPG_NORM_CODESET) != 0));\n  retval->data = NULL;\n\n  if (last == NULL)\n    {\n      retval->next = *l10nfile_list;\n      *l10nfile_list = retval;\n    }\n  else\n    {\n      retval->next = last->next;\n      last->next = retval;\n    }\n\n  entries = 0;\n  /* If the DIRLIST is a real list the RETVAL entry corresponds not to\n     a real file.  So we have to use the DIRLIST separation mechanism\n     of the inner loop.  */\n  cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask;\n  for (; cnt >= 0; --cnt)\n    if ((cnt & ~mask) == 0\n\t&& ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)\n\t&& ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))\n      {\n\t/* Iterate over all elements of the DIRLIST.  */\n\tchar *dir = NULL;\n\n\twhile ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))\n\t       != NULL)\n\t  retval->successor[entries++]\n\t    = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt,\n\t\t\t\t  language, territory, codeset,\n\t\t\t\t  normalized_codeset, modifier, special,\n\t\t\t\t  sponsor, revision, filename, 1);\n      }\n  retval->successor[entries] = NULL;\n\n  return retval;\n}\n\f\n/* Normalize codeset name.  There is no standard for the codeset\n   names.  Normalization allows the user to use any of the common\n   names.  The return value is dynamically allocated and has to be\n   freed by the caller.  */\nconst char *\n_nl_normalize_codeset (codeset, name_len)\n     const char *codeset;\n     size_t name_len;\n{\n  int len = 0;\n  int only_digit = 1;\n  char *retval;\n  char *wp;\n  size_t cnt;\n\n  for (cnt = 0; cnt < name_len; ++cnt)\n    if (isalnum ((unsigned char) codeset[cnt]))\n      {\n\t++len;\n\n\tif (isalpha ((unsigned char) codeset[cnt]))\n\t  only_digit = 0;\n      }\n\n  retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);\n\n  if (retval != NULL)\n    {\n      if (only_digit)\n\twp = stpcpy (retval, \"iso\");\n      else\n\twp = retval;\n\n      for (cnt = 0; cnt < name_len; ++cnt)\n\tif (isalpha ((unsigned char) codeset[cnt]))\n\t  *wp++ = tolower ((unsigned char) codeset[cnt]);\n\telse if (isdigit ((unsigned char) codeset[cnt]))\n\t  *wp++ = codeset[cnt];\n\n      *wp = '\\0';\n    }\n\n  return (const char *) retval;\n}\n\n\n/* @@ begin of epilog @@ */\n\n/* We don't want libintl.a to depend on any other library.  So we\n   avoid the non-standard function stpcpy.  In GNU C Library this\n   function is available, though.  Also allow the symbol HAVE_STPCPY\n   to be defined.  */\n#if !_LIBC && !HAVE_STPCPY\nstatic char *\nstpcpy (dest, src)\n     char *dest;\n     const char *src;\n{\n  while ((*dest++ = *src++) != '\\0')\n    /* Do nothing. */ ;\n  return dest - 1;\n}\n#endif\n"
  },
  {
    "path": "intl/libgettext.h",
    "content": "/* Convenience header for conditional use of GNU <libintl.h>.\n   Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifndef _LIBGETTEXT_H\n#define _LIBGETTEXT_H 1\n\n/* NLS can be disabled through the configure --disable-nls option.  */\n#if ENABLE_NLS\n\n/* Get declarations of GNU message catalog functions.  */\n# include <libintl.h>\n\n#else\n\n# define gettext(Msgid) (Msgid)\n# define dgettext(Domainname, Msgid) (Msgid)\n# define dcgettext(Domainname, Msgid, Category) (Msgid)\n# define ngettext(Msgid1, Msgid2, N) \\\n    ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2))\n# define dngettext(Domainname, Msgid1, Msgid2, N) \\\n    ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2))\n# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \\\n    ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2))\n# define textdomain(Domainname) ((char *) (Domainname))\n# define bindtextdomain(Domainname, Dirname) ((char *) (Dirname))\n# define bind_textdomain_codeset(Domainname, Codeset) ((char *) (Codeset))\n\n#endif\n\n/* For automatical extraction of messages sometimes no real\n   translation is needed.  Instead the string itself is the result.  */\n#define gettext_noop(Str) (Str)\n\n#endif /* _LIBGETTEXT_H */\n"
  },
  {
    "path": "intl/libgnuintl.h",
    "content": "/* Message catalogs for internationalization.\n   Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifndef _LIBINTL_H\n#define _LIBINTL_H\t1\n\n#include <locale.h>\n\n/* The LC_MESSAGES locale category is the category used by the functions\n   gettext() and dgettext().  It is specified in POSIX, but not in ANSI C.\n   On systems that don't define it, use an arbitrary value instead.\n   On Solaris, <locale.h> defines __LOCALE_H then includes <libintl.h> (i.e.\n   this file!) and then only defines LC_MESSAGES.  To avoid a redefinition\n   warning, don't define LC_MESSAGES in this case.  */\n#if !defined LC_MESSAGES && !defined __LOCALE_H\n# define LC_MESSAGES 1729\n#endif\n\n/* We define an additional symbol to signal that we use the GNU\n   implementation of gettext.  */\n#define __USE_GNU_GETTEXT 1\n\n/* Resolve a platform specific conflict on DJGPP.  GNU gettext takes\n   precedence over _conio_gettext.  */\n#ifdef __DJGPP__\n# undef gettext\n# define gettext gettext\n#endif\n\n#ifndef PARAMS\n# if __STDC__ || defined __cplusplus\n#  define PARAMS(args) args\n# else\n#  define PARAMS(args) ()\n# endif\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Look up MSGID in the current default message catalog for the current\n   LC_MESSAGES locale.  If not found, returns MSGID itself (the default\n   text).  */\nextern char *gettext PARAMS ((const char *__msgid));\n\n/* Look up MSGID in the DOMAINNAME message catalog for the current\n   LC_MESSAGES locale.  */\nextern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));\n\n/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY\n   locale.  */\nextern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,\n\t\t\t\tint __category));\n\n\n/* Similar to `gettext' but select the plural form corresponding to the\n   number N.  */\nextern char *ngettext PARAMS ((const char *__msgid1, const char *__msgid2,\n\t\t\t       unsigned long int __n));\n\n/* Similar to `dgettext' but select the plural form corresponding to the\n   number N.  */\nextern char *dngettext PARAMS ((const char *__domainname, const char *__msgid1,\n\t\t\t\tconst char *__msgid2, unsigned long int __n));\n\n/* Similar to `dcgettext' but select the plural form corresponding to the\n   number N.  */\nextern char *dcngettext PARAMS ((const char *__domainname, const char *__msgid1,\n\t\t\t\t const char *__msgid2, unsigned long int __n,\n\t\t\t\t int __category));\n\n\n/* Set the current default message catalog to DOMAINNAME.\n   If DOMAINNAME is null, return the current default.\n   If DOMAINNAME is \"\", reset to the default of \"messages\".  */\nextern char *textdomain PARAMS ((const char *__domainname));\n\n/* Specify that the DOMAINNAME message catalog will be found\n   in DIRNAME rather than in the system locale data base.  */\nextern char *bindtextdomain PARAMS ((const char *__domainname,\n\t\t\t\t     const char *__dirname));\n\n/* Specify the character encoding in which the messages from the\n   DOMAINNAME message catalog will be returned.  */\nextern char *bind_textdomain_codeset PARAMS ((const char *__domainname,\n\t\t\t\t\t      const char *__codeset));\n\n\n/* Optimized version of the functions above.  */\n#if defined __OPTIMIZED\n/* These are macros, but could also be inline functions.  */\n\n# define gettext(msgid)\t\t\t\t\t\t\t      \\\n  dgettext (NULL, msgid)\n\n# define dgettext(domainname, msgid)\t\t\t\t\t      \\\n  dcgettext (domainname, msgid, LC_MESSAGES)\n\n# define ngettext(msgid1, msgid2, n)\t\t\t\t\t      \\\n  dngettext (NULL, msgid1, msgid2, n)\n\n# define dngettext(domainname, msgid1, msgid2, n)\t\t\t      \\\n  dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES)\n\n#endif /* Optimizing. */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* libintl.h */\n"
  },
  {
    "path": "intl/libintl.glibc",
    "content": "/* Message catalogs for internationalization.\n   Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.\n   This file is derived from the file libgettext.h in the GNU gettext package.\n\n   The GNU C Library is free software; you can redistribute it and/or\n   modify it under the terms of the GNU Library General Public License as\n   published by the Free Software Foundation; either version 2 of the\n   License, or (at your option) any later version.\n\n   The GNU C Library is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with the GNU C Library; see the file COPYING.LIB.  If not,\n   write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n   Boston, MA  02110-1301, USA.  */\n\n#ifndef _LIBINTL_H\n#define _LIBINTL_H\t1\n\n#include <features.h>\n\n/* We define an additional symbol to signal that we use the GNU\n   implementation of gettext.  */\n#define __USE_GNU_GETTEXT 1\n\n__BEGIN_DECLS\n\n/* Look up MSGID in the current default message catalog for the current\n   LC_MESSAGES locale.  If not found, returns MSGID itself (the default\n   text).  */\nextern char *gettext (__const char *__msgid) __THROW;\n\n/* Look up MSGID in the DOMAINNAME message catalog for the current\n   LC_MESSAGES locale.  */\nextern char *dgettext (__const char *__domainname, __const char *__msgid)\n     __THROW;\nextern char *__dgettext (__const char *__domainname, __const char *__msgid)\n     __THROW __attribute_format_arg__ (2);\n\n/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY\n   locale.  */\nextern char *dcgettext (__const char *__domainname,\n\t\t\t__const char *__msgid, int __category) __THROW;\nextern char *__dcgettext (__const char *__domainname,\n\t\t\t  __const char *__msgid, int __category)\n     __THROW __attribute_format_arg__ (2);\n\n\n/* Similar to `gettext' but select the plural form corresponding to the\n   number N.  */\nextern char *ngettext (__const char *__msgid1, __const char *__msgid2,\n\t\t       unsigned long int __n)\n     __THROW __attribute_format_arg__ (1);\n\n/* Similar to `dgettext' but select the plural form corresponding to the\n   number N.  */\nextern char *dngettext (__const char *__domainname, __const char *__msgid1,\n\t\t\t__const char *__msgid2, unsigned long int __n)\n     __THROW __attribute_format_arg__ (2);\n\n/* Similar to `dcgettext' but select the plural form corresponding to the\n   number N.  */\nextern char *dcngettext (__const char *__domainname, __const char *__msgid1,\n\t\t\t __const char *__msgid2, unsigned long int __n,\n\t\t\t int __category)\n     __THROW __attribute_format_arg__ (2);\n\n\n/* Set the current default message catalog to DOMAINNAME.\n   If DOMAINNAME is null, return the current default.\n   If DOMAINNAME is \"\", reset to the default of \"messages\".  */\nextern char *textdomain (__const char *__domainname) __THROW;\n\n/* Specify that the DOMAINNAME message catalog will be found\n   in DIRNAME rather than in the system locale data base.  */\nextern char *bindtextdomain (__const char *__domainname,\n\t\t\t     __const char *__dirname) __THROW;\n\n/* Specify the character encoding in which the messages from the\n   DOMAINNAME message catalog will be returned.  */\nextern char *bind_textdomain_codeset (__const char *__domainname,\n\t\t\t\t      __const char *__codeset) __THROW;\n\n\n/* Optimized version of the function above.  */\n#if defined __OPTIMIZE__\n\n/* We need NULL for `gettext'.  */\n# define __need_NULL\n# include <stddef.h>\n\n/* We need LC_MESSAGES for `dgettext'.  */\n# include <locale.h>\n\n/* These must be macros.  Inlined functions are useless because the\n   `__builtin_constant_p' predicate in dcgettext would always return\n   false.  */\n\n# define gettext(msgid) dgettext (NULL, msgid)\n\n# define dgettext(domainname, msgid) \\\n  dcgettext (domainname, msgid, LC_MESSAGES)\n\n# define ngettext(msgid1, msgid2, n) dngettext (NULL, msgid1, msgid2, n)\n\n# define dngettext(domainname, msgid1, msgid2, n) \\\n  dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES)\n\n#endif\t/* Optimizing.  */\n\n__END_DECLS\n\n#endif /* libintl.h */\n"
  },
  {
    "path": "intl/linux-msg.sed",
    "content": ""
  },
  {
    "path": "intl/loadinfo.h",
    "content": "/* Copyright (C) 1996-1999, 2000, 2001 Free Software Foundation, Inc.\n   This file is part of the GNU C Library.\n   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifndef _LOADINFO_H\n#define _LOADINFO_H\t1\n\n#ifndef PARAMS\n# if __STDC__\n#  define PARAMS(args) args\n# else\n#  define PARAMS(args) ()\n# endif\n#endif\n\n#ifndef internal_function\n# define internal_function\n#endif\n\n/* Tell the compiler when a conditional or integer expression is\n   almost always true or almost always false.  */\n#ifndef HAVE_BUILTIN_EXPECT\n# define __builtin_expect(expr, val) (expr)\n#endif\n\n/* Separator in PATH like lists of pathnames.  */\n#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__\n  /* Win32, OS/2, DOS */\n# define PATH_SEPARATOR ';'\n#else\n  /* Unix */\n# define PATH_SEPARATOR ':'\n#endif\n\n/* Encoding of locale name parts.  */\n#define CEN_REVISION\t\t1\n#define CEN_SPONSOR\t\t2\n#define CEN_SPECIAL\t\t4\n#define XPG_NORM_CODESET\t8\n#define XPG_CODESET\t\t16\n#define TERRITORY\t\t32\n#define CEN_AUDIENCE\t\t64\n#define XPG_MODIFIER\t\t128\n\n#define CEN_SPECIFIC\t(CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)\n#define XPG_SPECIFIC\t(XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)\n\n\nstruct loaded_l10nfile\n{\n  const char *filename;\n  int decided;\n\n  const void *data;\n\n  struct loaded_l10nfile *next;\n  struct loaded_l10nfile *successor[1];\n};\n\n\n/* Normalize codeset name.  There is no standard for the codeset\n   names.  Normalization allows the user to use any of the common\n   names.  The return value is dynamically allocated and has to be\n   freed by the caller.  */\nextern const char *_nl_normalize_codeset PARAMS ((const char *codeset,\n\t\t\t\t\t\t  size_t name_len));\n\nextern struct loaded_l10nfile *\n_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,\n\t\t\t    const char *dirlist, size_t dirlist_len, int mask,\n\t\t\t    const char *language, const char *territory,\n\t\t\t    const char *codeset,\n\t\t\t    const char *normalized_codeset,\n\t\t\t    const char *modifier, const char *special,\n\t\t\t    const char *sponsor, const char *revision,\n\t\t\t    const char *filename, int do_allocate));\n\n\nextern const char *_nl_expand_alias PARAMS ((const char *name));\n\n/* normalized_codeset is dynamically allocated and has to be freed by\n   the caller.  */\nextern int _nl_explode_name PARAMS ((char *name, const char **language,\n\t\t\t\t     const char **modifier,\n\t\t\t\t     const char **territory,\n\t\t\t\t     const char **codeset,\n\t\t\t\t     const char **normalized_codeset,\n\t\t\t\t     const char **special,\n\t\t\t\t     const char **sponsor,\n\t\t\t\t     const char **revision));\n\nextern char *_nl_find_language PARAMS ((const char *name));\n\n#endif\t/* loadinfo.h */\n"
  },
  {
    "path": "intl/loadmsgcat.c",
    "content": "/* Load needed message catalogs.\n   Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n/* Tell glibc's <string.h> to provide a prototype for mempcpy().\n   This must come before <config.h> because <config.h> may include\n   <features.h>, and once <features.h> has been included, it's too late.  */\n#ifndef _GNU_SOURCE\n# define _GNU_SOURCE    1\n#endif\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <ctype.h>\n#include <errno.h>\n#include <fcntl.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n\n#ifdef __GNUC__\n# define alloca __builtin_alloca\n# define HAVE_ALLOCA 1\n#else\n# if defined HAVE_ALLOCA_H || defined _LIBC\n#  include <alloca.h>\n# else\n#  ifdef _AIX\n #pragma alloca\n#  else\n#   ifndef alloca\nchar *alloca ();\n#   endif\n#  endif\n# endif\n#endif\n\n#include <stdlib.h>\n#include <string.h>\n\n#if defined HAVE_UNISTD_H || defined _LIBC\n# include <unistd.h>\n#endif\n\n#ifdef _LIBC\n# include <langinfo.h>\n# include <locale.h>\n#endif\n\n#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \\\n    || (defined _LIBC && defined _POSIX_MAPPED_FILES)\n# include <sys/mman.h>\n# undef HAVE_MMAP\n# define HAVE_MMAP\t1\n#else\n# undef HAVE_MMAP\n#endif\n\n#include \"gettext.h\"\n#include \"gettextP.h\"\n\n#ifdef _LIBC\n# include \"../locale/localeinfo.h\"\n#endif\n\n/* @@ end of prolog @@ */\n\n#ifdef _LIBC\n/* Rename the non ISO C functions.  This is required by the standard\n   because some ISO C functions will require linking with this object\n   file and the name space must not be polluted.  */\n# define open   __open\n# define close  __close\n# define read   __read\n# define mmap   __mmap\n# define munmap __munmap\n#endif\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define PLURAL_PARSE __gettextparse\n#else\n# define PLURAL_PARSE gettextparse__\n#endif\n\n/* For those losing systems which don't have `alloca' we have to add\n   some additional code emulating it.  */\n#ifdef HAVE_ALLOCA\n# define freea(p) /* nothing */\n#else\n# define alloca(n) malloc (n)\n# define freea(p) free (p)\n#endif\n\n/* For systems that distinguish between text and binary I/O.\n   O_BINARY is usually declared in <fcntl.h>. */\n#if !defined O_BINARY && defined _O_BINARY\n  /* For MSC-compatible compilers.  */\n# define O_BINARY _O_BINARY\n# define O_TEXT _O_TEXT\n#endif\n#ifdef __BEOS__\n  /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect.  */\n# undef O_BINARY\n# undef O_TEXT\n#endif\n/* On reasonable systems, binary I/O is the default.  */\n#ifndef O_BINARY\n# define O_BINARY 0\n#endif\n\n/* We need a sign, whether a new catalog was loaded, which can be associated\n   with all translations.  This is important if the translations are\n   cached by one of GCC's features.  */\nint _nl_msg_cat_cntr;\n\n#if (defined __GNUC__ && !defined __APPLE_CC__) \\\n    || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)\n\n/* These structs are the constant expression for the germanic plural\n   form determination.  It represents the expression  \"n != 1\".  */\nstatic const struct expression plvar =\n{\n  .nargs = 0,\n  .operation = var,\n};\nstatic const struct expression plone =\n{\n  .nargs = 0,\n  .operation = num,\n  .val =\n  {\n    .num = 1\n  }\n};\nstatic struct expression germanic_plural =\n{\n  .nargs = 2,\n  .operation = not_equal,\n  .val =\n  {\n    .args =\n    {\n      [0] = (struct expression *) &plvar,\n      [1] = (struct expression *) &plone\n    }\n  }\n};\n\n# define INIT_GERMANIC_PLURAL()\n\n#else\n\n/* For compilers without support for ISO C 99 struct/union initializers:\n   Initialization at run-time.  */\n\nstatic struct expression plvar;\nstatic struct expression plone;\nstatic struct expression germanic_plural;\n\nstatic void\ninit_germanic_plural ()\n{\n  if (plone.val.num == 0)\n    {\n      plvar.nargs = 0;\n      plvar.operation = var;\n\n      plone.nargs = 0;\n      plone.operation = num;\n      plone.val.num = 1;\n\n      germanic_plural.nargs = 2;\n      germanic_plural.operation = not_equal;\n      germanic_plural.val.args[0] = &plvar;\n      germanic_plural.val.args[1] = &plone;\n    }\n}\n\n# define INIT_GERMANIC_PLURAL() init_germanic_plural ()\n\n#endif\n\n\n/* Initialize the codeset dependent parts of an opened message catalog.\n   Return the header entry.  */\nconst char *\ninternal_function\n_nl_init_domain_conv (domain_file, domain, domainbinding)\n     struct loaded_l10nfile *domain_file;\n     struct loaded_domain *domain;\n     struct binding *domainbinding;\n{\n  /* Find out about the character set the file is encoded with.\n     This can be found (in textual form) in the entry \"\".  If this\n     entry does not exist or if this does not contain the `charset='\n     information, we will assume the charset matches the one the\n     current locale and we don't have to perform any conversion.  */\n  char *nullentry;\n  size_t nullentrylen;\n\n  /* Preinitialize fields, to avoid recursion during _nl_find_msg.  */\n  domain->codeset_cntr =\n    (domainbinding != NULL ? domainbinding->codeset_cntr : 0);\n#ifdef _LIBC\n  domain->conv = (__gconv_t) -1;\n#else\n# if HAVE_ICONV\n  domain->conv = (iconv_t) -1;\n# endif\n#endif\n  domain->conv_tab = NULL;\n\n  /* Get the header entry.  */\n  nullentry = _nl_find_msg (domain_file, domainbinding, \"\", &nullentrylen);\n\n  if (nullentry != NULL)\n    {\n#if defined _LIBC || HAVE_ICONV\n      const char *charsetstr;\n\n      charsetstr = strstr (nullentry, \"charset=\");\n      if (charsetstr != NULL)\n\t{\n\t  size_t len;\n\t  char *charset;\n\t  const char *outcharset;\n\n\t  charsetstr += strlen (\"charset=\");\n\t  len = strcspn (charsetstr, \" \\t\\n\");\n\n\t  charset = (char *) alloca (len + 1);\n# if defined _LIBC || HAVE_MEMPCPY\n\t  *((char *) mempcpy (charset, charsetstr, len)) = '\\0';\n# else\n\t  memcpy (charset, charsetstr, len);\n\t  charset[len] = '\\0';\n# endif\n\n\t  /* The output charset should normally be determined by the\n\t     locale.  But sometimes the locale is not used or not correctly\n\t     set up, so we provide a possibility for the user to override\n\t     this.  Moreover, the value specified through\n\t     bind_textdomain_codeset overrides both.  */\n\t  if (domainbinding != NULL && domainbinding->codeset != NULL)\n\t    outcharset = domainbinding->codeset;\n\t  else\n\t    {\n\t      outcharset = getenv (\"OUTPUT_CHARSET\");\n\t      if (outcharset == NULL || outcharset[0] == '\\0')\n\t\t{\n# ifdef _LIBC\n\t\t  outcharset = (*_nl_current[LC_CTYPE])->values[_NL_ITEM_INDEX (CODESET)].string;\n# else\n#  if HAVE_ICONV\n\t\t  extern const char *locale_charset (void);\n\t\t  outcharset = locale_charset ();\n#  endif\n# endif\n\t\t}\n\t    }\n\n# ifdef _LIBC\n\t  /* We always want to use transliteration.  */\n\t  outcharset = norm_add_slashes (outcharset, \"TRANSLIT\");\n\t  charset = norm_add_slashes (charset, NULL);\n\t  if (__gconv_open (outcharset, charset, &domain->conv,\n\t\t\t    GCONV_AVOID_NOCONV)\n\t      != __GCONV_OK)\n\t    domain->conv = (__gconv_t) -1;\n# else\n#  if HAVE_ICONV\n\t  /* When using GNU libiconv, we want to use transliteration.  */\n#   if _LIBICONV_VERSION >= 0x0105\n\t  len = strlen (outcharset);\n\t  {\n\t    char *tmp = (char *) alloca (len + 10 + 1);\n\t    memcpy (tmp, outcharset, len);\n\t    memcpy (tmp + len, \"//TRANSLIT\", 10 + 1);\n\t    outcharset = tmp;\n\t  }\n#   endif\n\t  domain->conv = iconv_open (outcharset, charset);\n#   if _LIBICONV_VERSION >= 0x0105\n\t  freea (outcharset);\n#   endif\n#  endif\n# endif\n\n\t  freea (charset);\n\t}\n#endif /* _LIBC || HAVE_ICONV */\n    }\n\n  return nullentry;\n}\n\n/* Frees the codeset dependent parts of an opened message catalog.  */\nvoid\ninternal_function\n_nl_free_domain_conv (domain)\n     struct loaded_domain *domain;\n{\n  if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1)\n    free (domain->conv_tab);\n\n#ifdef _LIBC\n  if (domain->conv != (__gconv_t) -1)\n    __gconv_close (domain->conv);\n#else\n# if HAVE_ICONV\n  if (domain->conv != (iconv_t) -1)\n    iconv_close (domain->conv);\n# endif\n#endif\n}\n\n/* Load the message catalogs specified by FILENAME.  If it is no valid\n   message catalog do nothing.  */\nvoid\ninternal_function\n_nl_load_domain (domain_file, domainbinding)\n     struct loaded_l10nfile *domain_file;\n     struct binding *domainbinding;\n{\n  int fd;\n  size_t size;\n#ifdef _LIBC\n  struct stat64 st;\n#else\n  struct stat st;\n#endif\n  struct mo_file_header *data = (struct mo_file_header *) -1;\n  int use_mmap = 0;\n  struct loaded_domain *domain;\n  const char *nullentry;\n\n  domain_file->decided = 1;\n  domain_file->data = NULL;\n\n  /* Note that it would be useless to store domainbinding in domain_file\n     because domainbinding might be == NULL now but != NULL later (after\n     a call to bind_textdomain_codeset).  */\n\n  /* If the record does not represent a valid locale the FILENAME\n     might be NULL.  This can happen when according to the given\n     specification the locale file name is different for XPG and CEN\n     syntax.  */\n  if (domain_file->filename == NULL)\n    return;\n\n  /* Try to open the addressed file.  */\n  fd = open (domain_file->filename, O_RDONLY | O_BINARY);\n  if (fd == -1)\n    return;\n\n  /* We must know about the size of the file.  */\n  if (\n#ifdef _LIBC\n      __builtin_expect (fstat64 (fd, &st) != 0, 0)\n#else\n      __builtin_expect (fstat (fd, &st) != 0, 0)\n#endif\n      || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)\n      || __builtin_expect (size < sizeof (struct mo_file_header), 0))\n    {\n      /* Something went wrong.  */\n      close (fd);\n      return;\n    }\n\n#ifdef HAVE_MMAP\n  /* Now we are ready to load the file.  If mmap() is available we try\n     this first.  If not available or it failed we try to load it.  */\n  data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,\n\t\t\t\t\t MAP_PRIVATE, fd, 0);\n\n  if (__builtin_expect (data != (struct mo_file_header *) -1, 1))\n    {\n      /* mmap() call was successful.  */\n      close (fd);\n      use_mmap = 1;\n    }\n#endif\n\n  /* If the data is not yet available (i.e. mmap'ed) we try to load\n     it manually.  */\n  if (data == (struct mo_file_header *) -1)\n    {\n      size_t to_read;\n      char *read_ptr;\n\n      data = (struct mo_file_header *) malloc (size);\n      if (data == NULL)\n\treturn;\n\n      to_read = size;\n      read_ptr = (char *) data;\n      do\n\t{\n\t  long int nb = (long int) read (fd, read_ptr, to_read);\n\t  if (nb <= 0)\n\t    {\n#ifdef EINTR\n\t      if (nb == -1 && errno == EINTR)\n\t\tcontinue;\n#endif\n\t      close (fd);\n\t      return;\n\t    }\n\t  read_ptr += nb;\n\t  to_read -= nb;\n\t}\n      while (to_read > 0);\n\n      close (fd);\n    }\n\n  /* Using the magic number we can test whether it really is a message\n     catalog file.  */\n  if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,\n\t\t\t0))\n    {\n      /* The magic number is wrong: not a message catalog file.  */\n#ifdef HAVE_MMAP\n      if (use_mmap)\n\tmunmap ((caddr_t) data, size);\n      else\n#endif\n\tfree (data);\n      return;\n    }\n\n  domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));\n  if (domain == NULL)\n    return;\n  domain_file->data = domain;\n\n  domain->data = (char *) data;\n  domain->use_mmap = use_mmap;\n  domain->mmap_size = size;\n  domain->must_swap = data->magic != _MAGIC;\n\n  /* Fill in the information about the available tables.  */\n  switch (W (domain->must_swap, data->revision))\n    {\n    case 0:\n      domain->nstrings = W (domain->must_swap, data->nstrings);\n      domain->orig_tab = (struct string_desc *)\n\t((char *) data + W (domain->must_swap, data->orig_tab_offset));\n      domain->trans_tab = (struct string_desc *)\n\t((char *) data + W (domain->must_swap, data->trans_tab_offset));\n      domain->hash_size = W (domain->must_swap, data->hash_tab_size);\n      domain->hash_tab = (nls_uint32 *)\n\t((char *) data + W (domain->must_swap, data->hash_tab_offset));\n      break;\n    default:\n      /* This is an invalid revision.  */\n#ifdef HAVE_MMAP\n      if (use_mmap)\n\tmunmap ((caddr_t) data, size);\n      else\n#endif\n\tfree (data);\n      free (domain);\n      domain_file->data = NULL;\n      return;\n    }\n\n  /* Now initialize the character set converter from the character set\n     the file is encoded with (found in the header entry) to the domain's\n     specified character set or the locale's character set.  */\n  nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding);\n\n  /* Also look for a plural specification.  */\n  if (nullentry != NULL)\n    {\n      const char *plural;\n      const char *nplurals;\n\n      plural = strstr (nullentry, \"plural=\");\n      nplurals = strstr (nullentry, \"nplurals=\");\n      if (plural == NULL || nplurals == NULL)\n\tgoto no_plural;\n      else\n\t{\n\t  /* First get the number.  */\n\t  char *endp;\n\t  unsigned long int n;\n\t  struct parse_args args;\n\n\t  nplurals += 9;\n\t  while (*nplurals != '\\0' && isspace ((unsigned char) *nplurals))\n\t    ++nplurals;\n#if defined HAVE_STRTOUL || defined _LIBC\n\t  n = strtoul (nplurals, &endp, 10);\n#else\n\t  for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++)\n\t    n = n * 10 + (*endp - '0');\n#endif\n\t  domain->nplurals = n;\n\t  if (nplurals == endp)\n\t    goto no_plural;\n\n\t  /* Due to the restrictions bison imposes onto the interface of the\n\t     scanner function we have to put the input string and the result\n\t     passed up from the parser into the same structure which address\n\t     is passed down to the parser.  */\n\t  plural += 7;\n\t  args.cp = plural;\n\t  if (PLURAL_PARSE (&args) != 0)\n\t    goto no_plural;\n\t  domain->plural = args.res;\n\t}\n    }\n  else\n    {\n      /* By default we are using the Germanic form: singular form only\n         for `one', the plural form otherwise.  Yes, this is also what\n         English is using since English is a Germanic language.  */\n    no_plural:\n      INIT_GERMANIC_PLURAL ();\n      domain->plural = &germanic_plural;\n      domain->nplurals = 2;\n    }\n}\n\n\n#ifdef _LIBC\nvoid\ninternal_function\n_nl_unload_domain (domain)\n     struct loaded_domain *domain;\n{\n  if (domain->plural != &germanic_plural)\n    __gettext_free_exp (domain->plural);\n\n  _nl_free_domain_conv (domain);\n\n# ifdef _POSIX_MAPPED_FILES\n  if (domain->use_mmap)\n    munmap ((caddr_t) domain->data, domain->mmap_size);\n  else\n# endif\t/* _POSIX_MAPPED_FILES */\n    free ((void *) domain->data);\n\n  free (domain);\n}\n#endif\n"
  },
  {
    "path": "intl/localcharset.c",
    "content": "/* Determine a canonical name for the current locale's character encoding.\n\n   Copyright (C) 2000-2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n/* Written by Bruno Haible <haible@clisp.cons.org>.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#if HAVE_STDDEF_H\n# include <stddef.h>\n#endif\n\n#include <stdio.h>\n#if HAVE_STRING_H\n# include <string.h>\n#else\n# include <strings.h>\n#endif\n#if HAVE_STDLIB_H\n# include <stdlib.h>\n#endif\n\n#if defined _WIN32 || defined __WIN32__\n# undef WIN32   /* avoid warning on mingw32 */\n# define WIN32\n#endif\n\n#ifndef WIN32\n# if HAVE_LANGINFO_CODESET\n#  include <langinfo.h>\n# else\n#  if HAVE_SETLOCALE\n#   include <locale.h>\n#  endif\n# endif\n#else /* WIN32 */\n# define WIN32_LEAN_AND_MEAN\n# include <windows.h>\n#endif\n\n#ifndef DIRECTORY_SEPARATOR\n# define DIRECTORY_SEPARATOR '/'\n#endif\n\n#ifndef ISSLASH\n# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)\n#endif\n\n/* The following static variable is declared 'volatile' to avoid a\n   possible multithread problem in the function get_charset_aliases. If we\n   are running in a threaded environment, and if two threads initialize\n   'charset_aliases' simultaneously, both will produce the same value,\n   and everything will be ok if the two assignments to 'charset_aliases'\n   are atomic. But I don't know what will happen if the two assignments mix.  */\n#if __STDC__ != 1\n# define volatile /* empty */\n#endif\n/* Pointer to the contents of the charset.alias file, if it has already been\n   read, else NULL.  Its format is:\n   ALIAS_1 '\\0' CANONICAL_1 '\\0' ... ALIAS_n '\\0' CANONICAL_n '\\0' '\\0'  */\nstatic const char * volatile charset_aliases;\n\n/* Return a pointer to the contents of the charset.alias file.  */\nstatic const char *\nget_charset_aliases ()\n{\n  const char *cp;\n\n  cp = charset_aliases;\n  if (cp == NULL)\n    {\n#ifndef WIN32\n      FILE *fp;\n      const char *dir = LIBDIR;\n      const char *base = \"charset.alias\";\n      char *file_name;\n\n      /* Concatenate dir and base into freshly allocated file_name.  */\n      {\n\tsize_t dir_len = strlen (dir);\n\tsize_t base_len = strlen (base);\n\tint add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));\n\tfile_name = (char *) malloc (dir_len + add_slash + base_len + 1);\n\tif (file_name != NULL)\n\t  {\n\t    memcpy (file_name, dir, dir_len);\n\t    if (add_slash)\n\t      file_name[dir_len] = DIRECTORY_SEPARATOR;\n\t    memcpy (file_name + dir_len + add_slash, base, base_len + 1);\n\t  }\n      }\n\n      if (file_name == NULL || (fp = fopen (file_name, \"r\")) == NULL)\n\t/* Out of memory or file not found, treat it as empty.  */\n\tcp = \"\";\n      else\n\t{\n\t  /* Parse the file's contents.  */\n\t  int c;\n\t  char buf1[50+1];\n\t  char buf2[50+1];\n\t  char *res_ptr = NULL;\n\t  size_t res_size = 0;\n\t  size_t l1, l2;\n\n\t  for (;;)\n\t    {\n\t      c = getc (fp);\n\t      if (c == EOF)\n\t\tbreak;\n\t      if (c == '\\n' || c == ' ' || c == '\\t')\n\t\tcontinue;\n\t      if (c == '#')\n\t\t{\n\t\t  /* Skip comment, to end of line.  */\n\t\t  do\n\t\t    c = getc (fp);\n\t\t  while (!(c == EOF || c == '\\n'));\n\t\t  if (c == EOF)\n\t\t    break;\n\t\t  continue;\n\t\t}\n\t      ungetc (c, fp);\n\t      if (fscanf(fp, \"%50s %50s\", buf1, buf2) < 2)\n\t\tbreak;\n\t      l1 = strlen (buf1);\n\t      l2 = strlen (buf2);\n\t      if (res_size == 0)\n\t\t{\n\t\t  res_size = l1 + 1 + l2 + 1;\n\t\t  res_ptr = malloc (res_size + 1);\n\t\t}\n\t      else\n\t\t{\n\t\t  res_size += l1 + 1 + l2 + 1;\n\t\t  res_ptr = realloc (res_ptr, res_size + 1);\n\t\t}\n\t      if (res_ptr == NULL)\n\t\t{\n\t\t  /* Out of memory. */\n\t\t  res_size = 0;\n\t\t  break;\n\t\t}\n\t      strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);\n\t      strcpy (res_ptr + res_size - (l2 + 1), buf2);\n\t    }\n\t  fclose (fp);\n\t  if (res_size == 0)\n\t    cp = \"\";\n\t  else\n\t    {\n\t      *(res_ptr + res_size) = '\\0';\n\t      cp = res_ptr;\n\t    }\n\t}\n\n      if (file_name != NULL)\n\tfree (file_name);\n\n#else /* WIN32 */\n\n      /* To avoid the troubles of installing a separate file in the same\n\t directory as the DLL and of retrieving the DLL's directory at\n\t runtime, simply inline the aliases here.  */\n\n      cp = \"CP936\" \"\\0\" \"GBK\" \"\\0\"\n\t   \"CP1361\" \"\\0\" \"JOHAB\" \"\\0\";\n#endif\n\n      charset_aliases = cp;\n    }\n\n  return cp;\n}\n\n/* Determine the current locale's character encoding, and canonicalize it\n   into one of the canonical names listed in config.charset.\n   The result must not be freed; it is statically allocated.\n   If the canonical name cannot be determined, the result is a non-canonical\n   name.  */\n\n#ifdef STATIC\nSTATIC\n#endif\nconst char *\nlocale_charset ()\n{\n  const char *codeset;\n  const char *aliases;\n\n#ifndef WIN32\n\n# if HAVE_LANGINFO_CODESET\n\n  /* Most systems support nl_langinfo (CODESET) nowadays.  */\n  codeset = nl_langinfo (CODESET);\n\n# else\n\n  /* On old systems which lack it, use setlocale or getenv.  */\n  const char *locale = NULL;\n\n  /* But most old systems don't have a complete set of locales.  Some\n     (like SunOS 4 or DJGPP) have only the C locale.  Therefore we don't\n     use setlocale here; it would return \"C\" when it doesn't support the\n     locale name the user has set.  */\n#  if HAVE_SETLOCALE && 0\n  locale = setlocale (LC_CTYPE, NULL);\n#  endif\n  if (locale == NULL || locale[0] == '\\0')\n    {\n      locale = getenv (\"LC_ALL\");\n      if (locale == NULL || locale[0] == '\\0')\n\t{\n\t  locale = getenv (\"LC_CTYPE\");\n\t  if (locale == NULL || locale[0] == '\\0')\n\t    locale = getenv (\"LANG\");\n\t}\n    }\n\n  /* On some old systems, one used to set locale = \"iso8859_1\". On others,\n     you set it to \"language_COUNTRY.charset\". In any case, we resolve it\n     through the charset.alias file.  */\n  codeset = locale;\n\n# endif\n\n#else /* WIN32 */\n\n  static char buf[2 + 10 + 1];\n\n  /* Win32 has a function returning the locale's codepage as a number.  */\n  sprintf (buf, \"CP%u\", GetACP ());\n  codeset = buf;\n\n#endif\n\n  if (codeset == NULL)\n    /* The canonical name cannot be determined.  */\n    codeset = \"\";\n\n  /* Resolve alias. */\n  for (aliases = get_charset_aliases ();\n       *aliases != '\\0';\n       aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)\n    if (strcmp (codeset, aliases) == 0\n\t|| (aliases[0] == '*' && aliases[1] == '\\0'))\n      {\n\tcodeset = aliases + strlen (aliases) + 1;\n\tbreak;\n      }\n\n  return codeset;\n}\n"
  },
  {
    "path": "intl/locale.alias",
    "content": "# Locale name alias data base.\n# Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.\n#\n# This program is free software; you can redistribute it and/or modify it\n# under the terms of the GNU Library General Public License as published\n# by the Free Software Foundation; either version 2, or (at your option)\n# any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n# Library General Public License for more details.\n#\n# You should have received a copy of the GNU Library General Public\n# License along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n# USA.\n\n# The format of this file is the same as for the corresponding file of\n# the X Window System, which normally can be found in\n#\t/usr/lib/X11/locale/locale.alias\n# A single line contains two fields: an alias and a substitution value.\n# All entries are case independent.\n\n# Note: This file is far from being complete.  If you have a value for\n# your own site which you think might be useful for others too, share\n# it with the rest of us.  Send it using the `glibcbug' script to\n# bugs@gnu.org.\n\n# Packages using this file: \n\nbokmal\t\tno_NO.ISO-8859-1\nbokml\t\tno_NO.ISO-8859-1\ncatalan\t\tca_ES.ISO-8859-1\ncroatian\thr_HR.ISO-8859-2\nczech\t\tcs_CZ.ISO-8859-2\ndanish          da_DK.ISO-8859-1\ndansk\t\tda_DK.ISO-8859-1\ndeutsch\t\tde_DE.ISO-8859-1\ndutch\t\tnl_NL.ISO-8859-1\neesti\t\tet_EE.ISO-8859-1\nestonian\tet_EE.ISO-8859-1\nfinnish         fi_FI.ISO-8859-1\nfranais\tfr_FR.ISO-8859-1\nfrench\t\tfr_FR.ISO-8859-1\ngalego\t\tgl_ES.ISO-8859-1\ngalician\tgl_ES.ISO-8859-1\ngerman\t\tde_DE.ISO-8859-1\ngreek           el_GR.ISO-8859-7\nhebrew          he_IL.ISO-8859-8\nhrvatski\thr_HR.ISO-8859-2\nhungarian       hu_HU.ISO-8859-2\nicelandic       is_IS.ISO-8859-1\nitalian         it_IT.ISO-8859-1\njapanese\tja_JP.eucJP\njapanese.euc\tja_JP.eucJP\nja_JP\t\tja_JP.eucJP\nja_JP.ujis\tja_JP.eucJP\njapanese.sjis\tja_JP.SJIS\nkorean\t\tko_KR.eucKR\nkorean.euc \tko_KR.eucKR\nko_KR\t\tko_KR.eucKR\nlithuanian      lt_LT.ISO-8859-13\nnb_NO\t\tno_NO.ISO-8859-1\nnb_NO.ISO-8859-1 no_NO.ISO-8859-1\nnorwegian       no_NO.ISO-8859-1\nnynorsk\t\tnn_NO.ISO-8859-1\npolish          pl_PL.ISO-8859-2\nportuguese      pt_PT.ISO-8859-1\nromanian        ro_RO.ISO-8859-2\nrussian         ru_RU.ISO-8859-5\nslovak          sk_SK.ISO-8859-2\nslovene         sl_SI.ISO-8859-2\nslovenian       sl_SI.ISO-8859-2\nspanish         es_ES.ISO-8859-1\nswedish         sv_SE.ISO-8859-1\nthai\t\tth_TH.TIS-620\nturkish         tr_TR.ISO-8859-9\n"
  },
  {
    "path": "intl/localealias.c",
    "content": "/* Handle aliases for locale names.\n   Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n/* Tell glibc's <string.h> to provide a prototype for mempcpy().\n   This must come before <config.h> because <config.h> may include\n   <features.h>, and once <features.h> has been included, it's too late.  */\n#ifndef _GNU_SOURCE\n# define _GNU_SOURCE    1\n#endif\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <ctype.h>\n#include <stdio.h>\n#include <sys/types.h>\n\n#ifdef __GNUC__\n# define alloca __builtin_alloca\n# define HAVE_ALLOCA 1\n#else\n# if defined HAVE_ALLOCA_H || defined _LIBC\n#  include <alloca.h>\n# else\n#  ifdef _AIX\n #pragma alloca\n#  else\n#   ifndef alloca\nchar *alloca ();\n#   endif\n#  endif\n# endif\n#endif\n\n#include <stdlib.h>\n\n#include <string.h>\n#if !HAVE_STRCHR && !defined _LIBC\n# ifndef strchr\n#  define strchr index\n# endif\n#endif\n\n#include \"gettextP.h\"\n\n/* @@ end of prolog @@ */\n\n#ifdef _LIBC\n/* Rename the non ANSI C functions.  This is required by the standard\n   because some ANSI C functions will require linking with this object\n   file and the name space must not be polluted.  */\n# define strcasecmp __strcasecmp\n\n# ifndef mempcpy\n#  define mempcpy __mempcpy\n# endif\n# define HAVE_MEMPCPY\t1\n\n/* We need locking here since we can be called from different places.  */\n# include <bits/libc-lock.h>\n\n__libc_lock_define_initialized (static, lock);\n#endif\n\n#ifndef internal_function\n# define internal_function\n#endif\n\n/* For those losing systems which don't have `alloca' we have to add\n   some additional code emulating it.  */\n#ifdef HAVE_ALLOCA\n# define freea(p) /* nothing */\n#else\n# define alloca(n) malloc (n)\n# define freea(p) free (p)\n#endif\n\n#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED\n# undef fgets\n# define fgets(buf, len, s) fgets_unlocked (buf, len, s)\n#endif\n#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED\n# undef feof\n# define feof(s) feof_unlocked (s)\n#endif\n\n\nstruct alias_map\n{\n  const char *alias;\n  const char *value;\n};\n\n\nstatic char *string_space;\nstatic size_t string_space_act;\nstatic size_t string_space_max;\nstatic struct alias_map *map;\nstatic size_t nmap;\nstatic size_t maxmap;\n\n\n/* Prototypes for local functions.  */\nstatic size_t read_alias_file PARAMS ((const char *fname, int fname_len))\n     internal_function;\nstatic int extend_alias_table PARAMS ((void));\nstatic int alias_compare PARAMS ((const struct alias_map *map1,\n\t\t\t\t  const struct alias_map *map2));\n\n\nconst char *\n_nl_expand_alias (name)\n    const char *name;\n{\n  static const char *locale_alias_path = LOCALE_ALIAS_PATH;\n  struct alias_map *retval;\n  const char *result = NULL;\n  size_t added;\n\n#ifdef _LIBC\n  __libc_lock_lock (lock);\n#endif\n\n  do\n    {\n      struct alias_map item;\n\n      item.alias = name;\n\n      if (nmap > 0)\n\tretval = (struct alias_map *) bsearch (&item, map, nmap,\n\t\t\t\t\t       sizeof (struct alias_map),\n\t\t\t\t\t       (int (*) PARAMS ((const void *,\n\t\t\t\t\t\t\t\t const void *))\n\t\t\t\t\t\t) alias_compare);\n      else\n\tretval = NULL;\n\n      /* We really found an alias.  Return the value.  */\n      if (retval != NULL)\n\t{\n\t  result = retval->value;\n\t  break;\n\t}\n\n      /* Perhaps we can find another alias file.  */\n      added = 0;\n      while (added == 0 && locale_alias_path[0] != '\\0')\n\t{\n\t  const char *start;\n\n\t  while (locale_alias_path[0] == PATH_SEPARATOR)\n\t    ++locale_alias_path;\n\t  start = locale_alias_path;\n\n\t  while (locale_alias_path[0] != '\\0'\n\t\t && locale_alias_path[0] != PATH_SEPARATOR)\n\t    ++locale_alias_path;\n\n\t  if (start < locale_alias_path)\n\t    added = read_alias_file (start, locale_alias_path - start);\n\t}\n    }\n  while (added != 0);\n\n#ifdef _LIBC\n  __libc_lock_unlock (lock);\n#endif\n\n  return result;\n}\n\n\nstatic size_t\ninternal_function\nread_alias_file (fname, fname_len)\n     const char *fname;\n     int fname_len;\n{\n  FILE *fp;\n  char *full_fname;\n  size_t added;\n  static const char aliasfile[] = \"/locale.alias\";\n\n  full_fname = (char *) alloca (fname_len + sizeof aliasfile);\n#ifdef HAVE_MEMPCPY\n  mempcpy (mempcpy (full_fname, fname, fname_len),\n\t   aliasfile, sizeof aliasfile);\n#else\n  memcpy (full_fname, fname, fname_len);\n  memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);\n#endif\n\n  fp = fopen (full_fname, \"r\");\n  freea (full_fname);\n  if (fp == NULL)\n    return 0;\n\n  added = 0;\n  while (!feof (fp))\n    {\n      /* It is a reasonable approach to use a fix buffer here because\n\t a) we are only interested in the first two fields\n\t b) these fields must be usable as file names and so must not\n\t    be that long\n       */\n      char buf[BUFSIZ];\n      char *alias;\n      char *value;\n      char *cp;\n\n      if (fgets (buf, sizeof buf, fp) == NULL)\n\t/* EOF reached.  */\n\tbreak;\n\n      /* Possibly not the whole line fits into the buffer.  Ignore\n\t the rest of the line.  */\n      if (strchr (buf, '\\n') == NULL)\n\t{\n\t  char altbuf[BUFSIZ];\n\t  do\n\t    if (fgets (altbuf, sizeof altbuf, fp) == NULL)\n\t      /* Make sure the inner loop will be left.  The outer loop\n\t\t will exit at the `feof' test.  */\n\t      break;\n\t  while (strchr (altbuf, '\\n') == NULL);\n\t}\n\n      cp = buf;\n      /* Ignore leading white space.  */\n      while (isspace ((unsigned char) cp[0]))\n\t++cp;\n\n      /* A leading '#' signals a comment line.  */\n      if (cp[0] != '\\0' && cp[0] != '#')\n\t{\n\t  alias = cp++;\n\t  while (cp[0] != '\\0' && !isspace ((unsigned char) cp[0]))\n\t    ++cp;\n\t  /* Terminate alias name.  */\n\t  if (cp[0] != '\\0')\n\t    *cp++ = '\\0';\n\n\t  /* Now look for the beginning of the value.  */\n\t  while (isspace ((unsigned char) cp[0]))\n\t    ++cp;\n\n\t  if (cp[0] != '\\0')\n\t    {\n\t      size_t alias_len;\n\t      size_t value_len;\n\n\t      value = cp++;\n\t      while (cp[0] != '\\0' && !isspace ((unsigned char) cp[0]))\n\t\t++cp;\n\t      /* Terminate value.  */\n\t      if (cp[0] == '\\n')\n\t\t{\n\t\t  /* This has to be done to make the following test\n\t\t     for the end of line possible.  We are looking for\n\t\t     the terminating '\\n' which do not overwrite here.  */\n\t\t  *cp++ = '\\0';\n\t\t  *cp = '\\n';\n\t\t}\n\t      else if (cp[0] != '\\0')\n\t\t*cp++ = '\\0';\n\n\t      if (nmap >= maxmap)\n\t\tif (__builtin_expect (extend_alias_table (), 0))\n\t\t  return added;\n\n\t      alias_len = strlen (alias) + 1;\n\t      value_len = strlen (value) + 1;\n\n\t      if (string_space_act + alias_len + value_len > string_space_max)\n\t\t{\n\t\t  /* Increase size of memory pool.  */\n\t\t  size_t new_size = (string_space_max\n\t\t\t\t     + (alias_len + value_len > 1024\n\t\t\t\t\t? alias_len + value_len : 1024));\n\t\t  char *new_pool = (char *) realloc (string_space, new_size);\n\t\t  if (new_pool == NULL)\n\t\t    return added;\n\n\t\t  if (__builtin_expect (string_space != new_pool, 0))\n\t\t    {\n\t\t      size_t i;\n\n\t\t      for (i = 0; i < nmap; i++)\n\t\t\t{\n\t\t\t  map[i].alias += new_pool - string_space;\n\t\t\t  map[i].value += new_pool - string_space;\n\t\t\t}\n\t\t    }\n\n\t\t  string_space = new_pool;\n\t\t  string_space_max = new_size;\n\t\t}\n\n\t      map[nmap].alias = memcpy (&string_space[string_space_act],\n\t\t\t\t\talias, alias_len);\n\t      string_space_act += alias_len;\n\n\t      map[nmap].value = memcpy (&string_space[string_space_act],\n\t\t\t\t\tvalue, value_len);\n\t      string_space_act += value_len;\n\n\t      ++nmap;\n\t      ++added;\n\t    }\n\t}\n    }\n\n  /* Should we test for ferror()?  I think we have to silently ignore\n     errors.  --drepper  */\n  fclose (fp);\n\n  if (added > 0)\n    qsort (map, nmap, sizeof (struct alias_map),\n\t   (int (*) PARAMS ((const void *, const void *))) alias_compare);\n\n  return added;\n}\n\n\nstatic int\nextend_alias_table ()\n{\n  size_t new_size;\n  struct alias_map *new_map;\n\n  new_size = maxmap == 0 ? 100 : 2 * maxmap;\n  new_map = (struct alias_map *) realloc (map, (new_size\n\t\t\t\t\t\t* sizeof (struct alias_map)));\n  if (new_map == NULL)\n    /* Simply don't extend: we don't have any more core.  */\n    return -1;\n\n  map = new_map;\n  maxmap = new_size;\n  return 0;\n}\n\n\n#ifdef _LIBC\nstatic void __attribute__ ((unused))\nfree_mem (void)\n{\n  if (string_space != NULL)\n    free (string_space);\n  if (map != NULL)\n    free (map);\n}\ntext_set_element (__libc_subfreeres, free_mem);\n#endif\n\n\nstatic int\nalias_compare (map1, map2)\n     const struct alias_map *map1;\n     const struct alias_map *map2;\n{\n#if defined _LIBC || defined HAVE_STRCASECMP\n  return strcasecmp (map1->alias, map2->alias);\n#else\n  const unsigned char *p1 = (const unsigned char *) map1->alias;\n  const unsigned char *p2 = (const unsigned char *) map2->alias;\n  unsigned char c1, c2;\n\n  if (p1 == p2)\n    return 0;\n\n  do\n    {\n      /* I know this seems to be odd but the tolower() function in\n\t some systems libc cannot handle nonalpha characters.  */\n      c1 = isupper (*p1) ? tolower (*p1) : *p1;\n      c2 = isupper (*p2) ? tolower (*p2) : *p2;\n      if (c1 == '\\0')\n\tbreak;\n      ++p1;\n      ++p2;\n    }\n  while (c1 == c2);\n\n  return c1 - c2;\n#endif\n}\n"
  },
  {
    "path": "intl/ngettext.c",
    "content": "/* Implementation of ngettext(3) function.\n   Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#ifdef _LIBC\n# define __need_NULL\n# include <stddef.h>\n#else\n# include <stdlib.h>\t\t/* Just for NULL.  */\n#endif\n\n#include \"gettextP.h\"\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n\n#include <locale.h>\n\n/* @@ end of prolog @@ */\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define NGETTEXT __ngettext\n# define DCNGETTEXT __dcngettext\n#else\n# define NGETTEXT ngettext__\n# define DCNGETTEXT dcngettext__\n#endif\n\n/* Look up MSGID in the current default message catalog for the current\n   LC_MESSAGES locale.  If not found, returns MSGID itself (the default\n   text).  */\nchar *\nNGETTEXT (msgid1, msgid2, n)\n     const char *msgid1;\n     const char *msgid2;\n     unsigned long int n;\n{\n  return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);\n}\n\n#ifdef _LIBC\n/* Alias for function name in GNU C Library.  */\nweak_alias (__ngettext, ngettext);\n#endif\n"
  },
  {
    "path": "intl/plural.c",
    "content": "\n/*  A Bison parser, made from plural.y\n    by GNU Bison version 1.28  */\n\n#define YYBISON 1  /* Identify Bison output.  */\n\n#define yyparse __gettextparse\n#define yylex __gettextlex\n#define yyerror __gettexterror\n#define yylval __gettextlval\n#define yychar __gettextchar\n#define yydebug __gettextdebug\n#define yynerrs __gettextnerrs\n#define\tEQUOP2\t257\n#define\tCMPOP2\t258\n#define\tADDOP2\t259\n#define\tMULOP2\t260\n#define\tNUMBER\t261\n\n#line 1 \"plural.y\"\n\n/* Expression parsing for plural form selection.\n   Copyright (C) 2000, 2001 Free Software Foundation, Inc.\n   Written by Ulrich Drepper <drepper@cygnus.com>, 2000.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n/* The bison generated parser uses alloca.  AIX 3 forces us to put this\n   declaration at the beginning of the file.  The declaration in bison's\n   skeleton file comes too late.  This must come before <config.h>\n   because <config.h> may include arbitrary system headers.  */\n#if defined _AIX && !defined __GNUC__\n #pragma alloca\n#endif\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <stdlib.h>\n#include \"gettextP.h\"\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define FREE_EXPRESSION __gettext_free_exp\n#else\n# define FREE_EXPRESSION gettext_free_exp__\n# define __gettextparse gettextparse__\n#endif\n\n#define YYLEX_PARAM\t&((struct parse_args *) arg)->cp\n#define YYPARSE_PARAM\targ\n\n#line 53 \"plural.y\"\ntypedef union {\n  unsigned long int num;\n  enum operator op;\n  struct expression *exp;\n} YYSTYPE;\n#line 59 \"plural.y\"\n\n/* Prototypes for local functions.  */\nstatic struct expression *new_exp PARAMS ((int nargs, enum operator op,\n\t\t\t\t\t   struct expression * const *args));\nstatic inline struct expression *new_exp_0 PARAMS ((enum operator op));\nstatic inline struct expression *new_exp_1 PARAMS ((enum operator op,\n\t\t\t\t\t\t   struct expression *right));\nstatic struct expression *new_exp_2 PARAMS ((enum operator op,\n\t\t\t\t\t     struct expression *left,\n\t\t\t\t\t     struct expression *right));\nstatic inline struct expression *new_exp_3 PARAMS ((enum operator op,\n\t\t\t\t\t\t   struct expression *bexp,\n\t\t\t\t\t\t   struct expression *tbranch,\n\t\t\t\t\t\t   struct expression *fbranch));\nstatic int yylex PARAMS ((YYSTYPE *lval, const char **pexp));\nstatic void yyerror PARAMS ((const char *str));\n\n/* Allocation of expressions.  */\n\nstatic struct expression *\nnew_exp (nargs, op, args)\n     int nargs;\n     enum operator op;\n     struct expression * const *args;\n{\n  int i;\n  struct expression *newp;\n\n  /* If any of the argument could not be malloc'ed, just return NULL.  */\n  for (i = nargs - 1; i >= 0; i--)\n    if (args[i] == NULL)\n      goto fail;\n\n  /* Allocate a new expression.  */\n  newp = (struct expression *) malloc (sizeof (*newp));\n  if (newp != NULL)\n    {\n      newp->nargs = nargs;\n      newp->operation = op;\n      for (i = nargs - 1; i >= 0; i--)\n\tnewp->val.args[i] = args[i];\n      return newp;\n    }\n\n fail:\n  for (i = nargs - 1; i >= 0; i--)\n    FREE_EXPRESSION (args[i]);\n\n  return NULL;\n}\n\nstatic inline struct expression *\nnew_exp_0 (op)\n     enum operator op;\n{\n  return new_exp (0, op, NULL);\n}\n\nstatic inline struct expression *\nnew_exp_1 (op, right)\n     enum operator op;\n     struct expression *right;\n{\n  struct expression *args[1];\n\n  args[0] = right;\n  return new_exp (1, op, args);\n}\n\nstatic struct expression *\nnew_exp_2 (op, left, right)\n     enum operator op;\n     struct expression *left;\n     struct expression *right;\n{\n  struct expression *args[2];\n\n  args[0] = left;\n  args[1] = right;\n  return new_exp (2, op, args);\n}\n\nstatic inline struct expression *\nnew_exp_3 (op, bexp, tbranch, fbranch)\n     enum operator op;\n     struct expression *bexp;\n     struct expression *tbranch;\n     struct expression *fbranch;\n{\n  struct expression *args[3];\n\n  args[0] = bexp;\n  args[1] = tbranch;\n  args[2] = fbranch;\n  return new_exp (3, op, args);\n}\n\n#include <stdio.h>\n\n#ifndef __cplusplus\n#ifndef __STDC__\n#define const\n#endif\n#endif\n\n\n\n#define\tYYFINAL\t\t27\n#define\tYYFLAG\t\t-32768\n#define\tYYNTBASE\t16\n\n#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18)\n\nstatic const char yytranslate[] = {     0,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,    10,     2,     2,     2,     2,     5,     2,    14,\n    15,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,    12,     2,     2,\n     2,     2,     3,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,    13,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     4,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n     2,     2,     2,     2,     2,     1,     6,     7,     8,     9,\n    11\n};\n\n#if YYDEBUG != 0\nstatic const short yyprhs[] = {     0,\n     0,     2,     8,    12,    16,    20,    24,    28,    32,    35,\n    37,    39\n};\n\nstatic const short yyrhs[] = {    17,\n     0,    17,     3,    17,    12,    17,     0,    17,     4,    17,\n     0,    17,     5,    17,     0,    17,     6,    17,     0,    17,\n     7,    17,     0,    17,     8,    17,     0,    17,     9,    17,\n     0,    10,    17,     0,    13,     0,    11,     0,    14,    17,\n    15,     0\n};\n\n#endif\n\n#if YYDEBUG != 0\nstatic const short yyrline[] = { 0,\n   178,   186,   190,   194,   198,   202,   206,   210,   214,   218,\n   222,   227\n};\n#endif\n\n\n#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)\n\nstatic const char * const yytname[] = {   \"$\",\"error\",\"$undefined.\",\"'?'\",\"'|'\",\n\"'&'\",\"EQUOP2\",\"CMPOP2\",\"ADDOP2\",\"MULOP2\",\"'!'\",\"NUMBER\",\"':'\",\"'n'\",\"'('\",\"')'\",\n\"start\",\"exp\", NULL\n};\n#endif\n\nstatic const short yyr1[] = {     0,\n    16,    17,    17,    17,    17,    17,    17,    17,    17,    17,\n    17,    17\n};\n\nstatic const short yyr2[] = {     0,\n     1,     5,     3,     3,     3,     3,     3,     3,     2,     1,\n     1,     3\n};\n\nstatic const short yydefact[] = {     0,\n     0,    11,    10,     0,     1,     9,     0,     0,     0,     0,\n     0,     0,     0,     0,    12,     0,     3,     4,     5,     6,\n     7,     8,     0,     2,     0,     0,     0\n};\n\nstatic const short yydefgoto[] = {    25,\n     5\n};\n\nstatic const short yypact[] = {    -9,\n    -9,-32768,-32768,    -9,    34,-32768,    11,    -9,    -9,    -9,\n    -9,    -9,    -9,    -9,-32768,    24,    39,    43,    16,    26,\n    -3,-32768,    -9,    34,    21,    53,-32768\n};\n\nstatic const short yypgoto[] = {-32768,\n    -1\n};\n\n\n#define\tYYLAST\t\t53\n\n\nstatic const short yytable[] = {     6,\n     1,     2,     7,     3,     4,    14,    16,    17,    18,    19,\n    20,    21,    22,     8,     9,    10,    11,    12,    13,    14,\n    26,    24,    12,    13,    14,    15,     8,     9,    10,    11,\n    12,    13,    14,    13,    14,    23,     8,     9,    10,    11,\n    12,    13,    14,    10,    11,    12,    13,    14,    11,    12,\n    13,    14,    27\n};\n\nstatic const short yycheck[] = {     1,\n    10,    11,     4,    13,    14,     9,     8,     9,    10,    11,\n    12,    13,    14,     3,     4,     5,     6,     7,     8,     9,\n     0,    23,     7,     8,     9,    15,     3,     4,     5,     6,\n     7,     8,     9,     8,     9,    12,     3,     4,     5,     6,\n     7,     8,     9,     5,     6,     7,     8,     9,     6,     7,\n     8,     9,     0\n};\n#define YYPURE 1\n\n/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */\n#line 3 \"/home/haible/gnu/arch/linuxlibc6/share/bison.simple\"\n/* This file comes from bison-1.28.  */\n\n/* Skeleton output parser for bison,\n   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify\n   it under the terms of the GNU General Public License as published by\n   the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor,\n   Boston, MA  02110-1301, USA.  */\n\n/* As a special exception, when this file is copied by Bison into a\n   Bison output file, you may use that output file without restriction.\n   This special exception was added by the Free Software Foundation\n   in version 1.24 of Bison.  */\n\n/* This is the parser code that is written into each bison parser\n  when the %semantic_parser declaration is not specified in the grammar.\n  It was written by Richard Stallman by simplifying the hairy parser\n  used when %semantic_parser is specified.  */\n\n#ifndef YYSTACK_USE_ALLOCA\n#ifdef alloca\n#define YYSTACK_USE_ALLOCA\n#else /* alloca not defined */\n#ifdef __GNUC__\n#define YYSTACK_USE_ALLOCA\n#define alloca __builtin_alloca\n#else /* not GNU C.  */\n#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))\n#define YYSTACK_USE_ALLOCA\n#include <alloca.h>\n#else /* not SPARC */\n/* We think this test detects Watcom and Microsoft C.  */\n/* This used to test MSDOS, but that is a bad idea\n   since that symbol is in the user namespace.  */\n#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)\n#if 0 /* No need for malloc.h, which pollutes the namespace;\n\t instead, just don't use alloca.  */\n#include <malloc.h>\n#endif\n#else /* not MSDOS, or __TURBOC__ */\n#if defined(_AIX)\n/* I don't know what this was needed for, but it pollutes the namespace.\n   So I turned it off.   rms, 2 May 1997.  */\n/* #include <malloc.h>  */\n #pragma alloca\n#define YYSTACK_USE_ALLOCA\n#else /* not MSDOS, or __TURBOC__, or _AIX */\n#if 0\n#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,\n\t\t and on HPUX 10.  Eventually we can turn this on.  */\n#define YYSTACK_USE_ALLOCA\n#define alloca __builtin_alloca\n#endif /* __hpux */\n#endif\n#endif /* not _AIX */\n#endif /* not MSDOS, or __TURBOC__ */\n#endif /* not SPARC */\n#endif /* not GNU C */\n#endif /* alloca not defined */\n#endif /* YYSTACK_USE_ALLOCA not defined */\n\n#ifdef YYSTACK_USE_ALLOCA\n#define YYSTACK_ALLOC alloca\n#else\n#define YYSTACK_ALLOC malloc\n#endif\n\n/* Note: there must be only one dollar sign in this file.\n   It is replaced by the list of actions, each action\n   as one case of the switch.  */\n\n#define yyerrok\t\t(yyerrstatus = 0)\n#define yyclearin\t(yychar = YYEMPTY)\n#define YYEMPTY\t\t-2\n#define YYEOF\t\t0\n#define YYACCEPT\tgoto yyacceptlab\n#define YYABORT \tgoto yyabortlab\n#define YYERROR\t\tgoto yyerrlab1\n/* Like YYERROR except do call yyerror.\n   This remains here temporarily to ease the\n   transition to the new meaning of YYERROR, for GCC.\n   Once GCC version 2 has supplanted version 1, this can go.  */\n#define YYFAIL\t\tgoto yyerrlab\n#define YYRECOVERING()  (!!yyerrstatus)\n#define YYBACKUP(token, value) \\\ndo\t\t\t\t\t\t\t\t\\\n  if (yychar == YYEMPTY && yylen == 1)\t\t\t\t\\\n    { yychar = (token), yylval = (value);\t\t\t\\\n      yychar1 = YYTRANSLATE (yychar);\t\t\t\t\\\n      YYPOPSTACK;\t\t\t\t\t\t\\\n      goto yybackup;\t\t\t\t\t\t\\\n    }\t\t\t\t\t\t\t\t\\\n  else\t\t\t\t\t\t\t\t\\\n    { yyerror (\"syntax error: cannot back up\"); YYERROR; }\t\\\nwhile (0)\n\n#define YYTERROR\t1\n#define YYERRCODE\t256\n\n#ifndef YYPURE\n#define YYLEX\t\tyylex()\n#endif\n\n#ifdef YYPURE\n#ifdef YYLSP_NEEDED\n#ifdef YYLEX_PARAM\n#define YYLEX\t\tyylex(&yylval, &yylloc, YYLEX_PARAM)\n#else\n#define YYLEX\t\tyylex(&yylval, &yylloc)\n#endif\n#else /* not YYLSP_NEEDED */\n#ifdef YYLEX_PARAM\n#define YYLEX\t\tyylex(&yylval, YYLEX_PARAM)\n#else\n#define YYLEX\t\tyylex(&yylval)\n#endif\n#endif /* not YYLSP_NEEDED */\n#endif\n\n/* If nonreentrant, generate the variables here */\n\n#ifndef YYPURE\n\nint\tyychar;\t\t\t/*  the lookahead symbol\t\t*/\nYYSTYPE\tyylval;\t\t\t/*  the semantic value of the\t\t*/\n\t\t\t\t/*  lookahead symbol\t\t\t*/\n\n#ifdef YYLSP_NEEDED\nYYLTYPE yylloc;\t\t\t/*  location data for the lookahead\t*/\n\t\t\t\t/*  symbol\t\t\t\t*/\n#endif\n\nint yynerrs;\t\t\t/*  number of parse errors so far       */\n#endif  /* not YYPURE */\n\n#if YYDEBUG != 0\nint yydebug;\t\t\t/*  nonzero means print parse trace\t*/\n/* Since this is uninitialized, it does not stop multiple parsers\n   from coexisting.  */\n#endif\n\n/*  YYINITDEPTH indicates the initial size of the parser's stacks\t*/\n\n#ifndef\tYYINITDEPTH\n#define YYINITDEPTH 200\n#endif\n\n/*  YYMAXDEPTH is the maximum size the stacks can grow to\n    (effective only if the built-in stack extension method is used).  */\n\n#if YYMAXDEPTH == 0\n#undef YYMAXDEPTH\n#endif\n\n#ifndef YYMAXDEPTH\n#define YYMAXDEPTH 10000\n#endif\n\f\n/* Define __yy_memcpy.  Note that the size argument\n   should be passed with type unsigned int, because that is what the non-GCC\n   definitions require.  With GCC, __builtin_memcpy takes an arg\n   of type size_t, but it can handle unsigned int.  */\n\n#if __GNUC__ > 1\t\t/* GNU C and GNU C++ define this.  */\n#define __yy_memcpy(TO,FROM,COUNT)\t__builtin_memcpy(TO,FROM,COUNT)\n#else\t\t\t\t/* not GNU C or C++ */\n#ifndef __cplusplus\n\n/* This is the most reliable way to avoid incompatibilities\n   in available built-in functions on various systems.  */\nstatic void\n__yy_memcpy (to, from, count)\n     char *to;\n     char *from;\n     unsigned int count;\n{\n  register char *f = from;\n  register char *t = to;\n  register int i = count;\n\n  while (i-- > 0)\n    *t++ = *f++;\n}\n\n#else /* __cplusplus */\n\n/* This is the most reliable way to avoid incompatibilities\n   in available built-in functions on various systems.  */\nstatic void\n__yy_memcpy (char *to, char *from, unsigned int count)\n{\n  register char *t = to;\n  register char *f = from;\n  register int i = count;\n\n  while (i-- > 0)\n    *t++ = *f++;\n}\n\n#endif\n#endif\n\f\n#line 217 \"/home/haible/gnu/arch/linuxlibc6/share/bison.simple\"\n\n/* The user can define YYPARSE_PARAM as the name of an argument to be passed\n   into yyparse.  The argument should have type void *.\n   It should actually point to an object.\n   Grammar actions can access the variable by casting it\n   to the proper pointer type.  */\n\n#ifdef YYPARSE_PARAM\n#ifdef __cplusplus\n#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM\n#define YYPARSE_PARAM_DECL\n#else /* not __cplusplus */\n#define YYPARSE_PARAM_ARG YYPARSE_PARAM\n#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;\n#endif /* not __cplusplus */\n#else /* not YYPARSE_PARAM */\n#define YYPARSE_PARAM_ARG\n#define YYPARSE_PARAM_DECL\n#endif /* not YYPARSE_PARAM */\n\n/* Prevent warning if -Wstrict-prototypes.  */\n#ifdef __GNUC__\n#ifdef YYPARSE_PARAM\nint yyparse (void *);\n#else\nint yyparse (void);\n#endif\n#endif\n\nint\nyyparse(YYPARSE_PARAM_ARG)\n     YYPARSE_PARAM_DECL\n{\n  register int yystate;\n  register int yyn;\n  register short *yyssp;\n  register YYSTYPE *yyvsp;\n  int yyerrstatus;\t/*  number of tokens to shift before error messages enabled */\n  int yychar1 = 0;\t\t/*  lookahead token as an internal (translated) token number */\n\n  short\tyyssa[YYINITDEPTH];\t/*  the state stack\t\t\t*/\n  YYSTYPE yyvsa[YYINITDEPTH];\t/*  the semantic value stack\t\t*/\n\n  short *yyss = yyssa;\t\t/*  refer to the stacks thru separate pointers */\n  YYSTYPE *yyvs = yyvsa;\t/*  to allow yyoverflow to reallocate them elsewhere */\n\n#ifdef YYLSP_NEEDED\n  YYLTYPE yylsa[YYINITDEPTH];\t/*  the location stack\t\t\t*/\n  YYLTYPE *yyls = yylsa;\n  YYLTYPE *yylsp;\n\n#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)\n#else\n#define YYPOPSTACK   (yyvsp--, yyssp--)\n#endif\n\n  int yystacksize = YYINITDEPTH;\n  int yyfree_stacks = 0;\n\n#ifdef YYPURE\n  int yychar;\n  YYSTYPE yylval;\n  int yynerrs;\n#ifdef YYLSP_NEEDED\n  YYLTYPE yylloc;\n#endif\n#endif\n\n  YYSTYPE yyval;\t\t/*  the variable used to return\t\t*/\n\t\t\t\t/*  semantic values from the action\t*/\n\t\t\t\t/*  routines\t\t\t\t*/\n\n  int yylen;\n\n#if YYDEBUG != 0\n  if (yydebug)\n    fprintf(stderr, \"Starting parse\\n\");\n#endif\n\n  yystate = 0;\n  yyerrstatus = 0;\n  yynerrs = 0;\n  yychar = YYEMPTY;\t\t/* Cause a token to be read.  */\n\n  /* Initialize stack pointers.\n     Waste one element of value and location stack\n     so that they stay on the same level as the state stack.\n     The wasted elements are never initialized.  */\n\n  yyssp = yyss - 1;\n  yyvsp = yyvs;\n#ifdef YYLSP_NEEDED\n  yylsp = yyls;\n#endif\n\n/* Push a new state, which is found in  yystate  .  */\n/* In all cases, when you get here, the value and location stacks\n   have just been pushed. so pushing a state here evens the stacks.  */\nyynewstate:\n\n  *++yyssp = yystate;\n\n  if (yyssp >= yyss + yystacksize - 1)\n    {\n      /* Give user a chance to reallocate the stack */\n      /* Use copies of these so that the &'s don't force the real ones into memory. */\n      YYSTYPE *yyvs1 = yyvs;\n      short *yyss1 = yyss;\n#ifdef YYLSP_NEEDED\n      YYLTYPE *yyls1 = yyls;\n#endif\n\n      /* Get the current used size of the three stacks, in elements.  */\n      int size = yyssp - yyss + 1;\n\n#ifdef yyoverflow\n      /* Each stack pointer address is followed by the size of\n\t the data in use in that stack, in bytes.  */\n#ifdef YYLSP_NEEDED\n      /* This used to be a conditional around just the two extra args,\n\t but that might be undefined if yyoverflow is a macro.  */\n      yyoverflow(\"parser stack overflow\",\n\t\t &yyss1, size * sizeof (*yyssp),\n\t\t &yyvs1, size * sizeof (*yyvsp),\n\t\t &yyls1, size * sizeof (*yylsp),\n\t\t &yystacksize);\n#else\n      yyoverflow(\"parser stack overflow\",\n\t\t &yyss1, size * sizeof (*yyssp),\n\t\t &yyvs1, size * sizeof (*yyvsp),\n\t\t &yystacksize);\n#endif\n\n      yyss = yyss1; yyvs = yyvs1;\n#ifdef YYLSP_NEEDED\n      yyls = yyls1;\n#endif\n#else /* no yyoverflow */\n      /* Extend the stack our own way.  */\n      if (yystacksize >= YYMAXDEPTH)\n\t{\n\t  yyerror(\"parser stack overflow\");\n\t  if (yyfree_stacks)\n\t    {\n\t      free (yyss);\n\t      free (yyvs);\n#ifdef YYLSP_NEEDED\n\t      free (yyls);\n#endif\n\t    }\n\t  return 2;\n\t}\n      yystacksize *= 2;\n      if (yystacksize > YYMAXDEPTH)\n\tyystacksize = YYMAXDEPTH;\n#ifndef YYSTACK_USE_ALLOCA\n      yyfree_stacks = 1;\n#endif\n      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));\n      __yy_memcpy ((char *)yyss, (char *)yyss1,\n\t\t   size * (unsigned int) sizeof (*yyssp));\n      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));\n      __yy_memcpy ((char *)yyvs, (char *)yyvs1,\n\t\t   size * (unsigned int) sizeof (*yyvsp));\n#ifdef YYLSP_NEEDED\n      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));\n      __yy_memcpy ((char *)yyls, (char *)yyls1,\n\t\t   size * (unsigned int) sizeof (*yylsp));\n#endif\n#endif /* no yyoverflow */\n\n      yyssp = yyss + size - 1;\n      yyvsp = yyvs + size - 1;\n#ifdef YYLSP_NEEDED\n      yylsp = yyls + size - 1;\n#endif\n\n#if YYDEBUG != 0\n      if (yydebug)\n\tfprintf(stderr, \"Stack size increased to %d\\n\", yystacksize);\n#endif\n\n      if (yyssp >= yyss + yystacksize - 1)\n\tYYABORT;\n    }\n\n#if YYDEBUG != 0\n  if (yydebug)\n    fprintf(stderr, \"Entering state %d\\n\", yystate);\n#endif\n\n  goto yybackup;\n yybackup:\n\n/* Do appropriate processing given the current state.  */\n/* Read a lookahead token if we need one and don't already have one.  */\n/* yyresume: */\n\n  /* First try to decide what to do without reference to lookahead token.  */\n\n  yyn = yypact[yystate];\n  if (yyn == YYFLAG)\n    goto yydefault;\n\n  /* Not known => get a lookahead token if don't already have one.  */\n\n  /* yychar is either YYEMPTY or YYEOF\n     or a valid token in external form.  */\n\n  if (yychar == YYEMPTY)\n    {\n#if YYDEBUG != 0\n      if (yydebug)\n\tfprintf(stderr, \"Reading a token: \");\n#endif\n      yychar = YYLEX;\n    }\n\n  /* Convert token to internal form (in yychar1) for indexing tables with */\n\n  if (yychar <= 0)\t\t/* This means end of input. */\n    {\n      yychar1 = 0;\n      yychar = YYEOF;\t\t/* Don't call YYLEX any more */\n\n#if YYDEBUG != 0\n      if (yydebug)\n\tfprintf(stderr, \"Now at end of input.\\n\");\n#endif\n    }\n  else\n    {\n      yychar1 = YYTRANSLATE(yychar);\n\n#if YYDEBUG != 0\n      if (yydebug)\n\t{\n\t  fprintf (stderr, \"Next token is %d (%s\", yychar, yytname[yychar1]);\n\t  /* Give the individual parser a way to print the precise meaning\n\t     of a token, for further debugging info.  */\n#ifdef YYPRINT\n\t  YYPRINT (stderr, yychar, yylval);\n#endif\n\t  fprintf (stderr, \")\\n\");\n\t}\n#endif\n    }\n\n  yyn += yychar1;\n  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)\n    goto yydefault;\n\n  yyn = yytable[yyn];\n\n  /* yyn is what to do for this token type in this state.\n     Negative => reduce, -yyn is rule number.\n     Positive => shift, yyn is new state.\n       New state is final state => don't bother to shift,\n       just return success.\n     0, or most negative number => error.  */\n\n  if (yyn < 0)\n    {\n      if (yyn == YYFLAG)\n\tgoto yyerrlab;\n      yyn = -yyn;\n      goto yyreduce;\n    }\n  else if (yyn == 0)\n    goto yyerrlab;\n\n  if (yyn == YYFINAL)\n    YYACCEPT;\n\n  /* Shift the lookahead token.  */\n\n#if YYDEBUG != 0\n  if (yydebug)\n    fprintf(stderr, \"Shifting token %d (%s), \", yychar, yytname[yychar1]);\n#endif\n\n  /* Discard the token being shifted unless it is eof.  */\n  if (yychar != YYEOF)\n    yychar = YYEMPTY;\n\n  *++yyvsp = yylval;\n#ifdef YYLSP_NEEDED\n  *++yylsp = yylloc;\n#endif\n\n  /* count tokens shifted since error; after three, turn off error status.  */\n  if (yyerrstatus) yyerrstatus--;\n\n  yystate = yyn;\n  goto yynewstate;\n\n/* Do the default action for the current state.  */\nyydefault:\n\n  yyn = yydefact[yystate];\n  if (yyn == 0)\n    goto yyerrlab;\n\n/* Do a reduction.  yyn is the number of a rule to reduce with.  */\nyyreduce:\n  yylen = yyr2[yyn];\n  if (yylen > 0)\n    yyval = yyvsp[1-yylen]; /* implement default value of the action */\n\n#if YYDEBUG != 0\n  if (yydebug)\n    {\n      int i;\n\n      fprintf (stderr, \"Reducing via rule %d (line %d), \",\n\t       yyn, yyrline[yyn]);\n\n      /* Print the symbols being reduced, and their result.  */\n      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)\n\tfprintf (stderr, \"%s \", yytname[yyrhs[i]]);\n      fprintf (stderr, \" -> %s\\n\", yytname[yyr1[yyn]]);\n    }\n#endif\n\n\n  switch (yyn) {\n\ncase 1:\n#line 179 \"plural.y\"\n{\n\t    if (yyvsp[0].exp == NULL)\n\t      YYABORT;\n\t    ((struct parse_args *) arg)->res = yyvsp[0].exp;\n\t  ;\n    break;}\ncase 2:\n#line 187 \"plural.y\"\n{\n\t    yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);\n\t  ;\n    break;}\ncase 3:\n#line 191 \"plural.y\"\n{\n\t    yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);\n\t  ;\n    break;}\ncase 4:\n#line 195 \"plural.y\"\n{\n\t    yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);\n\t  ;\n    break;}\ncase 5:\n#line 199 \"plural.y\"\n{\n\t    yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);\n\t  ;\n    break;}\ncase 6:\n#line 203 \"plural.y\"\n{\n\t    yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);\n\t  ;\n    break;}\ncase 7:\n#line 207 \"plural.y\"\n{\n\t    yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);\n\t  ;\n    break;}\ncase 8:\n#line 211 \"plural.y\"\n{\n\t    yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);\n\t  ;\n    break;}\ncase 9:\n#line 215 \"plural.y\"\n{\n\t    yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);\n\t  ;\n    break;}\ncase 10:\n#line 219 \"plural.y\"\n{\n\t    yyval.exp = new_exp_0 (var);\n\t  ;\n    break;}\ncase 11:\n#line 223 \"plural.y\"\n{\n\t    if ((yyval.exp = new_exp_0 (num)) != NULL)\n\t      yyval.exp->val.num = yyvsp[0].num;\n\t  ;\n    break;}\ncase 12:\n#line 228 \"plural.y\"\n{\n\t    yyval.exp = yyvsp[-1].exp;\n\t  ;\n    break;}\n}\n   /* the action file gets copied in in place of this dollarsign */\n#line 543 \"/home/haible/gnu/arch/linuxlibc6/share/bison.simple\"\n\f\n  yyvsp -= yylen;\n  yyssp -= yylen;\n#ifdef YYLSP_NEEDED\n  yylsp -= yylen;\n#endif\n\n#if YYDEBUG != 0\n  if (yydebug)\n    {\n      short *ssp1 = yyss - 1;\n      fprintf (stderr, \"state stack now\");\n      while (ssp1 != yyssp)\n\tfprintf (stderr, \" %d\", *++ssp1);\n      fprintf (stderr, \"\\n\");\n    }\n#endif\n\n  *++yyvsp = yyval;\n\n#ifdef YYLSP_NEEDED\n  yylsp++;\n  if (yylen == 0)\n    {\n      yylsp->first_line = yylloc.first_line;\n      yylsp->first_column = yylloc.first_column;\n      yylsp->last_line = (yylsp-1)->last_line;\n      yylsp->last_column = (yylsp-1)->last_column;\n      yylsp->text = 0;\n    }\n  else\n    {\n      yylsp->last_line = (yylsp+yylen-1)->last_line;\n      yylsp->last_column = (yylsp+yylen-1)->last_column;\n    }\n#endif\n\n  /* Now \"shift\" the result of the reduction.\n     Determine what state that goes to,\n     based on the state we popped back to\n     and the rule number reduced by.  */\n\n  yyn = yyr1[yyn];\n\n  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;\n  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)\n    yystate = yytable[yystate];\n  else\n    yystate = yydefgoto[yyn - YYNTBASE];\n\n  goto yynewstate;\n\nyyerrlab:   /* here on detecting error */\n\n  if (! yyerrstatus)\n    /* If not already recovering from an error, report this error.  */\n    {\n      ++yynerrs;\n\n#ifdef YYERROR_VERBOSE\n      yyn = yypact[yystate];\n\n      if (yyn > YYFLAG && yyn < YYLAST)\n\t{\n\t  int size = 0;\n\t  char *msg;\n\t  int x, count;\n\n\t  count = 0;\n\t  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */\n\t  for (x = (yyn < 0 ? -yyn : 0);\n\t       x < (sizeof(yytname) / sizeof(char *)); x++)\n\t    if (yycheck[x + yyn] == x)\n\t      size += strlen(yytname[x]) + 15, count++;\n\t  msg = (char *) malloc(size + 15);\n\t  if (msg != 0)\n\t    {\n\t      strcpy(msg, \"parse error\");\n\n\t      if (count < 5)\n\t\t{\n\t\t  count = 0;\n\t\t  for (x = (yyn < 0 ? -yyn : 0);\n\t\t       x < (sizeof(yytname) / sizeof(char *)); x++)\n\t\t    if (yycheck[x + yyn] == x)\n\t\t      {\n\t\t\tstrcat(msg, count == 0 ? \", expecting `\" : \" or `\");\n\t\t\tstrcat(msg, yytname[x]);\n\t\t\tstrcat(msg, \"'\");\n\t\t\tcount++;\n\t\t      }\n\t\t}\n\t      yyerror(msg);\n\t      free(msg);\n\t    }\n\t  else\n\t    yyerror (\"parse error; also virtual memory exceeded\");\n\t}\n      else\n#endif /* YYERROR_VERBOSE */\n\tyyerror(\"parse error\");\n    }\n\n  goto yyerrlab1;\nyyerrlab1:   /* here on error raised explicitly by an action */\n\n  if (yyerrstatus == 3)\n    {\n      /* if just tried and failed to reuse lookahead token after an error, discard it.  */\n\n      /* return failure if at end of input */\n      if (yychar == YYEOF)\n\tYYABORT;\n\n#if YYDEBUG != 0\n      if (yydebug)\n\tfprintf(stderr, \"Discarding token %d (%s).\\n\", yychar, yytname[yychar1]);\n#endif\n\n      yychar = YYEMPTY;\n    }\n\n  /* Else will try to reuse lookahead token\n     after shifting the error token.  */\n\n  yyerrstatus = 3;\t\t/* Each real token shifted decrements this */\n\n  goto yyerrhandle;\n\nyyerrdefault:  /* current state does not do anything special for the error token. */\n\n#if 0\n  /* This is wrong; only states that explicitly want error tokens\n     should shift them.  */\n  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/\n  if (yyn) goto yydefault;\n#endif\n\nyyerrpop:   /* pop the current state because it cannot handle the error token */\n\n  if (yyssp == yyss) YYABORT;\n  yyvsp--;\n  yystate = *--yyssp;\n#ifdef YYLSP_NEEDED\n  yylsp--;\n#endif\n\n#if YYDEBUG != 0\n  if (yydebug)\n    {\n      short *ssp1 = yyss - 1;\n      fprintf (stderr, \"Error: state stack now\");\n      while (ssp1 != yyssp)\n\tfprintf (stderr, \" %d\", *++ssp1);\n      fprintf (stderr, \"\\n\");\n    }\n#endif\n\nyyerrhandle:\n\n  yyn = yypact[yystate];\n  if (yyn == YYFLAG)\n    goto yyerrdefault;\n\n  yyn += YYTERROR;\n  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)\n    goto yyerrdefault;\n\n  yyn = yytable[yyn];\n  if (yyn < 0)\n    {\n      if (yyn == YYFLAG)\n\tgoto yyerrpop;\n      yyn = -yyn;\n      goto yyreduce;\n    }\n  else if (yyn == 0)\n    goto yyerrpop;\n\n  if (yyn == YYFINAL)\n    YYACCEPT;\n\n#if YYDEBUG != 0\n  if (yydebug)\n    fprintf(stderr, \"Shifting error token, \");\n#endif\n\n  *++yyvsp = yylval;\n#ifdef YYLSP_NEEDED\n  *++yylsp = yylloc;\n#endif\n\n  yystate = yyn;\n  goto yynewstate;\n\n yyacceptlab:\n  /* YYACCEPT comes here.  */\n  if (yyfree_stacks)\n    {\n      free (yyss);\n      free (yyvs);\n#ifdef YYLSP_NEEDED\n      free (yyls);\n#endif\n    }\n  return 0;\n\n yyabortlab:\n  /* YYABORT comes here.  */\n  if (yyfree_stacks)\n    {\n      free (yyss);\n      free (yyvs);\n#ifdef YYLSP_NEEDED\n      free (yyls);\n#endif\n    }\n  return 1;\n}\n#line 233 \"plural.y\"\n\n\nvoid\ninternal_function\nFREE_EXPRESSION (exp)\n     struct expression *exp;\n{\n  if (exp == NULL)\n    return;\n\n  /* Handle the recursive case.  */\n  switch (exp->nargs)\n    {\n    case 3:\n      FREE_EXPRESSION (exp->val.args[2]);\n      /* FALLTHROUGH */\n    case 2:\n      FREE_EXPRESSION (exp->val.args[1]);\n      /* FALLTHROUGH */\n    case 1:\n      FREE_EXPRESSION (exp->val.args[0]);\n      /* FALLTHROUGH */\n    default:\n      break;\n    }\n\n  free (exp);\n}\n\n\nstatic int\nyylex (lval, pexp)\n     YYSTYPE *lval;\n     const char **pexp;\n{\n  const char *exp = *pexp;\n  int result;\n\n  while (1)\n    {\n      if (exp[0] == '\\0')\n\t{\n\t  *pexp = exp;\n\t  return YYEOF;\n\t}\n\n      if (exp[0] != ' ' && exp[0] != '\\t')\n\tbreak;\n\n      ++exp;\n    }\n\n  result = *exp++;\n  switch (result)\n    {\n    case '0': case '1': case '2': case '3': case '4':\n    case '5': case '6': case '7': case '8': case '9':\n      {\n\tunsigned long int n = result - '0';\n\twhile (exp[0] >= '0' && exp[0] <= '9')\n\t  {\n\t    n *= 10;\n\t    n += exp[0] - '0';\n\t    ++exp;\n\t  }\n\tlval->num = n;\n\tresult = NUMBER;\n      }\n      break;\n\n    case '=':\n      if (exp[0] == '=')\n\t{\n\t  ++exp;\n\t  lval->op = equal;\n\t  result = EQUOP2;\n\t}\n      else\n\tresult = YYERRCODE;\n      break;\n\n    case '!':\n      if (exp[0] == '=')\n\t{\n\t  ++exp;\n\t  lval->op = not_equal;\n\t  result = EQUOP2;\n\t}\n      break;\n\n    case '&':\n    case '|':\n      if (exp[0] == result)\n\t++exp;\n      else\n\tresult = YYERRCODE;\n      break;\n\n    case '<':\n      if (exp[0] == '=')\n\t{\n\t  ++exp;\n\t  lval->op = less_or_equal;\n\t}\n      else\n\tlval->op = less_than;\n      result = CMPOP2;\n      break;\n\n    case '>':\n      if (exp[0] == '=')\n\t{\n\t  ++exp;\n\t  lval->op = greater_or_equal;\n\t}\n      else\n\tlval->op = greater_than;\n      result = CMPOP2;\n      break;\n\n    case '*':\n      lval->op = mult;\n      result = MULOP2;\n      break;\n\n    case '/':\n      lval->op = divide;\n      result = MULOP2;\n      break;\n\n    case '%':\n      lval->op = module;\n      result = MULOP2;\n      break;\n\n    case '+':\n      lval->op = plus;\n      result = ADDOP2;\n      break;\n\n    case '-':\n      lval->op = minus;\n      result = ADDOP2;\n      break;\n\n    case 'n':\n    case '?':\n    case ':':\n    case '(':\n    case ')':\n      /* Nothing, just return the character.  */\n      break;\n\n    case ';':\n    case '\\n':\n    case '\\0':\n      /* Be safe and let the user call this function again.  */\n      --exp;\n      result = YYEOF;\n      break;\n\n    default:\n      result = YYERRCODE;\n#if YYDEBUG != 0\n      --exp;\n#endif\n      break;\n    }\n\n  *pexp = exp;\n\n  return result;\n}\n\n\nstatic void\nyyerror (str)\n     const char *str;\n{\n  /* Do nothing.  We don't print error messages here.  */\n}\n"
  },
  {
    "path": "intl/plural.y",
    "content": "%{\n/* Expression parsing for plural form selection.\n   Copyright (C) 2000, 2001 Free Software Foundation, Inc.\n   Written by Ulrich Drepper <drepper@cygnus.com>, 2000.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n/* The bison generated parser uses alloca.  AIX 3 forces us to put this\n   declaration at the beginning of the file.  The declaration in bison's\n   skeleton file comes too late.  This must come before <config.h>\n   because <config.h> may include arbitrary system headers.  */\n#if defined _AIX && !defined __GNUC__\n #pragma alloca\n#endif\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <stdlib.h>\n#include \"gettextP.h\"\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define FREE_EXPRESSION __gettext_free_exp\n#else\n# define FREE_EXPRESSION gettext_free_exp__\n# define __gettextparse gettextparse__\n#endif\n\n#define YYLEX_PARAM\t&((struct parse_args *) arg)->cp\n#define YYPARSE_PARAM\targ\n%}\n%pure_parser\n%expect 10\n\n%union {\n  unsigned long int num;\n  enum operator op;\n  struct expression *exp;\n}\n\n%{\n/* Prototypes for local functions.  */\nstatic struct expression *new_exp PARAMS ((int nargs, enum operator op,\n\t\t\t\t\t   struct expression * const *args));\nstatic inline struct expression *new_exp_0 PARAMS ((enum operator op));\nstatic inline struct expression *new_exp_1 PARAMS ((enum operator op,\n\t\t\t\t\t\t   struct expression *right));\nstatic struct expression *new_exp_2 PARAMS ((enum operator op,\n\t\t\t\t\t     struct expression *left,\n\t\t\t\t\t     struct expression *right));\nstatic inline struct expression *new_exp_3 PARAMS ((enum operator op,\n\t\t\t\t\t\t   struct expression *bexp,\n\t\t\t\t\t\t   struct expression *tbranch,\n\t\t\t\t\t\t   struct expression *fbranch));\nstatic int yylex PARAMS ((YYSTYPE *lval, const char **pexp));\nstatic void yyerror PARAMS ((const char *str));\n\n/* Allocation of expressions.  */\n\nstatic struct expression *\nnew_exp (nargs, op, args)\n     int nargs;\n     enum operator op;\n     struct expression * const *args;\n{\n  int i;\n  struct expression *newp;\n\n  /* If any of the argument could not be malloc'ed, just return NULL.  */\n  for (i = nargs - 1; i >= 0; i--)\n    if (args[i] == NULL)\n      goto fail;\n\n  /* Allocate a new expression.  */\n  newp = (struct expression *) malloc (sizeof (*newp));\n  if (newp != NULL)\n    {\n      newp->nargs = nargs;\n      newp->operation = op;\n      for (i = nargs - 1; i >= 0; i--)\n\tnewp->val.args[i] = args[i];\n      return newp;\n    }\n\n fail:\n  for (i = nargs - 1; i >= 0; i--)\n    FREE_EXPRESSION (args[i]);\n\n  return NULL;\n}\n\nstatic inline struct expression *\nnew_exp_0 (op)\n     enum operator op;\n{\n  return new_exp (0, op, NULL);\n}\n\nstatic inline struct expression *\nnew_exp_1 (op, right)\n     enum operator op;\n     struct expression *right;\n{\n  struct expression *args[1];\n\n  args[0] = right;\n  return new_exp (1, op, args);\n}\n\nstatic struct expression *\nnew_exp_2 (op, left, right)\n     enum operator op;\n     struct expression *left;\n     struct expression *right;\n{\n  struct expression *args[2];\n\n  args[0] = left;\n  args[1] = right;\n  return new_exp (2, op, args);\n}\n\nstatic inline struct expression *\nnew_exp_3 (op, bexp, tbranch, fbranch)\n     enum operator op;\n     struct expression *bexp;\n     struct expression *tbranch;\n     struct expression *fbranch;\n{\n  struct expression *args[3];\n\n  args[0] = bexp;\n  args[1] = tbranch;\n  args[2] = fbranch;\n  return new_exp (3, op, args);\n}\n\n%}\n\n/* This declares that all operators have the same associativity and the\n   precedence order as in C.  See [Harbison, Steele: C, A Reference Manual].\n   There is no unary minus and no bitwise operators.\n   Operators with the same syntactic behaviour have been merged into a single\n   token, to save space in the array generated by bison.  */\n%right '?'\t\t/*   ?\t\t*/\n%left '|'\t\t/*   ||\t\t*/\n%left '&'\t\t/*   &&\t\t*/\n%left EQUOP2\t\t/*   == !=\t*/\n%left CMPOP2\t\t/*   < > <= >=\t*/\n%left ADDOP2\t\t/*   + -\t*/\n%left MULOP2\t\t/*   * / %\t*/\n%right '!'\t\t/*   !\t\t*/\n\n%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2\n%token <num> NUMBER\n%type <exp> exp\n\n%%\n\nstart:\t  exp\n\t  {\n\t    if ($1 == NULL)\n\t      YYABORT;\n\t    ((struct parse_args *) arg)->res = $1;\n\t  }\n\t;\n\nexp:\t  exp '?' exp ':' exp\n\t  {\n\t    $$ = new_exp_3 (qmop, $1, $3, $5);\n\t  }\n\t| exp '|' exp\n\t  {\n\t    $$ = new_exp_2 (lor, $1, $3);\n\t  }\n\t| exp '&' exp\n\t  {\n\t    $$ = new_exp_2 (land, $1, $3);\n\t  }\n\t| exp EQUOP2 exp\n\t  {\n\t    $$ = new_exp_2 ($2, $1, $3);\n\t  }\n\t| exp CMPOP2 exp\n\t  {\n\t    $$ = new_exp_2 ($2, $1, $3);\n\t  }\n\t| exp ADDOP2 exp\n\t  {\n\t    $$ = new_exp_2 ($2, $1, $3);\n\t  }\n\t| exp MULOP2 exp\n\t  {\n\t    $$ = new_exp_2 ($2, $1, $3);\n\t  }\n\t| '!' exp\n\t  {\n\t    $$ = new_exp_1 (lnot, $2);\n\t  }\n\t| 'n'\n\t  {\n\t    $$ = new_exp_0 (var);\n\t  }\n\t| NUMBER\n\t  {\n\t    if (($$ = new_exp_0 (num)) != NULL)\n\t      $$->val.num = $1;\n\t  }\n\t| '(' exp ')'\n\t  {\n\t    $$ = $2;\n\t  }\n\t;\n\n%%\n\nvoid\ninternal_function\nFREE_EXPRESSION (exp)\n     struct expression *exp;\n{\n  if (exp == NULL)\n    return;\n\n  /* Handle the recursive case.  */\n  switch (exp->nargs)\n    {\n    case 3:\n      FREE_EXPRESSION (exp->val.args[2]);\n      /* FALLTHROUGH */\n    case 2:\n      FREE_EXPRESSION (exp->val.args[1]);\n      /* FALLTHROUGH */\n    case 1:\n      FREE_EXPRESSION (exp->val.args[0]);\n      /* FALLTHROUGH */\n    default:\n      break;\n    }\n\n  free (exp);\n}\n\n\nstatic int\nyylex (lval, pexp)\n     YYSTYPE *lval;\n     const char **pexp;\n{\n  const char *exp = *pexp;\n  int result;\n\n  while (1)\n    {\n      if (exp[0] == '\\0')\n\t{\n\t  *pexp = exp;\n\t  return YYEOF;\n\t}\n\n      if (exp[0] != ' ' && exp[0] != '\\t')\n\tbreak;\n\n      ++exp;\n    }\n\n  result = *exp++;\n  switch (result)\n    {\n    case '0': case '1': case '2': case '3': case '4':\n    case '5': case '6': case '7': case '8': case '9':\n      {\n\tunsigned long int n = result - '0';\n\twhile (exp[0] >= '0' && exp[0] <= '9')\n\t  {\n\t    n *= 10;\n\t    n += exp[0] - '0';\n\t    ++exp;\n\t  }\n\tlval->num = n;\n\tresult = NUMBER;\n      }\n      break;\n\n    case '=':\n      if (exp[0] == '=')\n\t{\n\t  ++exp;\n\t  lval->op = equal;\n\t  result = EQUOP2;\n\t}\n      else\n\tresult = YYERRCODE;\n      break;\n\n    case '!':\n      if (exp[0] == '=')\n\t{\n\t  ++exp;\n\t  lval->op = not_equal;\n\t  result = EQUOP2;\n\t}\n      break;\n\n    case '&':\n    case '|':\n      if (exp[0] == result)\n\t++exp;\n      else\n\tresult = YYERRCODE;\n      break;\n\n    case '<':\n      if (exp[0] == '=')\n\t{\n\t  ++exp;\n\t  lval->op = less_or_equal;\n\t}\n      else\n\tlval->op = less_than;\n      result = CMPOP2;\n      break;\n\n    case '>':\n      if (exp[0] == '=')\n\t{\n\t  ++exp;\n\t  lval->op = greater_or_equal;\n\t}\n      else\n\tlval->op = greater_than;\n      result = CMPOP2;\n      break;\n\n    case '*':\n      lval->op = mult;\n      result = MULOP2;\n      break;\n\n    case '/':\n      lval->op = divide;\n      result = MULOP2;\n      break;\n\n    case '%':\n      lval->op = module;\n      result = MULOP2;\n      break;\n\n    case '+':\n      lval->op = plus;\n      result = ADDOP2;\n      break;\n\n    case '-':\n      lval->op = minus;\n      result = ADDOP2;\n      break;\n\n    case 'n':\n    case '?':\n    case ':':\n    case '(':\n    case ')':\n      /* Nothing, just return the character.  */\n      break;\n\n    case ';':\n    case '\\n':\n    case '\\0':\n      /* Be safe and let the user call this function again.  */\n      --exp;\n      result = YYEOF;\n      break;\n\n    default:\n      result = YYERRCODE;\n#if YYDEBUG != 0\n      --exp;\n#endif\n      break;\n    }\n\n  *pexp = exp;\n\n  return result;\n}\n\n\nstatic void\nyyerror (str)\n     const char *str;\n{\n  /* Do nothing.  We don't print error messages here.  */\n}\n"
  },
  {
    "path": "intl/po2tbl.sed.in",
    "content": ""
  },
  {
    "path": "intl/ref-add.sin",
    "content": "# Add this package to a list of references stored in a text file.\n#\n#   Copyright (C) 2000 Free Software Foundation, Inc.\n#\n#   This program is free software; you can redistribute it and/or modify it\n#   under the terms of the GNU Library General Public License as published\n#   by the Free Software Foundation; either version 2, or (at your option)\n#   any later version.\n#\n#   This program is distributed in the hope that it will be useful,\n#   but WITHOUT ANY WARRANTY; without even the implied warranty of\n#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n#   Library General Public License for more details.\n#\n#   You should have received a copy of the GNU Library General Public\n#   License along with this program; if not, write to the Free Software\n#   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n#   USA.\n#\n# Written by Bruno Haible <haible@clisp.cons.org>.\n#\n/^# Packages using this file: / {\n  s/# Packages using this file://\n  ta\n  :a\n  s/ @PACKAGE@ / @PACKAGE@ /\n  tb\n  s/ $/ @PACKAGE@ /\n  :b\n  s/^/# Packages using this file:/\n}\n"
  },
  {
    "path": "intl/ref-del.sin",
    "content": "# Remove this package from a list of references stored in a text file.\n#\n#   Copyright (C) 2000 Free Software Foundation, Inc.\n#\n#   This program is free software; you can redistribute it and/or modify it\n#   under the terms of the GNU Library General Public License as published\n#   by the Free Software Foundation; either version 2, or (at your option)\n#   any later version.\n#\n#   This program is distributed in the hope that it will be useful,\n#   but WITHOUT ANY WARRANTY; without even the implied warranty of\n#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n#   Library General Public License for more details.\n#\n#   You should have received a copy of the GNU Library General Public\n#   License along with this program; if not, write to the Free Software\n#   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n#   USA.\n#\n# Written by Bruno Haible <haible@clisp.cons.org>.\n#\n/^# Packages using this file: / {\n  s/# Packages using this file://\n  s/ @PACKAGE@ / /\n  s/^/# Packages using this file:/\n}\n"
  },
  {
    "path": "intl/textdomain.c",
    "content": "/* Implementation of the textdomain(3) function.\n   Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU Library General Public License as published\n   by the Free Software Foundation; either version 2, or (at your option)\n   any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Library General Public License for more details.\n\n   You should have received a copy of the GNU Library General Public\n   License along with this program; if not, write to the Free Software\n   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,\n   USA.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include <stdlib.h>\n#include <string.h>\n\n#ifdef _LIBC\n# include <libintl.h>\n#else\n# include \"libgnuintl.h\"\n#endif\n#include \"gettextP.h\"\n\n#ifdef _LIBC\n/* We have to handle multi-threaded applications.  */\n# include <bits/libc-lock.h>\n#else\n/* Provide dummy implementation if this is outside glibc.  */\n# define __libc_rwlock_define(CLASS, NAME)\n# define __libc_rwlock_wrlock(NAME)\n# define __libc_rwlock_unlock(NAME)\n#endif\n\n/* The internal variables in the standalone libintl.a must have different\n   names than the internal variables in GNU libc, otherwise programs\n   using libintl.a cannot be linked statically.  */\n#if !defined _LIBC\n# define _nl_default_default_domain _nl_default_default_domain__\n# define _nl_current_default_domain _nl_current_default_domain__\n#endif\n\n/* @@ end of prolog @@ */\n\n/* Name of the default text domain.  */\nextern const char _nl_default_default_domain[];\n\n/* Default text domain in which entries for gettext(3) are to be found.  */\nextern const char *_nl_current_default_domain;\n\n\n/* Names for the libintl functions are a problem.  They must not clash\n   with existing names and they should follow ANSI C.  But this source\n   code is also used in GNU C Library where the names have a __\n   prefix.  So we have to make a difference here.  */\n#ifdef _LIBC\n# define TEXTDOMAIN __textdomain\n# ifndef strdup\n#  define strdup(str) __strdup (str)\n# endif\n#else\n# define TEXTDOMAIN textdomain__\n#endif\n\n/* Lock variable to protect the global data in the gettext implementation.  */\n__libc_rwlock_define (extern, _nl_state_lock)\n\n/* Set the current default message catalog to DOMAINNAME.\n   If DOMAINNAME is null, return the current default.\n   If DOMAINNAME is \"\", reset to the default of \"messages\".  */\nchar *\nTEXTDOMAIN (domainname)\n     const char *domainname;\n{\n  char *new_domain;\n  char *old_domain;\n\n  /* A NULL pointer requests the current setting.  */\n  if (domainname == NULL)\n    return (char *) _nl_current_default_domain;\n\n  __libc_rwlock_wrlock (_nl_state_lock);\n\n  old_domain = (char *) _nl_current_default_domain;\n\n  /* If domain name is the null string set to default domain \"messages\".  */\n  if (domainname[0] == '\\0'\n      || strcmp (domainname, _nl_default_default_domain) == 0)\n    {\n      _nl_current_default_domain = _nl_default_default_domain;\n      new_domain = (char *) _nl_current_default_domain;\n    }\n  else if (strcmp (domainname, old_domain) == 0)\n    /* This can happen and people will use it to signal that some\n       environment variable changed.  */\n    new_domain = old_domain;\n  else\n    {\n      /* If the following malloc fails `_nl_current_default_domain'\n\t will be NULL.  This value will be returned and so signals we\n\t are out of core.  */\n#if defined _LIBC || defined HAVE_STRDUP\n      new_domain = strdup (domainname);\n#else\n      size_t len = strlen (domainname) + 1;\n      new_domain = (char *) malloc (len);\n      if (new_domain != NULL)\n\tmemcpy (new_domain, domainname, len);\n#endif\n\n      if (new_domain != NULL)\n\t_nl_current_default_domain = new_domain;\n    }\n\n  /* We use this possibility to signal a change of the loaded catalogs\n     since this is most likely the case and there is no other easy we\n     to do it.  Do it only when the call was successful.  */\n  if (new_domain != NULL)\n    {\n      ++_nl_msg_cat_cntr;\n\n      if (old_domain != new_domain && old_domain != _nl_default_default_domain)\n\tfree (old_domain);\n    }\n\n  __libc_rwlock_unlock (_nl_state_lock);\n\n  return new_domain;\n}\n\n#ifdef _LIBC\n/* Alias for function name in GNU C Library.  */\nweak_alias (__textdomain, textdomain);\n#endif\n"
  },
  {
    "path": "intl/xopen-msg.sed",
    "content": ""
  },
  {
    "path": "keymap.c",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2010-2011 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_curses.h\"\n#include \"keymap.h\"\n#include \"mapping.h\"\n#include \"mutt_crypt.h\"\n#ifdef USE_IMAP\n#include \"imap/imap.h\"\n#endif\n\n#include <stdlib.h>\n#include <string.h>\n#include <ctype.h>\n\n#include \"functions.h\"\n\nconst struct mapping_t Menus[] = {\n { \"alias\",\tMENU_ALIAS },\n { \"attach\",\tMENU_ATTACH },\n { \"browser\",\tMENU_FOLDER },\n { \"compose\",\tMENU_COMPOSE },\n { \"editor\",\tMENU_EDITOR },\n { \"index\",\tMENU_MAIN },\n { \"pager\",\tMENU_PAGER },\n { \"postpone\",\tMENU_POST },\n { \"pgp\",\tMENU_PGP },\n { \"smime\",\tMENU_SMIME },\n#ifdef CRYPT_BACKEND_GPGME\n { \"key_select_pgp\",\tMENU_KEY_SELECT_PGP },\n { \"key_select_smime\",\tMENU_KEY_SELECT_SMIME },\n#endif\n\n#ifdef MIXMASTER\n  { \"mix\", \tMENU_MIX },\n#endif\n  \n\n { \"query\",\tMENU_QUERY },\n { \"generic\",\tMENU_GENERIC },\n { NULL,\t0 }\n};\n\n#define mutt_check_menu(s) mutt_getvaluebyname(s, Menus)\n\nstatic struct mapping_t KeyNames[] = {\n  { \"<PageUp>\",\tKEY_PPAGE },\n  { \"<PageDown>\",\tKEY_NPAGE },\n  { \"<Up>\",\tKEY_UP },\n  { \"<Down>\",\tKEY_DOWN },\n  { \"<Right>\",\tKEY_RIGHT },\n  { \"<Left>\",\tKEY_LEFT },\n  { \"<Delete>\",\tKEY_DC },\n  { \"<BackSpace>\",KEY_BACKSPACE },\n  { \"<Insert>\",\tKEY_IC },\n  { \"<Home>\",\tKEY_HOME },\n  { \"<End>\",\tKEY_END },\n#ifdef KEY_ENTER\n  { \"<Enter>\",\tKEY_ENTER },\n#endif\n  { \"<Return>\",\tM_ENTER_C },\n  { \"<Esc>\",\t'\\033' },\n  { \"<Tab>\",\t'\\t' },\n  { \"<Space>\",\t' ' },\n#ifdef KEY_BTAB\n  { \"<BackTab>\", KEY_BTAB },\n#endif\n#ifdef KEY_NEXT\n  { \"<Next>\",    KEY_NEXT },\n#endif  \n#ifdef NCURSES_VERSION\n  /* extensions supported by ncurses.  values are filled in during initialization */\n\n  /* CTRL+key */\n  { \"<C-Up>\",\t-1 },\n  { \"<C-Down>\",\t-1 },\n  { \"<C-Left>\", -1 },\n  { \"<C-Right>\",\t-1 },\n  { \"<C-Home>\",\t-1 },\n  { \"<C-End>\",\t-1 },\n  { \"<C-Next>\",\t-1 },\n  { \"<C-Prev>\",\t-1 },\n\n  /* SHIFT+key */\n  { \"<S-Up>\",\t-1 },\n  { \"<S-Down>\",\t-1 },\n  { \"<S-Left>\", -1 },\n  { \"<S-Right>\",\t-1 },\n  { \"<S-Home>\",\t-1 },\n  { \"<S-End>\",\t-1 },\n  { \"<S-Next>\",\t-1 },\n  { \"<S-Prev>\",\t-1 },\n\n  /* ALT+key */\n  { \"<A-Up>\",\t-1 },\n  { \"<A-Down>\",\t-1 },\n  { \"<A-Left>\", -1 },\n  { \"<A-Right>\",\t-1 },\n  { \"<A-Home>\",\t-1 },\n  { \"<A-End>\",\t-1 },\n  { \"<A-Next>\",\t-1 },\n  { \"<A-Prev>\",\t-1 },\n#endif /* NCURSES_VERSION */\n  { NULL,\t0 }\n};\n\n/* contains the last key the user pressed */\nint LastKey;\n\nstruct keymap_t *Keymaps[MENU_MAX];\n\nstatic struct keymap_t *allocKeys (int len, keycode_t *keys)\n{\n  struct keymap_t *p;\n\n  p = safe_calloc (1, sizeof (struct keymap_t));\n  p->len = len;\n  p->keys = safe_malloc (len * sizeof (keycode_t));\n  memcpy (p->keys, keys, len * sizeof (keycode_t));\n  return (p);\n}\n\nstatic int parse_fkey(char *s)\n{\n  char *t;\n  int n = 0;\n\n  if(s[0] != '<' || ascii_tolower(s[1]) != 'f')\n    return -1;\n\n  for(t = s + 2; *t && isdigit((unsigned char) *t); t++)\n  {\n    n *= 10;\n    n += *t - '0';\n  }\n\n  if(*t != '>')\n    return -1;\n  else\n    return n;\n}\n\n/*\n * This function parses the string <NNN> and uses the octal value as the key\n * to bind.\n */\nstatic int parse_keycode (const char *s)\n{\n  char *endChar;\n  long int result = strtol(s+1, &endChar, 8);\n  /* allow trailing whitespace, eg.  < 1001 > */\n  while (ISSPACE(*endChar))\n    ++endChar;\n  /* negative keycodes don't make sense, also detect overflow */\n  if (*endChar != '>' || result < 0 || result == LONG_MAX) {\n    return -1;\n  }\n\n  return result;\n}\n\nstatic int parsekeys (const char *str, keycode_t *d, int max)\n{\n  int n, len = max;\n  char buff[SHORT_STRING];\n  char c;\n  char *s, *t;\n\n  strfcpy(buff, str, sizeof(buff));\n  s = buff;\n  \n  while (*s && len)\n  {\n    *d = '\\0';\n    if(*s == '<' && (t = strchr(s, '>')))\n    {\n      t++; c = *t; *t = '\\0';\n      \n      if ((n = mutt_getvaluebyname (s, KeyNames)) != -1)\n      {\n\ts = t;\n\t*d = n;\n      }\n      else if ((n = parse_fkey(s)) > 0)\n      {\n\ts = t;\n\t*d = KEY_F (n);\n      }\n      else if ((n = parse_keycode(s)) > 0)\n      {\n\ts = t;\n\t*d = n;\n      }\n      \n      *t = c;\n    }\n\n    if(!*d)\n    {\n      *d = (unsigned char)*s;\n      s++;\n    }\n    d++;\n    len--;\n  }\n\n  return (max - len);\n}\n\n/* insert a key sequence into the specified map.  the map is sorted by ASCII\n * value (lowest to highest)\n */\nvoid km_bind (char *s, int menu, int op, char *macro, char *descr)\n{\n  struct keymap_t *map, *tmp, *last = NULL, *next;\n  keycode_t buf[MAX_SEQ];\n  int len, pos = 0, lastpos = 0;\n\n  len = parsekeys (s, buf, MAX_SEQ);\n\n  map = allocKeys (len, buf);\n  map->op = op;\n  map->macro = safe_strdup (macro);\n  map->descr = safe_strdup (descr);\n\n  tmp = Keymaps[menu];\n\n  while (tmp)\n  {\n    if (pos >= len || pos >= tmp->len)\n    {\n      /* map and tmp match, but have different lengths, so overwrite */\n      do\n      {\n\tlen = tmp->eq;\n\tnext = tmp->next;\n\tFREE (&tmp->macro);\n\tFREE (&tmp->keys);\n\tFREE (&tmp->descr);\n\tFREE (&tmp);\n\ttmp = next;\n      }\n      while (tmp && len >= pos);\n      map->eq = len;\n      break;\n    }\n    else if (buf[pos] == tmp->keys[pos])\n      pos++;\n    else if (buf[pos] < tmp->keys[pos])\n    {\n      /* found location to insert between last and tmp */\n      map->eq = pos;\n      break;\n    }\n    else /* buf[pos] > tmp->keys[pos] */\n    {\n      last = tmp;\n      lastpos = pos;\n      if (pos > tmp->eq)\n\tpos = tmp->eq;\n      tmp = tmp->next;\n    }\n  }\n\n  map->next = tmp;\n  if (last)\n  {\n    last->next = map;\n    last->eq = lastpos;\n  }\n  else\n    Keymaps[menu] = map;\n}\n\nvoid km_bindkey (char *s, int menu, int op)\n{\n  km_bind (s, menu, op, NULL, NULL);\n}\n\nstatic int get_op (const struct binding_t *bindings, const char *start, size_t len)\n{\n  int i;\n\n  for (i = 0; bindings[i].name; i++)\n  {\n    if (!ascii_strncasecmp (start, bindings[i].name, len) &&   \n\tmutt_strlen (bindings[i].name) == len)\n      return bindings[i].op;\n  }\n\n  return OP_NULL;\n}\n\nstatic char *get_func (const struct binding_t *bindings, int op)\n{\n  int i;\n\n  for (i = 0; bindings[i].name; i++)\n  {\n    if (bindings[i].op == op)\n      return bindings[i].name;\n  }\n\n  return NULL;\n}\n\n/* Parses s for <function> syntax and adds the whole sequence to\n * the macro buffer.\n *\n * This should be used for macros, push, and exec commands only.\n */\nstatic void tokenize_push_macro_string (char *s)\n{\n  char *pp, *p = s + mutt_strlen (s) - 1;\n  size_t l;\n  int i, op = OP_NULL;\n\n  while (p >= s)\n  {\n    /* if we see something like \"<PageUp>\", look to see if it is a real\n       function name and return the corresponding value */\n    if (*p == '>')\n    {\n      for (pp = p - 1; pp >= s && *pp != '<'; pp--)\n\t;\n      if (pp >= s)\n      {\n\tif ((i = parse_fkey (pp)) > 0)\n\t{\n\t  mutt_push_macro_event (KEY_F (i), 0);\n\t  p = pp - 1;\n\t  continue;\n\t}\n\n\tl = p - pp + 1;\n\tfor (i = 0; KeyNames[i].name; i++)\n\t{\n\t  if (!ascii_strncasecmp (pp, KeyNames[i].name, l))\n\t    break;\n\t}\n\tif (KeyNames[i].name)\n\t{\n\t  /* found a match */\n\t  mutt_push_macro_event (KeyNames[i].value, 0);\n\t  p = pp - 1;\n\t  continue;\n\t}\n\n\t/* See if it is a valid command\n\t * skip the '<' and the '>' when comparing */\n\tfor (i = 0; Menus[i].name; i++)\n\t{\n\t  const struct binding_t *binding = km_get_table (Menus[i].value);\n\t  if (binding)\n\t  {\n\t    op = get_op (binding, pp + 1, l - 2);\n\t    if (op != OP_NULL)\n\t      break;\n\t  }\n\t}\n\n\tif (op != OP_NULL)\n\t{\n\t  mutt_push_macro_event (0, op);\n\t  p = pp - 1;\n\t  continue;\n\t}\n      }\n    }\n    mutt_push_macro_event ((unsigned char)*p--, 0);\t/* independent 8 bits chars */\n  }\n}\n\nstatic int retry_generic (int menu, keycode_t *keys, int keyslen, int lastkey)\n{\n  if (menu != MENU_EDITOR && menu != MENU_GENERIC && menu != MENU_PAGER)\n  {\n    if (lastkey)\n      mutt_unget_event (lastkey, 0);\n    for (; keyslen; keyslen--)\n      mutt_unget_event (keys[keyslen - 1], 0);\n    return (km_dokey (MENU_GENERIC));\n  }\n  if (menu != MENU_EDITOR)\n  {\n    /* probably a good idea to flush input here so we can abort macros */\n    mutt_flushinp ();\n  }\n  return OP_NULL;\n}\n\n/* return values:\n *\t>0\t\tfunction to execute\n *\tOP_NULL\t\tno function bound to key sequence\n *\t-1\t\terror occurred while reading input\n */\nint km_dokey (int menu)\n{\n  event_t tmp;\n  struct keymap_t *map = Keymaps[menu];\n  int pos = 0;\n  int n = 0;\n  int i;\n\n  if (!map)\n    return (retry_generic (menu, NULL, 0, 0));\n\n  FOREVER\n  {\n    i = Timeout > 0 ? Timeout : 60;\n#ifdef USE_IMAP\n    /* keepalive may need to run more frequently than Timeout allows */\n    if (ImapKeepalive)\n    {\n      if (ImapKeepalive >= i)\n      \timap_keepalive ();\n      else\n\twhile (ImapKeepalive && ImapKeepalive < i)\n\t{\n\t  timeout (ImapKeepalive * 1000);\n\t  tmp = mutt_getch ();\n\t  timeout (-1);\n\t  /* If a timeout was not received, or the window was resized, exit the\n\t   * loop now.  Otherwise, continue to loop until reaching a total of\n\t   * $timeout seconds.\n\t   */\n\t  if (tmp.ch != -2 || SigWinch)\n\t    goto gotkey;\n\t  i -= ImapKeepalive;\n\t  imap_keepalive ();\n\t}\n    }\n#endif\n\n    /* update sidebar stats */\n    mutt_buffy_check(0);\n\n    timeout (i * 1000);\n    tmp = mutt_getch();\n    timeout (-1);\n\n    /* hide timeouts from line editor */\n    if (menu == MENU_EDITOR && tmp.ch == -2)\n      continue;\n\n#ifdef USE_IMAP\n  gotkey:\n#endif\n    LastKey = tmp.ch;\n    if (LastKey < 0)\n      return -1;\n\n    /* do we have an op already? */\n    if (tmp.op)\n    {\n      char *func = NULL;\n      const struct binding_t *bindings;\n\n      /* is this a valid op for this menu? */\n      if ((bindings = km_get_table (menu)) &&\n\t  (func = get_func (bindings, tmp.op)))\n\treturn tmp.op;\n\n      if (menu == MENU_EDITOR && get_func (OpEditor, tmp.op))\n\treturn tmp.op;\n\n      if (menu != MENU_EDITOR && menu != MENU_PAGER)\n      {\n\t/* check generic menu */\n\tbindings = OpGeneric; \n\tif ((func = get_func (bindings, tmp.op)))\n\t  return tmp.op;\n      }\n\n      /* Sigh. Valid function but not in this context.\n       * Find the literal string and push it back */\n      for (i = 0; Menus[i].name; i++)\n      {\n\tbindings = km_get_table (Menus[i].value);\n\tif (bindings)\n\t{\n\t  func = get_func (bindings, tmp.op);\n\t  if (func)\n\t  {\n\t    mutt_unget_event ('>', 0);\n\t    mutt_unget_string (func);\n\t    mutt_unget_event ('<', 0);\n\t    break;\n\t  }\n\t}\n      }\n      /* continue to chew */\n      if (func)\n\tcontinue;\n    }\n\n    /* Nope. Business as usual */\n    while (LastKey > map->keys[pos])\n    {\n      if (pos > map->eq || !map->next)\n\treturn (retry_generic (menu, map->keys, pos, LastKey));\n      map = map->next;\n    }\n\n    if (LastKey != map->keys[pos])\n      return (retry_generic (menu, map->keys, pos, LastKey));\n\n    if (++pos == map->len)\n    {\n\n      if (map->op != OP_MACRO)\n\treturn map->op;\n\n      if (option (OPTIGNOREMACROEVENTS))\n      {\n\tmutt_error _(\"Macros are currently disabled.\");\n\treturn -1;\n      }\n\n      if (n++ == 10)\n      {\n\tmutt_flushinp ();\n\tmutt_error _(\"Macro loop detected.\");\n\treturn -1;\n      }\n\n      tokenize_push_macro_string (map->macro);\n      map = Keymaps[menu];\n      pos = 0;\n    }\n  }\n\n  /* not reached */\n}\n\nstatic void create_bindings (const struct binding_t *map, int menu)\n{\n  int i;\n\n  for (i = 0 ; map[i].name ; i++)\n    if (map[i].seq)\n      km_bindkey (map[i].seq, menu, map[i].op);\n}\n\nstatic const char *km_keyname (int c)\n{\n  static char buf[10];\n  const char *p;\n\n  if ((p = mutt_getnamebyvalue (c, KeyNames)))\n    return p;\n\n  if (c < 256 && c > -128 && iscntrl ((unsigned char) c))\n  {\n    if (c < 0)\n      c += 256;\n\n    if (c < 128)\n    {\n      buf[0] = '^';\n      buf[1] = (c + '@') & 0x7f;\n      buf[2] = 0;\n    }\n    else\n      snprintf (buf, sizeof (buf), \"\\\\%d%d%d\", c >> 6, (c >> 3) & 7, c & 7);\n  }\n  else if (c >= KEY_F0 && c < KEY_F(256)) /* this maximum is just a guess */\n    sprintf (buf, \"<F%d>\", c - KEY_F0);\n  else if (IsPrint (c))\n    snprintf (buf, sizeof (buf), \"%c\", (unsigned char) c);\n  else\n    snprintf (buf, sizeof (buf), \"\\\\x%hx\", (unsigned short) c);\n  return (buf);\n}\n\nint km_expand_key (char *s, size_t len, struct keymap_t *map)\n{\n  size_t l;\n  int p = 0;\n\n  if (!map)\n    return (0);\n\n  FOREVER\n  {\n    strfcpy (s, km_keyname (map->keys[p]), len);\n    len -= (l = mutt_strlen (s));\n\n    if (++p >= map->len || !len)\n      return (1);\n\n    s += l;\n  }\n\n  /* not reached */\n}\n\nstruct keymap_t *km_find_func (int menu, int func)\n{\n  struct keymap_t *map = Keymaps[menu];\n\n  for (; map; map = map->next)\n    if (map->op == func)\n      break;\n  return (map);\n}\n\n#ifdef NCURSES_VERSION\nstruct extkey {\n  const char *name;\n  const char *sym;\n};\n\nstatic const struct extkey ExtKeys[] = {\n  { \"<c-up>\", \"kUP5\" },\n  { \"<s-up>\", \"kUP\" },\n  { \"<a-up>\", \"kUP3\" },\n\n  { \"<s-down>\", \"kDN\" },\n  { \"<a-down>\", \"kDN3\" },\n  { \"<c-down>\", \"kDN5\" },\n\n  { \"<c-right>\", \"kRIT5\" },\n  { \"<s-right>\", \"kRIT\" },\n  { \"<a-right>\", \"kRIT3\" },\n\n  { \"<s-left>\", \"kLFT\" },\n  { \"<a-left>\", \"kLFT3\" },\n  { \"<c-left>\", \"kLFT5\" },\n\n  { \"<s-home>\", \"kHOM\" },\n  { \"<a-home>\", \"kHOM3\" },\n  { \"<c-home>\", \"kHOM5\" },\n\n  { \"<s-end>\", \"kEND\" },\n  { \"<a-end>\", \"kEND3\" },\n  { \"<c-end>\", \"kEND5\" },\n\n  { \"<s-next>\", \"kNXT\" },\n  { \"<a-next>\", \"kNXT3\" },\n  { \"<c-next>\", \"kNXT5\" },\n\n  { \"<s-prev>\", \"kPRV\" },\n  { \"<a-prev>\", \"kPRV3\" },\n  { \"<c-prev>\", \"kPRV5\" },\n\n  { 0, 0 }\n};\n\n/* Look up Mutt's name for a key and find the ncurses extended name for it */\nstatic const char *find_ext_name(const char *key)\n{\n  int j;\n\n  for (j = 0; ExtKeys[j].name; ++j)\n  {\n    if (strcasecmp(key, ExtKeys[j].name) == 0)\n      return ExtKeys[j].sym;\n  }\n  return 0;\n}\n#endif /* NCURSES_VERSION */\n\n/* Determine the keycodes for ncurses extended keys and fill in the KeyNames array.\n *\n * This function must be called *after* initscr(), or tigetstr() returns -1.  This\n * creates a bit of a chicken-and-egg problem because km_init() is called prior to\n * start_curses().  This means that the default keybindings can't include any of the\n * extended keys because they won't be defined until later.\n */\nvoid init_extended_keys(void)\n{\n#ifdef NCURSES_VERSION\n  int j;\n\n  use_extended_names(TRUE);\n\n  for (j = 0; KeyNames[j].name; ++j)\n  {\n    if (KeyNames[j].value == -1)\n    {\n      const char *keyname = find_ext_name(KeyNames[j].name);\n\n      if (keyname)\n      {\n        char *s = tigetstr((char *)keyname);\n\tif (s && (long)(s) != -1)\n\t{\n\t  int code = key_defined(s);\n\t  if (code > 0)\n\t    KeyNames[j].value = code;\n\t}\n      }\n    }\n  }\n#endif\n}\n\nvoid km_init (void)\n{\n  memset (Keymaps, 0, sizeof (struct keymap_t *) * MENU_MAX);\n\n  create_bindings (OpAttach, MENU_ATTACH);\n  create_bindings (OpBrowser, MENU_FOLDER);\n  create_bindings (OpCompose, MENU_COMPOSE);\n  create_bindings (OpMain, MENU_MAIN);\n  create_bindings (OpPager, MENU_PAGER);\n  create_bindings (OpPost, MENU_POST);\n  create_bindings (OpQuery, MENU_QUERY);\n  create_bindings (OpAlias, MENU_ALIAS);\n\n\n  if ((WithCrypto & APPLICATION_PGP))\n    create_bindings (OpPgp, MENU_PGP);\n\n  if ((WithCrypto & APPLICATION_SMIME))\n    create_bindings (OpSmime, MENU_SMIME);\n\n#ifdef CRYPT_BACKEND_GPGME\n  create_bindings (OpPgp, MENU_KEY_SELECT_PGP);\n  create_bindings (OpSmime, MENU_KEY_SELECT_SMIME);\n#endif\n\n#ifdef MIXMASTER\n  create_bindings (OpMix, MENU_MIX);\n  \n  km_bindkey (\"<space>\", MENU_MIX, OP_GENERIC_SELECT_ENTRY);\n  km_bindkey (\"h\", MENU_MIX, OP_MIX_CHAIN_PREV);\n  km_bindkey (\"l\", MENU_MIX, OP_MIX_CHAIN_NEXT);\n#endif\n  \n  /* bindings for the line editor */\n  create_bindings (OpEditor, MENU_EDITOR);\n  \n  km_bindkey (\"<up>\", MENU_EDITOR, OP_EDITOR_HISTORY_UP);\n  km_bindkey (\"<down>\", MENU_EDITOR, OP_EDITOR_HISTORY_DOWN);\n  km_bindkey (\"<left>\", MENU_EDITOR, OP_EDITOR_BACKWARD_CHAR);\n  km_bindkey (\"<right>\", MENU_EDITOR, OP_EDITOR_FORWARD_CHAR);\n  km_bindkey (\"<home>\", MENU_EDITOR, OP_EDITOR_BOL);\n  km_bindkey (\"<end>\", MENU_EDITOR, OP_EDITOR_EOL);\n  km_bindkey (\"<backspace>\", MENU_EDITOR, OP_EDITOR_BACKSPACE);\n  km_bindkey (\"<delete>\", MENU_EDITOR, OP_EDITOR_BACKSPACE);\n  km_bindkey (\"\\177\", MENU_EDITOR, OP_EDITOR_BACKSPACE);\n  \n  /* generic menu keymap */\n  create_bindings (OpGeneric, MENU_GENERIC);\n  \n  km_bindkey (\"<home>\", MENU_GENERIC, OP_FIRST_ENTRY);\n  km_bindkey (\"<end>\", MENU_GENERIC, OP_LAST_ENTRY);\n  km_bindkey (\"<pagedown>\", MENU_GENERIC, OP_NEXT_PAGE);\n  km_bindkey (\"<pageup>\", MENU_GENERIC, OP_PREV_PAGE);\n  km_bindkey (\"<right>\", MENU_GENERIC, OP_NEXT_PAGE);\n  km_bindkey (\"<left>\", MENU_GENERIC, OP_PREV_PAGE);\n  km_bindkey (\"<up>\", MENU_GENERIC, OP_PREV_ENTRY);\n  km_bindkey (\"<down>\", MENU_GENERIC, OP_NEXT_ENTRY);\n  km_bindkey (\"1\", MENU_GENERIC, OP_JUMP);\n  km_bindkey (\"2\", MENU_GENERIC, OP_JUMP);\n  km_bindkey (\"3\", MENU_GENERIC, OP_JUMP);\n  km_bindkey (\"4\", MENU_GENERIC, OP_JUMP);\n  km_bindkey (\"5\", MENU_GENERIC, OP_JUMP);\n  km_bindkey (\"6\", MENU_GENERIC, OP_JUMP);\n  km_bindkey (\"7\", MENU_GENERIC, OP_JUMP);\n  km_bindkey (\"8\", MENU_GENERIC, OP_JUMP);\n  km_bindkey (\"9\", MENU_GENERIC, OP_JUMP);\n\n  km_bindkey (\"<enter>\", MENU_GENERIC, OP_GENERIC_SELECT_ENTRY);\n\n  /* Miscellaneous extra bindings */\n  \n  km_bindkey (\" \", MENU_MAIN, OP_DISPLAY_MESSAGE);\n  km_bindkey (\"<up>\", MENU_MAIN, OP_MAIN_PREV_UNDELETED);\n  km_bindkey (\"<down>\", MENU_MAIN, OP_MAIN_NEXT_UNDELETED);\n  km_bindkey (\"J\", MENU_MAIN, OP_NEXT_ENTRY);\n  km_bindkey (\"K\", MENU_MAIN, OP_PREV_ENTRY);\n  km_bindkey (\"x\", MENU_MAIN, OP_EXIT);\n\n  km_bindkey (\"<enter>\", MENU_MAIN, OP_DISPLAY_MESSAGE);\n\n  km_bindkey (\"x\", MENU_PAGER, OP_EXIT);\n  km_bindkey (\"i\", MENU_PAGER, OP_EXIT);\n  km_bindkey (\"<backspace>\", MENU_PAGER, OP_PREV_LINE);\n  km_bindkey (\"<pagedown>\", MENU_PAGER, OP_NEXT_PAGE);\n  km_bindkey (\"<pageup>\", MENU_PAGER, OP_PREV_PAGE);\n  km_bindkey (\"<up>\", MENU_PAGER, OP_MAIN_PREV_UNDELETED);\n  km_bindkey (\"<right>\", MENU_PAGER, OP_MAIN_NEXT_UNDELETED);\n  km_bindkey (\"<down>\", MENU_PAGER, OP_MAIN_NEXT_UNDELETED);\n  km_bindkey (\"<left>\", MENU_PAGER, OP_MAIN_PREV_UNDELETED);\n  km_bindkey (\"<home>\", MENU_PAGER, OP_PAGER_TOP);\n  km_bindkey (\"<end>\", MENU_PAGER, OP_PAGER_BOTTOM);\n  km_bindkey (\"1\", MENU_PAGER, OP_JUMP);\n  km_bindkey (\"2\", MENU_PAGER, OP_JUMP);\n  km_bindkey (\"3\", MENU_PAGER, OP_JUMP);\n  km_bindkey (\"4\", MENU_PAGER, OP_JUMP);\n  km_bindkey (\"5\", MENU_PAGER, OP_JUMP);\n  km_bindkey (\"6\", MENU_PAGER, OP_JUMP);\n  km_bindkey (\"7\", MENU_PAGER, OP_JUMP);\n  km_bindkey (\"8\", MENU_PAGER, OP_JUMP);\n  km_bindkey (\"9\", MENU_PAGER, OP_JUMP);\n\n  km_bindkey (\"<enter>\", MENU_PAGER, OP_NEXT_LINE);\n  \n  km_bindkey (\"<return>\", MENU_ALIAS, OP_GENERIC_SELECT_ENTRY);\n  km_bindkey (\"<enter>\",  MENU_ALIAS, OP_GENERIC_SELECT_ENTRY);\n  km_bindkey (\"<space>\", MENU_ALIAS, OP_TAG);\n\n  km_bindkey (\"<enter>\", MENU_ATTACH, OP_VIEW_ATTACH);\n  km_bindkey (\"<enter>\", MENU_COMPOSE, OP_VIEW_ATTACH);\n\n  /* edit-to (default \"t\") hides generic tag-entry in Compose menu\n     This will bind tag-entry to  \"T\" in the Compose menu */\n  km_bindkey (\"T\", MENU_COMPOSE, OP_TAG);\n}\n\nvoid km_error_key (int menu)\n{\n  char buf[SHORT_STRING];\n  struct keymap_t *key;\n\n  if(!(key = km_find_func(menu, OP_HELP)))\n    key = km_find_func(MENU_GENERIC, OP_HELP);\n  \n  if(!(km_expand_key(buf, sizeof(buf), key)))\n  {\n    mutt_error _(\"Key is not bound.\");\n    return;\n  }\n\n  /* make sure the key is really the help key in this menu */\n  mutt_unget_string (buf);\n  if (km_dokey (menu) != OP_HELP)\n  {\n    mutt_error _(\"Key is not bound.\");\n    return;\n  }\n\n  mutt_error (_(\"Key is not bound.  Press '%s' for help.\"), buf);\n  return;\n}\n\nint mutt_parse_push (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  int r = 0;\n\n  mutt_extract_token (buf, s, M_TOKEN_CONDENSE);\n  if (MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"push: too many arguments\"), err->dsize);\n    r = -1;\n  }\n  else\n    tokenize_push_macro_string (buf->data);\n  return (r);\n}\n\n/* expects to see: <menu-string>,<menu-string>,... <key-string> */\nstatic char *parse_keymap (int *menu, BUFFER *s, int maxmenus, int *nummenus, BUFFER *err)\n{\n  BUFFER buf;\n  int i=0;\n  char *p, *q;\n\n  mutt_buffer_init (&buf);\n\n  /* menu name */\n  mutt_extract_token (&buf, s, 0);\n  p = buf.data;\n  if (MoreArgs (s))\n  {\n    while (i < maxmenus)\n    {\n      q = strchr(p,',');\n      if (q)\n        *q = '\\0';\n\n      if ((menu[i] = mutt_check_menu (p)) == -1)\n      {\n         snprintf (err->data, err->dsize, _(\"%s: no such menu\"), p);\n         goto error;\n      }\n      ++i;\n      if (q)\n        p = q+1;\n      else\n        break;\n    }\n    *nummenus=i;\n    /* key sequence */\n    mutt_extract_token (&buf, s, 0);\n\n    if (!*buf.data)\n    {\n      strfcpy (err->data, _(\"null key sequence\"), err->dsize);\n    }\n    else if (MoreArgs (s))\n      return (buf.data);\n  }\n  else\n  {\n    strfcpy (err->data, _(\"too few arguments\"), err->dsize);\n  }\nerror:\n  FREE (&buf.data);\n  return (NULL);\n}\n\nstatic int\ntry_bind (char *key, int menu, char *func, const struct binding_t *bindings)\n{\n  int i;\n  \n  for (i = 0; bindings[i].name; i++)\n    if (mutt_strcmp (func, bindings[i].name) == 0)\n    {\n      km_bindkey (key, menu, bindings[i].op);\n      return (0);\n    }\n  return (-1);\n}\n\nconst struct binding_t *km_get_table (int menu)\n{\n  switch (menu)\n  {\n    case MENU_MAIN:\n      return OpMain;\n    case MENU_GENERIC:\n      return OpGeneric;\n    case MENU_COMPOSE:\n      return OpCompose;\n    case MENU_PAGER:\n      return OpPager;\n    case MENU_POST:\n      return OpPost;\n    case MENU_FOLDER:\n      return OpBrowser;\n    case MENU_ALIAS:\n      return OpAlias;\n    case MENU_ATTACH:\n      return OpAttach;\n    case MENU_EDITOR:\n      return OpEditor;\n    case MENU_QUERY:\n      return OpQuery;\n\n    case MENU_PGP:\n      return (WithCrypto & APPLICATION_PGP)? OpPgp:NULL;\n\n#ifdef CRYPT_BACKEND_GPGME\n    case MENU_KEY_SELECT_PGP:\n      return OpPgp;\n    case MENU_KEY_SELECT_SMIME:\n      return OpSmime;\n#endif\n\n#ifdef MIXMASTER\n    case MENU_MIX:\n      return OpMix;\n#endif\n\n  }\n  return NULL;\n}\n\n/* bind menu-name '<key_sequence>' function-name */\nint mutt_parse_bind (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  const struct binding_t *bindings = NULL;\n  char *key;\n  int menu[sizeof(Menus)/sizeof(struct mapping_t)-1], r = 0, nummenus, i;\n\n  if ((key = parse_keymap (menu, s, sizeof (menu)/sizeof (menu[0]),\n\t\t\t   &nummenus, err)) == NULL)\n    return (-1);\n\n  /* function to execute */\n  mutt_extract_token (buf, s, 0);\n  if (MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"bind: too many arguments\"), err->dsize);\n    r = -1;\n  }\n  else if (ascii_strcasecmp (\"noop\", buf->data) == 0)\n  {\n    for (i = 0; i < nummenus; ++i)\n    {\n      km_bindkey (key, menu[i], OP_NULL); /* the `unbind' command */\n    }\n  }\n  else\n  {\n    for (i = 0; i < nummenus; ++i)\n    {\n      /* First check the \"generic\" list of commands */\n      if (menu[i] == MENU_PAGER || menu[i] == MENU_EDITOR ||\n      menu[i] == MENU_GENERIC ||\n\t  try_bind (key, menu[i], buf->data, OpGeneric) != 0)\n      {\n        /* Now check the menu-specific list of commands (if they exist) */\n        bindings = km_get_table (menu[i]);\n        if (bindings && try_bind (key, menu[i], buf->data, bindings) != 0)\n        {\n          snprintf (err->data, err->dsize, _(\"%s: no such function in map\"), buf->data);\n          r = -1;\n        }\n      }\n    }\n  }\n  FREE (&key);\n  return (r);\n}\n\n/* macro <menu> <key> <macro> <description> */\nint mutt_parse_macro (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  int menu[sizeof(Menus)/sizeof(struct mapping_t)-1], r = -1, nummenus, i;\n  char *seq = NULL;\n  char *key;\n\n  if ((key = parse_keymap (menu, s, sizeof (menu) / sizeof (menu[0]), &nummenus, err)) == NULL)\n    return (-1);\n\n  mutt_extract_token (buf, s, M_TOKEN_CONDENSE);\n  /* make sure the macro sequence is not an empty string */\n  if (!*buf->data)\n  {\n    strfcpy (err->data, _(\"macro: empty key sequence\"), err->dsize);\n  }\n  else\n  {\n    if (MoreArgs (s))\n    {\n      seq = safe_strdup (buf->data);\n      mutt_extract_token (buf, s, M_TOKEN_CONDENSE);\n\n      if (MoreArgs (s))\n      {\n\tstrfcpy (err->data, _(\"macro: too many arguments\"), err->dsize);\n      }\n      else\n      {\n        for (i = 0; i < nummenus; ++i)\n        {\n          km_bind (key, menu[i], OP_MACRO, seq, buf->data);\n          r = 0;\n        }\n      }\n\n      FREE (&seq);\n    }\n    else\n    {\n      for (i = 0; i < nummenus; ++i)\n      {\n        km_bind (key, menu[i], OP_MACRO, buf->data, NULL);\n        r = 0;\n      }\n    }\n  }\n  FREE (&key);\n  return (r);\n}\n\n/* exec function-name */\nint mutt_parse_exec (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  int ops[128]; \n  int nops = 0;\n  const struct binding_t *bindings = NULL;\n  char *function;\n\n  if (!MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"exec: no arguments\"), err->dsize);\n    return (-1);\n  }\n\n  do\n  {\n    mutt_extract_token (buf, s, 0);\n    function = buf->data;\n\n    if ((bindings = km_get_table (CurrentMenu)) == NULL \n\t&& CurrentMenu != MENU_PAGER)\n      bindings = OpGeneric;\n\n    ops[nops] = get_op (bindings, function, mutt_strlen(function));\n    if (ops[nops] == OP_NULL && CurrentMenu != MENU_PAGER)\n      ops[nops] = get_op (OpGeneric, function, mutt_strlen(function));\n\n    if (ops[nops] == OP_NULL)\n    {\n      mutt_flushinp ();\n      mutt_error (_(\"%s: no such function\"), function);\n      return (-1);\n    }\n    nops++;\n  }\n  while(MoreArgs(s) && nops < sizeof(ops)/sizeof(ops[0]));\n\n  while(nops)\n    mutt_push_macro_event (0, ops[--nops]);\n\n  return 0;\n}\n\n/*\n * prompts the user to enter a keystroke, and displays the octal value back\n * to the user.\n */\nvoid mutt_what_key (void)\n{\n  int ch;\n\n  mvprintw(LINES-1,0, _(\"Enter keys (^G to abort): \"));\n  do {\n    ch = getch();\n    if (ch != ERR && ch != ctrl ('G'))\n    {\n      mutt_message(_(\"Char = %s, Octal = %o, Decimal = %d\"),\n\t       km_keyname(ch), ch, ch);\n    }\n  }\n  while (ch != ERR && ch != ctrl ('G'));\n\n  mutt_flushinp();\n  mutt_clear_error();\n}\n"
  },
  {
    "path": "keymap.h",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2010 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef KEYMAP_H\n#define KEYMAP_H\n\n#include \"mapping.h\"\n\n/* maximal length of a key binding sequence used for buffer in km_bindkey */\n#define MAX_SEQ 8\n\n/* type for key storage, the rest of mutt works fine with int type */\ntypedef short keycode_t;\n\nvoid km_bind (char *, int, int, char *, char *);\nvoid km_bindkey (char *, int, int);\nint km_dokey (int);\n\nvoid init_extended_keys(void);\n\n/* entry in the keymap tree */\nstruct keymap_t\n{\n  char *macro;           /* macro expansion (op == OP_MACRO) */\n  char *descr;           /* description of a macro for the help menu */\n  struct keymap_t *next; /* next key in map */\n  short op;              /* operation to perform */\n  short eq;              /* number of leading keys equal to next entry */\n  short len;             /* length of key sequence (unit: sizeof (keycode_t)) */\n  keycode_t *keys;       /* key sequence */\n};\n\nint km_expand_key (char *, size_t, struct keymap_t *);\nstruct keymap_t *km_find_func (int, int);\nvoid km_init (void);\nvoid km_error_key (int);\nvoid mutt_what_key (void);\n\nenum\n{\n  MENU_ALIAS,\n  MENU_ATTACH,\n  MENU_COMPOSE,\n  MENU_EDITOR,\n  MENU_FOLDER,\n  MENU_GENERIC,\n  MENU_MAIN,\n  MENU_PAGER,\n  MENU_POST,\n  MENU_QUERY,\n\n  \n  MENU_PGP,\n  MENU_SMIME,\n\n#ifdef CRYPT_BACKEND_GPGME\n  MENU_KEY_SELECT_PGP,\n  MENU_KEY_SELECT_SMIME,\n#endif\n  \n#ifdef MIXMASTER\n  MENU_MIX,\n#endif\n\n\n\n  MENU_MAX\n};\n\n/* the keymap trees (one for each menu) */\nextern struct keymap_t *Keymaps[];\n\n/* dokey() records the last real key pressed  */\nextern int LastKey;\n\nextern const struct mapping_t Menus[];\n\nstruct binding_t\n{\n  char *name;\t/* name of the function */\n  int op;\t/* function id number */\n  char *seq;\t/* default key binding */\n};\n\nconst struct binding_t *km_get_table (int menu);\n\nextern const struct binding_t OpGeneric[];\nextern const struct binding_t OpPost[];\nextern const struct binding_t OpMain[];\nextern const struct binding_t OpAttach[];\nextern const struct binding_t OpPager[];\nextern const struct binding_t OpCompose[];\nextern const struct binding_t OpBrowser[];\nextern const struct binding_t OpEditor[];\nextern const struct binding_t OpQuery[];\nextern const struct binding_t OpAlias[];\n\nextern const struct binding_t OpPgp[];\n\nextern const struct binding_t OpSmime[];\n\n#ifdef MIXMASTER\nextern const struct binding_t OpMix[];\n#endif\n\n#include \"keymap_defs.h\"\n\n#endif /* KEYMAP_H */\n"
  },
  {
    "path": "lib.c",
    "content": "/*\n * Copyright (C) 1996-2000,2007,2010 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2004,2006-2007 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */ \n\n/*\n * This file used to contain some more functions, namely those\n * which are now in muttlib.c.  They have been removed, so we have\n * some of our \"standard\" functions in external programs, too.\n */\n\n#define _LIB_C 1\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <string.h>\n#include <ctype.h>\n#include <unistd.h>\n#include <stdlib.h>\n#include <sys/wait.h>\n#include <errno.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <pwd.h>\n#include <sys/types.h>\n#include <dirent.h>\n\n#ifdef HAVE_SYSEXITS_H\n#include <sysexits.h>\n#else /* Make sure EX_OK is defined <philiph@pobox.com> */\n#define EX_OK 0\n#endif\n\n#include \"lib.h\"\n\n\nstatic const struct sysexits\n{\n  int v;\n  const char *str;\n} \nsysexits_h[] = \n{\n#ifdef EX_USAGE\n  { 0xff & EX_USAGE, \"Bad usage.\" },\n#endif\n#ifdef EX_DATAERR\n  { 0xff & EX_DATAERR, \"Data format error.\" },\n#endif\n#ifdef EX_NOINPUT\n  { 0xff & EX_NOINPUT, \"Cannot open input.\" },\n#endif\n#ifdef EX_NOUSER\n  { 0xff & EX_NOUSER, \"User unknown.\" },\n#endif\n#ifdef EX_NOHOST\n  { 0xff & EX_NOHOST, \"Host unknown.\" },\n#endif\n#ifdef EX_UNAVAILABLE\n  { 0xff & EX_UNAVAILABLE, \"Service unavailable.\" },\n#endif\n#ifdef EX_SOFTWARE\n  { 0xff & EX_SOFTWARE, \"Internal error.\" },\n#endif\n#ifdef EX_OSERR\n  { 0xff & EX_OSERR, \"Operating system error.\" },\n#endif\n#ifdef EX_OSFILE\n  { 0xff & EX_OSFILE, \"System file missing.\" },\n#endif\n#ifdef EX_CANTCREAT\n  { 0xff & EX_CANTCREAT, \"Can't create output.\" },\n#endif\n#ifdef EX_IOERR\n  { 0xff & EX_IOERR, \"I/O error.\" },\n#endif\n#ifdef EX_TEMPFAIL\n  { 0xff & EX_TEMPFAIL, \"Deferred.\" },\n#endif\n#ifdef EX_PROTOCOL\n  { 0xff & EX_PROTOCOL, \"Remote protocol error.\" },\n#endif\n#ifdef EX_NOPERM\n  { 0xff & EX_NOPERM, \"Insufficient permission.\" },\n#endif\n#ifdef EX_CONFIG\n  { 0xff & EX_NOPERM, \"Local configuration error.\" },\n#endif\n  { S_ERR, \"Exec error.\" },\n  { -1, NULL}\n};\n\nvoid mutt_nocurses_error (const char *fmt, ...)\n{\n  va_list ap;\n\n  va_start (ap, fmt);\n  vfprintf (stderr, fmt, ap);\n  va_end (ap);\n  fputc ('\\n', stderr);\n}\n\nvoid *safe_calloc (size_t nmemb, size_t size)\n{\n  void *p;\n\n  if (!nmemb || !size)\n    return NULL;\n\n  if (((size_t) -1) / nmemb <= size)\n  {\n    mutt_error _(\"Integer overflow -- can't allocate memory!\");\n    sleep (1);\n    mutt_exit (1);\n  }\n  \n  if (!(p = calloc (nmemb, size)))\n  {\n    mutt_error _(\"Out of memory!\");\n    sleep (1);\n    mutt_exit (1);\n  }\n  return p;\n}\n\nvoid *safe_malloc (size_t siz)\n{\n  void *p;\n\n  if (siz == 0)\n    return 0;\n  if ((p = (void *) malloc (siz)) == 0)\t/* __MEM_CHECKED__ */\n  {\n    mutt_error _(\"Out of memory!\");\n    sleep (1);\n    mutt_exit (1);\n  }\n  return (p);\n}\n\nvoid safe_realloc (void *ptr, size_t siz)\n{\n  void *r;\n  void **p = (void **)ptr;\n\n  if (siz == 0)\n  {\n    if (*p)\n    {\n      free (*p);\t\t\t/* __MEM_CHECKED__ */\n      *p = NULL;\n    }\n    return;\n  }\n\n  if (*p)\n    r = (void *) realloc (*p, siz);\t/* __MEM_CHECKED__ */\n  else\n  {\n    /* realloc(NULL, nbytes) doesn't seem to work under SunOS 4.1.x  --- __MEM_CHECKED__ */\n    r = (void *) malloc (siz);\t\t/* __MEM_CHECKED__ */\n  }\n\n  if (!r)\n  {\n    mutt_error _(\"Out of memory!\");\n    sleep (1);\n    mutt_exit (1);\n  }\n\n  *p = r;\n}\n\nvoid safe_free (void *ptr)\t/* __SAFE_FREE_CHECKED__ */\n{\n  void **p = (void **)ptr;\n  if (*p)\n  {\n    free (*p);\t\t\t\t/* __MEM_CHECKED__ */\n    *p = 0;\n  }\n}\n\nint safe_fclose (FILE **f)\n{\n  int r = 0;\n  \n  if (*f)\n    r = fclose (*f);\n      \n  *f = NULL;\n  return r;\n}\n\nint safe_fsync_close (FILE **f)\n{\n  int r = 0;\n\n  if (*f)\n  {\n    if (fflush (*f) || fsync (fileno (*f)))\n    {\n      int save_errno = errno;\n      r = -1;\n      safe_fclose (f);\n      errno = save_errno;\n    }\n    else\n      r = safe_fclose (f);\n  }\n\n  return r;\n}\n\nchar *safe_strdup (const char *s)\n{\n  char *p;\n  size_t l;\n\n  if (!s || !*s)\n    return 0;\n  l = strlen (s) + 1;\n  p = (char *)safe_malloc (l);\n  memcpy (p, s, l);\n  return (p);\n}\n\nchar *safe_strcat (char *d, size_t l, const char *s)\n{\n  char *p = d;\n\n  if (!l) \n    return d;\n\n  l--; /* Space for the trailing '\\0'. */\n  \n  for (; *d && l; l--)\n    d++;\n  for (; *s && l; l--)\n    *d++ = *s++;\n\n  *d = '\\0';\n  \n  return p;\n}\n\nchar *safe_strncat (char *d, size_t l, const char *s, size_t sl)\n{\n  char *p = d;\n\n  if (!l)\n    return d;\n  \n  l--; /* Space for the trailing '\\0'. */\n  \n  for (; *d && l; l--)\n    d++;\n  for (; *s && l && sl; l--, sl--)\n    *d++ = *s++;\n\n  *d = '\\0';\n  \n  return p;\n}\n\n\nvoid mutt_str_replace (char **p, const char *s)\n{\n  FREE (p);\t\t/* __FREE_CHECKED__ */\n  *p = safe_strdup (s);\n}\n\nvoid mutt_str_adjust (char **p)\n{\n  if (!p || !*p) return;\n  safe_realloc (p, strlen (*p) + 1);\n}\n\n/* convert all characters in the string to lowercase */\nchar *mutt_strlower (char *s)\n{\n  char *p = s;\n\n  while (*p)\n  {\n    *p = tolower ((unsigned char) *p);\n    p++;\n  }\n\n  return (s);\n}\n\nvoid mutt_unlink (const char *s)\n{\n  int fd;\n  int flags;\n  FILE *f;\n  struct stat sb, sb2;\n  char buf[2048];\n\n  /* Defend against symlink attacks */\n  \n#ifdef O_NOFOLLOW \n  flags = O_RDWR | O_NOFOLLOW;\n#else\n  flags = O_RDWR;\n#endif\n  \n  if (lstat (s, &sb) == 0 && S_ISREG(sb.st_mode))\n  {\n    if ((fd = open (s, flags)) < 0)\n      return;\n    \n    if ((fstat (fd, &sb2) != 0) || !S_ISREG (sb2.st_mode) \n\t|| (sb.st_dev != sb2.st_dev) || (sb.st_ino != sb2.st_ino))\n    {\n      close (fd);\n      return;\n    }\n    \n    if ((f = fdopen (fd, \"r+\")))\n    {\n      unlink (s);\n      memset (buf, 0, sizeof (buf));\n      while (sb.st_size > 0)\n      {\n\tfwrite (buf, 1, MIN (sizeof (buf), sb.st_size), f);\n\tsb.st_size -= MIN (sizeof (buf), sb.st_size);\n      }\n      safe_fclose (&f);\n    }\n  }\n}\n\nint mutt_copy_bytes (FILE *in, FILE *out, size_t size)\n{\n  char buf[2048];\n  size_t chunk;\n\n  while (size > 0)\n  {\n    chunk = (size > sizeof (buf)) ? sizeof (buf) : size;\n    if ((chunk = fread (buf, 1, chunk, in)) < 1)\n      break;\n    if (fwrite (buf, 1, chunk, out) != chunk)\n    {\n      /* dprint (1, (debugfile, \"mutt_copy_bytes(): fwrite() returned short byte count\\n\")); */\n      return (-1);\n    }\n    size -= chunk;\n  }\n\n  if (fflush(out) != 0) return -1;\n  return 0;\n}\n\nint mutt_copy_stream (FILE *fin, FILE *fout)\n{\n  size_t l;\n  char buf[LONG_STRING];\n\n  while ((l = fread (buf, 1, sizeof (buf), fin)) > 0)\n  {\n    if (fwrite (buf, 1, l, fout) != l)\n      return (-1);\n  }\n\n  if (fflush(fout) != 0) return -1;\n  return 0;\n}\n\nint \ncompare_stat (struct stat *osb, struct stat *nsb)\n{\n  if (osb->st_dev != nsb->st_dev || osb->st_ino != nsb->st_ino ||\n      osb->st_rdev != nsb->st_rdev)\n  {\n    return -1;\n  }\n\n  return 0;\n}\n\nint safe_symlink(const char *oldpath, const char *newpath)\n{\n  struct stat osb, nsb;\n\n  if(!oldpath || !newpath)\n    return -1;\n  \n  if(unlink(newpath) == -1 && errno != ENOENT)\n    return -1;\n  \n  if (oldpath[0] == '/')\n  {\n    if (symlink (oldpath, newpath) == -1)\n      return -1;\n  }\n  else\n  {\n    char abs_oldpath[_POSIX_PATH_MAX];\n\n    if ((getcwd (abs_oldpath, sizeof abs_oldpath) == NULL) ||\n\t(strlen (abs_oldpath) + 1 + strlen (oldpath) + 1 > sizeof abs_oldpath))\n    return -1;\n  \n    strcat (abs_oldpath, \"/\");\t\t/* __STRCAT_CHECKED__ */\n    strcat (abs_oldpath, oldpath);\t/* __STRCAT_CHECKED__ */\n    if (symlink (abs_oldpath, newpath) == -1)\n      return -1;\n  }\n\n  if(stat(oldpath, &osb) == -1 || stat(newpath, &nsb) == -1\n     || compare_stat(&osb, &nsb) == -1)\n  {\n    unlink(newpath);\n    return -1;\n  }\n  \n  return 0;\n}\n\n\n\n/* \n * This function is supposed to do nfs-safe renaming of files.\n * \n * Warning: We don't check whether src and target are equal.\n */\n\nint safe_rename (const char *src, const char *target)\n{\n  struct stat ssb, tsb;\n\n  if (!src || !target)\n    return -1;\n\n  if (link (src, target) != 0)\n  {\n\n    /*\n     * Coda does not allow cross-directory links, but tells\n     * us it's a cross-filesystem linking attempt.\n     * \n     * However, the Coda rename call is allegedly safe to use.\n     * \n     * With other file systems, rename should just fail when \n     * the files reside on different file systems, so it's safe\n     * to try it here.\n     *\n     */\n    \n    dprint (1, (debugfile, \"safe_rename: link (%s, %s) failed: %s (%d)\\n\", src, target, strerror (errno), errno));\n\n    /*\n     * FUSE may return ENOSYS. VFAT may return EPERM. FreeBSD's\n     * msdosfs may return EOPNOTSUPP.  ENOTSUP can also appear.\n     */\n    if (errno == EXDEV || errno == ENOSYS || errno == EPERM\n#ifdef ENOTSUP\n\t|| errno == ENOTSUP\n#endif\n#ifdef EOPNOTSUPP\n\t|| errno == EOPNOTSUPP\n#endif\n\t)\n    {\n      dprint (1, (debugfile, \"safe_rename: trying rename...\\n\"));\n      if (rename (src, target) == -1) \n      {\n\tdprint (1, (debugfile, \"safe_rename: rename (%s, %s) failed: %s (%d)\\n\", src, target, strerror (errno), errno));\n\treturn -1;\n      }\n      dprint (1, (debugfile, \"safe_rename: rename succeeded.\\n\"));\n    \n      return 0;\n    }\n\n    return -1;\n  }\n\n  /*\n   * Stat both links and check if they are equal.\n   */\n  \n  if (lstat (src, &ssb) == -1)\n  {\n    dprint (1, (debugfile, \"safe_rename: can't stat %s: %s (%d)\\n\",\n\t\tsrc, strerror (errno), errno));\n    return -1;\n  }\n  \n  if (lstat (target, &tsb) == -1)\n  {\n    dprint (1, (debugfile, \"safe_rename: can't stat %s: %s (%d)\\n\",\n\t\tsrc, strerror (errno), errno));\n    return -1;\n  }\n\n  /* \n   * pretend that the link failed because the target file\n   * did already exist.\n   */\n\n  if (compare_stat (&ssb, &tsb) == -1)\n  {\n    dprint (1, (debugfile, \"safe_rename: stat blocks for %s and %s diverge; pretending EEXIST.\\n\", src, target));\n    errno = EEXIST;\n    return -1;\n  }\n\n  /*\n   * Unlink the original link.  Should we really ignore the return\n   * value here? XXX\n   */\n\n  if (unlink (src) == -1) \n  {\n    dprint (1, (debugfile, \"safe_rename: unlink (%s) failed: %s (%d)\\n\",\n\t\tsrc, strerror (errno), errno));\n  }\n  \n\n  return 0;\n}\n\n\n/* Create a temporary directory next to a file name */\n\nstatic int mutt_mkwrapdir (const char *path, char *newfile, size_t nflen, \n\t\t    char *newdir, size_t ndlen)\n{\n  const char *basename;\n  char parent[_POSIX_PATH_MAX];\n  char *p;\n\n  strfcpy (parent, NONULL (path), sizeof (parent));\n  \n  if ((p = strrchr (parent, '/')))\n  {\n    *p = '\\0';\n    basename = p + 1;\n  }\n  else\n  {\n    strfcpy (parent, \".\", sizeof (parent));\n    basename = path;\n  }\n\n  snprintf (newdir, ndlen, \"%s/%s\", parent, \".muttXXXXXX\");\n  if (mkdtemp(newdir) == NULL)\n  {\n      dprint(1, (debugfile, \"mutt_mkwrapdir: mkdtemp() failed\\n\"));\n      return -1;\n  }\n  \n  if (snprintf (newfile, nflen, \"%s/%s\", newdir, NONULL(basename)) >= nflen)\n  {\n      rmdir(newdir);\n      dprint(1, (debugfile, \"mutt_mkwrapdir: string was truncated\\n\"));\n      return -1;\n  }\n  return 0;  \n}\n\n/* remove a directory and everything under it */\nint mutt_rmtree (const char* path)\n{\n  DIR* dirp;\n  struct dirent* de;\n  char cur[_POSIX_PATH_MAX];\n  struct stat statbuf;\n  int rc = 0;\n\n  if (!(dirp = opendir (path)))\n  {\n    dprint (1, (debugfile, \"mutt_rmtree: error opening directory %s\\n\", path));\n    return -1;\n  }\n  while ((de = readdir (dirp)))\n  {\n    if (!strcmp (\".\", de->d_name) || !strcmp (\"..\", de->d_name))\n      continue;\n\n    snprintf (cur, sizeof (cur), \"%s/%s\", path, de->d_name);\n    /* XXX make nonrecursive version */\n\n    if (stat(cur, &statbuf) == -1)\n    {\n      rc = 1;\n      continue;\n    }\n\n    if (S_ISDIR (statbuf.st_mode))\n      rc |= mutt_rmtree (cur);\n    else\n      rc |= unlink (cur);\n  }\n  closedir (dirp);\n\n  rc |= rmdir (path);\n\n  return rc;\n}\n\nstatic int mutt_put_file_in_place (const char *path, const char *safe_file, const char *safe_dir)\n{\n  int rv;\n  \n  rv = safe_rename (safe_file, path);\n  unlink (safe_file);\n  rmdir (safe_dir);\n  return rv;\n}\n\nint safe_open (const char *path, int flags)\n{\n  struct stat osb, nsb;\n  int fd;\n\n  if (flags & O_EXCL) \n  {\n    char safe_file[_POSIX_PATH_MAX];\n    char safe_dir[_POSIX_PATH_MAX];\n\n    if (mutt_mkwrapdir (path, safe_file, sizeof (safe_file),\n\t\t\tsafe_dir, sizeof (safe_dir)) == -1)\n      return -1;\n    \n    if ((fd = open (safe_file, flags, 0600)) < 0)\n    {\n      rmdir (safe_dir);\n      return fd;\n    }\n\n    /* NFS and I believe cygwin do not handle movement of open files well */\n    close (fd);\n    if (mutt_put_file_in_place (path, safe_file, safe_dir) == -1)\n      return -1;\n  }\n\n  if ((fd = open (path, flags & ~O_EXCL, 0600)) < 0)\n    return fd;\n    \n  /* make sure the file is not symlink */\n  if (lstat (path, &osb) < 0 || fstat (fd, &nsb) < 0 ||\n      compare_stat(&osb, &nsb) == -1)\n  {\n/*    dprint (1, (debugfile, \"safe_open(): %s is a symlink!\\n\", path)); */\n    close (fd);\n    return (-1);\n  }\n\n  return (fd);\n}\n\n/* when opening files for writing, make sure the file doesn't already exist\n * to avoid race conditions.\n */\nFILE *safe_fopen (const char *path, const char *mode)\n{\n  if (mode[0] == 'w')\n  {\n    int fd;\n    int flags = O_CREAT | O_EXCL;\n\n#ifdef O_NOFOLLOW\n    flags |= O_NOFOLLOW;\n#endif\n\n    if (mode[1] == '+')\n      flags |= O_RDWR;\n    else\n      flags |= O_WRONLY;\n\n    if ((fd = safe_open (path, flags)) < 0)\n      return (NULL);\n\n    return (fdopen (fd, mode));\n  }\n  else\n    return (fopen (path, mode));\n}\n\nstatic const char safe_chars[] = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+@{}._-:%/\";\n\nvoid mutt_sanitize_filename (char *f, short slash)\n{\n  if (!f) return;\n\n  for (; *f; f++)\n  {\n    if ((slash && *f == '/') || !strchr (safe_chars, *f))\n      *f = '_';\n  }\n}\n\n/* these characters must be escaped in regular expressions */\n\nstatic const char rx_special_chars[] = \"^.[$()|*+?{\\\\\";\n\nint mutt_rx_sanitize_string (char *dest, size_t destlen, const char *src)\n{\n  while (*src && --destlen > 2)\n  {\n    if (strchr (rx_special_chars, *src))\n    {\n      *dest++ = '\\\\';\n      destlen--;\n    }\n    *dest++ = *src++;\n  }\n  \n  *dest = '\\0';\n  \n  if (*src)\n    return -1;\n  else\n    return 0;\n}\n\n/* Read a line from ``fp'' into the dynamically allocated ``s'',\n * increasing ``s'' if necessary. The ending \"\\n\" or \"\\r\\n\" is removed.\n * If a line ends with \"\\\", this char and the linefeed is removed,\n * and the next line is read too.\n */\nchar *mutt_read_line (char *s, size_t *size, FILE *fp, int *line, int flags)\n{\n  size_t offset = 0;\n  char *ch;\n\n  if (!s)\n  {\n    s = safe_malloc (STRING);\n    *size = STRING;\n  }\n\n  FOREVER\n  {\n    if (fgets (s + offset, *size - offset, fp) == NULL)\n    {\n      FREE (&s);\n      return NULL;\n    }\n    if ((ch = strchr (s + offset, '\\n')) != NULL)\n    {\n      if (line)\n\t(*line)++;\n      if (flags & M_EOL)\n\treturn s;\n      *ch = 0;\n      if (ch > s && *(ch - 1) == '\\r')\n\t*--ch = 0;\n      if (!(flags & M_CONT) || ch == s || *(ch - 1) != '\\\\')\n\treturn s;\n      offset = ch - s - 1;\n    }\n    else\n    {\n      int c;\n      c = getc (fp); /* This is kind of a hack. We want to know if the\n                        char at the current point in the input stream is EOF.\n                        feof() will only tell us if we've already hit EOF, not\n                        if the next character is EOF. So, we need to read in\n                        the next character and manually check if it is EOF. */\n      if (c == EOF)\n      {\n        /* The last line of fp isn't \\n terminated */\n\tif (line)\n\t  (*line)++;\n        return s;\n      }\n      else\n      {\n        ungetc (c, fp); /* undo our damage */\n        /* There wasn't room for the line -- increase ``s'' */\n        offset = *size - 1; /* overwrite the terminating 0 */\n        *size += STRING;\n        safe_realloc (&s, *size);\n      }\n    }\n  }\n}\n\nchar *\nmutt_substrcpy (char *dest, const char *beg, const char *end, size_t destlen)\n{\n  size_t len;\n\n  len = end - beg;\n  if (len > destlen - 1)\n    len = destlen - 1;\n  memcpy (dest, beg, len);\n  dest[len] = 0;\n  return dest;\n}\n\nchar *mutt_substrdup (const char *begin, const char *end)\n{\n  size_t len;\n  char *p;\n\n  if (end)\n    len = end - begin;\n  else\n    len = strlen (begin);\n\n  p = safe_malloc (len + 1);\n  memcpy (p, begin, len);\n  p[len] = 0;\n  return p;\n}\n\n/* prepare a file name to survive the shell's quoting rules.\n * From the Unix programming FAQ by way of Liviu.\n */\n\nsize_t mutt_quote_filename (char *d, size_t l, const char *f)\n{\n  size_t i, j = 0;\n\n  if(!f) \n  {\n    *d = '\\0';\n    return 0;\n  }\n\n  /* leave some space for the trailing characters. */\n  l -= 6;\n  \n  d[j++] = '\\'';\n  \n  for(i = 0; j < l && f[i]; i++)\n  {\n    if(f[i] == '\\'' || f[i] == '`')\n    {\n      d[j++] = '\\'';\n      d[j++] = '\\\\';\n      d[j++] = f[i];\n      d[j++] = '\\'';\n    }\n    else\n      d[j++] = f[i];\n  }\n  \n  d[j++] = '\\'';\n  d[j]   = '\\0';\n  \n  return j;\n}\n\n/* NULL-pointer aware string comparison functions */\n\nint mutt_strcmp(const char *a, const char *b)\n{\n  return strcmp(NONULL(a), NONULL(b));\n}\n\nint mutt_strcasecmp(const char *a, const char *b)\n{\n  return strcasecmp(NONULL(a), NONULL(b));\n}\n\nint mutt_strncmp(const char *a, const char *b, size_t l)\n{\n  return strncmp(NONULL(a), NONULL(b), l);\n}\n\nint mutt_strncasecmp(const char *a, const char *b, size_t l)\n{\n  return strncasecmp(NONULL(a), NONULL(b), l);\n}\n\nsize_t mutt_strlen(const char *a)\n{\n  return a ? strlen (a) : 0;\n}\n\nint mutt_strcoll(const char *a, const char *b)\n{\n  return strcoll(NONULL(a), NONULL(b));\n}\n\nconst char *mutt_stristr (const char *haystack, const char *needle)\n{\n  const char *p, *q;\n\n  if (!haystack)\n    return NULL;\n  if (!needle)\n    return (haystack);\n\n  while (*(p = haystack))\n  {\n    for (q = needle;\n         *p && *q &&\n           tolower ((unsigned char) *p) == tolower ((unsigned char) *q);\n         p++, q++)\n      ;\n    if (!*q)\n      return (haystack);\n    haystack++;\n  }\n  return NULL;\n}\n\nchar *mutt_skip_whitespace (char *p)\n{\n  SKIPWS (p);\n  return p;\n}\n\nvoid mutt_remove_trailing_ws (char *s)\n{\n  char *p;\n  \n  for (p = s + mutt_strlen (s) - 1 ; p >= s && ISSPACE (*p) ; p--)\n    *p = 0;\n}\n\n/*\n * Write the concatened pathname (dir + \"/\" + fname) into dst.\n * The slash is omitted when dir or fname is of 0 length.\n * Returns NULL on error or a pointer to dst otherwise.\n */\nchar *mutt_concatn_path (char *dst, size_t dstlen,\n    const char *dir, size_t dirlen, const char *fname, size_t fnamelen)\n{\n  size_t req;\n  size_t offset = 0;\n\n  if (dstlen == 0)\n    return NULL; /* probably should not mask errors like this */\n\n  /* size check */\n  req = dirlen + fnamelen + 1; /* +1 for the trailing nul */\n  if (dirlen && fnamelen)\n    req++; /* when both components are non-nul, we add a \"/\" in between */\n  if (req > dstlen) { /* check for condition where the dst length is too short */\n    /* Two options here:\n     * 1) assert(0) or return NULL to signal error\n     * 2) copy as much of the path as will fit\n     * It doesn't appear that the return value is actually checked anywhere mutt_concat_path()\n     * is called, so we should just copy set dst to nul and let the calling function fail later.\n     */\n    dst[0] = 0; /* safe since we bail out early if dstlen == 0 */\n    return NULL;\n  }\n\n  if (dirlen) { /* when dir is not empty */\n    memcpy(dst, dir, dirlen);\n    offset = dirlen;\n    if (fnamelen)\n      dst[offset++] = '/';\n  }\n  if (fnamelen) { /* when fname is not empty */\n    memcpy(dst + offset, fname, fnamelen);\n    offset += fnamelen;\n  }\n  dst[offset] = 0;\n  return dst;\n}\n\nchar *mutt_concat_path (char *d, const char *dir, const char *fname, size_t l)\n{\n  const char *fmt = \"%s/%s\";\n  \n  if (!*fname || (*dir && dir[strlen(dir)-1] == '/'))\n    fmt = \"%s%s\";\n  \n  snprintf (d, l, fmt, dir, fname);\n  return d;\n}\n\nconst char *mutt_basename (const char *f)\n{\n  const char *p = strrchr (f, '/');\n  if (p)\n    return p + 1;\n  else\n    return f;\n}\n\nconst char *\nmutt_strsysexit(int e)\n{\n  int i;\n  \n  for(i = 0; sysexits_h[i].str; i++)\n  {\n    if(e == sysexits_h[i].v)\n      break;\n  }\n  \n  return sysexits_h[i].str;\n}\n\nvoid mutt_debug (FILE *fp, const char *fmt, ...)\n{\n  va_list ap;\n  time_t now = time (NULL);\n  static char buf[23] = \"\";\n  static time_t last = 0;\n\n  if (now > last)\n  {\n    strftime (buf, sizeof (buf), \"%Y-%m-%d %H:%M:%S\", localtime (&now));\n    last = now;\n  }\n  fprintf (fp, \"[%s] \", buf);\n  va_start (ap, fmt);\n  vfprintf (fp, fmt, ap);\n  va_end (ap);\n}\n\nint mutt_atos (const char *str, short *dst)\n{\n  int rc;\n  long res;\n  short tmp;\n  short *t = dst ? dst : &tmp;\n\n  *t = 0;\n\n  if ((rc = mutt_atol (str, &res)) < 0)\n    return rc;\n  if ((short) res != res)\n    return -2;\n\n  *t = (short) res;\n  return 0;\n}\n\nint mutt_atoi (const char *str, int *dst)\n{\n  int rc;\n  long res;\n  int tmp;\n  int *t = dst ? dst : &tmp;\n\n  *t = 0;\n\n  if ((rc = mutt_atol (str, &res)) < 0)\n    return rc;\n  if ((int) res != res)\n    return -2;\n\n  *t = (int) res;\n  return 0;\n}\n\nint mutt_atol (const char *str, long *dst)\n{\n  long r;\n  long *res = dst ? dst : &r;\n  char *e = NULL;\n\n  /* no input: 0 */\n  if (!str || !*str)\n  {\n    *res = 0;\n    return 0;\n  }\n\n  *res = strtol (str, &e, 10);\n  if ((*res == LONG_MAX && errno == ERANGE) ||\n      (e && *e != '\\0'))\n    return -1;\n  return 0;\n}\n"
  },
  {
    "path": "lib.h",
    "content": "/*\n * Copyright (C) 1996-2000,2007,2010,2012 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2005,2007 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */ \n\n/* mutt functions which are generally useful. */\n\n#ifndef _LIB_H\n# define _LIB_H\n\n# include <stdio.h>\n# include <string.h>\n# ifdef HAVE_UNISTD_H\n#  include <unistd.h> /* needed for SEEK_SET */\n# endif\n# include <sys/types.h>\n# include <sys/stat.h>\n# include <time.h>\n# include <limits.h>\n# include <stdarg.h>\n# include <signal.h>\n\n# ifndef _POSIX_PATH_MAX\n#  include <limits.h>\n# endif\n\n# ifdef ENABLE_NLS\n#  include <libintl.h>\n# define _(a) (gettext (a))\n#  ifdef gettext_noop\n#   define N_(a) gettext_noop (a)\n#  else\n#   define N_(a) (a)\n#  endif\n# else\n#  define _(a) (a)\n#  define N_(a) a\n# endif\n\n# define TRUE 1\n# define FALSE 0\n\n# define HUGE_STRING     8192\n# define LONG_STRING     1024\n# define STRING          256\n# define SHORT_STRING    128\n\n/*\n * Create a format string to be used with scanf.\n * To use it, write, for instance, MUTT_FORMAT(HUGE_STRING).\n * \n * See K&R 2nd ed, p. 231 for an explanation.\n */\n# define _MUTT_FORMAT_2(a,b)\t\"%\" a  b\n# define _MUTT_FORMAT_1(a, b)\t_MUTT_FORMAT_2(#a, b)\n# define MUTT_FORMAT(a)\t\t_MUTT_FORMAT_1(a, \"s\")\n# define MUTT_FORMAT2(a,b)\t_MUTT_FORMAT_1(a, b)\n\n\n# define FREE(x) safe_free(x)\n# define NONULL(x) x?x:\"\"\n# define ISSPACE(c) isspace((unsigned char)c)\n# define strfcpy(A,B,C) strncpy(A,B,C), *(A+(C)-1)=0\n\n# undef MAX\n# undef MIN\n# define MAX(a,b) ((a) < (b) ? (b) : (a))\n# define MIN(a,b) ((a) < (b) ? (a) : (b))\n\n/* For mutt_format_string() justifications */\n/* Making left 0 and center -1 is of course completely nonsensical, but\n * it retains compatibility for any patches that call mutt_format_string.\n * Once patches are updated to use FMT_*, these can be made sane. */\n#define FMT_LEFT\t0\n#define FMT_RIGHT\t1\n#define FMT_CENTER\t-1\n\n#define FOREVER while (1)\n\n/* this macro must check for *c == 0 since isspace(0) has unreliable behavior\n   on some systems */\n# define SKIPWS(c) while (*(c) && isspace ((unsigned char) *(c))) c++;\n\n#define EMAIL_WSP \" \\t\\r\\n\"\n\n/* skip over WSP as defined by RFC5322.  This is used primarily for parsing\n * header fields. */\n\nstatic inline char *skip_email_wsp(const char *s)\n{\n  if (s)\n    return (char *)(s + strspn(s, EMAIL_WSP));\n  return (char *)s;\n}\n\nstatic inline int is_email_wsp(char c)\n{\n  return c && (strchr(EMAIL_WSP, c) != NULL);\n}\n\n\n/*\n * These functions aren't defined in lib.c, but\n * they are used there.\n *\n * A non-mutt \"implementation\" (ahem) can be found in extlib.c.\n */\n\n\n# ifndef _EXTLIB_C\nextern void (*mutt_error) (const char *, ...);\n# endif\n\n# ifdef _LIB_C\n#  define MUTT_LIB_WHERE \n#  define MUTT_LIB_INITVAL(x) = x\n# else\n#  define MUTT_LIB_WHERE extern\n#  define MUTT_LIB_INITVAL(x)\n# endif\n\nvoid mutt_exit (int);\n\n\n# ifdef DEBUG\n\nMUTT_LIB_WHERE FILE *debugfile MUTT_LIB_INITVAL(0);\nMUTT_LIB_WHERE int debuglevel MUTT_LIB_INITVAL(0);\n\nvoid mutt_debug (FILE *, const char *, ...);\n\n#  define dprint(N,X) do { if(debuglevel>=N && debugfile) mutt_debug X; } while (0)\n\n# else\n\n#  define dprint(N,X) do { } while (0)\n\n# endif\n\n\n/* Exit values used in send_msg() */\n#define S_ERR 127\n#define S_BKG 126\n\n/* Flags for mutt_read_line() */\n#define M_CONT\t\t(1<<0)\t\t/* \\-continuation */\n#define M_EOL\t\t(1<<1)\t\t/* don't strip \\n/\\r\\n */\n\n/* The actual library functions. */\n\nFILE *safe_fopen (const char *, const char *);\n\nchar *mutt_concatn_path (char *, size_t, const char *, size_t, const char *, size_t);\nchar *mutt_concat_path (char *, const char *, const char *, size_t);\nchar *mutt_read_line (char *, size_t *, FILE *, int *, int);\nchar *mutt_skip_whitespace (char *);\nchar *mutt_strlower (char *);\nchar *mutt_substrcpy (char *, const char *, const char *, size_t);\nchar *mutt_substrdup (const char *, const char *);\nchar *safe_strcat (char *, size_t, const char *);\nchar *safe_strncat (char *, size_t, const char *, size_t);\nchar *safe_strdup (const char *);\n\n/* strtol() wrappers with range checking; they return\n * \t 0 success\n * \t-1 format error\n * \t-2 overflow (for int and short)\n * the int pointer may be NULL to test only without conversion\n */\nint mutt_atos (const char *, short *);\nint mutt_atoi (const char *, int *);\nint mutt_atol (const char *, long *);\n\nconst char *mutt_stristr (const char *, const char *);\nconst char *mutt_basename (const char *);\n\nint compare_stat (struct stat *, struct stat *);\nint mutt_copy_stream (FILE *, FILE *);\nint mutt_copy_bytes (FILE *, FILE *, size_t);\nint mutt_rx_sanitize_string (char *, size_t, const char *);\nint mutt_strcasecmp (const char *, const char *);\nint mutt_strcmp (const char *, const char *);\nint mutt_strncasecmp (const char *, const char *, size_t);\nint mutt_strncmp (const char *, const char *, size_t);\nint mutt_strcoll (const char *, const char *);\nint safe_asprintf (char **, const char *, ...);\nint safe_open (const char *, int);\nint safe_rename (const char *, const char *);\nint safe_symlink (const char *, const char *);\nint safe_fclose (FILE **);\nint safe_fsync_close (FILE **);\nint mutt_rmtree (const char *);\n\nsize_t mutt_quote_filename (char *, size_t, const char *);\nsize_t mutt_strlen (const char *);\n\nvoid *safe_calloc (size_t, size_t);\nvoid *safe_malloc (size_t);\nvoid mutt_nocurses_error (const char *, ...);\nvoid mutt_remove_trailing_ws (char *);\nvoid mutt_sanitize_filename (char *, short);\nvoid mutt_str_replace (char **p, const char *s);\nvoid mutt_str_adjust (char **p);\nvoid mutt_unlink (const char *);\nvoid safe_free (void *);\nvoid safe_realloc (void *, size_t);\n\nconst char *mutt_strsysexit(int e);\n#endif\n"
  },
  {
    "path": "m4/Makefile.am",
    "content": "EXTRA_DIST = README\n\ndist-hook:\n\tfor i in $(srcdir)/*.m4 ; do \\\n\t\tcp -f -p $$i $(distdir) ; \\\n\tdone\n"
  },
  {
    "path": "m4/README",
    "content": "These files are used by a program called aclocal (part of the GNU automake\npackage).  aclocal uses these files to create aclocal.m4 which is in turn\nused by autoconf to create the configure script at the the top level in\nthis distribution.\n"
  },
  {
    "path": "m4/codeset.m4",
    "content": "#serial 1\n\ndnl From Bruno Haible.\n\nAC_DEFUN([MUTT_AM_LANGINFO_CODESET],\n[\n  AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,\n    [AC_TRY_LINK([#include <langinfo.h>],\n      [char* cs = nl_langinfo(CODESET);],\n      am_cv_langinfo_codeset=yes,\n      am_cv_langinfo_codeset=no)\n    ])\n  if test $am_cv_langinfo_codeset = yes; then\n    AC_DEFINE(HAVE_LANGINFO_CODESET, 1,\n      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])\n  fi\n])\n"
  },
  {
    "path": "m4/curslib.m4",
    "content": "dnl ---------------------------------------------------------------------------\ndnl Look for the curses libraries.  Older curses implementations may require\ndnl termcap/termlib to be linked as well.\nAC_DEFUN([CF_CURSES_LIBS],[\nAC_CHECK_FUNC(initscr,,[\ncase $host_os in #(vi\nfreebsd*) #(vi\n\tAC_CHECK_LIB(mytinfo,tgoto,[LIBS=\"-lmytinfo $LIBS\"])\n\t;;\nhpux10.*|hpux11.*)\n\tAC_CHECK_LIB(cur_colr,initscr,[\n\t\tLIBS=\"-lcur_colr $LIBS\"\n\t\tCFLAGS=\"-I/usr/include/curses_colr $CFLAGS\"\n\t\tac_cv_func_initscr=yes\n\t\t],[\n\tAC_CHECK_LIB(Hcurses,initscr,[\n\t\t# HP's header uses __HP_CURSES, but user claims _HP_CURSES.\n\t\tLIBS=\"-lHcurses $LIBS\"\n\t\tCFLAGS=\"-D__HP_CURSES -D_HP_CURSES $CFLAGS\"\n\t\tac_cv_func_initscr=yes\n\t\t])])\n\t;;\nlinux*) # Suse Linux does not follow /usr/lib convention\n\tLIBS=\"$LIBS -L/lib\"\n\t;;\nesac\n\nif test \".$With5lib\" != \".no\" ; then\nif test -d /usr/5lib ; then\n\t# SunOS 3.x or 4.x\n\tCPPFLAGS=\"$CPPFLAGS -I/usr/5include\"\n\tLIBS=\"$LIBS -L/usr/5lib\"\nfi\nfi\n\nif test \".$ac_cv_func_initscr\" != .yes ; then\n\tcf_save_LIBS=\"$LIBS\"\n\tcf_term_lib=\"\"\n\tcf_curs_lib=\"\"\n\n\t# Check for library containing tgoto.  Do this before curses library\n\t# because it may be needed to link the test-case for initscr.\n\tAC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[\n\t\tfor cf_term_lib in termcap termlib unknown\n\t\tdo\n\t\t\tAC_CHECK_LIB($cf_term_lib,tgoto,[break])\n\t\tdone\n\t])\n\n\t# Check for library containing initscr\n\ttest \"$cf_term_lib\" != predefined && test \"$cf_term_lib\" != unknown && LIBS=\"-l$cf_term_lib $cf_save_LIBS\"\n\tfor cf_curs_lib in cursesX curses ncurses xcurses jcurses unknown\n\tdo\n\t\tAC_CHECK_LIB($cf_curs_lib,initscr,[break])\n\tdone\n\ttest $cf_curs_lib = unknown && AC_ERROR(no curses library found)\n\n\tLIBS=\"-l$cf_curs_lib $cf_save_LIBS\"\n\tif test \"$cf_term_lib\" = unknown ; then\n\t\tAC_MSG_CHECKING(if we can link with $cf_curs_lib library)\n\t\tAC_TRY_LINK([#include <${cf_cv_ncurses_header-curses.h}>],\n\t\t\t[initscr()],\n\t\t\t[cf_result=yes],\n\t\t\t[cf_result=no])\n\t\tAC_MSG_RESULT($cf_result)\n\t\ttest $cf_result = no && AC_ERROR(Cannot link curses library)\n\telif test \"$cf_term_lib\" != predefined ; then\n\t\tAC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries)\n\t\tAC_TRY_LINK([#include <${cf_cv_ncurses_header-curses.h}>],\n\t\t\t[initscr(); tgoto((char *)0, 0, 0);],\n\t\t\t[cf_result=no],\n\t\t\t[\n\t\t\tLIBS=\"-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS\"\n\t\t\tAC_TRY_LINK([#include <${cf_cv_ncurses_header-curses.h}>],\n\t\t\t\t[initscr()],\n\t\t\t\t[cf_result=yes],\n\t\t\t\t[cf_result=error])\n\t\t\t])\n\t\tAC_MSG_RESULT($cf_result)\n\tfi\nfi\n\n])])\n"
  },
  {
    "path": "m4/funcdecl.m4",
    "content": "dnl ---------------------------------------------------------------------------\ndnl Check if a function is declared by including a set of include files.\ndnl Invoke the corresponding actions according to whether it is found or not.\ndnl\ndnl Gcc (unlike other compilers) will only warn about the miscast assignment\ndnl in the first test, but most compilers will oblige with an error in the\ndnl second test.\ndnl\ndnl CF_CHECK_FUNCDECL(INCLUDES, FUNCTION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])\nAC_DEFUN([CF_CHECK_FUNCDECL],\n[\nAC_MSG_CHECKING([for $2 declaration])\nAC_CACHE_VAL(ac_cv_func_decl_$2,\n[AC_TRY_COMPILE([$1],\n[#ifndef ${ac_func}\nextern\tint\t${ac_func}();\n#endif],[\nAC_TRY_COMPILE([$1],\n[#ifndef ${ac_func}\nint\t(*p)() = ${ac_func};\n#endif],[\neval \"ac_cv_func_decl_$2=yes\"],[\neval \"ac_cv_func_decl_$2=no\"])],[\neval \"ac_cv_func_decl_$2=yes\"])])\nif eval \"test \\\"`echo '$ac_cv_func_'decl_$2`\\\" = yes\"; then\n  AC_MSG_RESULT(yes)\n  ifelse([$3], , :, [$3])\nelse\n  AC_MSG_RESULT(no)\nifelse([$4], , , [$4\n])dnl\nfi\n])dnl\ndnl ---------------------------------------------------------------------------\ndnl Check if functions are declared by including a set of include files.\ndnl and define DECL_XXX if not.\ndnl\ndnl CF_CHECK_FUNCDECLS(INCLUDES, FUNCTION... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])\nAC_DEFUN([CF_CHECK_FUNCDECLS],\n[for ac_func in $2\ndo\nCF_CHECK_FUNCDECL([$1], $ac_func,\n[\n  CF_UPPER(ac_tr_func,HAVE_$ac_func)\n  AC_DEFINE_UNQUOTED($ac_tr_func) $3],\n[$4])dnl\ndnl [$3],\ndnl [\ndnl   CF_UPPER(ac_tr_func,DECL_$ac_func)\ndnl   AC_DEFINE_UNQUOTED($ac_tr_func) $4])dnl\ndone\n])dnl\ndnl ---------------------------------------------------------------------------\ndnl Make an uppercase version of a variable\ndnl $1=uppercase($2)\nAC_DEFUN([CF_UPPER],\n[\nchangequote(,)dnl\n$1=`echo $2 | tr '[a-z]' '[A-Z]'`\nchangequote([,])dnl\n])dnl\ndnl ---------------------------------------------------------------------------\n"
  },
  {
    "path": "m4/funcs.m4",
    "content": "dnl XIPH_ macros are GPL, from http://svn.xiph.org/icecast/trunk/m4\ndnl\n# XIPH_FUNC_VA_COPY\n# Test for implementation of va_copy, or define appropriately if missing\nAC_DEFUN([XIPH_FUNC_VA_COPY],\n[dnl\nAC_MSG_CHECKING([for va_copy])\nAC_TRY_LINK([#include <stdarg.h>], [va_list ap1, ap2; va_copy(ap1, ap2);],\n  AC_MSG_RESULT([va_copy]),\n  [dnl\n  AH_TEMPLATE([va_copy], [define if va_copy is not available])\n  AC_TRY_LINK([#include <stdarg.h>], [va_list ap1, ap2; __va_copy(ap1, ap2);],\n    [dnl\n    AC_DEFINE([va_copy], [__va_copy])\n    AC_MSG_RESULT([__va_copy])],\n    [dnl\n    AC_DEFINE([va_copy(dest,src)], [memcpy(&dest,&src,sizeof(va_list))])\n    AC_MSG_RESULT([memcpy])\n    ])\n  ])\n])\n])dnl XIPH_FUNC_VA_COPY\n"
  },
  {
    "path": "m4/gettext.m4",
    "content": "# Macro to add for using GNU gettext.\n# Ulrich Drepper <drepper@cygnus.com>, 1995.\n\n#\n# Slightly modified by Thomas Roessler <roessler@does-not-exist.org>\n# Updated to gettext-0.10.38 by Edmund Grimley Evans <edmundo@rano.org>\n# Updated to gettext-0.10.40 by Andrew W. Nosenko <awn@bcs.zp.ua>\n#\n\n# This file can be copied and used freely without restrictions.  It can\n# be used in projects which are not available under the GNU General Public\n# License or the GNU Library General Public License but which still want\n# to provide support for the GNU gettext functionality.\n# Please note that the actual code of the GNU gettext library is covered\n# by the GNU Library General Public License, and the rest of the GNU\n# gettext package package is covered by the GNU General Public License.\n# They are *not* in the public domain.\n\n# serial 10\n\ndnl Usage: MUTT_AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]).\ndnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library\ndnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,\ndnl    depending on --{enable,disable}-{shared,static} and on the presence of\ndnl    AM-DISABLE-SHARED). Otherwise, a static library\ndnl    $(top_builddir)/intl/libintl.a will be created.\ndnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext\ndnl    implementations (in libc or libintl) without the ngettext() function\ndnl    will be ignored.\ndnl LIBDIR is used to find the intl libraries.  If empty,\ndnl    the value `$(top_builddir)/intl/' is used.\ndnl\ndnl The result of the configuration is one of three cases:\ndnl 1) GNU gettext, as included in the intl subdirectory, will be compiled\ndnl    and used.\ndnl    Catalog format: GNU --> install in $(datadir)\ndnl    Catalog extension: .mo after installation, .gmo in source tree\ndnl 2) GNU gettext has been found in the system's C library.\ndnl    Catalog format: GNU --> install in $(datadir)\ndnl    Catalog extension: .mo after installation, .gmo in source tree\ndnl 3) No internationalization, always use English msgid.\ndnl    Catalog format: none\ndnl    Catalog extension: none\ndnl The use of .gmo is historical (it was needed to avoid overwriting the\ndnl GNU format catalogs when building on a platform with an X/Open gettext),\ndnl but we keep it in order not to force irrelevant filename changes on the\ndnl maintainers.\ndnl\nAC_DEFUN([MUTT_AM_WITH_NLS],\n  [AC_MSG_CHECKING([whether NLS is requested])\n    dnl Default is enabled NLS\n    AC_ARG_ENABLE(nls,\n      AC_HELP_STRING([--disable-nls], [Do not use Native Language Support]),\n      USE_NLS=$enableval, USE_NLS=yes)\n    AC_MSG_RESULT($USE_NLS)\n    AC_SUBST(USE_NLS)\n\n    BUILD_INCLUDED_LIBINTL=no\n    USE_INCLUDED_LIBINTL=no\n    INTLLIBS=\n\n    dnl If we use NLS figure out what method\n    if test \"$USE_NLS\" = \"yes\"; then\n      AC_DEFINE(ENABLE_NLS, 1,\n        [Define to 1 if translation of program messages to the user's native language\n   is requested.])\n      AC_MSG_CHECKING([whether included gettext is requested])\n      AC_ARG_WITH(included-gettext,\n        AC_HELP_STRING([--with-included-gettext], [Use the GNU gettext library included here]),\n        nls_cv_force_use_gnu_gettext=$withval,\n        nls_cv_force_use_gnu_gettext=no)\n      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)\n\n      nls_cv_use_gnu_gettext=\"$nls_cv_force_use_gnu_gettext\"\n      if test \"$nls_cv_force_use_gnu_gettext\" != \"yes\"; then\n        dnl User does not insist on using GNU NLS library.  Figure out what\n        dnl to use.  If GNU gettext is available we use this.  Else we have\n        dnl to fall back to GNU NLS library.\n\tCATOBJEXT=NONE\n\n        dnl Add a version number to the cache macros.\n        define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc])\n        define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl])\n\n\tAC_CHECK_HEADER(libintl.h,\n\t  [AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,\n\t    [AC_TRY_LINK([#include <libintl.h>\nextern int _nl_msg_cat_cntr;],\n\t       [bindtextdomain (\"\", \"\");\nreturn (int) gettext (\"\")]ifelse([$2], need-ngettext, [ + (int) ngettext (\"\", \"\", 0)], [])[ + _nl_msg_cat_cntr],\n\t       gt_cv_func_gnugettext_libc=yes,\n\t       gt_cv_func_gnugettext_libc=no)])\n\n\t   if test \"$gt_cv_func_gnugettext_libc\" != \"yes\"; then\n\t     AC_CACHE_CHECK([for GNU gettext in libintl],\n\t       gt_cv_func_gnugettext_libintl,\n\t       [gt_save_LIBS=\"$LIBS\"\n\t\tLIBS=\"$LIBS -lintl $LIBICONV\"\n\t\tAC_TRY_LINK([#include <libintl.h>\nextern int _nl_msg_cat_cntr;],\n\t\t  [bindtextdomain (\"\", \"\");\nreturn (int) gettext (\"\")]ifelse([$2], need-ngettext, [ + (int) ngettext (\"\", \"\", 0)], [])[ + _nl_msg_cat_cntr],\n\t\t  gt_cv_func_gnugettext_libintl=yes,\n\t\t  gt_cv_func_gnugettext_libintl=no)\n\t\tLIBS=\"$gt_save_LIBS\"])\n\t   fi\n\n\t   dnl If an already present or preinstalled GNU gettext() is found,\n\t   dnl use it.  But if this macro is used in GNU gettext, and GNU\n\t   dnl gettext is already preinstalled in libintl, we update this\n\t   dnl libintl.  (Cf. the install rule in intl/Makefile.in.)\n\t   if test \"$gt_cv_func_gnugettext_libc\" = \"yes\" \\\n\t      || { test \"$gt_cv_func_gnugettext_libintl\" = \"yes\" \\\n\t\t   && test \"$PACKAGE\" != gettext; }; then\n\t     AC_DEFINE(HAVE_GETTEXT, 1,\n               [Define if the GNU gettext() function is already present or preinstalled.])\n\n\t     if test \"$gt_cv_func_gnugettext_libintl\" = \"yes\"; then\n\t       dnl If iconv() is in a separate libiconv library, then anyone\n\t       dnl linking with libintl{.a,.so} also needs to link with\n\t       dnl libiconv.\n\t       INTLLIBS=\"-lintl $LIBICONV\"\n\t     fi\n\n\t     gt_save_LIBS=\"$LIBS\"\n\t     LIBS=\"$LIBS $INTLLIBS\"\n\t     AC_CHECK_FUNCS(dcgettext)\n\t     LIBS=\"$gt_save_LIBS\"\n\n\t     dnl Search for GNU msgfmt in the PATH.\n\t     MUTT_AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,\n\t       [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :)\n\t     AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)\n\n\t     dnl Search for GNU xgettext in the PATH.\n\t     MUTT_AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,\n\t       [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :)\n\n\t     CATOBJEXT=.gmo\n\t   fi\n\t])\n\n        if test \"$CATOBJEXT\" = \"NONE\"; then\n\t  dnl GNU gettext is not found in the C library.\n\t  dnl Fall back on GNU gettext library.\n\t  nls_cv_use_gnu_gettext=yes\n        fi\n      fi\n\n      if test \"$nls_cv_use_gnu_gettext\" = \"yes\"; then\n        dnl Mark actions used to generate GNU NLS library.\n        INTLOBJS=\"\\$(GETTOBJS)\"\n        MUTT_AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,\n\t  [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :)\n        AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)\n        MUTT_AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,\n\t  [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :)\n        AC_SUBST(MSGFMT)\n\tBUILD_INCLUDED_LIBINTL=yes\n\tUSE_INCLUDED_LIBINTL=yes\n        CATOBJEXT=.gmo\n\tINTLLIBS=\"ifelse([$3],[],\\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV\"\n\tLIBS=`echo \" $LIBS \" | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`\n      fi\n\n      dnl This could go away some day; the MUTT_PATH_PROG_WITH_TEST already does it.\n      dnl Test whether we really found GNU msgfmt.\n      if test \"$GMSGFMT\" != \":\"; then\n\tdnl If it is no GNU msgfmt we define it as : so that the\n\tdnl Makefiles still can work.\n\tif $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then\n\t  : ;\n\telse\n\t  AC_MSG_RESULT(\n\t    [found msgfmt program is not GNU msgfmt; ignore it])\n\t  GMSGFMT=\":\"\n\tfi\n      fi\n\n      dnl This could go away some day; the MUTT_PATH_PROG_WITH_TEST already does it.\n      dnl Test whether we really found GNU xgettext.\n      if test \"$XGETTEXT\" != \":\"; then\n\tdnl If it is no GNU xgettext we define it as : so that the\n\tdnl Makefiles still can work.\n\tif $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then\n\t  : ;\n\telse\n\t  AC_MSG_RESULT(\n\t    [found xgettext program is not GNU xgettext; ignore it])\n\t  XGETTEXT=\":\"\n\tfi\n      fi\n\n      dnl We need to process the po/ directory.\n      POSUB=po\n    fi\n    AC_OUTPUT_COMMANDS(\n     [for ac_file in $CONFIG_FILES; do\n        # Support \"outfile[:infile[:infile...]]\"\n        case \"$ac_file\" in\n          *:*) ac_file=`echo \"$ac_file\"|sed 's%:.*%%'` ;;\n        esac\n        # PO directories have a Makefile.in generated from Makefile.in.in.\n        case \"$ac_file\" in */Makefile.in)\n          # Adjust a relative srcdir.\n          ac_dir=`echo \"$ac_file\"|sed 's%/[^/][^/]*$%%'`\n          ac_dir_suffix=\"/`echo \"$ac_dir\"|sed 's%^\\./%%'`\"\n          ac_dots=`echo \"$ac_dir_suffix\"|sed 's%/[^/]*%../%g'`\n          # In autoconf-2.13 it is called $ac_given_srcdir.\n          # In autoconf-2.50 it is called $srcdir.\n          test -n \"$ac_given_srcdir\" || ac_given_srcdir=\"$srcdir\"\n          case \"$ac_given_srcdir\" in\n            .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;\n            /*) top_srcdir=\"$ac_given_srcdir\" ;;\n            *)  top_srcdir=\"$ac_dots$ac_given_srcdir\" ;;\n          esac\n          if test -f \"$ac_given_srcdir/$ac_dir/POTFILES.in\"; then\n            rm -f \"$ac_dir/POTFILES\"\n            test -n \"$as_me\" && echo \"$as_me: creating $ac_dir/POTFILES\" || echo \"creating $ac_dir/POTFILES\"\n            sed -e \"/^#/d\" -e \"/^[ \t]*\\$/d\" -e \"s,.*,     $top_srcdir/& \\\\\\\\,\" -e \"\\$s/\\(.*\\) \\\\\\\\/\\1/\" < \"$ac_given_srcdir/$ac_dir/POTFILES.in\" > \"$ac_dir/POTFILES\"\n            test -n \"$as_me\" && echo \"$as_me: creating $ac_dir/Makefile\" || echo \"creating $ac_dir/Makefile\"\n            sed -e \"/POTFILES =/r $ac_dir/POTFILES\" \"$ac_dir/Makefile.in\" > \"$ac_dir/Makefile\"\n          fi\n          ;;\n        esac\n      done])\n\n\n    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL\n    dnl to 'yes' because some of the testsuite requires it.\n    if test \"$PACKAGE\" = gettext; then\n      BUILD_INCLUDED_LIBINTL=yes\n    fi\n\n    dnl intl/plural.c is generated from intl/plural.y. It requires bison,\n    dnl because plural.y uses bison specific features. It requires at least\n    dnl bison-1.26 because earlier versions generate a plural.c that doesn't\n    dnl compile.\n    dnl bison is only needed for the maintainer (who touches plural.y). But in\n    dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put\n    dnl the rule in general Makefile. Now, some people carelessly touch the\n    dnl files or have a broken \"make\" program, hence the plural.c rule will\n    dnl sometimes fire. To avoid an error, defines BISON to \":\" if it is not\n    dnl present or too old.\n    AC_CHECK_PROGS([INTLBISON], [bison])\n    if test -z \"$INTLBISON\"; then\n      ac_verc_fail=yes\n    else\n      dnl Found it, now check the version.\n      AC_MSG_CHECKING([version of bison])\nchangequote(<<,>>)dnl\n      ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \\([0-9]*\\.[0-9.]*\\).*$/\\1/p'`\n      case $ac_prog_version in\n        '') ac_prog_version=\"v. ?.??, bad\"; ac_verc_fail=yes;;\n        1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)\nchangequote([,])dnl\n           ac_prog_version=\"$ac_prog_version, ok\"; ac_verc_fail=no;;\n        *) ac_prog_version=\"$ac_prog_version, bad\"; ac_verc_fail=yes;;\n      esac\n      AC_MSG_RESULT([$ac_prog_version])\n    fi\n    if test $ac_verc_fail = yes; then\n      INTLBISON=:\n    fi\n\n    dnl These rules are solely for the distribution goal.  While doing this\n    dnl we only have to keep exactly one list of the available catalogs\n    dnl in configure.in.\n    for lang in $ALL_LINGUAS; do\n      GMOFILES=\"$GMOFILES $lang.gmo\"\n      POFILES=\"$POFILES $lang.po\"\n    done\n\n    dnl Make all variables we use known to autoconf.\n    AC_SUBST(BUILD_INCLUDED_LIBINTL)\n    AC_SUBST(USE_INCLUDED_LIBINTL)\n    AC_SUBST(CATALOGS)\n    AC_SUBST(CATOBJEXT)\n    AC_SUBST(GMOFILES)\n    AC_SUBST(INTLLIBS)\n    AC_SUBST(INTLOBJS)\n    AC_SUBST(POFILES)\n    AC_SUBST(POSUB)\n\n    dnl For backward compatibility. Some configure.ins may be using this.\n    nls_cv_header_intl=\n    nls_cv_header_libgt=\n\n    dnl For backward compatibility. Some Makefiles may be using this.\n    DATADIRNAME=share\n    AC_SUBST(DATADIRNAME)\n\n    dnl For backward compatibility. Some Makefiles may be using this.\n    INSTOBJEXT=.mo\n    AC_SUBST(INSTOBJEXT)\n\n    dnl For backward compatibility. Some Makefiles may be using this.\n    GENCAT=gencat\n    AC_SUBST(GENCAT)\n  ])\n\ndnl Usage: Just like MUTT_AM_WITH_NLS, which see.\nAC_DEFUN([MUTT_AM_GNU_GETTEXT],\n  [AC_REQUIRE([AC_PROG_MAKE_SET])dnl\n   AC_REQUIRE([AC_PROG_CC])dnl\n   AC_REQUIRE([AC_CANONICAL_HOST])dnl\n   AC_REQUIRE([AC_PROG_RANLIB])dnl\n   AC_REQUIRE([AC_ISC_POSIX])dnl\n   AC_REQUIRE([AC_HEADER_STDC])dnl\n   AC_REQUIRE([AC_C_CONST])dnl\n   AC_REQUIRE([AC_C_INLINE])dnl\n   AC_REQUIRE([AC_TYPE_OFF_T])dnl\n   AC_REQUIRE([AC_TYPE_SIZE_T])dnl\n   AC_REQUIRE([AC_FUNC_ALLOCA])dnl\n   AC_REQUIRE([AC_FUNC_MMAP])dnl\n   AC_REQUIRE([MUTT_jm_GLIBC21])dnl\n\n   AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \\\nstdlib.h string.h unistd.h sys/param.h])\n   AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \\\ngetgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \\\nstrdup strtoul tsearch __argz_count __argz_stringify __argz_next])\n\n   MUTT_AM_ICONV\n   MUTT_AM_LANGINFO_CODESET\n   MUTT_AM_LC_MESSAGES\n   MUTT_AM_WITH_NLS([$1],[$2],[$3])\n\n   if test \"x$CATOBJEXT\" != \"x\"; then\n     if test \"x$ALL_LINGUAS\" = \"x\"; then\n       LINGUAS=\n     else\n       AC_MSG_CHECKING(for catalogs to be installed)\n       NEW_LINGUAS=\n       for presentlang in $ALL_LINGUAS; do\n         useit=no\n         for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do\n           # Use the presentlang catalog if desiredlang is\n           #   a. equal to presentlang, or\n           #   b. a variant of presentlang (because in this case,\n           #      presentlang can be used as a fallback for messages\n           #      which are not translated in the desiredlang catalog).\n           case \"$desiredlang\" in\n             \"$presentlang\"*) useit=yes;;\n           esac\n         done\n         if test $useit = yes; then\n           NEW_LINGUAS=\"$NEW_LINGUAS $presentlang\"\n         fi\n       done\n       LINGUAS=$NEW_LINGUAS\n       AC_MSG_RESULT($LINGUAS)\n     fi\n\n     dnl Construct list of names of catalog files to be constructed.\n     if test -n \"$LINGUAS\"; then\n       for lang in $LINGUAS; do CATALOGS=\"$CATALOGS $lang$CATOBJEXT\"; done\n     fi\n   fi\n\n   dnl Enable libtool support if the surrounding package wishes it.\n   INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], [])\n   AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)\n  ])\n"
  },
  {
    "path": "m4/glibc21.m4",
    "content": "#serial 2\n\n# Test for the GNU C Library, version 2.1 or newer.\n# From Bruno Haible.\n\nAC_DEFUN([MUTT_jm_GLIBC21],\n  [\n    AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,\n      ac_cv_gnu_library_2_1,\n      [AC_EGREP_CPP([Lucky GNU user],\n\t[\n#include <features.h>\n#ifdef __GNU_LIBRARY__\n #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)\n  Lucky GNU user\n #endif\n#endif\n\t],\n\tac_cv_gnu_library_2_1=yes,\n\tac_cv_gnu_library_2_1=no)\n      ]\n    )\n    AC_SUBST(GLIBC21)\n    GLIBC21=\"$ac_cv_gnu_library_2_1\"\n  ]\n)\n"
  },
  {
    "path": "m4/gpgme.m4",
    "content": "# gpgme.m4 - autoconf macro to detect GPGME.\n# Copyright (C) 2002, 2003, 2004 g10 Code GmbH\n#\n# This file is free software; as a special exception the author gives\n# unlimited permission to copy and/or distribute it, with or without\n# modifications, as long as this notice is preserved.\n#\n# This file is distributed in the hope that it will be useful, but\n# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the\n# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n\nAC_DEFUN([_AM_PATH_GPGME_CONFIG],\n[ AC_ARG_WITH(gpgme-prefix,\n            AC_HELP_STRING([--with-gpgme-prefix=PFX],\n                           [prefix where GPGME is installed (optional)]),\n     gpgme_config_prefix=\"$withval\", gpgme_config_prefix=\"\")\n  if test \"x$gpgme_config_prefix\" != x ; then\n      GPGME_CONFIG=\"$gpgme_config_prefix/bin/gpgme-config\"\n  fi\n  AC_PATH_PROG(GPGME_CONFIG, gpgme-config, no)\n\n  if test \"$GPGME_CONFIG\" != \"no\" ; then\n    gpgme_version=`$GPGME_CONFIG --version`\n  fi\n  gpgme_version_major=`echo $gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\).*/\\1/'`\n  gpgme_version_minor=`echo $gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\).*/\\2/'`\n  gpgme_version_micro=`echo $gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\).*/\\3/'`\n])\n\ndnl AM_PATH_GPGME([MINIMUM-VERSION,\ndnl               [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])\ndnl Test for libgpgme and define GPGME_CFLAGS and GPGME_LIBS.\ndnl\nAC_DEFUN([AM_PATH_GPGME],\n[ AC_REQUIRE([_AM_PATH_GPGME_CONFIG])dnl\n  tmp=ifelse([$1], ,1:0.4.2,$1)\n  if echo \"$tmp\" | grep ':' >/dev/null 2>/dev/null ; then\n     req_gpgme_api=`echo \"$tmp\"     | sed 's/\\(.*\\):\\(.*\\)/\\1/'`\n     min_gpgme_version=`echo \"$tmp\" | sed 's/\\(.*\\):\\(.*\\)/\\2/'`\n  else\n     req_gpgme_api=0\n     min_gpgme_version=\"$tmp\"\n  fi\n\n  AC_MSG_CHECKING(for GPGME - version >= $min_gpgme_version)\n  ok=no\n  if test \"$GPGME_CONFIG\" != \"no\" ; then\n    req_major=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\1/'`\n    req_minor=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\2/'`\n    req_micro=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\3/'`\n    if test \"$gpgme_version_major\" -gt \"$req_major\"; then\n        ok=yes\n    else \n        if test \"$gpgme_version_major\" -eq \"$req_major\"; then\n            if test \"$gpgme_version_minor\" -gt \"$req_minor\"; then\n               ok=yes\n            else\n               if test \"$gpgme_version_minor\" -eq \"$req_minor\"; then\n                   if test \"$gpgme_version_micro\" -ge \"$req_micro\"; then\n                     ok=yes\n                   fi\n               fi\n            fi\n        fi\n    fi\n  fi\n  if test $ok = yes; then\n     # If we have a recent GPGME, we should also check that the\n     # API is compatible.\n     if test \"$req_gpgme_api\" -gt 0 ; then\n        tmp=`$GPGME_CONFIG --api-version 2>/dev/null || echo 0`\n        if test \"$tmp\" -gt 0 ; then\n           if test \"$req_gpgme_api\" -ne \"$tmp\" ; then\n             ok=no\n           fi\n        fi\n     fi\n  fi\n  if test $ok = yes; then\n    GPGME_CFLAGS=`$GPGME_CONFIG --cflags`\n    GPGME_LIBS=`$GPGME_CONFIG --libs`\n    AC_MSG_RESULT(yes)\n    ifelse([$2], , :, [$2])\n  else\n    GPGME_CFLAGS=\"\"\n    GPGME_LIBS=\"\"\n    AC_MSG_RESULT(no)\n    ifelse([$3], , :, [$3])\n  fi\n  AC_SUBST(GPGME_CFLAGS)\n  AC_SUBST(GPGME_LIBS)\n])\n\ndnl AM_PATH_GPGME_PTH([MINIMUM-VERSION,\ndnl                   [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])\ndnl Test for libgpgme and define GPGME_PTH_CFLAGS and GPGME_PTH_LIBS.\ndnl\nAC_DEFUN([AM_PATH_GPGME_PTH],\n[ AC_REQUIRE([_AM_PATH_GPGME_CONFIG])dnl\n  tmp=ifelse([$1], ,1:0.4.2,$1)\n  if echo \"$tmp\" | grep ':' >/dev/null 2>/dev/null ; then\n     req_gpgme_api=`echo \"$tmp\"     | sed 's/\\(.*\\):\\(.*\\)/\\1/'`\n     min_gpgme_version=`echo \"$tmp\" | sed 's/\\(.*\\):\\(.*\\)/\\2/'`\n  else\n     req_gpgme_api=0\n     min_gpgme_version=\"$tmp\"\n  fi\n\n  AC_MSG_CHECKING(for GPGME Pth - version >= $min_gpgme_version)\n  ok=no\n  if test \"$GPGME_CONFIG\" != \"no\" ; then\n    if `$GPGME_CONFIG --thread=pth 2> /dev/null` ; then\n      req_major=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\1/'`\n      req_minor=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\2/'`\n      req_micro=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\3/'`\n      if test \"$gpgme_version_major\" -gt \"$req_major\"; then\n        ok=yes\n      else \n        if test \"$gpgme_version_major\" -eq \"$req_major\"; then\n          if test \"$gpgme_version_minor\" -gt \"$req_minor\"; then\n            ok=yes\n          else\n            if test \"$gpgme_version_minor\" -eq \"$req_minor\"; then\n              if test \"$gpgme_version_micro\" -ge \"$req_micro\"; then\n                ok=yes\n              fi\n            fi\n          fi\n        fi\n      fi\n    fi\n  fi\n  if test $ok = yes; then\n     # If we have a recent GPGME, we should also check that the\n     # API is compatible.\n     if test \"$req_gpgme_api\" -gt 0 ; then\n        tmp=`$GPGME_CONFIG --api-version 2>/dev/null || echo 0`\n        if test \"$tmp\" -gt 0 ; then\n           if test \"$req_gpgme_api\" -ne \"$tmp\" ; then\n             ok=no\n           fi\n        fi\n     fi\n  fi\n  if test $ok = yes; then\n    GPGME_PTH_CFLAGS=`$GPGME_CONFIG --thread=pth --cflags`\n    GPGME_PTH_LIBS=`$GPGME_CONFIG --thread=pth --libs`\n    AC_MSG_RESULT(yes)\n    ifelse([$2], , :, [$2])\n  else\n    GPGME_PTH_CFLAGS=\"\"\n    GPGME_PTH_LIBS=\"\"\n    AC_MSG_RESULT(no)\n    ifelse([$3], , :, [$3])\n  fi\n  AC_SUBST(GPGME_PTH_CFLAGS)\n  AC_SUBST(GPGME_PTH_LIBS)\n])\n\ndnl AM_PATH_GPGME_PTHREAD([MINIMUM-VERSION,\ndnl                       [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])\ndnl Test for libgpgme and define GPGME_PTHREAD_CFLAGS\ndnl  and GPGME_PTHREAD_LIBS.\ndnl\nAC_DEFUN([AM_PATH_GPGME_PTHREAD],\n[ AC_REQUIRE([_AM_PATH_GPGME_CONFIG])dnl\n  tmp=ifelse([$1], ,1:0.4.2,$1)\n  if echo \"$tmp\" | grep ':' >/dev/null 2>/dev/null ; then\n     req_gpgme_api=`echo \"$tmp\"     | sed 's/\\(.*\\):\\(.*\\)/\\1/'`\n     min_gpgme_version=`echo \"$tmp\" | sed 's/\\(.*\\):\\(.*\\)/\\2/'`\n  else\n     req_gpgme_api=0\n     min_gpgme_version=\"$tmp\"\n  fi\n\n  AC_MSG_CHECKING(for GPGME pthread - version >= $min_gpgme_version)\n  ok=no\n  if test \"$GPGME_CONFIG\" != \"no\" ; then\n    if `$GPGME_CONFIG --thread=pthread 2> /dev/null` ; then\n      req_major=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\1/'`\n      req_minor=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\2/'`\n      req_micro=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\3/'`\n      if test \"$gpgme_version_major\" -gt \"$req_major\"; then\n        ok=yes\n      else \n        if test \"$gpgme_version_major\" -eq \"$req_major\"; then\n          if test \"$gpgme_version_minor\" -gt \"$req_minor\"; then\n            ok=yes\n          else\n            if test \"$gpgme_version_minor\" -eq \"$req_minor\"; then\n              if test \"$gpgme_version_micro\" -ge \"$req_micro\"; then\n                ok=yes\n              fi\n            fi\n          fi\n        fi\n      fi\n    fi\n  fi\n  if test $ok = yes; then\n     # If we have a recent GPGME, we should also check that the\n     # API is compatible.\n     if test \"$req_gpgme_api\" -gt 0 ; then\n        tmp=`$GPGME_CONFIG --api-version 2>/dev/null || echo 0`\n        if test \"$tmp\" -gt 0 ; then\n           if test \"$req_gpgme_api\" -ne \"$tmp\" ; then\n             ok=no\n           fi\n        fi\n     fi\n  fi\n  if test $ok = yes; then\n    GPGME_PTHREAD_CFLAGS=`$GPGME_CONFIG --thread=pthread --cflags`\n    GPGME_PTHREAD_LIBS=`$GPGME_CONFIG --thread=pthread --libs`\n    AC_MSG_RESULT(yes)\n    ifelse([$2], , :, [$2])\n  else\n    GPGME_PTHREAD_CFLAGS=\"\"\n    GPGME_PTHREAD_LIBS=\"\"\n    AC_MSG_RESULT(no)\n    ifelse([$3], , :, [$3])\n  fi\n  AC_SUBST(GPGME_PTHREAD_CFLAGS)\n  AC_SUBST(GPGME_PTHREAD_LIBS)\n])\n\n\ndnl AM_PATH_GPGME_GLIB([MINIMUM-VERSION,\ndnl               [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])\ndnl Test for libgpgme-glib and define GPGME_GLIB_CFLAGS and GPGME_GLIB_LIBS.\ndnl\nAC_DEFUN([AM_PATH_GPGME_GLIB],\n[ AC_REQUIRE([_AM_PATH_GPGME_CONFIG])dnl\n  tmp=ifelse([$1], ,1:0.4.2,$1)\n  if echo \"$tmp\" | grep ':' >/dev/null 2>/dev/null ; then\n     req_gpgme_api=`echo \"$tmp\"     | sed 's/\\(.*\\):\\(.*\\)/\\1/'`\n     min_gpgme_version=`echo \"$tmp\" | sed 's/\\(.*\\):\\(.*\\)/\\2/'`\n  else\n     req_gpgme_api=0\n     min_gpgme_version=\"$tmp\"\n  fi\n\n  AC_MSG_CHECKING(for GPGME - version >= $min_gpgme_version)\n  ok=no\n  if test \"$GPGME_CONFIG\" != \"no\" ; then\n    req_major=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\1/'`\n    req_minor=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\2/'`\n    req_micro=`echo $min_gpgme_version | \\\n               sed 's/\\([[0-9]]*\\)\\.\\([[0-9]]*\\)\\.\\([[0-9]]*\\)/\\3/'`\n    if test \"$gpgme_version_major\" -gt \"$req_major\"; then\n        ok=yes\n    else \n        if test \"$gpgme_version_major\" -eq \"$req_major\"; then\n            if test \"$gpgme_version_minor\" -gt \"$req_minor\"; then\n               ok=yes\n            else\n               if test \"$gpgme_version_minor\" -eq \"$req_minor\"; then\n                   if test \"$gpgme_version_micro\" -ge \"$req_micro\"; then\n                     ok=yes\n                   fi\n               fi\n            fi\n        fi\n    fi\n  fi\n  if test $ok = yes; then\n     # If we have a recent GPGME, we should also check that the\n     # API is compatible.\n     if test \"$req_gpgme_api\" -gt 0 ; then\n        tmp=`$GPGME_CONFIG --api-version 2>/dev/null || echo 0`\n        if test \"$tmp\" -gt 0 ; then\n           if test \"$req_gpgme_api\" -ne \"$tmp\" ; then\n             ok=no\n           fi\n        fi\n     fi\n  fi\n  if test $ok = yes; then\n    GPGME_GLIB_CFLAGS=`$GPGME_CONFIG --glib --cflags`\n    GPGME_GLIB_LIBS=`$GPGME_CONFIG --glib --libs`\n    AC_MSG_RESULT(yes)\n    ifelse([$2], , :, [$2])\n  else\n    GPGME_GLIB_CFLAGS=\"\"\n    GPGME_GLIB_LIBS=\"\"\n    AC_MSG_RESULT(no)\n    ifelse([$3], , :, [$3])\n  fi\n  AC_SUBST(GPGME_GLIB_CFLAGS)\n  AC_SUBST(GPGME_GLIB_LIBS)\n])\n\n"
  },
  {
    "path": "m4/gssapi.m4",
    "content": "# gssapi.m4: Find GSSAPI libraries in either Heimdal or MIT implementations\n# Brendan Cully <brendan@kublai.com> 20010529\n\ndnl MUTT_AM_PATH_GSSAPI(PREFIX)\ndnl Search for a GSSAPI implementation in the standard locations plus PREFIX,\ndnl if it is set and not \"yes\".\ndnl Defines GSSAPI_CFLAGS and GSSAPI_LIBS if found.\ndnl Defines GSSAPI_IMPL to \"Heimdal\", \"MIT\", or \"OldMIT\", or \"none\" if not found\nAC_DEFUN([MUTT_AM_PATH_GSSAPI],\n[\n  GSSAPI_PREFIX=[$]$1\n  GSSAPI_IMPL=\"none\"\n  saved_CPPFLAGS=\"$CPPFLAGS\"\n  saved_LDFLAGS=\"$LDFLAGS\"\n  saved_LIBS=\"$LIBS\"\n  dnl First try krb5-config\n  if test \"$GSSAPI_PREFIX\" != \"yes\"\n  then\n    krb5_path=\"$GSSAPI_PREFIX/bin\"\n  else\n    krb5_path=\"$PATH\"\n  fi\n  AC_PATH_PROG(KRB5CFGPATH, krb5-config, none, $krb5_path)\n  if test \"$KRB5CFGPATH\" != \"none\"\n  then\n    GSSAPI_CFLAGS=\"$CPPFLAGS `$KRB5CFGPATH --cflags gssapi`\"\n    GSSAPI_LIBS=\"$MUTTLIBS `$KRB5CFGPATH --libs gssapi`\"\n    case \"`$KRB5CFGPATH --version`\" in\n      \"Kerberos 5 \"*)\tGSSAPI_IMPL=\"MIT\";;\n      ?eimdal*)\t\tGSSAPI_IMPL=\"Heimdal\";;\n      *)\t\tGSSAPI_IMPL=\"Unknown\";;\n   esac\n  else\n    dnl No krb5-config, run the old code\n    if test \"$GSSAPI_PREFIX\" != \"yes\"\n    then\n      GSSAPI_CFLAGS=\"-I$GSSAPI_PREFIX/include\"\n      GSSAPI_LDFLAGS=\"-L$GSSAPI_PREFIX/lib\"\n      CPPFLAGS=\"$CPPFLAGS $GSSAPI_CFLAGS\"\n      LDFLAGS=\"$LDFLAGS $GSSAPI_LDFLAGS\"\n    fi\n\n    dnl New MIT kerberos V support\n    AC_CHECK_LIB(gssapi_krb5, gss_init_sec_context, [\n      GSSAPI_IMPL=\"MIT\",\n      GSSAPI_LIBS=\"$GSSAPI_LDFLAGS -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err\"\n      ],, -lkrb5 -lk5crypto -lcom_err)\n\n    dnl Heimdal kerberos V support\n    if test \"$GSSAPI_IMPL\" = \"none\"\n    then\n      AC_CHECK_LIB(gssapi, gss_init_sec_context, [\n          GSSAPI_IMPL=\"Heimdal\"\n          GSSAPI_LIBS=\"$GSSAPI_LDFLAGS -lgssapi -lkrb5 -ldes -lasn1 -lroken\"\n          GSSAPI_LIBS=\"$GSSAPI_LIBS -lcrypt -lcom_err\"\n          ],, -lkrb5 -ldes -lasn1 -lroken -lcrypt -lcom_err)\n    fi\n\n    dnl Old MIT Kerberos V\n    dnl Note: older krb5 distributions use -lcrypto instead of\n    dnl -lk5crypto, which collides with OpenSSL.  One way of dealing\n    dnl with that is to extract all objects from krb5's libcrypto\n    dnl and from openssl's libcrypto into the same directory, then\n    dnl to create a new libcrypto from these.\n    if test \"$GSSAPI_IMPL\" = \"none\"\n    then\n      AC_CHECK_LIB(gssapi_krb5, g_order_init, [\n        GSSAPI_IMPL=\"OldMIT\",\n        GSSAPI_LIBS=\"$GSSAPI_LDFLAGS -lgssapi_krb5 -lkrb5 -lcrypto -lcom_err\"\n        ],, -lkrb5 -lcrypto -lcom_err)\n    fi\n  fi\n\n  CPPFLAGS=\"$saved_CPPFLAGS\"\n  LDFLAGS=\"$saved_LDFLAGS\"\n  LIBS=\"$saved_LIBS\"\n])\n"
  },
  {
    "path": "m4/iconv.m4",
    "content": "#serial 2\n\ndnl From Bruno Haible.\n\nAC_DEFUN([MUTT_AM_ICONV],\n[\n  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and\n  dnl those with the standalone portable GNU libiconv installed).\n\n  AC_ARG_WITH([libiconv-prefix],\nAC_HELP_STRING([--with-libiconv-prefix@<:@=DIR@:>@], [Search for libiconv in DIR/include and DIR/lib]), [\n    for dir in `echo \"$withval\" | tr : ' '`; do\n      if test -d $dir/include; then CPPFLAGS=\"$CPPFLAGS -I$dir/include\"; fi\n      if test -d $dir/lib; then LDFLAGS=\"$LDFLAGS -L$dir/lib\"; fi\n    done\n   ])\n\n  AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [\n    am_cv_func_iconv=\"no, consider installing GNU libiconv\"\n    am_cv_lib_iconv=no\n    AC_TRY_LINK([#include <stdlib.h>\n#include <iconv.h>],\n      [iconv_t cd = iconv_open(\"\",\"\");\n       iconv(cd,NULL,NULL,NULL,NULL);\n       iconv_close(cd);],\n      am_cv_func_iconv=yes)\n    if test \"$am_cv_func_iconv\" != yes; then\n      am_save_LIBS=\"$LIBS\"\n      LIBS=\"$LIBS -liconv\"\n      AC_TRY_LINK([#include <stdlib.h>\n#include <iconv.h>],\n        [iconv_t cd = iconv_open(\"\",\"\");\n         iconv(cd,NULL,NULL,NULL,NULL);\n         iconv_close(cd);],\n        am_cv_lib_iconv=yes\n        am_cv_func_iconv=yes)\n      LIBS=\"$am_save_LIBS\"\n    fi\n  ])\n  if test \"$am_cv_func_iconv\" = yes; then\n    AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])\n    AC_MSG_CHECKING([for iconv declaration])\n    AC_CACHE_VAL(am_cv_proto_iconv, [\n      AC_TRY_COMPILE([\n#include <stdlib.h>\n#include <iconv.h>\nextern\n#ifdef __cplusplus\n\"C\"\n#endif\n#if defined(__STDC__) || defined(__cplusplus)\nsize_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);\n#else\nsize_t iconv();\n#endif\n], [], am_cv_proto_iconv_arg1=\"\", am_cv_proto_iconv_arg1=\"const\")\n      am_cv_proto_iconv=\"extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);\"])\n    am_cv_proto_iconv=`echo \"[$]am_cv_proto_iconv\" | tr -s ' ' | sed -e 's/( /(/'`\n    AC_MSG_RESULT([$]{ac_t:-\n         }[$]am_cv_proto_iconv)\n    AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,\n      [Define as const if the declaration of iconv() needs const.])\n  fi\n  LIBICONV=\n  if test \"$am_cv_lib_iconv\" = yes; then\n    LIBICONV=\"-liconv\"\n  fi\n  AC_SUBST(LIBICONV)\n])\n"
  },
  {
    "path": "m4/lcmessage.m4",
    "content": "# Check whether LC_MESSAGES is available in <locale.h>.\n# Ulrich Drepper <drepper@cygnus.com>, 1995.\n#\n# This file can be copied and used freely without restrictions.  It can\n# be used in projects which are not available under the GNU General Public\n# License or the GNU Library General Public License but which still want\n# to provide support for the GNU gettext functionality.\n# Please note that the actual code of the GNU gettext library is covered\n# by the GNU Library General Public License, and the rest of the GNU\n# gettext package package is covered by the GNU General Public License.\n# They are *not* in the public domain.\n\n# serial 2\n\nAC_DEFUN([MUTT_AM_LC_MESSAGES],\n  [if test $ac_cv_header_locale_h = yes; then\n    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,\n      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],\n       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])\n    if test $am_cv_val_LC_MESSAGES = yes; then\n      AC_DEFINE(HAVE_LC_MESSAGES, 1,\n        [Define if your <locale.h> file defines LC_MESSAGES.])\n    fi\n  fi])\n"
  },
  {
    "path": "m4/progtest.m4",
    "content": "# Search path for a program which passes the given test.\n# Ulrich Drepper <drepper@cygnus.com>, 1996.\n#\n# This file can be copied and used freely without restrictions.  It can\n# be used in projects which are not available under the GNU General Public\n# License or the GNU Library General Public License but which still want\n# to provide support for the GNU gettext functionality.\n# Please note that the actual code of the GNU gettext library is covered\n# by the GNU Library General Public License, and the rest of the GNU\n# gettext package package is covered by the GNU General Public License.\n# They are *not* in the public domain.\n\n# serial 2\n\ndnl MUTT_AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,\ndnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])\nAC_DEFUN([MUTT_AM_PATH_PROG_WITH_TEST],\n[# Extract the first word of \"$2\", so it can be a program name with args.\nset dummy $2; ac_word=[$]2\nAC_MSG_CHECKING([for $ac_word])\nAC_CACHE_VAL(ac_cv_path_$1,\n[case \"[$]$1\" in\n  /*)\n  ac_cv_path_$1=\"[$]$1\" # Let the user override the test with a path.\n  ;;\n  *)\n  IFS=\"${IFS= \t}\"; ac_save_ifs=\"$IFS\"; IFS=\"${IFS}:\"\n  for ac_dir in ifelse([$5], , $PATH, [$5]); do\n    test -z \"$ac_dir\" && ac_dir=.\n    if test -f $ac_dir/$ac_word; then\n      if [$3]; then\n\tac_cv_path_$1=\"$ac_dir/$ac_word\"\n\tbreak\n      fi\n    fi\n  done\n  IFS=\"$ac_save_ifs\"\ndnl If no 4th arg is given, leave the cache variable unset,\ndnl so AC_PATH_PROGS will keep looking.\nifelse([$4], , , [  test -z \"[$]ac_cv_path_$1\" && ac_cv_path_$1=\"$4\"\n])dnl\n  ;;\nesac])dnl\n$1=\"$ac_cv_path_$1\"\nif test ifelse([$4], , [-n \"[$]$1\"], [\"[$]$1\" != \"$4\"]); then\n  AC_MSG_RESULT([$]$1)\nelse\n  AC_MSG_RESULT(no)\nfi\nAC_SUBST($1)dnl\n])\n"
  },
  {
    "path": "m4/types.m4",
    "content": "dnl types.m4\ndnl macros for type checks not covered by autoconf\n\ndnl MUTT_C99_INTTYPES\ndnl Brendan Cully\ndnl\n# MUTT_C99_INTTYPES\n# Check for C99 integer type definitions, or define if missing\nAC_DEFUN([MUTT_C99_INTTYPES],\n[dnl\nAC_CHECK_HEADERS([inttypes.h])\nAC_CHECK_TYPE([uint32_t],\n  [AC_DEFINE(HAVE_C99_INTTYPES, 1, [Define if you have the C99 integer types])])\nAC_CHECK_SIZEOF(short)\nAC_CHECK_SIZEOF(int)\nAC_CHECK_SIZEOF(long)\nAC_CHECK_SIZEOF(long long)])\nAH_VERBATIM([X_HAVE_C99_INTTYPES],\n  [#ifndef HAVE_C99_INTTYPES\n#  if SIZEOF_SHORT == 4\ntypedef unsigned short uint32_t;\n#  elif SIZEOF_INT == 4\ntypedef unsigned int uint32_t;\n#  elif SIZEOF_LONG == 4\ntypedef unsigned long uint32_t;\n#  endif\n#  if SIZEOF_INT == 8\ntypedef unsigned int uint64_t;\n#  elif SIZEOF_LONG == 8\ntypedef unsigned long uint64_t;\n#  elif SIZEOF_LONG_LONG == 8\ntypedef unsigned long long uint64_t;\n#  endif\n#endif\n  ])\n"
  },
  {
    "path": "mailbox.h",
    "content": "/*\n * Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _MAILBOX_H\n#define _MAILBOX_H\n\n/* flags for mutt_open_mailbox() */\n#define M_NOSORT\t(1<<0) /* do not sort the mailbox after opening it */\n#define M_APPEND\t(1<<1) /* open mailbox for appending messages */\n#define M_READONLY\t(1<<2) /* open in read-only mode */\n#define M_QUIET\t\t(1<<3) /* do not print any messages */\n#define M_NEWFOLDER\t(1<<4) /* create a new folder - same as M_APPEND, but uses\n\t\t\t\t* safe_fopen() for mbox-style folders.\n\t\t\t\t*/\n#ifdef USE_SIDEBAR\n#define M_PEEK\t\t(1<<5) /* revert atime back after taking a look (if applicable) */\n#endif\n\n/* mx_open_new_message() */\n#define M_ADD_FROM\t(1<<0)\t/* add a From_ line */\n#define M_SET_DRAFT\t(1<<1)\t/* set the message draft flag */\n\n/* return values from mx_check_mailbox() */\nenum\n{\n  M_NEW_MAIL = 1,\t/* new mail received in mailbox */\n  M_LOCKED,\t\t/* couldn't lock the mailbox */\n  M_REOPENED,\t\t/* mailbox was reopened */\n  M_FLAGS               /* nondestructive flags change (IMAP) */\n};\n\ntypedef struct\n{\n  FILE *fp;\t/* pointer to the message data */\n  char *path;\t/* path to temp file */\n  char *commited_path; /* the final path generated by mx_commit_message() */\n  short magic;\t/* type of mailbox this message belongs to */\n  short write;\t/* nonzero if message is open for writing */\n  struct {\n    unsigned read : 1;\n    unsigned flagged : 1;\n    unsigned replied : 1;\n    unsigned draft : 1;\n  } flags;\n  time_t received;\t/* the time at which this message was received */\n} MESSAGE;\n\nCONTEXT *mx_open_mailbox (const char *, int, CONTEXT *);\n\nMESSAGE *mx_open_message (CONTEXT *, int);\nMESSAGE *mx_open_new_message (CONTEXT *, HEADER *, int);\n\nvoid mx_fastclose_mailbox (CONTEXT *);\n\nint mx_close_mailbox (CONTEXT *, int *);\nint mx_sync_mailbox (CONTEXT *, int *);\nint mx_commit_message (MESSAGE *, CONTEXT *);\nint mx_close_message (MESSAGE **);\nint mx_get_magic (const char *);\nint mx_set_magic (const char *);\nint mx_check_mailbox (CONTEXT *, int *, int);\n#ifdef USE_IMAP\nint mx_is_imap (const char *);\n#endif\n#ifdef USE_POP\nint mx_is_pop (const char *);\n#endif\n\nint mx_access (const char*, int);\nint mx_check_empty (const char *);\n\nint mx_is_maildir (const char *);\nint mx_is_mh (const char *);\n\n#endif\n"
  },
  {
    "path": "main.c",
    "content": "/*\n * Copyright (C) 1996-2007,2010,2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2007 Thomas Roessler <roessler@does-not-exist.org>\n * Copyright (C) 2004 g10 Code GmbH\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#define MAIN_C 1\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"keymap.h\"\n#include \"mailbox.h\"\n#include \"url.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_idna.h\"\n#ifdef USE_SIDEBAR\n#include \"sidebar.h\"\n#endif\n\n#ifdef USE_SASL\n#include \"mutt_sasl.h\"\n#endif\n\n#ifdef USE_IMAP\n#include \"imap/imap.h\"\n#endif\n\n#ifdef USE_HCACHE\n#include \"hcache.h\"\n#endif\n\n#include <string.h>\n#include <stdlib.h>\n#include <locale.h>\n#include <unistd.h>\n#include <errno.h>\n#include <sys/stat.h>\n#include <sys/utsname.h>\n\n#ifdef HAVE_GETOPT_H\n#include <getopt.h>\n#endif\n\n#ifdef HAVE_STRINGPREP_H\n#include <stringprep.h>\n#elif defined(HAVE_IDN_STRINGPREP_H)\n#include <idn/stringprep.h>\n#endif\n\nstatic const char *ReachingUs = N_(\"\\\nTo contact the developers, please mail to <mutt-dev@mutt.org>.\\n\\\nTo report a bug, please visit http://bugs.mutt.org/.\\n\");\n\nstatic const char *Notice = N_(\"\\\nCopyright (C) 1996-2016 Michael R. Elkins and others.\\n\\\nMutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\\\nMutt is free software, and you are welcome to redistribute it\\n\\\nunder certain conditions; type `mutt -vv' for details.\\n\");\n\nstatic const char *Copyright = N_(\"\\\nCopyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\\\nCopyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\\\nCopyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\\\nCopyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\\\nCopyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\\\nCopyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\\\nCopyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\\\nCopyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\\\nCopyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\\\n\\n\\\nMany others not mentioned here contributed code, fixes,\\n\\\nand suggestions.\\n\");\n\nstatic const char *Licence = N_(\"\\\n    This program is free software; you can redistribute it and/or modify\\n\\\n    it under the terms of the GNU General Public License as published by\\n\\\n    the Free Software Foundation; either version 2 of the License, or\\n\\\n    (at your option) any later version.\\n\\\n\\n\\\n    This program is distributed in the hope that it will be useful,\\n\\\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\\\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\\\n    GNU General Public License for more details.\\n\");\nstatic const char *Obtaining = N_(\"\\\n    You should have received a copy of the GNU General Public License\\n\\\n    along with this program; if not, write to the Free Software\\n\\\n    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\\n\\\n\");\n\nvoid mutt_exit (int code)\n{\n  mutt_endwin (NULL);\n  exit (code);\n}\n\nstatic void mutt_usage (void)\n{\n  puts (mutt_make_version ());\n\n  puts _(\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\\\n       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a <file> [...] --] <addr> [...]\\n\\\n       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] <addr> [...] < message\\n\\\n       mutt [<options>] -p\\n\\\n       mutt [<options>] -A <alias> [...]\\n\\\n       mutt [<options>] -Q <query> [...]\\n\\\n       mutt [<options>] -D\\n\\\n       mutt -v[v]\\n\");\n\n  puts _(\"\\\noptions:\\n\\\n  -A <alias>\\texpand the given alias\\n\\\n  -a <file> [...] --\\tattach file(s) to the message\\n\\\n\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\\\n  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\\\n  -c <address>\\tspecify a carbon-copy (CC) address\\n\\\n  -D\\t\\tprint the value of all variables to stdout\");\n#if DEBUG\n  puts _(\"  -d <level>\\tlog debugging output to ~/.muttdebug0\");\n#endif\n  puts _(\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\\\n  -e <command>\\tspecify a command to be executed after initialization\\n\\\n  -f <file>\\tspecify which mailbox to read\\n\\\n  -F <file>\\tspecify an alternate muttrc file\\n\\\n  -H <file>\\tspecify a draft file to read header and body from\\n\\\n  -i <file>\\tspecify a file which Mutt should include in the body\\n\\\n  -m <type>\\tspecify a default mailbox type\\n\\\n  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\\\n  -p\\t\\trecall a postponed message\");\n  \n  puts _(\"\\\n  -Q <variable>\\tquery a configuration variable\\n\\\n  -R\\t\\topen mailbox in read-only mode\\n\\\n  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\\\n  -v\\t\\tshow version and compile-time definitions\\n\\\n  -x\\t\\tsimulate the mailx send mode\\n\\\n  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\\\n  -z\\t\\texit immediately if there are no messages in the mailbox\\n\\\n  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\\\n  -h\\t\\tthis help message\");\n\n  exit (0);\n}\n\nextern const char cc_version[];\nextern const char cc_cflags[];\nextern const char configure_options[];\n\nstatic char *\nrstrip_in_place(char *s)\n{\n  char *p;\n\n  p = &s[strlen(s)];\n  if (p == s)\n    return s;\n  p--;\n  while (p >= s && (*p == '\\n' || *p == '\\r'))\n    *p-- = '\\0';\n  return s;\n}\n\nstatic void show_version (void)\n{\n  struct utsname uts;\n\n  puts (mutt_make_version());\n  puts (_(Notice));\n\n  uname (&uts);\n\n#ifdef _AIX\n  printf (\"System: %s %s.%s\", uts.sysname, uts.version, uts.release);\n#elif defined (SCO)\n  printf (\"System: SCO %s\", uts.release);\n#else\n  printf (\"System: %s %s\", uts.sysname, uts.release);\n#endif\n\n  printf (\" (%s)\", uts.machine);\n\n#ifdef NCURSES_VERSION\n  printf (\"\\nncurses: %s (compiled with %s)\", curses_version(), NCURSES_VERSION);\n#elif defined(USE_SLANG_CURSES)\n  printf (\"\\nslang: %d\", SLANG_VERSION);\n#endif\n\n#ifdef _LIBICONV_VERSION\n  printf (\"\\nlibiconv: %d.%d\", _LIBICONV_VERSION >> 8,\n\t  _LIBICONV_VERSION & 0xff);\n#endif\n\n#ifdef HAVE_LIBIDN\n  printf (\"\\nlibidn: %s (compiled with %s)\", stringprep_check_version (NULL), \n\t  STRINGPREP_VERSION);\n#endif\n\n#ifdef USE_HCACHE\n  printf (\"\\nhcache backend: %s\", mutt_hcache_backend ());\n#endif\n\n  puts (\"\\n\\nCompiler:\");\n  rstrip_in_place((char *)cc_version);\n  puts (cc_version);\n\n  rstrip_in_place((char *)configure_options);\n  printf (\"\\nConfigure options: %s\\n\", configure_options);\n\n  rstrip_in_place((char *)cc_cflags);\n  printf (\"\\nCompilation CFLAGS: %s\\n\", cc_cflags);\n\n  puts (_(\"\\nCompile options:\"));\n\n#ifdef DOMAIN\n  printf (\"DOMAIN=\\\"%s\\\"\\n\", DOMAIN);\n#else\n  puts (\"-DOMAIN\");\n#endif\n\n#ifdef DEBUG\n  puts (\"+DEBUG\");\n#else\n  puts (\"-DEBUG\");\n#endif\n  \n\n  \n  puts (\n\n#ifdef HOMESPOOL\n\t\"+HOMESPOOL  \"\n#else\n\t\"-HOMESPOOL  \"\n#endif\n\n#ifdef USE_SETGID\n\t\"+USE_SETGID  \"\n#else\n\t\"-USE_SETGID  \"\n#endif\n\n#ifdef USE_DOTLOCK\n\t\"+USE_DOTLOCK  \"\n#else\n\t\"-USE_DOTLOCK  \"\n#endif\n\n#ifdef DL_STANDALONE\n\t\"+DL_STANDALONE  \"\n#else\n\t\"-DL_STANDALONE  \"\n#endif\n\n#ifdef USE_FCNTL\n\t\"+USE_FCNTL  \"\n#else\n\t\"-USE_FCNTL  \"\n#endif\n\n#ifdef USE_FLOCK\n\t\"+USE_FLOCK   \"\n#else\n\t\"-USE_FLOCK   \"\n#endif\n    );\n  puts (\n#ifdef USE_POP\n\t\"+USE_POP  \"\n#else\n\t\"-USE_POP  \"\n#endif\n\n#ifdef USE_IMAP\n        \"+USE_IMAP  \"\n#else\n        \"-USE_IMAP  \"\n#endif\n\n#ifdef USE_SMTP\n\t\"+USE_SMTP  \"\n#else\n\t\"-USE_SMTP  \"\n#endif\n\t\"\\n\"\n\t\n#ifdef USE_SSL_OPENSSL\n\t\"+USE_SSL_OPENSSL  \"\n#else\n\t\"-USE_SSL_OPENSSL  \"\n#endif\n\n#ifdef USE_SSL_GNUTLS\n\t\"+USE_SSL_GNUTLS  \"\n#else\n\t\"-USE_SSL_GNUTLS  \"\n#endif\n\n#ifdef USE_SASL\n\t\"+USE_SASL  \"\n#else\n\t\"-USE_SASL  \"\n#endif\n#ifdef USE_GSS\n\t\"+USE_GSS  \"\n#else\n\t\"-USE_GSS  \"\n#endif\n\n#if HAVE_GETADDRINFO\n\t\"+HAVE_GETADDRINFO  \"\n#else\n\t\"-HAVE_GETADDRINFO  \"\n#endif\n        );\n  \t\n  puts (\n#ifdef HAVE_REGCOMP\n\t\"+HAVE_REGCOMP  \"\n#else\n\t\"-HAVE_REGCOMP  \"\n#endif\n\n#ifdef USE_GNU_REGEX\n\t\"+USE_GNU_REGEX  \"\n#else\n\t\"-USE_GNU_REGEX  \"\n#endif\n\n\t\"\\n\"\n\t\n#ifdef HAVE_COLOR\n\t\"+HAVE_COLOR  \"\n#else\n\t\"-HAVE_COLOR  \"\n#endif\n\t\n#ifdef HAVE_START_COLOR\n\t\"+HAVE_START_COLOR  \"\n#else\n\t\"-HAVE_START_COLOR  \"\n#endif\n\t\n#ifdef HAVE_TYPEAHEAD\n\t\"+HAVE_TYPEAHEAD  \"\n#else\n\t\"-HAVE_TYPEAHEAD  \"\n#endif\n\t\n#ifdef HAVE_BKGDSET\n\t\"+HAVE_BKGDSET  \"\n#else\n\t\"-HAVE_BKGDSET  \"\n#endif\n\n\t\"\\n\"\n\t\n#ifdef HAVE_CURS_SET\n\t\"+HAVE_CURS_SET  \"\n#else\n\t\"-HAVE_CURS_SET  \"\n#endif\n\t\n#ifdef HAVE_META\n\t\"+HAVE_META  \"\n#else\n\t\"-HAVE_META  \"\n#endif\n\t\n#ifdef HAVE_RESIZETERM\n\t\"+HAVE_RESIZETERM  \"\n#else\n\t\"-HAVE_RESIZETERM  \"\n#endif\n        );\t\n  \n  puts (\n#ifdef CRYPT_BACKEND_CLASSIC_PGP\n        \"+CRYPT_BACKEND_CLASSIC_PGP  \"\n#else\n        \"-CRYPT_BACKEND_CLASSIC_PGP  \"\n#endif\n#ifdef CRYPT_BACKEND_CLASSIC_SMIME\n        \"+CRYPT_BACKEND_CLASSIC_SMIME  \"\n#else\n        \"-CRYPT_BACKEND_CLASSIC_SMIME  \"\n#endif\n#ifdef CRYPT_BACKEND_GPGME\n        \"+CRYPT_BACKEND_GPGME  \"\n#else\n        \"-CRYPT_BACKEND_GPGME  \"\n#endif\n        );\n  \n  puts (\n#ifdef EXACT_ADDRESS\n\t\"+EXACT_ADDRESS  \"\n#else\n\t\"-EXACT_ADDRESS  \"\n#endif\n\n#ifdef SUN_ATTACHMENT\n\t\"+SUN_ATTACHMENT  \"\n#else\n\t\"-SUN_ATTACHMENT  \"\n#endif\n\n\t\"\\n\"\n\t\n#ifdef ENABLE_NLS\n\t\"+ENABLE_NLS  \"\n#else\n\t\"-ENABLE_NLS  \"\n#endif\n\n#ifdef LOCALES_HACK\n\t\"+LOCALES_HACK  \"\n#else\n\t\"-LOCALES_HACK  \"\n#endif\n\t      \n#ifdef HAVE_WC_FUNCS\n\t\"+HAVE_WC_FUNCS  \"\n#else\n\t\"-HAVE_WC_FUNCS  \"\n#endif\n\t\n#ifdef HAVE_LANGINFO_CODESET\n\t\"+HAVE_LANGINFO_CODESET  \"\n#else\n\t\"-HAVE_LANGINFO_CODESET  \"\n#endif\n\n\t\n#ifdef HAVE_LANGINFO_YESEXPR\n \t\"+HAVE_LANGINFO_YESEXPR  \"\n#else\n \t\"-HAVE_LANGINFO_YESEXPR  \"\n#endif\n\t\n\t\"\\n\"\n\n#if HAVE_ICONV\n\t\"+HAVE_ICONV  \"\n#else\n\t\"-HAVE_ICONV  \"\n#endif\n\n#if ICONV_NONTRANS\n\t\"+ICONV_NONTRANS  \"\n#else\n\t\"-ICONV_NONTRANS  \"\n#endif\n\n#if HAVE_LIBIDN\n\t\"+HAVE_LIBIDN  \"\n#else\n\t\"-HAVE_LIBIDN  \"\n#endif\n\t\n#if HAVE_GETSID\n\t\"+HAVE_GETSID  \"\n#else\n\t\"-HAVE_GETSID  \"\n#endif\n\n#if USE_HCACHE\n\t\"+USE_HCACHE  \"\n#else\n\t\"-USE_HCACHE  \"\n#endif\n\n#ifdef USE_SIDEBAR\n\t\"+USE_SIDEBAR  \"\n#else\n\t\"-USE_SIDEBAR  \"\n#endif\n\n#if USE_NOTMUCH\n\t\"+NOTMUCH     \"\n#else\n\t\"-NOTMUCH     \"\n#endif\n\n\t);\n\n#ifdef ISPELL\n  printf (\"ISPELL=\\\"%s\\\"\\n\", ISPELL);\n#else\n  puts (\"-ISPELL\");\n#endif\n\n  printf (\"SENDMAIL=\\\"%s\\\"\\n\", SENDMAIL);\n  printf (\"MAILPATH=\\\"%s\\\"\\n\", MAILPATH);\n  printf (\"PKGDATADIR=\\\"%s\\\"\\n\", PKGDATADIR);\n  printf (\"SYSCONFDIR=\\\"%s\\\"\\n\", SYSCONFDIR);\n  printf (\"EXECSHELL=\\\"%s\\\"\\n\", EXECSHELL);\n#ifdef MIXMASTER\n  printf (\"MIXMASTER=\\\"%s\\\"\\n\", MIXMASTER);\n#else\n  puts (\"-MIXMASTER\");\n#endif\n\n  puts(_(ReachingUs));\n\n  mutt_print_patchlist();\n  \n  exit (0);\n}\n\nstatic void start_curses (void)\n{\n  km_init (); /* must come before mutt_init */\n\n#ifdef USE_SLANG_CURSES\n  SLtt_Ignore_Beep = 1; /* don't do that #*$@^! annoying visual beep! */\n  SLsmg_Display_Eight_Bit = 128; /* characters above this are printable */\n  SLtt_set_color(0, NULL, \"default\", \"default\");\n#if SLANG_VERSION >= 20000\n  SLutf8_enable(-1);\n#endif\n#else\n  /* should come before initscr() so that ncurses 4.2 doesn't try to install\n     its own SIGWINCH handler */\n  mutt_signal_init ();\n#endif\n  if (initscr () == NULL)\n  {\n    puts _(\"Error initializing terminal.\");\n    exit (1);\n  }\n#if 1 /* USE_SLANG_CURSES  - commenting out suggested in #455. */\n  /* slang requires the signal handlers to be set after initializing */\n  mutt_signal_init ();\n#endif\n  ci_start_color ();\n  keypad (stdscr, TRUE);\n  cbreak ();\n  noecho ();\n#if HAVE_TYPEAHEAD\n  typeahead (-1);       /* simulate smooth scrolling */\n#endif\n#if HAVE_META\n  meta (stdscr, TRUE);\n#endif\ninit_extended_keys();\n}\n\n#define M_IGNORE  (1<<0)\t/* -z */\n#define M_BUFFY   (1<<1)\t/* -Z */\n#define M_NOSYSRC (1<<2)\t/* -n */\n#define M_RO      (1<<3)\t/* -R */\n#define M_SELECT  (1<<4)\t/* -y */\n\nint main (int argc, char **argv)\n{\n#ifdef USE_SIDEBAR\n  char folder[PATH_MAX] = \"\";\n#else\n  char folder[_POSIX_PATH_MAX] = \"\";\n#endif\n  char *subject = NULL;\n  char *includeFile = NULL;\n  char *draftFile = NULL;\n  char *newMagic = NULL;\n  HEADER *msg = NULL;\n  LIST *attach = NULL;\n  LIST *commands = NULL;\n  LIST *queries = NULL;\n  LIST *alias_queries = NULL;\n  int sendflags = 0;\n  int flags = 0;\n  int version = 0;\n  int i;\n  int explicit_folder = 0;\n  int dump_variables = 0;\n  int edit_infile = 0;\n  extern char *optarg;\n  extern int optind;\n  int double_dash = argc, nargc = 1;\n\n  /* sanity check against stupid administrators */\n  \n  if(getegid() != getgid())\n  {\n    fprintf(stderr, \"%s: I don't want to run with privileges!\\n\",\n\t    argv[0]);\n    exit(1);\n  }\n\n#ifdef ENABLE_NLS\n  /* FIXME what about init.c:1439 ? */\n  setlocale (LC_ALL, \"\");\n  bindtextdomain (PACKAGE, MUTTLOCALEDIR);\n  textdomain (PACKAGE);\n#endif\n\n  setlocale (LC_CTYPE, \"\");\n\n  mutt_error = mutt_nocurses_error;\n  mutt_message = mutt_nocurses_error;\n  (void)mutt_rand32();\n  umask (077);\n\n  memset (Options, 0, sizeof (Options));\n  memset (QuadOptions, 0, sizeof (QuadOptions));\n\n  for (optind = 1; optind < double_dash; )\n  {\n    /* We're getopt'ing POSIXLY, so we'll be here every time getopt()\n     * encounters a non-option.  That could be a file to attach \n     * (all non-options between -a and --) or it could be an address\n     * (which gets collapsed to the front of argv).\n     */\n    for (; optind < argc; optind++)\n    {\n      if (argv[optind][0] == '-' && argv[optind][1] != '\\0')\n      {\n        if (argv[optind][1] == '-' && argv[optind][2] == '\\0')\n          double_dash = optind; /* quit outer loop after getopt */\n        break;                  /* drop through to getopt */\n      }\n\n      /* non-option, either an attachment or address */\n      if (attach)\n        attach = mutt_add_list (attach, argv[optind]);\n      else\n        argv[nargc++] = argv[optind];\n    }\n\n    if ((i = getopt (argc, argv, \"+A:a:b:F:f:c:Dd:Ee:H:s:i:hm:npQ:RvxyzZ\")) != EOF)\n      switch (i)\n      {\n      case 'A':\n        alias_queries = mutt_add_list (alias_queries, optarg);\n        break;\n      case 'a':\n\tattach = mutt_add_list (attach, optarg);\n\tbreak;\n\n      case 'F':\n\tmutt_str_replace (&Muttrc, optarg);\n\tbreak;\n\n      case 'f':\n\tstrfcpy (folder, optarg, sizeof (folder));\n        explicit_folder = 1;\n\tbreak;\n\n      case 'b':\n      case 'c':\n\tif (!msg)\n\t  msg = mutt_new_header ();\n\tif (!msg->env)\n\t  msg->env = mutt_new_envelope ();\n\tif (i == 'b')\n\t  msg->env->bcc = rfc822_parse_adrlist (msg->env->bcc, optarg);\n\telse\n\t  msg->env->cc = rfc822_parse_adrlist (msg->env->cc, optarg);\n\tbreak;\n\n      case 'D':\n\tdump_variables = 1;\n\tbreak;\n\n      case 'd':\n#ifdef DEBUG\n\tif (mutt_atoi (optarg, &debuglevel) < 0 || debuglevel <= 0)\n\t{\n\t  fprintf (stderr, _(\"Error: value '%s' is invalid for -d.\\n\"), optarg);\n\t  return 1;\n\t}\n\tprintf (_(\"Debugging at level %d.\\n\"), debuglevel);\n#else\n\tprintf _(\"DEBUG was not defined during compilation.  Ignored.\\n\");\n#endif\n\tbreak;\n\n      case 'E':\n        edit_infile = 1;\n        break;\n\n      case 'e':\n\tcommands = mutt_add_list (commands, optarg);\n\tbreak;\n\n      case 'H':\n\tdraftFile = optarg;\n\tbreak;\n\n      case 'i':\n\tincludeFile = optarg;\n\tbreak;\n\n      case 'm':\n\t/* should take precedence over .muttrc setting, so save it for later */\n\tnewMagic = optarg; \n\tbreak;\n\n      case 'n':\n\tflags |= M_NOSYSRC;\n\tbreak;\n\n      case 'p':\n\tsendflags |= SENDPOSTPONED;\n\tbreak;\n\n      case 'Q':\n        queries = mutt_add_list (queries, optarg);\n        break;\n      \n      case 'R':\n\tflags |= M_RO; /* read-only mode */\n\tbreak;\n\n      case 's':\n\tsubject = optarg;\n\tbreak;\n\n      case 'v':\n\tversion++;\n\tbreak;\n\n      case 'x': /* mailx compatible send mode */\n\tsendflags |= SENDMAILX;\n\tbreak;\n\n      case 'y': /* My special hack mode */\n\tflags |= M_SELECT;\n\tbreak;\n\n      case 'z':\n\tflags |= M_IGNORE;\n\tbreak;\n\n      case 'Z':\n\tflags |= M_BUFFY | M_IGNORE;\n\tbreak;\n\n      default:\n\tmutt_usage ();\n      }\n  }\n\n  /* collapse remaining argv */\n  while (optind < argc)\n    argv[nargc++] = argv[optind++];\n  optind = 1;\n  argc = nargc;\n\n  switch (version)\n  {\n    case 0:\n      break;\n    case 1:\n      show_version ();\n      break;\n    default:\n      puts (mutt_make_version ());\n      puts (_(Copyright));\n      puts (_(Licence));\n      puts (_(Obtaining));\n      puts (_(ReachingUs));\n      exit (0);\n  }\n\n  /* Check for a batch send. */\n  if (!isatty (0) || queries || alias_queries || dump_variables)\n  {\n    set_option (OPTNOCURSES);\n    sendflags = SENDBATCH;\n  }\n\n  /* This must come before mutt_init() because curses needs to be started\n     before calling the init_pair() function to set the color scheme.  */\n  if (!option (OPTNOCURSES))\n  {\n    start_curses ();\n\n    /* check whether terminal status is supported (must follow curses init) */\n    TSSupported = mutt_ts_capability();\n  }\n\n  /* set defaults and read init files */\n  mutt_init (flags & M_NOSYSRC, commands);\n  mutt_free_list (&commands);\n\n  /* Initialize crypto backends.  */\n  crypt_init ();\n\n  if (newMagic)\n    mx_set_magic (newMagic);\n\n  if (queries)\n  {\n    for (; optind < argc; optind++)\n      queries = mutt_add_list (queries, argv[optind]);\n    return mutt_query_variables (queries);\n  }\n  if (dump_variables)\n    return mutt_dump_variables();\n\n  if (alias_queries)\n  {\n    int rv = 0;\n    ADDRESS *a;\n    for (; optind < argc; optind++)\n      alias_queries = mutt_add_list (alias_queries, argv[optind]);\n    for (; alias_queries; alias_queries = alias_queries->next)\n    {\n      if ((a = mutt_lookup_alias (alias_queries->data)))\n      {\t\n\t/* output in machine-readable form */\n\tmutt_addrlist_to_intl (a, NULL);\n\tmutt_write_address_list (a, stdout, 0, 0);\n      }\n      else\n      {\n\trv = 1;\n\tprintf (\"%s\\n\", alias_queries->data);\n      }\n    }\n    return rv;\n  }\n\n  if (!option (OPTNOCURSES))\n  {\n    SETCOLOR (MT_COLOR_NORMAL);\n    clear ();\n    mutt_error = mutt_curses_error;\n    mutt_message = mutt_curses_message;\n#ifdef USE_SIDEBAR\n    sb_init();\n#endif\n  }\n\n  /* Create the Maildir directory if it doesn't exist. */\n  if (!option (OPTNOCURSES) && Maildir)\n  {\n    struct stat sb;\n    char fpath[_POSIX_PATH_MAX];\n    char msg[STRING];\n\n    strfcpy (fpath, Maildir, sizeof (fpath));\n    mutt_expand_path (fpath, sizeof (fpath));\n#ifdef USE_IMAP\n    /* we're not connected yet - skip mail folder creation */\n    if (!mx_is_imap (fpath))\n#endif\n    if (stat (fpath, &sb) == -1 && errno == ENOENT)\n    {\n      snprintf (msg, sizeof (msg), _(\"%s does not exist. Create it?\"), Maildir);\n      if (mutt_yesorno (msg, M_YES) == M_YES)\n      {\n\tif (mkdir (fpath, 0700) == -1 && errno != EEXIST)\n\t  mutt_error ( _(\"Can't create %s: %s.\"), Maildir, strerror (errno));\n      }\n    }\n  }\n\n  if (sendflags & SENDPOSTPONED)\n  {\n    if (!option (OPTNOCURSES))\n      mutt_flushinp ();\n    ci_send_message (SENDPOSTPONED, NULL, NULL, NULL, NULL);\n    mutt_endwin (NULL);\n  }\n  else if (subject || msg || sendflags || draftFile || includeFile || attach ||\n\t   optind < argc)\n  {\n    FILE *fin = NULL;\n    FILE *fout = NULL;\n    char buf[LONG_STRING];\n    char *tempfile = NULL, *infile = NULL;\n    char *bodytext = NULL, *bodyfile = NULL;\n    int rv = 0;\n    char expanded_infile[_POSIX_PATH_MAX];\n    \n    if (!option (OPTNOCURSES))\n      mutt_flushinp ();\n\n    if (!msg)\n      msg = mutt_new_header ();\n    if (!msg->env)\n      msg->env = mutt_new_envelope ();\n\n    for (i = optind; i < argc; i++)\n    {\n      if (url_check_scheme (argv[i]) == U_MAILTO)\n      {\n        if (url_parse_mailto (msg->env, &bodytext, argv[i]) < 0)\n        {\n          if (!option (OPTNOCURSES))\n            mutt_endwin (NULL);\n          fputs (_(\"Failed to parse mailto: link\\n\"), stderr);\n          exit (1);\n        }\n      }\n      else\n        msg->env->to = rfc822_parse_adrlist (msg->env->to, argv[i]);\n    }\n\n    if (!draftFile && option (OPTAUTOEDIT) && !msg->env->to && !msg->env->cc)\n    {\n      if (!option (OPTNOCURSES))\n        mutt_endwin (NULL);\n      fputs (_(\"No recipients specified.\\n\"), stderr);\n      exit (1);\n    }\n\n    if (subject)\n      msg->env->subject = safe_strdup (subject);\n\n    if (draftFile)\n    {\n      infile = draftFile;\n      includeFile = NULL;\n    }\n    else if (includeFile)\n      infile = includeFile;\n    else\n      edit_infile = 0;\n\n    if (infile || bodytext)\n    {\n      /* Prepare fin and expanded_infile. */\n      if (infile)\n      {\n\tif (mutt_strcmp (\"-\", infile) == 0)\n        {\n          if (edit_infile)\n          {\n            fputs (_(\"Cannot use -E flag with stdin\\n\"), stderr);\n            exit (1);\n          }\n\t  fin = stdin;\n        }\n\telse\n\t{\n\t  strfcpy (expanded_infile, infile, sizeof (expanded_infile));\n\t  mutt_expand_path (expanded_infile, sizeof (expanded_infile));\n\t  if ((fin = fopen (expanded_infile, \"r\")) == NULL)\n\t  {\n\t    if (!option (OPTNOCURSES))\n\t      mutt_endwin (NULL);\n\t    perror (expanded_infile);\n\t    exit (1);\n\t  }\n\t}\n      }\n\n      /* Copy input to a tempfile, and re-point fin to the tempfile.\n       * Note: stdin is always copied to a tempfile, ensuring draftFile\n       * can stat and get the correct st_size below.\n       */\n      if (!edit_infile)\n      {\n        mutt_mktemp (buf, sizeof (buf));\n        tempfile = safe_strdup (buf);\n\n        if ((fout = safe_fopen (tempfile, \"w\")) == NULL)\n        {\n          if (!option (OPTNOCURSES))\n            mutt_endwin (NULL);\n          perror (tempfile);\n          safe_fclose (&fin);\n          FREE (&tempfile);\n          exit (1);\n        }\n        if (fin)\n        {\n          mutt_copy_stream (fin, fout);\n          if (fin != stdin)\n            safe_fclose (&fin);\n        }\n        else if (bodytext)\n          fputs (bodytext, fout);\n        safe_fclose (&fout);\n\n        if ((fin = fopen (tempfile, \"r\")) == NULL)\n        {\n          if (!option (OPTNOCURSES))\n            mutt_endwin (NULL);\n          perror (tempfile);\n          FREE (&tempfile);\n          exit (1);\n        }\n      }\n      /* If editing the infile, keep it around afterwards so\n       * it doesn't get unlinked, and we can rebuild the draftFile\n       */\n      else\n        sendflags |= SENDNOFREEHEADER;\n\n      /* Parse the draftFile into the full HEADER/BODY structure.\n       * Set SENDDRAFTFILE so ci_send_message doesn't overwrite\n       * our msg->content.\n       */\n      if (draftFile)\n      {\n        HEADER *context_hdr = NULL;\n        ENVELOPE *opts_env = msg->env;\n        struct stat st;\n        LIST *uh, **last_uhp;\n\n        sendflags |= SENDDRAFTFILE;\n\n        /* Set up a \"context\" header with just enough information so that\n         * mutt_prepare_template() can parse the message in fin.\n         */\n        context_hdr = mutt_new_header ();\n        context_hdr->offset = 0;\n        context_hdr->content = mutt_new_body ();\n        if (fstat (fileno (fin), &st))\n        {\n          perror (draftFile);\n          exit (1);\n        }\n        context_hdr->content->length = st.st_size;\n\n        mutt_prepare_template (fin, NULL, msg, context_hdr, 0);\n\n        /* Scan for mutt header to set OPTRESUMEDRAFTFILES */\n        for (last_uhp = &msg->env->userhdrs, uh = *last_uhp;\n             uh; uh = *last_uhp)\n        {\n          if (ascii_strncasecmp (\"X-Mutt-Resume-Draft:\", uh->data, 20) == 0)\n          {\n            if (option (OPTRESUMEEDITEDDRAFTFILES))\n              set_option (OPTRESUMEDRAFTFILES);\n\n            *last_uhp = uh->next;\n            uh->next = NULL;\n            mutt_free_list (&uh);\n          }\n          else\n            last_uhp = &uh->next;\n        }\n\n        rfc822_append (&msg->env->to, opts_env->to, 0);\n        rfc822_append (&msg->env->cc, opts_env->cc, 0);\n        rfc822_append (&msg->env->bcc, opts_env->bcc, 0);\n        if (opts_env->subject)\n          mutt_str_replace (&msg->env->subject, opts_env->subject);\n\n        mutt_free_envelope (&opts_env);\n        mutt_free_header (&context_hdr);\n      }\n      /* Editing the includeFile: pass it directly in.\n       * Note that SENDNOFREEHEADER is set above so it isn't unlinked.\n       */\n      else if (edit_infile)\n        bodyfile = expanded_infile;\n      /* For bodytext and unedited includeFile: use the tempfile.\n       */\n      else\n        bodyfile = tempfile;\n\n      if (fin)\n        safe_fclose (&fin);\n    }\n\n    FREE (&bodytext);\n\n    if (attach)\n    {\n      LIST *t = attach;\n      BODY *a = msg->content;\n\n      while (a && a->next)\n        a = a->next;\n\n      while (t)\n      {\n\tif (a)\n\t{\n\t  a->next = mutt_make_file_attach (t->data);\n\t  a = a->next;\n\t}\n\telse\n\t  msg->content = a = mutt_make_file_attach (t->data);\n\tif (!a)\n\t{\n\t  if (!option (OPTNOCURSES))\n\t    mutt_endwin (NULL);\n\t  fprintf (stderr, _(\"%s: unable to attach file.\\n\"), t->data);\n\t  mutt_free_list (&attach);\n\t  exit (1);\n\t}\n\tt = t->next;\n      }\n      mutt_free_list (&attach);\n    }\n\n    rv = ci_send_message (sendflags, msg, bodyfile, NULL, NULL);\n\n    if (edit_infile)\n    {\n      if (includeFile)\n        msg->content->unlink = 0;\n      else if (draftFile)\n      {\n        if (truncate (expanded_infile, 0) == -1)\n        {\n          if (!option (OPTNOCURSES))\n            mutt_endwin (NULL);\n          perror (expanded_infile);\n          exit (1);\n        }\n        if ((fout = safe_fopen (expanded_infile, \"a\")) == NULL)\n        {\n          if (!option (OPTNOCURSES))\n            mutt_endwin (NULL);\n          perror (expanded_infile);\n          exit (1);\n        }\n\n        /* If the message was sent or postponed, these will already\n         * have been done.\n         */\n        if (rv < 0)\n        {\n          if (msg->content->next)\n            msg->content = mutt_make_multipart (msg->content);\n          mutt_encode_descriptions (msg->content, 1);\n          mutt_prepare_envelope (msg->env, 0);\n          mutt_env_to_intl (msg->env, NULL, NULL);\n        }\n\n        mutt_write_rfc822_header (fout, msg->env, msg->content, -1, 0);\n        if (option (OPTRESUMEEDITEDDRAFTFILES))\n          fprintf (fout, \"X-Mutt-Resume-Draft: 1\\n\");\n        fputc ('\\n', fout);\n        if ((mutt_write_mime_body (msg->content, fout) == -1))\n        {\n          if (!option (OPTNOCURSES))\n            mutt_endwin (NULL);\n          safe_fclose (&fout);\n          exit (1);\n        }\n        safe_fclose (&fout);\n      }\n\n      mutt_free_header (&msg);\n    }\n\n    /* !edit_infile && draftFile will leave the tempfile around */\n    if (tempfile)\n    {\n      unlink (tempfile);\n      FREE (&tempfile);\n    }\n\n    if (!option (OPTNOCURSES))\n      mutt_endwin (NULL);\n\n    if (rv)\n      exit(1);\n  }\n  else\n  {\n    if (flags & M_BUFFY)\n    {\n      if (!mutt_buffy_check (0))\n      {\n\tmutt_endwin _(\"No mailbox with new mail.\");\n\texit (1);\n      }\n      folder[0] = 0;\n      mutt_buffy (folder, sizeof (folder));\n    }\n    else if (flags & M_SELECT)\n    {\n      if (!Incoming) {\n\tmutt_endwin _(\"No incoming mailboxes defined.\");\n\texit (1);\n      }\n      folder[0] = 0;\n      mutt_select_file (folder, sizeof (folder), M_SEL_FOLDER | M_SEL_BUFFY);\n      if (!folder[0])\n      {\n\tmutt_endwin (NULL);\n\texit (0);\n      }\n    }\n\n    if (!folder[0])\n      strfcpy (folder, NONULL(Spoolfile), sizeof (folder));\n    mutt_expand_path (folder, sizeof (folder));\n\n#ifdef USE_SIDEBAR\n    {\n      char tmpfolder[PATH_MAX] = \"\";\n      strfcpy (tmpfolder, folder, sizeof (tmpfolder));\n      if (!realpath (tmpfolder, folder))\n        strfcpy (folder, tmpfolder, sizeof (tmpfolder));\n    }\n#endif\n\n    mutt_str_replace (&CurrentFolder, folder);\n    mutt_str_replace (&LastFolder, folder);\n\n    if (flags & M_IGNORE)\n    {\n      /* check to see if there are any messages in the folder */\n      switch (mx_check_empty (folder))\n      {\n\tcase -1:\n\t  mutt_endwin (strerror (errno));\n\t  exit (1);\n\tcase 1:\n\t  mutt_endwin _(\"Mailbox is empty.\");\n\t  exit (1);\n      }\n    }\n\n    mutt_folder_hook (folder);\n\n    if((Context = mx_open_mailbox (folder, ((flags & M_RO) || option (OPTREADONLY)) ? M_READONLY : 0, NULL))\n       || !explicit_folder)\n    {\n#ifdef USE_SIDEBAR\n      sb_set_open_buffy (folder);\n#endif\n      mutt_index_menu ();\n      if (Context)\n\tFREE (&Context);\n    }\n#ifdef USE_IMAP\n    imap_logout_all ();\n#endif\n#ifdef USE_SASL\n    mutt_sasl_done ();\n#endif\n    mutt_free_opts ();\n    mutt_endwin (Errorbuf);\n  }\n\n  exit (0);\n}\n"
  },
  {
    "path": "mapping.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef MAPPING_H\n#define MAPPING_H\n\nstruct mapping_t\n{\n  const char *name;\n  int value;\n};\n\nconst char *mutt_getnamebyvalue (int, const struct mapping_t *);\nchar *mutt_compile_help (char *, size_t, int, const struct mapping_t *);\n\nint mutt_getvaluebyname (const char *, const struct mapping_t *);\n\n#endif\n"
  },
  {
    "path": "mbox.c",
    "content": "/*\n * Copyright (C) 1996-2002,2010,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* This file contains code to parse ``mbox'' and ``mmdf'' style mailboxes */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mailbox.h\"\n#include \"mx.h\"\n#include \"sort.h\"\n#include \"copy.h\"\n#include \"mutt_curses.h\"\n\n#include <sys/stat.h>\n#include <dirent.h>\n#include <string.h>\n#include <utime.h>\n#include <sys/file.h>\n#include <errno.h>\n#include <unistd.h>\n#include <fcntl.h>\n\n/* struct used by mutt_sync_mailbox() to store new offsets */\nstruct m_update_t\n{\n  short valid;\n  LOFF_T hdr;\n  LOFF_T body;\n  long lines;\n  LOFF_T length;\n};\n\n/* parameters:\n * ctx - context to lock\n * excl - exclusive lock?\n * retry - should retry if unable to lock?\n */\nint mbox_lock_mailbox (CONTEXT *ctx, int excl, int retry)\n{\n  int r;\n\n  if ((r = mx_lock_file (ctx->path, fileno (ctx->fp), excl, 1, retry)) == 0)\n    ctx->locked = 1;\n  else if (retry && !excl)\n  {\n    ctx->readonly = 1;\n    return 0;\n  }\n  \n  return (r);\n}\n\nvoid mbox_unlock_mailbox (CONTEXT *ctx)\n{\n  if (ctx->locked)\n  {\n    fflush (ctx->fp);\n\n    mx_unlock_file (ctx->path, fileno (ctx->fp), 1);\n    ctx->locked = 0;\n  }\n}\n\nint mmdf_parse_mailbox (CONTEXT *ctx)\n{\n  char buf[HUGE_STRING];\n  char return_path[LONG_STRING];\n  int count = 0, oldmsgcount = ctx->msgcount;\n  int lines;\n  time_t t;\n  LOFF_T loc, tmploc;\n  HEADER *hdr;\n  struct stat sb;\n#ifdef NFS_ATTRIBUTE_HACK\n  struct utimbuf newtime;\n#endif\n  progress_t progress;\n  char msgbuf[STRING];\n\n  if (stat (ctx->path, &sb) == -1)\n  {\n    mutt_perror (ctx->path);\n    return (-1);\n  }\n#ifdef USE_SIDEBAR\n  ctx->atime = sb.st_atime;\n#endif\n  ctx->mtime = sb.st_mtime;\n  ctx->size = sb.st_size;\n\n#ifdef NFS_ATTRIBUTE_HACK\n  if (sb.st_mtime > sb.st_atime)\n  {\n    newtime.modtime = sb.st_mtime;\n    newtime.actime = time (NULL);\n    utime (ctx->path, &newtime);\n  }\n#endif\n\n  buf[sizeof (buf) - 1] = 0;\n\n  if (!ctx->quiet)\n  {\n    snprintf (msgbuf, sizeof (msgbuf), _(\"Reading %s...\"), ctx->path);\n    mutt_progress_init (&progress, msgbuf, M_PROGRESS_MSG, ReadInc, 0);\n  }\n\n  FOREVER\n  {\n    if (fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL)\n      break;\n\n    if (mutt_strcmp (buf, MMDF_SEP) == 0)\n    {\n      loc = ftello (ctx->fp);\n\n      count++;\n      if (!ctx->quiet)\n\tmutt_progress_update (&progress, count,\n\t\t\t      (int) (loc / (ctx->size / 100 + 1)));\n\n      if (ctx->msgcount == ctx->hdrmax)\n\tmx_alloc_memory (ctx);\n      ctx->hdrs[ctx->msgcount] = hdr = mutt_new_header ();\n      hdr->offset = loc;\n      hdr->index = ctx->msgcount;\n\n      if (fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL)\n      {\n\t/* TODO: memory leak??? */\n\tdprint (1, (debugfile, \"mmdf_parse_mailbox: unexpected EOF\\n\"));\n\tbreak;\n      }\n\n      return_path[0] = 0;\n\n      if (!is_from (buf, return_path, sizeof (return_path), &t))\n      {\n\tif (fseeko (ctx->fp, loc, SEEK_SET) != 0)\n\t{\n\t  dprint (1, (debugfile, \"mmdf_parse_mailbox: fseek() failed\\n\"));\n\t  mutt_error _(\"Mailbox is corrupt!\");\n\t  return (-1);\n\t}\n      } \n      else\n\thdr->received = t - mutt_local_tz (t);\n\n      hdr->env = mutt_read_rfc822_header (ctx->fp, hdr, 0, 0);\n\n      loc = ftello (ctx->fp);\n\n      if (hdr->content->length > 0 && hdr->lines > 0)\n      {\n\ttmploc = loc + hdr->content->length;\n\n\tif (0 < tmploc && tmploc < ctx->size)\n\t{\n\t  if (fseeko (ctx->fp, tmploc, SEEK_SET) != 0 ||\n\t      fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL ||\n\t      mutt_strcmp (MMDF_SEP, buf) != 0)\n\t  {\n\t    if (fseeko (ctx->fp, loc, SEEK_SET) != 0)\n\t      dprint (1, (debugfile, \"mmdf_parse_mailbox: fseek() failed\\n\"));\n\t    hdr->content->length = -1;\n\t  }\n\t}\n\telse\n\t  hdr->content->length = -1;\n      }\n      else\n\thdr->content->length = -1;\n\n      if (hdr->content->length < 0)\n      {\n\tlines = -1;\n\tdo {\n\t  loc = ftello (ctx->fp);\n\t  if (fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL)\n\t    break;\n\t  lines++;\n\t} while (mutt_strcmp (buf, MMDF_SEP) != 0);\n\n\thdr->lines = lines;\n\thdr->content->length = loc - hdr->content->offset;\n      }\n\n      if (!hdr->env->return_path && return_path[0])\n\thdr->env->return_path = rfc822_parse_adrlist (hdr->env->return_path, return_path);\n\n      if (!hdr->env->from)\n\thdr->env->from = rfc822_cpy_adr (hdr->env->return_path, 0);\n\n      ctx->msgcount++;\n    }\n    else\n    {\n      dprint (1, (debugfile, \"mmdf_parse_mailbox: corrupt mailbox!\\n\"));\n      mutt_error _(\"Mailbox is corrupt!\");\n      return (-1);\n    }\n  }\n\n  if (ctx->msgcount > oldmsgcount)\n    mx_update_context (ctx, ctx->msgcount - oldmsgcount);\n\n  return (0);\n}\n\n/* Note that this function is also called when new mail is appended to the\n * currently open folder, and NOT just when the mailbox is initially read.\n *\n * NOTE: it is assumed that the mailbox being read has been locked before\n * this routine gets called.  Strange things could happen if it's not!\n */\nint mbox_parse_mailbox (CONTEXT *ctx)\n{\n  struct stat sb;\n  char buf[HUGE_STRING], return_path[STRING];\n  HEADER *curhdr;\n  time_t t;\n  int count = 0, lines = 0;\n  LOFF_T loc;\n#ifdef NFS_ATTRIBUTE_HACK\n  struct utimbuf newtime;\n#endif\n  progress_t progress;\n  char msgbuf[STRING];\n\n  /* Save information about the folder at the time we opened it. */\n  if (stat (ctx->path, &sb) == -1)\n  {\n    mutt_perror (ctx->path);\n    return (-1);\n  }\n\n  ctx->size = sb.st_size;\n  ctx->mtime = sb.st_mtime;\n#ifdef USE_SIDEBAR\n  ctx->atime = sb.st_atime;\n#endif\n\n#ifdef NFS_ATTRIBUTE_HACK\n  if (sb.st_mtime > sb.st_atime)\n  {\n    newtime.modtime = sb.st_mtime;\n    newtime.actime = time (NULL);\n    utime (ctx->path, &newtime);\n  }\n#endif\n\n  if (!ctx->readonly)\n    ctx->readonly = access (ctx->path, W_OK) ? 1 : 0;\n\n  if (!ctx->quiet)\n  {\n    snprintf (msgbuf, sizeof (msgbuf), _(\"Reading %s...\"), ctx->path);\n    mutt_progress_init (&progress, msgbuf, M_PROGRESS_MSG, ReadInc, 0);\n  }\n\n  loc = ftello (ctx->fp);\n  while (fgets (buf, sizeof (buf), ctx->fp) != NULL)\n  {\n    if (is_from (buf, return_path, sizeof (return_path), &t))\n    {\n      /* Save the Content-Length of the previous message */\n      if (count > 0)\n      {\n#define PREV ctx->hdrs[ctx->msgcount-1]\n\n\tif (PREV->content->length < 0)\n\t{\n\t  PREV->content->length = loc - PREV->content->offset - 1;\n\t  if (PREV->content->length < 0)\n\t    PREV->content->length = 0;\n\t}\n\tif (!PREV->lines)\n\t  PREV->lines = lines ? lines - 1 : 0;\n      }\n\n      count++;\n\n      if (!ctx->quiet)\n\tmutt_progress_update (&progress, count,\n\t\t\t      (int)(ftello (ctx->fp) / (ctx->size / 100 + 1)));\n\n      if (ctx->msgcount == ctx->hdrmax)\n\tmx_alloc_memory (ctx);\n      \n      curhdr = ctx->hdrs[ctx->msgcount] = mutt_new_header ();\n      curhdr->received = t - mutt_local_tz (t);\n      curhdr->offset = loc;\n      curhdr->index = ctx->msgcount;\n\t\n      curhdr->env = mutt_read_rfc822_header (ctx->fp, curhdr, 0, 0);\n\n      /* if we know how long this message is, either just skip over the body,\n       * or if we don't know how many lines there are, count them now (this will\n       * save time by not having to search for the next message marker).\n       */\n      if (curhdr->content->length > 0)\n      {\n\tLOFF_T tmploc;\n\n\tloc = ftello (ctx->fp);\n\ttmploc = loc + curhdr->content->length + 1;\n\n\tif (0 < tmploc && tmploc < ctx->size)\n\t{\n\t  /*\n\t   * check to see if the content-length looks valid.  we expect to\n\t   * to see a valid message separator at this point in the stream\n\t   */\n\t  if (fseeko (ctx->fp, tmploc, SEEK_SET) != 0 ||\n\t      fgets (buf, sizeof (buf), ctx->fp) == NULL ||\n\t      mutt_strncmp (\"From \", buf, 5) != 0)\n\t  {\n\t    dprint (1, (debugfile, \"mbox_parse_mailbox: bad content-length in message %d (cl=\" OFF_T_FMT \")\\n\", curhdr->index, curhdr->content->length));\n\t    dprint (1, (debugfile, \"\\tLINE: %s\", buf));\n\t    if (fseeko (ctx->fp, loc, SEEK_SET) != 0) /* nope, return the previous position */\n\t    {\n\t      dprint (1, (debugfile, \"mbox_parse_mailbox: fseek() failed\\n\"));\n\t    }\n\t    curhdr->content->length = -1;\n\t  }\n\t}\n\telse if (tmploc != ctx->size)\n\t{\n\t  /* content-length would put us past the end of the file, so it\n\t   * must be wrong\n\t   */\n\t  curhdr->content->length = -1;\n\t}\n\n\tif (curhdr->content->length != -1)\n\t{\n\t  /* good content-length.  check to see if we know how many lines\n\t   * are in this message.\n\t   */\n\t  if (curhdr->lines == 0)\n\t  {\n\t    int cl = curhdr->content->length;\n\n\t    /* count the number of lines in this message */\n\t    if (fseeko (ctx->fp, loc, SEEK_SET) != 0)\n\t      dprint (1, (debugfile, \"mbox_parse_mailbox: fseek() failed\\n\"));\n\t    while (cl-- > 0)\n\t    {\n\t      if (fgetc (ctx->fp) == '\\n')\n\t\tcurhdr->lines++;\n\t    }\n\t  }\n\n\t  /* return to the offset of the next message separator */\n\t  if (fseeko (ctx->fp, tmploc, SEEK_SET) != 0)\n\t    dprint (1, (debugfile, \"mbox_parse_mailbox: fseek() failed\\n\"));\n\t}\n      }\n\n      ctx->msgcount++;\n\n      if (!curhdr->env->return_path && return_path[0])\n\tcurhdr->env->return_path = rfc822_parse_adrlist (curhdr->env->return_path, return_path);\n\n      if (!curhdr->env->from)\n\tcurhdr->env->from = rfc822_cpy_adr (curhdr->env->return_path, 0);\n\n      lines = 0;\n    }\n    else\n      lines++;\n    \n    loc = ftello (ctx->fp);\n  }\n  \n  /*\n   * Only set the content-length of the previous message if we have read more\n   * than one message during _this_ invocation.  If this routine is called\n   * when new mail is received, we need to make sure not to clobber what\n   * previously was the last message since the headers may be sorted.\n   */\n  if (count > 0)\n  {\n    if (PREV->content->length < 0)\n    {\n      PREV->content->length = ftello (ctx->fp) - PREV->content->offset - 1;\n      if (PREV->content->length < 0)\n\tPREV->content->length = 0;\n    }\n\n    if (!PREV->lines)\n      PREV->lines = lines ? lines - 1 : 0;\n\n    mx_update_context (ctx, count);\n  }\n\n  return (0);\n}\n\n#undef PREV\n\n/* open a mbox or mmdf style mailbox */\nint mbox_open_mailbox (CONTEXT *ctx)\n{\n  int rc;\n\n  if ((ctx->fp = fopen (ctx->path, \"r\")) == NULL)\n  {\n    mutt_perror (ctx->path);\n    return (-1);\n  }\n  mutt_block_signals ();\n  if (mbox_lock_mailbox (ctx, 0, 1) == -1)\n  {\n    mutt_unblock_signals ();\n    return (-1);\n  }\n\n  if (ctx->magic == M_MBOX)\n    rc = mbox_parse_mailbox (ctx);\n  else if (ctx->magic == M_MMDF)\n    rc = mmdf_parse_mailbox (ctx);\n  else\n    rc = -1;\n\n  mbox_unlock_mailbox (ctx);\n  mutt_unblock_signals ();\n  return (rc);\n}\n\n/* return 1 if address lists are strictly identical */\nstatic int strict_addrcmp (const ADDRESS *a, const ADDRESS *b)\n{\n  while (a && b)\n  {\n    if (mutt_strcmp (a->mailbox, b->mailbox) ||\n\tmutt_strcmp (a->personal, b->personal))\n      return (0);\n\n    a = a->next;\n    b = b->next;\n  }\n  if (a || b)\n    return (0);\n\n  return (1);\n}\n\nstatic int strict_cmp_lists (const LIST *a, const LIST *b)\n{\n  while (a && b)\n  {\n    if (mutt_strcmp (a->data, b->data))\n      return (0);\n\n    a = a->next;\n    b = b->next;\n  }\n  if (a || b)\n    return (0);\n\n  return (1);\n}\n\nstatic int strict_cmp_envelopes (const ENVELOPE *e1, const ENVELOPE *e2)\n{\n  if (e1 && e2)\n  {\n    if (mutt_strcmp (e1->message_id, e2->message_id) ||\n\tmutt_strcmp (e1->subject, e2->subject) ||\n\t!strict_cmp_lists (e1->references, e2->references) ||\n\t!strict_addrcmp (e1->from, e2->from) ||\n\t!strict_addrcmp (e1->sender, e2->sender) ||\n\t!strict_addrcmp (e1->reply_to, e2->reply_to) ||\n\t!strict_addrcmp (e1->to, e2->to) ||\n\t!strict_addrcmp (e1->cc, e2->cc) ||\n\t!strict_addrcmp (e1->return_path, e2->return_path))\n      return (0);\n    else\n      return (1);\n  }\n  else\n  {\n    if (e1 == NULL && e2 == NULL)\n      return (1);\n    else\n      return (0);\n  }\n}\n\nstatic int strict_cmp_parameters (const PARAMETER *p1, const PARAMETER *p2)\n{\n  while (p1 && p2)\n  {\n    if (mutt_strcmp (p1->attribute, p2->attribute) ||\n\tmutt_strcmp (p1->value, p2->value))\n      return (0);\n\n    p1 = p1->next;\n    p2 = p2->next;\n  }\n  if (p1 || p2)\n    return (0);\n\n  return (1);\n}\n\nstatic int strict_cmp_bodies (const BODY *b1, const BODY *b2)\n{\n  if (b1->type != b2->type ||\n      b1->encoding != b2->encoding ||\n      mutt_strcmp (b1->subtype, b2->subtype) ||\n      mutt_strcmp (b1->description, b2->description) ||\n      !strict_cmp_parameters (b1->parameter, b2->parameter) ||\n      b1->length != b2->length)\n    return (0);\n  return (1);\n}\n\n/* return 1 if headers are strictly identical */\nint mbox_strict_cmp_headers (const HEADER *h1, const HEADER *h2)\n{\n  if (h1 && h2)\n  {\n    if (h1->received != h2->received ||\n\th1->date_sent != h2->date_sent ||\n\th1->content->length != h2->content->length ||\n\th1->lines != h2->lines ||\n\th1->zhours != h2->zhours ||\n\th1->zminutes != h2->zminutes ||\n\th1->zoccident != h2->zoccident ||\n\th1->mime != h2->mime ||\n\t!strict_cmp_envelopes (h1->env, h2->env) ||\n\t!strict_cmp_bodies (h1->content, h2->content))\n      return (0);\n    else\n      return (1);\n  }\n  else\n  {\n    if (h1 == NULL && h2 == NULL)\n      return (1);\n    else\n      return (0);\n  }\n}\n\n/* check to see if the mailbox has changed on disk.\n *\n * return values:\n *\tM_REOPENED\tmailbox has been reopened\n *\tM_NEW_MAIL\tnew mail has arrived!\n *\tM_LOCKED\tcouldn't lock the file\n *\t0\t\tno change\n *\t-1\t\terror\n */\nint mbox_check_mailbox (CONTEXT *ctx, int *index_hint)\n{\n  struct stat st;\n  char buffer[LONG_STRING];\n  int unlock = 0;\n  int modified = 0;\n\n  if (stat (ctx->path, &st) == 0)\n  {\n    if (st.st_mtime == ctx->mtime && st.st_size == ctx->size)\n      return (0);\n\n    if (st.st_size == ctx->size)\n    {\n      /* the file was touched, but it is still the same length, so just exit */\n      ctx->mtime = st.st_mtime;\n      return (0);\n    }\n\n    if (st.st_size > ctx->size)\n    {\n      /* lock the file if it isn't already */\n      if (!ctx->locked)\n      {\n\tmutt_block_signals ();\n\tif (mbox_lock_mailbox (ctx, 0, 0) == -1)\n\t{\n\t  mutt_unblock_signals ();\n\t  /* we couldn't lock the mailbox, but nothing serious happened:\n\t   * probably the new mail arrived: no reason to wait till we can\n\t   * parse it: we'll get it on the next pass\n\t   */\n\t  return (M_LOCKED);\n\t}\n\tunlock = 1;\n      }\n\n      /*\n       * Check to make sure that the only change to the mailbox is that \n       * message(s) were appended to this file.  My heuristic is that we should\n       * see the message separator at *exactly* what used to be the end of the\n       * folder.\n       */\n      if (fseeko (ctx->fp, ctx->size, SEEK_SET) != 0)\n\tdprint (1, (debugfile, \"mbox_check_mailbox: fseek() failed\\n\"));\n      if (fgets (buffer, sizeof (buffer), ctx->fp) != NULL)\n      {\n\tif ((ctx->magic == M_MBOX && mutt_strncmp (\"From \", buffer, 5) == 0) ||\n\t    (ctx->magic == M_MMDF && mutt_strcmp (MMDF_SEP, buffer) == 0))\n\t{\n\t  if (fseeko (ctx->fp, ctx->size, SEEK_SET) != 0)\n\t    dprint (1, (debugfile, \"mbox_check_mailbox: fseek() failed\\n\"));\n\t  if (ctx->magic == M_MBOX)\n\t    mbox_parse_mailbox (ctx);\n\t  else\n\t    mmdf_parse_mailbox (ctx);\n\n\t  /* Only unlock the folder if it was locked inside of this routine.\n\t   * It may have been locked elsewhere, like in\n\t   * mutt_checkpoint_mailbox().\n\t   */\n\n\t  if (unlock)\n\t  {\n\t    mbox_unlock_mailbox (ctx);\n\t    mutt_unblock_signals ();\n\t  }\n\n\t  return (M_NEW_MAIL); /* signal that new mail arrived */\n\t}\n\telse\n\t  modified = 1;\n      }\n      else\n      {\n\tdprint (1, (debugfile, \"mbox_check_mailbox: fgets returned NULL.\\n\"));\n\tmodified = 1;\n      }\n    }\n    else\n      modified = 1;\n  }\n\n  if (modified)\n  {\n    if (mutt_reopen_mailbox (ctx, index_hint) != -1)\n    {\n      if (unlock)\n      {\n\tmbox_unlock_mailbox (ctx);\n\tmutt_unblock_signals ();\n      }\n      return (M_REOPENED);\n    }\n  }\n\n  /* fatal error */\n\n  mbox_unlock_mailbox (ctx);\n  mx_fastclose_mailbox (ctx);\n  mutt_unblock_signals ();\n  mutt_error _(\"Mailbox was corrupted!\");\n  return (-1);\n}\n\n/*\n * Returns 1 if the mailbox has at least 1 new messages (not old)\n * otherwise returns 0.\n */\nstatic int mbox_has_new(CONTEXT *ctx)\n{\n  int i;\n\n  for (i = 0; i < ctx->msgcount; i++)\n    if (!ctx->hdrs[i]->deleted && !ctx->hdrs[i]->read && !ctx->hdrs[i]->old)\n      return 1;\n  return 0;\n}\n\n/* if mailbox has at least 1 new message, sets mtime > atime of mailbox\n * so buffy check reports new mail */\nvoid mbox_reset_atime (CONTEXT *ctx, struct stat *st)\n{\n  struct utimbuf utimebuf;\n  struct stat _st;\n\n  if (!st)\n  {\n    if (stat (ctx->path, &_st) < 0)\n      return;\n    st = &_st;\n  }\n\n  utimebuf.actime = st->st_atime;\n  utimebuf.modtime = st->st_mtime;\n\n  /*\n   * When $mbox_check_recent is set, existing new mail is ignored, so do not\n   * reset the atime to mtime-1 to signal new mail.\n   */\n  if (!option(OPTMAILCHECKRECENT) && utimebuf.actime >= utimebuf.modtime && mbox_has_new(ctx))\n    utimebuf.actime = utimebuf.modtime - 1;\n\n  utime (ctx->path, &utimebuf);\n}\n\n/* return values:\n *\t0\tsuccess\n *\t-1\tfailure\n */\nint mbox_sync_mailbox (CONTEXT *ctx, int *index_hint)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  char buf[32];\n  int i, j, save_sort = SORT_ORDER;\n  int rc = -1;\n  int need_sort = 0; /* flag to resort mailbox if new mail arrives */\n  int first = -1;\t/* first message to be written */\n  LOFF_T offset;\t/* location in mailbox to write changed messages */\n  struct stat statbuf;\n  struct m_update_t *newOffset = NULL;\n  struct m_update_t *oldOffset = NULL;\n  FILE *fp = NULL;\n  progress_t progress;\n  char msgbuf[STRING];\n\n  /* sort message by their position in the mailbox on disk */\n  if (Sort != SORT_ORDER)\n  {\n    save_sort = Sort;\n    Sort = SORT_ORDER;\n    mutt_sort_headers (ctx, 0);\n    Sort = save_sort;\n    need_sort = 1;\n  }\n\n  /* need to open the file for writing in such a way that it does not truncate\n   * the file, so use read-write mode.\n   */\n  if ((ctx->fp = freopen (ctx->path, \"r+\", ctx->fp)) == NULL)\n  {\n    mx_fastclose_mailbox (ctx);\n    mutt_error _(\"Fatal error!  Could not reopen mailbox!\");\n    return (-1);\n  }\n\n  mutt_block_signals ();\n\n  if (mbox_lock_mailbox (ctx, 1, 1) == -1)\n  {\n    mutt_unblock_signals ();\n    mutt_error _(\"Unable to lock mailbox!\");\n    goto bail;\n  }\n\n  /* Check to make sure that the file hasn't changed on disk */\n  if ((i = mbox_check_mailbox (ctx, index_hint)) == M_NEW_MAIL ||  i == M_REOPENED)\n  {\n    /* new mail arrived, or mailbox reopened */\n    need_sort = i;\n    rc = i;\n    goto bail;\n  }\n  else if (i < 0)\n    /* fatal error */\n    return (-1);\n\n  /* Create a temporary file to write the new version of the mailbox in. */\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((i = open (tempfile, O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1 ||\n      (fp = fdopen (i, \"w\")) == NULL)\n  {\n    if (-1 != i)\n    {\n      close (i);\n      unlink (tempfile);\n    }\n    mutt_error _(\"Could not create temporary file!\");\n    mutt_sleep (5);\n    goto bail;\n  }\n\n  /* find the first deleted/changed message.  we save a lot of time by only\n   * rewriting the mailbox from the point where it has actually changed.\n   */\n  for (i = 0 ; i < ctx->msgcount && !ctx->hdrs[i]->deleted && \n               !ctx->hdrs[i]->changed && !ctx->hdrs[i]->attach_del; i++)\n    ;\n  if (i == ctx->msgcount)\n  { \n    /* this means ctx->changed or ctx->deleted was set, but no\n     * messages were found to be changed or deleted.  This should\n     * never happen, is we presume it is a bug in mutt.\n     */\n    mutt_error _(\"sync: mbox modified, but no modified messages! (report this bug)\");\n    mutt_sleep(5); /* the mutt_error /will/ get cleared! */\n    dprint(1, (debugfile, \"mbox_sync_mailbox(): no modified messages.\\n\"));\n    unlink (tempfile);\n    goto bail;\n  }\n\n    /* save the index of the first changed/deleted message */\n  first = i; \n  /* where to start overwriting */\n  offset = ctx->hdrs[i]->offset; \n\n  /* the offset stored in the header does not include the MMDF_SEP, so make\n   * sure we seek to the correct location\n   */\n  if (ctx->magic == M_MMDF)\n    offset -= (sizeof MMDF_SEP - 1);\n  \n  /* allocate space for the new offsets */\n  newOffset = safe_calloc (ctx->msgcount - first, sizeof (struct m_update_t));\n  oldOffset = safe_calloc (ctx->msgcount - first, sizeof (struct m_update_t));\n\n  if (!ctx->quiet)\n  {\n    snprintf (msgbuf, sizeof (msgbuf), _(\"Writing %s...\"), ctx->path);\n    mutt_progress_init (&progress, msgbuf, M_PROGRESS_MSG, WriteInc, ctx->msgcount);\n  }\n\n  for (i = first, j = 0; i < ctx->msgcount; i++)\n  {\n    if (!ctx->quiet)\n      mutt_progress_update (&progress, i, (int)(ftello (ctx->fp) / (ctx->size / 100 + 1)));\n    /*\n     * back up some information which is needed to restore offsets when\n     * something fails.\n     */\n    \n    oldOffset[i-first].valid  = 1;\n    oldOffset[i-first].hdr    = ctx->hdrs[i]->offset;\n    oldOffset[i-first].body   = ctx->hdrs[i]->content->offset;\n    oldOffset[i-first].lines  = ctx->hdrs[i]->lines;\n    oldOffset[i-first].length = ctx->hdrs[i]->content->length;\n\n    if (! ctx->hdrs[i]->deleted)\n    {\n      j++;\n\n      if (ctx->magic == M_MMDF)\n      {\n\tif (fputs (MMDF_SEP, fp) == EOF)\n\t{\n\t  mutt_perror (tempfile);\n\t  mutt_sleep (5);\n\t  unlink (tempfile);\n\t  goto bail;\n\t}\n\t  \n      }\n\n      /* save the new offset for this message.  we add `offset' because the\n       * temporary file only contains saved message which are located after\n       * `offset' in the real mailbox\n       */\n      newOffset[i - first].hdr = ftello (fp) + offset;\n\n      if (mutt_copy_message (fp, ctx, ctx->hdrs[i], M_CM_UPDATE,\n                             CH_FROM | CH_UPDATE | CH_UPDATE_LEN) != 0)\n      {\n\tmutt_perror (tempfile);\n\tmutt_sleep (5);\n\tunlink (tempfile);\n\tgoto bail;\n      }\n\n      /* Since messages could have been deleted, the offsets stored in memory\n       * will be wrong, so update what we can, which is the offset of this\n       * message, and the offset of the body.  If this is a multipart message,\n       * we just flush the in memory cache so that the message will be reparsed\n       * if the user accesses it later.\n       */\n      newOffset[i - first].body = ftello (fp) - ctx->hdrs[i]->content->length + offset;\n      mutt_free_body (&ctx->hdrs[i]->content->parts);\n\n      switch(ctx->magic)\n      {\n\tcase M_MMDF: \n\t  if(fputs(MMDF_SEP, fp) == EOF) \n\t  {\n\t    mutt_perror (tempfile);\n\t    mutt_sleep (5);\n\t    unlink (tempfile);\n\t    goto bail; \n\t  }\n\t  break;\n\tdefault:\n\t  if(fputs(\"\\n\", fp) == EOF) \n\t  {\n\t    mutt_perror (tempfile);\n\t    mutt_sleep (5);\n\t    unlink (tempfile);\n\t    goto bail;\n\t  }\n      }\n    }\n  }\n  \n  if (fclose (fp) != 0)\n  {\n    fp = NULL;\n    dprint(1, (debugfile, \"mbox_sync_mailbox: safe_fclose (&) returned non-zero.\\n\"));\n    unlink (tempfile);\n    mutt_perror (tempfile);\n    mutt_sleep (5);\n    goto bail;\n  }\n  fp = NULL;\n\n  /* Save the state of this folder. */\n  if (stat (ctx->path, &statbuf) == -1)\n  {\n    mutt_perror (ctx->path);\n    mutt_sleep (5);\n    unlink (tempfile);\n    goto bail;\n  }\n\n  if ((fp = fopen (tempfile, \"r\")) == NULL)\n  {\n    mutt_unblock_signals ();\n    mx_fastclose_mailbox (ctx);\n    dprint (1, (debugfile, \"mbox_sync_mailbox: unable to reopen temp copy of mailbox!\\n\"));\n    mutt_perror (tempfile);\n    mutt_sleep (5);\n    return (-1);\n  }\n\n  if (fseeko (ctx->fp, offset, SEEK_SET) != 0 ||  /* seek the append location */\n      /* do a sanity check to make sure the mailbox looks ok */\n      fgets (buf, sizeof (buf), ctx->fp) == NULL ||\n      (ctx->magic == M_MBOX && mutt_strncmp (\"From \", buf, 5) != 0) ||\n      (ctx->magic == M_MMDF && mutt_strcmp (MMDF_SEP, buf) != 0))\n  {\n    dprint (1, (debugfile, \"mbox_sync_mailbox: message not in expected position.\"));\n    dprint (1, (debugfile, \"\\tLINE: %s\\n\", buf));\n    i = -1;\n  }\n  else\n  {\n    if (fseeko (ctx->fp, offset, SEEK_SET) != 0) /* return to proper offset */\n    {\n      i = -1;\n      dprint (1, (debugfile, \"mbox_sync_mailbox: fseek() failed\\n\"));\n    }\n    else\n    {\n      /* copy the temp mailbox back into place starting at the first\n       * change/deleted message\n       */\n      if (!ctx->quiet)\n\tmutt_message _(\"Committing changes...\");\n      i = mutt_copy_stream (fp, ctx->fp);\n\n      if (ferror (ctx->fp))\n        i = -1;\n    }\n    if (i == 0)\n    {\n      ctx->size = ftello (ctx->fp); /* update the size of the mailbox */\n      if (ftruncate (fileno (ctx->fp), ctx->size) != 0)\n      {\n        i = -1;\n        dprint (1, (debugfile, \"mbox_sync_mailbox: ftruncate() failed\\n\"));\n      }\n    }\n  }\n\n  safe_fclose (&fp);\n  fp = NULL;\n  mbox_unlock_mailbox (ctx);\n\n  if (safe_fclose (&ctx->fp) != 0 || i == -1)\n  {\n    /* error occurred while writing the mailbox back, so keep the temp copy\n     * around\n     */\n    \n    char savefile[_POSIX_PATH_MAX];\n    \n    snprintf (savefile, sizeof (savefile), \"%s/mutt.%s-%s-%u\",\n\t      NONULL (Tempdir), NONULL(Username), NONULL(Hostname), (unsigned int)getpid ());\n    rename (tempfile, savefile);\n    mutt_unblock_signals ();\n    mx_fastclose_mailbox (ctx);\n    mutt_pretty_mailbox (savefile, sizeof (savefile));\n    mutt_error (_(\"Write failed!  Saved partial mailbox to %s\"), savefile);\n    mutt_sleep (5);\n    return (-1);\n  }\n\n  /* Restore the previous access/modification times */\n  mbox_reset_atime (ctx, &statbuf);\n\n  /* reopen the mailbox in read-only mode */\n  if ((ctx->fp = fopen (ctx->path, \"r\")) == NULL)\n  {\n    unlink (tempfile);\n    mutt_unblock_signals ();\n    mx_fastclose_mailbox (ctx);\n    mutt_error _(\"Fatal error!  Could not reopen mailbox!\");\n    return (-1);\n  }\n\n  /* update the offsets of the rewritten messages */\n  for (i = first, j = first; i < ctx->msgcount; i++)\n  {\n    if (!ctx->hdrs[i]->deleted)\n    {\n      ctx->hdrs[i]->offset = newOffset[i - first].hdr;\n      ctx->hdrs[i]->content->hdr_offset = newOffset[i - first].hdr;\n      ctx->hdrs[i]->content->offset = newOffset[i - first].body;\n      ctx->hdrs[i]->index = j++;\n    }\n  }\n  FREE (&newOffset);\n  FREE (&oldOffset);\n  unlink (tempfile); /* remove partial copy of the mailbox */\n  mutt_unblock_signals ();\n\n  return (0); /* signal success */\n\nbail:  /* Come here in case of disaster */\n\n  safe_fclose (&fp);\n\n  /* restore offsets, as far as they are valid */\n  if (first >= 0 && oldOffset)\n  {\n    for (i = first; i < ctx->msgcount && oldOffset[i-first].valid; i++)\n    {\n      ctx->hdrs[i]->offset = oldOffset[i-first].hdr;\n      ctx->hdrs[i]->content->hdr_offset = oldOffset[i-first].hdr;\n      ctx->hdrs[i]->content->offset = oldOffset[i-first].body;\n      ctx->hdrs[i]->lines = oldOffset[i-first].lines;\n      ctx->hdrs[i]->content->length = oldOffset[i-first].length;\n    }\n  }\n  \n  /* this is ok to call even if we haven't locked anything */\n  mbox_unlock_mailbox (ctx);\n\n  mutt_unblock_signals ();\n  FREE (&newOffset);\n  FREE (&oldOffset);\n\n  if ((ctx->fp = freopen (ctx->path, \"r\", ctx->fp)) == NULL)\n  {\n    mutt_error _(\"Could not reopen mailbox!\");\n    mx_fastclose_mailbox (ctx);\n    return (-1);\n  }\n\n  if (need_sort)\n    /* if the mailbox was reopened, the thread tree will be invalid so make\n     * sure to start threading from scratch.  */\n    mutt_sort_headers (ctx, (need_sort == M_REOPENED));\n\n  return rc;\n}\n\n/* close a mailbox opened in write-mode */\nint mbox_close_mailbox (CONTEXT *ctx)\n{\n  mx_unlock_file (ctx->path, fileno (ctx->fp), 1);\n  mutt_unblock_signals ();\n  mx_fastclose_mailbox (ctx);\n  return 0;\n}\n\nint mutt_reopen_mailbox (CONTEXT *ctx, int *index_hint)\n{\n  int (*cmp_headers) (const HEADER *, const HEADER *) = NULL;\n  HEADER **old_hdrs;\n  int old_msgcount;\n  int msg_mod = 0;\n  int index_hint_set;\n  int i, j;\n  int rc = -1;\n\n  /* silent operations */\n  ctx->quiet = 1;\n  \n  if (!ctx->quiet)\n    mutt_message _(\"Reopening mailbox...\");\n  \n  /* our heuristics require the old mailbox to be unsorted */\n  if (Sort != SORT_ORDER)\n  {\n    short old_sort;\n\n    old_sort = Sort;\n    Sort = SORT_ORDER;\n    mutt_sort_headers (ctx, 1);\n    Sort = old_sort;\n  }\n\n  old_hdrs = NULL;\n  old_msgcount = 0;\n  \n  /* simulate a close */\n  if (ctx->id_hash)\n    hash_destroy (&ctx->id_hash, NULL);\n  if (ctx->subj_hash)\n    hash_destroy (&ctx->subj_hash, NULL);\n  mutt_clear_threads (ctx);\n  FREE (&ctx->v2r);\n  if (ctx->readonly)\n  {\n    for (i = 0; i < ctx->msgcount; i++)\n      mutt_free_header (&(ctx->hdrs[i])); /* nothing to do! */\n    FREE (&ctx->hdrs);\n  }\n  else\n  {\n      /* save the old headers */\n    old_msgcount = ctx->msgcount;\n    old_hdrs = ctx->hdrs;\n    ctx->hdrs = NULL;\n  }\n\n  ctx->hdrmax = 0;\t/* force allocation of new headers */\n  ctx->msgcount = 0;\n  ctx->vcount = 0;\n  ctx->tagged = 0;\n  ctx->deleted = 0;\n  ctx->new = 0;\n  ctx->unread = 0;\n  ctx->flagged = 0;\n  ctx->changed = 0;\n  ctx->id_hash = NULL;\n  ctx->subj_hash = NULL;\n\n  switch (ctx->magic)\n  {\n    case M_MBOX:\n    case M_MMDF:\n      cmp_headers = mbox_strict_cmp_headers;\n      safe_fclose (&ctx->fp);\n      if (!(ctx->fp = safe_fopen (ctx->path, \"r\")))\n\trc = -1;\n      else\n\trc = ((ctx->magic == M_MBOX) ? mbox_parse_mailbox\n\t                               : mmdf_parse_mailbox) (ctx);\n      break;\n\n    default:\n      rc = -1;\n      break;\n  }\n  \n  if (rc == -1)\n  {\n    /* free the old headers */\n    for (j = 0; j < old_msgcount; j++)\n      mutt_free_header (&(old_hdrs[j]));\n    FREE (&old_hdrs);\n\n    ctx->quiet = 0;\n    return (-1);\n  }\n\n  /* now try to recover the old flags */\n\n  index_hint_set = (index_hint == NULL);\n\n  if (!ctx->readonly)\n  {\n    for (i = 0; i < ctx->msgcount; i++)\n    {\n      int found = 0;\n\n      /* some messages have been deleted, and new  messages have been\n       * appended at the end; the heuristic is that old messages have then\n       * \"advanced\" towards the beginning of the folder, so we begin the\n       * search at index \"i\"\n       */\n      for (j = i; j < old_msgcount; j++)\n      {\n\tif (old_hdrs[j] == NULL)\n\t  continue;\n\tif (cmp_headers (ctx->hdrs[i], old_hdrs[j]))\n\t{\n\t  found = 1;\n\t  break;\n\t}\n      }\n      if (!found)\n      {\n\tfor (j = 0; j < i && j < old_msgcount; j++)\n\t{\n\t  if (old_hdrs[j] == NULL)\n\t    continue;\n\t  if (cmp_headers (ctx->hdrs[i], old_hdrs[j]))\n\t  {\n\t    found = 1;\n\t    break;\n\t  }\n\t}\n      }\n\n      if (found)\n      {\n\t/* this is best done here */\n\tif (!index_hint_set && *index_hint == j)\n\t  *index_hint = i;\n\n\tif (old_hdrs[j]->changed)\n\t{\n\t  /* Only update the flags if the old header was changed;\n\t   * otherwise, the header may have been modified externally,\n\t   * and we don't want to lose _those_ changes\n\t   */\n\t  mutt_set_flag (ctx, ctx->hdrs[i], M_FLAG, old_hdrs[j]->flagged);\n\t  mutt_set_flag (ctx, ctx->hdrs[i], M_REPLIED, old_hdrs[j]->replied);\n\t  mutt_set_flag (ctx, ctx->hdrs[i], M_OLD, old_hdrs[j]->old);\n\t  mutt_set_flag (ctx, ctx->hdrs[i], M_READ, old_hdrs[j]->read);\n\t}\n\tmutt_set_flag (ctx, ctx->hdrs[i], M_DELETE, old_hdrs[j]->deleted);\n\tmutt_set_flag (ctx, ctx->hdrs[i], M_TAG, old_hdrs[j]->tagged);\n\n\t/* we don't need this header any more */\n\tmutt_free_header (&(old_hdrs[j]));\n      }\n    }\n\n    /* free the remaining old headers */\n    for (j = 0; j < old_msgcount; j++)\n    {\n      if (old_hdrs[j])\n      {\n\tmutt_free_header (&(old_hdrs[j]));\n\tmsg_mod = 1;\n      }\n    }\n    FREE (&old_hdrs);\n  }\n\n  ctx->quiet = 0;\n\n  return ((ctx->changed || msg_mod) ? M_REOPENED : M_NEW_MAIL);\n}\n\n/*\n * Returns:\n * 1 if the mailbox is not empty\n * 0 if the mailbox is empty\n * -1 on error\n */\nint mbox_check_empty (const char *path)\n{\n  struct stat st;\n\n  if (stat (path, &st) == -1)\n    return -1;\n\n  return ((st.st_size == 0));\n}\n"
  },
  {
    "path": "mbyte.c",
    "content": "/*\n * Copyright (C) 2000 Edmund Grimley Evans <edmundo@rano.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/*\n * Japanese support by TAKIZAWA Takashi <taki@luna.email.ne.jp>.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mbyte.h\"\n#include \"charset.h\"\n\n#include <errno.h>\n\n#include <ctype.h>\n\n#ifndef EILSEQ\n#define EILSEQ EINVAL\n#endif\n\nint Charset_is_utf8 = 0;\n#ifndef HAVE_WC_FUNCS\nstatic int charset_is_ja = 0;\nstatic iconv_t charset_to_utf8 = (iconv_t)(-1);\nstatic iconv_t charset_from_utf8 = (iconv_t)(-1);\n#endif\n\nvoid mutt_set_charset (char *charset)\n{\n  char buffer[STRING];\n\n  mutt_canonical_charset (buffer, sizeof (buffer), charset);\n\n  Charset_is_utf8 = 0;\n#ifndef HAVE_WC_FUNCS\n  charset_is_ja = 0;\n  if (charset_to_utf8 != (iconv_t)(-1))\n  {\n    iconv_close (charset_to_utf8);\n    charset_to_utf8 = (iconv_t)(-1);\n  }\n  if (charset_from_utf8 != (iconv_t)(-1))\n  {\n    iconv_close (charset_from_utf8);\n    charset_from_utf8 = (iconv_t)(-1);\n  }\n#endif\n\n  if (mutt_is_utf8 (buffer))\n    Charset_is_utf8 = 1;\n#ifndef HAVE_WC_FUNCS\n  else if (!ascii_strcasecmp(buffer, \"euc-jp\") || !ascii_strcasecmp(buffer, \"shift_jis\")\n  \t|| !ascii_strcasecmp(buffer, \"cp932\") || !ascii_strcasecmp(buffer, \"eucJP-ms\"))\n  {\n    charset_is_ja = 1;\n\n    /* Note flags=0 to skip charset-hooks: User masters the $charset\n     * name, and we are sure of our \"utf-8\" constant. So there is no\n     * possibility of wrong name that we would want to try to correct\n     * with a charset-hook. Or rather: If $charset was wrong, we would\n     * want to try to correct... $charset directly.\n     */\n    charset_to_utf8 = mutt_iconv_open (\"utf-8\", charset, 0);\n    charset_from_utf8 = mutt_iconv_open (charset, \"utf-8\", 0);\n  }\n#endif\n\n#if defined(HAVE_BIND_TEXTDOMAIN_CODESET) && defined(ENABLE_NLS)\n  bind_textdomain_codeset(PACKAGE, buffer);\n#endif\n}\n\n#ifndef HAVE_WC_FUNCS\n\n/*\n * For systems that don't have them, we provide here our own\n * implementations of wcrtomb(), mbrtowc(), iswprint() and wcwidth().\n * Instead of using the locale, as these functions normally would,\n * we use Mutt's Charset variable. We support 3 types of charset:\n * (1) For 8-bit charsets, wchar_t uses the same encoding as char.\n * (2) For UTF-8, wchar_t uses UCS.\n * (3) For stateless Japanese encodings, we use UCS and convert\n *     via UTF-8 using iconv.\n * Unfortunately, we can't handle non-stateless encodings.\n */\n\nstatic size_t wcrtomb_iconv (char *s, wchar_t wc, iconv_t cd)\n{\n  char buf[MB_LEN_MAX+1];\n  ICONV_CONST char *ib;\n  char *ob;\n  size_t ibl, obl;\n\n  if (s)\n  {\n    ibl = mutt_wctoutf8 (buf, wc, sizeof (buf));\n    if (ibl == (size_t)(-1))\n      return (size_t)(-1);\n    ib = buf;\n    ob = s;\n    obl = MB_LEN_MAX;\n    iconv (cd, &ib, &ibl, &ob, &obl);\n  }\n  else\n  {\n    ib = \"\";\n    ibl = 1;\n    ob = buf;\n    obl = sizeof (buf);\n    iconv (cd, &ib, &ibl, &ob, &obl);\n  }\n  return ob - s;\n}\n\nsize_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps)\n{\n  /* We only handle stateless encodings, so we can ignore ps. */\n\n  if (Charset_is_utf8)\n    return mutt_wctoutf8 (s, wc, MB_LEN_MAX);\n  else if (charset_from_utf8 != (iconv_t)(-1))\n    return wcrtomb_iconv (s, wc, charset_from_utf8);\n  else\n  {\n    if (!s)\n      return 1;\n    if (wc < 0x100)\n    {\n      *s = wc;\n      return 1;\n    }\n    errno = EILSEQ;\n    return (size_t)(-1);\n  }\n}\n\nsize_t mbrtowc_iconv (wchar_t *pwc, const char *s, size_t n,\n\t\t      mbstate_t *ps, iconv_t cd)\n{\n  static mbstate_t mbstate;\n  ICONV_CONST char *ib, *ibmax;\n  char *ob, *t;\n  size_t ibl, obl, k, r;\n  char bufi[8], bufo[6];\n\n  if (!n)\n    return (size_t)(-2);\n\n  t = memchr (ps, 0, sizeof (*ps));\n  k = t ? (t - (char *)ps) : sizeof (*ps);\n  if (k > sizeof (bufi))\n    k = 0;\n  if (k)\n  {\n    /* use the buffer for input */\n    memcpy (bufi, ps, k);\n    ib = bufi;\n    ibmax = bufi + (k + n < sizeof (bufi) ? k + n : sizeof (bufi));\n    memcpy (bufi + k, s, ibmax - bufi - k);\n  }\n  else\n  {\n    /* use the real input */\n    ib = (ICONV_CONST char*) s;\n    ibmax = (ICONV_CONST char*) s + n;\n  }\n\n  ob = bufo;\n  obl = sizeof (bufo);\n  ibl = 1;\n\n  for (;;)\n  {\n    r = iconv (cd, &ib, &ibl, &ob, &obl);\n    if (ob > bufo && (!k || ib > bufi + k))\n    {\n      /* we have a character */\n      memset (ps, 0, sizeof (*ps));\n      utf8rtowc (pwc, bufo, ob - bufo, &mbstate);\n      return (pwc && *pwc) ? (ib - (k ? bufi + k : s)) : 0;\n    }\n    else if (!r || (r == (size_t)(-1) && errno == EINVAL))\n    {\n      if (ib + ibl < ibmax)\n\t/* try using more input */\n\t++ibl;\n      else if (k && ib > bufi + k && bufi + k + n > ibmax)\n      {\n\t/* switch to using real input */\n\tib = (ICONV_CONST char*) s + (ib - bufi - k);\n\tibmax = (ICONV_CONST char*) s + n;\n\tk = 0;\n\t++ibl;\n      }\n      else\n      {\n\t/* save the state and give up */\n\tmemset (ps, 0, sizeof (*ps));\n\tif (ibl <= sizeof (mbstate_t)) /* need extra condition here! */\n\t  memcpy (ps, ib, ibl);\n\treturn (size_t)(-2);\n      }\n    }\n    else\n    {\n      /* bad input */\n      errno = EILSEQ;\n      return (size_t)(-1);\n    }\n  }\n}\n\nsize_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)\n{\n  static mbstate_t mbstate;\n\n  if (!ps)\n    ps = &mbstate;\n\n  if (Charset_is_utf8)\n    return utf8rtowc (pwc, s, n, ps);\n  else if (charset_to_utf8 != (iconv_t)(-1))\n    return mbrtowc_iconv (pwc, s, n, ps, charset_to_utf8);\n  else\n  {\n    if (!s)\n    {\n      memset(ps, 0, sizeof(*ps));\n      return 0;\n    }\n    if (!n)\n      return (size_t)-2;\n    if (pwc)\n      *pwc = (wchar_t)(unsigned char)*s;\n    return (*s != 0);\n  }\n}\n\nint iswprint (wint_t wc)\n{\n  if (Charset_is_utf8 || charset_is_ja)\n    return ((0x20 <= wc && wc < 0x7f) || 0xa0 <= wc);\n  else\n    return (0 <= wc && wc < 256) ? IsPrint (wc) : 0;\n}\n\nint iswspace (wint_t wc)\n{\n  if (Charset_is_utf8 || charset_is_ja)\n    return (9 <= wc && wc <= 13) || wc == 32;\n  else\n    return (0 <= wc && wc < 256) ? isspace (wc) : 0;\n}\n\nstatic wint_t towupper_ucs (wint_t x)\n{\n  /* Only works for x < 0x130 */\n  if ((0x60 < x && x < 0x7b) || (0xe0 <= x && x < 0xff && x != 0xf7))\n    return x - 32;\n  else if (0x100 <= x && x < 0x130)\n    return x & ~1;\n  else if (x == 0xb5)\n    return 0x39c;\n  else if (x == 0xff)\n    return 0x178;\n  else\n    return x;\n}\n\nstatic int iswupper_ucs (wint_t x)\n{\n  /* Only works for x < 0x130 */\n  if ((0x60 < x && x < 0x7b) || (0xe0 <= x && x < 0xff && x != 0xf7))\n    return 0;\n  else if ((0x40 < x && x < 0x5b) || (0xbf < x && x < 0xde))\n    return 1;\n  else if (0x100 <= x && x < 0x130)\n    return 1;\n  else if (x == 0xb5)\n    return 1;\n  else if (x == 0xff)\n    return 0;\n  else\n    return 0;\n}\n\nstatic wint_t towlower_ucs (wint_t x)\n{\n  /* Only works for x < 0x130 */\n  if ((0x40 < x && x < 0x5b) || (0xc0 <= x && x < 0xdf && x != 0xd7))\n    return x + 32;\n  else if (0x100 <= x && x < 0x130)\n    return x | 1;\n  else\n    return x;\n}\n\nstatic int iswalnum_ucs (wint_t wc)\n{\n  /* Only works for x < 0x220 */\n  if (wc >= 0x100)\n    return 1;\n  else if (wc < 0x30)\n    return 0;\n  else if (wc < 0x3a)\n    return 1;\n  else if (wc < 0xa0)\n    return (0x40 < (wc & ~0x20) && (wc & ~0x20) < 0x5b);\n  else if (wc < 0xc0)\n    return (wc == 0xaa || wc == 0xb5 || wc == 0xba);\n  else\n    return !(wc == 0xd7 || wc == 0xf7);\n}\n\nstatic int iswalpha_ucs (wint_t wc)\n{\n  /* Only works for x < 0x220 */\n  if (wc >= 0x100)\n    return 1;\n  else if (wc < 0x3a)\n    return 0;\n  else if (wc < 0xa0)\n    return (0x40 < (wc & ~0x20) && (wc & ~0x20) < 0x5b);\n  else if (wc < 0xc0)\n    return (wc == 0xaa || wc == 0xb5 || wc == 0xba);\n  else\n    return !(wc == 0xd7 || wc == 0xf7);\n}\n\nwint_t towupper (wint_t wc)\n{\n  if (Charset_is_utf8 || charset_is_ja)\n    return towupper_ucs (wc);\n  else\n    return (0 <= wc && wc < 256) ? toupper (wc) : wc;\n}\n\nwint_t towlower (wint_t wc)\n{\n  if (Charset_is_utf8 || charset_is_ja)\n    return towlower_ucs (wc);\n  else\n    return (0 <= wc && wc < 256) ? tolower (wc) : wc;\n}\n\nint iswalnum (wint_t wc)\n{\n  if (Charset_is_utf8 || charset_is_ja)\n    return iswalnum_ucs (wc);\n  else\n    return (0 <= wc && wc < 256) ? isalnum (wc) : 0;\n}\n\nint iswalpha (wint_t wc)\n{\n  if (Charset_is_utf8 || charset_is_ja)\n    return iswalpha_ucs (wc);\n  else\n    return (0 <= wc && wc < 256) ? isalpha (wc) : 0;\n}\n\nint iswupper (wint_t wc)\n{\n  if (Charset_is_utf8 || charset_is_ja)\n    return iswupper_ucs (wc);\n  else\n    return (0 <= wc && wc < 256) ? isupper (wc) : 0;\n}\n\n/*\n * l10n for Japanese:\n *   Symbols, Greek and Cyrillic in JIS X 0208, Japanese Kanji\n *   Character Set, have a column width of 2.\n */\nint wcwidth_ja (wchar_t ucs)\n{\n  if (ucs >= 0x3021)\n    return -1; /* continue with the normal check */\n  /* a rough range for quick check */\n  if ((ucs >= 0x00a1 && ucs <= 0x00fe) || /* Latin-1 Supplement */\n      (ucs >= 0x0391 && ucs <= 0x0451) || /* Greek and Cyrillic */\n      (ucs >= 0x2010 && ucs <= 0x266f) || /* Symbols */\n      (ucs >= 0x3000 && ucs <= 0x3020))   /* CJK Symbols and Punctuation */\n    return 2;\n  else\n    return -1;\n}\n\nint wcwidth_ucs(wchar_t ucs);\n\nint wcwidth (wchar_t wc)\n{\n  if (!Charset_is_utf8)\n  {\n    if (!charset_is_ja)\n    {\n      /* 8-bit case */\n      if (!wc)\n\treturn 0;\n      else if ((0 <= wc && wc < 256) && IsPrint (wc))\n\treturn 1;\n      else\n\treturn -1;\n    }\n    else\n    {\n      /* Japanese */\n      int k = wcwidth_ja (wc);\n      if (k != -1)\n\treturn k;\n    }\n  }\n  return wcwidth_ucs (wc);\n}\n\nsize_t utf8rtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *_ps)\n{\n  static wchar_t mbstate;\n  wchar_t *ps = (wchar_t *)_ps;\n  size_t k = 1;\n  unsigned char c;\n  wchar_t wc;\n  int count;\n\n  if (!ps)\n    ps = &mbstate;\n\n  if (!s)\n  {\n    *ps = 0;\n    return 0;\n  }\n  if (!n)\n    return (size_t)-2;\n\n  if (!*ps)\n  {\n    c = (unsigned char)*s;\n    if (c < 0x80)\n    {\n      if (pwc)\n\t*pwc = c;\n      return (c != 0);\n    }\n    else if (c < 0xc2)\n    {\n      errno = EILSEQ;\n      return (size_t)-1;\n    }\n    else if (c < 0xe0)\n      wc = ((c & 0x1f) << 6) + (count = 0);\n    else if (c < 0xf0)\n      wc = ((c & 0x0f) << 12) + (count = 1);\n    else if (c < 0xf8)\n      wc = ((c & 0x07) << 18) + (count = 2);\n    else if (c < 0xfc)\n      wc = ((c & 0x03) << 24) + (count = 3);\n    else if (c < 0xfe)\n      wc = ((c & 0x01) << 30) + (count = 4);\n    else\n    {\n      errno = EILSEQ;\n      return (size_t)-1;\n    }\n    ++s, --n, ++k;\n  }\n  else\n  {\n    wc = *ps & 0x7fffffff;\n    count = wc & 7; /* if count > 4 it will be caught below */\n  }\n\n  for (; n; ++s, --n, ++k)\n  {\n    c = (unsigned char)*s;\n    if (0x80 <= c && c < 0xc0)\n    {\n      wc |= (c & 0x3f) << (6 * count);\n      if (!count)\n      {\n\tif (pwc)\n\t  *pwc = wc;\n\t*ps = 0;\n\treturn wc ? k : 0;\n      }\n      --count, --wc;\n      if (!(wc >> (11+count*5)))\n      {\n\terrno = count < 4 ? EILSEQ : EINVAL;\n\treturn (size_t)-1;\n      }\n    }\n    else\n    {\n      errno = EILSEQ;\n      return (size_t)-1;\n    }\n  }\n  *ps = wc;\n  return (size_t)-2;\n}\n\n#endif /* !HAVE_WC_FUNCS */\n\nwchar_t replacement_char (void)\n{\n  return Charset_is_utf8 ? 0xfffd : '?';\n}\n\nint mutt_filter_unprintable (char **s)\n{\n  BUFFER *b = NULL;\n  wchar_t wc;\n  size_t k, k2;\n  char scratch[MB_LEN_MAX + 1];\n  char *p = *s;\n  mbstate_t mbstate1, mbstate2;\n\n  if (!(b = mutt_buffer_new ()))\n    return -1;\n  memset (&mbstate1, 0, sizeof (mbstate1));\n  memset (&mbstate2, 0, sizeof (mbstate2));\n  for (; (k = mbrtowc (&wc, p, MB_LEN_MAX, &mbstate1)); p += k)\n  {\n    if (k == (size_t)(-1) || k == (size_t)(-2))\n    {\n      k = 1;\n      memset (&mbstate1, 0, sizeof (mbstate1));\n      wc = replacement_char();\n    }\n    if (!IsWPrint (wc))\n      wc = '?';\n    /* HACK:\n     * Work around a gnu screen bug. See ticket #3827.\n     * Filter out the RIGHT-TO-LEFT and LEFT-TO-RIGHT bidi marks because\n     * they result in screen corruption.\n     */\n    else if (Charset_is_utf8 &&\n             ((wc == (wchar_t)0x200f) || (wc == (wchar_t)0x200e)))\n      wc = '?';\n    k2 = wcrtomb (scratch, wc, &mbstate2);\n    scratch[k2] = '\\0';\n    mutt_buffer_addstr (b, scratch);\n  }\n  FREE (s);  /* __FREE_CHECKED__ */\n  *s = b->data ? b->data : safe_calloc (1, 1);\n  FREE (&b);\n  return 0;\n}\n\n"
  },
  {
    "path": "mbyte.h",
    "content": "#ifndef _MBYTE_H\n# define _MBYTE_H\n\n# ifdef HAVE_WC_FUNCS\n#  ifdef HAVE_WCHAR_H\n#   include <wchar.h>\n#  endif\n#  ifdef HAVE_WCTYPE_H\n#   include <wctype.h>\n#  endif\n# endif\n\n# ifndef HAVE_WC_FUNCS\n#ifdef towupper\n# undef towupper\n#endif\n#ifdef towlower\n# undef towlower\n#endif\n#ifdef iswprint\n# undef iswprint\n#endif\n#ifdef iswspace\n# undef iswspace\n#endif\n#ifdef iswalnum\n# undef iswalnum\n#endif\n#ifdef iswalpha\n# undef iswalpha\n#endif\n#ifdef iswupper\n# undef iswupper\n#endif\nsize_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);\nsize_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);\nint iswprint (wint_t wc);\nint iswspace (wint_t wc);\nint iswalnum (wint_t wc);\nint iswalpha (wint_t wc);\nint iswupper (wint_t wc);\nwint_t towupper (wint_t wc);\nwint_t towlower (wint_t wc);\nint wcwidth (wchar_t wc);\n# endif /* !HAVE_WC_FUNCS */\n\n\nvoid mutt_set_charset (char *charset);\nextern int Charset_is_utf8;\nsize_t utf8rtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *_ps);\nwchar_t replacement_char (void);\n\n#endif /* _MBYTE_H */\n"
  },
  {
    "path": "md5.c",
    "content": "/* md5.c - Functions to compute MD5 message digest of files or memory blocks\n   according to the definition of MD5 in RFC 1321 from April 1992.\n   Copyright (C) 1995,1996,1997,1999,2000,2001,2005,2006,2008 Free Software Foundation, Inc.\n   NOTE: The canonical source of this file is maintained with the GNU C\n   Library.  Bugs can be reported to bug-glibc@prep.ai.mit.edu.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU General Public License as published by the\n   Free Software Foundation; either version 2, or (at your option) any\n   later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program; if not, write to the Free Software Foundation,\n   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */\n\n/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.  */\n\n#ifdef HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#include \"md5.h\"\n\n#include <stddef.h>\n#include <string.h>\n\n#if USE_UNLOCKED_IO\n# include \"unlocked-io.h\"\n#endif\n\n#ifdef _LIBC\n# include <endian.h>\n# if __BYTE_ORDER == __BIG_ENDIAN\n#  define WORDS_BIGENDIAN 1\n# endif\n/* We need to keep the namespace clean so define the MD5 function\n   protected using leading __ .  */\n# define md5_init_ctx __md5_init_ctx\n# define md5_process_block __md5_process_block\n# define md5_process_bytes __md5_process_bytes\n# define md5_finish_ctx __md5_finish_ctx\n# define md5_read_ctx __md5_read_ctx\n# define md5_stream __md5_stream\n# define md5_buffer __md5_buffer\n#endif\n\n#ifdef WORDS_BIGENDIAN\n# define SWAP(n)\t\t\t\t\t\t\t\\\n    (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))\n#else\n# define SWAP(n) (n)\n#endif\n\n#define BLOCKSIZE 4096\n#if BLOCKSIZE % 64 != 0\n# error \"invalid BLOCKSIZE\"\n#endif\n\n/* This array contains the bytes used to pad the buffer to the next\n   64-byte boundary.  (RFC 1321, 3.1: Step 1)  */\nstatic const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ...  */ };\n\n\n/* Initialize structure containing state of computation.\n   (RFC 1321, 3.3: Step 3)  */\nvoid\nmd5_init_ctx (struct md5_ctx *ctx)\n{\n  ctx->A = 0x67452301;\n  ctx->B = 0xefcdab89;\n  ctx->C = 0x98badcfe;\n  ctx->D = 0x10325476;\n\n  ctx->total[0] = ctx->total[1] = 0;\n  ctx->buflen = 0;\n}\n\n/* Copy the 4 byte value from v into the memory location pointed to by *cp,\n   If your architecture allows unaligned access this is equivalent to\n   * (md5_uint32 *) cp = v  */\nstatic inline void\nset_uint32 (char *cp, md5_uint32 v)\n{\n  memcpy (cp, &v, sizeof v);\n}\n\n/* Put result from CTX in first 16 bytes following RESBUF.  The result\n   must be in little endian byte order.  */\nvoid *\nmd5_read_ctx (const struct md5_ctx *ctx, void *resbuf)\n{\n  char *r = resbuf;\n  set_uint32 (r + 0 * sizeof ctx->A, SWAP (ctx->A));\n  set_uint32 (r + 1 * sizeof ctx->B, SWAP (ctx->B));\n  set_uint32 (r + 2 * sizeof ctx->C, SWAP (ctx->C));\n  set_uint32 (r + 3 * sizeof ctx->D, SWAP (ctx->D));\n\n  return resbuf;\n}\n\n/* Process the remaining bytes in the internal buffer and the usual\n   prolog according to the standard and write the result to RESBUF.  */\nvoid *\nmd5_finish_ctx (struct md5_ctx *ctx, void *resbuf)\n{\n  /* Take yet unprocessed bytes into account.  */\n  md5_uint32 bytes = ctx->buflen;\n  size_t size = (bytes < 56) ? 64 / 4 : 64 * 2 / 4;\n\n  /* Now count remaining bytes.  */\n  ctx->total[0] += bytes;\n  if (ctx->total[0] < bytes)\n    ++ctx->total[1];\n\n  /* Put the 64-bit file length in *bits* at the end of the buffer.  */\n  ctx->buffer[size - 2] = SWAP (ctx->total[0] << 3);\n  ctx->buffer[size - 1] = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29));\n\n  memcpy (&((char *) ctx->buffer)[bytes], fillbuf, (size - 2) * 4 - bytes);\n\n  /* Process last bytes.  */\n  md5_process_block (ctx->buffer, size * 4, ctx);\n\n  return md5_read_ctx (ctx, resbuf);\n}\n\n/* Compute MD5 message digest for bytes read from STREAM.  The\n   resulting message digest number will be written into the 16 bytes\n   beginning at RESBLOCK.  */\nint\nmd5_stream (FILE *stream, void *resblock)\n{\n  struct md5_ctx ctx;\n  char buffer[BLOCKSIZE + 72];\n  size_t sum;\n\n  /* Initialize the computation context.  */\n  md5_init_ctx (&ctx);\n\n  /* Iterate over full file contents.  */\n  while (1)\n    {\n      /* We read the file in blocks of BLOCKSIZE bytes.  One call of the\n         computation function processes the whole buffer so that with the\n         next round of the loop another block can be read.  */\n      size_t n;\n      sum = 0;\n\n      /* Read block.  Take care for partial reads.  */\n      while (1)\n\t{\n\t  n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);\n\n\t  sum += n;\n\n\t  if (sum == BLOCKSIZE)\n\t    break;\n\n\t  if (n == 0)\n\t    {\n\t      /* Check for the error flag IFF N == 0, so that we don't\n\t         exit the loop after a partial read due to e.g., EAGAIN\n\t         or EWOULDBLOCK.  */\n\t      if (ferror (stream))\n\t\treturn 1;\n\t      goto process_partial_block;\n\t    }\n\n\t  /* We've read at least one byte, so ignore errors.  But always\n\t     check for EOF, since feof may be true even though N > 0.\n\t     Otherwise, we could end up calling fread after EOF.  */\n\t  if (feof (stream))\n\t    goto process_partial_block;\n\t}\n\n      /* Process buffer with BLOCKSIZE bytes.  Note that\n         BLOCKSIZE % 64 == 0\n       */\n      md5_process_block (buffer, BLOCKSIZE, &ctx);\n    }\n\nprocess_partial_block:\n\n  /* Process any remaining bytes.  */\n  if (sum > 0)\n    md5_process_bytes (buffer, sum, &ctx);\n\n  /* Construct result in desired memory.  */\n  md5_finish_ctx (&ctx, resblock);\n  return 0;\n}\n\n/* Compute MD5 message digest for LEN bytes beginning at BUFFER.  The\n   result is always in little endian byte order, so that a byte-wise\n   output yields to the wanted ASCII representation of the message\n   digest.  */\nvoid *\nmd5_buffer (const char *buffer, size_t len, void *resblock)\n{\n  struct md5_ctx ctx;\n\n  /* Initialize the computation context.  */\n  md5_init_ctx (&ctx);\n\n  /* Process whole buffer but last len % 64 bytes.  */\n  md5_process_bytes (buffer, len, &ctx);\n\n  /* Put result in desired memory area.  */\n  return md5_finish_ctx (&ctx, resblock);\n}\n\n\nvoid\nmd5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx)\n{\n  /* When we already have some bits in our internal buffer concatenate\n     both inputs first.  */\n  if (ctx->buflen != 0)\n    {\n      size_t left_over = ctx->buflen;\n      size_t add = 128 - left_over > len ? len : 128 - left_over;\n\n      memcpy (&((char *) ctx->buffer)[left_over], buffer, add);\n      ctx->buflen += add;\n\n      if (ctx->buflen > 64)\n\t{\n\t  md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx);\n\n\t  ctx->buflen &= 63;\n\t  /* The regions in the following copy operation cannot overlap.  */\n\t  memcpy (ctx->buffer,\n\t\t  &((char *) ctx->buffer)[(left_over + add) & ~63],\n\t\t  ctx->buflen);\n\t}\n\n      buffer = (const char *) buffer + add;\n      len -= add;\n    }\n\n  /* Process available complete blocks.  */\n  if (len >= 64)\n    {\n#if !_STRING_ARCH_unaligned\n# define alignof(type) offsetof (struct { char c; type x; }, x)\n# define UNALIGNED_P(p) (((size_t) p) % alignof (md5_uint32) != 0)\n      if (UNALIGNED_P (buffer))\n\twhile (len > 64)\n\t  {\n\t    md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);\n\t    buffer = (const char *) buffer + 64;\n\t    len -= 64;\n\t  }\n      else\n#endif\n\t{\n\t  md5_process_block (buffer, len & ~63, ctx);\n\t  buffer = (const char *) buffer + (len & ~63);\n\t  len &= 63;\n\t}\n    }\n\n  /* Move remaining bytes in internal buffer.  */\n  if (len > 0)\n    {\n      size_t left_over = ctx->buflen;\n\n      memcpy (&((char *) ctx->buffer)[left_over], buffer, len);\n      left_over += len;\n      if (left_over >= 64)\n\t{\n\t  md5_process_block (ctx->buffer, 64, ctx);\n\t  left_over -= 64;\n\t  memcpy (ctx->buffer, &ctx->buffer[16], left_over);\n\t}\n      ctx->buflen = left_over;\n    }\n}\n\n\n/* These are the four functions used in the four steps of the MD5 algorithm\n   and defined in the RFC 1321.  The first function is a little bit optimized\n   (as found in Colin Plumbs public domain implementation).  */\n/* #define FF(b, c, d) ((b & c) | (~b & d)) */\n#define FF(b, c, d) (d ^ (b & (c ^ d)))\n#define FG(b, c, d) FF (d, b, c)\n#define FH(b, c, d) (b ^ c ^ d)\n#define FI(b, c, d) (c ^ (b | ~d))\n\n/* Process LEN bytes of BUFFER, accumulating context into CTX.\n   It is assumed that LEN % 64 == 0.  */\n\nvoid\nmd5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx)\n{\n  md5_uint32 correct_words[16];\n  const md5_uint32 *words = buffer;\n  size_t nwords = len / sizeof (md5_uint32);\n  const md5_uint32 *endp = words + nwords;\n  md5_uint32 A = ctx->A;\n  md5_uint32 B = ctx->B;\n  md5_uint32 C = ctx->C;\n  md5_uint32 D = ctx->D;\n\n  /* First increment the byte count.  RFC 1321 specifies the possible\n     length of the file up to 2^64 bits.  Here we only compute the\n     number of bytes.  Do a double word increment.  */\n  ctx->total[0] += len;\n  if (ctx->total[0] < len)\n    ++ctx->total[1];\n\n  /* Process all bytes in the buffer with 64 bytes in each round of\n     the loop.  */\n  while (words < endp)\n    {\n      md5_uint32 *cwp = correct_words;\n      md5_uint32 A_save = A;\n      md5_uint32 B_save = B;\n      md5_uint32 C_save = C;\n      md5_uint32 D_save = D;\n\n      /* First round: using the given function, the context and a constant\n         the next context is computed.  Because the algorithms processing\n         unit is a 32-bit word and it is determined to work on words in\n         little endian byte order we perhaps have to change the byte order\n         before the computation.  To reduce the work for the next steps\n         we store the swapped words in the array CORRECT_WORDS.  */\n\n#define OP(a, b, c, d, s, T)\t\t\t\t\t\t\\\n      do\t\t\t\t\t\t\t\t\\\n        {\t\t\t\t\t\t\t\t\\\n\t  a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T;\t\t\\\n\t  ++words;\t\t\t\t\t\t\t\\\n\t  CYCLIC (a, s);\t\t\t\t\t\t\\\n\t  a += b;\t\t\t\t\t\t\t\\\n        }\t\t\t\t\t\t\t\t\\\n      while (0)\n\n      /* It is unfortunate that C does not provide an operator for\n         cyclic rotation.  Hope the C compiler is smart enough.  */\n#define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s)))\n\n      /* Before we start, one word to the strange constants.\n         They are defined in RFC 1321 as\n\n         T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64\n\n         Here is an equivalent invocation using Perl:\n\n         perl -e 'foreach(1..64){printf \"0x%08x\\n\", int (4294967296 * abs (sin $_))}'\n       */\n\n      /* Round 1.  */\n      OP (A, B, C, D, 7, 0xd76aa478);\n      OP (D, A, B, C, 12, 0xe8c7b756);\n      OP (C, D, A, B, 17, 0x242070db);\n      OP (B, C, D, A, 22, 0xc1bdceee);\n      OP (A, B, C, D, 7, 0xf57c0faf);\n      OP (D, A, B, C, 12, 0x4787c62a);\n      OP (C, D, A, B, 17, 0xa8304613);\n      OP (B, C, D, A, 22, 0xfd469501);\n      OP (A, B, C, D, 7, 0x698098d8);\n      OP (D, A, B, C, 12, 0x8b44f7af);\n      OP (C, D, A, B, 17, 0xffff5bb1);\n      OP (B, C, D, A, 22, 0x895cd7be);\n      OP (A, B, C, D, 7, 0x6b901122);\n      OP (D, A, B, C, 12, 0xfd987193);\n      OP (C, D, A, B, 17, 0xa679438e);\n      OP (B, C, D, A, 22, 0x49b40821);\n\n      /* For the second to fourth round we have the possibly swapped words\n         in CORRECT_WORDS.  Redefine the macro to take an additional first\n         argument specifying the function to use.  */\n#undef OP\n#define OP(f, a, b, c, d, k, s, T)\t\t\t\t\t\\\n      do\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\\\n\t  a += f (b, c, d) + correct_words[k] + T;\t\t\t\\\n\t  CYCLIC (a, s);\t\t\t\t\t\t\\\n\t  a += b;\t\t\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\\\n      while (0)\n\n      /* Round 2.  */\n      OP (FG, A, B, C, D, 1, 5, 0xf61e2562);\n      OP (FG, D, A, B, C, 6, 9, 0xc040b340);\n      OP (FG, C, D, A, B, 11, 14, 0x265e5a51);\n      OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa);\n      OP (FG, A, B, C, D, 5, 5, 0xd62f105d);\n      OP (FG, D, A, B, C, 10, 9, 0x02441453);\n      OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);\n      OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8);\n      OP (FG, A, B, C, D, 9, 5, 0x21e1cde6);\n      OP (FG, D, A, B, C, 14, 9, 0xc33707d6);\n      OP (FG, C, D, A, B, 3, 14, 0xf4d50d87);\n      OP (FG, B, C, D, A, 8, 20, 0x455a14ed);\n      OP (FG, A, B, C, D, 13, 5, 0xa9e3e905);\n      OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8);\n      OP (FG, C, D, A, B, 7, 14, 0x676f02d9);\n      OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);\n\n      /* Round 3.  */\n      OP (FH, A, B, C, D, 5, 4, 0xfffa3942);\n      OP (FH, D, A, B, C, 8, 11, 0x8771f681);\n      OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);\n      OP (FH, B, C, D, A, 14, 23, 0xfde5380c);\n      OP (FH, A, B, C, D, 1, 4, 0xa4beea44);\n      OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9);\n      OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60);\n      OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);\n      OP (FH, A, B, C, D, 13, 4, 0x289b7ec6);\n      OP (FH, D, A, B, C, 0, 11, 0xeaa127fa);\n      OP (FH, C, D, A, B, 3, 16, 0xd4ef3085);\n      OP (FH, B, C, D, A, 6, 23, 0x04881d05);\n      OP (FH, A, B, C, D, 9, 4, 0xd9d4d039);\n      OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);\n      OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);\n      OP (FH, B, C, D, A, 2, 23, 0xc4ac5665);\n\n      /* Round 4.  */\n      OP (FI, A, B, C, D, 0, 6, 0xf4292244);\n      OP (FI, D, A, B, C, 7, 10, 0x432aff97);\n      OP (FI, C, D, A, B, 14, 15, 0xab9423a7);\n      OP (FI, B, C, D, A, 5, 21, 0xfc93a039);\n      OP (FI, A, B, C, D, 12, 6, 0x655b59c3);\n      OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92);\n      OP (FI, C, D, A, B, 10, 15, 0xffeff47d);\n      OP (FI, B, C, D, A, 1, 21, 0x85845dd1);\n      OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f);\n      OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);\n      OP (FI, C, D, A, B, 6, 15, 0xa3014314);\n      OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);\n      OP (FI, A, B, C, D, 4, 6, 0xf7537e82);\n      OP (FI, D, A, B, C, 11, 10, 0xbd3af235);\n      OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb);\n      OP (FI, B, C, D, A, 9, 21, 0xeb86d391);\n\n      /* Add the starting values of the context.  */\n      A += A_save;\n      B += B_save;\n      C += C_save;\n      D += D_save;\n    }\n\n  /* Put checksum in context given as argument.  */\n  ctx->A = A;\n  ctx->B = B;\n  ctx->C = C;\n  ctx->D = D;\n}\n\n#ifdef MD5UTIL\n/* local md5 equivalent for header cache versioning */\nint main(void)\n{\n  unsigned char r[16];\n  int rc;\n\n  if ((rc = md5_stream(stdin, r)))\n    return rc;\n\n  printf(\"%02x%02x%02x%02x%02x%02x%02x%02x\"\n         \"%02x%02x%02x%02x%02x%02x%02x%02x\\n\",\n         r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7],\n         r[8], r[9], r[10], r[11], r[12], r[13], r[14], r[15]);\n\n  return 0;\n}\n#endif\n"
  },
  {
    "path": "md5.h",
    "content": "/* Declaration of functions and data types used for MD5 sum computing\n   library functions.\n   Copyright (C) 1995-1997,1999,2000,2001,2004,2005,2006,2008\n      Free Software Foundation, Inc.\n\n   NOTE: The canonical source of this file is maintained with the GNU C\n   Library.  Bugs can be reported to bug-glibc@prep.ai.mit.edu.\n\n   This program is free software; you can redistribute it and/or modify it\n   under the terms of the GNU General Public License as published by the\n   Free Software Foundation; either version 2, or (at your option) any\n   later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program; if not, write to the Free Software Foundation,\n   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */\n\n#ifndef _MD5_H\n#define _MD5_H 1\n\n#include <stdio.h>\n\n#if HAVE_INTTYPES_H\n# include <inttypes.h>\n#endif\n#if HAVE_STDINT_H || _LIBC\n# include <stdint.h>\n#endif\n#if HAVE_SYS_TYPES_H\n# include <sys/types.h>\n#endif\n\n#ifndef __GNUC_PREREQ\n# if defined __GNUC__ && defined __GNUC_MINOR__\n#  define __GNUC_PREREQ(maj, min) \\\n\t((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))\n# else\n#  define __GNUC_PREREQ(maj, min) 0\n# endif\n#endif\n\n#ifndef __THROW\n# if defined __cplusplus && __GNUC_PREREQ (2,8)\n#  define __THROW\tthrow ()\n# else\n#  define __THROW\n# endif\n#endif\n\n#ifndef _LIBC\n# define __md5_buffer md5_buffer\n# define __md5_finish_ctx md5_finish_ctx\n# define __md5_init_ctx md5_init_ctx\n# define __md5_process_block md5_process_block\n# define __md5_process_bytes md5_process_bytes\n# define __md5_read_ctx md5_read_ctx\n# define __md5_stream md5_stream\n#endif\n\ntypedef uint32_t md5_uint32;\n\n/* Structure to save state of computation between the single steps.  */\nstruct md5_ctx\n{\n  md5_uint32 A;\n  md5_uint32 B;\n  md5_uint32 C;\n  md5_uint32 D;\n\n  md5_uint32 total[2];\n  md5_uint32 buflen;\n  md5_uint32 buffer[32];\n};\n\n/*\n * The following three functions are build up the low level used in\n * the functions `md5_stream' and `md5_buffer'.\n */\n\n/* Initialize structure containing state of computation.\n   (RFC 1321, 3.3: Step 3)  */\nextern void __md5_init_ctx (struct md5_ctx *ctx) __THROW;\n\n/* Starting with the result of former calls of this function (or the\n   initialization function update the context for the next LEN bytes\n   starting at BUFFER.\n   It is necessary that LEN is a multiple of 64!!! */\nextern void __md5_process_block (const void *buffer, size_t len,\n\t\t\t\t struct md5_ctx *ctx) __THROW;\n\n/* Starting with the result of former calls of this function (or the\n   initialization function update the context for the next LEN bytes\n   starting at BUFFER.\n   It is NOT required that LEN is a multiple of 64.  */\nextern void __md5_process_bytes (const void *buffer, size_t len,\n\t\t\t\t struct md5_ctx *ctx) __THROW;\n\n/* Process the remaining bytes in the buffer and put result from CTX\n   in first 16 bytes following RESBUF.  The result is always in little\n   endian byte order, so that a byte-wise output yields to the wanted\n   ASCII representation of the message digest.  */\nextern void *__md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) __THROW;\n\n\n/* Put result from CTX in first 16 bytes following RESBUF.  The result is\n   always in little endian byte order, so that a byte-wise output yields\n   to the wanted ASCII representation of the message digest.  */\nextern void *__md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) __THROW;\n\n\n/* Compute MD5 message digest for bytes read from STREAM.  The\n   resulting message digest number will be written into the 16 bytes\n   beginning at RESBLOCK.  */\nextern int __md5_stream (FILE *stream, void *resblock) __THROW;\n\n/* Compute MD5 message digest for LEN bytes beginning at BUFFER.  The\n   result is always in little endian byte order, so that a byte-wise\n   output yields to the wanted ASCII representation of the message\n   digest.  */\nextern void *__md5_buffer (const char *buffer, size_t len,\n\t\t\t   void *resblock) __THROW;\n\n#endif /* md5.h */\n"
  },
  {
    "path": "menu.c",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2012 Michael R. Elkins <me@mutt.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"mbyte.h\"\n#ifdef USE_SIDEBAR\n#include \"sidebar.h\"\n#endif\n\nchar* SearchBuffers[MENU_MAX];\n\n/**\n * get_color - XXX\n */\nstatic int\nget_color (int index, unsigned char *s)\n{\n\tCOLOR_LINE *color;\n\tHEADER *hdr = Context->hdrs[Context->v2r[index]];\n\tint type = *s;\n\n\tswitch (type) {\n\t\tcase MT_COLOR_INDEX_AUTHOR:\n\t\t\tcolor = ColorIndexAuthorList;\n\t\t\tbreak;\n\t\tcase MT_COLOR_INDEX_FLAGS:\n\t\t\tcolor = ColorIndexFlagsList;\n\t\t\tbreak;\n\t\tcase MT_COLOR_INDEX_SUBJECT:\n\t\t\tcolor = ColorIndexSubjectList;\n\t\t\tbreak;\n#ifdef USE_NOTMUCH\n                case MT_COLOR_INDEX_TAG:\n                        for (color = ColorIndexTagList; color; color = color->next)\n                        {\n\t\t\t\tconst char * transform = hash_find(TagTransforms, color->pattern);\n\t\t\t\tif (transform && (strncmp((const char *)(s+1),\n\t\t\t\t    transform, strlen(transform)) == 0))\n\t\t\t\t\treturn color->pair;\n                        }\n                        return 0;\n#endif\n\t\tdefault:\n\t\t\treturn ColorDefs[type];\n\t}\n\n\tfor (; color; color = color->next)\n\t\tif (mutt_pattern_exec (color->color_pattern, M_MATCH_FULL_ADDRESS,\n\t\t    Context, hdr))\n\t\t\treturn color->pair;\n\n\treturn 0;\n}\n\nstatic void print_enriched_string (int index, int attr, unsigned char *s, int do_color)\n{\n  wchar_t wc;\n  size_t k;\n  size_t n = mutt_strlen ((char *)s);\n  mbstate_t mbstate;\n\n  memset (&mbstate, 0, sizeof (mbstate));\n  while (*s)\n  {\n    if (*s < M_TREE_MAX)\n    {\n      if (do_color)\n\tSETCOLOR (MT_COLOR_TREE);\n      while (*s && *s < M_TREE_MAX)\n      {\n\tswitch (*s)\n\t{\n\t  case M_TREE_LLCORNER:\n\t    if (option (OPTASCIICHARS))\n\t      addch ('`');\n#ifdef WACS_LLCORNER\n\t    else\n\t      add_wch(WACS_LLCORNER);\n#else\n\t    else if (Charset_is_utf8)\n\t      addstr (\"\\342\\224\\224\"); /* WACS_LLCORNER */\n\t    else\n\t      addch (ACS_LLCORNER);\n#endif\n\t    break;\n\t  case M_TREE_ULCORNER:\n\t    if (option (OPTASCIICHARS))\n\t      addch (',');\n#ifdef WACS_ULCORNER\n\t    else\n\t      add_wch(WACS_ULCORNER);\n#else\n\t    else if (Charset_is_utf8)\n\t      addstr (\"\\342\\224\\214\"); /* WACS_ULCORNER */\n\t    else\n\t      addch (ACS_ULCORNER);\n#endif\n\t    break;\n\t  case M_TREE_LTEE:\n\t    if (option (OPTASCIICHARS))\n\t      addch ('|');\n#ifdef WACS_LTEE\n\t    else\n\t      add_wch(WACS_LTEE);\n#else\n\t    else if (Charset_is_utf8)\n\t      addstr (\"\\342\\224\\234\"); /* WACS_LTEE */\n\t    else\n\t      addch (ACS_LTEE);\n#endif\n\t    break;\n\t  case M_TREE_HLINE:\n\t    if (option (OPTASCIICHARS))\n\t      addch ('-');\n#ifdef WACS_HLINE\n\t    else\n\t      add_wch(WACS_HLINE);\n#else\n\t    else if (Charset_is_utf8)\n\t      addstr (\"\\342\\224\\200\"); /* WACS_HLINE */\n\t    else\n\t      addch (ACS_HLINE);\n#endif\n\t    break;\n\t  case M_TREE_VLINE:\n\t    if (option (OPTASCIICHARS))\n\t      addch ('|');\n#ifdef WACS_VLINE\n\t    else\n\t      add_wch(WACS_VLINE);\n#else\n\t    else if (Charset_is_utf8)\n\t      addstr (\"\\342\\224\\202\"); /* WACS_VLINE */\n\t    else\n\t      addch (ACS_VLINE);\n#endif\n\t    break;\n\t  case M_TREE_TTEE:\n\t    if (option (OPTASCIICHARS))\n\t      addch ('-');\n#ifdef WACS_TTEE\n\t    else\n\t      add_wch(WACS_TTEE);\n#else\n\t    else if (Charset_is_utf8)\n\t      addstr (\"\\342\\224\\254\"); /* WACS_TTEE */\n\t    else\n\t      addch (ACS_TTEE);\n#endif\n\t    break;\n\t  case M_TREE_BTEE:\n\t    if (option (OPTASCIICHARS))\n\t      addch ('-');\n#ifdef WACS_BTEE\n\t    else\n\t      add_wch(WACS_BTEE);\n#else\n\t    else if (Charset_is_utf8)\n\t      addstr (\"\\342\\224\\264\"); /* WACS_BTEE */\n\t    else\n\t      addch (ACS_BTEE);\n#endif\n\t    break;\n\t  case M_TREE_SPACE:\n\t    addch (' ');\n\t    break;\n\t  case M_TREE_RARROW:\n\t    addch ('>');\n\t    break;\n\t  case M_TREE_STAR:\n\t    addch ('*'); /* fake thread indicator */\n\t    break;\n\t  case M_TREE_HIDDEN:\n\t    addch ('&');\n\t    break;\n\t  case M_TREE_EQUALS:\n\t    addch ('=');\n\t    break;\n\t  case M_TREE_MISSING:\n\t    addch ('?');\n\t    break;\n\t}\n\ts++, n--;\n      }\n      if (do_color) ATTRSET(attr);\n    }\n    else if (*s == M_SPECIAL_INDEX) {\n      s++;\n      if (do_color) {\n        if (*s == MT_COLOR_INDEX) {\n          attrset (attr);\n\t} else {\n          if (get_color (index, s) == 0) {\n            attron (attr);\n\t  } else {\n            attron (get_color (index, s));\n\t  }\n        }\n      }\n      s++;\n      n -= 2;\n    }\n    else if ((k = mbrtowc (&wc, (char *)s, n, &mbstate)) > 0)\n    {\n      addnstr ((char *)s, k);\n      s += k, n-= k;\n    }\n    else\n      break;\n  }\n}\n\nstatic void menu_make_entry (char *s, int l, MUTTMENU *menu, int i) \n{\n  if (menu->dialog) \n  {\n    strncpy (s, menu->dialog[i], l);\n    menu->current = -1; /* hide menubar */\n  }\n  else\n    menu->make_entry (s, l, menu, i);\n}\n\nstatic void menu_pad_string (char *s, size_t n)\n{\n  char *scratch = safe_strdup (s);\n  int shift = option (OPTARROWCURSOR) ? 3 : 0;\n  int cols = COLS - shift - SidebarWidth;\n\n  mutt_format_string (s, n, cols, cols, FMT_LEFT, ' ', scratch, mutt_strlen (scratch), 1);\n  s[n - 1] = 0;\n  FREE (&scratch);\n}\n\nvoid menu_redraw_full (MUTTMENU *menu)\n{\n  NORMAL_COLOR;\n  /* clear() doesn't optimize screen redraws */\n  move (0, 0);\n  clrtobot ();\n\n  if (option (OPTHELP))\n  {\n    SETCOLOR (MT_COLOR_STATUS);\n    move (option (OPTSTATUSONTOP) ? LINES-2 : 0, 0);\n    mutt_paddstr (COLS, menu->help);\n    NORMAL_COLOR;\n    menu->offset = 1;\n    menu->pagelen = LINES - 3;\n  }\n  else\n  {\n    menu->offset = option (OPTSTATUSONTOP) ? 1 : 0;\n    menu->pagelen = LINES - 2;\n  }\n\n  mutt_show_error ();\n\n  menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n}\n\nvoid menu_redraw_status (MUTTMENU *menu)\n{\n  char buf[STRING];\n\n  snprintf (buf, sizeof (buf), M_MODEFMT, menu->title);\n  SETCOLOR (MT_COLOR_STATUS);\n  move (option (OPTSTATUSONTOP) ? 0 : LINES - 2, 0);\n  mutt_paddstr (COLS, buf);\n  NORMAL_COLOR;\n  menu->redraw &= ~REDRAW_STATUS;\n}\n\nvoid menu_redraw_index (MUTTMENU *menu)\n{\n  char buf[LONG_STRING];\n  int i;\n  int do_color;\n  int attr;\n\n#ifdef USE_SIDEBAR\n  sb_draw();\n#endif\n  for (i = menu->top; i < menu->top + menu->pagelen; i++)\n  {\n    if (i < menu->max)\n    {\n      attr = menu->color(i);\n\n      menu_make_entry (buf, sizeof (buf), menu, i);\n      menu_pad_string (buf, sizeof (buf));\n\n      ATTRSET(attr);\n      move(i - menu->top + menu->offset, SidebarWidth);\n      do_color = 1;\n\n      if (i == menu->current)\n      {\n\t  SETCOLOR(MT_COLOR_INDICATOR);\n\t  if (option(OPTARROWCURSOR))\n\t  {\n\t    addstr (\"->\");\n\t    ATTRSET(attr);\n\t    addch (' ');\n\t  }\n\t  else\n\t    do_color = 0;\n      }\n      else if (option(OPTARROWCURSOR))\n\taddstr(\"   \");\n\n      print_enriched_string (i, attr, (unsigned char *) buf, do_color);\n    }\n    else\n    {\n      NORMAL_COLOR;\n#ifdef USE_SIDEBAR\n      CLEARLINE_WIN(i - menu->top + menu->offset);\n#else\n      CLEARLINE(i - menu->top + menu->offset);\n#endif\n    }\n  }\n  NORMAL_COLOR;\n  menu->redraw = 0;\n}\n\nvoid menu_redraw_motion (MUTTMENU *menu)\n{\n  char buf[LONG_STRING];\n\n  if (menu->dialog) \n  {\n    menu->redraw &= ~REDRAW_MOTION;\n    return;\n  }\n  \n  move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth);\n  ATTRSET(menu->color (menu->oldcurrent));\n\n  if (option (OPTARROWCURSOR))\n  {\n    /* clear the pointer */\n    addstr (\"  \");\n\n    if (menu->redraw & REDRAW_MOTION_RESYNCH)\n    {\n      menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent);\n      menu_pad_string (buf, sizeof (buf));\n      move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth + 3);\n      print_enriched_string (menu->oldcurrent, menu->color (menu->oldcurrent), (unsigned char *) buf, 1);\n    }\n\n    /* now draw it in the new location */\n    SETCOLOR(MT_COLOR_INDICATOR);\n    mvaddstr(menu->current + menu->offset - menu->top, SidebarWidth, \"->\");\n  }\n  else\n  {\n    /* erase the current indicator */\n    menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent);\n    menu_pad_string (buf, sizeof (buf));\n    print_enriched_string (menu->oldcurrent, menu->color (menu->oldcurrent), (unsigned char *) buf, 1);\n\n    /* now draw the new one to reflect the change */\n    menu_make_entry (buf, sizeof (buf), menu, menu->current);\n    menu_pad_string (buf, sizeof (buf));\n    SETCOLOR(MT_COLOR_INDICATOR);\n    move (menu->current - menu->top + menu->offset, SidebarWidth);\n    print_enriched_string (menu->current, menu->color (menu->current), (unsigned char *) buf, 0);\n  }\n  menu->redraw &= REDRAW_STATUS;\n  NORMAL_COLOR;\n}\n\nvoid menu_redraw_current (MUTTMENU *menu)\n{\n  char buf[LONG_STRING];\n  int attr = menu->color (menu->current);\n  \n  move (menu->current + menu->offset - menu->top, SidebarWidth);\n  menu_make_entry (buf, sizeof (buf), menu, menu->current);\n  menu_pad_string (buf, sizeof (buf));\n\n  SETCOLOR(MT_COLOR_INDICATOR);\n  if (option (OPTARROWCURSOR))\n  {\n    addstr (\"->\");\n    ATTRSET(attr);\n    addch (' ');\n    menu_pad_string (buf, sizeof (buf));\n    print_enriched_string (menu->current, attr, (unsigned char *) buf, 1);\n  }\n  else\n    print_enriched_string (menu->current, attr, (unsigned char *) buf, 0);\n  menu->redraw &= REDRAW_STATUS;\n  NORMAL_COLOR;\n}\n\nstatic void menu_redraw_prompt (MUTTMENU *menu)\n{\n  if (menu->dialog) \n  {\n    if (option (OPTMSGERR)) \n    {\n      mutt_sleep (1);\n      unset_option (OPTMSGERR);\n    }\n\n    if (*Errorbuf)\n      mutt_clear_error ();\n\n    mvaddstr (LINES - 1, 0, menu->prompt);\n    clrtoeol ();\n  }\n}\n\nvoid menu_check_recenter (MUTTMENU *menu)\n{\n  int c = MIN (MenuContext, menu->pagelen / 2);\n  int old_top = menu->top;\n\n  if (!option (OPTMENUMOVEOFF) && menu->max <= menu->pagelen) /* less entries than lines */\n  {\n    if (menu->top != 0) \n    {\n      menu->top = 0;\n      set_option (OPTNEEDREDRAW);\n    }\n  }\n  else \n  {\n    if (option (OPTMENUSCROLL) || (menu->pagelen <= 0) || (c < MenuContext))\n    {\n      if (menu->current < menu->top + c)\n\tmenu->top = menu->current - c;\n      else if (menu->current >= menu->top + menu->pagelen - c)\n\tmenu->top = menu->current - menu->pagelen + c + 1;\n    }\n    else\n    {\n      if (menu->current < menu->top + c)\n\tmenu->top -= (menu->pagelen - c) * ((menu->top + menu->pagelen - 1 - menu->current) / (menu->pagelen - c)) - c;\n      else if ((menu->current >= menu->top + menu->pagelen - c))\n\tmenu->top += (menu->pagelen - c) * ((menu->current - menu->top) / (menu->pagelen - c)) - c;\t\n    }\n  }\n\n  if (!option (OPTMENUMOVEOFF)) /* make entries stick to bottom */\n    menu->top = MIN (menu->top, menu->max - menu->pagelen);\n  menu->top = MAX (menu->top, 0);\n\n  if (menu->top != old_top)\n    menu->redraw |= REDRAW_INDEX;\n}\n\nvoid menu_jump (MUTTMENU *menu)\n{\n  int n;\n  char buf[SHORT_STRING];\n\n  if (menu->max)\n  {\n    mutt_unget_event (LastKey, 0);\n    buf[0] = 0;\n    if (mutt_get_field (_(\"Jump to: \"), buf, sizeof (buf), 0) == 0 && buf[0])\n    {\n      if (mutt_atoi (buf, &n) == 0 && n > 0 && n < menu->max + 1)\n      {\n\tn--;\t/* msg numbers are 0-based */\n\tmenu->current = n;\n\tmenu->redraw = REDRAW_MOTION;\n      }\n      else\n\tmutt_error _(\"Invalid index number.\");\n    }\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n\nvoid menu_next_line (MUTTMENU *menu)\n{\n  if (menu->max)\n  {\n    int c = MIN (MenuContext, menu->pagelen / 2);\n\n    if (menu->top + 1 < menu->max - c\n      && (option(OPTMENUMOVEOFF) || (menu->max > menu->pagelen && menu->top < menu->max - menu->pagelen)))\n    {\n      menu->top++;\n      if (menu->current < menu->top + c && menu->current < menu->max - 1)\n\tmenu->current++;\n      menu->redraw = REDRAW_INDEX;\n    }\n    else\n      mutt_error _(\"You cannot scroll down farther.\");\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n\nvoid menu_prev_line (MUTTMENU *menu)\n{\n  if (menu->top > 0)\n  {\n    int c = MIN (MenuContext, menu->pagelen / 2);\n\n    menu->top--;\n    if (menu->current >= menu->top + menu->pagelen - c && menu->current > 1)\n      menu->current--;\n    menu->redraw = REDRAW_INDEX;\n  }\n  else\n    mutt_error _(\"You cannot scroll up farther.\");\n}\n\n/* \n * pageup:   jumplen == -pagelen\n * pagedown: jumplen == pagelen\n * halfup:   jumplen == -pagelen/2\n * halfdown: jumplen == pagelen/2\n */\n#define DIRECTION ((neg * 2) + 1)\nstatic void menu_length_jump (MUTTMENU *menu, int jumplen)\n{\n  int tmp, neg = (jumplen >= 0) ? 0 : -1;\n  int c = MIN (MenuContext, menu->pagelen / 2);\n\n  if (menu->max)\n  {\n    /* possible to scroll? */\n    if (DIRECTION * menu->top <\n\t(tmp = (neg ? 0 : (menu->max /*-1*/) - (menu->pagelen /*-1*/))))\n    {\n      menu->top += jumplen;\n\n      /* jumped too long? */\n      if ((neg || !option (OPTMENUMOVEOFF)) &&\n\t  DIRECTION * menu->top > tmp)\n\tmenu->top = tmp;\n\n      /* need to move the cursor? */\n      if ((DIRECTION *\n\t   (tmp = (menu->current -\n\t\t   (menu->top + (neg ? (menu->pagelen - 1) - c : c))\n\t  ))) < 0)\n\tmenu->current -= tmp;\n\n      menu->redraw = REDRAW_INDEX;\n    }\n    else if (menu->current != (neg ? 0 : menu->max - 1) && !menu->dialog)\n    {\n      menu->current += jumplen;\n      menu->redraw = REDRAW_MOTION;\n    }\n    else\n      mutt_error (neg ? _(\"You are on the first page.\")\n\t\t      : _(\"You are on the last page.\"));\n\n    menu->current = MIN (menu->current, menu->max - 1);\n    menu->current = MAX (menu->current, 0);\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n#undef DIRECTION\n\nvoid menu_next_page (MUTTMENU *menu)\n{\n  menu_length_jump (menu, MAX (menu->pagelen /* - MenuOverlap */, 0));\n}\n\nvoid menu_prev_page (MUTTMENU *menu)\n{\n  menu_length_jump (menu, 0 - MAX (menu->pagelen /* - MenuOverlap */, 0));\n}\n\nvoid menu_half_down (MUTTMENU *menu)\n{\n  menu_length_jump (menu, menu->pagelen / 2);\n}\n\nvoid menu_half_up (MUTTMENU *menu)\n{\n  menu_length_jump (menu, 0 - menu->pagelen / 2);\n}\n\nvoid menu_top_page (MUTTMENU *menu)\n{\n  if (menu->current != menu->top)\n  {\n    menu->current = menu->top;\n    menu->redraw = REDRAW_MOTION;\n  }\n}\n\nvoid menu_bottom_page (MUTTMENU *menu)\n{\n  if (menu->max)\n  {\n    menu->current = menu->top + menu->pagelen - 1;\n    if (menu->current > menu->max - 1)\n      menu->current = menu->max - 1;\n    menu->redraw = REDRAW_MOTION;\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n\nvoid menu_middle_page (MUTTMENU *menu)\n{\n  int i;\n\n  if (menu->max)\n  {\n    i = menu->top + menu->pagelen;\n    if (i > menu->max - 1)\n      i = menu->max - 1;\n    menu->current = menu->top + (i - menu->top) / 2;\n    menu->redraw = REDRAW_MOTION;\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n\nvoid menu_first_entry (MUTTMENU *menu)\n{\n  if (menu->max)\n  {\n    menu->current = 0;\n    menu->redraw = REDRAW_MOTION;\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n\nvoid menu_last_entry (MUTTMENU *menu)\n{\n  if (menu->max)\n  {\n    menu->current = menu->max - 1;\n    menu->redraw = REDRAW_MOTION;\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n\nvoid menu_current_top (MUTTMENU *menu)\n{\n  if (menu->max)\n  {\n    menu->top = menu->current;\n    menu->redraw = REDRAW_INDEX;\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n\nvoid menu_current_middle (MUTTMENU *menu)\n{\n  if (menu->max)\n  {\n    menu->top = menu->current - menu->pagelen / 2;\n    if (menu->top < 0)\n      menu->top = 0;\n    menu->redraw = REDRAW_INDEX;\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n\nvoid menu_current_bottom (MUTTMENU *menu)\n{\n  if (menu->max)\n  {\n    menu->top = menu->current - menu->pagelen + 1;\n    if (menu->top < 0)\n      menu->top = 0;\n    menu->redraw = REDRAW_INDEX;\n  }\n  else\n    mutt_error _(\"No entries.\");\n}\n\nstatic void menu_next_entry (MUTTMENU *menu)\n{\n  if (menu->current < menu->max - 1)\n  {\n    menu->current++;\n    menu->redraw = REDRAW_MOTION;\n  }\n  else\n    mutt_error _(\"You are on the last entry.\");\n}\n\nstatic void menu_prev_entry (MUTTMENU *menu)\n{\n  if (menu->current)\n  {\n    menu->current--;\n    menu->redraw = REDRAW_MOTION;\n  }\n  else\n    mutt_error _(\"You are on the first entry.\");\n}\n\nstatic int default_color (int i)\n{\n   return ColorDefs[MT_COLOR_NORMAL];\n}\n\nstatic int menu_search_generic (MUTTMENU *m, regex_t *re, int n)\n{\n  char buf[LONG_STRING];\n\n  menu_make_entry (buf, sizeof (buf), m, n);\n  return (regexec (re, buf, 0, NULL, 0));\n}\n\nvoid mutt_menu_init (void)\n{\n  int i;\n\n  for (i = 0; i < MENU_MAX; i++)\n    SearchBuffers[i] = NULL;\n}\n\nMUTTMENU *mutt_new_menu (int menu)\n{\n  MUTTMENU *p = (MUTTMENU *) safe_calloc (1, sizeof (MUTTMENU));\n\n  if ((menu < 0) || (menu >= MENU_MAX))\n    menu = MENU_GENERIC;\n\n  p->menu = menu;\n  p->current = 0;\n  p->top = 0;\n  p->offset = 1;\n  p->redraw = REDRAW_FULL;\n  p->pagelen = PAGELEN;\n  p->color = default_color;\n  p->search = menu_search_generic;\n  return (p);\n}\n\nvoid mutt_menuDestroy (MUTTMENU **p)\n{\n  int i;\n\n  if ((*p)->dialog)\n  {\n    for (i=0; i < (*p)->max; i++)\n      FREE (&(*p)->dialog[i]);\n\n    FREE (& (*p)->dialog);\n  }\n\n  FREE (p);\t\t/* __FREE_CHECKED__ */\n}\n\n#define M_SEARCH_UP   1\n#define M_SEARCH_DOWN 2\n\nstatic int menu_search (MUTTMENU *menu, int op)\n{\n  int r, wrap = 0;\n  int searchDir;\n  regex_t re;\n  char buf[SHORT_STRING];\n  char* searchBuf = menu->menu >= 0 && menu->menu < MENU_MAX ?\n                    SearchBuffers[menu->menu] : NULL;\n\n  if (!(searchBuf && *searchBuf) ||\n      (op != OP_SEARCH_NEXT && op != OP_SEARCH_OPPOSITE))\n  {\n    strfcpy (buf, searchBuf && *searchBuf ? searchBuf : \"\", sizeof (buf));\n    if (mutt_get_field ((op == OP_SEARCH || op == OP_SEARCH_NEXT)\n\t\t\t? _(\"Search for: \") : _(\"Reverse search for: \"),\n\t\t\tbuf, sizeof (buf), M_CLEAR) != 0 || !buf[0])\n      return (-1);\n    if (menu->menu >= 0 && menu->menu < MENU_MAX)\n    {\n      mutt_str_replace (&SearchBuffers[menu->menu], buf);\n      searchBuf = SearchBuffers[menu->menu];\n    }\n    menu->searchDir = (op == OP_SEARCH || op == OP_SEARCH_NEXT) ?\n\t\t       M_SEARCH_DOWN : M_SEARCH_UP;\n  }\n\n  searchDir = (menu->searchDir == M_SEARCH_UP) ? -1 : 1;\n  if (op == OP_SEARCH_OPPOSITE)\n    searchDir = -searchDir;\n\n  if ((r = REGCOMP (&re, searchBuf, REG_NOSUB | mutt_which_case (searchBuf))) != 0)\n  {\n    regerror (r, &re, buf, sizeof (buf));\n    mutt_error (\"%s\", buf);\n    return (-1);\n  }\n\n  r = menu->current + searchDir;\nsearch_next:\n  if (wrap)\n    mutt_message (_(\"Search wrapped to top.\"));\n  while (r >= 0 && r < menu->max)\n  {\n    if (menu->search (menu, &re, r) == 0)\n    {\n      regfree (&re);\n      return r;\n    }\n\n    r += searchDir;\n  }\n\n  if (option (OPTWRAPSEARCH) && wrap++ == 0)\n  {\n    r = searchDir == 1 ? 0 : menu->max - 1;\n    goto search_next;\n  }\n  regfree (&re);\n  mutt_error _(\"Not found.\");\n  return (-1);\n}\n\nstatic int menu_dialog_translate_op (int i)\n{\n  switch (i)\n  {\n    case OP_NEXT_ENTRY:   \n      return OP_NEXT_LINE;\n    case OP_PREV_ENTRY:\t  \n      return OP_PREV_LINE;\n    case OP_CURRENT_TOP:   case OP_FIRST_ENTRY:  \n      return OP_TOP_PAGE;\n    case OP_CURRENT_BOTTOM:    case OP_LAST_ENTRY:\t  \n      return OP_BOTTOM_PAGE;\n    case OP_CURRENT_MIDDLE: \n      return OP_MIDDLE_PAGE; \n  }\n  \n  return i;\n}\n\nstatic int menu_dialog_dokey (MUTTMENU *menu, int *ip)\n{\n  event_t ch;\n  char *p;\n\n  ch = mutt_getch ();\n\n  if (ch.ch < 0)\n  {\n    *ip = -1;\n    return 0;\n  }\n\n  if (ch.ch && (p = strchr (menu->keys, ch.ch)))\n  {\n    *ip = OP_MAX + (p - menu->keys + 1);\n    return 0;\n  }\n  else\n  {\n    mutt_unget_event (ch.op ? 0 : ch.ch, ch.op ? ch.op : 0);\n    return -1;\n  }\n}\n\nint menu_redraw (MUTTMENU *menu)\n{\n  /* See if all or part of the screen needs to be updated.  */\n  if (menu->redraw & REDRAW_FULL)\n  {\n    menu_redraw_full (menu);\n    /* allow the caller to do any local configuration */\n    return (OP_REDRAW);\n  }\n  \n  if (!menu->dialog)\n    menu_check_recenter (menu);\n  \n  if (menu->redraw & REDRAW_STATUS)\n    menu_redraw_status (menu);\n  if (menu->redraw & REDRAW_INDEX)\n    menu_redraw_index (menu);\n  else if (menu->redraw & (REDRAW_MOTION | REDRAW_MOTION_RESYNCH))\n    menu_redraw_motion (menu);\n  else if (menu->redraw == REDRAW_CURRENT)\n    menu_redraw_current (menu);\n  \n  if (menu->dialog)\n    menu_redraw_prompt (menu);\n  \n  return OP_NULL;\n}\n\nint mutt_menuLoop (MUTTMENU *menu)\n{\n  int i = OP_NULL;\n\n  FOREVER\n  {\n    if (option (OPTMENUCALLER))\n    {\n      unset_option (OPTMENUCALLER);\n      return OP_NULL;\n    }\n    \n    \n    mutt_curs_set (0);\n\n    if (menu_redraw (menu) == OP_REDRAW)\n      return OP_REDRAW;\n    \n    menu->oldcurrent = menu->current;\n\n\n    /* move the cursor out of the way */\n    \n    \n    if (option (OPTARROWCURSOR))\n      move (menu->current - menu->top + menu->offset, SidebarWidth + 2);\n    else if (option (OPTBRAILLEFRIENDLY))\n      move (menu->current - menu->top + menu->offset, 0);\n    else\n      move (menu->current - menu->top + menu->offset, COLS - 1);\n\n    mutt_refresh ();\n    \n    /* try to catch dialog keys before ops */\n    if (menu->dialog && menu_dialog_dokey (menu, &i) == 0)\n      return i;\n\t\t    \n    i = km_dokey (menu->menu);\n    if (i == OP_TAG_PREFIX || i == OP_TAG_PREFIX_COND)\n    {\n      if (menu->tagged)\n      {\n\tmvaddstr (LINES - 1, 0, \"Tag-\");\n\tclrtoeol ();\n\ti = km_dokey (menu->menu);\n\tmenu->tagprefix = 1;\n\tCLEARLINE (LINES - 1);\n      }\n      else if (i == OP_TAG_PREFIX)\n      {\n\tmutt_error _(\"No tagged entries.\");\n\ti = -1;\n      }\n      else /* None tagged, OP_TAG_PREFIX_COND */\n      {\n\tmutt_flush_macro_to_endcond ();\n\tmutt_message _(\"Nothing to do.\");\n\ti = -1;\n      }\n    }\n    else if (menu->tagged && option (OPTAUTOTAG))\n      menu->tagprefix = 1;\n    else\n      menu->tagprefix = 0;\n\n    mutt_curs_set (1);\n\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\n    if (SigWinch)\n    {\n      mutt_resize_screen ();\n      menu->redraw = REDRAW_FULL;\n      SigWinch = 0;\n      clearok(stdscr,TRUE);/*force complete redraw*/\n    }\n#endif\n\n    if (i == -1)\n      continue;\n\n    if (!menu->dialog)\n      mutt_clear_error ();\n\n    /* Convert menubar movement to scrolling */\n    if (menu->dialog) \n      i = menu_dialog_translate_op (i);\n\n    switch (i)\n    {\n      case OP_NEXT_ENTRY:\n\tmenu_next_entry (menu);\n\tbreak;\n      case OP_PREV_ENTRY:\n\tmenu_prev_entry (menu);\n\tbreak;\n      case OP_HALF_DOWN:\n\tmenu_half_down (menu);\n\tbreak;\n      case OP_HALF_UP:\n\tmenu_half_up (menu);\n\tbreak;\n      case OP_NEXT_PAGE:\n\tmenu_next_page (menu);\n\tbreak;\n      case OP_PREV_PAGE:\n\tmenu_prev_page (menu);\n\tbreak;\n      case OP_NEXT_LINE:\n\tmenu_next_line (menu);\n\tbreak;\n      case OP_PREV_LINE:\n\tmenu_prev_line (menu);\n\tbreak;\n      case OP_FIRST_ENTRY:\n\tmenu_first_entry (menu);\n\tbreak;\n      case OP_LAST_ENTRY:\n\tmenu_last_entry (menu);\n\tbreak;\n      case OP_TOP_PAGE:\n\tmenu_top_page (menu);\n\tbreak;\n      case OP_MIDDLE_PAGE:\n\tmenu_middle_page (menu);\n\tbreak;\n      case OP_BOTTOM_PAGE:\n\tmenu_bottom_page (menu);\n\tbreak;\n      case OP_CURRENT_TOP:\n\tmenu_current_top (menu);\n\tbreak;\n      case OP_CURRENT_MIDDLE:\n\tmenu_current_middle (menu);\n\tbreak;\n      case OP_CURRENT_BOTTOM:\n\tmenu_current_bottom (menu);\n\tbreak;\n      case OP_SEARCH:\n      case OP_SEARCH_REVERSE:\n      case OP_SEARCH_NEXT:\n      case OP_SEARCH_OPPOSITE:\n\tif (menu->search && !menu->dialog) /* Searching dialogs won't work */\n\t{\n\t  menu->oldcurrent = menu->current;\n\t  if ((menu->current = menu_search (menu, i)) != -1)\n\t    menu->redraw = REDRAW_MOTION;\n\t  else\n\t    menu->current = menu->oldcurrent;\n\t}\n\telse\n\t  mutt_error _(\"Search is not implemented for this menu.\");\n\tbreak;\n\n      case OP_JUMP:\n\tif (menu->dialog)\n\t  mutt_error _(\"Jumping is not implemented for dialogs.\");\n\telse\n\t  menu_jump (menu);\n\tbreak;\n\n      case OP_ENTER_COMMAND:\n\tCurrentMenu = menu->menu;\n\tmutt_enter_command ();\n\tif (option (OPTFORCEREDRAWINDEX))\n\t{\n\t  menu->redraw = REDRAW_FULL;\n\t  unset_option (OPTFORCEREDRAWINDEX);\n\t  unset_option (OPTFORCEREDRAWPAGER);\n\t}\n\tbreak;\n\n      case OP_TAG:\n\tif (menu->tag && !menu->dialog)\n\t{\n\t  if (menu->tagprefix && !option (OPTAUTOTAG))\n\t  {\n\t    for (i = 0; i < menu->max; i++)\n\t      menu->tagged += menu->tag (menu, i, 0);\n\t    menu->redraw = REDRAW_INDEX;\n\t  }\n\t  else if (menu->max)\n\t  {\n\t    int i = menu->tag (menu, menu->current, -1);\n\t    menu->tagged += i;\n\t    if (i && option (OPTRESOLVE) && menu->current < menu->max - 1)\n\t    {\n\t      menu->current++;\n\t      menu->redraw = REDRAW_MOTION_RESYNCH;\n\t    }\n\t    else\n\t      menu->redraw = REDRAW_CURRENT;\n\t  }\n\t  else\n\t    mutt_error _(\"No entries.\");\n\t}\n\telse\n\t  mutt_error _(\"Tagging is not supported.\");\n\tbreak;\n\n      case OP_SHELL_ESCAPE:\n\tmutt_shell_escape ();\n\tMAYBE_REDRAW (menu->redraw);\n\tbreak;\n\n      case OP_WHAT_KEY:\n\tmutt_what_key ();\n\tbreak;\n\n      case OP_REDRAW:\n\tclearok (stdscr, TRUE);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_HELP:\n\tmutt_help (menu->menu);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_NULL:\n\tkm_error_key (menu->menu);\n\tbreak;\n\n      case OP_END_COND:\n\tbreak;\n\n      default:\n\treturn (i);\n    }\n  }\n  /* not reached */\n}\n"
  },
  {
    "path": "mh.c",
    "content": "/*\n * Copyright (C) 1996-2002,2007,2009 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2005 Thomas Roessler <roessler@does-not-exist.org>\n * Copyright (C) 2010,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/*\n * This file contains routines specific to MH and ``maildir'' style\n * mailboxes.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mailbox.h\"\n#include \"mx.h\"\n#include \"copy.h\"\n#include \"sort.h\"\n#if USE_HCACHE\n#include \"hcache.h\"\n#endif\n#include \"mutt_curses.h\"\n#include \"buffy.h\"\n\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <dirent.h>\n#include <limits.h>\n#include <unistd.h>\n#include <fcntl.h>\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <ctype.h>\n#include <errno.h>\n#include <string.h>\n#include <utime.h>\n\n#if HAVE_SYS_TIME_H\n#include <sys/time.h>\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#define\t\tINS_SORT_THRESHOLD\t\t6\n\nstruct maildir\n{\n  HEADER *h;\n  char *canon_fname;\n  unsigned header_parsed:1;\n#ifdef HAVE_DIRENT_D_INO\n  ino_t inode;\n#endif /* HAVE_DIRENT_D_INO */\n  struct maildir *next;\n};\n\nstruct mh_sequences\n{\n  int max;\n  short *flags;\n};\n\nstruct mh_data\n{\n  time_t mtime_cur;\n  mode_t mh_umask;\n};\n\n/* mh_sequences support */\n\n#define MH_SEQ_UNSEEN  (1 << 0)\n#define MH_SEQ_REPLIED (1 << 1)\n#define MH_SEQ_FLAGGED (1 << 2)\n\nstatic inline struct mh_data *mh_data (CONTEXT *ctx)\n{\n  return (struct mh_data*)ctx->data;\n}\n\nstatic void mhs_alloc (struct mh_sequences *mhs, int i)\n{\n  int j;\n  int newmax;\n\n  if (i > mhs->max || !mhs->flags)\n  {\n    newmax = i + 128;\n    j = mhs->flags ? mhs->max + 1 : 0;\n    safe_realloc (&mhs->flags, sizeof (mhs->flags[0]) * (newmax + 1));\n    while (j <= newmax)\n      mhs->flags[j++] = 0;\n\n    mhs->max = newmax;\n  }\n}\n\nstatic void mhs_free_sequences (struct mh_sequences *mhs)\n{\n  FREE (&mhs->flags);\n}\n\nstatic short mhs_check (struct mh_sequences *mhs, int i)\n{\n  if (!mhs->flags || i > mhs->max)\n    return 0;\n  else\n    return mhs->flags[i];\n}\n\nstatic short mhs_set (struct mh_sequences *mhs, int i, short f)\n{\n  mhs_alloc (mhs, i);\n  mhs->flags[i] |= f;\n  return mhs->flags[i];\n}\n\n#if 0\n\n/* unused */\n\nstatic short mhs_unset (struct mh_sequences *mhs, int i, short f)\n{\n  mhs_alloc (mhs, i);\n  mhs->flags[i] &= ~f;\n  return mhs->flags[i];\n}\n\n#endif\n\nstatic int mh_read_token (char *t, int *first, int *last)\n{\n  char *p;\n  if ((p = strchr (t, '-')))\n  {\n    *p++ = '\\0';\n    if (mutt_atoi (t, first) < 0 || mutt_atoi (p, last) < 0)\n      return -1;\n  }\n  else\n  {\n    if (mutt_atoi (t, first) < 0)\n      return -1;\n    *last = *first;\n  }\n  return 0;\n}\n\nstatic int mh_read_sequences (struct mh_sequences *mhs, const char *path)\n{\n  FILE *fp;\n  int line = 1;\n  char *buff = NULL;\n  char *t;\n  size_t sz = 0;\n\n  short f;\n  int first, last, rc = 0;\n\n  char pathname[_POSIX_PATH_MAX];\n  snprintf (pathname, sizeof (pathname), \"%s/.mh_sequences\", path);\n\n  if (!(fp = fopen (pathname, \"r\")))\n    return 0; /* yes, ask callers to silently ignore the error */\n\n  while ((buff = mutt_read_line (buff, &sz, fp, &line, 0)))\n  {\n    if (!(t = strtok (buff, \" \\t:\")))\n      continue;\n\n    if (!mutt_strcmp (t, MhUnseen))\n      f = MH_SEQ_UNSEEN;\n    else if (!mutt_strcmp (t, MhFlagged))\n      f = MH_SEQ_FLAGGED;\n    else if (!mutt_strcmp (t, MhReplied))\n      f = MH_SEQ_REPLIED;\n    else\t\t\t/* unknown sequence */\n      continue;\n\n    while ((t = strtok (NULL, \" \\t:\")))\n    {\n      if (mh_read_token (t, &first, &last) < 0)\n      {\n\tmhs_free_sequences (mhs);\n\trc = -1;\n\tgoto out;\n      }\n      for (; first <= last; first++)\n\tmhs_set (mhs, first, f);\n    }\n  }\n\n  rc = 0;\n\nout:\n  FREE (&buff);\n  safe_fclose (&fp);\n  return rc;\n}\n\nstatic inline mode_t mh_umask (CONTEXT* ctx)\n{\n  struct stat st;\n  struct mh_data* data = mh_data (ctx);\n\n  if (data && data->mh_umask)\n    return data->mh_umask;\n\n  if (stat (ctx->path, &st))\n  {\n    dprint (1, (debugfile, \"stat failed on %s\\n\", ctx->path));\n    return 077;\n  }\n\n  return 0777 & ~st.st_mode;\n}\n\n/*\n * Returns 1 if the .mh_sequences last modification time is more recent than the last visit to this mailbox\n * Returns 0 if the modifcation time is older\n * Returns -1 on error\n */\nstatic int mh_sequences_changed(BUFFY *b)\n{\n  char path[_POSIX_PATH_MAX];\n  struct stat sb;\n\n  if ((snprintf(path, sizeof(path), \"%s/.mh_sequences\", b->path) < sizeof(path)) &&\n      (stat(path, &sb) == 0))\n    return (sb.st_mtime > b->last_visited);\n  return -1;\n}\n\n/*\n * Returns 1 if the modification time on the message file is older than the last visit to this mailbox\n * Returns 0 if the modtime is newer\n * Returns -1 on error\n */\nstatic int mh_already_notified(BUFFY *b, int msgno)\n{\n  char path[_POSIX_PATH_MAX];\n  struct stat sb;\n\n  if ((snprintf(path, sizeof(path), \"%s/%d\", b->path, msgno) < sizeof(path)) &&\n      (stat(path, &sb) == 0))\n    return (sb.st_mtime <= b->last_visited);\n  return -1;\n}\n\nvoid mh_buffy(BUFFY *b)\n{\n  int i;\n  struct mh_sequences mhs;\n\n  b->new = 0;\n\n  /* when $mail_check_recent is set and the .mh_sequences file hasn't changed\n   * since the last mailbox visit, there is nothing to do */\n  if (option(OPTMAILCHECKRECENT) && mh_sequences_changed(b) <= 0)\n      return;\n\n  memset (&mhs, 0, sizeof (mhs));\n\n  if (mh_read_sequences (&mhs, b->path) < 0)\n    return;\n\n  /* Traverse the sequence from high to low in order to support\n   * $mail_check_recent.  Given that new messages are appended, this should\n   * also be faster when it is unset as well.\n   */\n  for (i = mhs.max; i > 0; i--)\n  {\n    if (mhs_check (&mhs, i) & MH_SEQ_UNSEEN)\n    {\n      /* if the first unseen message we encounter was in the mailbox during the last visit, don't notify about it */\n      if (!option(OPTMAILCHECKRECENT) || mh_already_notified(b, i) == 0)\n\tb->new = 1;\n      break;\n    }\n  }\n  mhs_free_sequences (&mhs);\n}\n\n#ifdef USE_SIDEBAR\n/**\n * mh_buffy_update - Update messages counts for an mh mailbox\n * @mailbox: BUFFY representing a maildir mailbox\n *\n * Read through an mh mailbox and count messages.  Save the number of new,\n * flagged messages and a timestamp for now.\n */\nvoid\nmh_buffy_update (BUFFY *mailbox)\n{\n\tif (!mailbox)\n\t\treturn;\n\n\tif (!option (OPTSIDEBAR))\n\t\treturn;\n\n\tstruct mh_sequences mhs;\n\tmemset (&mhs, 0, sizeof (mhs));\n\n\tif (mh_read_sequences (&mhs, mailbox->path) < 0)\n\t\treturn;\n\n\tmailbox->msg_count   = 0;\n\tmailbox->msg_unread  = 0;\n\tmailbox->msg_flagged = 0;\n\n\tint i;\n\tfor (i = 0; i <= mhs.max; i++) {\n\t\tmailbox->msg_count++;\n\t}\n\tif (mhs_check (&mhs, i) & MH_SEQ_UNSEEN) {\n\t\tmailbox->msg_unread++;\n\t}\n\tif (mhs_check (&mhs, i) & MH_SEQ_FLAGGED) {\n\t\tmailbox->msg_flagged++;\n\t}\n\tmhs_free_sequences (&mhs);\n\tmailbox->sb_last_checked = time (NULL);\n}\n\n#endif\n\nstatic int mh_mkstemp (CONTEXT * dest, FILE ** fp, char **tgt)\n{\n  int fd;\n  char path[_POSIX_PATH_MAX];\n  mode_t omask;\n\n  omask = umask (mh_umask (dest));\n  FOREVER\n  {\n    snprintf (path, _POSIX_PATH_MAX, \"%s/.mutt-%s-%d-%\" PRIu64,\n\t      dest->path, NONULL (Hostname), (int) getpid (), mutt_rand64());\n    if ((fd = open (path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1)\n    {\n      if (errno != EEXIST)\n      {\n\tmutt_perror (path);\n\tumask (omask);\n\treturn -1;\n      }\n    }\n    else\n    {\n      *tgt = safe_strdup (path);\n      break;\n    }\n  }\n  umask (omask);\n\n  if ((*fp = fdopen (fd, \"w\")) == NULL)\n  {\n    FREE (tgt);\t\t/* __FREE_CHECKED__ */\n    close (fd);\n    unlink (path);\n    return (-1);\n  }\n\n  return 0;\n}\n\nstatic void mhs_write_one_sequence (FILE * fp, struct mh_sequences *mhs,\n\t\t\t\t    short f, const char *tag)\n{\n  int i;\n  int first, last;\n  fprintf (fp, \"%s:\", tag);\n\n  first = -1;\n  last = -1;\n\n  for (i = 0; i <= mhs->max; i++)\n  {\n    if ((mhs_check (mhs, i) & f))\n    {\n      if (first < 0)\n\tfirst = i;\n      else\n\tlast = i;\n    }\n    else if (first >= 0)\n    {\n      if (last < 0)\n\tfprintf (fp, \" %d\", first);\n      else\n\tfprintf (fp, \" %d-%d\", first, last);\n\n      first = -1;\n      last = -1;\n    }\n  }\n\n  if (first >= 0)\n  {\n    if (last < 0)\n      fprintf (fp, \" %d\", first);\n    else\n      fprintf (fp, \" %d-%d\", first, last);\n  }\n\n  fputc ('\\n', fp);\n}\n\n/* XXX - we don't currently remove deleted messages from sequences we don't know.  Should we? */\n\nstatic void mh_update_sequences (CONTEXT * ctx)\n{\n  FILE *ofp, *nfp;\n\n  char sequences[_POSIX_PATH_MAX];\n  char *tmpfname;\n  char *buff = NULL;\n  char *p;\n  size_t s;\n  int l = 0;\n  int i;\n\n  int unseen = 0;\n  int flagged = 0;\n  int replied = 0;\n\n  char seq_unseen[STRING];\n  char seq_replied[STRING];\n  char seq_flagged[STRING];\n\n\n  struct mh_sequences mhs;\n  memset (&mhs, 0, sizeof (mhs));\n\n  snprintf (seq_unseen, sizeof (seq_unseen), \"%s:\", NONULL (MhUnseen));\n  snprintf (seq_replied, sizeof (seq_replied), \"%s:\", NONULL (MhReplied));\n  snprintf (seq_flagged, sizeof (seq_flagged), \"%s:\", NONULL (MhFlagged));\n\n  if (mh_mkstemp (ctx, &nfp, &tmpfname) != 0)\n  {\n    /* error message? */\n    return;\n  }\n\n  snprintf (sequences, sizeof (sequences), \"%s/.mh_sequences\", ctx->path);\n\n\n  /* first, copy unknown sequences */\n  if ((ofp = fopen (sequences, \"r\")))\n  {\n    while ((buff = mutt_read_line (buff, &s, ofp, &l, 0)))\n    {\n      if (!mutt_strncmp (buff, seq_unseen, mutt_strlen (seq_unseen)))\n\tcontinue;\n      if (!mutt_strncmp (buff, seq_flagged, mutt_strlen (seq_flagged)))\n\tcontinue;\n      if (!mutt_strncmp (buff, seq_replied, mutt_strlen (seq_replied)))\n\tcontinue;\n\n      fprintf (nfp, \"%s\\n\", buff);\n    }\n  }\n  safe_fclose (&ofp);\n\n  /* now, update our unseen, flagged, and replied sequences */\n  for (l = 0; l < ctx->msgcount; l++)\n  {\n    if (ctx->hdrs[l]->deleted)\n      continue;\n\n    if ((p = strrchr (ctx->hdrs[l]->path, '/')))\n      p++;\n    else\n      p = ctx->hdrs[l]->path;\n\n    if (mutt_atoi (p, &i) < 0)\n      continue;\n\n    if (!ctx->hdrs[l]->read)\n    {\n      mhs_set (&mhs, i, MH_SEQ_UNSEEN);\n      unseen++;\n    }\n    if (ctx->hdrs[l]->flagged)\n    {\n      mhs_set (&mhs, i, MH_SEQ_FLAGGED);\n      flagged++;\n    }\n    if (ctx->hdrs[l]->replied)\n    {\n      mhs_set (&mhs, i, MH_SEQ_REPLIED);\n      replied++;\n    }\n  }\n\n  /* write out the new sequences */\n  if (unseen)\n    mhs_write_one_sequence (nfp, &mhs, MH_SEQ_UNSEEN, NONULL (MhUnseen));\n  if (flagged)\n    mhs_write_one_sequence (nfp, &mhs, MH_SEQ_FLAGGED, NONULL (MhFlagged));\n  if (replied)\n    mhs_write_one_sequence (nfp, &mhs, MH_SEQ_REPLIED, NONULL (MhReplied));\n\n  mhs_free_sequences (&mhs);\n\n\n  /* try to commit the changes - no guarantee here */\n  safe_fclose (&nfp);\n\n  unlink (sequences);\n  if (safe_rename (tmpfname, sequences) != 0)\n  {\n    /* report an error? */\n    unlink (tmpfname);\n  }\n\n  FREE (&tmpfname);\n}\n\nstatic void mh_sequences_add_one (CONTEXT * ctx, int n, short unseen,\n\t\t\t\t  short flagged, short replied)\n{\n  short unseen_done = 0;\n  short flagged_done = 0;\n  short replied_done = 0;\n\n  FILE *ofp = NULL, *nfp = NULL;\n\n  char *tmpfname;\n  char sequences[_POSIX_PATH_MAX];\n\n  char seq_unseen[STRING];\n  char seq_replied[STRING];\n  char seq_flagged[STRING];\n\n  char *buff = NULL;\n  int line;\n  size_t sz;\n\n  if (mh_mkstemp (ctx, &nfp, &tmpfname) == -1)\n    return;\n\n  snprintf (seq_unseen, sizeof (seq_unseen), \"%s:\", NONULL (MhUnseen));\n  snprintf (seq_replied, sizeof (seq_replied), \"%s:\", NONULL (MhReplied));\n  snprintf (seq_flagged, sizeof (seq_flagged), \"%s:\", NONULL (MhFlagged));\n\n  snprintf (sequences, sizeof (sequences), \"%s/.mh_sequences\", ctx->path);\n  if ((ofp = fopen (sequences, \"r\")))\n  {\n    while ((buff = mutt_read_line (buff, &sz, ofp, &line, 0)))\n    {\n      if (unseen && !strncmp (buff, seq_unseen, mutt_strlen (seq_unseen)))\n      {\n\tfprintf (nfp, \"%s %d\\n\", buff, n);\n\tunseen_done = 1;\n      }\n      else if (flagged\n\t       && !strncmp (buff, seq_flagged, mutt_strlen (seq_flagged)))\n      {\n\tfprintf (nfp, \"%s %d\\n\", buff, n);\n\tflagged_done = 1;\n      }\n      else if (replied\n\t       && !strncmp (buff, seq_replied, mutt_strlen (seq_replied)))\n      {\n\tfprintf (nfp, \"%s %d\\n\", buff, n);\n\treplied_done = 1;\n      }\n      else\n\tfprintf (nfp, \"%s\\n\", buff);\n    }\n  }\n  safe_fclose (&ofp);\n  FREE (&buff);\n\n  if (!unseen_done && unseen)\n    fprintf (nfp, \"%s: %d\\n\", NONULL (MhUnseen), n);\n  if (!flagged_done && flagged)\n    fprintf (nfp, \"%s: %d\\n\", NONULL (MhFlagged), n);\n  if (!replied_done && replied)\n    fprintf (nfp, \"%s: %d\\n\", NONULL (MhReplied), n);\n\n  safe_fclose (&nfp);\n\n  unlink (sequences);\n  if (safe_rename (tmpfname, sequences) != 0)\n    unlink (tmpfname);\n\n  FREE (&tmpfname);\n}\n\nstatic void mh_update_maildir (struct maildir *md, struct mh_sequences *mhs)\n{\n  int i;\n  short f;\n  char *p;\n\n  for (; md; md = md->next)\n  {\n    if ((p = strrchr (md->h->path, '/')))\n      p++;\n    else\n      p = md->h->path;\n\n    if (mutt_atoi (p, &i) < 0)\n      continue;\n    f = mhs_check (mhs, i);\n\n    md->h->read = (f & MH_SEQ_UNSEEN) ? 0 : 1;\n    md->h->flagged = (f & MH_SEQ_FLAGGED) ? 1 : 0;\n    md->h->replied = (f & MH_SEQ_REPLIED) ? 1 : 0;\n  }\n}\n\n/* maildir support */\n\nstatic void maildir_free_entry (struct maildir **md)\n{\n  if (!md || !*md)\n    return;\n\n  FREE (&(*md)->canon_fname);\n  if ((*md)->h)\n    mutt_free_header (&(*md)->h);\n\n  FREE (md);\t\t/* __FREE_CHECKED__ */\n}\n\nstatic void maildir_free_maildir (struct maildir **md)\n{\n  struct maildir *p, *q;\n\n  if (!md || !*md)\n    return;\n\n  for (p = *md; p; p = q)\n  {\n    q = p->next;\n    maildir_free_entry (&p);\n  }\n}\n\nvoid maildir_parse_flags (HEADER * h, const char *path)\n{\n  char *p, *q = NULL;\n\n  h->flagged = 0;\n  h->read = 0;\n  h->replied = 0;\n\n  if ((p = strrchr (path, ':')) != NULL && mutt_strncmp (p + 1, \"2,\", 2) == 0)\n  {\n    p += 3;\n    \n    mutt_str_replace (&h->maildir_flags, p);\n    q = h->maildir_flags;\n\n    while (*p)\n    {\n      switch (*p)\n      {\n      case 'F':\n\n\th->flagged = 1;\n\tbreak;\n\n      case 'S':\t\t/* seen */\n\n\th->read = 1;\n\tbreak;\n\n      case 'R':\t\t/* replied */\n\n\th->replied = 1;\n\tbreak;\n\n      case 'T':\t\t/* trashed */\n\th->trash = 1;\n\th->deleted = 1;\n\tbreak;\n      \n      default:\n\t*q++ = *p;\n\tbreak;\n      }\n      p++;\n    }\n  }\n  \n  if (q == h->maildir_flags)\n    FREE (&h->maildir_flags);\n  else if (q)\n    *q = '\\0';\n}\n\nstatic void maildir_update_mtime (CONTEXT * ctx)\n{\n  char buf[_POSIX_PATH_MAX];\n  struct stat st;\n  struct mh_data *data = mh_data (ctx);\n\n  if (ctx->magic == M_MAILDIR)\n  {\n    snprintf (buf, sizeof (buf), \"%s/%s\", ctx->path, \"cur\");\n    if (stat (buf, &st) == 0)\n      data->mtime_cur = st.st_mtime;\n    snprintf (buf, sizeof (buf), \"%s/%s\", ctx->path, \"new\");\n  }\n  else\n  {\n    snprintf (buf, sizeof (buf), \"%s/.mh_sequences\", ctx->path);\n    if (stat (buf, &st) == 0)\n      data->mtime_cur = st.st_mtime;\n\n    strfcpy (buf, ctx->path, sizeof (buf));\n  }\n\n  if (stat (buf, &st) == 0)\n    ctx->mtime = st.st_mtime;\n}\n\n/* \n * Actually parse a maildir message.  This may also be used to fill\n * out a fake header structure generated by lazy maildir parsing.\n */\nHEADER *maildir_parse_stream (int magic, FILE *f, const char *fname,\n\t\t\t\t      int is_old, HEADER * _h)\n{\n  HEADER *h = _h;\n  struct stat st;\n\n  if (!h)\n    h = mutt_new_header ();\n  h->env = mutt_read_rfc822_header (f, h, 0, 0);\n\n  fstat (fileno (f), &st);\n\n  if (!h->received)\n    h->received = h->date_sent;\n\n  /* always update the length since we have fresh information available. */\n  h->content->length = st.st_size - h->content->offset;\n\n  h->index = -1;\n\n  if (magic == M_MAILDIR)\n  {\n    /*\n     * maildir stores its flags in the filename, so ignore the\n     * flags in the header of the message\n     */\n\n    h->old = is_old;\n    maildir_parse_flags (h, fname);\n  }\n  return h;\n}\n\n/*\n * Actually parse a maildir message.  This may also be used to fill\n * out a fake header structure generated by lazy maildir parsing.\n */\nHEADER *maildir_parse_message (int magic, const char *fname,\n\t\t\t\t      int is_old, HEADER * h)\n{\n  FILE *f;\n\n  if ((f = fopen (fname, \"r\")) != NULL) {\n    h = maildir_parse_stream (magic, f, fname, is_old, h);\n    safe_fclose (&f);\n    return h;\n  }\n  return NULL;\n}\n\n/* Ignore the garbage files.  A valid MH message consists of only\n * digits.  Deleted message get moved to a filename with a comma before\n * it.\n */\n\nint mh_valid_message (const char *s)\n{\n  for (; *s; s++)\n  {\n    if (!isdigit ((unsigned char) *s))\n      return 0;\n  }\n  return 1;\n}\n\nstatic int maildir_parse_dir (CONTEXT * ctx, struct maildir ***last,\n\t\t\t      const char *subdir, int *count,\n\t\t\t      progress_t *progress)\n{\n  DIR *dirp;\n  struct dirent *de;\n  char buf[_POSIX_PATH_MAX];\n  int is_old = 0;\n  struct maildir *entry;\n  HEADER *h;\n\n  if (subdir)\n  {\n    snprintf (buf, sizeof (buf), \"%s/%s\", ctx->path, subdir);\n    is_old = (mutt_strcmp (\"cur\", subdir) == 0);\n  }\n  else\n    strfcpy (buf, ctx->path, sizeof (buf));\n\n  if ((dirp = opendir (buf)) == NULL)\n    return -1;\n\n  while ((de = readdir (dirp)) != NULL)\n  {\n    if ((ctx->magic == M_MH && !mh_valid_message (de->d_name))\n\t|| (ctx->magic == M_MAILDIR && *de->d_name == '.'))\n      continue;\n\n    /* FOO - really ignore the return value? */\n    dprint (2,\n\t    (debugfile, \"%s:%d: queueing %s\\n\", __FILE__, __LINE__,\n\t     de->d_name));\n\n    h = mutt_new_header ();\n    h->old = is_old;\n    if (ctx->magic == M_MAILDIR)\n      maildir_parse_flags (h, de->d_name);\n\n    if (count)\n    {\n      (*count)++;\n      if (!ctx->quiet && progress)\n\tmutt_progress_update (progress, *count, -1);\n    }\n\n    if (subdir)\n    {\n      char tmp[_POSIX_PATH_MAX];\n      snprintf (tmp, sizeof (tmp), \"%s/%s\", subdir, de->d_name);\n      h->path = safe_strdup (tmp);\n    }\n    else\n      h->path = safe_strdup (de->d_name);\n\n    entry = safe_calloc (sizeof (struct maildir), 1);\n    entry->h = h;\n#ifdef HAVE_DIRENT_D_INO\n    entry->inode = de->d_ino;\n#endif /* HAVE_DIRENT_D_INO */\n    **last = entry;\n    *last = &entry->next;\n  }\n\n  closedir (dirp);\n\n  return 0;\n}\n\nstatic int maildir_add_to_context (CONTEXT * ctx, struct maildir *md)\n{\n  int oldmsgcount = ctx->msgcount;\n\n  while (md)\n  {\n\n    dprint (2, (debugfile, \"%s:%d maildir_add_to_context(): Considering %s\\n\",\n\t\t__FILE__, __LINE__, NONULL (md->canon_fname)));\n\n    if (md->h)\n    {\n      dprint (2,\n\t      (debugfile,\n\t       \"%s:%d Adding header structure. Flags: %s%s%s%s%s\\n\", __FILE__,\n\t       __LINE__, md->h->flagged ? \"f\" : \"\", md->h->deleted ? \"D\" : \"\",\n\t       md->h->replied ? \"r\" : \"\", md->h->old ? \"O\" : \"\",\n\t       md->h->read ? \"R\" : \"\"));\n      if (ctx->msgcount == ctx->hdrmax)\n\tmx_alloc_memory (ctx);\n\n      ctx->hdrs[ctx->msgcount] = md->h;\n      ctx->hdrs[ctx->msgcount]->index = ctx->msgcount;\n      ctx->size +=\n\tmd->h->content->length + md->h->content->offset -\n\tmd->h->content->hdr_offset;\n\n      md->h = NULL;\n      ctx->msgcount++;\n    }\n    md = md->next;\n  }\n\n  if (ctx->msgcount > oldmsgcount)\n  {\n    mx_update_context (ctx, ctx->msgcount - oldmsgcount);\n    return 1;\n  }\n  return 0;\n}\n\nstatic int maildir_move_to_context (CONTEXT * ctx, struct maildir **md)\n{\n  int r;\n  r = maildir_add_to_context (ctx, *md);\n  maildir_free_maildir (md);\n  return r;\n}\n\n#if USE_HCACHE\nstatic size_t maildir_hcache_keylen (const char *fn)\n{\n  const char * p = strrchr (fn, ':');\n  return p ? (size_t) (p - fn) : mutt_strlen(fn);\n}\n#endif\n\n#if HAVE_DIRENT_D_INO\nstatic int md_cmp_inode (struct maildir *a, struct maildir *b)\n{\n  return a->inode - b->inode;\n}\n#endif\n\nstatic int md_cmp_path (struct maildir *a, struct maildir *b)\n{\n  return strcmp (a->h->path, b->h->path);\n}\n\n/*\n * Merge two maildir lists according to the inode numbers.\n */\nstatic struct maildir*  maildir_merge_lists (struct maildir *left,\n\t\t\t\t\t     struct maildir *right,\n\t\t\t\t\t     int (*cmp) (struct maildir *,\n\t\t\t\t\t\t\t struct maildir *))\n{\n  struct maildir* head;\n  struct maildir* tail;\n\n  if (left && right) \n  {\n    if (cmp (left, right) < 0)\n    {\n      head = left;\n      left = left->next;\n    }\n    else \n    {\n      head = right;\n      right = right->next;\n    }\n  } \n  else \n  {\n    if (left) \n      return left;\n    else \n      return right;\n  }\n    \n  tail = head;\n\n  while (left && right) \n  {\n    if (cmp (left, right) < 0)\n    {\n      tail->next = left;\n      left = left->next;\n    } \n    else \n    {\n      tail->next = right;\n      right = right->next;\n    }\n    tail = tail->next;\n  }\n\n  if (left) \n  {\n    tail->next = left;\n  }\n  else\n  {\n    tail->next = right;\n  }\n\n  return head;\n}\n\nstatic struct maildir* maildir_ins_sort (struct maildir* list,\n\t\t\t\t\t int (*cmp) (struct maildir *,\n\t\t\t\t\t\t     struct maildir *))\n{\n  struct maildir *tmp, *last, *ret = NULL, *back;\n\n  ret = list;\n  list = list->next;\n  ret->next = NULL;\n\n  while (list)\n  {\n    last = NULL;\n    back = list->next;\n    for (tmp = ret; tmp && cmp (tmp, list) <= 0; tmp = tmp->next)\n      last = tmp;\n\n    list->next = tmp;\n    if (last)\n      last->next = list;\n    else\n      ret = list;\n\n    list = back;\n  }\n\n  return ret;\n}\n\n/*\n * Sort maildir list according to inode.\n */\nstatic struct maildir* maildir_sort (struct maildir* list, size_t len,\n\t\t\t\t     int (*cmp) (struct maildir *,\n\t\t\t\t\t\t struct maildir *))\n{\n  struct maildir* left = list;\n  struct maildir* right = list;\n  size_t c = 0;\n\n  if (!list || !list->next) \n  {\n    return list;\n  }\n\n  if (len != (size_t)(-1) && len <= INS_SORT_THRESHOLD)\n    return maildir_ins_sort (list, cmp);\n\n  list = list->next;\n  while (list && list->next) \n  {\n    right = right->next;\n    list = list->next->next;\n    c++;\n  }\n\n  list = right;\n  right = right->next;\n  list->next = 0;\n\n  left = maildir_sort (left, c, cmp);\n  right = maildir_sort (right, c, cmp);\n  return maildir_merge_lists (left, right, cmp);\n}\n\n/* Sorts mailbox into it's natural order.\n * Currently only defined for MH where files are numbered.\n */\nstatic void mh_sort_natural (CONTEXT *ctx, struct maildir **md)\n{\n  if (!ctx || !md || !*md || ctx->magic != M_MH || Sort != SORT_ORDER)\n    return;\n  dprint (4, (debugfile, \"maildir: sorting %s into natural order\\n\",\n\t      ctx->path));\n  *md = maildir_sort (*md, (size_t) -1, md_cmp_path);\n}\n\n#if HAVE_DIRENT_D_INO\nstatic struct maildir *skip_duplicates (struct maildir *p, struct maildir **last)\n{\n  /*\n   * Skip ahead to the next non-duplicate message.\n   *\n   * p should never reach NULL, because we couldn't have reached this point unless\n   * there was a message that needed to be parsed.\n   *\n   * the check for p->header_parsed is likely unnecessary since the dupes will most\n   * likely be at the head of the list.  but it is present for consistency with\n   * the check at the top of the for() loop in maildir_delayed_parsing().\n   */\n  while (!p->h || p->header_parsed) {\n    *last = p;\n    p = p->next;\n  }\n  return p;\n}\n#endif\n\n/* \n * This function does the second parsing pass\n */\nstatic void maildir_delayed_parsing (CONTEXT * ctx, struct maildir **md,\n\t\t\t      progress_t *progress)\n{ \n  struct maildir *p, *last = NULL;\n  char fn[_POSIX_PATH_MAX];\n  int count;\n#if HAVE_DIRENT_D_INO\n  int sort = 0;\n#endif\n#if USE_HCACHE\n  header_cache_t *hc = NULL;\n  void *data;\n  struct timeval *when = NULL;\n  struct stat lastchanged;\n  int ret;\n#endif\n\n#if HAVE_DIRENT_D_INO\n#define DO_SORT()\tdo { \\\n  if (!sort) \\\n  { \\\n    dprint (4, (debugfile, \"maildir: need to sort %s by inode\\n\", ctx->path)); \\\n    p = maildir_sort (p, (size_t) -1, md_cmp_inode); \\\n    if (!last) \\\n      *md = p; \\\n    else \\\n      last->next = p; \\\n    sort = 1; \\\n    p = skip_duplicates (p, &last); \\\n    snprintf (fn, sizeof (fn), \"%s/%s\", ctx->path, p->h->path); \\\n  } \\\n} while(0)\n#else\n#define DO_SORT()\t/* nothing */\n#endif\n\n#if USE_HCACHE\n  hc = mutt_hcache_open (HeaderCache, ctx->path, NULL);\n#endif\n\n  for (p = *md, count = 0; p; p = p->next, count++)\n   {\n    if (! (p && p->h && !p->header_parsed))\n     {\n      last = p;\n      continue;\n    }\n\n    if (!ctx->quiet && progress)\n      mutt_progress_update (progress, count, -1);\n\n    DO_SORT();\n\n    snprintf (fn, sizeof (fn), \"%s/%s\", ctx->path, p->h->path);\n\n#if USE_HCACHE\n    if (option(OPTHCACHEVERIFY))\n    {\n       ret = stat(fn, &lastchanged);\n    }\n    else\n    {\n      lastchanged.st_mtime = 0;\n      ret = 0;\n    }\n\n    if (ctx->magic == M_MH)\n      data = mutt_hcache_fetch (hc, p->h->path, strlen);\n    else\n      data = mutt_hcache_fetch (hc, p->h->path + 3, &maildir_hcache_keylen);\n    when = (struct timeval *) data;\n\n    if (data != NULL && !ret && lastchanged.st_mtime <= when->tv_sec)\n    {\n      p->h = mutt_hcache_restore ((unsigned char *)data, &p->h);\n      if (ctx->magic == M_MAILDIR)\n\tmaildir_parse_flags (p->h, fn);\n    }\n    else\n    {\n#endif /* USE_HCACHE */\n\n    if (maildir_parse_message (ctx->magic, fn, p->h->old, p->h))\n    {\n      p->header_parsed = 1;\n#if USE_HCACHE\n      if (ctx->magic == M_MH)\n\tmutt_hcache_store (hc, p->h->path, p->h, 0, strlen, M_GENERATE_UIDVALIDITY);\n      else\n\tmutt_hcache_store (hc, p->h->path + 3, p->h, 0, &maildir_hcache_keylen, M_GENERATE_UIDVALIDITY);\n#endif\n    } else\n      mutt_free_header (&p->h);\n#if USE_HCACHE\n    }\n    FREE (&data);\n#endif\n    last = p;\n   }\n#if USE_HCACHE\n  mutt_hcache_close (hc);\n#endif\n\n#undef DO_SORT\n\n  mh_sort_natural (ctx, md);\n}\n\nstatic int mh_close_mailbox (CONTEXT *ctx)\n{\n  FREE (&ctx->data);\n\n  return 0;\n}\n\n/* Read a MH/maildir style mailbox.\n *\n * args:\n *\tctx [IN/OUT]\tcontext for this mailbox\n *\tsubdir [IN]\tNULL for MH mailboxes, otherwise the subdir of the\n *\t\t\tmaildir mailbox to read from\n */\nint mh_read_dir (CONTEXT * ctx, const char *subdir)\n{\n  struct maildir *md;\n  struct mh_sequences mhs;\n  struct maildir **last;\n  struct mh_data *data;\n  int count;\n  char msgbuf[STRING];\n  progress_t progress;\n\n  memset (&mhs, 0, sizeof (mhs));\n  if (!ctx->quiet)\n  {\n    snprintf (msgbuf, sizeof (msgbuf), _(\"Scanning %s...\"), ctx->path);\n    mutt_progress_init (&progress, msgbuf, M_PROGRESS_MSG, ReadInc, 0);\n  }\n\n  if (!ctx->data)\n  {\n    ctx->data = safe_calloc(sizeof (struct mh_data), 1);\n    ctx->mx_close = mh_close_mailbox;\n  }\n  data = mh_data (ctx);\n\n  maildir_update_mtime (ctx);\n\n  md = NULL;\n  last = &md;\n  count = 0;\n  if (maildir_parse_dir (ctx, &last, subdir, &count, &progress) == -1)\n    return -1;\n\n  if (!ctx->quiet)\n  {\n    snprintf (msgbuf, sizeof (msgbuf), _(\"Reading %s...\"), ctx->path);\n    mutt_progress_init (&progress, msgbuf, M_PROGRESS_MSG, ReadInc, count);\n  }\n  maildir_delayed_parsing (ctx, &md, &progress);\n\n  if (ctx->magic == M_MH)\n  {\n    if (mh_read_sequences (&mhs, ctx->path) < 0)\n      return -1;\n    mh_update_maildir (md, &mhs);\n    mhs_free_sequences (&mhs);\n  }\n\n  maildir_move_to_context (ctx, &md);\n\n  if (!data->mh_umask)\n    data->mh_umask = mh_umask (ctx);\n\n  return 0;\n}\n\n/* read a maildir style mailbox */\nint maildir_read_dir (CONTEXT * ctx)\n{\n  /* maildir looks sort of like MH, except that there are two subdirectories\n   * of the main folder path from which to read messages\n   */\n  if (mh_read_dir (ctx, \"new\") == -1 || mh_read_dir (ctx, \"cur\") == -1)\n    return (-1);\n\n  return 0;\n}\n\n/*\n * Open a new (temporary) message in an MH folder.\n */\n\nint mh_open_new_message (MESSAGE * msg, CONTEXT * dest, HEADER * hdr)\n{\n  return mh_mkstemp (dest, &msg->fp, &msg->path);\n}\n\nstatic int ch_compar (const void *a, const void *b)\n{\n  return (int)( *((const char *) a) - *((const char *) b));\n}\n\nvoid maildir_flags (char *dest, size_t destlen, HEADER * hdr)\n{\n  *dest = '\\0';\n\n  /*\n   * The maildir specification requires that all files in the cur\n   * subdirectory have the :unique string appeneded, regardless of whether\n   * or not there are any flags.  If .old is set, we know that this message\n   * will end up in the cur directory, so we include it in the following\n   * test even though there is no associated flag.\n   */\n  \n  if (hdr && (hdr->flagged || hdr->replied || hdr->read || hdr->deleted || hdr->old || hdr->maildir_flags))\n  {\n    char tmp[LONG_STRING];\n    snprintf (tmp, sizeof (tmp),\n\t      \"%s%s%s%s%s\",\n\t      hdr->flagged ? \"F\" : \"\",\n\t      hdr->replied ? \"R\" : \"\",\n\t      hdr->read ? \"S\" : \"\", hdr->deleted ? \"T\" : \"\",\n\t      NONULL(hdr->maildir_flags));\n    if (hdr->maildir_flags)\n      qsort (tmp, strlen (tmp), 1, ch_compar);\n    snprintf (dest, destlen, \":2,%s\", tmp);\n  }\n}\n\n\n/*\n * Open a new (temporary) message in a maildir folder.\n * \n * Note that this uses _almost_ the maildir file name format, but\n * with a {cur,new} prefix.\n *\n */\n\nint maildir_open_new_message (MESSAGE * msg, CONTEXT * dest, HEADER * hdr)\n{\n  int fd;\n  char path[_POSIX_PATH_MAX];\n  char suffix[16];\n  char subdir[16];\n  mode_t omask;\n\n  if (hdr)\n  {\n    short deleted = hdr->deleted;\n    hdr->deleted = 0;\n\n    maildir_flags (suffix, sizeof (suffix), hdr);\n\n    hdr->deleted = deleted;\n  }\n  else\n    *suffix = '\\0';\n\n  if (hdr && (hdr->read || hdr->old))\n    strfcpy (subdir, \"cur\", sizeof (subdir));\n  else\n    strfcpy (subdir, \"new\", sizeof (subdir));\n\n  omask = umask (mh_umask (dest));\n  FOREVER\n  {\n    snprintf (path, _POSIX_PATH_MAX, \"%s/tmp/%s.%lld.R%\" PRIu64 \".%s%s\",\n\t      dest->path, subdir, (long long)time (NULL), mutt_rand64(),\n              NONULL (Hostname), suffix);\n\n    dprint (2, (debugfile, \"maildir_open_new_message (): Trying %s.\\n\",\n\t\tpath));\n\n    if ((fd = open (path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1)\n    {\n      if (errno != EEXIST)\n      {\n\tumask (omask);\n\tmutt_perror (path);\n\treturn -1;\n      }\n    }\n    else\n    {\n      dprint (2, (debugfile, \"maildir_open_new_message (): Success.\\n\"));\n      msg->path = safe_strdup (path);\n      break;\n    }\n  }\n  umask (omask);\n\n  if ((msg->fp = fdopen (fd, \"w\")) == NULL)\n  {\n    FREE (&msg->path);\n    close (fd);\n    unlink (path);\n    return (-1);\n  }\n\n  return 0;\n}\n\n\n\n/*\n * Commit a message to a maildir folder.\n * \n * msg->path contains the file name of a file in tmp/. We take the\n * flags from this file's name. \n *\n * ctx is the mail folder we commit to.\n * \n * hdr is a header structure to which we write the message's new\n * file name.  This is used in the mh and maildir folder synch\n * routines.  When this routine is invoked from mx_commit_message,\n * hdr is NULL. \n *\n * msg->path looks like this:\n * \n *    tmp/{cur,new}.mutt-HOSTNAME-PID-COUNTER:flags\n * \n * See also maildir_open_new_message().\n * \n */\n\nint maildir_commit_message (CONTEXT * ctx, MESSAGE * msg, HEADER * hdr)\n{\n  char subdir[4];\n  char suffix[16];\n  char path[_POSIX_PATH_MAX];\n  char full[_POSIX_PATH_MAX];\n  char *s;\n\n  if (safe_fsync_close (&msg->fp))\n  {\n    mutt_perror (_(\"Could not flush message to disk\"));\n    return -1;\n  }\n\n  /* extract the subdir */\n  s = strrchr (msg->path, '/') + 1;\n  strfcpy (subdir, s, 4);\n\n  /* extract the flags */\n  if ((s = strchr (s, ':')))\n    strfcpy (suffix, s, sizeof (suffix));\n  else\n    suffix[0] = '\\0';\n\n  /* construct a new file name. */\n  FOREVER\n  {\n    snprintf (path, _POSIX_PATH_MAX, \"%s/%lld.R%\" PRIu64 \".%s%s\", subdir,\n\t      (long long)time (NULL), mutt_rand64(),\n\t      NONULL (Hostname), suffix);\n    snprintf (full, _POSIX_PATH_MAX, \"%s/%s\", ctx->path, path);\n\n    dprint (2, (debugfile, \"maildir_commit_message (): renaming %s to %s.\\n\",\n\t\tmsg->path, full));\n\n    if (safe_rename (msg->path, full) == 0)\n    {\n      /*\n       * Adjust the mtime on the file to match the time at which this\n       * message was received.  Currently this is only set when copying\n       * messages between mailboxes, so we test to ensure that it is\n       * actually set.\n       */\n      if (msg->received)\n      {\n\tstruct utimbuf ut;\n\n\tut.actime = msg->received;\n\tut.modtime = msg->received;\n\tif (utime (full, &ut))\n\t{\n\t  mutt_perror (_(\"maildir_commit_message(): unable to set time on file\"));\n\t  goto post_rename_err;\n\t}\n      }\n\n#ifdef USE_NOTMUCH\n      if (ctx->magic == M_NOTMUCH)\n\tnm_update_filename(ctx, hdr->path, full, hdr);\n#endif\n      if (hdr)\n\tmutt_str_replace (&hdr->path, path);\n      mutt_str_replace (&msg->commited_path, full);\n      FREE (&msg->path);\n\n      return 0;\n\npost_rename_err:\n      return -1;\n    }\n    else if (errno != EEXIST)\n    {\n      mutt_perror (ctx->path);\n      return -1;\n    }\n  }\n}\n\n/* \n * commit a message to an MH folder.\n * \n */\n\n\nstatic int _mh_commit_message (CONTEXT * ctx, MESSAGE * msg, HEADER * hdr,\n\t\t\t       short updseq)\n{\n  DIR *dirp;\n  struct dirent *de;\n  char *cp, *dep;\n  unsigned int n, hi = 0;\n  char path[_POSIX_PATH_MAX];\n  char tmp[16];\n\n  if (safe_fsync_close (&msg->fp))\n  {\n    mutt_perror (_(\"Could not flush message to disk\"));\n    return -1;\n  }\n\n  if ((dirp = opendir (ctx->path)) == NULL)\n  {\n    mutt_perror (ctx->path);\n    return (-1);\n  }\n\n  /* figure out what the next message number is */\n  while ((de = readdir (dirp)) != NULL)\n  {\n    dep = de->d_name;\n    if (*dep == ',')\n      dep++;\n    cp = dep;\n    while (*cp)\n    {\n      if (!isdigit ((unsigned char) *cp))\n\tbreak;\n      cp++;\n    }\n    if (!*cp)\n    {\n      n = atoi (dep);\n      if (n > hi)\n\thi = n;\n    }\n  }\n  closedir (dirp);\n\n  /* \n   * Now try to rename the file to the proper name.\n   * \n   * Note: We may have to try multiple times, until we find a free\n   * slot.\n   */\n\n  FOREVER\n  {\n    hi++;\n    snprintf (tmp, sizeof (tmp), \"%d\", hi);\n    snprintf (path, sizeof (path), \"%s/%s\", ctx->path, tmp);\n    if (safe_rename (msg->path, path) == 0)\n    {\n      if (hdr)\n\tmutt_str_replace (&hdr->path, tmp);\n      mutt_str_replace (&msg->commited_path, path);\n      FREE (&msg->path);\n      break;\n    }\n    else if (errno != EEXIST)\n    {\n      mutt_perror (ctx->path);\n      return -1;\n    }\n  }\n  if (updseq)\n    mh_sequences_add_one (ctx, hi, !msg->flags.read, msg->flags.flagged,\n\t\t\t  msg->flags.replied);\n  return 0;\n}\n\nint mh_commit_message (CONTEXT * ctx, MESSAGE * msg, HEADER * hdr)\n{\n  return _mh_commit_message (ctx, msg, hdr, 1);\n}\n\n\n/* Sync a message in an MH folder.\n * \n * This code is also used for attachment deletion in maildir\n * folders.\n */\n\nstatic int mh_rewrite_message (CONTEXT * ctx, int msgno)\n{\n  HEADER *h = ctx->hdrs[msgno];\n  MESSAGE *dest;\n\n  int rc;\n  short restore = 1;\n  char oldpath[_POSIX_PATH_MAX];\n  char newpath[_POSIX_PATH_MAX];\n  char partpath[_POSIX_PATH_MAX];\n\n  long old_body_offset = h->content->offset;\n  long old_body_length = h->content->length;\n  long old_hdr_lines = h->lines;\n\n  if ((dest = mx_open_new_message (ctx, h, 0)) == NULL)\n    return -1;\n\n  if ((rc = mutt_copy_message (dest->fp, ctx, h,\n\t\t\t       M_CM_UPDATE, CH_UPDATE | CH_UPDATE_LEN)) == 0)\n  {\n    snprintf (oldpath, _POSIX_PATH_MAX, \"%s/%s\", ctx->path, h->path);\n    strfcpy (partpath, h->path, _POSIX_PATH_MAX);\n\n    if (ctx->magic == M_MAILDIR)\n      rc = maildir_commit_message (ctx, dest, h);\n    else\n      rc = _mh_commit_message (ctx, dest, h, 0);\n\n    mx_close_message (&dest);\n\n    if (rc == 0)\n    {\n      unlink (oldpath);\n      restore = 0;\n    }\n\n    /* \n     * Try to move the new message to the old place.\n     * (MH only.)\n     *\n     * This is important when we are just updating flags.\n     *\n     * Note that there is a race condition against programs which\n     * use the first free slot instead of the maximum message\n     * number.  Mutt does _not_ behave like this.\n     * \n     * Anyway, if this fails, the message is in the folder, so\n     * all what happens is that a concurrently running mutt will\n     * lose flag modifications.\n     */\n\n    if (ctx->magic == M_MH && rc == 0)\n    {\n      snprintf (newpath, _POSIX_PATH_MAX, \"%s/%s\", ctx->path, h->path);\n      if ((rc = safe_rename (newpath, oldpath)) == 0)\n\tmutt_str_replace (&h->path, partpath);\n    }\n  }\n  else\n    mx_close_message (&dest);\n\n  if (rc == -1 && restore)\n  {\n    h->content->offset = old_body_offset;\n    h->content->length = old_body_length;\n    h->lines = old_hdr_lines;\n  }\n\n  mutt_free_body (&h->content->parts);\n  return rc;\n}\n\nstatic int mh_sync_message (CONTEXT * ctx, int msgno)\n{\n  HEADER *h = ctx->hdrs[msgno];\n\n  if (h->attach_del || \n      (h->env && (h->env->refs_changed || h->env->irt_changed)))\n    if (mh_rewrite_message (ctx, msgno) != 0)\n      return -1;\n\n  return 0;\n}\n\nstatic int maildir_sync_message (CONTEXT * ctx, int msgno)\n{\n  HEADER *h = ctx->hdrs[msgno];\n\n  if (h->attach_del || \n      (h->env && (h->env->refs_changed || h->env->irt_changed)))\n  {\n    /* when doing attachment deletion/rethreading, fall back to the MH case. */\n    if (mh_rewrite_message (ctx, msgno) != 0)\n      return (-1);\n  }\n  else\n  {\n    /* we just have to rename the file. */\n\n    char newpath[_POSIX_PATH_MAX];\n    char partpath[_POSIX_PATH_MAX];\n    char fullpath[_POSIX_PATH_MAX];\n    char oldpath[_POSIX_PATH_MAX];\n    char suffix[16];\n    char *p;\n\n    if ((p = strrchr (h->path, '/')) == NULL)\n    {\n      dprint (1,\n\t      (debugfile,\n\t       \"maildir_sync_message: %s: unable to find subdir!\\n\",\n\t       h->path));\n      return (-1);\n    }\n    p++;\n    strfcpy (newpath, p, sizeof (newpath));\n\n    /* kill the previous flags */\n    if ((p = strchr (newpath, ':')) != NULL)\n      *p = 0;\n\n    maildir_flags (suffix, sizeof (suffix), h);\n\n    snprintf (partpath, sizeof (partpath), \"%s/%s%s\",\n\t      (h->read || h->old) ? \"cur\" : \"new\", newpath, suffix);\n    snprintf (fullpath, sizeof (fullpath), \"%s/%s\", ctx->path, partpath);\n    snprintf (oldpath, sizeof (oldpath), \"%s/%s\", ctx->path, h->path);\n\n    if (mutt_strcmp (fullpath, oldpath) == 0)\n    {\n      /* message hasn't really changed */\n      return 0;\n    }\n\n    /* record that the message is possibly marked as trashed on disk */\n    h->trash = h->deleted;\n\n    if (rename (oldpath, fullpath) != 0)\n    {\n      mutt_perror (\"rename\");\n      return (-1);\n    }\n    mutt_str_replace (&h->path, partpath);\n  }\n  return (0);\n}\n\n#if USE_HCACHE\nint mh_sync_mailbox_message (CONTEXT * ctx, int msgno, header_cache_t *hc)\n#else\nint mh_sync_mailbox_message (CONTEXT * ctx, int msgno)\n#endif\n{\n    char path[_POSIX_PATH_MAX], tmp[_POSIX_PATH_MAX];\n    HEADER *h = ctx->hdrs[msgno];\n\n    if (h->deleted && (ctx->magic != M_MAILDIR || !option (OPTMAILDIRTRASH)))\n    {\n      snprintf (path, sizeof (path), \"%s/%s\", ctx->path, h->path);\n      if (ctx->magic == M_MAILDIR\n\t  || (option (OPTMHPURGE) && ctx->magic == M_MH))\n      {\n#if USE_HCACHE\n\tif (hc) {\n           if (ctx->magic == M_MAILDIR)\n              mutt_hcache_delete (hc, h->path + 3, &maildir_hcache_keylen);\n\t   else if (ctx->magic == M_MH)\n\t      mutt_hcache_delete (hc, h->path, strlen);\n\t}\n#endif /* USE_HCACHE */\n\tunlink (path);\n      }\n      else if (ctx->magic == M_MH)\n      {\n\t/* MH just moves files out of the way when you delete them */\n\tif (*h->path != ',')\n\t{\n\t  snprintf (tmp, sizeof (tmp), \"%s/,%s\", ctx->path, h->path);\n\t  unlink (tmp);\n\t  rename (path, tmp);\n\t}\n\n      }\n    }\n    else if (h->changed || h->attach_del ||\n\t     (ctx->magic == M_MAILDIR\n\t      && (option (OPTMAILDIRTRASH) || h->trash)\n\t      && (h->deleted != h->trash)))\n    {\n      if (ctx->magic == M_MAILDIR)\n      {\n\tif (maildir_sync_message (ctx, msgno) == -1)\n\t  return -1;\n      }\n      else\n      {\n\tif (mh_sync_message (ctx, msgno) == -1)\n\t  return -1;\n      }\n    }\n\n#if USE_HCACHE\n    if (hc && h->changed)\n    {\n      if (ctx->magic == M_MAILDIR)\n\tmutt_hcache_store (hc, h->path + 3, h, 0, &maildir_hcache_keylen, M_GENERATE_UIDVALIDITY);\n      else if (ctx->magic == M_MH)\n\tmutt_hcache_store (hc, h->path, h, 0, strlen, M_GENERATE_UIDVALIDITY);\n    }\n#endif\n\n    return 0;\n}\n\nint mh_sync_mailbox (CONTEXT * ctx, int *index_hint)\n{\n  int i, j;\n#if USE_HCACHE\n  header_cache_t *hc = NULL;\n#endif /* USE_HCACHE */\n  char msgbuf[STRING];\n  progress_t progress;\n\n  if (ctx->magic == M_MH)\n    i = mh_check_mailbox (ctx, index_hint);\n  else\n    i = maildir_check_mailbox (ctx, index_hint);\n\n  if (i != 0)\n    return i;\n\n#if USE_HCACHE\n  if (ctx->magic == M_MAILDIR || ctx->magic == M_MH)\n    hc = mutt_hcache_open(HeaderCache, ctx->path, NULL);\n#endif /* USE_HCACHE */\n\n  if (!ctx->quiet)\n  {\n    snprintf (msgbuf, sizeof (msgbuf), _(\"Writing %s...\"), ctx->path);\n    mutt_progress_init (&progress, msgbuf, M_PROGRESS_MSG, WriteInc, ctx->msgcount);\n  }\n\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    if (!ctx->quiet)\n      mutt_progress_update (&progress, i, -1);\n\n#if USE_HCACHE\n    if (mh_sync_mailbox_message (ctx, i, hc) == -1)\n      goto err;\n#else\n    if (mh_sync_mailbox_message (ctx, i) == -1)\n      goto err;\n#endif\n  }\n\n#if USE_HCACHE\n  if (ctx->magic == M_MAILDIR || ctx->magic == M_MH)\n    mutt_hcache_close (hc);\n#endif /* USE_HCACHE */\n\n  if (ctx->magic == M_MH)\n    mh_update_sequences (ctx);\n\n  /* XXX race condition? */\n\n  maildir_update_mtime (ctx);\n\n  /* adjust indices */\n\n  if (ctx->deleted)\n  {\n    for (i = 0, j = 0; i < ctx->msgcount; i++)\n    {\n      if (!ctx->hdrs[i]->deleted\n\t  || (ctx->magic == M_MAILDIR && option (OPTMAILDIRTRASH)))\n\tctx->hdrs[i]->index = j++;\n    }\n  }\n\n  return 0;\n\nerr:\n#if USE_HCACHE\n  if (ctx->magic == M_MAILDIR || ctx->magic == M_MH)\n    mutt_hcache_close (hc);\n#endif /* USE_HCACHE */\n  return -1;\n}\n\nstatic char *maildir_canon_filename (char *dest, const char *src, size_t l)\n{\n  char *t, *u;\n\n  if ((t = strrchr (src, '/')))\n    src = t + 1;\n\n  strfcpy (dest, src, l);\n  if ((u = strrchr (dest, ':')))\n    *u = '\\0';\n\n  return dest;\n}\n\nstatic void maildir_update_tables (CONTEXT *ctx, int *index_hint)\n{\n  short old_sort;\n  int old_count;\n  int i, j;\n  \n  if (Sort != SORT_ORDER)\n  {\n    old_sort = Sort;\n    Sort = SORT_ORDER;\n    mutt_sort_headers (ctx, 1);\n    Sort = old_sort;\n  }\n  \n  old_count = ctx->msgcount;\n  for (i = 0, j = 0; i < old_count; i++)\n  {\n    if (ctx->hdrs[i]->active && index_hint && *index_hint == i)\n      *index_hint = j;\n    \n    if (ctx->hdrs[i]->active)\n      ctx->hdrs[i]->index = j++;\n  }\n\n  mx_update_tables (ctx, 0);\n  mutt_clear_threads (ctx);\n}\n\nvoid maildir_update_flags (CONTEXT *ctx, HEADER *o, HEADER *n)\n{\n  /* save the global state here so we can reset it at the\n   * end of list block if required.\n   */\n  int context_changed = ctx->changed;\n  \n  /* user didn't modify this message.  alter the flags to match the\n   * current state on disk.  This may not actually do\n   * anything. mutt_set_flag() will just ignore the call if the status\n   * bits are already properly set, but it is still faster not to pass\n   * through it */\n  if (o->flagged != n->flagged)\n    mutt_set_flag (ctx, o, M_FLAG, n->flagged);\n  if (o->replied != n->replied)\n    mutt_set_flag (ctx, o, M_REPLIED, n->replied);\n  if (o->read != n->read)\n    mutt_set_flag (ctx, o, M_READ, n->read);\n  if (o->old != n->old)\n    mutt_set_flag (ctx, o, M_OLD, n->old);\n\n  /* mutt_set_flag() will set this, but we don't need to\n   * sync the changes we made because we just updated the\n   * context to match the current on-disk state of the\n   * message.\n   */\n  o->changed = 0;\n  \n  /* if the mailbox was not modified before we made these\n   * changes, unset the changed flag since nothing needs to\n   * be synchronized.\n   */\n  if (!context_changed)\n    ctx->changed = 0;\n}\n\n\n/* This function handles arrival of new mail and reopening of\n * maildir folders.  The basic idea here is we check to see if either\n * the new or cur subdirectories have changed, and if so, we scan them\n * for the list of files.  We check for newly added messages, and\n * then merge the flags messages we already knew about.  We don't treat\n * either subdirectory differently, as mail could be copied directly into\n * the cur directory from another agent.\n */\nint maildir_check_mailbox (CONTEXT * ctx, int *index_hint)\n{\n  struct stat st_new;\t\t/* status of the \"new\" subdirectory */\n  struct stat st_cur;\t\t/* status of the \"cur\" subdirectory */\n  char buf[_POSIX_PATH_MAX];\n  int changed = 0;\t\t/* bitmask representing which subdirectories\n\t\t\t\t   have changed.  0x1 = new, 0x2 = cur */\n  int occult = 0;\t\t/* messages were removed from the mailbox */\n  int have_new = 0;\t\t/* messages were added to the mailbox */\n  struct maildir *md;\t\t/* list of messages in the mailbox */\n  struct maildir **last, *p;\n  int i;\n  HASH *fnames;\t\t\t/* hash table for quickly looking up the base filename\n\t\t\t\t   for a maildir message */\n  struct mh_data *data = mh_data (ctx);\n\n  /* XXX seems like this check belongs in mx_check_mailbox()\n   * rather than here.\n   */\n  if (!option (OPTCHECKNEW))\n    return 0;\n\n  snprintf (buf, sizeof (buf), \"%s/new\", ctx->path);\n  if (stat (buf, &st_new) == -1)\n    return -1;\n\n  snprintf (buf, sizeof (buf), \"%s/cur\", ctx->path);\n  if (stat (buf, &st_cur) == -1)\n    return -1;\n\n  /* determine which subdirectories need to be scanned */\n  if (st_new.st_mtime > ctx->mtime)\n    changed = 1;\n  if (st_cur.st_mtime > data->mtime_cur)\n    changed |= 2;\n\n  if (!changed)\n    return 0;\t\t\t/* nothing to do */\n\n  /* update the modification times on the mailbox */\n  data->mtime_cur = st_cur.st_mtime;\n  ctx->mtime = st_new.st_mtime;\n\n  /* do a fast scan of just the filenames in\n   * the subdirectories that have changed.\n   */\n  md = NULL;\n  last = &md;\n  if (changed & 1)\n    maildir_parse_dir (ctx, &last, \"new\", NULL, NULL);\n  if (changed & 2)\n    maildir_parse_dir (ctx, &last, \"cur\", NULL, NULL);\n\n  /* we create a hash table keyed off the canonical (sans flags) filename\n   * of each message we scanned.  This is used in the loop over the\n   * existing messages below to do some correlation.\n   */\n  fnames = hash_create (1031, 0);\n\n  for (p = md; p; p = p->next)\n  {\n    maildir_canon_filename (buf, p->h->path, sizeof (buf));\n    p->canon_fname = safe_strdup (buf);\n    hash_insert (fnames, p->canon_fname, p, 0);\n  }\n\n  /* check for modifications and adjust flags */\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    ctx->hdrs[i]->active = 0;\n    maildir_canon_filename (buf, ctx->hdrs[i]->path, sizeof (buf));\n    p = hash_find (fnames, buf);\n    if (p && p->h)\n    {\n      /* message already exists, merge flags */\n      ctx->hdrs[i]->active = 1;\n\n      /* check to see if the message has moved to a different\n       * subdirectory.  If so, update the associated filename.\n       */\n      if (mutt_strcmp (ctx->hdrs[i]->path, p->h->path))\n\tmutt_str_replace (&ctx->hdrs[i]->path, p->h->path);\n\n      /* if the user hasn't modified the flags on this message, update\n       * the flags we just detected.\n       */\n      if (!ctx->hdrs[i]->changed)\n\tmaildir_update_flags (ctx, ctx->hdrs[i], p->h);\n\n      if (ctx->hdrs[i]->deleted == ctx->hdrs[i]->trash)\n\tctx->hdrs[i]->deleted = p->h->deleted;\n      ctx->hdrs[i]->trash = p->h->trash;\n\n      /* this is a duplicate of an existing header, so remove it */\n      mutt_free_header (&p->h);\n    }\n    /* This message was not in the list of messages we just scanned.\n     * Check to see if we have enough information to know if the\n     * message has disappeared out from underneath us.\n     */\n    else if (((changed & 1) && (!strncmp (ctx->hdrs[i]->path, \"new/\", 4))) ||\n\t     ((changed & 2) && (!strncmp (ctx->hdrs[i]->path, \"cur/\", 4))))\n    {\n      /* This message disappeared, so we need to simulate a \"reopen\"\n       * event.  We know it disappeared because we just scanned the\n       * subdirectory it used to reside in.\n       */\n      occult = 1;\n    }\n    else\n    {\n      /* This message resides in a subdirectory which was not\n       * modified, so we assume that it is still present and\n       * unchanged.\n       */\n      ctx->hdrs[i]->active = 1;\n    }\n  }\n\n  /* destroy the file name hash */\n  hash_destroy (&fnames, NULL);\n\n  /* If we didn't just get new mail, update the tables. */\n  if (occult)\n    maildir_update_tables (ctx, index_hint);\n  \n  /* do any delayed parsing we need to do. */\n  maildir_delayed_parsing (ctx, &md, NULL);\n\n  /* Incorporate new messages */\n  have_new = maildir_move_to_context (ctx, &md);\n\n  return occult ? M_REOPENED : (have_new ? M_NEW_MAIL : 0);\n}\n\n/* \n * This function handles arrival of new mail and reopening of\n * mh/maildir folders. Things are getting rather complex because we\n * don't have a well-defined \"mailbox order\", so the tricks from\n * mbox.c and mx.c won't work here.\n *\n * Don't change this code unless you _really_ understand what\n * happens.\n *\n */\n\nint mh_check_mailbox (CONTEXT * ctx, int *index_hint)\n{\n  char buf[_POSIX_PATH_MAX];\n  struct stat st, st_cur;\n  short modified = 0, have_new = 0, occult = 0;\n  struct maildir *md, *p;\n  struct maildir **last = NULL;\n  struct mh_sequences mhs;\n  HASH *fnames;\n  int i;\n  struct mh_data *data = mh_data (ctx);\n\n  if (!option (OPTCHECKNEW))\n    return 0;\n\n  strfcpy (buf, ctx->path, sizeof (buf));\n  if (stat (buf, &st) == -1)\n    return -1;\n  \n  /* create .mh_sequences when there isn't one. */\n  snprintf (buf, sizeof (buf), \"%s/.mh_sequences\", ctx->path);\n  if ((i = stat (buf, &st_cur)) == -1 && errno == ENOENT)\n  {\n    char *tmp;\n    FILE *fp = NULL;\n    \n    if (mh_mkstemp (ctx, &fp, &tmp) == 0)\n    {\n      safe_fclose (&fp);\n      if (safe_rename (tmp, buf) == -1)\n\tunlink (tmp);\n      FREE (&tmp);\n    }\n  }\n\n  if (i == -1 && stat (buf, &st_cur) == -1)\n    modified = 1;\n\n  if (st.st_mtime > ctx->mtime || st_cur.st_mtime > data->mtime_cur)\n    modified = 1;\n\n  if (!modified)\n    return 0;\n\n  data->mtime_cur = st_cur.st_mtime;\n  ctx->mtime = st.st_mtime;\n\n  memset (&mhs, 0, sizeof (mhs));\n\n  md   = NULL;\n  last = &md;\n\n  maildir_parse_dir (ctx, &last, NULL, NULL, NULL);\n  maildir_delayed_parsing (ctx, &md, NULL);\n\n  if (mh_read_sequences (&mhs, ctx->path) < 0)\n    return -1;\n  mh_update_maildir (md, &mhs);\n  mhs_free_sequences (&mhs);\n\n  /* check for modifications and adjust flags */\n  fnames = hash_create (1031, 0);\n\n  for (p = md; p; p = p->next)\n  {\n    /* the hash key must survive past the header, which is freed below. */\n    p->canon_fname = safe_strdup (p->h->path);\n    hash_insert (fnames, p->canon_fname, p, 0);\n  }\n\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    ctx->hdrs[i]->active = 0;\n\n    if ((p = hash_find (fnames, ctx->hdrs[i]->path)) && p->h &&\n\t(mbox_strict_cmp_headers (ctx->hdrs[i], p->h)))\n    {\n      ctx->hdrs[i]->active = 1;\n      /* found the right message */\n      if (!ctx->hdrs[i]->changed)\n\tmaildir_update_flags (ctx, ctx->hdrs[i], p->h);\n\n      mutt_free_header (&p->h);\n    }\n    else /* message has disappeared */\n      occult = 1;\n  }\n\n  /* destroy the file name hash */\n\n  hash_destroy (&fnames, NULL);\n\n  /* If we didn't just get new mail, update the tables. */\n  if (occult)\n    maildir_update_tables (ctx, index_hint);\n\n  /* Incorporate new messages */\n  have_new = maildir_move_to_context (ctx, &md);\n\n  return occult ? M_REOPENED : (have_new ? M_NEW_MAIL : 0);\n}\n\n\n\n\n/*\n * These functions try to find a message in a maildir folder when it\n * has moved under our feet.  Note that this code is rather expensive, but\n * then again, it's called rarely.\n */\n\nstatic FILE *_maildir_open_find_message (const char *folder, const char *unique,\n\t\t\t\t  const char *subfolder, char **newname)\n{\n  char dir[_POSIX_PATH_MAX];\n  char tunique[_POSIX_PATH_MAX];\n  char fname[_POSIX_PATH_MAX];\n\n  DIR *dp;\n  struct dirent *de;\n\n  FILE *fp = NULL;\n  int oe = ENOENT;\n\n  snprintf (dir, sizeof (dir), \"%s/%s\", folder, subfolder);\n\n  if ((dp = opendir (dir)) == NULL)\n  {\n    errno = ENOENT;\n    return NULL;\n  }\n\n  while ((de = readdir (dp)))\n  {\n    maildir_canon_filename (tunique, de->d_name, sizeof (tunique));\n\n    if (!mutt_strcmp (tunique, unique))\n    {\n      snprintf (fname, sizeof (fname), \"%s/%s/%s\", folder, subfolder,\n\t\tde->d_name);\n      fp = fopen (fname, \"r\");\t/* __FOPEN_CHECKED__ */\n      oe = errno;\n      break;\n    }\n  }\n\n  closedir (dp);\n\n  if (newname && fp)\n    *newname = safe_strdup(fname);\n\n  errno = oe;\n  return fp;\n}\n\nFILE *maildir_open_find_message (const char *folder, const char *msg,\n                                  char **newname)\n{\n  char unique[_POSIX_PATH_MAX];\n  FILE *fp;\n\n  static unsigned int new_hits = 0, cur_hits = 0;\t/* simple dynamic optimization */\n\n  maildir_canon_filename (unique, msg, sizeof (unique));\n\n  if (\n      (fp =\n       _maildir_open_find_message (folder, unique,\n\t\t\t\t   new_hits > cur_hits ? \"new\" : \"cur\",\n\t\t\t\t   newname))\n      || errno != ENOENT)\n  {\n    if (new_hits < UINT_MAX && cur_hits < UINT_MAX)\n    {\n      new_hits += (new_hits > cur_hits ? 1 : 0);\n      cur_hits += (new_hits > cur_hits ? 0 : 1);\n    }\n\n    return fp;\n  }\n  if (\n      (fp =\n       _maildir_open_find_message (folder, unique,\n\t\t\t\t   new_hits > cur_hits ? \"cur\" : \"new\",\n\t\t\t\t   newname))\n      || errno != ENOENT)\n  {\n    if (new_hits < UINT_MAX && cur_hits < UINT_MAX)\n    {\n      new_hits += (new_hits > cur_hits ? 0 : 1);\n      cur_hits += (new_hits > cur_hits ? 1 : 0);\n    }\n\n    return fp;\n  }\n\n  return NULL;\n}\n\n\n/*\n * Returns:\n * 1 if there are no messages in the mailbox\n * 0 if there are messages in the mailbox\n * -1 on error\n */\nint maildir_check_empty (const char *path)\n{\n  DIR *dp;\n  struct dirent *de;\n  int r = 1; /* assume empty until we find a message */\n  char realpath[_POSIX_PATH_MAX];\n  int iter = 0;\n\n  /* Strategy here is to look for any file not beginning with a period */\n\n  do {\n    /* we do \"cur\" on the first iteration since its more likely that we'll\n     * find old messages without having to scan both subdirs\n     */\n    snprintf (realpath, sizeof (realpath), \"%s/%s\", path,\n\t      iter == 0 ? \"cur\" : \"new\");\n    if ((dp = opendir (realpath)) == NULL)\n      return -1;\n    while ((de = readdir (dp)))\n    {\n      if (*de->d_name != '.')\n      {\n\tr = 0;\n\tbreak;\n      }\n    }\n    closedir (dp);\n    iter++;\n  } while (r && iter < 2);\n\n  return r;\n}\n\n/*\n * Returns:\n * 1 if there are no messages in the mailbox\n * 0 if there are messages in the mailbox\n * -1 on error\n */\nint mh_check_empty (const char *path)\n{\n  DIR *dp;\n  struct dirent *de;\n  int r = 1; /* assume empty until we find a message */\n  \n  if ((dp = opendir (path)) == NULL)\n    return -1;\n  while ((de = readdir (dp)))\n  {\n    if (mh_valid_message (de->d_name))\n    {\n      r = 0;\n      break;\n    }\n  }\n  closedir (dp);\n  \n  return r;\n}\n\nint mx_is_maildir (const char *path)\n{\n  char tmp[_POSIX_PATH_MAX];\n  struct stat st;\n\n  snprintf (tmp, sizeof (tmp), \"%s/cur\", path);\n  if (stat (tmp, &st) == 0 && S_ISDIR (st.st_mode))\n    return 1;\n  return 0;\n}\n\nint mx_is_mh (const char *path)\n{\n  char tmp[_POSIX_PATH_MAX];\n\n  snprintf (tmp, sizeof (tmp), \"%s/.mh_sequences\", path);\n  if (access (tmp, F_OK) == 0)\n    return 1;\n\n  snprintf (tmp, sizeof (tmp), \"%s/.xmhcache\", path);\n  if (access (tmp, F_OK) == 0)\n    return 1;\n\n  snprintf (tmp, sizeof (tmp), \"%s/.mew_cache\", path);\n  if (access (tmp, F_OK) == 0)\n    return 1;\n\n  snprintf (tmp, sizeof (tmp), \"%s/.mew-cache\", path);\n  if (access (tmp, F_OK) == 0)\n    return 1;\n\n  snprintf (tmp, sizeof (tmp), \"%s/.sylpheed_cache\", path);\n  if (access (tmp, F_OK) == 0)\n    return 1;\n\n  /*\n   * ok, this isn't an mh folder, but mh mode can be used to read\n   * Usenet news from the spool. ;-)\n   */\n\n  snprintf (tmp, sizeof (tmp), \"%s/.overview\", path);\n  if (access (tmp, F_OK) == 0)\n    return 1;\n\n  return 0;\n}\n"
  },
  {
    "path": "mime.h",
    "content": "/*\n * Copyright (C) 1996-2000,2010 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* Content-Type */\nenum\n{\n  TYPEOTHER,\n  TYPEAUDIO,\n  TYPEAPPLICATION,\n  TYPEIMAGE,\n  TYPEMESSAGE,\n  TYPEMODEL,\n  TYPEMULTIPART,\n  TYPETEXT,\n  TYPEVIDEO,\n  TYPEANY\n};\n\n/* Content-Transfer-Encoding */\nenum\n{\n  ENCOTHER,\n  ENC7BIT,\n  ENC8BIT,\n  ENCQUOTEDPRINTABLE,\n  ENCBASE64,\n  ENCBINARY,\n  ENCUUENCODED\n};\n\n/* Content-Disposition values */\nenum\n{\n  DISPINLINE,\n  DISPATTACH,\n  DISPFORMDATA,\n  DISPNONE /* no preferred disposition */\n};\n\n/* MIME encoding/decoding global vars */\n\n#ifndef _SENDLIB_C\nextern const int Index_hex[];\nextern const int Index_64[];\nextern const char B64Chars[];\n#endif\n\n#define hexval(c) Index_hex[(unsigned int)(c)]\n#define base64val(c) Index_64[(unsigned int)(c)]\n\n#define is_multipart(x) \\\n    ((x)->type == TYPEMULTIPART \\\n     || ((x)->type == TYPEMESSAGE && (!strcasecmp((x)->subtype, \"rfc822\") \\\n\t\t\t\t      || !strcasecmp((x)->subtype, \"news\"))))\n\nextern const char *BodyTypes[];\nextern const char *BodyEncodings[];\n\n#define TYPE(X) ((X->type == TYPEOTHER) && (X->xtype != NULL) ? X->xtype : BodyTypes[(X->type)])\n#define ENCODING(X) BodyEncodings[(X)]\n\n/* other MIME-related global variables */\n#ifndef _SENDLIB_C\nextern char MimeSpecials[];\n#endif\n"
  },
  {
    "path": "mime.types",
    "content": "# $Id$\n\n#\n# sample mime.types\n#\n\napplication/andrew-inset\tez\napplication/excel\t\txls\napplication/octet-stream\tbin\napplication/oda\t\t\toda\napplication/pdf\t\t\tpdf\napplication/pgp\t\t\tpgp\napplication/postscript\t\tps PS eps\napplication/rdf+xml\t\trdf\napplication/rss+xml\t\trss\napplication/rtf\t\t\trtf\napplication/vnd.mozilla.xul+xml\txul\napplication/vnd.oasis.opendocument.chart\todc\napplication/vnd.oasis.opendocument.database\todb\napplication/vnd.oasis.opendocument.formula\todf\napplication/vnd.oasis.opendocument.graphics\todg\napplication/vnd.oasis.opendocument.graphics-template\totg\napplication/vnd.oasis.opendocument.image\t\todi\napplication/vnd.oasis.opendocument.presentation\t\todp\napplication/vnd.oasis.opendocument.presentation-template\totp\napplication/vnd.oasis.opendocument.spreadsheet\t\t\tods\napplication/vnd.oasis.opendocument.spreadsheet-template\t\tots\napplication/vnd.oasis.opendocument.text\t\t\t\todt\napplication/vnd.oasis.opendocument.text-master\t\t\todm\napplication/vnd.oasis.opendocument.text-template\t\tott\napplication/vnd.oasis.opendocument.text-web\t\t\toth\napplication/vnd.sun.xml.calc\t\t\t\t\tsxc\napplication/vnd.sun.xml.calc.template\t\t\t\tstc\napplication/vnd.sun.xml.draw\t\t\t\t\tsxd\napplication/vnd.sun.xml.draw.template\t\t\t\tstd\napplication/vnd.sun.xml.impress\t\t\t\t\tsxi\napplication/vnd.sun.xml.impress.template\t\t\tsti\napplication/vnd.sun.xml.writer\t\t\t\t\tsxw\napplication/vnd.sun.xml.writer.global\t\t\t\tsxg\napplication/vnd.sun.xml.writer.math\t\t\t\tsxm\napplication/vnd.sun.xml.writer.template\t\tstw\napplication/x-arj-compressed\tarj\napplication/x-bcpio\t\tbcpio\napplication/x-chess-pgn\t\tpgn\napplication/x-cpio\t\tcpio\napplication/x-csh\t\tcsh\napplication/x-debian-package\tdeb\napplication/x-msdos-program\tcom exe bat\napplication/x-dvi\t\tdvi\napplication/x-gtar\t\tgtar\napplication/x-gunzip\t\tgz\napplication/x-hdf\t\thdf\napplication/x-latex\t\tlatex\napplication/x-mif\t\tmif\napplication/x-netcdf\t\tcdf nc\napplication/x-perl\t\tpl pm\napplication/x-rar-compressed\trar\napplication/x-sh\t\tsh\napplication/x-shar\t\tshar\napplication/x-sv4cpio\t\tsv4cpio\napplication/x-sv4crc\t\tsv4crc\napplication/x-tar\t\ttar\napplication/x-tar-gz\t\ttgz tar.gz\napplication/x-tcl\t\ttcl\napplication/x-tex\t\ttex\napplication/x-texinfo\t\ttexi texinfo\napplication/x-troff\t\tt tr roff\napplication/x-troff-man\t\tman\napplication/x-troff-me\t\tme\napplication/x-troff-ms\t\tms\napplication/x-ustar\t\tustar\napplication/x-wais-source\tsrc\napplication/x-zip-compressed\tzip\napplication/xhtml+xml\t\txhtml xht\napplication/xml\t\t\txml xsl\n\naudio/basic\t\t\tsnd\naudio/midi\t\t\tmid midi\naudio/ulaw\t\t\tau\naudio/x-aiff\t\t\taif aifc aiff\naudio/x-wav\t\t\twav\n\nimage/gif\t\t\tgif\nimage/ief\t\t\tief\nimage/jpeg\t\t\tjpe jpeg jpg\nimage/png\t\t\tpng\nimage/svg+xml\t\t\tsvg svgz\nimage/tiff\t\t\ttif tiff\nimage/x-cmu-raster\t\tras\nimage/x-portable-anymap\t\tpnm\nimage/x-portable-bitmap\t\tpbm\nimage/x-portable-graymap\tpgm\nimage/x-portable-pixmap\t\tppm\nimage/x-rgb\t\t\trgb\nimage/x-xbitmap\t\t\txbm\nimage/x-xpixmap\t\t\txpm\nimage/x-xwindowdump\t\txwd\n\ntext/html\t\t\thtml htm\ntext/plain\t\t\tasc txt\ntext/richtext\t\t\trtx\ntext/tab-separated-values\ttsv\ntext/x-setext\t\t\tetx\n\nvideo/dl\t\t\tdl\nvideo/fli\t\t\tfli\nvideo/gl\t\t\tgl\nvideo/mpeg\t\t\tmp2 mpe mpeg mpg\nvideo/quicktime\t\t\tmov qt\nvideo/x-msvideo\t\t\tavi\nvideo/x-sgi-movie\t\tmovie\n\nx-world/x-vrml\t\t\tvrm vrml wrl\n"
  },
  {
    "path": "mkchangelog.sh",
    "content": "#!/bin/sh\n\nlrev=$(hg log --limit 1 --template '{rev}' ChangeLog)\n\nhg log --style=./hg-changelog-map -r \"reverse($lrev::.)\"\n"
  },
  {
    "path": "mkdtemp.c",
    "content": "/* taken from XFCE's Xarchiver, made to work without glib for mutt */\n\n#include <sys/stat.h>\n#include <unistd.h>\n#include <errno.h>\n#include <time.h>\n#include <string.h>\n\n/* mkdtemp function for systems which don't have one */\nchar *mkdtemp (char *tmpl)\n{\n    static const char LETTERS[] = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n    static long       value = 0;\n    long              v;\n    int               len;\n    int               i, j;\n\n    len = strlen (tmpl);\n    if (len < 6 || strcmp (&tmpl[len - 6], \"XXXXXX\") != 0)\n    {\n        errno = EINVAL;\n        return NULL;\n    }\n\n    value += ((long) time (NULL)) ^ getpid ();\n\n    for (i = 0; i < 7 ; ++i, value += 7777)\n    {\n        /* fill in the random bits */\n        for (j = 0, v = value; j < 6; ++j)\n            tmpl[(len - 6) + j] = LETTERS[v % 62]; v /= 62;\n\n        /* try to create the directory */\n        if (mkdir (tmpl, 0700) == 0)\n            return tmpl;\n        else if (errno != EEXIST)\n            return NULL;\n    }\n\n    errno = EEXIST;\n    return NULL;\n}\n"
  },
  {
    "path": "mutt.h",
    "content": "\n/*\n * Copyright (C) 1996-2002,2010,2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2004 g10 Code GmbH\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef MUTT_H\n#define MUTT_H \n\n#include <stdio.h>\n#include <stdlib.h>\n#ifdef HAVE_UNISTD_H\n# include <unistd.h> /* needed for SEEK_SET */\n#endif\n#ifdef HAVE_UNIX_H\n# include <unix.h>   /* needed for snprintf on QNX. */\n#endif\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <time.h>\n#include <limits.h>\n#include <stdarg.h>\n#include <signal.h>\n/* On OS X 10.5.x, wide char functions are inlined by default breaking\n * --without-wc-funcs compilation\n */\n#ifdef __APPLE_CC__\n#define _DONT_USE_CTYPE_INLINE_\n#endif\n#ifdef HAVE_WCHAR_H\n# include <wchar.h>\n#endif\n#if defined(HAVE_WCTYPE_H) && defined(HAVE_WC_FUNCS)\n# include <wctype.h>\n#endif\n\n#ifndef _POSIX_PATH_MAX\n#include <limits.h>\n#endif\n\n/* PATH_MAX is undefined on the hurd */\n#ifndef PATH_MAX\n#define PATH_MAX _POSIX_PATH_MAX\n#endif\n\n#include <pwd.h>\n#include <grp.h>\n\n#include \"rfc822.h\"\n#include \"hash.h\"\n#include \"charset.h\"\n\n#ifndef HAVE_WC_FUNCS\n# ifdef MB_LEN_MAX\n#  undef MB_LEN_MAX\n# endif\n# define MB_LEN_MAX 16\n#endif\n\n#ifdef HAVE_FGETS_UNLOCKED\n# define fgets fgets_unlocked\n#endif\n\n#ifdef HAVE_FGETC_UNLOCKED\n# define fgetc fgetc_unlocked\n#endif\n\n/* nifty trick I stole from ELM 2.5alpha. */\n#ifdef MAIN_C\n#define WHERE \n#define INITVAL(x) = x\n#else\n#define WHERE extern\n#define INITVAL(x) \n#endif\n\n#define WHERE_DEFINED 1\n\n#include \"mutt_regex.h\"\n\n/* flags for mutt_enter_string() */\n#define  M_ALIAS   1      /* do alias \"completion\" by calling up the alias-menu */\n#define  M_FILE    (1<<1) /* do file completion */\n#define  M_EFILE   (1<<2) /* do file completion, plus incoming folders */\n#define  M_CMD     (1<<3) /* do completion on previous word */\n#define  M_PASS    (1<<4) /* password mode (no echo) */\n#define  M_CLEAR   (1<<5) /* clear input if printable character is pressed */\n#define  M_COMMAND (1<<6) /* do command completion */\n#define  M_PATTERN (1<<7) /* pattern mode - only used for history classes */\n#if USE_NOTMUCH\n#define  M_NM_QUERY (1<<8) /* Notmuch query mode. */\n#define  M_NM_TAG   (1<<9) /* Notmuch tag +/- mode. */\n#endif\n\n/* flags for mutt_get_token() */\n#define M_TOKEN_EQUAL\t\t1\t/* treat '=' as a special */\n#define M_TOKEN_CONDENSE\t(1<<1)\t/* ^(char) to control chars (macros) */\n#define M_TOKEN_SPACE\t\t(1<<2)  /* don't treat whitespace as a term */\n#define M_TOKEN_QUOTE\t\t(1<<3)\t/* don't interpret quotes */\n#define M_TOKEN_PATTERN\t\t(1<<4)\t/* !)|~ are terms (for patterns) */\n#define M_TOKEN_COMMENT\t\t(1<<5)\t/* don't reap comments */\n#define M_TOKEN_SEMICOLON\t(1<<6)\t/* don't treat ; as special */\n\ntypedef struct\n{\n  char *data;\t/* pointer to data */\n  char *dptr;\t/* current read/write position */\n  size_t dsize;\t/* length of data */\n  int destroy;\t/* destroy `data' when done? */\n} BUFFER;\n\ntypedef struct\n{\n  int ch; /* raw key pressed */\n  int op; /* function op */\n} event_t;\n\n/* flags for _mutt_system() */\n#define M_DETACH_PROCESS\t1\t/* detach subprocess from group */\n\n/* flags for mutt_FormatString() */\ntypedef enum\n{\n  M_FORMAT_FORCESUBJ\t= (1<<0), /* print the subject even if unchanged */\n  M_FORMAT_TREE\t\t= (1<<1), /* draw the thread tree */\n  M_FORMAT_MAKEPRINT\t= (1<<2), /* make sure that all chars are printable */\n  M_FORMAT_OPTIONAL\t= (1<<3),\n  M_FORMAT_STAT_FILE\t= (1<<4), /* used by mutt_attach_fmt */\n  M_FORMAT_ARROWCURSOR\t= (1<<5), /* reserve space for arrow_cursor */\n  M_FORMAT_INDEX\t= (1<<6), /* this is a main index entry */\n  M_FORMAT_NOFILTER\t= (1<<7)  /* do not allow filtering on this pass */\n} format_flag;\n\n/* types for mutt_add_hook() */\n#define M_FOLDERHOOK\t1\n#define M_MBOXHOOK\t(1<<1)\n#define M_SENDHOOK\t(1<<2)\n#define M_FCCHOOK\t(1<<3)\n#define M_SAVEHOOK\t(1<<4)\n#define M_CHARSETHOOK\t(1<<5)\n#define M_ICONVHOOK \t(1<<6)\n#define M_MESSAGEHOOK\t(1<<7)\n#define M_CRYPTHOOK\t(1<<8)\n#define M_ACCOUNTHOOK\t(1<<9)\n#define M_REPLYHOOK\t(1<<10)\n#define M_SEND2HOOK     (1<<11)\n\n/* tree characters for linearize_tree and print_enriched_string */\n#define M_TREE_LLCORNER\t\t1\n#define M_TREE_ULCORNER\t\t2\n#define M_TREE_LTEE\t\t3\n#define M_TREE_HLINE\t\t4\n#define M_TREE_VLINE\t\t5\n#define M_TREE_SPACE\t\t6\n#define M_TREE_RARROW\t\t7\n#define M_TREE_STAR\t\t8\n#define M_TREE_HIDDEN\t\t9\n#define M_TREE_EQUALS\t\t10\n#define M_TREE_TTEE\t\t11\n#define M_TREE_BTEE\t\t12\n#define M_TREE_MISSING\t\t13\n#define M_TREE_MAX\t\t14\n\n#define M_SPECIAL_INDEX\t\tM_TREE_MAX\n\n#define M_THREAD_COLLAPSE\t(1<<0)\n#define M_THREAD_UNCOLLAPSE\t(1<<1)\n#define M_THREAD_GET_HIDDEN\t(1<<2)\n#define M_THREAD_UNREAD\t\t(1<<3)\n#define M_THREAD_NEXT_UNREAD\t(1<<4)\n\nenum\n{\n  /* modes for mutt_view_attachment() */\n  M_REGULAR = 1,\n  M_MAILCAP,\n  M_AS_TEXT,\n\n  /* action codes used by mutt_set_flag() and mutt_pattern_function() */\n  M_ALL,\n  M_NONE,\n  M_NEW,\n  M_OLD,\n  M_REPLIED,\n  M_READ,\n  M_UNREAD,\n  M_DELETE,\n  M_UNDELETE,\n  M_DELETED,\n  M_FLAG,\n  M_TAG,\n  M_UNTAG,\n  M_LIMIT,\n  M_EXPIRED,\n  M_SUPERSEDED,\n\n  /* actions for mutt_pattern_comp/mutt_pattern_exec */\n  M_AND,\n  M_OR,\n  M_THREAD,\n  M_TO,\n  M_CC,\n  M_COLLAPSED,\n  M_SUBJECT,\n  M_FROM,\n  M_DATE,\n  M_DATE_RECEIVED,\n  M_DUPLICATED,\n  M_UNREFERENCED,\n  M_ID,\n  M_BODY,\n  M_HEADER,\n  M_HORMEL,\n  M_WHOLE_MSG,\n  M_SENDER,\n  M_MESSAGE,\n  M_SCORE,\n  M_SIZE,\n  M_REFERENCE,\n  M_RECIPIENT,\n  M_LIST,\n  M_SUBSCRIBED_LIST,\n  M_PERSONAL_RECIP,\n  M_PERSONAL_FROM,\n  M_ADDRESS,\n  M_CRYPT_SIGN,\n  M_CRYPT_VERIFIED,\n  M_CRYPT_ENCRYPT,\n  M_PGP_KEY,\n  M_XLABEL,\n#ifdef USE_NOTMUCH\n  M_NOTMUCH_LABEL,\n#endif\n  M_MIMEATTACH,\n  \n  /* Options for Mailcap lookup */\n  M_EDIT,\n  M_COMPOSE,\n  M_PRINT,\n  M_AUTOVIEW,\n\n  /* options for socket code */\n  M_NEW_SOCKET,\n#ifdef USE_SSL_OPENSSL\n  M_NEW_SSL_SOCKET,\n#endif\n\n  /* Options for mutt_save_attachment */\n  M_SAVE_APPEND,\n  M_SAVE_OVERWRITE\n};\n\n/* possible arguments to set_quadoption() */\nenum\n{\n  M_NO,\n  M_YES,\n  M_ASKNO,\n  M_ASKYES\n};\n\n/* quad-option vars */\nenum\n{\n  OPT_ABORT,\n  OPT_BOUNCE,\n  OPT_COPY,\n  OPT_DELETE,\n  OPT_FORWEDIT,\n  OPT_FCCATTACH,\n  OPT_INCLUDE,\n  OPT_MFUPTO,\n  OPT_MIMEFWD,\n  OPT_MIMEFWDREST,\n  OPT_MOVE,\n  OPT_PGPMIMEAUTO,     /* ask to revert to PGP/MIME when inline fails */\n#ifdef USE_POP\n  OPT_POPDELETE,\n  OPT_POPRECONNECT,\n#endif\n  OPT_POSTPONE,\n  OPT_PRINT,\n  OPT_QUIT,\n  OPT_REPLYTO,\n  OPT_RECALL,\n#if defined(USE_SSL)\n  OPT_SSLSTARTTLS,\n#endif\n  OPT_SUBJECT,\n  OPT_VERIFYSIG,      /* verify PGP signatures */\n    \n  /* THIS MUST BE THE LAST VALUE. */\n  OPT_MAX\n};\n\n/* flags to ci_send_message() */\n#define SENDREPLY\t(1<<0)\n#define SENDGROUPREPLY\t(1<<1)\n#define SENDLISTREPLY\t(1<<2)\n#define SENDFORWARD\t(1<<3)\n#define SENDPOSTPONED\t(1<<4)\n#define SENDBATCH\t(1<<5)\n#define SENDMAILX\t(1<<6)\n#define SENDKEY\t\t(1<<7)\n#define SENDRESEND\t(1<<8)\n#define SENDPOSTPONEDFCC\t(1<<9) /* used by mutt_get_postponed() to signal that the x-mutt-fcc header field was present */\n#define SENDNOFREEHEADER\t(1<<10)   /* Used by the -E flag */\n#define SENDDRAFTFILE\t\t(1<<11)   /* Used by the -H flag */\n\n/* flags for mutt_compose_menu() */\n#define M_COMPOSE_NOFREEHEADER (1<<0)\n\n/* flags to _mutt_select_file() */\n#define M_SEL_BUFFY\t(1<<0)\n#define M_SEL_MULTI\t(1<<1)\n#define M_SEL_FOLDER\t(1<<2)\n#define M_SEL_VFOLDER\t(1<<3)\n\n/* flags for parse_spam_list */\n#define M_SPAM          1\n#define M_NOSPAM        2\n\n/* boolean vars */\nenum\n{\n  OPTALLOW8BIT,\n  OPTALLOWANSI,\n  OPTARROWCURSOR,\n  OPTASCIICHARS,\n  OPTASKBCC,\n  OPTASKCC,\n  OPTATTACHSPLIT,\n  OPTAUTOEDIT,\n  OPTAUTOTAG,\n  OPTBEEP,\n  OPTBEEPNEW,\n  OPTBOUNCEDELIVERED,\n  OPTBRAILLEFRIENDLY,\n  OPTCHECKMBOXSIZE,\n  OPTCHECKNEW,\n  OPTCOLLAPSEUNREAD,\n  OPTCONFIRMAPPEND,\n  OPTCONFIRMCREATE,\n  OPTDELETEUNTAG,\n  OPTDIGESTCOLLAPSE,\n  OPTDUPTHREADS,\n  OPTEDITHDRS,\n  OPTENCODEFROM,\n  OPTENVFROM,\n  OPTFASTREPLY,\n  OPTFCCCLEAR,\n  OPTFOLLOWUPTO,\n  OPTFORCENAME,\n  OPTFORWDECODE,\n  OPTFORWQUOTE,\n#ifdef USE_HCACHE\n  OPTHCACHEVERIFY,\n#if defined(HAVE_QDBM) || defined(HAVE_TC)\n  OPTHCACHECOMPRESS,\n#endif /* HAVE_QDBM */\n#endif\n  OPTHDRS,\n  OPTHEADER,\n  OPTHELP,\n  OPTHIDDENHOST,\n  OPTHIDELIMITED,\n  OPTHIDEMISSING,\n  OPTHIDETHREADSUBJECT,\n  OPTHIDETOPLIMITED,\n  OPTHIDETOPMISSING,\n  OPTHONORDISP,\n  OPTIGNORELWS,\n  OPTIGNORELISTREPLYTO,\n#ifdef USE_IMAP\n  OPTIMAPCHECKSUBSCRIBED,\n  OPTIMAPIDLE,\n  OPTIMAPLSUB,\n  OPTIMAPPASSIVE,\n  OPTIMAPPEEK,\n  OPTIMAPSERVERNOISE,\n#endif\n#if defined(USE_SSL)\n# ifndef USE_SSL_GNUTLS\n  OPTSSLSYSTEMCERTS,\n  OPTSSLV2,\n# endif /* USE_SSL_GNUTLS */\n  OPTSSLV3,\n  OPTTLSV1,\n  OPTTLSV1_1,\n  OPTTLSV1_2,\n  OPTSSLFORCETLS,\n  OPTSSLVERIFYDATES,\n  OPTSSLVERIFYHOST,\n#endif /* defined(USE_SSL) */\n  OPTIMPLICITAUTOVIEW,\n  OPTINCLUDEONLYFIRST,\n  OPTKEEPFLAGGED,\n  OPTMAILCAPSANITIZE,\n  OPTMAILCHECKRECENT,\n  OPTMAILDIRTRASH,\n  OPTMAILDIRCHECKCUR,\n  OPTMARKERS,\n  OPTMARKOLD,\n  OPTMENUSCROLL,\t/* scroll menu instead of implicit next-page */\n  OPTMENUMOVEOFF,\t/* allow menu to scroll past last entry */\n#if defined(USE_IMAP) || defined(USE_POP)\n  OPTMESSAGECACHECLEAN,\n#endif\n  OPTMETAKEY,\t\t/* interpret ALT-x as ESC-x */\n  OPTMETOO,\n  OPTMHPURGE,\n  OPTMIMEFORWDECODE,\n  OPTNARROWTREE,\n  OPTPAGERSTOP,\n  OPTPIPEDECODE,\n  OPTPIPESPLIT,\n#ifdef USE_POP\n  OPTPOPAUTHTRYALL,\n  OPTPOPLAST,\n#endif\n  OPTPOSTPONEENCRYPT,\n  OPTPRINTDECODE,\n  OPTPRINTSPLIT,\n  OPTPROMPTAFTER,\n  OPTREADONLY,\n  OPTREFLOWSPACEQUOTES,\n  OPTREFLOWTEXT,\n  OPTREPLYSELF,\n  OPTRESOLVE,\n  OPTRESUMEDRAFTFILES,\n  OPTRESUMEEDITEDDRAFTFILES,\n  OPTREVALIAS,\n  OPTREVNAME,\n  OPTREVREAL,\n  OPTRFC2047PARAMS,\n  OPTSAVEADDRESS,\n  OPTSAVEEMPTY,\n  OPTSAVENAME,\n  OPTSCORE,\n#ifdef USE_SIDEBAR\n  OPTSIDEBAR,\n  OPTSIDEBARFOLDERINDENT,\n  OPTSIDEBARNEWMAILONLY,\n  OPTSIDEBARNEXTNEWWRAP,\n  OPTSIDEBARSHORTPATH,\n#endif\n  OPTSIGDASHES,\n  OPTSIGONTOP,\n  OPTSORTRE,\n  OPTSPAMSEP,\n  OPTSTATUSONTOP,\n  OPTSTRICTTHREADS,\n  OPTSUSPEND,\n  OPTTEXTFLOWED,\n  OPTTHOROUGHSRC,\n  OPTTHREADRECEIVED,\n  OPTTILDE,\n  OPTTSENABLED,\n  OPTUNCOLLAPSEJUMP,\n  OPTUSE8BITMIME,\n  OPTUSEDOMAIN,\n  OPTUSEFROM,\n  OPTUSEGPGAGENT,\n#ifdef HAVE_LIBIDN\n  OPTIDNDECODE,\n  OPTIDNENCODE,\n#endif\n#ifdef HAVE_GETADDRINFO\n  OPTUSEIPV6,\n#endif\n  OPTWAITKEY,\n  OPTWEED,\n  OPTWRAP,\n  OPTWRAPSEARCH,\n  OPTWRITEBCC,\t\t/* write out a bcc header? */\n  OPTXMAILER,\n\n  OPTCRYPTUSEGPGME,\n  OPTCRYPTUSEPKA,\n\n  /* PGP options */\n  \n  OPTCRYPTAUTOSIGN,\n  OPTCRYPTAUTOENCRYPT,\n  OPTCRYPTAUTOPGP,\n  OPTCRYPTAUTOSMIME,\n  OPTCRYPTCONFIRMHOOK,\n  OPTCRYPTOPPORTUNISTICENCRYPT,\n  OPTCRYPTREPLYENCRYPT,\n  OPTCRYPTREPLYSIGN,\n  OPTCRYPTREPLYSIGNENCRYPTED,\n  OPTCRYPTTIMESTAMP,\n  OPTSMIMEISDEFAULT,\n  OPTASKCERTLABEL,\n  OPTSDEFAULTDECRYPTKEY,\n  OPTPGPIGNORESUB,\n  OPTPGPCHECKEXIT,\n  OPTPGPLONGIDS,\n  OPTPGPAUTODEC,\n#if 0\n  OPTPGPENCRYPTSELF,\n#endif\n  OPTPGPRETAINABLESIG,\n  OPTPGPSTRICTENC,\n  OPTFORWDECRYPT,\n  OPTPGPSHOWUNUSABLE,\n  OPTPGPAUTOINLINE,\n  OPTPGPREPLYINLINE,\n\n  /* pseudo options */\n\n  OPTAUXSORT,\t\t/* (pseudo) using auxiliary sort function */\n  OPTFORCEREFRESH,\t/* (pseudo) refresh even during macros */\n  OPTLOCALES,\t\t/* (pseudo) set if user has valid locale definition */\n  OPTNOCURSES,\t\t/* (pseudo) when sending in batch mode */\n  OPTNEEDREDRAW,\t/* (pseudo) to notify caller of a submenu */\n  OPTSEARCHREVERSE,\t/* (pseudo) used by ci_search_command */\n  OPTMSGERR,\t\t/* (pseudo) used by mutt_error/mutt_message */\n  OPTSEARCHINVALID,\t/* (pseudo) used to invalidate the search pat */\n  OPTSIGNALSBLOCKED,\t/* (pseudo) using by mutt_block_signals () */\n  OPTSYSSIGNALSBLOCKED,\t/* (pseudo) using by mutt_block_signals_system () */\n  OPTNEEDRESORT,\t/* (pseudo) used to force a re-sort */\n  OPTRESORTINIT,\t/* (pseudo) used to force the next resort to be from scratch */\n  OPTVIEWATTACH,\t/* (pseudo) signals that we are viewing attachments */\n  OPTFORCEREDRAWINDEX,\t/* (pseudo) used to force a redraw in the main index */\n  OPTFORCEREDRAWPAGER,\t/* (pseudo) used to force a redraw in the pager */\n  OPTSORTSUBTHREADS,\t/* (pseudo) used when $sort_aux changes */\n  OPTNEEDRESCORE,\t/* (pseudo) set when the `score' command is used */\n  OPTATTACHMSG,\t\t/* (pseudo) used by attach-message */\n  OPTKEEPQUIET,\t\t/* (pseudo) shut up the message and refresh\n\t\t\t * \t    functions while we are executing an\n\t\t\t * \t    external program.\n\t\t\t */\n  OPTMENUCALLER,\t/* (pseudo) tell menu to give caller a take */\n  OPTREDRAWTREE,\t/* (pseudo) redraw the thread tree */\n  OPTPGPCHECKTRUST,\t/* (pseudo) used by pgp_select_key () */\n  OPTDONTHANDLEPGPKEYS,\t/* (pseudo) used to extract PGP keys */\n  OPTIGNOREMACROEVENTS, /* (pseudo) don't process macro/push/exec events while set */\n\n#ifdef USE_NOTMUCH\n  OPTVIRTSPOOLFILE,\n  OPTNOTMUCHRECORD,\n#endif\n\n  OPTMAX\n};\n\n#define mutt_bit_alloc(n) calloc ((n + 7) / 8, sizeof (char))\n#define mutt_bit_set(v,n) v[n/8] |= (1 << (n % 8))\n#define mutt_bit_unset(v,n) v[n/8] &= ~(1 << (n % 8))\n#define mutt_bit_toggle(v,n) v[n/8] ^= (1 << (n % 8))\n#define mutt_bit_isset(v,n) (v[n/8] & (1 << (n % 8)))\n\n#define set_option(x) mutt_bit_set(Options,x)\n#define unset_option(x) mutt_bit_unset(Options,x)\n#define toggle_option(x) mutt_bit_toggle(Options,x)\n#define option(x) mutt_bit_isset(Options,x)\n\ntypedef struct list_t\n{\n  char *data;\n  struct list_t *next;\n} LIST;\n\ntypedef struct rx_list_t\n{\n  REGEXP *rx;\n  struct rx_list_t *next;\n} RX_LIST;\n\ntypedef struct spam_list_t\n{\n  REGEXP *rx;\n  int     nmatch;\n  char   *template;\n  struct spam_list_t *next;\n} SPAM_LIST;\n\n#define mutt_new_list() safe_calloc (1, sizeof (LIST))\n#define mutt_new_rx_list() safe_calloc (1, sizeof (RX_LIST))\n#define mutt_new_spam_list() safe_calloc (1, sizeof (SPAM_LIST))\nvoid mutt_free_list (LIST **);\nvoid mutt_free_rx_list (RX_LIST **);\nvoid mutt_free_spam_list (SPAM_LIST **);\nLIST *mutt_copy_list (LIST *);\nint mutt_matches_ignore (const char *, LIST *);\n\n/* add an element to a list */\nLIST *mutt_add_list (LIST *, const char *);\nLIST *mutt_add_list_n (LIST*, const void *, size_t);\nLIST *mutt_find_list (LIST *, const char *);\nint mutt_remove_from_rx_list (RX_LIST **l, const char *str);\n\nvoid mutt_init (int, LIST *);\n\ntypedef struct alias\n{\n  struct alias *self;\t\t/* XXX - ugly hack */\n  char *name;\n  ADDRESS *addr;\n  struct alias *next;\n  short tagged;\n  short del;\n  short num;\n} ALIAS;\n\ntypedef struct envelope\n{\n  ADDRESS *return_path;\n  ADDRESS *from;\n  ADDRESS *to;\n  ADDRESS *cc;\n  ADDRESS *bcc;\n  ADDRESS *sender;\n  ADDRESS *reply_to;\n  ADDRESS *mail_followup_to;\n  char *list_post;\t\t/* this stores a mailto URL, or nothing */\n  char *subject;\n  char *real_subj;\t\t/* offset of the real subject */\n  char *message_id;\n  char *supersedes;\n  char *date;\n  char *x_label;\n  BUFFER *spam;\n  LIST *references;\t\t/* message references (in reverse order) */\n  LIST *in_reply_to;\t\t/* in-reply-to header content */\n  LIST *userhdrs;\t\t/* user defined headers */\n\n  unsigned int irt_changed : 1; /* In-Reply-To changed to link/break threads */\n  unsigned int refs_changed : 1; /* References changed to break thread */\n} ENVELOPE;\n\ntypedef struct parameter\n{\n  char *attribute;\n  char *value;\n  struct parameter *next;\n} PARAMETER;\n\n/* Information that helps in determing the Content-* of an attachment */\ntypedef struct content\n{\n  long hibin;              /* 8-bit characters */\n  long lobin;              /* unprintable 7-bit chars (eg., control chars) */\n  long crlf;\t\t   /* '\\r' and '\\n' characters */\n  long ascii;              /* number of ascii chars */\n  long linemax;            /* length of the longest line in the file */\n  unsigned int space : 1;  /* whitespace at the end of lines? */\n  unsigned int binary : 1; /* long lines, or CR not in CRLF pair */\n  unsigned int from : 1;   /* has a line beginning with \"From \"? */\n  unsigned int dot : 1;    /* has a line consisting of a single dot? */\n  unsigned int cr : 1;     /* has CR, even when in a CRLF pair */\n} CONTENT;\n\ntypedef struct body\n{\n  char *xtype;\t\t\t/* content-type if x-unknown */\n  char *subtype;                /* content-type subtype */\n  PARAMETER *parameter;         /* parameters of the content-type */\n  char *description;            /* content-description */\n  char *form_name;\t\t/* Content-Disposition form-data name param */\n  long hdr_offset;              /* offset in stream where the headers begin.\n\t\t\t\t * this info is used when invoking metamail,\n\t\t\t\t * where we need to send the headers of the\n\t\t\t\t * attachment\n\t\t\t\t */\n  LOFF_T offset;                /* offset where the actual data begins */\n  LOFF_T length;                /* length (in bytes) of attachment */\n  char *filename;               /* when sending a message, this is the file\n\t\t\t\t * to which this structure refers\n\t\t\t\t */\n  char *d_filename;\t\t/* filename to be used for the \n\t\t\t\t * content-disposition header.\n\t\t\t\t * If NULL, filename is used \n\t\t\t\t * instead.\n\t\t\t\t */\n  char *charset;                /* charset of attached file */\n  CONTENT *content;             /* structure used to store detailed info about\n\t\t\t\t * the content of the attachment.  this is used\n\t\t\t\t * to determine what content-transfer-encoding\n\t\t\t\t * is required when sending mail.\n\t\t\t\t */\n  struct body *next;            /* next attachment in the list */\n  struct body *parts;           /* parts of a multipart or message/rfc822 */\n  struct header *hdr;\t\t/* header information for message/rfc822 */\n\n  struct attachptr *aptr;\t/* Menu information, used in recvattach.c */\n\n  signed short attach_count;\n\n  time_t stamp;\t\t\t/* time stamp of last\n\t\t\t\t * encoding update.\n\t\t\t\t */\n  \n  unsigned int type : 4;        /* content-type primary type */\n  unsigned int encoding : 3;    /* content-transfer-encoding */\n  unsigned int disposition : 2; /* content-disposition */\n  unsigned int use_disp : 1;    /* Content-Disposition uses filename= ? */\n  unsigned int unlink : 1;      /* flag to indicate the the file named by\n\t\t\t\t * \"filename\" should be unlink()ed before\n\t\t\t\t * free()ing this structure\n\t\t\t\t */\n  unsigned int tagged : 1;\n  unsigned int deleted : 1;\t/* attachment marked for deletion */\n\n  unsigned int noconv : 1;\t/* don't do character set conversion */\n  unsigned int force_charset : 1; \n  \t\t\t\t/* send mode: don't adjust the character\n\t\t\t\t * set when in send-mode.\n\t\t\t\t */\n  unsigned int is_signed_data : 1; /* A lot of MUAs don't indicate\n                                      S/MIME signed-data correctly,\n                                      e.g. they use foo.p7m even for\n                                      the name of signed data.  This\n                                      flag is used to keep track of\n                                      the actual message type.  It\n                                      gets set during the verification\n                                      (which is done if the encryption\n                                      try failed) and check by the\n                                      function to figure the type of\n                                      the message. */\n\n  unsigned int goodsig : 1;\t/* good cryptographic signature */\n  unsigned int warnsig : 1;     /* maybe good signature */\n  unsigned int badsig : 1;\t/* bad cryptographic signature (needed to check encrypted s/mime-signatures) */\n\n  unsigned int collapsed : 1;\t/* used by recvattach */\n  unsigned int attach_qualifies : 1;\n\n} BODY;\n\n/* #3279: AIX defines conflicting struct thread */\ntypedef struct mutt_thread THREAD;\n\ntypedef struct header\n{\n  unsigned int security : 12;  /* bit 0-8: flags, bit 9,10: application.\n\t\t\t\t see: mutt_crypt.h pgplib.h, smime.h */\n\n  unsigned int mime : 1;    \t\t/* has a MIME-Version header? */\n  unsigned int flagged : 1; \t\t/* marked important? */\n  unsigned int tagged : 1;\n  unsigned int deleted : 1;\n  unsigned int quasi_deleted : 1;\t/* deleted from mutt, but not modified on disk */\n  unsigned int changed : 1;\n  unsigned int attach_del : 1; \t\t/* has an attachment marked for deletion */\n  unsigned int old : 1;\n  unsigned int read : 1;\n  unsigned int expired : 1; \t\t/* already expired? */\n  unsigned int superseded : 1; \t\t/* got superseded? */\n  unsigned int replied : 1;\n  unsigned int subject_changed : 1; \t/* used for threading */\n  unsigned int threaded : 1;\t    \t/* used for threading */\n  unsigned int display_subject : 1; \t/* used for threading */\n  unsigned int recip_valid : 1;  \t/* is_recipient is valid */\n  unsigned int active : 1;\t    \t/* message is not to be removed */\n  unsigned int trash : 1;\t\t/* message is marked as trashed on disk.\n\t\t\t\t\t * This flag is used by the maildir_trash\n\t\t\t\t\t * option.\n\t\t\t\t\t */\n  \n  /* timezone of the sender of this message */\n  unsigned int zhours : 5;\n  unsigned int zminutes : 6;\n  unsigned int zoccident : 1;\n\n  /* bits used for caching when searching */\n  unsigned int searched : 1;\n  unsigned int matched : 1;\n\n  /* tells whether the attachment count is valid */\n  unsigned int attach_valid : 1;\n\n  /* the following are used to support collapsing threads  */\n  unsigned int collapsed : 1; \t/* is this message part of a collapsed thread? */\n  unsigned int limited : 1;   \t/* is this message in a limited view?  */\n  size_t num_hidden;          \t/* number of hidden messages in this view */\n\n  short recipient;\t\t/* user_is_recipient()'s return value, cached */\n  \n  int pair; \t\t\t/* color-pair to use when displaying in the index */\n\n  time_t date_sent;     \t/* time when the message was sent (UTC) */\n  time_t received;      \t/* time when the message was placed in the mailbox */\n  LOFF_T offset;          \t/* where in the stream does this message begin? */\n  int lines;\t\t\t/* how many lines in the body of this message? */\n  int index;\t\t\t/* the absolute (unsorted) message number */\n  int msgno;\t\t\t/* number displayed to the user */\n  int virtual;\t\t\t/* virtual message number */\n  int score;\n  ENVELOPE *env;\t\t/* envelope information */\n  BODY *content;\t\t/* list of MIME parts */\n  char *path;\n  \n  char *tree;           \t/* character string to print thread tree */\n  THREAD *thread;\n\n  /* Number of qualifying attachments in message, if attach_valid */\n  short attach_total;\n\n#ifdef MIXMASTER\n  LIST *chain;\n#endif\n\n#ifdef USE_POP\n  int refno;\t\t\t/* message number on server */\n#endif\n\n#if defined USE_POP || defined USE_IMAP || defined USE_NOTMUCH\n  void *data;            \t/* driver-specific data */\n  void (*free_cb)(struct header *); /* driver-specific data free function */\n#endif\n  \n  char *maildir_flags;\t\t/* unknown maildir flags */\n} HEADER;\n\nstruct mutt_thread\n{\n  unsigned int fake_thread : 1;\n  unsigned int duplicate_thread : 1;\n  unsigned int sort_children : 1;\n  unsigned int check_subject : 1;\n  unsigned int visible : 1;\n  unsigned int deep : 1;\n  unsigned int subtree_visible : 2;\n  unsigned int next_subtree_visible : 1;\n  THREAD *parent;\n  THREAD *child;\n  THREAD *next;\n  THREAD *prev;\n  HEADER *message;\n  HEADER *sort_key;\n};\n\n\n/* flag to mutt_pattern_comp() */\n#define M_FULL_MSG\t(1<<0)\t/* enable body and header matching */\n\ntypedef enum {\n  M_MATCH_FULL_ADDRESS = 1\n} pattern_exec_flag;\n\ntypedef struct group_t\n{\n  ADDRESS *as;\n  RX_LIST *rs;\n  char *name;\n} group_t;\n\ntypedef struct group_context_t\n{\n  group_t *g;\n  struct group_context_t *next;\n} group_context_t;\n\ntypedef struct pattern_t\n{\n  short op;\n  unsigned int not : 1;\n  unsigned int alladdr : 1;\n  unsigned int stringmatch : 1;\n  unsigned int groupmatch : 1;\n  unsigned int ign_case : 1;\t\t/* ignore case for local stringmatch searches */\n  int min;\n  int max;\n  struct pattern_t *next;\n  struct pattern_t *child;\t\t/* arguments to logical op */\n  union \n  {\n    regex_t *rx;\n    group_t *g;\n    char *str;\n  } p;\n} pattern_t;\n\n/* ACL Rights */\nenum\n{\n  M_ACL_LOOKUP = 0,\n  M_ACL_READ,\n  M_ACL_SEEN,\n  M_ACL_WRITE,\n  M_ACL_INSERT,\n  M_ACL_POST,\n  M_ACL_CREATE,\n  M_ACL_DELMX,\n  M_ACL_DELETE,\n  M_ACL_EXPUNGE,\n  M_ACL_ADMIN,\n\n  RIGHTSMAX\n};\n\ntypedef struct _context\n{\n  char *path;\n  FILE *fp;\n#ifdef USE_SIDEBAR\n  time_t atime;\n#endif\n  time_t mtime;\n  off_t size;\n  off_t vsize;\n  char *pattern;                /* limit pattern string */\n  pattern_t *limit_pattern;     /* compiled limit pattern */\n  HEADER **hdrs;\n  HEADER *last_tag;\t\t/* last tagged msg. used to link threads */\n  THREAD *tree;\t\t\t/* top of thread tree */\n  HASH *id_hash;\t\t/* hash table by msg id */\n  HASH *subj_hash;\t\t/* hash table by subject */\n  HASH *thread_hash;\t\t/* hash table for threading */\n  int *v2r;\t\t\t/* mapping from virtual to real msgno */\n  int hdrmax;\t\t\t/* number of pointers in hdrs */\n  int msgcount;\t\t\t/* number of messages in the mailbox */\n  int vcount;\t\t\t/* the number of virtual messages */\n  int tagged;\t\t\t/* how many messages are tagged? */\n  int new;\t\t\t/* how many new messages? */\n  int unread;\t\t\t/* how many unread messages? */\n  int deleted;\t\t\t/* how many deleted messages */\n  int flagged;\t\t\t/* how many flagged messages */\n  int msgnotreadyet;\t\t/* which msg \"new\" in pager, -1 if none */\n\n  short magic;\t\t\t/* mailbox type */\n\n  unsigned char rights[(RIGHTSMAX + 7)/8];\t/* ACL bits */\n\n  unsigned int locked : 1;\t/* is the mailbox locked? */\n  unsigned int changed : 1;\t/* mailbox has been modified */\n  unsigned int readonly : 1;    /* don't allow changes to the mailbox */\n  unsigned int dontwrite : 1;   /* don't write the mailbox on close */\n  unsigned int append : 1;\t/* mailbox is opened in append mode */\n  unsigned int quiet : 1;\t/* inhibit status messages? */\n  unsigned int collapsed : 1;   /* are all threads collapsed? */\n  unsigned int closing : 1;\t/* mailbox is being closed */\n#ifdef USE_SIDEBAR\n  unsigned int peekonly : 1;\t/* just taking a glance, revert atime */\n#endif\n\n  /* driver hooks */\n  void *data;\t\t\t/* driver specific data */\n  int (*mx_close)(struct _context *);\n} CONTEXT;\n\ntypedef struct\n{\n  FILE *fpin;\n  FILE *fpout;\n  char *prefix;\n  int flags;\n} STATE;\n\n/* used by enter.c */\n\ntypedef struct\n{\n  wchar_t *wbuf;\n  size_t wbuflen;\n  size_t lastchar;\n  size_t curpos;\n  size_t begin;\n  int\t tabs;\n} ENTER_STATE;\n\n/* flags for the STATE struct */\n#define M_DISPLAY\t(1<<0) /* output is displayed to the user */\n#define M_VERIFY\t(1<<1) /* perform signature verification */\n#define M_PENDINGPREFIX (1<<2) /* prefix to write, but character must follow */\n#define M_WEED          (1<<3) /* weed headers even when not in display mode */\n#define M_CHARCONV\t(1<<4) /* Do character set conversions */\n#define M_PRINTING\t(1<<5) /* are we printing? - M_DISPLAY \"light\" */\n#define M_REPLYING\t(1<<6) /* are we replying? */\n#define M_FIRSTDONE\t(1<<7) /* the first attachment has been done */\n\n#define state_set_prefix(s) ((s)->flags |= M_PENDINGPREFIX)\n#define state_reset_prefix(s) ((s)->flags &= ~M_PENDINGPREFIX)\n#define state_puts(x,y) fputs(x,(y)->fpout)\n#define state_putc(x,y) fputc(x,(y)->fpout)\n\nvoid state_mark_attach (STATE *);\nvoid state_attach_puts (const char *, STATE *);\nvoid state_prefix_putc (char, STATE *);\nint  state_printf(STATE *, const char *, ...);\nint state_putwc (wchar_t, STATE *);\nint state_putws (const wchar_t *, STATE *);\n\n/* for attachment counter */\ntypedef struct\n{\n  char   *major;\n  int     major_int;\n  char   *minor;\n  regex_t minor_rx;\n} ATTACH_MATCH;\n\n#define M_PARTS_TOPLEVEL\t(1<<0)\t/* is the top-level part */\n\n#include \"ascii.h\"\n#include \"protos.h\"\n#include \"lib.h\"\n#include \"globals.h\"\n\n#endif /*MUTT_H*/\n"
  },
  {
    "path": "mutt_crypt.h",
    "content": "/*\n * Copyright (C) 2003 Werner Koch <wk@gnupg.org>\n * Copyright (C) 2004 g10code GmbH\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/*\n   Common definitions and prototypes for the crypt functions. They are\n   all defined in crypt.c and cryptglue.c\n*/\n\n#ifndef MUTT_CRYPT_H\n#define MUTT_CRYPT_H\n\n#include \"mutt.h\"        /* Need this to declare BODY, ADDRESS. STATE etc. */\n/* FIXME: They should be pointer to anonymous structures for better\n   information hiding. */\n\n\n\n#define ENCRYPT    (1 << 0)\n#define SIGN       (1 << 1)\n#define GOODSIGN   (1 << 2)\n#define BADSIGN    (1 << 3)\n#define PARTSIGN   (1 << 4)\n#define SIGNOPAQUE (1 << 5)\n#define KEYBLOCK   (1 << 6) /* KEY too generic? */\n#define INLINE     (1 << 7)\n#define OPPENCRYPT (1 << 8) /* Opportunistic encrypt mode */\n\n#define APPLICATION_PGP    (1 << 9)\n#define APPLICATION_SMIME  (1 << 10)\n\n#define PGP_TRADITIONAL_CHECKED (1 << 11)\n\n#define PGPENCRYPT  (APPLICATION_PGP | ENCRYPT)\n#define PGPSIGN     (APPLICATION_PGP | SIGN)\n#define PGPGOODSIGN (APPLICATION_PGP | GOODSIGN)\n#define PGPKEY      (APPLICATION_PGP | KEYBLOCK) \n#define PGPINLINE   (APPLICATION_PGP | INLINE)\n\n#define SMIMEENCRYPT  (APPLICATION_SMIME | ENCRYPT)\n#define SMIMESIGN     (APPLICATION_SMIME | SIGN)\n#define SMIMEGOODSIGN (APPLICATION_SMIME | GOODSIGN)\n#define SMIMEBADSIGN  (APPLICATION_SMIME | BADSIGN)\n#define SMIMEOPAQUE   (APPLICATION_SMIME | SIGNOPAQUE)\n\n\n/* WITHCRYPTO actually replaces ifdefs so make the code more readable.\n   Because it is defined as a constant and known at compile time, the\n   compiler can do dead code elimination and thus it behaves\n   effectively as a conditional compile directive. It is set to false\n   if no crypto backend is configures or to a bit vector denoting the\n   configured backends. */\n#if (defined(CRYPT_BACKEND_CLASSIC_PGP) && defined(CRYPT_BACKEND_CLASSIC_SMIME)) || defined (CRYPT_BACKEND_GPGME)\n# define WithCrypto (APPLICATION_PGP | APPLICATION_SMIME)\n#elif defined(CRYPT_BACKEND_CLASSIC_PGP)\n# define WithCrypto  APPLICATION_PGP\n#elif defined(CRYPT_BACKEND_CLASSIC_SMIME)\n# define WithCrypto  APPLICATION_SMIME\n#else\n# define WithCrypto 0\n#endif\n\n\n#define KEYFLAG_CANSIGN \t\t(1 <<  0)\n#define KEYFLAG_CANENCRYPT \t\t(1 <<  1)\n#define KEYFLAG_ISX509                  (1 <<  2)\n#define KEYFLAG_SECRET\t\t\t(1 <<  7)\n#define KEYFLAG_EXPIRED \t\t(1 <<  8)\n#define KEYFLAG_REVOKED \t\t(1 <<  9)\n#define KEYFLAG_DISABLED \t\t(1 << 10)\n#define KEYFLAG_SUBKEY \t\t\t(1 << 11)\n#define KEYFLAG_CRITICAL \t\t(1 << 12)\n#define KEYFLAG_PREFER_ENCRYPTION \t(1 << 13)\n#define KEYFLAG_PREFER_SIGNING \t\t(1 << 14)\n\n#define KEYFLAG_CANTUSE (KEYFLAG_DISABLED|KEYFLAG_REVOKED|KEYFLAG_EXPIRED)\n#define KEYFLAG_RESTRICTIONS (KEYFLAG_CANTUSE|KEYFLAG_CRITICAL)\n\n#define KEYFLAG_ABILITIES (KEYFLAG_CANSIGN|KEYFLAG_CANENCRYPT|KEYFLAG_PREFER_ENCRYPTION|KEYFLAG_PREFER_SIGNING)\n\nenum pgp_ring\n{\n  PGP_PUBRING,\n  PGP_SECRING\n};\ntypedef enum pgp_ring pgp_ring_t;\n\n\nstruct pgp_keyinfo;\ntypedef struct pgp_keyinfo *pgp_key_t;\n\n\n\n/* Some prototypes -- old crypt.h. */\n\nint mutt_protect (HEADER *, char *);\n\nint mutt_is_multipart_encrypted (BODY *);\n\nint mutt_is_valid_multipart_pgp_encrypted (BODY *b);\n\nint mutt_is_malformed_multipart_pgp_encrypted (BODY *b);\n\nint mutt_is_multipart_signed (BODY *);\n\nint mutt_is_application_pgp (BODY *);\n\nint mutt_is_application_smime (BODY *);\n\nint mutt_signed_handler (BODY *, STATE *);\n\nint mutt_parse_crypt_hdr (const char *, int, int);\n\n\nvoid convert_to_7bit (BODY *);\n\n\n\n/*-- crypt.c --*/ \n\n/* Print the current time. */ \nvoid crypt_current_time(STATE *s, char *app_name);\n\n/* Check out the type of encryption used and set the cached status\n   values if there are any. */\nint crypt_query (BODY *m);\n\n/* Fixme: To be documented. */\nvoid crypt_extract_keys_from_messages (HEADER *h);\n\n/* Do a quick check to make sure that we can find all of the\n   encryption keys if the user has requested this service. \n   Return the list of keys in KEYLIST.\n   If oppenc_mode is true, only keys that can be determined without\n   prompting will be used.  */\nint crypt_get_keys (HEADER *msg, char **keylist, int oppenc_mode);\n\n/* Check if all recipients keys can be automatically determined.\n * Enable encryption if they can, otherwise disable encryption.  */\nvoid crypt_opportunistic_encrypt(HEADER *msg);\n\n/* Forget a passphrase and display a message. */\nvoid crypt_forget_passphrase (void);\n\n/* Check that we have a usable passphrase, ask if not. */\nint crypt_valid_passphrase (int);\n\n/* Write the message body/part A described by state S to a the given\n   TEMPFILE.  */\nint crypt_write_signed(BODY *a, STATE *s, const char *tempf);\n\n/* Obtain pointers to fingerprint or short or long key ID, if any.\n \n   Upon return, at most one of return, *ppl and *pps pointers is non-NULL,\n   indicating the longest fingerprint or ID found, if any.\n\n   Return:  Copy of fingerprint, if any, stripped of all spaces, else NULL.\n            Must be FREE'd by caller.\n   *pphint  Start of string to be passed to pgp_add_string_to_hints() or \n            crypt_add_string_to_hints().\n   *ppl     Start of long key ID if detected, else NULL.\n   *pps     Start of short key ID if detected, else NULL. */\nconst char* crypt_get_fingerprint_or_id (char *p, const char **pphint,\n    const char **ppl, const char **pps);\n\n/* Check if a string contains a numerical key */\nshort crypt_is_numerical_keyid (const char *s);\n\n\n\n/*-- cryptglue.c --*/\n\n/* Show a message that a backend will be invoked. */\nvoid crypt_invoke_message (int type);\n\n\n/* Silently forget about a passphrase. */\nvoid crypt_pgp_void_passphrase (void);\n\nint crypt_pgp_valid_passphrase (void);\n\n\n/* Decrypt a PGP/MIME message. */\nint crypt_pgp_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d);\n\n/* MIME handler for the application/pgp content-type. */\nint crypt_pgp_application_pgp_handler (BODY *m, STATE *s);\n\n/* MIME handler for an PGP/MIME encrypted message. */\nint crypt_pgp_encrypted_handler (BODY *a, STATE *s);\n\n/* fixme: needs documentation. */\nvoid crypt_pgp_invoke_getkeys (ADDRESS *addr);\n\n/* Ask for a PGP key. */\npgp_key_t crypt_pgp_ask_for_key (char *tag, char *whatfor,\n                                 short abilities, pgp_ring_t keyring);\n\n/* Check for a traditional PGP message in body B. */\nint crypt_pgp_check_traditional (FILE *fp, BODY *b, int tagged_only);\n\n/* fixme: needs documentation. */\nBODY *crypt_pgp_traditional_encryptsign (BODY *a, int flags, char *keylist);\n\n/* Release the PGP key KPP (note, that we pass a pointer to it). */\nvoid crypt_pgp_free_key (pgp_key_t *kpp);\n\n/* Generate a PGP public key attachment. */\nBODY *crypt_pgp_make_key_attachment (char *tempf);\n\n/* This routine attempts to find the keyids of the recipients of a\n   message.  It returns NULL if any of the keys can not be found.\n   If oppenc_mode is true, only keys that can be determined without\n   prompting will be used.  */\nchar *crypt_pgp_findkeys (ADDRESS *adrlist, int oppenc_mode);\n\n/* Create a new body with a PGP signed message from A. */\nBODY *crypt_pgp_sign_message (BODY *a);\n\n/* Warning: A is no longer freed in this routine, you need to free it\n   later.  This is necessary for $fcc_attach. */\nBODY *crypt_pgp_encrypt_message (BODY *a, char *keylist, int sign);\n\n/* Invoke the PGP command to import a key. */\nvoid crypt_pgp_invoke_import (const char *fname);\n\nint crypt_pgp_send_menu (HEADER *msg, int *redraw);\n\n/* fixme: needs documentation */\nint crypt_pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempf);\n\n/* Access the keyID in K. */\nchar *crypt_pgp_keyid (pgp_key_t k);\n\n/* fixme: needs documentation */\nvoid crypt_pgp_extract_keys_from_attachment_list (FILE *fp, int tag,BODY *top);\n\nvoid crypt_pgp_set_sender (const char *sender);\n\n\n\n/* Silently forget about a passphrase. */\nvoid crypt_smime_void_passphrase (void);\n\nint crypt_smime_valid_passphrase (void);\n\n/* Decrypt an S/MIME message. */\nint crypt_smime_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d);\n\n/* MIME handler for the application/smime content-type. */\nint crypt_smime_application_smime_handler (BODY *m, STATE *s);\n\n/* fixme: Needs documentation. */\nvoid crypt_smime_getkeys (ENVELOPE *env);\n\n/* Check that the sender matches. */\nint crypt_smime_verify_sender(HEADER *h);\n\n/* Ask for an SMIME key. */\nchar *crypt_smime_ask_for_key (char *prompt, char *mailbox, short public);\n\n/* This routine attempts to find the keyids of the recipients of a\n   message.  It returns NULL if any of the keys can not be found.\n   If oppenc_mode is true, only keys that can be determined without\n   prompting will be used.  */\nchar *crypt_smime_findkeys (ADDRESS *adrlist, int oppenc_mode);\n\n/* fixme: Needs documentation. */\nBODY *crypt_smime_sign_message (BODY *a);\n\n/* fixme: needs documentation. */\nBODY *crypt_smime_build_smime_entity (BODY *a, char *certlist);\n\n/* Add a certificate and update index file (externally). */\nvoid crypt_smime_invoke_import (char *infile, char *mailbox);\n\nint crypt_smime_send_menu (HEADER *msg, int *redraw);\n\nvoid crypt_smime_set_sender (const char *sender);\n\n/* fixme: needs documentation */\nint crypt_smime_verify_one (BODY *sigbdy, STATE *s, const char *tempf);\n\nvoid crypt_init (void);\n\n#endif /*MUTT_CRYPT_H*/\n"
  },
  {
    "path": "mutt_curses.h",
    "content": "/*\n * Copyright (C) 1996-2000,2012 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2004 g10 Code GmbH\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _MUTT_CURSES_H_\n#define _MUTT_CURSES_H_ 1\n\n#ifdef USE_SLANG_CURSES\n\n#ifndef unix /* this symbol is not defined by the hp-ux compiler (sigh) */\n#define unix\n#endif /* unix */\n\n#include <slang.h>\t/* in addition to slcurses.h, we need slang.h for the version\n\t\t\t   number to test for 2.x having UTF-8 support in main.c */\n#include <slcurses.h>\n\n#define KEY_DC SL_KEY_DELETE\n#define KEY_IC SL_KEY_IC\n\n/*\n * ncurses and SLang seem to send different characters when the Enter key is\n * pressed, so define some macros to properly detect the Enter key.\n */\n#define M_ENTER_C '\\r'\n#define M_ENTER_S \"\\r\"\n\n#else /* USE_SLANG_CURSES */\n\n#if HAVE_NCURSESW_NCURSES_H\n# include <ncursesw/ncurses.h>\n#elif HAVE_NCURSES_NCURSES_H\n# include <ncurses/ncurses.h>\n#elif HAVE_NCURSES_H\n# include <ncurses.h>\n#else\n# include <curses.h>\n#endif\n\n#define M_ENTER_C '\\n'\n#define M_ENTER_S \"\\n\"\n\n#endif /* USE_SLANG_CURSES */\n\n/* AIX defines ``lines'' in <term.h>, but it's used as a var name in\n * various places in Mutt\n */\n#ifdef lines\n#undef lines\n#endif /* lines */\n\n#ifdef USE_SIDEBAR\n#define CLEARLINE_WIN(x) move (x,SidebarWidth), clrtoeol()\n#endif\n#define CLEARLINE(x) move(x,0), clrtoeol()\n#define CENTERLINE(x,y) move(y, (COLS-strlen(x))/2), addstr(x)\n#define BEEP() do { if (option (OPTBEEP)) beep(); } while (0)\n\n#if ! (defined(USE_SLANG_CURSES) || defined(HAVE_CURS_SET))\n#define curs_set(x)\n#endif\n\n#if (defined(USE_SLANG_CURSES) || defined(HAVE_CURS_SET))\nvoid mutt_curs_set (int);\n#else\n#define mutt_curs_set(x)\n#endif\n#define PAGELEN (LINES-3)\n\n#define ctrl(c) ((c)-'@')\n\n#ifdef KEY_ENTER\n#define CI_is_return(c) ((c) == '\\r' || (c) == '\\n' || (c) == KEY_ENTER)\n#else\n#define CI_is_return(c) ((c) == '\\r' || (c) == '\\n')\n#endif\n\nevent_t mutt_getch (void);\n\nvoid mutt_endwin (const char *);\nvoid mutt_flushinp (void);\nvoid mutt_refresh (void);\nvoid mutt_resize_screen (void);\nvoid mutt_unget_event (int, int);\nvoid mutt_unget_string (char *);\nvoid mutt_push_macro_event (int, int);\nvoid mutt_flush_macro_to_endcond (void);\nvoid mutt_need_hard_redraw (void);\n\n/* ----------------------------------------------------------------------------\n * Support for color\n */\n\nenum\n{\n  MT_COLOR_HDEFAULT = 0,\n  MT_COLOR_QUOTED,\n  MT_COLOR_SIGNATURE,\n  MT_COLOR_INDICATOR,\n  MT_COLOR_STATUS,\n  MT_COLOR_TREE,\n  MT_COLOR_NORMAL,\n  MT_COLOR_ERROR,\n  MT_COLOR_TILDE,\n  MT_COLOR_MARKERS,\n  MT_COLOR_BODY,\n  MT_COLOR_HEADER,\n  MT_COLOR_MESSAGE,\n  MT_COLOR_ATTACHMENT,\n  MT_COLOR_SEARCH,\n  MT_COLOR_BOLD,\n  MT_COLOR_UNDERLINE,\n  MT_COLOR_PROMPT,\n  MT_COLOR_PROGRESS,\n#ifdef USE_SIDEBAR\n  MT_COLOR_DIVIDER,\n  MT_COLOR_FLAGGED,\n  MT_COLOR_HIGHLIGHT,\n  MT_COLOR_NEW,\n  MT_COLOR_SB_INDICATOR,\n  MT_COLOR_SB_SPOOLFILE,\n#endif\n  /* please no non-MT_COLOR_INDEX objects after this point */\n#ifdef USE_NOTMUCH\n  MT_COLOR_INDEX_TAG,\n#endif\n  MT_COLOR_INDEX,\n  MT_COLOR_INDEX_AUTHOR,\n  MT_COLOR_INDEX_FLAGS,\n  MT_COLOR_INDEX_SUBJECT,\n  /* below here - only index coloring stuff that doesn't have a pattern */\n  MT_COLOR_INDEX_COLLAPSED,\n  MT_COLOR_INDEX_DATE,\n  MT_COLOR_INDEX_LABEL,\n  MT_COLOR_INDEX_NUMBER,\n  MT_COLOR_INDEX_SIZE,\n#ifdef USE_NOTMUCH\n  MT_COLOR_INDEX_TAGS,\n#endif\n  MT_COLOR_MAX\n};\n\ntypedef struct color_line\n{\n  regex_t rx;\n  int match; /* which substringmap 0 for old behaviour */\n  char *pattern;\n  pattern_t *color_pattern; /* compiled pattern to speed up index color\n                               calculation */\n  short fg;\n  short bg;\n  int pair;\n  struct color_line *next;\n} COLOR_LINE;\n\n#define M_PROGRESS_SIZE\t\t(1<<0)\t/* traffic-based progress */\n#define M_PROGRESS_MSG\t\t(1<<1)\t/* message-based progress */\n\ntypedef struct\n{\n  unsigned short inc;\n  unsigned short flags;\n  const char* msg;\n  long pos;\n  long size;\n  unsigned int timestamp;\n  char sizestr[SHORT_STRING];\n} progress_t;\n\nvoid mutt_progress_init (progress_t* progress, const char *msg,\n\t\t\t unsigned short flags, unsigned short inc,\n\t\t\t long size);\n/* If percent is positive, it is displayed as percentage, otherwise\n * percentage is calculated from progress->size and pos if progress\n * was initialized with positive size, otherwise no percentage is shown */\nvoid mutt_progress_update (progress_t* progress, long pos, int percent);\n\nstatic inline int mutt_term_width(short wrap)\n{\n  if (wrap < 0)\n    return COLS > -wrap ? COLS + wrap : COLS;\n  else if (wrap)\n    return wrap < COLS ? wrap : COLS;\n  else\n    return COLS;\n}\n\nextern int *ColorQuote;\nextern int ColorQuoteUsed;\nextern int ColorDefs[];\nextern COLOR_LINE *ColorHdrList;\nextern COLOR_LINE *ColorBodyList;\nextern COLOR_LINE *ColorStatusList;\nextern COLOR_LINE *ColorIndexList;\nextern COLOR_LINE *ColorIndexAuthorList;\nextern COLOR_LINE *ColorIndexFlagsList;\nextern COLOR_LINE *ColorIndexSubjectList;\n#ifdef USE_NOTMUCH\nextern COLOR_LINE *ColorIndexTagList;\n#endif\n\nvoid ci_init_color (void);\nvoid ci_start_color (void);\n\n/* If the system has bkgdset() use it rather than attrset() so that the clr*()\n * functions will properly set the background attributes all the way to the\n * right column.\n */\n#if defined(HAVE_BKGDSET)\n#define SETCOLOR(X) bkgdset(ColorDefs[X] | ' ')\n#define ATTRSET(X) bkgdset(X | ' ')\n#else\n#define SETCOLOR(X) attrset(ColorDefs[X])\n#define ATTRSET attrset\n#endif\n\n/* reset the color to the normal terminal color as defined by 'color normal ...' */\n#define NORMAL_COLOR SETCOLOR(MT_COLOR_NORMAL)\n\n#define MAYBE_REDRAW(x) if (option (OPTNEEDREDRAW)) { unset_option (OPTNEEDREDRAW); x = REDRAW_FULL; }\n\n/* ----------------------------------------------------------------------------\n * These are here to avoid compiler warnings with -Wall under SunOS 4.1.x\n */\n\n#if !defined(STDC_HEADERS) && !defined(NCURSES_VERSION) && !defined(USE_SLANG_CURSES)\nextern int endwin();\nextern int printw();\nextern int beep();\nextern int isendwin();\nextern int w32addch();\nextern int keypad();\nextern int wclrtobot();\nextern int mvprintw();\nextern int getcurx();\nextern int getcury();\nextern int noecho();\nextern int wdelch();\nextern int wrefresh();\nextern int wmove();\nextern int wclear();\nextern int waddstr();\nextern int wclrtoeol();\n#endif\n\n#endif /* _MUTT_CURSES_H_ */\n"
  },
  {
    "path": "mutt_idna.c",
    "content": "/*\n * Copyright (C) 2003,2005,2008-2009 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"charset.h\"\n#include \"mutt_idna.h\"\n\n#ifdef HAVE_LIBIDN\nstatic int check_idn (char *domain)\n{\n  if (! domain)\n    return 0;\n\n  if (ascii_strncasecmp (domain, \"xn--\", 4) == 0)\n    return 1;\n\n  while ((domain = strchr (domain, '.')) != NULL)\n  {\n    if (ascii_strncasecmp (++domain, \"xn--\", 4) == 0)\n      return 1;\n  }\n\n  return 0;\n}\n#endif /* HAVE_LIBIDN */\n\nstatic int mbox_to_udomain (const char *mbx, char **user, char **domain)\n{\n  static char *buff = NULL;\n  char *p;\n\n  mutt_str_replace (&buff, mbx);\n\n  p = strchr (buff, '@');\n  if (!p || !p[1])\n    return -1;\n  *p = '\\0';\n  *user = buff;\n  *domain  = p + 1;\n  return 0;\n}\n\nstatic int addr_is_local (ADDRESS *a)\n{\n  return (a->intl_checked && !a->is_intl);\n}\n\nstatic int addr_is_intl (ADDRESS *a)\n{\n  return (a->intl_checked && a->is_intl);\n}\n\nstatic void set_local_mailbox (ADDRESS *a, char *local_mailbox)\n{\n  FREE (&a->mailbox);\n  a->mailbox = local_mailbox;\n  a->intl_checked = 1;\n  a->is_intl = 0;\n}\n\nstatic void set_intl_mailbox (ADDRESS *a, char *intl_mailbox)\n{\n  FREE (&a->mailbox);\n  a->mailbox = intl_mailbox;\n  a->intl_checked = 1;\n  a->is_intl = 1;\n}\n\nstatic char *intl_to_local (char *orig_user, char *orig_domain, int flags)\n{\n  char *local_user = NULL, *local_domain = NULL, *mailbox = NULL;\n  char *reversed_user = NULL, *reversed_domain = NULL;\n  char *tmp = NULL;\n#ifdef HAVE_LIBIDN\n  int is_idn_encoded = 0;\n#endif /* HAVE_LIBIDN */\n\n  local_user = safe_strdup (orig_user);\n  local_domain = safe_strdup (orig_domain);\n\n#ifdef HAVE_LIBIDN\n  is_idn_encoded = check_idn (local_domain);\n  if (is_idn_encoded && option (OPTIDNDECODE))\n  {\n    if (idna_to_unicode_8z8z (local_domain, &tmp, IDNA_ALLOW_UNASSIGNED) != IDNA_SUCCESS)\n      goto cleanup;\n    mutt_str_replace (&local_domain, tmp);\n    FREE (&tmp);\n  }\n#endif /* HAVE_LIBIDN */\n\n  /* we don't want charset-hook effects, so we set flags to 0 */\n  if (mutt_convert_string (&local_user, \"utf-8\", Charset, 0) == -1)\n    goto cleanup;\n\n  if (mutt_convert_string (&local_domain, \"utf-8\", Charset, 0) == -1)\n    goto cleanup;\n\n  /*\n   * make sure that we can convert back and come out with the same\n   * user and domain name.\n   */\n  if ((flags & MI_MAY_BE_IRREVERSIBLE) == 0)\n  {\n    reversed_user = safe_strdup (local_user);\n\n    if (mutt_convert_string (&reversed_user, Charset, \"utf-8\", 0) == -1)\n    {\n      dprint (1, (debugfile,\n                  \"intl_to_local: Not reversible. Charset conv to utf-8 failed for user = '%s'.\\n\",\n                  reversed_user));\n      goto cleanup;\n    }\n\n    if (ascii_strcasecmp (orig_user, reversed_user))\n    {\n      dprint (1, (debugfile, \"intl_to_local: Not reversible. orig = '%s', reversed = '%s'.\\n\",\n                  orig_user, reversed_user));\n      goto cleanup;\n    }\n\n    reversed_domain = safe_strdup (local_domain);\n\n    if (mutt_convert_string (&reversed_domain, Charset, \"utf-8\", 0) == -1)\n    {\n      dprint (1, (debugfile,\n                  \"intl_to_local: Not reversible. Charset conv to utf-8 failed for domain = '%s'.\\n\",\n                  reversed_domain));\n      goto cleanup;\n    }\n\n#ifdef HAVE_LIBIDN\n    /* If the original domain was UTF-8, idna encoding here could\n     * produce a non-matching domain!  Thus we only want to do the\n     * idna_to_ascii_8z() if the original domain was IDNA encoded.\n     */\n    if (is_idn_encoded && option (OPTIDNDECODE))\n    {\n      if (idna_to_ascii_8z (reversed_domain, &tmp, IDNA_ALLOW_UNASSIGNED) != IDNA_SUCCESS)\n      {\n        dprint (1, (debugfile,\n                    \"intl_to_local: Not reversible. idna_to_ascii_8z failed for domain = '%s'.\\n\",\n                    reversed_domain));\n        goto cleanup;\n      }\n      mutt_str_replace (&reversed_domain, tmp);\n    }\n#endif /* HAVE_LIBIDN */\n\n    if (ascii_strcasecmp (orig_domain, reversed_domain))\n    {\n      dprint (1, (debugfile, \"intl_to_local: Not reversible. orig = '%s', reversed = '%s'.\\n\",\n                  orig_domain, reversed_domain));\n      goto cleanup;\n    }\n  }\n\n  mailbox = safe_malloc (mutt_strlen (local_user) + mutt_strlen (local_domain) + 2);\n  sprintf (mailbox, \"%s@%s\", NONULL(local_user), NONULL(local_domain)); /* __SPRINTF_CHECKED__ */\n\ncleanup:\n  FREE (&local_user);\n  FREE (&local_domain);\n  FREE (&tmp);\n  FREE (&reversed_domain);\n  FREE (&reversed_user);\n\n  return mailbox;\n}\n\nstatic char *local_to_intl (char *user, char *domain)\n{\n  char *intl_user = NULL, *intl_domain = NULL;\n  char *mailbox = NULL;\n  char *tmp = NULL;\n\n  intl_user = safe_strdup (user);\n  intl_domain = safe_strdup (domain);\n\n  /* we don't want charset-hook effects, so we set flags to 0 */\n  if (mutt_convert_string (&intl_user, Charset, \"utf-8\", 0) == -1)\n    goto cleanup;\n\n  if (mutt_convert_string (&intl_domain, Charset, \"utf-8\", 0) == -1)\n    goto cleanup;\n\n#ifdef HAVE_LIBIDN\n  if (option (OPTIDNENCODE))\n  {\n    if (idna_to_ascii_8z (intl_domain, &tmp, IDNA_ALLOW_UNASSIGNED) != IDNA_SUCCESS)\n      goto cleanup;\n    mutt_str_replace (&intl_domain, tmp);\n  }\n#endif /* HAVE_LIBIDN */\n\n  mailbox = safe_malloc (mutt_strlen (intl_user) + mutt_strlen (intl_domain) + 2);\n  sprintf (mailbox, \"%s@%s\", NONULL(intl_user), NONULL(intl_domain)); /* __SPRINTF_CHECKED__ */\n\ncleanup:\n  FREE (&intl_user);\n  FREE (&intl_domain);\n  FREE (&tmp);\n\n  return mailbox;\n}\n\n/* higher level functions */\n\nint mutt_addrlist_to_intl (ADDRESS *a, char **err)\n{\n  char *user = NULL, *domain = NULL;\n  char *intl_mailbox = NULL;\n  int rv = 0;\n\n  if (err)\n    *err = NULL;\n\n  for (; a; a = a->next)\n  {\n    if (!a->mailbox || addr_is_intl (a))\n      continue;\n\n    if (mbox_to_udomain (a->mailbox, &user, &domain) == -1)\n      continue;\n\n    intl_mailbox = local_to_intl (user, domain);\n    if (! intl_mailbox)\n    {\n      rv = -1;\n      if (err && !*err)\n        *err = safe_strdup (a->mailbox);\n      continue;\n    }\n\n    set_intl_mailbox (a, intl_mailbox);\n  }\n\n  return rv;\n}\n\nint mutt_addrlist_to_local (ADDRESS *a)\n{\n  char *user = NULL, *domain = NULL;\n  char *local_mailbox = NULL;\n\n  for (; a; a = a->next)\n  {\n    if (!a->mailbox || addr_is_local (a))\n      continue;\n\n    if (mbox_to_udomain (a->mailbox, &user, &domain) == -1)\n      continue;\n\n    local_mailbox = intl_to_local (user, domain, 0);\n    if (local_mailbox)\n      set_local_mailbox (a, local_mailbox);\n  }\n\n  return 0;\n}\n\n/* convert just for displaying purposes */\nconst char *mutt_addr_for_display (ADDRESS *a)\n{\n  char *user = NULL, *domain = NULL;\n  static char *buff = NULL;\n  char *local_mailbox = NULL;\n\n  FREE (&buff);\n\n  if (!a->mailbox || addr_is_local (a))\n    return a->mailbox;\n\n  if (mbox_to_udomain (a->mailbox, &user, &domain) == -1)\n    return a->mailbox;\n\n  local_mailbox = intl_to_local (user, domain, MI_MAY_BE_IRREVERSIBLE);\n  if (! local_mailbox)\n    return a->mailbox;\n\n  mutt_str_replace (&buff, local_mailbox);\n  FREE (&local_mailbox);\n  return buff;\n}\n\n/* Convert an ENVELOPE structure */\n\nvoid mutt_env_to_local (ENVELOPE *e)\n{\n  mutt_addrlist_to_local (e->return_path);\n  mutt_addrlist_to_local (e->from);\n  mutt_addrlist_to_local (e->to);\n  mutt_addrlist_to_local (e->cc);\n  mutt_addrlist_to_local (e->bcc);\n  mutt_addrlist_to_local (e->reply_to);\n  mutt_addrlist_to_local (e->mail_followup_to);\n}\n\n/* Note that `a' in the `env->a' expression is macro argument, not\n * \"real\" name of an `env' compound member.  Real name will be substituted\n * by preprocessor at the macro-expansion time.\n * Note that #a escapes and double quotes the argument.\n */\n#define H_TO_INTL(a)\t\\\n  if (mutt_addrlist_to_intl (env->a, err) && !e) \\\n  { \\\n     if (tag) *tag = #a; e = 1; err = NULL; \\\n  }\n\nint mutt_env_to_intl (ENVELOPE *env, char **tag, char **err)\n{\n  int e = 0;\n  H_TO_INTL(return_path);\n  H_TO_INTL(from);\n  H_TO_INTL(to);\n  H_TO_INTL(cc);\n  H_TO_INTL(bcc);\n  H_TO_INTL(reply_to);\n  H_TO_INTL(mail_followup_to);\n  return e;\n}\n\n#undef H_TO_INTL\n"
  },
  {
    "path": "mutt_idna.h",
    "content": "/*\n * Copyright (C) 2003,2005 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _MUTT_IDNA_H\n# define _MUTT_IDNA_H\n\n#include \"rfc822.h\"\n#include \"charset.h\"\n\n#ifdef HAVE_IDNA_H\n#include <idna.h>\n#elif defined(HAVE_IDN_IDNA_H)\n#include <idn/idna.h>\n#endif\n\n#define MI_MAY_BE_IRREVERSIBLE\t\t(1 << 0)\n\n/* Work around incompatibilities in the libidn API */\n\n#ifdef HAVE_LIBIDN\n# if (!defined(HAVE_IDNA_TO_ASCII_8Z) && defined(HAVE_IDNA_TO_ASCII_FROM_UTF8))\n#  define idna_to_ascii_8z(a,b,c) idna_to_ascii_from_utf8(a,b,(c)&1,((c)&2)?1:0)\n# endif\n# if (!defined(HAVE_IDNA_TO_ASCII_LZ) && defined(HAVE_IDNA_TO_ASCII_FROM_LOCALE))\n#  define idna_to_ascii_lz(a,b,c) idna_to_ascii_from_locale(a,b,(c)&1,((c)&2)?1:0)\n# endif\n# if (!defined(HAVE_IDNA_TO_UNICODE_8Z8Z) && defined(HAVE_IDNA_TO_UNICODE_UTF8_FROM_UTF8))\n#  define idna_to_unicode_8z8z(a,b,c) idna_to_unicode_utf8_from_utf8(a,b,(c)&1,((c)&2)?1:0)\n# endif\n#endif /* HAVE_LIBIDN */\n\n\nint mutt_addrlist_to_intl (ADDRESS *, char **);\nint mutt_addrlist_to_local (ADDRESS *);\n\nvoid mutt_env_to_local (ENVELOPE *);\nint mutt_env_to_intl (ENVELOPE *, char **, char **);\n\nconst char *mutt_addr_for_display (ADDRESS *a);\n\n\n#endif\n"
  },
  {
    "path": "mutt_menu.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n/*\n * This file is named mutt_menu.h so it doesn't collide with ncurses menu.h\n */\n\n#ifndef _MUTT_MENU_H_\n#define _MUTT_MENU_H_ 1\n\n#include \"keymap.h\"\n#include \"mutt_regex.h\"\n\n#define REDRAW_INDEX\t\t(1)\n#define REDRAW_MOTION\t\t(1<<1)\n#define REDRAW_MOTION_RESYNCH\t(1<<2)\n#define REDRAW_CURRENT\t\t(1<<3)\n#define REDRAW_STATUS\t\t(1<<4)\n#define REDRAW_FULL\t\t(1<<5)\n#define REDRAW_BODY\t\t(1<<6)\n#define REDRAW_SIGWINCH\t\t(1<<7)\n#ifdef USE_SIDEBAR\n#define REDRAW_SIDEBAR\t\t(1<<8)\n#endif\n\n#define M_MODEFMT \"-- Mutt: %s\"\n\ntypedef struct menu_t\n{\n  char *title;   /* the title of this menu */\n  char *help;    /* quickref for the current menu */\n  void *data;    /* extra data for the current menu */\n  int current;   /* current entry */\n  int max;       /* the number of entries in the menu */\n  int redraw;\t/* when to redraw the screen */\n  int menu;\t/* menu definition for keymap entries. */\n  int offset;\t/* which screen row to start the index */\n  int pagelen;\t/* number of entries per screen */\n  int tagprefix;\n\n  /* Setting dialog != NULL overrides normal menu behavior. \n   * In dialog mode menubar is hidden and prompt keys are checked before\n   * normal menu movement keys. This can cause problems with scrolling, if \n   * prompt keys override movement keys.\n   */\n  char **dialog;\t/* dialog lines themselves */\n  char *prompt;\t\t/* prompt for user, similar to mutt_multi_choice */\n  char *keys;\t\t/* keys used in the prompt */\n  \n  /* callback to generate an index line for the requested element */\n  void (*make_entry) (char *, size_t, struct menu_t *, int);\n  \n  /* how to search the menu */\n  int (*search) (struct menu_t *, regex_t *re, int n);\n\n  int (*tag) (struct menu_t *, int i, int m);\n\n  /* color pair to be used for the requested element \n   * (default function returns ColorDefs[MT_COLOR_NORMAL])\n   */\n  int (*color) (int i);\n   \n  /* the following are used only by mutt_menuLoop() */\n  int top;\t\t/* entry that is the top of the current page */\n  int oldcurrent;\t/* for driver use only. */\n  int searchDir;\t/* direction of search */\n  int tagged;\t\t/* number of tagged entries */\n} MUTTMENU;\n\nvoid mutt_menu_init (void);\nvoid menu_jump (MUTTMENU *);\nvoid menu_redraw_full (MUTTMENU *);\nvoid menu_redraw_index (MUTTMENU *);\nvoid menu_redraw_status (MUTTMENU *);\nvoid menu_redraw_motion (MUTTMENU *);\nvoid menu_redraw_current (MUTTMENU *);\nint  menu_redraw (MUTTMENU *);\nvoid menu_first_entry (MUTTMENU *);\nvoid menu_last_entry (MUTTMENU *);\nvoid menu_top_page (MUTTMENU *);\nvoid menu_bottom_page (MUTTMENU *);\nvoid menu_middle_page (MUTTMENU *);\nvoid menu_next_page (MUTTMENU *);\nvoid menu_prev_page (MUTTMENU *);\nvoid menu_next_line (MUTTMENU *);\nvoid menu_prev_line (MUTTMENU *);\nvoid menu_half_up (MUTTMENU *);\nvoid menu_half_down (MUTTMENU *);\nvoid menu_current_top (MUTTMENU *);\nvoid menu_current_middle (MUTTMENU *);\nvoid menu_current_bottom (MUTTMENU *);\nvoid menu_check_recenter (MUTTMENU *);\nvoid menu_status_line (char *, size_t, MUTTMENU *, const char *);\nshort mutt_ts_capability (void);\nvoid mutt_ts_status (char *);\nvoid mutt_ts_icon (char *);\n\nMUTTMENU *mutt_new_menu (int);\nvoid mutt_menuDestroy (MUTTMENU **);\nint mutt_menuLoop (MUTTMENU *);\n\n/* used in both the index and pager index to make an entry. */\nvoid index_make_entry (char *, size_t, struct menu_t *, int);\nint index_color (int);\n\n#endif /* _MUTT_MENU_H_ */\n"
  },
  {
    "path": "mutt_notmuch.c",
    "content": "/*\n * Notmuch support for mutt\n *\n * Copyright (C) 2011, 2012 Karel Zak <kzak@redhat.com>\n *\n * Notes:\n *\n * - notmuch uses private CONTEXT->data and private HEADER->data\n *\n * - all exported functions are usable within notmuch context only\n *\n * - all functions have to be covered by \"ctx->magic == M_NOTMUCH\" check\n *   (it's implemented in get_ctxdata() and init_context() functions).\n *\n * - exception are nm_nonctx_* functions -- these functions use nm_default_uri\n *   (or parse URI from another resource)\n */\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mx.h\"\n#include \"rfc2047.h\"\n#include \"sort.h\"\n#include \"mailbox.h\"\n#include \"copy.h\"\n#include \"keymap.h\"\n#include \"url.h\"\n#include \"buffy.h\"\n\n#include <dirent.h>\n#include <fcntl.h>\n#include <sys/file.h>\n#include <sys/stat.h>\n#include <errno.h>\n#include <unistd.h>\n#include <stdlib.h>\n#include <string.h>\n#include <ctype.h>\n#include <utime.h>\n\n#include <notmuch.h>\n\n#include \"mutt_notmuch.h\"\n#include \"mutt_curses.h\"\n\n#ifdef LIBNOTMUCH_CHECK_VERSION\n#undef LIBNOTMUCH_CHECK_VERSION\n#endif\n\n/* The definition in <notmuch.h> is broken */\n#define LIBNOTMUCH_CHECK_VERSION(major, minor, micro)                               \\\n    (LIBNOTMUCH_MAJOR_VERSION > (major) ||                                          \\\n     (LIBNOTMUCH_MAJOR_VERSION == (major) && LIBNOTMUCH_MINOR_VERSION > (minor)) || \\\n     (LIBNOTMUCH_MAJOR_VERSION == (major) && LIBNOTMUCH_MINOR_VERSION == (minor) && \\\n      LIBNOTMUCH_MICRO_VERSION >= (micro)))\n\n\n/* read whole-thread or matching messages only? */\nenum {\n\tNM_QUERY_TYPE_MESGS = 1,\t/* default */\n\tNM_QUERY_TYPE_THREADS\n};\n\n/*\n * Parsed URI arguments\n */\nstruct uri_tag {\n\tchar *name;\n\tchar *value;\n\tstruct uri_tag *next;\n};\n\n/*\n * HEADER->(nm_hdrdata *)data->tag_list node\n */\nstruct nm_hdrtag\n{\n  char *tag;\n  char *transformed;\n  struct nm_hdrtag *next;\n};\n\n/*\n * HEADER->data\n */\nstruct nm_hdrdata {\n\tchar *folder;\n\tchar *tags;\n\tchar *tags_transformed;\n\tstruct nm_hdrtag *tag_list;\n\tchar *oldpath;\n\tchar *virtual_id;\n\tint magic;\n};\n\n/*\n * CONTEXT->data\n */\nstruct nm_ctxdata {\n\tnotmuch_database_t *db;\n\n\tchar *db_filename;\n\tchar *db_query;\n\tint db_limit;\n\tint query_type;\n\n\tstruct uri_tag *query_items;\n\n\tprogress_t progress;\n\tint oldmsgcount;\n\tint ignmsgcount;\t/* ingored messages */\n\n\tunsigned int noprogress : 1,\n\t\t     longrun : 1,\n\t\t     trans : 1,\n\t\t     progress_ready : 1;\n\n};\n\nstatic HEADER *get_mutt_header(CONTEXT *ctx, notmuch_message_t *msg);\nstatic notmuch_message_t *get_nm_message(notmuch_database_t *db, HEADER *hdr);\n\nstatic void url_free_tags(struct uri_tag *tags)\n{\n\twhile (tags) {\n\t\tstruct uri_tag *next = tags->next;\n\t\tFREE(&tags->name);\n\t\tFREE(&tags->value);\n\t\tFREE(&tags);\n\t\ttags = next;\n\t}\n}\n\nstatic int url_parse_query(char *url, char **filename, struct uri_tag **tags)\n{\n\tchar *p = strstr(url, \"://\");\t/* remote unsupported */\n\tchar *e;\n\tstruct uri_tag *tag, *last = NULL;\n\n\t*filename = NULL;\n\t*tags = NULL;\n\n\tif (!p || !*(p + 3))\n\t\treturn -1;\n\n\tp += 3;\n\t*filename = p;\n\n\te = strchr(p, '?');\n\n\t*filename = e ? e == p ? NULL : strndup(p, e - p) : safe_strdup(p);\n\tif (!e)\n\t\treturn 0;\n\n\tif (*filename && url_pct_decode(*filename) < 0)\n\t\tgoto err;\n\tif (!e)\n\t\treturn 0;\t/* only filename */\n\n\t++e;\t/* skip '?' */\n\tp = e;\n\n\twhile (p && *p) {\n\t\ttag = safe_calloc(1, sizeof(struct uri_tag));\n\t\tif (!tag)\n\t\t\tgoto err;\n\n\t\tif (!*tags)\n\t\t\tlast = *tags = tag;\n\t\telse {\n\t\t\tlast->next = tag;\n\t\t\tlast = tag;\n\t\t}\n\n\t\te = strchr(p, '=');\n\t\tif (!e)\n\t\t\te = strchr(p, '&');\n\t\ttag->name = e ? strndup(p, e - p) : safe_strdup(p);\n\t\tif (!tag->name || url_pct_decode(tag->name) < 0)\n\t\t\tgoto err;\n\t\tif (!e)\n\t\t\tbreak;\n\n\t\tp = e + 1;\n\n\t\tif (*e == '&')\n\t\t\tcontinue;\n\n\t\te = strchr(p, '&');\n\t\ttag->value = e ? strndup(p, e - p) : safe_strdup(p);\n\t\tif (!tag->value || url_pct_decode(tag->value) < 0)\n\t\t\tgoto err;\n\t\tif (!e)\n\t\t\tbreak;\n\t\tp = e + 1;\n\t}\n\n\treturn 0;\nerr:\n\tFREE(&(*filename));\n\turl_free_tags(*tags);\n\treturn -1;\n}\n\nstatic void free_tag_list(struct nm_hdrtag **tag_list)\n{\n\tstruct nm_hdrtag *tmp;\n\n\twhile ((tmp = *tag_list) != NULL)\n\t{\n\t\t*tag_list = tmp->next;\n\t\tFREE(&tmp->tag);\n\t\tFREE(&tmp->transformed);\n\t\tFREE(&tmp);\n\t}\n\n\t*tag_list = 0;\n}\n\nstatic void free_hdrdata(struct nm_hdrdata *data)\n{\n\tif (!data)\n\t\treturn;\n\n\tdprint(2, (debugfile, \"nm: freeing header %p\\n\", data));\n\tFREE(&data->folder);\n\tFREE(&data->tags);\n\tFREE(&data->tags_transformed);\n\tfree_tag_list(&data->tag_list);\n\tFREE(&data->oldpath);\n\tFREE(&data->virtual_id);\n\tFREE(&data);\n}\n\nstatic void free_ctxdata(struct nm_ctxdata *data)\n{\n\tif (!data)\n\t\treturn;\n\n\tdprint(1, (debugfile, \"nm: freeing context data %p\\n\", data));\n\n\tif (data->db)\n#ifdef NOTMUCH_API_3\n\t        notmuch_database_destroy(data->db);\n#else\n\t\tnotmuch_database_close(data->db);\n#endif\n\tdata->db = NULL;\n\n\tFREE(&data->db_filename);\n\tFREE(&data->db_query);\n\turl_free_tags(data->query_items);\n\tFREE(&data);\n}\n\nstatic struct nm_ctxdata *new_ctxdata(char *uri)\n{\n\tstruct nm_ctxdata *data;\n\n\tif (!uri)\n\t\treturn NULL;\n\n\tdata = safe_calloc(1, sizeof(struct nm_ctxdata));\n\tdprint(1, (debugfile, \"nm: initialize context data %p\\n\", data));\n\n\tdata->db_limit = NotmuchDBLimit;\n\n\tif (url_parse_query(uri, &data->db_filename, &data->query_items)) {\n\t\tmutt_error(_(\"failed to parse notmuch uri: %s\"), uri);\n\t\tdata->db_filename = NULL;\n\t\tdata->query_items = NULL;\n\t\tdata->query_type = 0;\n\t\treturn NULL;\n\t}\n\n\treturn data;\n}\n\nstatic int deinit_context(CONTEXT *ctx)\n{\n\tint i;\n\n\tif (!ctx || ctx->magic != M_NOTMUCH)\n\t\treturn -1;\n\n\tfor (i = 0; i < ctx->msgcount; i++) {\n\t\tHEADER *h = ctx->hdrs[i];\n\n\t\tif (h) {\n\t\t\tfree_hdrdata(h->data);\n\t\t\th->data = NULL;\n\t\t}\n\t}\n\n\tfree_ctxdata(ctx->data);\n\tctx->data = NULL;\n\treturn 0;\n}\n\nstatic int init_context(CONTEXT *ctx)\n{\n\tif (!ctx || ctx->magic != M_NOTMUCH)\n\t\treturn -1;\n\n\tif (ctx->data)\n\t\treturn 0;\n\n\tctx->data = new_ctxdata(ctx->path);\n\tif (!ctx->data)\n\t\treturn -1;\n\n\tctx->mx_close = deinit_context;\n\treturn 0;\n}\n\nchar *nm_header_get_folder(HEADER *h)\n{\n\treturn h && h->data ? ((struct nm_hdrdata *) h->data)->folder : NULL;\n}\n\n/* returns all unhidden tags */\nchar *nm_header_get_tags(HEADER *h)\n{\n\treturn h && h->data ? ((struct nm_hdrdata *) h->data)->tags : NULL;\n}\n\nchar *nm_header_get_tags_transformed(HEADER *h)\n{\n\treturn h && h->data ? ((struct nm_hdrdata *) h->data)->tags_transformed : NULL;\n}\n\nchar *nm_header_get_tag_transformed(char *tag, HEADER *h)\n{\n\tstruct nm_hdrtag *tmp;\n\n\tif (!h || !h->data)\n\t\treturn NULL;\n\n\tfor (tmp = ((struct nm_hdrdata *) h->data)->tag_list;\n\t     tmp != NULL;\n\t     tmp = tmp->next)\n\t{\n\t\tif (strcmp(tag, tmp->tag) == 0)\n\t\t\treturn tmp->transformed;\n\t}\n\n\treturn NULL;\n}\n\nint nm_header_get_magic(HEADER *h)\n{\n\treturn h && h->data ? ((struct nm_hdrdata *) h->data)->magic : 0;\n}\n\n/*\n * Returns notmuch message Id.\n */\nstatic char *nm_header_get_id(HEADER *h)\n{\n\treturn h && h->data ? ((struct nm_hdrdata *) h->data)->virtual_id : NULL;\n}\n\n\nchar *nm_header_get_fullpath(HEADER *h, char *buf, size_t bufsz)\n{\n\tsnprintf(buf, bufsz, \"%s/%s\", nm_header_get_folder(h), h->path);\n\t/*dprint(2, (debugfile, \"nm: returns fullpath '%s'\\n\", buf));*/\n\treturn buf;\n}\n\n\nstatic struct nm_ctxdata *get_ctxdata(CONTEXT *ctx)\n{\n\tif (ctx && ctx->magic == M_NOTMUCH)\n\t\treturn ctx->data;\n\n\treturn NULL;\n}\n\nstatic int string_to_guery_type(const char *str)\n{\n\tif (!str)\n\t\tstr = NotmuchQueryType;\t\t/* user's default */\n\tif (!str)\n\t\treturn NM_QUERY_TYPE_MESGS;\t/* hardcoded default */\n\n\tif (strcmp(str, \"threads\") == 0)\n\t\treturn NM_QUERY_TYPE_THREADS;\n\telse if (strcmp(str, \"messages\") == 0)\n\t\treturn NM_QUERY_TYPE_MESGS;\n\n\tmutt_error (_(\"failed to parse notmuch query type: %s\"), str);\n\treturn NM_QUERY_TYPE_MESGS;\n}\n\nstatic char *get_query_string(struct nm_ctxdata *data)\n{\n\tstruct uri_tag *item;\n\n\tif (!data)\n\t\treturn NULL;\n\tif (data->db_query)\n\t\treturn data->db_query;\n\n\tfor (item = data->query_items; item; item = item->next) {\n\t\tif (!item->value || !item->name)\n\t\t\tcontinue;\n\n\t\tif (strcmp(item->name, \"limit\") == 0) {\n\t\t\tif (mutt_atoi(item->value, &data->db_limit))\n\t\t\t\tmutt_error (_(\"failed to parse notmuch limit: %s\"), item->value);\n\n\t\t} else if (strcmp(item->name, \"type\") == 0)\n\t\t\tdata->query_type = string_to_guery_type(item->value);\n\n\t\telse if (strcmp(item->name, \"query\") == 0)\n\t\t\tdata->db_query = safe_strdup(item->value);\n\t}\n\n\tif (!data->query_type)\n\t\tdata->query_type = string_to_guery_type(NULL);\n\n\tdprint(2, (debugfile, \"nm: query '%s'\\n\", data->db_query));\n\n\treturn data->db_query;\n}\n\nstatic int get_limit(struct nm_ctxdata *data)\n{\n\treturn data ? data->db_limit : 0;\n}\n\nstatic int get_query_type(struct nm_ctxdata *data)\n{\n\treturn (data && data->query_type) ? data->query_type : string_to_guery_type(NULL);\n}\n\nstatic const char *get_db_filename(struct nm_ctxdata *data)\n{\n\tchar *db_filename;\n\n\tif (!data)\n\t\treturn NULL;\n\n\tdb_filename = data->db_filename ? data->db_filename : NotmuchDefaultUri;\n\tif (!db_filename)\n\t\tdb_filename = Maildir;\n\tif (!db_filename)\n\t\treturn NULL;\n\tif (strncmp(db_filename, \"notmuch://\", 10) == 0)\n\t\tdb_filename += 10;\n\n\tdprint(2, (debugfile, \"nm: db filename '%s'\\n\", db_filename));\n\treturn db_filename;\n}\n\nstatic notmuch_database_t *do_database_open(const char *filename,\n\t\t\t\t\t    int writable, int verbose)\n{\n\tnotmuch_database_t *db = NULL;\n\tunsigned int ct = 0;\n\tnotmuch_status_t st = NOTMUCH_STATUS_SUCCESS;\n\n\tdprint(1, (debugfile, \"nm: db open '%s' %s (timeout %d)\\n\", filename,\n\t\t\twritable ? \"[WRITE]\" : \"[READ]\", NotmuchOpenTimeout));\n\tdo {\n#ifdef NOTMUCH_API_3\n\t\tst = notmuch_database_open(filename,\n\t\t\t\t\twritable ? NOTMUCH_DATABASE_MODE_READ_WRITE :\n\t\t\t\t\tNOTMUCH_DATABASE_MODE_READ_ONLY, &db);\n#else\n\t\tdb = notmuch_database_open(filename,\n\t\t\t\t\twritable ? NOTMUCH_DATABASE_MODE_READ_WRITE :\n\t\t\t\t\tNOTMUCH_DATABASE_MODE_READ_ONLY);\n#endif\n\t\tif (db || !NotmuchOpenTimeout || ct / 2 > NotmuchOpenTimeout)\n\t\t\tbreak;\n\n\t\tif (verbose && ct && ct % 2 == 0)\n\t\t\tmutt_error(_(\"Waiting for notmuch DB... (%d sec)\"), ct / 2);\n\t\tusleep(500000);\n\t\tct++;\n\t} while (1);\n\n\tif (verbose) {\n\t\tif (!db)\n\t\t\tmutt_error (_(\"Cannot open notmuch database: %s: %s\"),\n\t\t\t\t    filename,\n\t\t\t\t    st ? notmuch_status_to_string(st) :\n\t\t\t\t\t _(\"unknown reason\"));\n\t\telse if (ct > 1)\n\t\t\tmutt_clear_error();\n\t}\n\treturn db;\n}\n\nstatic notmuch_database_t *get_db(struct nm_ctxdata *data, int writable)\n{\n\tif (!data)\n\t       return NULL;\n\tif (!data->db) {\n\t\tconst char *db_filename = get_db_filename(data);\n\n\t\tif (db_filename)\n\t\t\tdata->db = do_database_open(db_filename, writable, TRUE);\n\t}\n\treturn data->db;\n}\n\nstatic int release_db(struct nm_ctxdata *data)\n{\n\tif (data && data->db) {\n\t\tdprint(1, (debugfile, \"nm: db close\\n\"));\n#ifdef NOTMUCH_API_3\n\t\tnotmuch_database_destroy(data->db);\n#else\n\t\tnotmuch_database_close(data->db);\n#endif\n\t\tdata->db = NULL;\n\t\tdata->longrun = 0;\n\t\treturn 0;\n\t}\n\n\treturn -1;\n}\n\n/* returns:\t< 0 = error\n *\t\t  1 = new transaction started\n *\t\t  0 = already within transaction\n */\nstatic int db_trans_begin(struct nm_ctxdata *data)\n{\n\tif (!data || !data->db)\n\t\treturn -1;\n\n\tif (!data->trans) {\n\t\tdprint(2, (debugfile, \"nm: db trans start\\n\"));\n\t\tif (notmuch_database_begin_atomic(data->db))\n\t\t\treturn -1;\n\t\tdata->trans = 1;\n\t\treturn 1;\n\t}\n\n\treturn 0;\n}\n\nstatic int db_trans_end(struct nm_ctxdata *data)\n{\n\tif (!data || !data->db)\n\t\treturn -1;\n\n\tif (data->trans) {\n\t\tdprint(2, (debugfile, \"nm: db trans end\\n\"));\n\t\tdata->trans = 0;\n\t\tif (notmuch_database_end_atomic(data->db))\n\t\t\treturn -1;\n\t}\n\n\treturn 0;\n}\n\nvoid nm_longrun_init(CONTEXT *ctx, int writable)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\n\tif (data && get_db(data, writable)) {\n\t\tdata->longrun = 1;\n\t\tdprint(2, (debugfile, \"nm: long run initialized\\n\"));\n\t}\n}\n\nvoid nm_longrun_done(CONTEXT *ctx)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\n\tif (data && release_db(data) == 0)\n\t\tdprint(2, (debugfile, \"nm: long run deinitialized\\n\"));\n}\n\nstatic int is_longrun(struct nm_ctxdata *data)\n{\n\treturn data && data->longrun;\n}\n\nvoid nm_debug_check(CONTEXT *ctx)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\n\tif (!data)\n\t\treturn;\n\n\tif (data->db) {\n\t\tdprint(1, (debugfile, \"nm: ERROR: db is open, closing\\n\"));\n\t\trelease_db(data);\n\t}\n}\n\nstatic int get_database_mtime(struct nm_ctxdata *data, time_t *mtime)\n{\n\tchar path[_POSIX_PATH_MAX];\n\tstruct stat st;\n\n\tif (!data)\n\t       return -1;\n\n\tsnprintf(path, sizeof(path), \"%s/.notmuch/xapian\", get_db_filename(data));\n\tdprint(2, (debugfile, \"nm: checking '%s' mtime\\n\", path));\n\n\tif (stat(path, &st))\n\t\treturn -1;\n\n\tif (mtime)\n\t\t*mtime = st.st_mtime;\n\n\treturn 0;\n}\n\nstatic void apply_exclude_tags(notmuch_query_t *query)\n{\n\tchar *buf, *p, *end = NULL, *tag = NULL;\n\n\tif (!NotmuchExcludeTags || !*NotmuchExcludeTags)\n\t\treturn;\n\tbuf = safe_strdup(NotmuchExcludeTags);\n\n\tfor (p = buf; p && *p; p++) {\n\t\tif (!tag && isspace(*p))\n\t\t\tcontinue;\n\t\tif (!tag)\n\t\t\ttag = p;\t\t/* begin of the tag */\n\t\tif (*p == ',' || *p == ' ')\n\t\t\tend = p;\t\t/* terminate the tag */\n\t\telse if (*(p + 1) == '\\0')\n\t\t\tend = p + 1;\t\t/* end of optstr */\n\t\tif (!tag || !end)\n\t\t\tcontinue;\n\t\tif (tag >= end)\n\t\t\tbreak;\n\t\t*end = '\\0';\n\n\t\tdprint(2, (debugfile, \"nm: query exclude tag '%s'\\n\", tag));\n\t\tnotmuch_query_add_tag_exclude(query, tag);\n\t\tend = tag = NULL;\n\t}\n\tnotmuch_query_set_omit_excluded(query, 1);\n\tFREE(&buf);\n}\n\nstatic notmuch_query_t *get_query(struct nm_ctxdata *data, int writable)\n{\n\tnotmuch_database_t *db = NULL;\n\tnotmuch_query_t *q = NULL;\n\tconst char *str;\n\n\tif (!data)\n\t\treturn NULL;\n\n\tdb = get_db(data, writable);\n\tstr = get_query_string(data);\n\n\tif (!db || !str)\n\t\tgoto err;\n\n\tq = notmuch_query_create(db, str);\n\tif (!q)\n\t\tgoto err;\n\n\tapply_exclude_tags(q);\n\tnotmuch_query_set_sort(q, NOTMUCH_SORT_NEWEST_FIRST);\n\tdprint(2, (debugfile, \"nm: query successfully initialized\\n\"));\n\treturn q;\nerr:\n\tif (!is_longrun(data))\n\t\trelease_db(data);\n\treturn NULL;\n}\n\nstatic void append_str_item(char **str, const char *item, int sep)\n{\n\tchar *p;\n\tsize_t sz = strlen(item);\n\tsize_t ssz = *str ? strlen(*str) : 0;\n\n\tsafe_realloc(str, ssz + (ssz && sep ? 1 : 0) + sz + 1);\n\tp = *str + ssz;\n\tif (sep && ssz)\n\t    *p++ = sep;\n\tmemcpy(p, item, sz + 1);\n}\n\nstatic int update_header_tags(HEADER *h, notmuch_message_t *msg)\n{\n\tstruct nm_hdrdata *data = h->data;\n\tnotmuch_tags_t *tags;\n\tchar *tstr = NULL, *ttstr = NULL;\n\tstruct nm_hdrtag *tag_list = NULL, *tmp;\n\n\tdprint(2, (debugfile, \"nm: tags update requested (%s)\\n\", data->virtual_id));\n\n\tfor (tags = notmuch_message_get_tags(msg);\n\t     tags && notmuch_tags_valid(tags);\n\t     notmuch_tags_move_to_next(tags)) {\n\n\t\tconst char *t = notmuch_tags_get(tags);\n\t\tconst char *tt = NULL;\n\n\t\tif (!t || !*t)\n\t\t\tcontinue;\n\n\t\ttt = hash_find(TagTransforms, t);\n\t\tif (!tt)\n\t\t\ttt = t;\n\n\t\t/* tags list contains all tags */\n\t\ttmp = safe_calloc(1, sizeof(*tmp));\n\t\ttmp->tag = safe_strdup(t);\n\t\ttmp->transformed = safe_strdup(tt);\n\t\ttmp->next = tag_list;\n\t\ttag_list = tmp;\n\n\t\t/* filter out hidden tags */\n\t\tif (NotmuchHiddenTags) {\n\t\t\tchar *p = strstr(NotmuchHiddenTags, t);\n\t\t\tsize_t xsz = p ? strlen(t) : 0;\n\n\t\t\tif (p && (p == NotmuchHiddenTags\n\t\t\t\t  || *(p - 1) == ','\n\t\t\t\t  || *(p - 1) == ' ')\n\t\t\t    && (*(p + xsz) == '\\0'\n\t\t\t\t  || *(p + xsz) == ','\n\t\t\t\t  || *(p + xsz) == ' '))\n\t\t\t\tcontinue;\n\t\t}\n\n\t\t/* expand the transformed tag string */\n\t\tappend_str_item(&ttstr, tt, ' ');\n\n\t\t/* expand the un-transformed tag string */\n\t\tappend_str_item(&tstr, t, ' ');\n\t}\n\n\tfree_tag_list(&data->tag_list);\n\tdata->tag_list = tag_list;\n\n\tif (data->tags && tstr && strcmp(data->tags, tstr) == 0) {\n\t\tFREE(&tstr);\n\t\tFREE(&ttstr);\n\t\tdprint(2, (debugfile, \"nm: tags unchanged\\n\"));\n\t\treturn 1;\n\t}\n\n\t/* free old version */\n\tFREE(&data->tags);\n\tFREE(&data->tags_transformed);\n\n\t/* new version */\n\tdata->tags = tstr;\n\tdprint(2, (debugfile, \"nm: new tags: '%s'\\n\", tstr));\n\n\tdata->tags_transformed = ttstr;\n\tdprint(2, (debugfile, \"nm: new tag transforms: '%s'\\n\", ttstr));\n\n\treturn 0;\n}\n\n/*\n * set/update HEADER->path and HEADER->data->path\n */\nstatic int update_message_path(HEADER *h, const char *path)\n{\n\tstruct nm_hdrdata *data = h->data;\n\tchar *p;\n\n\tdprint(2, (debugfile, \"nm: path update requested path=%s, (%s)\\n\",\n\t\t\t\tpath, data->virtual_id));\n\n\tp = strrchr(path, '/');\n\tif (p && p - path > 3 &&\n\t    (strncmp(p - 3, \"cur\", 3) == 0 ||\n\t     strncmp(p - 3, \"new\", 3) == 0 ||\n\t     strncmp(p - 3, \"tmp\", 3) == 0)) {\n\n\t\tdata->magic = M_MAILDIR;\n\n\t\tFREE(&h->path);\n\t\tFREE(&data->folder);\n\n\t\tp -= 3;\t\t\t\t/* skip subfolder (e.g. \"new\") */\n\t\th->path = safe_strdup(p);\n\n\t\tfor (; p > path && *(p - 1) == '/'; p--);\n\n\t\tdata->folder = strndup(path, p - path);\n\n\t\tdprint(2, (debugfile, \"nm: folder='%s', file='%s'\\n\", data->folder, h->path));\n\t\treturn 0;\n\t}\n\n\treturn 1;\n}\n\nstatic char *get_folder_from_path(const char *path)\n{\n\tchar *p = strrchr(path, '/');\n\n\tif (p && p - path > 3 &&\n\t    (strncmp(p - 3, \"cur\", 3) == 0 ||\n\t     strncmp(p - 3, \"new\", 3) == 0 ||\n\t     strncmp(p - 3, \"tmp\", 3) == 0)) {\n\n\t\tp -= 3;\n\t\tfor (; p > path && *(p - 1) == '/'; p--);\n\n\t\treturn strndup(path, p - path);\n\t}\n\n\treturn NULL;\n}\n\nstatic void deinit_header(HEADER *h)\n{\n\tif (h) {\n\t\tfree_hdrdata(h->data);\n\t\th->data = NULL;\n\t}\n}\n\n/* converts notmuch message Id to mutt message <Id> */\nstatic char *nm2mutt_message_id(const char *id)\n{\n\tsize_t sz;\n\tchar *mid;\n\n\tif (!id)\n\t\treturn NULL;\n\tsz = strlen(id) + 3;\n\tmid = safe_malloc(sz);\n\n\tsnprintf(mid, sz, \"<%s>\", id);\n\treturn mid;\n}\n\nstatic int init_header(HEADER *h, const char *path, notmuch_message_t *msg)\n{\n\tconst char *id;\n\n\tif (h->data)\n\t\treturn 0;\n\n\tid = notmuch_message_get_message_id(msg);\n\n\th->data = safe_calloc(1, sizeof(struct nm_hdrdata));\n\th->free_cb = deinit_header;\n\n\t/*\n\t * Notmuch ensures that message Id exists (if not notmuch Notmuch will\n\t * generate an ID), so it's more safe than use mutt HEADER->env->id\n\t */\n\t((struct nm_hdrdata *) h->data)->virtual_id = safe_strdup( id );\n\n\tdprint(2, (debugfile, \"nm: initialize header data: [hdr=%p, data=%p] (%s)\\n\",\n\t\t\t\th, h->data, id));\n\n\tif (!h->env->message_id)\n\t\th->env->message_id = nm2mutt_message_id( id );\n\n\tif (update_message_path(h, path))\n\t\treturn -1;\n\n\tupdate_header_tags(h, msg);\n\n\treturn 0;\n}\n\n/**\nstatic void debug_print_filenames(notmuch_message_t *msg)\n{\n\tnotmuch_filenames_t *ls;\n\tconst char *id = notmuch_message_get_message_id(msg);\n\n\tfor (ls = notmuch_message_get_filenames(msg);\n\t     ls && notmuch_filenames_valid(ls);\n\t     notmuch_filenames_move_to_next(ls)) {\n\n\t\tdprint(2, (debugfile, \"nm: %s: %s\\n\", id, notmuch_filenames_get(ls)));\n\t}\n}\n\nstatic void debug_print_tags(notmuch_message_t *msg)\n{\n\tnotmuch_tags_t *tags;\n\tconst char *id = notmuch_message_get_message_id(msg);\n\n\tfor (tags = notmuch_message_get_tags(msg);\n\t     tags && notmuch_tags_valid(tags);\n\t     notmuch_tags_move_to_next(tags)) {\n\n\t\tdprint(2, (debugfile, \"nm: %s: %s\\n\", id, notmuch_tags_get(tags)));\n\t}\n}\n***/\n\nstatic const char *get_message_last_filename(notmuch_message_t *msg)\n{\n\tnotmuch_filenames_t *ls;\n\tconst char *name = NULL;\n\n\tfor (ls = notmuch_message_get_filenames(msg);\n\t     ls && notmuch_filenames_valid(ls);\n\t     notmuch_filenames_move_to_next(ls)) {\n\n\t\tname = notmuch_filenames_get(ls);\n\t}\n\n\treturn name;\n}\n\nstatic void nm_progress_reset(CONTEXT *ctx)\n{\n\tstruct nm_ctxdata *data;\n\n\tif (ctx->quiet)\n\t\treturn;\n\n\tdata = get_ctxdata(ctx);\n\n\tmemset(&data->progress, 0, sizeof(data->progress));\n\tdata->oldmsgcount = ctx->msgcount;\n\tdata->ignmsgcount = 0;\n\tdata->noprogress = 0;\n\tdata->progress_ready = 0;\n}\n\nstatic void nm_progress_update(CONTEXT *ctx, notmuch_query_t *q)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\n\tif (ctx->quiet || data->noprogress)\n\t\treturn;\n\n\tif (!data->progress_ready && q) {\n\t\tunsigned count;\n\t\tstatic char msg[STRING];\n\t\tsnprintf(msg, sizeof(msg), _(\"Reading messages...\"));\n\n#if LIBNOTMUCH_CHECK_VERSION(4,3,0)\n\t\tif (notmuch_query_count_messages_st (q, &count) != NOTMUCH_STATUS_SUCCESS)\n\t\t\tcount = 0;\t/* may not be defined on error */\n#else\n\t\tcount = notmuch_query_count_messages(q);\n#endif\n\t\tmutt_progress_init(&data->progress, msg, M_PROGRESS_MSG,\n\t\t\tReadInc, count);\n\t\tdata->progress_ready = 1;\n\t}\n\n\tif (data->progress_ready)\n\t\tmutt_progress_update(&data->progress,\n\t\t\t\tctx->msgcount + data->ignmsgcount\n\t\t\t\t\t      - data->oldmsgcount, -1);\n}\n\nstatic void append_message(CONTEXT *ctx,\n\t\t\t   notmuch_query_t *q,\n\t\t\t   notmuch_message_t *msg,\n\t\t\t   int dedup)\n{\n\tchar *newpath = NULL;\n\tconst char *path;\n\tHEADER *h = NULL;\n\n\t/* deduplicate */\n\tif (dedup && get_mutt_header(ctx, msg)) {\n\t\tget_ctxdata(ctx)->ignmsgcount++;\n\t\tnm_progress_update(ctx, q);\n\t        dprint(2, (debugfile, \"nm: ignore id=%s, already in the context\\n\",\n\t\t\t\t\tnotmuch_message_get_message_id(msg)));\n\t\treturn;\n\t}\n\n\tpath = get_message_last_filename(msg);\n\tif (!path)\n\t\treturn;\n\n\tdprint(2, (debugfile, \"nm: appending message, i=%d, id=%s, path=%s\\n\",\n\t\t\t\tctx->msgcount,\n\t\t\t\tnotmuch_message_get_message_id(msg),\n\t\t\t\tpath));\n\n\tif (ctx->msgcount >= ctx->hdrmax) {\n\t\tdprint(2, (debugfile, \"nm: allocate mx memory\\n\"));\n\t\tmx_alloc_memory(ctx);\n\t}\n\tif (access(path, F_OK) == 0)\n\t\th = maildir_parse_message(M_MAILDIR, path, 0, NULL);\n\telse {\n\t\t/* maybe moved try find it... */\n\t\tchar *folder = get_folder_from_path(path);\n\n\t\tif (folder) {\n\t\t\tFILE *f = maildir_open_find_message(folder, path, &newpath);\n\t\t\tif (f) {\n\t\t\t\th = maildir_parse_stream(M_MAILDIR, f, newpath, 0, NULL);\n\t\t\t\tfclose(f);\n\n\t\t\t\tdprint(1, (debugfile, \"nm: not up-to-date: %s -> %s\\n\",\n\t\t\t\t\t\t\tpath, newpath));\n\t\t\t}\n\t\t}\n\t\tFREE(&folder);\n\t}\n\n\tif (!h) {\n\t\tdprint(1, (debugfile, \"nm: failed to parse message: %s\\n\", path));\n\t\tgoto done;\n\t}\n\tif (init_header(h, newpath ? newpath : path, msg) != 0) {\n\t\tmutt_free_header(&h);\n\t\tdprint(1, (debugfile, \"nm: failed to append header!\\n\"));\n\t\tgoto done;\n\t}\n\n\th->active = 1;\n\th->index = ctx->msgcount;\n\tctx->size += h->content->length\n\t\t   + h->content->offset\n\t\t   - h->content->hdr_offset;\n\tctx->hdrs[ctx->msgcount] = h;\n\tctx->msgcount++;\n\n\tif (newpath) {\n\t\t/* remember that file has been moved -- nm_sync() will update the DB */\n\t\tstruct nm_hdrdata *hd = (struct nm_hdrdata *) h->data;\n\n\t\tif (hd) {\n\t\t\tdprint(1, (debugfile, \"nm: remember obsolete path: %s\\n\", path));\n\t\t\thd->oldpath = safe_strdup(path);\n\t\t}\n\t}\n\tnm_progress_update(ctx, q);\ndone:\n\tFREE(&newpath);\n}\n\n/*\n * add all the replies to a given messages into the display.\n * Careful, this calls itself recursively to make sure we get\n * everything.\n */\nstatic void append_replies(CONTEXT *ctx,\n\t\t\t   notmuch_query_t *q,\n\t\t\t   notmuch_message_t *top,\n\t\t\t   int dedup)\n{\n\tnotmuch_messages_t *msgs;\n\n\tfor (msgs = notmuch_message_get_replies(top);\n\t     notmuch_messages_valid(msgs);\n\t     notmuch_messages_move_to_next(msgs)) {\n\n\t\tnotmuch_message_t *m = notmuch_messages_get(msgs);\n\t\tappend_message(ctx, q, m, dedup);\n\t\t/* recurse through all the replies to this message too */\n\t\tappend_replies(ctx, q, m, dedup);\n\t\tnotmuch_message_destroy(m);\n\t}\n}\n\n/*\n * add each top level reply in the thread, and then add each\n * reply to the top level replies\n */\nstatic void append_thread(CONTEXT *ctx,\n\t\t\t  notmuch_query_t *q,\n\t\t\t  notmuch_thread_t *thread,\n\t\t\t  int dedup)\n{\n\tnotmuch_messages_t *msgs;\n\n\tfor (msgs = notmuch_thread_get_toplevel_messages(thread);\n\t     notmuch_messages_valid(msgs);\n\t     notmuch_messages_move_to_next(msgs)) {\n\n\t\tnotmuch_message_t *m = notmuch_messages_get(msgs);\n\t\tappend_message(ctx, q, m, dedup);\n\t\tappend_replies(ctx, q, m, dedup);\n\t\tnotmuch_message_destroy(m);\n\t}\n}\n\nstatic void read_mesgs_query(CONTEXT *ctx, notmuch_query_t *q, int dedup)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\tint limit;\n\tnotmuch_messages_t *msgs;\n\n\tif (!data)\n\t\treturn;\n\n\tlimit = get_limit(data);\n\n#if LIBNOTMUCH_CHECK_VERSION(4,3,0)\n\tif (notmuch_query_search_messages_st (q, &msgs) != NOTMUCH_STATUS_SUCCESS)\n\t\treturn;\n#else\n\tmsgs = notmuch_query_search_messages(q);\n#endif\n\n\tfor (; notmuch_messages_valid(msgs) &&\n\t\t(limit == 0 || ctx->msgcount < limit);\n\t     notmuch_messages_move_to_next(msgs)) {\n\n\t\tnotmuch_message_t *m = notmuch_messages_get(msgs);\n\t\tappend_message(ctx, q, m, dedup);\n\t\tnotmuch_message_destroy(m);\n\t}\n}\n\nstatic void read_threads_query(CONTEXT *ctx, notmuch_query_t *q, int dedup, int limit)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\tnotmuch_threads_t *threads;\n\n\tif (!data)\n\t\treturn;\n\n#if LIBNOTMUCH_CHECK_VERSION(4,3,0)\n\tif (notmuch_query_search_threads_st (q, &threads) != NOTMUCH_STATUS_SUCCESS)\n\t\treturn;\n#else\n\tthreads = notmuch_query_search_threads(q);\n#endif\n\n\tfor (; notmuch_threads_valid(threads) &&\n\t\t(limit == 0 || ctx->msgcount < limit);\n\t     notmuch_threads_move_to_next(threads)) {\n\n\t\tnotmuch_thread_t *thread = notmuch_threads_get(threads);\n\t\tappend_thread(ctx, q, thread, dedup);\n\t\tnotmuch_thread_destroy(thread);\n\t}\n}\n\nint nm_read_query(CONTEXT *ctx)\n{\n\tnotmuch_query_t *q;\n\tstruct nm_ctxdata *data;\n\tint rc = -1;\n\n\tif (init_context(ctx) != 0)\n\t\treturn -1;\n\n\tdata = get_ctxdata(ctx);\n\tif (!data)\n\t\treturn -1;\n\n\tdprint(1, (debugfile, \"nm: reading messages...[current count=%d]\\n\",\n\t\t\t\tctx->msgcount));\n\n\tnm_progress_reset(ctx);\n\n\tq = get_query(data, FALSE);\n\tif (q) {\n\t\tswitch(get_query_type(data)) {\n\t\tcase NM_QUERY_TYPE_MESGS:\n\t\t\tread_mesgs_query(ctx, q, 0);\n\t\t\tbreak;\n\t\tcase NM_QUERY_TYPE_THREADS:\n\t\t\tread_threads_query(ctx, q, 0, get_limit(data));\n\t\t\tbreak;\n\t\t}\n\t\tnotmuch_query_destroy(q);\n\t\trc = 0;\n\n\t}\n\n\tif (!is_longrun(data))\n\t\trelease_db(data);\n\n\tctx->mtime = time(NULL);\n\n\tmx_update_context(ctx, ctx->msgcount);\n\tdata->oldmsgcount = 0;\n\n\tdprint(1, (debugfile, \"nm: reading messages... done [rc=%d, count=%d]\\n\",\n\t\t\t\trc, ctx->msgcount));\n\treturn rc;\n}\n\nint nm_read_entire_thread(CONTEXT *ctx, HEADER *h)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\tconst char *id;\n\tchar *qstr = NULL;\n\tnotmuch_query_t *q = NULL;\n\tnotmuch_database_t *db = NULL;\n\tnotmuch_message_t *msg = NULL;\n\tint rc = -1;\n\n\tif (!data)\n\t\treturn -1;\n\tif (!(db = get_db(data, FALSE)) || !(msg = get_nm_message(db, h)))\n\t\tgoto done;\n\n\tdprint(1, (debugfile, \"nm: reading entire-thread messages...[current count=%d]\\n\",\n\t\t\t\tctx->msgcount));\n\n\tnm_progress_reset(ctx);\n\tid = notmuch_message_get_thread_id(msg);\n\tif (!id)\n\t\tgoto done;\n\tappend_str_item(&qstr, \"thread:\", 0);\n\tappend_str_item(&qstr, id, 0);\n\n\tq = notmuch_query_create(db, qstr);\n\tFREE(&qstr);\n\tif (!q)\n\t\tgoto done;\n\tapply_exclude_tags(q);\n\tnotmuch_query_set_sort(q, NOTMUCH_SORT_NEWEST_FIRST);\n\n\tread_threads_query(ctx, q, 1, 0);\n\tctx->mtime = time(NULL);\n\trc = 0;\n\n\tif (ctx->msgcount > data->oldmsgcount)\n\t\tmx_update_context(ctx, ctx->msgcount - data->oldmsgcount);\ndone:\n\tif (q)\n\t\tnotmuch_query_destroy(q);\n\tif (!is_longrun(data))\n\t\trelease_db(data);\n\n\tif (ctx->msgcount == data->oldmsgcount)\n\t\tmutt_message _(\"No more messages in the thread.\");\n\n\tdata->oldmsgcount = 0;\n\tdprint(1, (debugfile, \"nm: reading entire-thread messages... done [rc=%d, count=%d]\\n\",\n\t\t\t\trc, ctx->msgcount));\n\treturn rc;\n}\n\nchar *nm_uri_from_query(CONTEXT *ctx, char *buf, size_t bufsz)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\tchar uri[_POSIX_PATH_MAX + LONG_STRING + 32];\t/* path to DB + query + URI \"decoration\" */\n\n\tif (data)\n\t\tsnprintf(uri, sizeof(uri), \"notmuch://%s?query=%s\",\n\t\t\t get_db_filename(data), buf);\n\telse if (NotmuchDefaultUri)\n\t\tsnprintf(uri, sizeof(uri), \"%s?query=%s\", NotmuchDefaultUri, buf);\n\telse if (Maildir)\n\t\tsnprintf(uri, sizeof(uri), \"notmuch://%s?query=%s\", Maildir, buf);\n\telse\n\t\treturn NULL;\n\n\tstrncpy(buf, uri, bufsz);\n\tbuf[bufsz - 1] = '\\0';\n\n\tdprint(1, (debugfile, \"nm: uri from query '%s'\\n\", buf));\n\treturn buf;\n}\n\n/*\n * returns message from notmuch database\n */\nstatic notmuch_message_t *get_nm_message(notmuch_database_t *db, HEADER *hdr)\n{\n\tnotmuch_message_t *msg = NULL;\n\tchar *id = nm_header_get_id(hdr);\n\n\tdprint(2, (debugfile, \"nm: find message (%s)\\n\", id));\n\n\tif (id && db)\n\t\tnotmuch_database_find_message(db, id, &msg);\n\n\treturn msg;\n}\n\nstatic int update_tags(notmuch_message_t *msg, const char *tags)\n{\n\tchar *tag = NULL, *end = NULL, *p;\n\tchar *buf = safe_strdup(tags);\n\n\tif (!buf)\n\t\treturn -1;\n\n\tnotmuch_message_freeze(msg);\n\n\tfor (p = buf; p && *p; p++) {\n\t\tif (!tag && isspace(*p))\n\t\t\tcontinue;\n\t\tif (!tag)\n\t\t\ttag = p;\t\t/* begin of the tag */\n\t\tif (*p == ',' || *p == ' ')\n\t\t\tend = p;\t\t/* terminate the tag */\n\t\telse if (*(p + 1) == '\\0')\n\t\t\tend = p + 1;\t\t/* end of optstr */\n\t\tif (!tag || !end)\n\t\t\tcontinue;\n\t\tif (tag >= end)\n\t\t\tbreak;\n\n\t\t*end = '\\0';\n\n\t\tif (*tag == '-') {\n\t\t\tdprint(1, (debugfile, \"nm: remove tag: '%s'\\n\", tag + 1));\n\t\t\tnotmuch_message_remove_tag(msg, tag + 1);\n\t\t} else {\n\t\t\tdprint(1, (debugfile, \"nm: add tag: '%s'\\n\", *tag == '+' ? tag + 1 : tag));\n\t\t\tnotmuch_message_add_tag(msg, *tag == '+' ? tag + 1 : tag);\n\t\t}\n\t\tend = tag = NULL;\n\t}\n\n\tnotmuch_message_thaw(msg);\n\tFREE(&buf);\n\treturn 0;\n}\n\nint nm_modify_message_tags(CONTEXT *ctx, HEADER *hdr, char *buf)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\tnotmuch_database_t *db = NULL;\n\tnotmuch_message_t *msg = NULL;\n\tint rc = -1;\n\n\tif (!buf || !*buf || !data)\n\t\treturn -1;\n\n\tif (!(db = get_db(data, TRUE)) || !(msg = get_nm_message(db, hdr)))\n\t\tgoto done;\n\n\tdprint(1, (debugfile, \"nm: tags modify: '%s'\\n\", buf));\n\n\tupdate_tags(msg, buf);\n\tupdate_header_tags(hdr, msg);\n\tmutt_set_header_color(ctx, hdr);\n\n\trc = 0;\n\thdr->changed = TRUE;\ndone:\n\tif (!is_longrun(data))\n\t\trelease_db(data);\n\tif (hdr->changed)\n\t\tctx->mtime = time(NULL);\n\tdprint(1, (debugfile, \"nm: tags modify done [rc=%d]\\n\", rc));\n\treturn rc;\n}\n\nstatic int rename_maildir_filename(const char *old, char *newpath, size_t newsz, HEADER *h)\n{\n\tchar filename[_POSIX_PATH_MAX];\n\tchar suffix[_POSIX_PATH_MAX];\n\tchar folder[_POSIX_PATH_MAX];\n\tchar *p;\n\n\tstrfcpy(folder, old, sizeof(folder));\n\tp = strrchr(folder, '/');\n\tif (p)\n\t\t*p = '\\0';\n\n\tp++;\n\tstrfcpy(filename, p, sizeof(filename));\n\n\t/* remove (new,cur,...) from folder path */\n\tp = strrchr(folder, '/');\n\tif (p)\n\t\t*p = '\\0';\n\n\t/* remove old flags from filename */\n\tif ((p = strchr(filename, ':')))\n\t\t*p = '\\0';\n\n\t/* compose new flags */\n\tmaildir_flags(suffix, sizeof(suffix), h);\n\n\tsnprintf(newpath, newsz, \"%s/%s/%s%s\",\n\t\t\tfolder,\n\t\t\t(h->read || h->old) ? \"cur\" : \"new\",\n\t\t\tfilename,\n\t\t\tsuffix);\n\n\tif (strcmp(old, newpath) == 0)\n\t\treturn 1;\n\n\tif (rename(old, newpath) != 0) {\n\t\tdprint(1, (debugfile, \"nm: rename(2) failed %s -> %s\\n\", old, newpath));\n\t\treturn -1;\n\t}\n\n\treturn 0;\n}\n\nstatic int remove_filename(struct nm_ctxdata *data, const char *path)\n{\n\tnotmuch_status_t st;\n\tnotmuch_filenames_t *ls;\n\tnotmuch_message_t *msg = NULL;\n\tnotmuch_database_t *db = get_db(data, TRUE);\n\tint trans;\n\n\tdprint(2, (debugfile, \"nm: remove filename '%s'\\n\", path));\n\n\tif (!db)\n\t\treturn -1;\n\tst = notmuch_database_find_message_by_filename(db, path, &msg);\n\tif (st || !msg)\n\t\treturn -1;\n\ttrans = db_trans_begin(data);\n\tif (trans < 0)\n\t\treturn -1;\n\n\t/*\n\t * note that unlink() is probably unnecessary here, it's already removed\n\t * by mh_sync_mailbox_message(), but for sure...\n\t */\n\tst = notmuch_database_remove_message(db, path);\n\tswitch (st) {\n\tcase NOTMUCH_STATUS_SUCCESS:\n\t\tdprint(2, (debugfile, \"nm: remove success, call unlink\\n\"));\n\t\tunlink(path);\n\t\tbreak;\n\tcase NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID:\n\t\tdprint(2, (debugfile, \"nm: remove success (duplicate), call unlink\\n\"));\n\t\tunlink(path);\n\t\tfor (ls = notmuch_message_get_filenames(msg);\n\t\t     ls && notmuch_filenames_valid(ls);\n\t\t     notmuch_filenames_move_to_next(ls)) {\n\n\t\t\tpath = notmuch_filenames_get(ls);\n\n\t\t\tdprint(2, (debugfile, \"nm: remove duplicate: '%s'\\n\", path));\n\t\t\tunlink(path);\n\t\t\tnotmuch_database_remove_message(db, path);\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tdprint(1, (debugfile, \"nm: failed to remove '%s' [st=%d]\\n\", path, (int) st));\n\t\tbreak;\n\t}\n\n\tnotmuch_message_destroy(msg);\n\tif (trans)\n\t\tdb_trans_end(data);\n\treturn 0;\n}\n\nstatic int rename_filename(struct nm_ctxdata *data,\n\t\t\tconst char *old, const char *new, HEADER *h)\n{\n\tint rc = -1;\n\tnotmuch_status_t st;\n\tnotmuch_filenames_t *ls;\n\tnotmuch_message_t *msg;\n\tnotmuch_database_t *db = get_db(data, TRUE);\n\tint trans;\n\n\tif (!db || !new || !old || access(new, F_OK) != 0)\n\t\treturn -1;\n\n\tdprint(1, (debugfile, \"nm: rename filename, %s -> %s\\n\", old, new));\n\ttrans = db_trans_begin(data);\n\tif (trans < 0)\n\t\treturn -1;\n\n\tdprint(2, (debugfile, \"nm: rename: add '%s'\\n\", new));\n\tst = notmuch_database_add_message(db, new, &msg);\n\n\tif (st != NOTMUCH_STATUS_SUCCESS &&\n\t    st != NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID) {\n\t\tdprint(1, (debugfile, \"nm: failed to add '%s' [st=%d]\\n\", new, (int) st));\n\t\tgoto done;\n\t}\n\n\tdprint(2, (debugfile, \"nm: rename: rem '%s'\\n\", old));\n\tst = notmuch_database_remove_message(db, old);\n\tswitch (st) {\n\tcase NOTMUCH_STATUS_SUCCESS:\n\t\tbreak;\n\tcase NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID:\n\t\tdprint(2, (debugfile, \"nm: rename: syncing duplicate filename\\n\"));\n\t\tnotmuch_message_destroy(msg);\n\t\tmsg = NULL;\n\t\tnotmuch_database_find_message_by_filename(db, new, &msg);\n\n\t\tfor (ls = notmuch_message_get_filenames(msg);\n\t\t     msg && ls && notmuch_filenames_valid(ls);\n\t\t     notmuch_filenames_move_to_next(ls)) {\n\n\t\t\tconst char *path = notmuch_filenames_get(ls);\n\t\t\tchar newpath[_POSIX_PATH_MAX];\n\n\t\t\tif (strcmp(new, path) == 0)\n\t\t\t\tcontinue;\n\n\t\t\tdprint(2, (debugfile, \"nm: rename: syncing duplicate: %s\\n\", path));\n\n\t\t\tif (rename_maildir_filename(path, newpath, sizeof(newpath), h) == 0) {\n\t\t\t\tdprint(2, (debugfile, \"nm: rename dup %s -> %s\\n\", path, newpath));\n\t\t\t\tnotmuch_database_remove_message(db, path);\n\t\t\t\tnotmuch_database_add_message(db, newpath, NULL);\n\t\t\t}\n\t\t}\n\t\tnotmuch_message_destroy(msg);\n\t\tmsg = NULL;\n\t\tnotmuch_database_find_message_by_filename(db, new, &msg);\n\t\tst = NOTMUCH_STATUS_SUCCESS;\n\t\tbreak;\n\tdefault:\n\t\tdprint(1, (debugfile, \"nm: failed to remove '%s' [st=%d]\\n\",\n\t\t\t\t\told, (int) st));\n\t\tbreak;\n\t}\n\n\tif (st == NOTMUCH_STATUS_SUCCESS && h && msg) {\n\t\tnotmuch_message_maildir_flags_to_tags(msg);\n\t\tupdate_header_tags(h, msg);\n\t\tupdate_tags(msg, nm_header_get_tags(h));\n\t}\n\n\trc = 0;\ndone:\n\tif (msg)\n\t\tnotmuch_message_destroy(msg);\n\tif (trans)\n\t\tdb_trans_end(data);\n\treturn rc;\n}\n\nint nm_update_filename(CONTEXT *ctx, const char *old, const char *new, HEADER *h)\n{\n\tchar buf[PATH_MAX];\n\tint rc;\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\n\tif (!data || !new)\n\t\treturn -1;\n\n\tif (!old && h && h->data) {\n\t\tnm_header_get_fullpath(h, buf, sizeof(buf));\n\t\told = buf;\n\t}\n\n\trc = rename_filename(data, old, new, h);\n\n\tif (!is_longrun(data))\n\t\trelease_db(data);\n\tctx->mtime = time(NULL);\n\treturn rc;\n}\n\nint nm_sync(CONTEXT *ctx, int *index_hint)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\tint i, rc = 0;\n\tchar msgbuf[STRING];\n\tprogress_t progress;\n\tchar *uri = ctx->path;\n\tint changed = 0;\n\n\tif (!data)\n\t\treturn -1;\n\n\tdprint(1, (debugfile, \"nm: sync start ...\\n\"));\n\n\tif (!ctx->quiet) {\n\t\t/* all is in this function so we don't use data->progress here */\n\t\tsnprintf(msgbuf, sizeof (msgbuf), _(\"Writing %s...\"), ctx->path);\n\t\tmutt_progress_init(&progress, msgbuf, M_PROGRESS_MSG,\n\t\t\t\t   WriteInc, ctx->msgcount);\n\t}\n\n\tfor (i = 0; i < ctx->msgcount; i++) {\n\t\tchar old[_POSIX_PATH_MAX], new[_POSIX_PATH_MAX];\n\t\tHEADER *h = ctx->hdrs[i];\n\t\tstruct nm_hdrdata *hd = h->data;\n\n\t\tif (!ctx->quiet)\n\t\t\tmutt_progress_update(&progress, i, -1);\n\n\t\t*old = *new = '\\0';\n\n\t\tif (hd->oldpath) {\n\t\t\tstrncpy(old, hd->oldpath, sizeof(old));\n\t\t\told[sizeof(old) - 1] = '\\0';\n\t\t\tdprint(2, (debugfile, \"nm: fixing obsolete path '%s'\\n\", old));\n\t\t} else\n\t\t\tnm_header_get_fullpath(h, old, sizeof(old));\n\n\t\tctx->path = hd->folder;\n\t\tctx->magic = hd->magic;\n#if USE_HCACHE\n\t\trc = mh_sync_mailbox_message(ctx, i, NULL);\n#else\n\t\trc = mh_sync_mailbox_message(ctx, i);\n#endif\n\t\tctx->path = uri;\n\t\tctx->magic = M_NOTMUCH;\n\n\t\tif (rc)\n\t\t\tbreak;\n\n\t\tif (!h->deleted)\n\t\t\tnm_header_get_fullpath(h, new, sizeof(new));\n\n\t\tif (h->deleted || strcmp(old, new) != 0) {\n\t\t\tif (h->deleted && remove_filename(data, old) == 0)\n\t\t\t\tchanged = 1;\n\t\t\telse if (*new && *old && rename_filename(data, old, new, h) == 0)\n\t\t\t\tchanged = 1;\n\t\t}\n\n\t\tFREE(&hd->oldpath);\n\t}\n\n\tctx->path = uri;\n\tctx->magic = M_NOTMUCH;\n\n\tif (!is_longrun(data))\n\t\trelease_db(data);\n\tif (changed)\n\t\tctx->mtime = time(NULL);\n\n\tdprint(1, (debugfile, \"nm: .... sync done [rc=%d]\\n\", rc));\n\treturn rc;\n}\n\nstatic unsigned count_query(notmuch_database_t *db, const char *qstr)\n{\n\tunsigned res = 0;\n\tnotmuch_query_t *q = notmuch_query_create(db, qstr);\n\n\tif (q) {\n\t\tapply_exclude_tags(q);\n#if LIBNOTMUCH_CHECK_VERSION(4,3,0)\n\t\tif (notmuch_query_count_messages_st (q, &res) != NOTMUCH_STATUS_SUCCESS)\n\t\t\tres = 0;\t/* may not be defined on error */\n#else\n\t\tres = notmuch_query_count_messages(q);\n#endif\n\t\tnotmuch_query_destroy(q);\n\t\tdprint(1, (debugfile, \"nm: count '%s', result=%d\\n\", qstr, res));\n\t}\n\treturn res;\n}\n\nint nm_nonctx_get_count(char *path, int *all, int *new)\n{\n\tstruct uri_tag *query_items = NULL, *item;\n\tchar *db_filename = NULL, *db_query = NULL;\n\tnotmuch_database_t *db = NULL;\n\tint rc = -1, dflt = 0;\n\n\tdprint(1, (debugfile, \"nm: count\\n\"));\n\n\tif (url_parse_query(path, &db_filename, &query_items)) {\n\t\tmutt_error(_(\"failed to parse notmuch uri: %s\"), path);\n\t\tgoto done;\n\t}\n\tif (!query_items)\n\t\tgoto done;\n\n\tfor (item = query_items; item; item = item->next) {\n\t\tif (item->value && strcmp(item->name, \"query\") == 0) {\n\t\t\tdb_query = item->value;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!db_query)\n\t\tgoto done;\n\n\tif (!db_filename) {\n\t\tif (NotmuchDefaultUri) {\n\t\t\tif (strncmp(NotmuchDefaultUri, \"notmuch://\", 10) == 0)\n\t\t\t\tdb_filename = NotmuchDefaultUri + 10;\n\t\t\telse\n\t\t\t\tdb_filename = NotmuchDefaultUri;\n\t\t} else if (Maildir)\n\t\t\tdb_filename = Maildir;\n\t\tdflt = 1;\n\t}\n\n\t/* don't be verbose about connection, as we're called from\n\t * sidebar/buffy very often */\n\tdb = do_database_open(db_filename, FALSE, FALSE);\n\tif (!db)\n\t\tgoto done;\n\n\t/* all emails */\n\tif (all)\n\t\t*all = count_query(db, db_query);\n\n\t/* new messages */\n\tif (new) {\n\t\tchar *qstr;\n\n\t\tsafe_asprintf(&qstr, \"( %s ) tag:%s\",\n\t\t\t\tdb_query, NotmuchUnreadTag);\n\t\t*new = count_query(db, qstr);\n\t\tFREE(&qstr);\n\t}\n\n\trc = 0;\ndone:\n\tif (db) {\n#ifdef NOTMUCH_API_3\n\t\tnotmuch_database_destroy(db);\n#else\n\t\tnotmuch_database_close(db);\n#endif\n\t\tdprint(1, (debugfile, \"nm: count close DB\\n\"));\n\t}\n\tif (!dflt)\n\t\tFREE(&db_filename);\n\turl_free_tags(query_items);\n\n\tdprint(1, (debugfile, \"nm: count done [rc=%d]\\n\", rc));\n\treturn rc;\n}\n\nchar *nm_get_description(CONTEXT *ctx)\n{\n\tBUFFY *p;\n\n\tfor (p = VirtIncoming; p; p = p->next)\n\t\tif (p->path && p->desc && strcmp(p->path, ctx->path) == 0)\n\t\t\treturn p->desc;\n\n\treturn NULL;\n}\n\nint nm_description_to_path(const char *desc, char *buf, size_t bufsz)\n{\n\tBUFFY *p;\n\n\tif (!desc || !buf || !bufsz)\n\t\treturn -EINVAL;\n\n\tfor (p = VirtIncoming; p; p = p->next)\n\t\tif (p->path && p->desc && strcmp(desc, p->desc) == 0) {\n\t\t\tstrncpy(buf, p->path, bufsz);\n\t\t\tbuf[bufsz - 1] = '\\0';\n\t\t\treturn 0;\n\t\t}\n\n\treturn -1;\n}\n\n/*\n * returns header from mutt context\n */\nstatic HEADER *get_mutt_header(CONTEXT *ctx, notmuch_message_t *msg)\n{\n\tchar *mid;\n\tconst char *id;\n\tHEADER *h;\n\n\tif (!ctx || !msg)\n\t\treturn NULL;\n\n\tid = notmuch_message_get_message_id(msg);\n\tif (!id)\n\t\treturn NULL;\n\n\tdprint(2, (debugfile, \"nm: mutt header, id='%s'\\n\", id));\n\n\tif (!ctx->id_hash) {\n\t\tdprint(2, (debugfile, \"nm: init hash\\n\"));\n\t\tctx->id_hash = mutt_make_id_hash(ctx);\n\t\tif (!ctx->id_hash)\n\t\t\treturn NULL;\n\t}\n\n\tmid = nm2mutt_message_id( id );\n\tdprint(2, (debugfile, \"nm: mutt id='%s'\\n\", mid));\n\n\th = hash_find(ctx->id_hash, mid);\n\tFREE(&mid);\n\treturn h;\n}\n\nint nm_check_database(CONTEXT *ctx, int *index_hint)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\ttime_t mtime = 0;\n\tnotmuch_query_t *q;\n\tnotmuch_messages_t *msgs;\n\tint i, limit, occult = 0, new_flags = 0;\n\n\tif (!data || get_database_mtime(data, &mtime) != 0)\n\t\treturn -1;\n\n\tif (ctx->mtime >= mtime) {\n\t\tdprint(2, (debugfile, \"nm: check unnecessary (db=%d ctx=%d)\\n\", mtime, ctx->mtime));\n\t\treturn 0;\n\t}\n\n\tdprint(1, (debugfile, \"nm: checking (db=%d ctx=%d)\\n\", mtime, ctx->mtime));\n\n\tq = get_query(data, FALSE);\n\tif (!q)\n\t\tgoto done;\n\n\tdprint(1, (debugfile, \"nm: start checking (count=%d)\\n\", ctx->msgcount));\n\tdata->oldmsgcount = ctx->msgcount;\n\tdata->noprogress = 1;\n\n\tfor (i = 0; i < ctx->msgcount; i++)\n\t\tctx->hdrs[i]->active = 0;\n\n\tlimit = get_limit(data);\n\n#if LIBNOTMUCH_CHECK_VERSION(4,3,0)\n\tif (notmuch_query_search_messages_st (q, &msgs) != NOTMUCH_STATUS_SUCCESS)\n\t\tgoto done;\n#else\n\tmsgs = notmuch_query_search_messages(q);\n#endif\n\n\tfor (i = 0;\n\t     notmuch_messages_valid(msgs) && (limit == 0 || i < limit);\n\t     notmuch_messages_move_to_next(msgs), i++) {\n\n\t\tchar old[_POSIX_PATH_MAX];\n\t\tconst char *new;\n\n\t\tnotmuch_message_t *m = notmuch_messages_get(msgs);\n\t\tHEADER *h = get_mutt_header(ctx, m);\n\n\t\tif (!h) {\n\t\t\t/* new email */\n\t\t\tappend_message(ctx, NULL, m, 0);\n\t\t\tnotmuch_message_destroy(m);\n\t\t\tcontinue;\n\t\t}\n\n\t\t/* message already exists, merge flags */\n\t\th->active = 1;\n\n\t\t/* check to see if the message has moved to a different\n\t\t * subdirectory.  If so, update the associated filename.\n\t\t */\n\t\tnew = get_message_last_filename(m);\n\t\tnm_header_get_fullpath(h, old, sizeof(old));\n\n\t\tif (mutt_strcmp(old, new) != 0)\n\t\t\tupdate_message_path(h, new);\n\n\t\tif (!h->changed) {\n\t\t\t/* if the user hasn't modified the flags on\n\t\t\t * this message, update the flags we just\n\t\t\t * detected.\n\t\t\t */\n\t\t\tHEADER tmp;\n\t\t\tmemset(&tmp, 0, sizeof(tmp));\n\t\t\tmaildir_parse_flags(&tmp, new);\n\t\t\tmaildir_update_flags(ctx, h, &tmp);\n\t\t}\n\n\t\tif (update_header_tags(h, m) == 0)\n\t\t\tnew_flags++;\n\n\t\tnotmuch_message_destroy(m);\n\t}\n\n\tfor (i = 0; i < ctx->msgcount; i++) {\n\t\tif (ctx->hdrs[i]->active == 0) {\n\t\t\toccult = 1;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (ctx->msgcount > data->oldmsgcount)\n\t\tmx_update_context(ctx, ctx->msgcount - data->oldmsgcount);\ndone:\n\tif (q)\n\t\tnotmuch_query_destroy(q);\n\n\tif (!is_longrun(data))\n\t\trelease_db(data);\n\n\tctx->mtime = time(NULL);\n\n\tdprint(1, (debugfile, \"nm: ... check done [count=%d, new_flags=%d, occult=%d]\\n\",\n\t\t\t\tctx->msgcount, new_flags, occult));\n\n\treturn occult ? M_REOPENED :\n\t       ctx->msgcount > data->oldmsgcount ? M_NEW_MAIL :\n\t       new_flags ? M_FLAGS : 0;\n}\n\nint nm_record_message(CONTEXT *ctx, char *path, HEADER *h)\n{\n\tnotmuch_database_t *db;\n\tnotmuch_status_t st;\n\tnotmuch_message_t *msg = NULL;\n\tint rc = -1, trans;\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\n\tif (!path || !data || access(path, F_OK) != 0)\n\t\treturn 0;\n\tdb = get_db(data, TRUE);\n\tif (!db)\n\t\treturn -1;\n\n\tdprint(1, (debugfile, \"nm: record message: %s\\n\", path));\n\ttrans = db_trans_begin(data);\n\tif (trans < 0)\n\t\tgoto done;\n\n\tst = notmuch_database_add_message(db, path, &msg);\n\n\tif (st != NOTMUCH_STATUS_SUCCESS &&\n\t    st != NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID) {\n\t\tdprint(1, (debugfile, \"nm: failed to add '%s' [st=%d]\\n\", path, (int) st));\n\t\tgoto done;\n\t}\n\n\tif (st == NOTMUCH_STATUS_SUCCESS && msg) {\n\t\tnotmuch_message_maildir_flags_to_tags(msg);\n\t\tif (h)\n\t\t\tupdate_tags(msg, nm_header_get_tags(h));\n\t\tif (NotmuchRecordTags)\n\t\t\tupdate_tags(msg, NotmuchRecordTags);\n\t}\n\n\trc = 0;\ndone:\n\tif (msg)\n\t\tnotmuch_message_destroy(msg);\n\tif (trans == 1)\n\t\tdb_trans_end(data);\n\tif (!is_longrun(data))\n\t\trelease_db(data);\n\treturn rc;\n}\n\n/*\n * Fill a list with all notmuch tags.\n *\n * If tag_list is NULL, just count the tags.\n */\nint nm_get_all_tags(CONTEXT *ctx, char **tag_list, int *tag_count)\n{\n\tstruct nm_ctxdata *data = get_ctxdata(ctx);\n\tnotmuch_database_t *db = NULL;\n\tnotmuch_tags_t *tags = NULL;\n\tint rc = -1;\n\n\tif (!data)\n\t\treturn -1;\n\n\tif (!(db = get_db(data, FALSE)) ||\n\t\t\t!(tags = notmuch_database_get_all_tags(db)))\n\t\tgoto done;\n\n\t*tag_count = 0;\n\tdprint(1, (debugfile, \"nm: get all tags\\n\"));\n\n\twhile (notmuch_tags_valid(tags)) {\n\t\tif (tag_list != NULL) {\n\t\t\ttag_list[*tag_count] = safe_strdup(notmuch_tags_get(tags));\n\t\t}\n\t\t(*tag_count)++;\n\t\tnotmuch_tags_move_to_next(tags);\n\t}\n\n\trc = 0;\ndone:\n\tif (tags)\n\t\tnotmuch_tags_destroy(tags);\n\n\tif (!is_longrun(data))\n\t\trelease_db(data);\n\n\tdprint(1, (debugfile, \"nm: get all tags done [rc=%d tag_count=%u]\\n\", rc,\n\t\t\t\t\t\t *tag_count));\n\treturn rc;\n}\n"
  },
  {
    "path": "mutt_notmuch.h",
    "content": "/*\n * Copyright (C) 2011 Karel Zak <kzak@redhat.com>\n */\n#ifndef _MUTT_NOTMUCH_H_\n#define _MUTT_NOTMUCH_H_ 1\n\nint nm_read_query(CONTEXT *ctx);\nint nm_read_entire_thread(CONTEXT *ctx, HEADER *h);\n\nint nm_sync(CONTEXT * ctx, int *index_hint);\nint nm_check_database(CONTEXT * ctx, int *index_hint);\nchar *nm_header_get_folder(HEADER *h);\nint nm_header_get_magic(HEADER *h);\nchar *nm_header_get_fullpath(HEADER *h, char *buf, size_t bufsz);\nint nm_update_filename(CONTEXT *ctx, const char *o, const char *n, HEADER *h);\nchar *nm_uri_from_query(CONTEXT *ctx, char *buf, size_t bufsz);\nint nm_modify_message_tags(CONTEXT *ctx, HEADER *hdr, char *tags);\n\nvoid nm_longrun_init(CONTEXT *cxt, int writable);\nvoid nm_longrun_done(CONTEXT *cxt);\n\nchar *nm_get_description(CONTEXT *ctx);\nint nm_description_to_path(const char *desc, char *buf, size_t bufsz);\n\nint nm_record_message(CONTEXT *ctx, char *path, HEADER *h);\n\nvoid nm_debug_check(CONTEXT *ctx);\nint nm_get_all_tags(CONTEXT *ctx, char **tag_list, int *tag_count);\n\n/*\n * functions usable outside notmuch CONTEXT\n */\nint nm_nonctx_get_count(char *path, int *all, int *new);\n\nchar *nm_header_get_tag_transformed(char *tag, HEADER *h);\nchar *nm_header_get_tags_transformed(HEADER *h);\nchar *nm_header_get_tags(HEADER *h);\n\n#endif /* _MUTT_NOTMUCH_H_ */\n"
  },
  {
    "path": "mutt_regex.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/*\n * A (more) generic interface to regular expression matching\n */\n\n#ifndef MUTT_REGEX_H\n#define MUTT_REGEX_H\n\n#ifdef USE_GNU_REGEX\n#include \"_regex.h\"\n#else\n#include <regex.h>\n#endif\n\n/* this is a non-standard option supported by Solaris 2.5.x which allows\n * patterns of the form \\<...\\>\n */\n#ifndef REG_WORDS\n#define REG_WORDS 0\n#endif\n\n#define REGCOMP(X,Y,Z) regcomp(X, Y, REG_WORDS|REG_EXTENDED|(Z))\n#define REGEXEC(X,Y) regexec(&X, Y, (size_t)0, (regmatch_t *)0, (int)0)\n\ntypedef struct\n{\n  char *pattern;\t/* printable version */\n  regex_t *rx; \t\t/* compiled expression */\n  int not;\t\t/* do not match */\n} REGEXP;\n\nWHERE REGEXP Mask;\nWHERE REGEXP QuoteRegexp;\nWHERE REGEXP ReplyRegexp;\nWHERE REGEXP Smileys;\nWHERE REGEXP GecosMask;\n\n#endif /* MUTT_REGEX_H */\n"
  },
  {
    "path": "mutt_sasl.c",
    "content": "/*\n * Copyright (C) 2000-2008,2012,2014 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* common SASL helper routines */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"account.h\"\n#include \"mutt_sasl.h\"\n#include \"mutt_socket.h\"\n\n#include <errno.h>\n#include <netdb.h>\n#include <sasl/sasl.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n\nstatic int getnameinfo_err(int ret)\n{\n  int err;\n  dprint (1, (debugfile, \"getnameinfo: \"));\n  switch(ret)\n  {\n     case EAI_AGAIN:\n       dprint (1, (debugfile, \"The name could not be resolved at this time.  Future attempts may succeed.\\n\"));\n       err=SASL_TRYAGAIN;\n       break;\n     case EAI_BADFLAGS:\n       dprint (1, (debugfile, \"The flags had an invalid value.\\n\"));\n       err=SASL_BADPARAM;\n       break;\n     case EAI_FAIL:\n       dprint (1, (debugfile, \"A non-recoverable error occurred.\\n\"));\n       err=SASL_FAIL;\n       break;\n     case EAI_FAMILY:\n       dprint (1, (debugfile, \"The address family was not recognized or the address length was invalid for the specified family.\\n\"));\n       err=SASL_BADPROT;\n       break;\n     case EAI_MEMORY:\n       dprint (1, (debugfile, \"There was a memory allocation failure.\\n\"));\n       err=SASL_NOMEM;\n       break;\n     case EAI_NONAME:\n       dprint (1, (debugfile, \"The name does not resolve for the supplied parameters.  NI_NAMEREQD is set and the host's name cannot be located, or both nodename and servname were null.\\n\"));\n       err=SASL_FAIL; /* no real equivalent */\n       break;\n     case EAI_SYSTEM:\n       dprint (1, (debugfile, \"A system error occurred.  The error code can be found in errno(%d,%s)).\\n\",errno,strerror(errno)));\n       err=SASL_FAIL; /* no real equivalent */\n       break;\n     default:\n       dprint (1, (debugfile, \"Unknown error %d\\n\",ret));\n       err=SASL_FAIL; /* no real equivalent */\n       break;\n  }\n  return err;\n}\n\n/* arbitrary. SASL will probably use a smaller buffer anyway. OTOH it's\n * been a while since I've had access to an SASL server which negotiated\n * a protection buffer. */ \n#define M_SASL_MAXBUF 65536\n\n#define IP_PORT_BUFLEN 1024\n\nstatic sasl_callback_t mutt_sasl_callbacks[5];\n\nstatic int mutt_sasl_start (void);\n\n/* callbacks */\nstatic int mutt_sasl_cb_log (void* context, int priority, const char* message);\nstatic int mutt_sasl_cb_authname (void* context, int id, const char** result,\n  unsigned int* len);\nstatic int mutt_sasl_cb_pass (sasl_conn_t* conn, void* context, int id,\n  sasl_secret_t** psecret);\n\n/* socket wrappers for a SASL security layer */\nstatic int mutt_sasl_conn_open (CONNECTION* conn);\nstatic int mutt_sasl_conn_close (CONNECTION* conn);\nstatic int mutt_sasl_conn_read (CONNECTION* conn, char* buf, size_t len);\nstatic int mutt_sasl_conn_write (CONNECTION* conn, const char* buf,\n  size_t count);\nstatic int mutt_sasl_conn_poll (CONNECTION* conn);\n\n/* utility function, stolen from sasl2 sample code */\nstatic int iptostring(const struct sockaddr *addr, socklen_t addrlen,\n                      char *out, unsigned outlen)\n{\n  char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV];\n  int ret;\n\n  if (!addr || !out)\n    return SASL_BADPARAM;\n\n  ret = getnameinfo(addr, addrlen, hbuf, sizeof(hbuf), pbuf, sizeof(pbuf),\n                    NI_NUMERICHOST |\n#ifdef NI_WITHSCOPEID\n                    NI_WITHSCOPEID |\n#endif\n                    NI_NUMERICSERV);\n  if (ret)\n    return getnameinfo_err(ret);\n\n  if (outlen < strlen(hbuf) + strlen(pbuf) + 2)\n    return SASL_BUFOVER;\n\n  snprintf(out, outlen, \"%s;%s\", hbuf, pbuf);\n\n  return SASL_OK;\n}\n\n/* mutt_sasl_start: called before doing a SASL exchange - initialises library\n *   (if necessary). */\nint mutt_sasl_start (void)\n{\n  static unsigned char sasl_init = 0;\n\n  static sasl_callback_t callbacks[2];\n  int rc;\n\n  if (sasl_init)\n    return SASL_OK;\n\n  /* set up default logging callback */\n  callbacks[0].id = SASL_CB_LOG;\n  callbacks[0].proc = (int (*)(void))mutt_sasl_cb_log;\n  callbacks[0].context = NULL;\n\n  callbacks[1].id = SASL_CB_LIST_END;\n  callbacks[1].proc = NULL;\n  callbacks[1].context = NULL;\n\n  rc = sasl_client_init (callbacks);\n\n  if (rc != SASL_OK)\n  {\n    dprint (1, (debugfile, \"mutt_sasl_start: libsasl initialisation failed.\\n\"));\n    return SASL_FAIL;\n  }\n\n  sasl_init = 1;\n\n  return SASL_OK;\n}\n\n/* mutt_sasl_client_new: wrapper for sasl_client_new which also sets various\n * security properties. If this turns out to be fine for POP too we can\n * probably stop exporting mutt_sasl_get_callbacks(). */\nint mutt_sasl_client_new (CONNECTION* conn, sasl_conn_t** saslconn)\n{\n  sasl_security_properties_t secprops;\n  struct sockaddr_storage local, remote;\n  socklen_t size;\n  char iplocalport[IP_PORT_BUFLEN], ipremoteport[IP_PORT_BUFLEN];\n  char* plp = NULL;\n  char* prp = NULL;\n  const char* service;\n  int rc;\n\n  if (mutt_sasl_start () != SASL_OK)\n    return -1;\n\n  switch (conn->account.type)\n  {\n    case M_ACCT_TYPE_IMAP:\n      service = \"imap\";\n      break;\n    case M_ACCT_TYPE_POP:\n      service = \"pop\";\n      break;\n    case M_ACCT_TYPE_SMTP:\n      service = \"smtp\";\n      break;\n    default:\n      mutt_error (_(\"Unknown SASL profile\"));\n      return -1;\n  }\n\n  size = sizeof (local);\n  if (!getsockname (conn->fd, (struct sockaddr *)&local, &size)) {\n    if (iptostring((struct sockaddr *)&local, size, iplocalport,\n                   IP_PORT_BUFLEN) == SASL_OK)\n      plp = iplocalport;\n    else\n      dprint (2, (debugfile, \"SASL failed to parse local IP address\\n\"));\n  }\n  else\n    dprint (2, (debugfile, \"SASL failed to get local IP address\\n\"));\n  \n  size = sizeof (remote);\n  if (!getpeername (conn->fd, (struct sockaddr *)&remote, &size)){\n    if (iptostring((struct sockaddr *)&remote, size, ipremoteport,\n                   IP_PORT_BUFLEN) == SASL_OK)\n      prp = ipremoteport;\n    else\n      dprint (2, (debugfile, \"SASL failed to parse remote IP address\\n\"));\n  }\n  else\n    dprint (2, (debugfile, \"SASL failed to get remote IP address\\n\"));\n\n  dprint (2, (debugfile, \"SASL local ip: %s, remote ip:%s\\n\", NONULL(plp),\n\t      NONULL(prp)));\n  \n  rc = sasl_client_new (service, conn->account.host, plp, prp,\n    mutt_sasl_get_callbacks (&conn->account), 0, saslconn);\n\n  if (rc != SASL_OK)\n  {\n    mutt_error (_(\"Error allocating SASL connection\"));\n    mutt_sleep (2);\n    return -1;\n  }\n\n  memset (&secprops, 0, sizeof (secprops));\n  /* Work around a casting bug in the SASL krb4 module */\n  secprops.max_ssf = 0x7fff;\n  secprops.maxbufsize = M_SASL_MAXBUF;\n  if (sasl_setprop (*saslconn, SASL_SEC_PROPS, &secprops) != SASL_OK)\n  {\n    mutt_error (_(\"Error setting SASL security properties\"));\n    return -1;\n  }\n\n  if (conn->ssf)\n  {\n    /* I'm not sure this actually has an effect, at least with SASLv2 */\n    dprint (2, (debugfile, \"External SSF: %d\\n\", conn->ssf));\n    if (sasl_setprop (*saslconn, SASL_SSF_EXTERNAL, &(conn->ssf)) != SASL_OK)\n    {\n      mutt_error (_(\"Error setting SASL external security strength\"));\n      return -1;\n    }\n  }\n  if (conn->account.user[0])\n  {\n    dprint (2, (debugfile, \"External authentication name: %s\\n\", conn->account.user));\n    if (sasl_setprop (*saslconn, SASL_AUTH_EXTERNAL, conn->account.user) != SASL_OK)\n    {\n      mutt_error (_(\"Error setting SASL external user name\"));\n      return -1;\n    }\n  }\n\n  return 0;\n}\n\nsasl_callback_t* mutt_sasl_get_callbacks (ACCOUNT* account)\n{\n  sasl_callback_t* callback;\n\n  callback = mutt_sasl_callbacks;\n\n  callback->id = SASL_CB_USER;\n  callback->proc = (int (*)(void))mutt_sasl_cb_authname;\n  callback->context = account;\n  callback++;\n\n  callback->id = SASL_CB_AUTHNAME;\n  callback->proc = (int (*)(void))mutt_sasl_cb_authname;\n  callback->context = account;\n  callback++;\n\n  callback->id = SASL_CB_PASS;\n  callback->proc = (int (*)(void))mutt_sasl_cb_pass;\n  callback->context = account;\n  callback++;\n\n  callback->id = SASL_CB_GETREALM;\n  callback->proc = NULL;\n  callback->context = NULL;\n  callback++;\n\n  callback->id = SASL_CB_LIST_END;\n  callback->proc = NULL;\n  callback->context = NULL;\n\n  return mutt_sasl_callbacks;\n}\n\nint mutt_sasl_interact (sasl_interact_t* interaction)\n{\n  char prompt[SHORT_STRING];\n  char resp[SHORT_STRING];\n\n  while (interaction->id != SASL_CB_LIST_END)\n  {\n    dprint (2, (debugfile, \"mutt_sasl_interact: filling in SASL interaction %ld.\\n\", interaction->id));\n\n    snprintf (prompt, sizeof (prompt), \"%s: \", interaction->prompt);\n    resp[0] = '\\0';\n    if (option (OPTNOCURSES) || mutt_get_field (prompt, resp, sizeof (resp), 0))\n      return SASL_FAIL;\n\n    interaction->len = mutt_strlen (resp)+1;\n    interaction->result = safe_malloc (interaction->len);\n    memcpy ((char *)interaction->result, resp, interaction->len);\n\n    interaction++;\n  }\n\n  return SASL_OK;\n}\n\n/* SASL can stack a protection layer on top of an existing connection.\n * To handle this, we store a saslconn_t in conn->sockdata, and write\n * wrappers which en/decode the read/write stream, then replace sockdata\n * with an embedded copy of the old sockdata and call the underlying\n * functions (which we've also preserved). I thought about trying to make\n * a general stackable connection system, but it seemed like overkill -\n * something is wrong if we have 15 filters on top of a socket. Anyway,\n * anything else which wishes to stack can use the same method. The only\n * disadvantage is we have to write wrappers for all the socket methods,\n * even if we only stack over read and write. Thinking about it, the\n * abstraction problem is that there is more in CONNECTION than there\n * needs to be. Ideally it would have only (void*)data and methods. */\n\n/* mutt_sasl_setup_conn: replace connection methods, sockdata with \n *   SASL wrappers, for protection layers. Also get ssf, as a fastpath\n *   for the read/write methods. */\nvoid mutt_sasl_setup_conn (CONNECTION* conn, sasl_conn_t* saslconn)\n{\n  SASL_DATA* sasldata = (SASL_DATA*) safe_malloc (sizeof (SASL_DATA));\n  /* work around sasl_getprop aliasing issues */\n  const void* tmp;\n\n  sasldata->saslconn = saslconn;\n  /* get ssf so we know whether we have to (en|de)code read/write */\n  sasl_getprop (saslconn, SASL_SSF, &tmp);\n  sasldata->ssf = tmp;\n  dprint (3, (debugfile, \"SASL protection strength: %u\\n\", *sasldata->ssf));\n  /* Add SASL SSF to transport SSF */\n  conn->ssf += *sasldata->ssf;\n  sasl_getprop (saslconn, SASL_MAXOUTBUF, &tmp);\n  sasldata->pbufsize = tmp;\n  dprint (3, (debugfile, \"SASL protection buffer size: %u\\n\", *sasldata->pbufsize));\n\n  /* clear input buffer */\n  sasldata->buf = NULL;\n  sasldata->bpos = 0;\n  sasldata->blen = 0;\n\n  /* preserve old functions */\n  sasldata->sockdata = conn->sockdata;\n  sasldata->msasl_open = conn->conn_open;\n  sasldata->msasl_close = conn->conn_close;\n  sasldata->msasl_read = conn->conn_read;\n  sasldata->msasl_write = conn->conn_write;\n  sasldata->msasl_poll = conn->conn_poll;\n\n  /* and set up new functions */\n  conn->sockdata = sasldata;\n  conn->conn_open = mutt_sasl_conn_open;\n  conn->conn_close = mutt_sasl_conn_close;\n  conn->conn_read = mutt_sasl_conn_read;\n  conn->conn_write = mutt_sasl_conn_write;\n  conn->conn_poll = mutt_sasl_conn_poll;\n}\n\n/* mutt_sasl_cb_log: callback to log SASL messages */\nstatic int mutt_sasl_cb_log (void* context, int priority, const char* message)\n{\n  dprint (priority, (debugfile, \"SASL: %s\\n\", message));\n\n  return SASL_OK;\n}\n\nvoid mutt_sasl_done (void)\n{\n  sasl_done ();\n}\n\n/* mutt_sasl_cb_authname: callback to retrieve authname or user from ACCOUNT */\nstatic int mutt_sasl_cb_authname (void* context, int id, const char** result,\n  unsigned* len)\n{\n  ACCOUNT* account = (ACCOUNT*) context;\n\n  if (!result)\n    return SASL_FAIL;\n\n  *result = NULL;\n  if (len)\n    *len = 0;\n\n  if (!account)\n    return SASL_BADPARAM;\n\n  dprint (2, (debugfile, \"mutt_sasl_cb_authname: getting %s for %s:%u\\n\",\n\t      id == SASL_CB_AUTHNAME ? \"authname\" : \"user\",\n\t      account->host, account->port));\n\n  if (id == SASL_CB_AUTHNAME)\n  {\n    if (mutt_account_getlogin (account))\n      return SASL_FAIL;\n    *result = account->login;\n  }\n  else\n  {\n    if (mutt_account_getuser (account))\n      return SASL_FAIL;\n    *result = account->user;\n  }\n  \n  if (len)\n    *len = strlen (*result);\n\n  return SASL_OK;\n}\n\nstatic int mutt_sasl_cb_pass (sasl_conn_t* conn, void* context, int id,\n  sasl_secret_t** psecret)\n{\n  ACCOUNT* account = (ACCOUNT*) context;\n  int len;\n\n  if (!account || !psecret)\n    return SASL_BADPARAM;\n\n  dprint (2, (debugfile,\n    \"mutt_sasl_cb_pass: getting password for %s@%s:%u\\n\", account->login,\n    account->host, account->port));\n\n  if (mutt_account_getpass (account))\n    return SASL_FAIL;\n\n  len = strlen (account->pass);\n\n  *psecret = (sasl_secret_t*) safe_malloc (sizeof (sasl_secret_t) + len);\n  (*psecret)->len = len;\n  strcpy ((char*)(*psecret)->data, account->pass);\t/* __STRCPY_CHECKED__ */\n\n  return SASL_OK;\n}\n\n/* mutt_sasl_conn_open: empty wrapper for underlying open function. We\n *   don't know in advance that a connection will use SASL, so we\n *   replace conn's methods with sasl methods when authentication\n *   is successful, using mutt_sasl_setup_conn */\nstatic int mutt_sasl_conn_open (CONNECTION* conn)\n{\n  SASL_DATA* sasldata;\n  int rc;\n\n  sasldata = (SASL_DATA*) conn->sockdata;\n  conn->sockdata = sasldata->sockdata;\n  rc = (sasldata->msasl_open) (conn);\n  conn->sockdata = sasldata;\n\n  return rc;\n}\n\n/* mutt_sasl_conn_close: calls underlying close function and disposes of\n *   the sasl_conn_t object, then restores connection to pre-sasl state */\nstatic int mutt_sasl_conn_close (CONNECTION* conn)\n{\n  SASL_DATA* sasldata;\n  int rc;\n\n  sasldata = (SASL_DATA*) conn->sockdata;\n\n  /* restore connection's underlying methods */\n  conn->sockdata = sasldata->sockdata;\n  conn->conn_open = sasldata->msasl_open;\n  conn->conn_close = sasldata->msasl_close;\n  conn->conn_read = sasldata->msasl_read;\n  conn->conn_write = sasldata->msasl_write;\n  conn->conn_poll = sasldata->msasl_poll;\n\n  /* release sasl resources */\n  sasl_dispose (&sasldata->saslconn);\n  FREE (&sasldata);\n\n  /* call underlying close */\n  rc = (conn->conn_close) (conn);\n\n  return rc;\n}\n\nstatic int mutt_sasl_conn_read (CONNECTION* conn, char* buf, size_t len)\n{\n  SASL_DATA* sasldata;\n  int rc;\n\n  unsigned int olen;\n\n  sasldata = (SASL_DATA*) conn->sockdata;\n\n  /* if we still have data in our read buffer, copy it into buf */\n  if (sasldata->blen > sasldata->bpos)\n  {\n    olen = (sasldata->blen - sasldata->bpos > len) ? len :\n      sasldata->blen - sasldata->bpos;\n\n    memcpy (buf, sasldata->buf+sasldata->bpos, olen);\n    sasldata->bpos += olen;\n\n    return olen;\n  }\n  \n  conn->sockdata = sasldata->sockdata;\n\n  sasldata->bpos = 0;\n  sasldata->blen = 0;\n\n  /* and decode the result, if necessary */\n  if (*sasldata->ssf)\n  {\n    do\n    {\n      /* call the underlying read function to fill the buffer */\n      rc = (sasldata->msasl_read) (conn, buf, len);\n      if (rc <= 0)\n\tgoto out;\n\n      rc = sasl_decode (sasldata->saslconn, buf, rc, &sasldata->buf,\n        &sasldata->blen);\n      if (rc != SASL_OK)\n      {\n\tdprint (1, (debugfile, \"SASL decode failed: %s\\n\",\n          sasl_errstring (rc, NULL, NULL)));\n\tgoto out;\n      }\n    }\n    while (!sasldata->blen);\n\n    olen = (sasldata->blen - sasldata->bpos > len) ? len :\n      sasldata->blen - sasldata->bpos;\n\n    memcpy (buf, sasldata->buf, olen);\n    sasldata->bpos += olen;\n\n    rc = olen;\n  }\n  else\n    rc = (sasldata->msasl_read) (conn, buf, len);\n\n  out:\n    conn->sockdata = sasldata;\n\n    return rc;\n}\n\nstatic int mutt_sasl_conn_write (CONNECTION* conn, const char* buf,\n  size_t len)\n{\n  SASL_DATA* sasldata;\n  int rc;\n\n  const char *pbuf;\n  unsigned int olen, plen;\n\n  sasldata = (SASL_DATA*) conn->sockdata;\n  conn->sockdata = sasldata->sockdata;\n\n  /* encode data, if necessary */\n  if (*sasldata->ssf)\n  {\n    /* handle data larger than MAXOUTBUF */\n    do\n    {\n      olen = (len > *sasldata->pbufsize) ? *sasldata->pbufsize : len;\n\n      rc = sasl_encode (sasldata->saslconn, buf, olen, &pbuf, &plen);\n      if (rc != SASL_OK)\n      {\n\tdprint (1, (debugfile, \"SASL encoding failed: %s\\n\",\n          sasl_errstring (rc, NULL, NULL)));\n\tgoto fail;\n      }\n\n      rc = (sasldata->msasl_write) (conn, pbuf, plen);\n      if (rc != plen)\n\tgoto fail;\n\n      len -= olen;\n      buf += olen;\n    }\n    while (len > *sasldata->pbufsize);\n  }\n  else\n  /* just write using the underlying socket function */\n    rc = (sasldata->msasl_write) (conn, buf, len);\n  \n  conn->sockdata = sasldata;\n\n  return rc;\n\n fail:\n  conn->sockdata = sasldata;\n  return -1;\n}\n\nstatic int mutt_sasl_conn_poll (CONNECTION* conn)\n{\n  SASL_DATA* sasldata = conn->sockdata;\n  int rc;\n\n  conn->sockdata = sasldata->sockdata;\n  rc = sasldata->msasl_poll (conn);\n  conn->sockdata = sasldata;\n\n  return rc;\n}\n"
  },
  {
    "path": "mutt_sasl.h",
    "content": "/*\n * Copyright (C) 2000-2005,2008 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* common SASL helper routines */\n\n#ifndef _MUTT_SASL_H_\n#define _MUTT_SASL_H_ 1\n\n#include <sasl/sasl.h>\n\n#include \"mutt_socket.h\"\n\nint mutt_sasl_client_new (CONNECTION*, sasl_conn_t**);\nsasl_callback_t* mutt_sasl_get_callbacks (ACCOUNT*);\nint mutt_sasl_interact (sasl_interact_t*);\nvoid mutt_sasl_setup_conn (CONNECTION*, sasl_conn_t*);\nvoid mutt_sasl_done (void);\n\ntypedef struct \n{\n  sasl_conn_t* saslconn;\n  const sasl_ssf_t* ssf;\n  const unsigned int* pbufsize;\n\n  /* read buffer */\n  const char *buf;\n  unsigned int blen;\n  unsigned int bpos;\n\n  /* underlying socket data */\n  void* sockdata;\n  int (*msasl_open) (CONNECTION* conn);\n  int (*msasl_close) (CONNECTION* conn);\n  int (*msasl_read) (CONNECTION* conn, char* buf, size_t len);\n  int (*msasl_write) (CONNECTION* conn, const char* buf, size_t count);\n  int (*msasl_poll) (CONNECTION* conn);\n}\nSASL_DATA;\n\n#endif /* _MUTT_SASL_H_ */\n"
  },
  {
    "path": "mutt_socket.c",
    "content": "/*\n * Copyright (C) 1998,2000 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2006,2008 Brendan Cully <brendan@kublai.com>\n * Copyright (C) 1999-2000 Tommi Komulainen <Tommi.Komulainen@iki.fi>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_socket.h\"\n#include \"mutt_tunnel.h\"\n#if defined(USE_SSL)\n# include \"mutt_ssl.h\"\n#endif\n\n#include \"mutt_idna.h\"\n\n#include <unistd.h>\n#include <netinet/in.h>\n#include <netdb.h>\n#include <stdlib.h>\n#include <fcntl.h>\n#include <sys/types.h>\n#ifdef HAVE_SYS_TIME_H\n#include <sys/time.h>\n#endif\n#include <sys/socket.h>\n#ifdef HAVE_SYS_SELECT_H\n#include <sys/select.h>\n#endif\n#include <string.h>\n#include <errno.h>\n\n/* support for multiple socket connections */\nstatic CONNECTION *Connections = NULL;\n\n/* forward declarations */\nstatic int socket_preconnect (void);\nstatic int socket_connect (int fd, struct sockaddr* sa);\nstatic CONNECTION* socket_new_conn (void);\n\n/* Wrappers */\nint mutt_socket_open (CONNECTION* conn) \n{\n  int rc;\n\n  if (socket_preconnect ())\n    return -1;\n\n  rc = conn->conn_open (conn);\n\n  dprint (2, (debugfile, \"Connected to %s:%d on fd=%d\\n\",\n\t      NONULL (conn->account.host), conn->account.port, conn->fd));\n\n  return rc;\n}\n\nint mutt_socket_close (CONNECTION* conn)\n{\n  int rc = -1;\n\n  if (conn->fd < 0)\n    dprint (1, (debugfile, \"mutt_socket_close: Attempt to close closed connection.\\n\"));\n  else\n    rc = conn->conn_close (conn);\n\n  conn->fd = -1;\n  conn->ssf = 0;\n\n  return rc;\n}\n\nint mutt_socket_read (CONNECTION* conn, char* buf, size_t len)\n{\n  int rc;\n\n  if (conn->fd < 0)\n  {\n    dprint (1, (debugfile, \"mutt_socket_read: attempt to read from closed connection\\n\"));\n    return -1;\n  }\n\n  rc = conn->conn_read (conn, buf, len);\n  /* EOF */\n  if (rc == 0)\n  {\n    mutt_error (_(\"Connection to %s closed\"), conn->account.host);\n    mutt_sleep (2);\n  }\n  if (rc <= 0)\n    mutt_socket_close (conn);\n\n  return rc;\n}\n\nint mutt_socket_write_d (CONNECTION *conn, const char *buf, int len, int dbg)\n{\n  int rc;\n  int sent = 0;\n\n  dprint (dbg, (debugfile,\"%d> %s\", conn->fd, buf));\n\n  if (conn->fd < 0)\n  {\n    dprint (1, (debugfile, \"mutt_socket_write: attempt to write to closed connection\\n\"));\n    return -1;\n  }\n\n  if (len < 0)\n    len = mutt_strlen (buf);\n  \n  while (sent < len)\n  {\n    if ((rc = conn->conn_write (conn, buf + sent, len - sent)) < 0)\n    {\n      dprint (1, (debugfile,\n                  \"mutt_socket_write: error writing (%s), closing socket\\n\",\n                  strerror(errno)));\n      mutt_socket_close (conn);\n\n      return -1;\n    }\n\n    if (rc < len - sent)\n      dprint (3, (debugfile,\n                  \"mutt_socket_write: short write (%d of %d bytes)\\n\", rc,\n                  len - sent));\n    \n    sent += rc;\n  }\n\n  return sent;\n}\n\n/* poll whether reads would block.\n *   Returns: >0 if there is data to read,\n *            0 if a read would block,\n *            -1 if this connection doesn't support polling */\nint mutt_socket_poll (CONNECTION* conn)\n{\n  if (conn->bufpos < conn->available)\n    return conn->available - conn->bufpos;\n\n  if (conn->conn_poll)\n    return conn->conn_poll (conn);\n\n  return -1;\n}\n\n/* simple read buffering to speed things up. */\nint mutt_socket_readchar (CONNECTION *conn, char *c)\n{\n  if (conn->bufpos >= conn->available)\n  {\n    if (conn->fd >= 0)\n      conn->available = conn->conn_read (conn, conn->inbuf, sizeof (conn->inbuf));\n    else\n    {\n      dprint (1, (debugfile, \"mutt_socket_readchar: attempt to read from closed connection.\\n\"));\n      return -1;\n    }\n    conn->bufpos = 0;\n    if (conn->available == 0)\n    {\n      mutt_error (_(\"Connection to %s closed\"), conn->account.host);\n      mutt_sleep (2);\n    }\n    if (conn->available <= 0)\n    {\n      mutt_socket_close (conn);\n      return -1;\n    }\n  }\n  *c = conn->inbuf[conn->bufpos];\n  conn->bufpos++;\n  return 1;\n}\n\nint mutt_socket_readln_d (char* buf, size_t buflen, CONNECTION* conn, int dbg)\n{\n  char ch;\n  int i;\n\n  for (i = 0; i < buflen-1; i++)\n  {\n    if (mutt_socket_readchar (conn, &ch) != 1)\n    {\n      buf[i] = '\\0';\n      return -1;\n    }\n\n    if (ch == '\\n')\n      break;\n    buf[i] = ch;\n  }\n\n  /* strip \\r from \\r\\n termination */\n  if (i && buf[i-1] == '\\r')\n    i--;\n  buf[i] = '\\0';\n\n  dprint (dbg, (debugfile, \"%d< %s\\n\", conn->fd, buf));\n  \n  /* number of bytes read, not strlen */\n  return i + 1;\n}\n\nCONNECTION* mutt_socket_head (void)\n{\n  return Connections;\n}\n\n/* mutt_socket_free: remove connection from connection list and free it */\nvoid mutt_socket_free (CONNECTION* conn)\n{\n  CONNECTION* iter;\n  CONNECTION* tmp;\n\n  iter = Connections;\n\n  /* head is special case, doesn't need prev updated */\n  if (iter == conn)\n  {\n    Connections = iter->next;\n    FREE (&iter);\n    return;\n  }\n\n  while (iter->next)\n  {\n    if (iter->next == conn)\n    {\n      tmp = iter->next;\n      iter->next = tmp->next;\n      FREE (&tmp);\n      return;\n    }\n    iter = iter->next;\n  }\n}\n\n/* mutt_conn_find: find a connection off the list of connections whose\n *   account matches account. If start is not null, only search for\n *   connections after the given connection (allows higher level socket code\n *   to make more fine-grained searches than account info - eg in IMAP we may\n *   wish to find a connection which is not in IMAP_SELECTED state) */\nCONNECTION* mutt_conn_find (const CONNECTION* start, const ACCOUNT* account)\n{\n  CONNECTION* conn;\n  ciss_url_t url;\n  char hook[LONG_STRING];\n\n  /* account isn't actually modified, since url isn't either */\n  mutt_account_tourl ((ACCOUNT*) account, &url);\n  url.path = NULL;\n  url_ciss_tostring (&url, hook, sizeof (hook), 0);\n  mutt_account_hook (hook);\n\n  conn = start ? start->next : Connections;\n  while (conn)\n  {\n    if (mutt_account_match (account, &(conn->account)))\n      return conn;\n    conn = conn->next;\n  }\n\n  conn = socket_new_conn ();\n  memcpy (&conn->account, account, sizeof (ACCOUNT));\n\n  conn->next = Connections;\n  Connections = conn;\n\n  if (Tunnel && *Tunnel)\n    mutt_tunnel_socket_setup (conn);\n  else if (account->flags & M_ACCT_SSL) \n  {\n#if defined(USE_SSL)\n    if (mutt_ssl_socket_setup (conn) < 0)\n    {\n      mutt_socket_free (conn);\n      return NULL;\n    }\n#else\n    mutt_error _(\"SSL is unavailable.\");\n    mutt_sleep (2);\n    mutt_socket_free (conn);\n\n    return NULL;\n#endif\n  }\n  else\n  {\n    conn->conn_read = raw_socket_read;\n    conn->conn_write = raw_socket_write;\n    conn->conn_open = raw_socket_open;\n    conn->conn_close = raw_socket_close;\n    conn->conn_poll = raw_socket_poll;\n  }\n\n  return conn;\n}\n\nstatic int socket_preconnect (void)\n{\n  int rc;\n  int save_errno;\n\n  if (mutt_strlen (Preconnect))\n  {\n    dprint (2, (debugfile, \"Executing preconnect: %s\\n\", Preconnect));\n    rc = mutt_system (Preconnect);\n    dprint (2, (debugfile, \"Preconnect result: %d\\n\", rc));\n    if (rc)\n    {\n      save_errno = errno;\n      mutt_perror (_(\"Preconnect command failed.\"));\n      mutt_sleep (1);\n      \n      return save_errno;\n    }\n  }\n\n  return 0;\n}\n\n/* socket_connect: set up to connect to a socket fd. */\nstatic int socket_connect (int fd, struct sockaddr* sa)\n{\n  int sa_size;\n  int save_errno;\n\n  if (sa->sa_family == AF_INET)\n    sa_size = sizeof (struct sockaddr_in);\n#ifdef HAVE_GETADDRINFO\n  else if (sa->sa_family == AF_INET6)\n    sa_size = sizeof (struct sockaddr_in6);\n#endif\n  else\n  {\n    dprint (1, (debugfile, \"Unknown address family!\\n\"));\n    return -1;\n  }\n  \n  if (ConnectTimeout > 0)\n      alarm (ConnectTimeout);\n\n  mutt_allow_interrupt (1);\n\n  save_errno = 0;\n\n  if (connect (fd, sa, sa_size) < 0)\n  {\n      save_errno = errno;\n      dprint (2, (debugfile, \"Connection failed. errno: %d...\\n\", errno));\n      SigInt = 0;\t/* reset in case we caught SIGINTR while in connect() */\n  }\n\n  if (ConnectTimeout > 0)\n      alarm (0);\n  mutt_allow_interrupt (0);\n\n  return save_errno;\n}\n\n/* socket_new_conn: allocate and initialise a new connection. */\nstatic CONNECTION* socket_new_conn (void)\n{\n  CONNECTION* conn;\n\n  conn = (CONNECTION *) safe_calloc (1, sizeof (CONNECTION));\n  conn->fd = -1;\n\n  return conn;\n}\n\nint raw_socket_close (CONNECTION *conn)\n{\n  return close (conn->fd);\n}\n\nint raw_socket_read (CONNECTION* conn, char* buf, size_t len)\n{\n  int rc;\n\n  if ((rc = read (conn->fd, buf, len)) == -1)\n  {\n    mutt_error (_(\"Error talking to %s (%s)\"), conn->account.host,\n\t\tstrerror (errno));\n    mutt_sleep (2);\n  }\n\n  return rc;\n}\n\nint raw_socket_write (CONNECTION* conn, const char* buf, size_t count)\n{\n  int rc;\n\n  if ((rc = write (conn->fd, buf, count)) == -1)\n  {\n    mutt_error (_(\"Error talking to %s (%s)\"), conn->account.host,\n\t\tstrerror (errno));\n    mutt_sleep (2);\n  }\n\n  return rc;\n}\n\nint raw_socket_poll (CONNECTION* conn)\n{\n  fd_set rfds;\n  struct timeval tv = { 0, 0 };\n\n  if (conn->fd < 0)\n    return -1;\n\n  FD_ZERO (&rfds);\n  FD_SET (conn->fd, &rfds);\n  \n  return select (conn->fd + 1, &rfds, NULL, NULL, &tv);\n}\n\nint raw_socket_open (CONNECTION* conn)\n{\n  int rc;\n  int fd;\n\n  char *host_idna = NULL;\n  \n#ifdef HAVE_GETADDRINFO\n/* --- IPv4/6 --- */\n\n  /* \"65536\\0\" */\n  char port[6];\n  struct addrinfo hints;\n  struct addrinfo* res;\n  struct addrinfo* cur;\n\n  /* we accept v4 or v6 STREAM sockets */\n  memset (&hints, 0, sizeof (hints));\n\n  if (option (OPTUSEIPV6))\n    hints.ai_family = AF_UNSPEC;\n  else\n    hints.ai_family = AF_INET;\n\n  hints.ai_socktype = SOCK_STREAM;\n\n  snprintf (port, sizeof (port), \"%d\", conn->account.port);\n  \n# ifdef HAVE_LIBIDN\n  if (idna_to_ascii_lz (conn->account.host, &host_idna, 1) != IDNA_SUCCESS)\n  {\n    mutt_error (_(\"Bad IDN \\\"%s\\\".\"), conn->account.host);\n    return -1;\n  }\n# else\n  host_idna = conn->account.host;\n# endif\n\n  if (!option(OPTNOCURSES))\n    mutt_message (_(\"Looking up %s...\"), conn->account.host);\n  \n  rc = getaddrinfo (host_idna, port, &hints, &res);\n\n# ifdef HAVE_LIBIDN\n  FREE (&host_idna);\n# endif\n\n  if (rc)\n  {\n    mutt_error (_(\"Could not find the host \\\"%s\\\"\"), conn->account.host);\n    mutt_sleep (2);\n    return -1;\n  }\n\n  if (!option(OPTNOCURSES))\n    mutt_message (_(\"Connecting to %s...\"), conn->account.host); \n\n  rc = -1;\n  for (cur = res; cur != NULL; cur = cur->ai_next)\n  {\n    fd = socket (cur->ai_family, cur->ai_socktype, cur->ai_protocol);\n    if (fd >= 0)\n    {\n      if ((rc = socket_connect (fd, cur->ai_addr)) == 0)\n      {\n\tfcntl (fd, F_SETFD, FD_CLOEXEC);\n\tconn->fd = fd;\n\tbreak;\n      }\n      else\n\tclose (fd);\n    }\n  }\n\n  freeaddrinfo (res);\n\n#else\n  /* --- IPv4 only --- */\n\n  struct sockaddr_in sin;\n  struct hostent* he;\n  int i;\n\n  memset (&sin, 0, sizeof (sin));\n  sin.sin_port = htons (conn->account.port);\n  sin.sin_family = AF_INET;\n\n# ifdef HAVE_LIBIDN\n  if (idna_to_ascii_lz (conn->account.host, &host_idna, 1) != IDNA_SUCCESS)\n  {\n    mutt_error (_(\"Bad IDN \\\"%s\\\".\"), conn->account.host);\n    return -1;\n  }\n# else\n  host_idna = conn->account.host;\n# endif\n\n  if (!option(OPTNOCURSES))\n    mutt_message (_(\"Looking up %s...\"), conn->account.host);\n\n  he = gethostbyname (host_idna);\n\n# ifdef HAVE_LIBIDN\n    FREE (&host_idna);\n# endif\n\n  if (! he) {\n    mutt_error (_(\"Could not find the host \\\"%s\\\"\"), conn->account.host);\n\t\n    return -1;\n  }\n\n  if (!option(OPTNOCURSES))\n    mutt_message (_(\"Connecting to %s...\"), conn->account.host); \n\n  rc = -1;\n  for (i = 0; he->h_addr_list[i] != NULL; i++)\n  {\n    memcpy (&sin.sin_addr, he->h_addr_list[i], he->h_length);\n    fd = socket (PF_INET, SOCK_STREAM, IPPROTO_IP);\n\n    if (fd >= 0)\n    {\n      if ((rc = socket_connect (fd, (struct sockaddr*) &sin)) == 0)\n      {\n        fcntl (fd, F_SETFD, FD_CLOEXEC);\n\tconn->fd = fd;\n\tbreak;\n      }\n      else\n\tclose (fd);\n    }\n  }\n\n#endif\n  if (rc)\n  {\n    mutt_error (_(\"Could not connect to %s (%s).\"), conn->account.host,\n\t    (rc > 0) ? strerror (rc) : _(\"unknown error\"));\n    mutt_sleep (2);\n    return -1;\n  }\n  \n  return 0;\n}\n"
  },
  {
    "path": "mutt_socket.h",
    "content": "/*\n * Copyright (C) 1998 Brandon Long <blong@fiction.net>\n * Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _MUTT_SOCKET_H_\n#define _MUTT_SOCKET_H_ 1\n\n#include \"account.h\"\n#include \"lib.h\"\n\n/* logging levels */\n#define M_SOCK_LOG_CMD  2\n#define M_SOCK_LOG_HDR  3\n#define M_SOCK_LOG_FULL 4\n\ntypedef struct _connection\n{\n  ACCOUNT account;\n  /* security strength factor, in bits */\n  unsigned int ssf;\n  void *data;\n\n  char inbuf[LONG_STRING];\n  int bufpos;\n\n  int fd;\n  int available;\n\n  struct _connection *next;\n\n  void *sockdata;\n  int (*conn_read) (struct _connection* conn, char* buf, size_t len);\n  int (*conn_write) (struct _connection *conn, const char *buf, size_t count);\n  int (*conn_open) (struct _connection *conn);\n  int (*conn_close) (struct _connection *conn);\n  int (*conn_poll) (struct _connection *conn);\n} CONNECTION;\n\nint mutt_socket_open (CONNECTION* conn);\nint mutt_socket_close (CONNECTION* conn);\nint mutt_socket_read (CONNECTION* conn, char* buf, size_t len);\nint mutt_socket_poll (CONNECTION* conn);\nint mutt_socket_readchar (CONNECTION *conn, char *c);\n#define mutt_socket_readln(A,B,C) mutt_socket_readln_d(A,B,C,M_SOCK_LOG_CMD)\nint mutt_socket_readln_d (char *buf, size_t buflen, CONNECTION *conn, int dbg);\n#define mutt_socket_write(A,B) mutt_socket_write_d(A,B,-1,M_SOCK_LOG_CMD)\n#define mutt_socket_write_n(A,B,C) mutt_socket_write_d(A,B,C,M_SOCK_LOG_CMD)\nint mutt_socket_write_d (CONNECTION *conn, const char *buf, int len, int dbg);\n\n/* stupid hack for imap_logout_all */\nCONNECTION* mutt_socket_head (void);\nvoid mutt_socket_free (CONNECTION* conn);\nCONNECTION* mutt_conn_find (const CONNECTION* start, const ACCOUNT* account);\n\nint raw_socket_read (CONNECTION* conn, char* buf, size_t len);\nint raw_socket_write (CONNECTION* conn, const char* buf, size_t count);\nint raw_socket_open (CONNECTION *conn);\nint raw_socket_close (CONNECTION *conn);\nint raw_socket_poll (CONNECTION* conn);\n\n#endif /* _MUTT_SOCKET_H_ */\n"
  },
  {
    "path": "mutt_ssl.c",
    "content": "/*\n * Copyright (C) 1999-2001 Tommi Komulainen <Tommi.Komulainen@iki.fi>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <openssl/ssl.h>\n#include <openssl/x509.h>\n#include <openssl/x509v3.h>\n#include <openssl/err.h>\n#include <openssl/rand.h>\n\n#undef _\n\n#include <string.h>\n\n#include \"mutt.h\"\n#include \"mutt_socket.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_ssl.h\"\n#include \"mutt_idna.h\"\n\n#if OPENSSL_VERSION_NUMBER >= 0x00904000L\n#define READ_X509_KEY(fp, key)\tPEM_read_X509(fp, key, NULL, NULL)\n#else\n#define READ_X509_KEY(fp, key)\tPEM_read_X509(fp, key, NULL)\n#endif\n\n/* Just in case OpenSSL doesn't define DEVRANDOM */\n#ifndef DEVRANDOM\n#define DEVRANDOM \"/dev/urandom\"\n#endif\n\n/* This is ugly, but as RAND_status came in on OpenSSL version 0.9.5\n * and the code has to support older versions too, this is seemed to\n * be cleaner way compared to having even uglier #ifdefs all around.\n */\n#ifdef HAVE_RAND_STATUS\n#define HAVE_ENTROPY()\t(RAND_status() == 1)\n#else\nstatic int entropy_byte_count = 0;\n/* OpenSSL fills the entropy pool from /dev/urandom if it exists */\n#define HAVE_ENTROPY()\t(!access(DEVRANDOM, R_OK) || entropy_byte_count >= 16)\n#endif\n\n/* keep a handle on accepted certificates in case we want to\n * open up another connection to the same server in this session */\nstatic STACK_OF(X509) *SslSessionCerts = NULL;\n\ntypedef struct\n{\n  SSL_CTX *ctx;\n  SSL *ssl;\n  X509 *cert;\n  unsigned char isopen;\n}\nsslsockdata;\n\n/* local prototypes */\nstatic int ssl_init (void);\nstatic int add_entropy (const char *file);\nstatic int ssl_socket_read (CONNECTION* conn, char* buf, size_t len);\nstatic int ssl_socket_write (CONNECTION* conn, const char* buf, size_t len);\nstatic int ssl_socket_open (CONNECTION * conn);\nstatic int ssl_socket_close (CONNECTION * conn);\nstatic int tls_close (CONNECTION* conn);\nstatic void ssl_err (sslsockdata *data, int err);\nstatic int ssl_cache_trusted_cert (X509 *cert);\nstatic int ssl_check_certificate (CONNECTION *conn, sslsockdata * data);\nstatic int interactive_check_cert (X509 *cert, int idx, int len);\nstatic void ssl_get_client_cert(sslsockdata *ssldata, CONNECTION *conn);\nstatic int ssl_passwd_cb(char *buf, int size, int rwflag, void *userdata);\nstatic int ssl_negotiate (CONNECTION *conn, sslsockdata*);\n\n/* mutt_ssl_starttls: Negotiate TLS over an already opened connection.\n *   TODO: Merge this code better with ssl_socket_open. */\nint mutt_ssl_starttls (CONNECTION* conn)\n{\n  sslsockdata* ssldata;\n  int maxbits;\n  long ssl_options = 0;\n\n  if (ssl_init())\n    goto bail;\n\n  ssldata = (sslsockdata*) safe_calloc (1, sizeof (sslsockdata));\n  /* the ssl_use_xxx protocol options don't apply. We must use TLS in TLS.\n   *\n   * However, we need to be able to negotiate amongst various TLS versions,\n   * which at present can only be done with the SSLv23_client_method;\n   * TLSv1_client_method gives us explicitly TLSv1.0, not 1.1 or 1.2 (True as\n   * of OpenSSL 1.0.1c)\n   */\n  if (! (ssldata->ctx = SSL_CTX_new (SSLv23_client_method())))\n  {\n    dprint (1, (debugfile, \"mutt_ssl_starttls: Error allocating SSL_CTX\\n\"));\n    goto bail_ssldata;\n  }\n#ifdef SSL_OP_NO_TLSv1_2\n  if (!option(OPTTLSV1_2))\n    ssl_options |= SSL_OP_NO_TLSv1_2;\n#endif\n#ifdef SSL_OP_NO_TLSv1_1\n  if (!option(OPTTLSV1_1))\n    ssl_options |= SSL_OP_NO_TLSv1_1;\n#endif\n#ifdef SSL_OP_NO_TLSv1\n  if (!option(OPTTLSV1))\n    ssl_options |= SSL_OP_NO_TLSv1;\n#endif\n  /* these are always set */\n#ifdef SSL_OP_NO_SSLv3\n  ssl_options |= SSL_OP_NO_SSLv3;\n#endif\n#ifdef SSL_OP_NO_SSLv2\n  ssl_options |= SSL_OP_NO_SSLv2;\n#endif\n  if (! SSL_CTX_set_options(ssldata->ctx, ssl_options))\n  {\n    dprint(1, (debugfile, \"mutt_ssl_starttls: Error setting options to %ld\\n\", ssl_options));\n    goto bail_ctx;\n  }\n\n  ssl_get_client_cert(ssldata, conn);\n\n  if (SslCiphers) {\n    if (!SSL_CTX_set_cipher_list (ssldata->ctx, SslCiphers)) {\n      dprint (1, (debugfile, \"mutt_ssl_starttls: Could not select preferred ciphers\\n\"));\n      goto bail_ctx;\n    }\n  }\n\n  if (! (ssldata->ssl = SSL_new (ssldata->ctx)))\n  {\n    dprint (1, (debugfile, \"mutt_ssl_starttls: Error allocating SSL\\n\"));\n    goto bail_ctx;\n  }\n\n  if (SSL_set_fd (ssldata->ssl, conn->fd) != 1)\n  {\n    dprint (1, (debugfile, \"mutt_ssl_starttls: Error setting fd\\n\"));\n    goto bail_ssl;\n  }\n\n  if (ssl_negotiate (conn, ssldata))\n    goto bail_ssl;\n\n  ssldata->isopen = 1;\n\n  /* hmm. watch out if we're starting TLS over any method other than raw. */\n  conn->sockdata = ssldata;\n  conn->conn_read = ssl_socket_read;\n  conn->conn_write = ssl_socket_write;\n  conn->conn_close = tls_close;\n\n  conn->ssf = SSL_CIPHER_get_bits (SSL_get_current_cipher (ssldata->ssl),\n    &maxbits);\n\n  return 0;\n\n bail_ssl:\n  FREE (&ssldata->ssl);\n bail_ctx:\n  FREE (&ssldata->ctx);\n bail_ssldata:\n  FREE (&ssldata);\n bail:\n  return -1;\n}\n\n/*\n * OpenSSL library needs to be fed with sufficient entropy. On systems\n * with /dev/urandom, this is done transparently by the library itself,\n * on other systems we need to fill the entropy pool ourselves.\n *\n * Even though only OpenSSL 0.9.5 and later will complain about the\n * lack of entropy, we try to our best and fill the pool with older\n * versions also. (That's the reason for the ugly #ifdefs and macros,\n * otherwise I could have simply #ifdef'd the whole ssl_init funcion)\n */\nstatic int ssl_init (void)\n{\n  char path[_POSIX_PATH_MAX];\n  static unsigned char init_complete = 0;\n\n  if (init_complete)\n    return 0;\n\n  if (! HAVE_ENTROPY())\n  {\n    /* load entropy from files */\n    add_entropy (SslEntropyFile);\n    add_entropy (RAND_file_name (path, sizeof (path)));\n\n    /* load entropy from egd sockets */\n#ifdef HAVE_RAND_EGD\n    add_entropy (getenv (\"EGDSOCKET\"));\n    snprintf (path, sizeof(path), \"%s/.entropy\", NONULL(Homedir));\n    add_entropy (path);\n    add_entropy (\"/tmp/entropy\");\n#endif\n\n    /* shuffle $RANDFILE (or ~/.rnd if unset) */\n    RAND_write_file (RAND_file_name (path, sizeof (path)));\n    mutt_clear_error ();\n    if (! HAVE_ENTROPY())\n    {\n      mutt_error (_(\"Failed to find enough entropy on your system\"));\n      mutt_sleep (2);\n      return -1;\n    }\n  }\n\n  /* I don't think you can do this just before reading the error. The call\n   * itself might clobber the last SSL error. */\n  SSL_load_error_strings();\n  SSL_library_init();\n  init_complete = 1;\n  return 0;\n}\n\nstatic int add_entropy (const char *file)\n{\n  struct stat st;\n  int n = -1;\n\n  if (!file) return 0;\n\n  if (stat (file, &st) == -1)\n    return errno == ENOENT ? 0 : -1;\n\n  mutt_message (_(\"Filling entropy pool: %s...\\n\"),\n\t\tfile);\n\n  /* check that the file permissions are secure */\n  if (st.st_uid != getuid () ||\n      ((st.st_mode & (S_IWGRP | S_IRGRP)) != 0) ||\n      ((st.st_mode & (S_IWOTH | S_IROTH)) != 0))\n  {\n    mutt_error (_(\"%s has insecure permissions!\"), file);\n    mutt_sleep (2);\n    return -1;\n  }\n\n#ifdef HAVE_RAND_EGD\n  n = RAND_egd (file);\n#endif\n  if (n <= 0)\n    n = RAND_load_file (file, -1);\n\n#ifndef HAVE_RAND_STATUS\n  if (n > 0) entropy_byte_count += n;\n#endif\n  return n;\n}\n\nstatic int ssl_socket_open_err (CONNECTION *conn)\n{\n  mutt_error (_(\"SSL disabled due to the lack of entropy\"));\n  mutt_sleep (2);\n  return -1;\n}\n\n\nint mutt_ssl_socket_setup (CONNECTION * conn)\n{\n  if (ssl_init() < 0)\n  {\n    conn->conn_open = ssl_socket_open_err;\n    return -1;\n  }\n\n  conn->conn_open\t= ssl_socket_open;\n  conn->conn_read\t= ssl_socket_read;\n  conn->conn_write\t= ssl_socket_write;\n  conn->conn_close\t= ssl_socket_close;\n  conn->conn_poll       = raw_socket_poll;\n\n  return 0;\n}\n\nstatic int ssl_socket_read (CONNECTION* conn, char* buf, size_t len)\n{\n  sslsockdata *data = conn->sockdata;\n  int rc;\n\n  rc = SSL_read (data->ssl, buf, len);\n  if (rc <= 0)\n  {\n    data->isopen = 0;\n    ssl_err (data, rc);\n  }\n\n  return rc;\n}\n\nstatic int ssl_socket_write (CONNECTION* conn, const char* buf, size_t len)\n{\n  sslsockdata *data = conn->sockdata;\n  int rc;\n\n  rc = SSL_write (data->ssl, buf, len);\n  if (rc <= 0)\n    ssl_err (data, rc);\n\n  return rc;\n}\n\nstatic int ssl_socket_open (CONNECTION * conn)\n{\n  sslsockdata *data;\n  int maxbits;\n\n  if (raw_socket_open (conn) < 0)\n    return -1;\n\n  data = (sslsockdata *) safe_calloc (1, sizeof (sslsockdata));\n  conn->sockdata = data;\n\n  data->ctx = SSL_CTX_new (SSLv23_client_method ());\n\n  /* disable SSL protocols as needed */\n  if (!option(OPTTLSV1))\n  {\n    SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1);\n  }\n  /* TLSv1.1/1.2 support was added in OpenSSL 1.0.1, but some OS distros such\n   * as Fedora 17 are on OpenSSL 1.0.0.\n   */\n#ifdef SSL_OP_NO_TLSv1_1\n  if (!option(OPTTLSV1_1))\n  {\n    SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1_1);\n  }\n#endif\n#ifdef SSL_OP_NO_TLSv1_2\n  if (!option(OPTTLSV1_2))\n  {\n    SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1_2);\n  }\n#endif\n  if (!option(OPTSSLV2))\n  {\n    SSL_CTX_set_options(data->ctx, SSL_OP_NO_SSLv2);\n  }\n  if (!option(OPTSSLV3))\n  {\n    SSL_CTX_set_options(data->ctx, SSL_OP_NO_SSLv3);\n  }\n\n  ssl_get_client_cert(data, conn);\n\n  if (SslCiphers) {\n    SSL_CTX_set_cipher_list (data->ctx, SslCiphers);\n  }\n\n  data->ssl = SSL_new (data->ctx);\n  SSL_set_fd (data->ssl, conn->fd);\n\n  if (ssl_negotiate(conn, data))\n  {\n    mutt_socket_close (conn);\n    return -1;\n  }\n\n  data->isopen = 1;\n\n  conn->ssf = SSL_CIPHER_get_bits (SSL_get_current_cipher (data->ssl),\n    &maxbits);\n\n  return 0;\n}\n\n/* ssl_negotiate: After SSL state has been initialized, attempt to negotiate\n *   SSL over the wire, including certificate checks. */\nstatic int ssl_negotiate (CONNECTION *conn, sslsockdata* ssldata)\n{\n  int err;\n  const char* errmsg;\n\n#if OPENSSL_VERSION_NUMBER >= 0x00906000L\n  /* This only exists in 0.9.6 and above. Without it we may get interrupted\n   *   reads or writes. Bummer. */\n  SSL_set_mode (ssldata->ssl, SSL_MODE_AUTO_RETRY);\n#endif\n\n#if (OPENSSL_VERSION_NUMBER >= 0x0090806fL) && !defined(OPENSSL_NO_TLSEXT)\n  /* TLS Virtual-hosting requires that the server present the correct\n   * certificate; to do this, the ServerNameIndication TLS extension is used.\n   * If TLS is negotiated, and OpenSSL is recent enough that it might have\n   * support, and support was enabled when OpenSSL was built, mutt supports\n   * sending the hostname we think we're connecting to, so a server can send\n   * back the correct certificate.\n   * This has been tested over SMTP against Exim 4.80.\n   * Not yet found an IMAP server which supports this. */\n  SSL_set_tlsext_host_name (ssldata->ssl, conn->account.host);\n#endif\n\n  if ((err = SSL_connect (ssldata->ssl)) != 1)\n  {\n    switch (SSL_get_error (ssldata->ssl, err))\n    {\n    case SSL_ERROR_SYSCALL:\n      errmsg = _(\"I/O error\");\n      break;\n    case SSL_ERROR_SSL:\n      errmsg = ERR_error_string (ERR_get_error (), NULL);\n      break;\n    default:\n      errmsg = _(\"unknown error\");\n    }\n\n    mutt_error (_(\"SSL failed: %s\"), errmsg);\n    mutt_sleep (1);\n\n    return -1;\n  }\n\n  ssldata->cert = SSL_get_peer_certificate (ssldata->ssl);\n  if (!ssldata->cert)\n  {\n    mutt_error (_(\"Unable to get certificate from peer\"));\n    mutt_sleep (1);\n    return -1;\n  }\n\n  if (!ssl_check_certificate (conn, ssldata))\n    return -1;\n\n  return 0;\n}\n\nstatic int ssl_socket_close (CONNECTION * conn)\n{\n  sslsockdata *data = conn->sockdata;\n  if (data)\n  {\n    if (data->isopen)\n      SSL_shutdown (data->ssl);\n\n    /* hold onto this for the life of mutt, in case we want to reconnect.\n     * The purist in me wants a mutt_exit hook. */\n#if 0\n    X509_free (data->cert);\n#endif\n    SSL_free (data->ssl);\n    SSL_CTX_free (data->ctx);\n    FREE (&conn->sockdata);\n  }\n\n  return raw_socket_close (conn);\n}\n\nstatic int tls_close (CONNECTION* conn)\n{\n  int rc;\n\n  rc = ssl_socket_close (conn);\n  conn->conn_read = raw_socket_read;\n  conn->conn_write = raw_socket_write;\n  conn->conn_close = raw_socket_close;\n\n  return rc;\n}\n\nstatic void ssl_err (sslsockdata *data, int err)\n{\n  const char* errmsg;\n  unsigned long sslerr;\n\n  switch (SSL_get_error (data->ssl, err))\n  {\n  case SSL_ERROR_NONE:\n    return;\n  case SSL_ERROR_ZERO_RETURN:\n    errmsg = \"SSL connection closed\";\n    data->isopen = 0;\n    break;\n  case SSL_ERROR_WANT_READ:\n    errmsg = \"retry read\";\n    break;\n  case SSL_ERROR_WANT_WRITE:\n    errmsg = \"retry write\";\n    break;\n  case SSL_ERROR_WANT_CONNECT:\n    errmsg = \"retry connect\";\n    break;\n  case SSL_ERROR_WANT_ACCEPT:\n    errmsg = \"retry accept\";\n    break;\n  case SSL_ERROR_WANT_X509_LOOKUP:\n    errmsg = \"retry x509 lookup\";\n    break;\n  case SSL_ERROR_SYSCALL:\n    errmsg = \"I/O error\";\n    data->isopen = 0;\n    break;\n  case SSL_ERROR_SSL:\n    sslerr = ERR_get_error ();\n    switch (sslerr)\n    {\n    case 0:\n      switch (err)\n      {\n      case 0:\n\terrmsg = \"EOF\";\n\tbreak;\n      default:\n\terrmsg = strerror(errno);\n      }\n      break;\n    default:\n      errmsg = ERR_error_string (sslerr, NULL);\n    }\n    break;\n  default:\n    errmsg = \"unknown error\";\n  }\n\n  dprint (1, (debugfile, \"SSL error: %s\\n\", errmsg));\n}\n\nstatic char *x509_get_part (char *line, const char *ndx)\n{\n  static char ret[SHORT_STRING];\n  char *c, *c2;\n\n  strfcpy (ret, _(\"Unknown\"), sizeof (ret));\n\n  c = strstr (line, ndx);\n  if (c)\n  {\n    c += strlen (ndx);\n    c2 = strchr (c, '/');\n    if (c2)\n      *c2 = '\\0';\n    strfcpy (ret, c, sizeof (ret));\n    if (c2)\n      *c2 = '/';\n  }\n\n  return ret;\n}\n\nstatic void x509_fingerprint (char *s, int l, X509 * cert)\n{\n  unsigned char md[EVP_MAX_MD_SIZE];\n  unsigned int n;\n  int j;\n\n  if (!X509_digest (cert, EVP_md5 (), md, &n))\n  {\n    snprintf (s, l, _(\"[unable to calculate]\"));\n  }\n  else\n  {\n    for (j = 0; j < (int) n; j++)\n    {\n      char ch[8];\n      snprintf (ch, 8, \"%02X%s\", md[j], (j % 2 ? \" \" : \"\"));\n      safe_strcat (s, l, ch);\n    }\n  }\n}\n\nstatic char *asn1time_to_string (ASN1_UTCTIME *tm)\n{\n  static char buf[64];\n  BIO *bio;\n\n  strfcpy (buf, _(\"[invalid date]\"), sizeof (buf));\n\n  bio = BIO_new (BIO_s_mem());\n  if (bio)\n  {\n    if (ASN1_TIME_print (bio, tm))\n      (void) BIO_read (bio, buf, sizeof (buf));\n    BIO_free (bio);\n  }\n\n  return buf;\n}\n\nstatic int check_certificate_by_signer (X509 *peercert)\n{\n  X509_STORE_CTX xsc;\n  X509_STORE *ctx;\n  int pass = 0, i;\n\n  ctx = X509_STORE_new ();\n  if (ctx == NULL) return 0;\n\n  if (option (OPTSSLSYSTEMCERTS))\n  {\n    if (X509_STORE_set_default_paths (ctx))\n      pass++;\n    else\n      dprint (2, (debugfile, \"X509_STORE_set_default_paths failed\\n\"));\n  }\n\n  if (X509_STORE_load_locations (ctx, SslCertFile, NULL))\n    pass++;\n  else\n    dprint (2, (debugfile, \"X509_STORE_load_locations failed\\n\"));\n\n  for (i = 0; i < sk_X509_num (SslSessionCerts); i++)\n    pass += (X509_STORE_add_cert (ctx, sk_X509_value (SslSessionCerts, i)) != 0);\n\n  if (pass == 0)\n  {\n    /* nothing to do */\n    X509_STORE_free (ctx);\n    return 0;\n  }\n\n  X509_STORE_CTX_init (&xsc, ctx, peercert, SslSessionCerts);\n\n  pass = (X509_verify_cert (&xsc) > 0);\n#ifdef DEBUG\n  if (! pass)\n  {\n    char buf[SHORT_STRING];\n    int err;\n\n    err = X509_STORE_CTX_get_error (&xsc);\n    snprintf (buf, sizeof (buf), \"%s (%d)\",\n\tX509_verify_cert_error_string(err), err);\n    dprint (2, (debugfile, \"X509_verify_cert: %s\\n\", buf));\n    dprint (2, (debugfile, \" [%s]\\n\", peercert->name));\n  }\n#endif\n  X509_STORE_CTX_cleanup (&xsc);\n  X509_STORE_free (ctx);\n\n  return pass;\n}\n\nstatic int compare_certificates (X509 *cert, X509 *peercert,\n  unsigned char *peermd, unsigned int peermdlen)\n{\n  unsigned char md[EVP_MAX_MD_SIZE];\n  unsigned int mdlen;\n\n  /* Avoid CPU-intensive digest calculation if the certificates are\n    * not even remotely equal.\n    */\n  if (X509_subject_name_cmp (cert, peercert) != 0 ||\n      X509_issuer_name_cmp (cert, peercert) != 0)\n    return -1;\n\n  if (!X509_digest (cert, EVP_sha1(), md, &mdlen) || peermdlen != mdlen)\n    return -1;\n\n  if (memcmp(peermd, md, mdlen) != 0)\n    return -1;\n\n  return 0;\n}\n\nstatic int check_certificate_cache (X509 *peercert)\n{\n  unsigned char peermd[EVP_MAX_MD_SIZE];\n  unsigned int peermdlen;\n  X509 *cert;\n  int i;\n\n  if (!X509_digest (peercert, EVP_sha1(), peermd, &peermdlen)\n      || !SslSessionCerts)\n  {\n    return 0;\n  }\n\n  for (i = sk_X509_num (SslSessionCerts); i-- > 0;)\n  {\n    cert = sk_X509_value (SslSessionCerts, i);\n    if (!compare_certificates (cert, peercert, peermd, peermdlen))\n    {\n      return 1;\n    }\n  }\n\n  return 0;\n}\n\nstatic int check_certificate_by_digest (X509 *peercert)\n{\n  unsigned char peermd[EVP_MAX_MD_SIZE];\n  unsigned int peermdlen;\n  X509 *cert = NULL;\n  int pass = 0;\n  FILE *fp;\n\n  /* expiration check */\n  if (option (OPTSSLVERIFYDATES) != M_NO)\n  {\n    if (X509_cmp_current_time (X509_get_notBefore (peercert)) >= 0)\n    {\n      dprint (2, (debugfile, \"Server certificate is not yet valid\\n\"));\n      mutt_error (_(\"Server certificate is not yet valid\"));\n      mutt_sleep (2);\n      return 0;\n    }\n    if (X509_cmp_current_time (X509_get_notAfter (peercert)) <= 0)\n    {\n      dprint (2, (debugfile, \"Server certificate has expired\"));\n      mutt_error (_(\"Server certificate has expired\"));\n      mutt_sleep (2);\n      return 0;\n    }\n  }\n\n  if ((fp = fopen (SslCertFile, \"rt\")) == NULL)\n    return 0;\n\n  if (!X509_digest (peercert, EVP_sha1(), peermd, &peermdlen))\n  {\n    safe_fclose (&fp);\n    return 0;\n  }\n\n  while ((cert = READ_X509_KEY (fp, &cert)) != NULL)\n  {\n    pass = compare_certificates (cert, peercert, peermd, peermdlen) ? 0 : 1;\n\n    if (pass)\n      break;\n  }\n  X509_free (cert);\n  safe_fclose (&fp);\n\n  return pass;\n}\n\n/* port to mutt from msmtp's tls.c */\nstatic int hostname_match (const char *hostname, const char *certname)\n{\n  const char *cmp1, *cmp2;\n\n  if (strncmp(certname, \"*.\", 2) == 0)\n  {\n    cmp1 = certname + 2;\n    cmp2 = strchr(hostname, '.');\n    if (!cmp2)\n    {\n      return 0;\n    }\n    else\n    {\n      cmp2++;\n    }\n  }\n  else\n  {\n    cmp1 = certname;\n    cmp2 = hostname;\n  }\n\n  if (*cmp1 == '\\0' || *cmp2 == '\\0')\n  {\n    return 0;\n  }\n\n  if (strcasecmp(cmp1, cmp2) != 0)\n  {\n    return 0;\n  }\n\n  return 1;\n}\n\n/* port to mutt from msmtp's tls.c */\nstatic int check_host (X509 *x509cert, const char *hostname, char *err, size_t errlen)\n{\n  int i, rc = 0;\n  /* hostname in ASCII format: */\n  char *hostname_ascii = NULL;\n  /* needed to get the common name: */\n  X509_NAME *x509_subject;\n  char *buf = NULL;\n  int bufsize;\n  /* needed to get the DNS subjectAltNames: */\n  STACK_OF(GENERAL_NAME) *subj_alt_names;\n  int subj_alt_names_count;\n  GENERAL_NAME *subj_alt_name;\n  /* did we find a name matching hostname? */\n  int match_found;\n\n  /* Check if 'hostname' matches the one of the subjectAltName extensions of\n   * type DNS or the Common Name (CN). */\n\n#ifdef HAVE_LIBIDN\n  if (idna_to_ascii_lz(hostname, &hostname_ascii, 0) != IDNA_SUCCESS)\n  {\n    hostname_ascii = safe_strdup(hostname);\n  }\n#else\n  hostname_ascii = safe_strdup(hostname);\n#endif\n\n  /* Try the DNS subjectAltNames. */\n  match_found = 0;\n  if ((subj_alt_names = X509_get_ext_d2i(x509cert, NID_subject_alt_name,\n\t\t\t\t\t NULL, NULL)))\n  {\n    subj_alt_names_count = sk_GENERAL_NAME_num(subj_alt_names);\n    for (i = 0; i < subj_alt_names_count; i++)\n    {\n      subj_alt_name = sk_GENERAL_NAME_value(subj_alt_names, i);\n      if (subj_alt_name->type == GEN_DNS)\n      {\n\tif (subj_alt_name->d.ia5->length >= 0 &&\n\t    mutt_strlen((char *)subj_alt_name->d.ia5->data) == (size_t)subj_alt_name->d.ia5->length &&\n\t    (match_found = hostname_match(hostname_ascii,\n\t\t\t\t\t  (char *)(subj_alt_name->d.ia5->data))))\n\t{\n\t  break;\n\t}\n      }\n    }\n  }\n\n  if (!match_found)\n  {\n    /* Try the common name */\n    if (!(x509_subject = X509_get_subject_name(x509cert)))\n    {\n      if (err && errlen)\n\tstrfcpy (err, _(\"cannot get certificate subject\"), errlen);\n      goto out;\n    }\n\n    /* first get the space requirements */\n    bufsize = X509_NAME_get_text_by_NID(x509_subject, NID_commonName,\n\t\t\t\t\tNULL, 0);\n    if (bufsize == -1)\n    {\n      if (err && errlen)\n\tstrfcpy (err, _(\"cannot get certificate common name\"), errlen);\n      goto out;\n    }\n    bufsize++; /* space for the terminal nul char */\n    buf = safe_malloc((size_t)bufsize);\n    if (X509_NAME_get_text_by_NID(x509_subject, NID_commonName,\n\t\t\t\t  buf, bufsize) == -1)\n    {\n      if (err && errlen)\n\tstrfcpy (err, _(\"cannot get certificate common name\"), errlen);\n      goto out;\n    }\n    /* cast is safe since bufsize is incremented above, so bufsize-1 is always\n     * zero or greater.\n     */\n    if (mutt_strlen(buf) == (size_t)bufsize - 1) {\n      match_found = hostname_match(hostname_ascii, buf);\n    }\n  }\n\n  if (!match_found)\n  {\n    if (err && errlen)\n      snprintf (err, errlen, _(\"certificate owner does not match hostname %s\"),\n\t\thostname);\n    goto out;\n  }\n\n  rc = 1;\n\nout:\n  FREE(&buf);\n  FREE(&hostname_ascii);\n\n  return rc;\n}\n\nstatic int ssl_cache_trusted_cert (X509 *c)\n{\n  dprint (1, (debugfile, \"trusted: %s\\n\", c->name));\n  if (!SslSessionCerts)\n    SslSessionCerts = sk_X509_new_null();\n  return (sk_X509_push (SslSessionCerts, X509_dup(c)));\n}\n\n/* check whether cert is preauthorized. If host is not null, verify that\n * it matches the certificate.\n * Return > 0: authorized, < 0: problems, 0: unknown validity */\nstatic int ssl_check_preauth (X509 *cert, const char* host)\n{\n  char buf[SHORT_STRING];\n\n  /* check session cache first */\n  if (check_certificate_cache (cert))\n  {\n    dprint (2, (debugfile, \"ssl_check_preauth: using cached certificate\\n\"));\n    return 1;\n  }\n\n  buf[0] = 0;\n  if (host && option (OPTSSLVERIFYHOST) != M_NO)\n  {\n    if (!check_host (cert, host, buf, sizeof (buf)))\n    {\n      mutt_error (_(\"Certificate host check failed: %s\"), buf);\n      mutt_sleep (2);\n      return -1;\n    }\n    dprint (2, (debugfile, \"ssl_check_preauth: hostname check passed\\n\"));\n  }\n\n  if (check_certificate_by_signer (cert))\n  {\n    dprint (2, (debugfile, \"ssl_check_preauth: signer check passed\\n\"));\n    return 1;\n  }\n\n  /* automatic check from user's database */\n  if (SslCertFile && check_certificate_by_digest (cert))\n  {\n    dprint (2, (debugfile, \"ssl_check_preauth: digest check passed\\n\"));\n    return 1;\n  }\n\n  return 0;\n}\n\nstatic int ssl_check_certificate (CONNECTION *conn, sslsockdata *data)\n{\n  int i, preauthrc, chain_len;\n  STACK_OF(X509) *chain;\n  X509 *cert;\n\n  if ((preauthrc = ssl_check_preauth (data->cert, conn->account.host)) > 0)\n    return preauthrc;\n\n  chain = SSL_get_peer_cert_chain (data->ssl);\n  chain_len = sk_X509_num (chain);\n  /* negative preauthrc means the certificate won't be accepted without\n   * manual override. */\n  if (preauthrc < 0 || !chain || (chain_len <= 1))\n    return interactive_check_cert (data->cert, 0, 0);\n\n  /* check the chain from root to peer. */\n  for (i = chain_len-1; i >= 0; i--)\n  {\n    cert = sk_X509_value (chain, i);\n\n    /* if the certificate validates or is manually accepted, then add it to\n     * the trusted set and recheck the peer certificate */\n    if (ssl_check_preauth (cert, NULL)\n\t|| interactive_check_cert (cert, i, chain_len))\n    {\n      ssl_cache_trusted_cert (cert);\n      if (ssl_check_preauth (data->cert, conn->account.host))\n\treturn 1;\n    }\n  }\n\n  return 0;\n}\n\nstatic int interactive_check_cert (X509 *cert, int idx, int len)\n{\n  static const char * const part[] =\n    {\"/CN=\", \"/Email=\", \"/O=\", \"/OU=\", \"/L=\", \"/ST=\", \"/C=\"};\n  char helpstr[LONG_STRING];\n  char buf[STRING];\n  char title[STRING];\n  MUTTMENU *menu = mutt_new_menu (MENU_GENERIC);\n  int done, row, i;\n  FILE *fp;\n  char *name = NULL, *c;\n\n  dprint (2, (debugfile, \"interactive_check_cert: %s\\n\", cert->name));\n\n  menu->max = 19;\n  menu->dialog = (char **) safe_calloc (1, menu->max * sizeof (char *));\n  for (i = 0; i < menu->max; i++)\n    menu->dialog[i] = (char *) safe_calloc (1, SHORT_STRING * sizeof (char));\n\n  row = 0;\n  strfcpy (menu->dialog[row], _(\"This certificate belongs to:\"), SHORT_STRING);\n  row++;\n  name = X509_NAME_oneline (X509_get_subject_name (cert),\n\t\t\t    buf, sizeof (buf));\n  dprint (2, (debugfile, \"oneline: %s\\n\", name));\n\n  for (i = 0; i < 5; i++)\n  {\n    c = x509_get_part (name, part[i]);\n    snprintf (menu->dialog[row++], SHORT_STRING, \"   %s\", c);\n  }\n\n  row++;\n  strfcpy (menu->dialog[row], _(\"This certificate was issued by:\"), SHORT_STRING);\n  row++;\n  name = X509_NAME_oneline (X509_get_issuer_name (cert),\n\t\t\t    buf, sizeof (buf));\n  for (i = 0; i < 5; i++)\n  {\n    c = x509_get_part (name, part[i]);\n    snprintf (menu->dialog[row++], SHORT_STRING, \"   %s\", c);\n  }\n\n  row++;\n  snprintf (menu->dialog[row++], SHORT_STRING, _(\"This certificate is valid\"));\n  snprintf (menu->dialog[row++], SHORT_STRING, _(\"   from %s\"),\n      asn1time_to_string (X509_get_notBefore (cert)));\n  snprintf (menu->dialog[row++], SHORT_STRING, _(\"     to %s\"),\n      asn1time_to_string (X509_get_notAfter (cert)));\n\n  row++;\n  buf[0] = '\\0';\n  x509_fingerprint (buf, sizeof (buf), cert);\n  snprintf (menu->dialog[row++], SHORT_STRING, _(\"Fingerprint: %s\"), buf);\n\n  snprintf (title, sizeof (title),\n\t    _(\"SSL Certificate check (certificate %d of %d in chain)\"),\n\t    len - idx, len);\n  menu->title = title;\n  if (SslCertFile\n      && (option (OPTSSLVERIFYDATES) == M_NO\n\t  || (X509_cmp_current_time (X509_get_notAfter (cert)) >= 0\n\t      && X509_cmp_current_time (X509_get_notBefore (cert)) < 0)))\n  {\n    menu->prompt = _(\"(r)eject, accept (o)nce, (a)ccept always\");\n    menu->keys = _(\"roa\");\n  }\n  else\n  {\n    menu->prompt = _(\"(r)eject, accept (o)nce\");\n    menu->keys = _(\"ro\");\n  }\n\n  helpstr[0] = '\\0';\n  mutt_make_help (buf, sizeof (buf), _(\"Exit  \"), MENU_GENERIC, OP_EXIT);\n  safe_strcat (helpstr, sizeof (helpstr), buf);\n  mutt_make_help (buf, sizeof (buf), _(\"Help\"), MENU_GENERIC, OP_HELP);\n  safe_strcat (helpstr, sizeof (helpstr), buf);\n  menu->help = helpstr;\n\n  done = 0;\n  set_option(OPTIGNOREMACROEVENTS);\n  while (!done)\n  {\n    switch (mutt_menuLoop (menu))\n    {\n      case -1:\t\t\t/* abort */\n      case OP_MAX + 1:\t\t/* reject */\n      case OP_EXIT:\n        done = 1;\n        break;\n      case OP_MAX + 3:\t\t/* accept always */\n        done = 0;\n        if ((fp = fopen (SslCertFile, \"a\")))\n\t{\n\t  if (PEM_write_X509 (fp, cert))\n\t    done = 1;\n\t  safe_fclose (&fp);\n\t}\n\tif (!done)\n        {\n\t  mutt_error (_(\"Warning: Couldn't save certificate\"));\n\t  mutt_sleep (2);\n\t}\n\telse\n        {\n\t  mutt_message (_(\"Certificate saved\"));\n\t  mutt_sleep (0);\n\t}\n        /* fall through */\n      case OP_MAX + 2:\t\t/* accept once */\n        done = 2;\n\tssl_cache_trusted_cert (cert);\n        break;\n    }\n  }\n  unset_option(OPTIGNOREMACROEVENTS);\n  mutt_menuDestroy (&menu);\n  dprint (2, (debugfile, \"ssl interactive_check_cert: done=%d\\n\", done));\n  return (done == 2);\n}\n\nstatic void ssl_get_client_cert(sslsockdata *ssldata, CONNECTION *conn)\n{\n  if (SslClientCert)\n  {\n    dprint (2, (debugfile, \"Using client certificate %s\\n\", SslClientCert));\n    SSL_CTX_set_default_passwd_cb_userdata(ssldata->ctx, &conn->account);\n    SSL_CTX_set_default_passwd_cb(ssldata->ctx, ssl_passwd_cb);\n    SSL_CTX_use_certificate_file(ssldata->ctx, SslClientCert, SSL_FILETYPE_PEM);\n    SSL_CTX_use_PrivateKey_file(ssldata->ctx, SslClientCert, SSL_FILETYPE_PEM);\n\n    /* if we are using a client cert, SASL may expect an external auth name */\n    mutt_account_getuser (&conn->account);\n  }\n}\n\nstatic int ssl_passwd_cb(char *buf, int size, int rwflag, void *userdata)\n{\n  ACCOUNT *account = (ACCOUNT*)userdata;\n\n  if (mutt_account_getuser (account))\n    return 0;\n\n  dprint (2, (debugfile, \"ssl_passwd_cb: getting password for %s@%s:%u\\n\",\n\t      account->user, account->host, account->port));\n\n  if (mutt_account_getpass (account))\n    return 0;\n\n  return snprintf(buf, size, \"%s\", account->pass);\n}\n"
  },
  {
    "path": "mutt_ssl.h",
    "content": "/*\n * Copyright (C) 1999-2000 Tommi Komulainen <Tommi.Komulainen@iki.fi>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _MUTT_SSL_H_\n#define _MUTT_SSL_H_ 1\n\n#include \"mutt_socket.h\"\n\n#if defined(USE_SSL)\nint mutt_ssl_starttls (CONNECTION* conn);\nint mutt_ssl_socket_setup (CONNECTION *conn);\n#endif\n\n#endif /* _MUTT_SSL_H_ */\n"
  },
  {
    "path": "mutt_ssl_gnutls.c",
    "content": "/* Copyright (C) 2001 Marco d'Itri <md@linux.it>\n * Copyright (C) 2001-2004 Andrew McDonald <andrew@mcdonald.org.uk>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <gnutls/gnutls.h>\n#include <gnutls/x509.h>\n#ifdef HAVE_GNUTLS_OPENSSL_H\n#include <gnutls/openssl.h>\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_socket.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_ssl.h\"\n#include \"mutt_regex.h\"\n\n/* certificate error bitmap values */\n#define CERTERR_VALID       0\n#define CERTERR_EXPIRED     1\n#define CERTERR_NOTYETVALID 2\n#define CERTERR_REVOKED     4\n#define CERTERR_NOTTRUSTED  8\n#define CERTERR_HOSTNAME    16\n#define CERTERR_SIGNERNOTCA 32\n#define CERTERR_INSECUREALG 64\n\n/* deprecated types compatibility */\n\n#ifndef HAVE_GNUTLS_CERTIFICATE_CREDENTIALS_T\ntypedef gnutls_certificate_credentials gnutls_certificate_credentials_t;\n#endif\n\n#ifndef HAVE_GNUTLS_CERTIFICATE_STATUS_T\ntypedef gnutls_certificate_status gnutls_certificate_status_t;\n#endif\n\n#ifndef HAVE_GNUTLS_DATUM_T\ntypedef gnutls_datum gnutls_datum_t;\n#endif\n\n#ifndef HAVE_GNUTLS_DIGEST_ALGORITHM_T\ntypedef gnutls_digest_algorithm gnutls_digest_algorithm_t;\n#endif\n\n#ifndef HAVE_GNUTLS_SESSION_T\ntypedef gnutls_session gnutls_session_t;\n#endif\n\n#ifndef HAVE_GNUTLS_TRANSPORT_PTR_T\ntypedef gnutls_transport_ptr gnutls_transport_ptr_t;\n#endif\n\n#ifndef HAVE_GNUTLS_X509_CRT_T\ntypedef gnutls_x509_crt gnutls_x509_crt_t;\n#endif\n\n\ntypedef struct _tlssockdata\n{\n  gnutls_session_t state;\n  gnutls_certificate_credentials_t xcred;\n}\ntlssockdata;\n\n/* local prototypes */\nstatic int tls_socket_read (CONNECTION* conn, char* buf, size_t len);\nstatic int tls_socket_write (CONNECTION* conn, const char* buf, size_t len);\nstatic int tls_socket_open (CONNECTION* conn);\nstatic int tls_socket_close (CONNECTION* conn);\nstatic int tls_starttls_close (CONNECTION* conn);\n\nstatic int tls_init (void);\nstatic int tls_negotiate (CONNECTION* conn);\nstatic int tls_check_certificate (CONNECTION* conn);\n\n\nstatic int tls_init (void)\n{\n  static unsigned char init_complete = 0;\n  int err;\n\n  if (init_complete)\n    return 0;\n\n  err = gnutls_global_init();\n  if (err < 0)\n  {\n    mutt_error (\"gnutls_global_init: %s\", gnutls_strerror(err));\n    mutt_sleep (2);\n    return -1;\n  }\n\n  init_complete = 1;\n  return 0;\n}\n\nint mutt_ssl_socket_setup (CONNECTION* conn)\n{\n  if (tls_init() < 0)\n    return -1;\n\n  conn->conn_open\t= tls_socket_open;\n  conn->conn_read\t= tls_socket_read;\n  conn->conn_write\t= tls_socket_write;\n  conn->conn_close\t= tls_socket_close;\n  conn->conn_poll       = raw_socket_poll;\n\n  return 0;\n}\n\nstatic int tls_socket_read (CONNECTION* conn, char* buf, size_t len)\n{\n  tlssockdata *data = conn->sockdata;\n  int ret;\n\n  if (!data)\n  {\n    mutt_error (_(\"Error: no TLS socket open\"));\n    mutt_sleep (2);\n    return -1;\n  }\n\n  do {\n    ret = gnutls_record_recv (data->state, buf, len);\n    if (ret < 0 && gnutls_error_is_fatal(ret) == 1)\n    {\n      mutt_error (\"tls_socket_read (%s)\", gnutls_strerror (ret));\n      mutt_sleep (4);\n      return -1;\n    }\n  }\n  while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED);\n\n  return ret;\n}\n\nstatic int tls_socket_write (CONNECTION* conn, const char* buf, size_t len)\n{\n  tlssockdata *data = conn->sockdata;\n  int ret;\n  size_t sent = 0;\n\n  if (!data)\n  {\n    mutt_error (_(\"Error: no TLS socket open\"));\n    mutt_sleep (2);\n    return -1;\n  }\n\n  do\n  {\n    ret = gnutls_record_send (data->state, buf + sent, len - sent);\n    if (ret < 0)\n    {\n      if (gnutls_error_is_fatal(ret) == 1)\n      {\n\tmutt_error (\"tls_socket_write (%s)\", gnutls_strerror (ret));\n\tmutt_sleep (4);\n\treturn -1;\n      }\n      return ret;\n    }\n    sent += ret;\n  } while (sent < len);\n\n  return sent;\n}\n\nstatic int tls_socket_open (CONNECTION* conn)\n{\n  if (raw_socket_open (conn) < 0)\n    return -1;\n\n  if (tls_negotiate (conn) < 0)\n  {\n    tls_socket_close (conn);\n    return -1;\n  }\n\n  return 0;\n}\n\nint mutt_ssl_starttls (CONNECTION* conn)\n{\n  if (tls_init() < 0)\n    return -1;\n\n  if (tls_negotiate (conn) < 0)\n    return -1;\n\n  conn->conn_read\t= tls_socket_read;\n  conn->conn_write\t= tls_socket_write;\n  conn->conn_close\t= tls_starttls_close;\n\n  return 0;\n}\n\nstatic void tls_get_client_cert (CONNECTION* conn)\n{\n  tlssockdata *data = conn->sockdata;\n  const gnutls_datum_t* crtdata;\n  gnutls_x509_crt_t clientcrt;\n  char* dn;\n  char* cn;\n  char* cnend;\n  size_t dnlen;\n\n  /* get our cert CN if we have one */\n  if (!(crtdata = gnutls_certificate_get_ours (data->state)))\n    return;\n\n  if (gnutls_x509_crt_init (&clientcrt) < 0)\n  {\n    dprint (1, (debugfile, \"Failed to init gnutls crt\\n\"));\n    return;\n  }\n  if (gnutls_x509_crt_import (clientcrt, crtdata, GNUTLS_X509_FMT_DER) < 0)\n  {\n    dprint (1, (debugfile, \"Failed to import gnutls client crt\\n\"));\n    goto err_crt;\n  }\n  /* get length of DN */\n  dnlen = 0;\n  gnutls_x509_crt_get_dn (clientcrt, NULL, &dnlen);\n  if (!(dn = calloc (1, dnlen)))\n  {\n    dprint (1, (debugfile, \"could not allocate DN\\n\"));\n    goto err_crt;\n  }\n  gnutls_x509_crt_get_dn (clientcrt, dn, &dnlen);\n  dprint (2, (debugfile, \"client certificate DN: %s\\n\", dn));\n\n  /* extract CN to use as external user name */\n  if (!(cn = strstr (dn, \"CN=\")))\n  {\n    dprint (1, (debugfile, \"no CN found in DN\\n\"));\n    goto err_dn;\n  }\n  cn += 3;\n\n  if ((cnend = strstr (dn, \",EMAIL=\")))\n    *cnend = '\\0';\n\n  /* if we are using a client cert, SASL may expect an external auth name */\n  mutt_account_getuser (&conn->account);\n\nerr_dn:\n  FREE (&dn);\nerr_crt:\n  gnutls_x509_crt_deinit (clientcrt);\n}\n\n#if HAVE_GNUTLS_PRIORITY_SET_DIRECT\nstatic int tls_set_priority(tlssockdata *data)\n{\n  size_t nproto = 4;\n  char *priority;\n  size_t priority_size;\n  int err;\n\n  priority_size = SHORT_STRING + mutt_strlen (SslCiphers);\n  priority = safe_malloc (priority_size);\n\n  priority[0] = 0;\n  if (SslCiphers)\n    safe_strcat (priority, priority_size, SslCiphers);\n  else\n    safe_strcat (priority, priority_size, \"NORMAL\");\n\n  if (! option(OPTTLSV1_2))\n  {\n    nproto--;\n    safe_strcat (priority, priority_size, \":-VERS-TLS1.2\");\n  }\n  if (! option(OPTTLSV1_1))\n  {\n    nproto--;\n    safe_strcat (priority, priority_size, \":-VERS-TLS1.1\");\n  }\n  if (! option(OPTTLSV1))\n  {\n    nproto--;\n    safe_strcat (priority, priority_size, \":-VERS-TLS1.0\");\n  }\n  if (! option(OPTSSLV3))\n  {\n    nproto--;\n    safe_strcat (priority, priority_size, \":-VERS-SSL3.0\");\n  }\n\n  if (nproto == 0)\n  {\n    mutt_error (_(\"All available protocols for TLS/SSL connection disabled\"));\n    FREE (&priority);\n    return -1;\n  }\n\n  if ((err = gnutls_priority_set_direct (data->state, priority, NULL)) < 0)\n  {\n    mutt_error (\"gnutls_priority_set_direct(%s): %s\", priority, gnutls_strerror(err));\n    mutt_sleep (2);\n    FREE (&priority);\n    return -1;\n  }\n\n  FREE (&priority);\n  return 0;\n}\n#else\n/* This array needs to be large enough to hold all the possible values support\n * by Mutt.  The initialized values are just placeholders--the array gets\n * overwrriten in tls_negotiate() depending on the $ssl_use_* options.\n */\nstatic int protocol_priority[] = {GNUTLS_TLS1_2, GNUTLS_TLS1_1, GNUTLS_TLS1, GNUTLS_SSL3, 0};\n\nstatic int tls_set_priority(tlssockdata *data)\n{\n  size_t nproto = 0; /* number of tls/ssl protocols */\n\n  if (option(OPTTLSV1_2))\n    protocol_priority[nproto++] = GNUTLS_TLS1_2;\n  if (option(OPTTLSV1_1))\n    protocol_priority[nproto++] = GNUTLS_TLS1_1;\n  if (option(OPTTLSV1))\n    protocol_priority[nproto++] = GNUTLS_TLS1;\n  if (option(OPTSSLV3))\n    protocol_priority[nproto++] = GNUTLS_SSL3;\n  protocol_priority[nproto] = 0;\n\n  if (nproto == 0)\n  {\n    mutt_error (_(\"All available protocols for TLS/SSL connection disabled\"));\n    return -1;\n  }\n\n  if (SslCiphers)\n  {\n    mutt_error (_(\"Explicit ciphersuite selection via $ssl_ciphers not supported\"));\n    mutt_sleep (2);\n  }\n\n  /* We use default priorities (see gnutls documentation),\n     except for protocol version */\n  gnutls_set_default_priority (data->state);\n  gnutls_protocol_set_priority (data->state, protocol_priority);\n  return 0;\n}\n#endif\n\n/* tls_negotiate: After TLS state has been initialized, attempt to negotiate\n *   TLS over the wire, including certificate checks. */\nstatic int tls_negotiate (CONNECTION * conn)\n{\n  tlssockdata *data;\n  int err;\n\n  data = (tlssockdata *) safe_calloc (1, sizeof (tlssockdata));\n  conn->sockdata = data;\n  err = gnutls_certificate_allocate_credentials (&data->xcred);\n  if (err < 0)\n  {\n    FREE(&conn->sockdata);\n    mutt_error (\"gnutls_certificate_allocate_credentials: %s\", gnutls_strerror(err));\n    mutt_sleep (2);\n    return -1;\n  }\n\n  gnutls_certificate_set_x509_trust_file (data->xcred, SslCertFile,\n\t\t\t\t\t  GNUTLS_X509_FMT_PEM);\n  /* ignore errors, maybe file doesn't exist yet */\n\n  if (SslCACertFile)\n  {\n    gnutls_certificate_set_x509_trust_file (data->xcred, SslCACertFile,\n                                            GNUTLS_X509_FMT_PEM);\n  }\n\n  if (SslClientCert)\n  {\n    dprint (2, (debugfile, \"Using client certificate %s\\n\", SslClientCert));\n    gnutls_certificate_set_x509_key_file (data->xcred, SslClientCert,\n                                          SslClientCert, GNUTLS_X509_FMT_PEM);\n  }\n\n#if HAVE_DECL_GNUTLS_VERIFY_DISABLE_TIME_CHECKS\n  /* disable checking certificate activation/expiration times\n     in gnutls, we do the checks ourselves */\n  gnutls_certificate_set_verify_flags(data->xcred, GNUTLS_VERIFY_DISABLE_TIME_CHECKS);\n#endif\n\n  if ((err = gnutls_init(&data->state, GNUTLS_CLIENT)))\n  {\n    mutt_error (\"gnutls_handshake: %s\", gnutls_strerror(err));\n    mutt_sleep (2);\n    goto fail;\n  }\n\n  /* set socket */\n  gnutls_transport_set_ptr (data->state, (gnutls_transport_ptr_t)(long)conn->fd);\n\n  if (tls_set_priority(data) < 0) {\n    goto fail;\n  }\n\n  if (SslDHPrimeBits > 0)\n  {\n    gnutls_dh_set_prime_bits (data->state, SslDHPrimeBits);\n  }\n\n/*\n  gnutls_set_cred (data->state, GNUTLS_ANON, NULL);\n*/\n\n  gnutls_credentials_set (data->state, GNUTLS_CRD_CERTIFICATE, data->xcred);\n\n  err = gnutls_handshake(data->state);\n\n  while (err == GNUTLS_E_AGAIN || err == GNUTLS_E_INTERRUPTED)\n  {\n    err = gnutls_handshake(data->state);\n  }\n  if (err < 0) {\n    if (err == GNUTLS_E_FATAL_ALERT_RECEIVED)\n    {\n      mutt_error(\"gnutls_handshake: %s(%s)\", gnutls_strerror(err),\n\t\t gnutls_alert_get_name(gnutls_alert_get(data->state)));\n    }\n    else\n    {\n      mutt_error(\"gnutls_handshake: %s\", gnutls_strerror(err));\n    }\n    mutt_sleep (2);\n    goto fail;\n  }\n\n  if (!tls_check_certificate(conn))\n    goto fail;\n\n  /* set Security Strength Factor (SSF) for SASL */\n  /* NB: gnutls_cipher_get_key_size() returns key length in bytes */\n  conn->ssf = gnutls_cipher_get_key_size (gnutls_cipher_get (data->state)) * 8;\n\n  tls_get_client_cert (conn);\n\n  if (!option(OPTNOCURSES)) {\n    mutt_message (_(\"SSL/TLS connection using %s (%s/%s/%s)\"),\n                  gnutls_protocol_get_name (gnutls_protocol_get_version (data->state)),\n                  gnutls_kx_get_name (gnutls_kx_get (data->state)),\n                  gnutls_cipher_get_name (gnutls_cipher_get (data->state)),\n                  gnutls_mac_get_name (gnutls_mac_get (data->state)));\n    mutt_sleep (0);\n  }\n\n  return 0;\n\n fail:\n  gnutls_certificate_free_credentials (data->xcred);\n  gnutls_deinit (data->state);\n  FREE(&conn->sockdata);\n  return -1;\n}\n\nstatic int tls_socket_close (CONNECTION* conn)\n{\n  tlssockdata *data = conn->sockdata;\n  if (data)\n  {\n    /* shut down only the write half to avoid hanging waiting for the remote to respond.\n     *\n     * RFC5246 7.2.1. \"Closure Alerts\"\n     *\n     * It is not required for the initiator of the close to wait for the\n     * responding close_notify alert before closing the read side of the\n     * connection.\n     */\n    gnutls_bye (data->state, GNUTLS_SHUT_WR);\n\n    gnutls_certificate_free_credentials (data->xcred);\n    gnutls_deinit (data->state);\n    FREE (&conn->sockdata);\n  }\n\n  return raw_socket_close (conn);\n}\n\nstatic int tls_starttls_close (CONNECTION* conn)\n{\n  int rc;\n\n  rc = tls_socket_close (conn);\n  conn->conn_read = raw_socket_read;\n  conn->conn_write = raw_socket_write;\n  conn->conn_close = raw_socket_close;\n\n  return rc;\n}\n\n#define CERT_SEP \"-----BEGIN\"\n\n/* this bit is based on read_ca_file() in gnutls */\nstatic int tls_compare_certificates (const gnutls_datum_t *peercert)\n{\n  gnutls_datum_t cert;\n  unsigned char *ptr;\n  FILE *fd1;\n  int ret;\n  gnutls_datum_t b64_data;\n  unsigned char *b64_data_data;\n  struct stat filestat;\n\n  if (stat(SslCertFile, &filestat) == -1)\n    return 0;\n\n  b64_data.size = filestat.st_size+1;\n  b64_data_data = (unsigned char *) safe_calloc (1, b64_data.size);\n  b64_data_data[b64_data.size-1] = '\\0';\n  b64_data.data = b64_data_data;\n\n  fd1 = fopen(SslCertFile, \"r\");\n  if (fd1 == NULL) {\n    return 0;\n  }\n\n  b64_data.size = fread(b64_data.data, 1, b64_data.size, fd1);\n  safe_fclose (&fd1);\n\n  do {\n    ret = gnutls_pem_base64_decode_alloc(NULL, &b64_data, &cert);\n    if (ret != 0)\n    {\n      FREE (&b64_data_data);\n      return 0;\n    }\n\n    /* find start of cert, skipping junk */\n    ptr = (unsigned char *)strstr((char*)b64_data.data, CERT_SEP);\n    if (!ptr)\n    {\n      gnutls_free(cert.data);\n      FREE (&b64_data_data);\n      return 0;\n    }\n    /* find start of next cert */\n    ptr = (unsigned char *)strstr((char*)ptr + 1, CERT_SEP);\n\n    b64_data.size = b64_data.size - (ptr - b64_data.data);\n    b64_data.data = ptr;\n\n    if (cert.size == peercert->size)\n    {\n      if (memcmp (cert.data, peercert->data, cert.size) == 0)\n      {\n\t/* match found */\n        gnutls_free(cert.data);\n\tFREE (&b64_data_data);\n\treturn 1;\n      }\n    }\n\n    gnutls_free(cert.data);\n  } while (ptr != NULL);\n\n  /* no match found */\n  FREE (&b64_data_data);\n  return 0;\n}\n\nstatic void tls_fingerprint (gnutls_digest_algorithm_t algo,\n                             char* s, int l, const gnutls_datum_t* data)\n{\n  unsigned char md[36];\n  size_t n;\n  int j;\n\n  n = 36;\n\n  if (gnutls_fingerprint (algo, data, (char *)md, &n) < 0)\n  {\n    snprintf (s, l, _(\"[unable to calculate]\"));\n  }\n  else\n  {\n    for (j = 0; j < (int) n; j++)\n    {\n      char ch[8];\n      snprintf (ch, 8, \"%02X%s\", md[j], (j % 2 ? \" \" : \"\"));\n      safe_strcat (s, l, ch);\n    }\n    s[2*n+n/2-1] = '\\0'; /* don't want trailing space */\n  }\n}\n\nstatic char *tls_make_date (time_t t, char *s, size_t len)\n{\n  struct tm *l = gmtime (&t);\n\n  if (l)\n    snprintf (s, len,  \"%s, %d %s %d %02d:%02d:%02d UTC\",\n\t      Weekdays[l->tm_wday], l->tm_mday, Months[l->tm_mon],\n\t      l->tm_year + 1900, l->tm_hour, l->tm_min, l->tm_sec);\n  else\n    strfcpy (s, _(\"[invalid date]\"), len);\n\n  return (s);\n}\n\nstatic int tls_check_stored_hostname (const gnutls_datum_t *cert,\n                                      const char *hostname)\n{\n  char buf[80];\n  FILE *fp;\n  char *linestr = NULL;\n  size_t linestrsize;\n  int linenum = 0;\n  regex_t preg;\n  regmatch_t pmatch[3];\n\n  /* try checking against names stored in stored certs file */\n  if ((fp = fopen (SslCertFile, \"r\")))\n  {\n    if (REGCOMP(&preg, \"^#H ([a-zA-Z0-9_\\\\.-]+) ([0-9A-F]{4}( [0-9A-F]{4}){7})[ \\t]*$\",\n                REG_ICASE) != 0)\n    {\n       return 0;\n    }\n\n    buf[0] = '\\0';\n    tls_fingerprint (GNUTLS_DIG_MD5, buf, sizeof (buf), cert);\n    while ((linestr = mutt_read_line(linestr, &linestrsize, fp, &linenum, 0)) != NULL)\n    {\n      if(linestr[0] == '#' && linestr[1] == 'H')\n      {\n        if (regexec(&preg, linestr, 3, pmatch, 0) == 0)\n        {\n          linestr[pmatch[1].rm_eo] = '\\0';\n          linestr[pmatch[2].rm_eo] = '\\0';\n          if (strcmp(linestr + pmatch[1].rm_so, hostname) == 0 &&\n              strcmp(linestr + pmatch[2].rm_so, buf) == 0)\n          {\n            regfree(&preg);\n            FREE(&linestr);\n            safe_fclose (&fp);\n            return 1;\n          }\n        }\n      }\n    }\n\n    regfree(&preg);\n    safe_fclose (&fp);\n  }\n\n  /* not found a matching name */\n  return 0;\n}\n\nstatic int tls_check_preauth (const gnutls_datum_t *certdata,\n                              gnutls_certificate_status_t certstat,\n                              const char *hostname, int chainidx, int* certerr,\n                              int* savedcert)\n{\n  gnutls_x509_crt_t cert;\n\n  *certerr = CERTERR_VALID;\n  *savedcert = 0;\n\n  if (gnutls_x509_crt_init (&cert) < 0)\n  {\n    mutt_error (_(\"Error initialising gnutls certificate data\"));\n    mutt_sleep (2);\n    return -1;\n  }\n\n  if (gnutls_x509_crt_import (cert, certdata, GNUTLS_X509_FMT_DER) < 0)\n  {\n    mutt_error (_(\"Error processing certificate data\"));\n    mutt_sleep (2);\n    gnutls_x509_crt_deinit (cert);\n    return -1;\n  }\n\n  if (option (OPTSSLVERIFYDATES) != M_NO)\n  {\n    if (gnutls_x509_crt_get_expiration_time (cert) < time(NULL))\n      *certerr |= CERTERR_EXPIRED;\n    if (gnutls_x509_crt_get_activation_time (cert) > time(NULL))\n      *certerr |= CERTERR_NOTYETVALID;\n  }\n\n  if (chainidx == 0 && option (OPTSSLVERIFYHOST) != M_NO\n      && !gnutls_x509_crt_check_hostname (cert, hostname)\n      && !tls_check_stored_hostname (certdata, hostname))\n    *certerr |= CERTERR_HOSTNAME;\n\n  /* see whether certificate is in our cache (certificates file) */\n  if (tls_compare_certificates (certdata))\n  {\n    *savedcert = 1;\n\n    if (chainidx == 0 && (certstat & GNUTLS_CERT_INVALID))\n    {\n      /* doesn't matter - have decided is valid because server\n       certificate is in our trusted cache */\n      certstat ^= GNUTLS_CERT_INVALID;\n    }\n\n    if (chainidx == 0 && (certstat & GNUTLS_CERT_SIGNER_NOT_FOUND))\n    {\n      /* doesn't matter that we haven't found the signer, since\n       certificate is in our trusted cache */\n      certstat ^= GNUTLS_CERT_SIGNER_NOT_FOUND;\n    }\n\n    if (chainidx <= 1 && (certstat & GNUTLS_CERT_SIGNER_NOT_CA))\n    {\n      /* Hmm. Not really sure how to handle this, but let's say\n       that we don't care if the CA certificate hasn't got the\n       correct X.509 basic constraints if server or first signer\n       certificate is in our cache. */\n      certstat ^= GNUTLS_CERT_SIGNER_NOT_CA;\n    }\n\n    if (chainidx == 0 && (certstat & GNUTLS_CERT_INSECURE_ALGORITHM))\n    {\n      /* doesn't matter that it was signed using an insecure\n         algorithm, since certificate is in our trusted cache */\n      certstat ^= GNUTLS_CERT_INSECURE_ALGORITHM;\n    }\n  }\n\n  if (certstat & GNUTLS_CERT_REVOKED)\n  {\n    *certerr |= CERTERR_REVOKED;\n    certstat ^= GNUTLS_CERT_REVOKED;\n  }\n\n  if (certstat & GNUTLS_CERT_INVALID)\n  {\n    *certerr |= CERTERR_NOTTRUSTED;\n    certstat ^= GNUTLS_CERT_INVALID;\n  }\n\n  if (certstat & GNUTLS_CERT_SIGNER_NOT_FOUND)\n  {\n    /* NB: already cleared if cert in cache */\n    *certerr |= CERTERR_NOTTRUSTED;\n    certstat ^= GNUTLS_CERT_SIGNER_NOT_FOUND;\n  }\n\n  if (certstat & GNUTLS_CERT_SIGNER_NOT_CA)\n  {\n    /* NB: already cleared if cert in cache */\n    *certerr |= CERTERR_SIGNERNOTCA;\n    certstat ^= GNUTLS_CERT_SIGNER_NOT_CA;\n  }\n\n  if (certstat & GNUTLS_CERT_INSECURE_ALGORITHM)\n  {\n    /* NB: already cleared if cert in cache */\n    *certerr |= CERTERR_INSECUREALG;\n    certstat ^= GNUTLS_CERT_INSECURE_ALGORITHM;\n  }\n\n  gnutls_x509_crt_deinit (cert);\n\n  /* we've been zeroing the interesting bits in certstat -\n   don't return OK if there are any unhandled bits we don't\n   understand */\n  if (*certerr == CERTERR_VALID && certstat == 0)\n    return 0;\n\n  return -1;\n}\n\n/*\n * Returns 0 on failure, nonzero on success.\n */\nstatic int tls_check_one_certificate (const gnutls_datum_t *certdata,\n                                      gnutls_certificate_status_t certstat,\n                                      const char* hostname, int idx, int len)\n{\n  int certerr, savedcert;\n  gnutls_x509_crt_t cert;\n  char buf[SHORT_STRING];\n  char fpbuf[SHORT_STRING];\n  size_t buflen;\n  char dn_common_name[SHORT_STRING];\n  char dn_email[SHORT_STRING];\n  char dn_organization[SHORT_STRING];\n  char dn_organizational_unit[SHORT_STRING];\n  char dn_locality[SHORT_STRING];\n  char dn_province[SHORT_STRING];\n  char dn_country[SHORT_STRING];\n  time_t t;\n  char datestr[30];\n  MUTTMENU *menu;\n  char helpstr[LONG_STRING];\n  char title[STRING];\n  FILE *fp;\n  gnutls_datum_t pemdata;\n  int i, row, done, ret;\n\n  if (!tls_check_preauth (certdata, certstat, hostname, idx, &certerr,\n      &savedcert))\n    return 1;\n\n  /* skip signers if insecure algorithm was used */\n  if (idx && (certerr & CERTERR_INSECUREALG))\n  {\n    if (idx == 1)\n    {\n      mutt_error (_(\"Warning: Server certificate was signed using an insecure algorithm\"));\n      mutt_sleep (2);\n    }\n    return 0;\n  }\n\n  /* interactive check from user */\n  if (gnutls_x509_crt_init (&cert) < 0)\n  {\n    mutt_error (_(\"Error initialising gnutls certificate data\"));\n    mutt_sleep (2);\n    return 0;\n  }\n\n  if (gnutls_x509_crt_import (cert, certdata, GNUTLS_X509_FMT_DER) < 0)\n  {\n    mutt_error (_(\"Error processing certificate data\"));\n    mutt_sleep (2);\n    gnutls_x509_crt_deinit (cert);\n    return 0;\n  }\n\n  menu = mutt_new_menu (MENU_GENERIC);\n  menu->max = 25;\n  menu->dialog = (char **) safe_calloc (1, menu->max * sizeof (char *));\n  for (i = 0; i < menu->max; i++)\n    menu->dialog[i] = (char *) safe_calloc (1, SHORT_STRING * sizeof (char));\n\n  row = 0;\n  strfcpy (menu->dialog[row], _(\"This certificate belongs to:\"), SHORT_STRING);\n  row++;\n\n  buflen = sizeof (dn_common_name);\n  if (gnutls_x509_crt_get_dn_by_oid (cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0,\n                                     dn_common_name, &buflen) != 0)\n    dn_common_name[0] = '\\0';\n  buflen = sizeof (dn_email);\n  if (gnutls_x509_crt_get_dn_by_oid (cert, GNUTLS_OID_PKCS9_EMAIL, 0, 0,\n                                     dn_email, &buflen) != 0)\n    dn_email[0] = '\\0';\n  buflen = sizeof (dn_organization);\n  if (gnutls_x509_crt_get_dn_by_oid (cert, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0,\n                                     dn_organization, &buflen) != 0)\n    dn_organization[0] = '\\0';\n  buflen = sizeof (dn_organizational_unit);\n  if (gnutls_x509_crt_get_dn_by_oid (cert, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, 0,\n                                     dn_organizational_unit, &buflen) != 0)\n    dn_organizational_unit[0] = '\\0';\n  buflen = sizeof (dn_locality);\n  if (gnutls_x509_crt_get_dn_by_oid (cert, GNUTLS_OID_X520_LOCALITY_NAME, 0, 0,\n                                     dn_locality, &buflen) != 0)\n    dn_locality[0] = '\\0';\n  buflen = sizeof (dn_province);\n  if (gnutls_x509_crt_get_dn_by_oid (cert, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, 0,\n                                     dn_province, &buflen) != 0)\n    dn_province[0] = '\\0';\n  buflen = sizeof (dn_country);\n  if (gnutls_x509_crt_get_dn_by_oid (cert, GNUTLS_OID_X520_COUNTRY_NAME, 0, 0,\n                                     dn_country, &buflen) != 0)\n    dn_country[0] = '\\0';\n\n  snprintf (menu->dialog[row++], SHORT_STRING, \"   %s  %s\", dn_common_name, dn_email);\n  snprintf (menu->dialog[row++], SHORT_STRING, \"   %s\", dn_organization);\n  snprintf (menu->dialog[row++], SHORT_STRING, \"   %s\", dn_organizational_unit);\n  snprintf (menu->dialog[row++], SHORT_STRING, \"   %s  %s  %s\",\n            dn_locality, dn_province, dn_country);\n  row++;\n\n  strfcpy (menu->dialog[row], _(\"This certificate was issued by:\"), SHORT_STRING);\n  row++;\n\n  buflen = sizeof (dn_common_name);\n  if (gnutls_x509_crt_get_issuer_dn_by_oid (cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0,\n                                            dn_common_name, &buflen) != 0)\n    dn_common_name[0] = '\\0';\n  buflen = sizeof (dn_email);\n  if (gnutls_x509_crt_get_issuer_dn_by_oid (cert, GNUTLS_OID_PKCS9_EMAIL, 0, 0,\n                                            dn_email, &buflen) != 0)\n    dn_email[0] = '\\0';\n  buflen = sizeof (dn_organization);\n  if (gnutls_x509_crt_get_issuer_dn_by_oid (cert, GNUTLS_OID_X520_ORGANIZATION_NAME, 0, 0,\n                                            dn_organization, &buflen) != 0)\n    dn_organization[0] = '\\0';\n  buflen = sizeof (dn_organizational_unit);\n  if (gnutls_x509_crt_get_issuer_dn_by_oid (cert, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME, 0, 0,\n                                            dn_organizational_unit, &buflen) != 0)\n    dn_organizational_unit[0] = '\\0';\n  buflen = sizeof (dn_locality);\n  if (gnutls_x509_crt_get_issuer_dn_by_oid (cert, GNUTLS_OID_X520_LOCALITY_NAME, 0, 0,\n                                            dn_locality, &buflen) != 0)\n    dn_locality[0] = '\\0';\n  buflen = sizeof (dn_province);\n  if (gnutls_x509_crt_get_issuer_dn_by_oid (cert, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0, 0,\n                                            dn_province, &buflen) != 0)\n    dn_province[0] = '\\0';\n  buflen = sizeof (dn_country);\n  if (gnutls_x509_crt_get_issuer_dn_by_oid (cert, GNUTLS_OID_X520_COUNTRY_NAME, 0, 0,\n                                            dn_country, &buflen) != 0)\n    dn_country[0] = '\\0';\n\n  snprintf (menu->dialog[row++], SHORT_STRING, \"   %s  %s\", dn_common_name, dn_email);\n  snprintf (menu->dialog[row++], SHORT_STRING, \"   %s\", dn_organization);\n  snprintf (menu->dialog[row++], SHORT_STRING, \"   %s\", dn_organizational_unit);\n  snprintf (menu->dialog[row++], SHORT_STRING, \"   %s  %s  %s\",\n            dn_locality, dn_province, dn_country);\n  row++;\n\n  snprintf (menu->dialog[row++], SHORT_STRING, _(\"This certificate is valid\"));\n\n  t = gnutls_x509_crt_get_activation_time (cert);\n  snprintf (menu->dialog[row++], SHORT_STRING, _(\"   from %s\"),\n\t    tls_make_date (t, datestr, 30));\n\n  t = gnutls_x509_crt_get_expiration_time (cert);\n  snprintf (menu->dialog[row++], SHORT_STRING, _(\"     to %s\"),\n\t    tls_make_date (t, datestr, 30));\n\n  fpbuf[0] = '\\0';\n  tls_fingerprint (GNUTLS_DIG_SHA, fpbuf, sizeof (fpbuf), certdata);\n  snprintf (menu->dialog[row++], SHORT_STRING, _(\"SHA1 Fingerprint: %s\"), fpbuf);\n  fpbuf[0] = '\\0';\n  tls_fingerprint (GNUTLS_DIG_MD5, fpbuf, sizeof (fpbuf), certdata);\n  snprintf (menu->dialog[row++], SHORT_STRING, _(\"MD5 Fingerprint: %s\"), fpbuf);\n\n  if (certerr & CERTERR_NOTYETVALID)\n  {\n    row++;\n    strfcpy (menu->dialog[row], _(\"WARNING: Server certificate is not yet valid\"), SHORT_STRING);\n  }\n  if (certerr & CERTERR_EXPIRED)\n  {\n    row++;\n    strfcpy (menu->dialog[row], _(\"WARNING: Server certificate has expired\"), SHORT_STRING);\n  }\n  if (certerr & CERTERR_REVOKED)\n  {\n    row++;\n    strfcpy (menu->dialog[row], _(\"WARNING: Server certificate has been revoked\"), SHORT_STRING);\n  }\n  if (certerr & CERTERR_HOSTNAME)\n  {\n    row++;\n    strfcpy (menu->dialog[row], _(\"WARNING: Server hostname does not match certificate\"), SHORT_STRING);\n  }\n  if (certerr & CERTERR_SIGNERNOTCA)\n  {\n    row++;\n    strfcpy (menu->dialog[row], _(\"WARNING: Signer of server certificate is not a CA\"), SHORT_STRING);\n  }\n\n  snprintf (title, sizeof (title),\n            _(\"SSL Certificate check (certificate %d of %d in chain)\"),\n            len - idx, len);\n  menu->title = title;\n  /* certificates with bad dates, or that are revoked, must be\n   accepted manually each and every time */\n  if (SslCertFile && !savedcert\n        && !(certerr & (CERTERR_EXPIRED | CERTERR_NOTYETVALID\n                        | CERTERR_REVOKED)))\n  {\n    menu->prompt = _(\"(r)eject, accept (o)nce, (a)ccept always\");\n    menu->keys = _(\"roa\");\n  }\n  else\n  {\n    menu->prompt = _(\"(r)eject, accept (o)nce\");\n    menu->keys = _(\"ro\");\n  }\n\n  helpstr[0] = '\\0';\n  mutt_make_help (buf, sizeof (buf), _(\"Exit  \"), MENU_GENERIC, OP_EXIT);\n  safe_strcat (helpstr, sizeof (helpstr), buf);\n  mutt_make_help (buf, sizeof (buf), _(\"Help\"), MENU_GENERIC, OP_HELP);\n  safe_strcat (helpstr, sizeof (helpstr), buf);\n  menu->help = helpstr;\n\n  done = 0;\n  set_option (OPTIGNOREMACROEVENTS);\n  while (!done)\n  {\n    switch (mutt_menuLoop (menu))\n    {\n      case -1:\t\t\t/* abort */\n      case OP_MAX + 1:\t\t/* reject */\n      case OP_EXIT:\n        done = 1;\n        break;\n      case OP_MAX + 3:\t\t/* accept always */\n        done = 0;\n        if ((fp = fopen (SslCertFile, \"a\")))\n\t{\n\t  /* save hostname if necessary */\n\t  if (certerr & CERTERR_HOSTNAME)\n\t  {\n\t    fprintf(fp, \"#H %s %s\\n\", hostname, fpbuf);\n\t    done = 1;\n\t  }\n\t  if (certerr & CERTERR_NOTTRUSTED)\n\t  {\n            done = 0;\n\t    ret = gnutls_pem_base64_encode_alloc (\"CERTIFICATE\", certdata,\n                                                  &pemdata);\n\t    if (ret == 0)\n\t    {\n\t      if (fwrite (pemdata.data, pemdata.size, 1, fp) == 1)\n\t      {\n\t\tdone = 1;\n\t      }\n              gnutls_free (pemdata.data);\n\t    }\n\t  }\n\t  safe_fclose (&fp);\n\t}\n\tif (!done)\n        {\n\t  mutt_error (_(\"Warning: Couldn't save certificate\"));\n\t  mutt_sleep (2);\n\t}\n\telse\n        {\n\t  mutt_message (_(\"Certificate saved\"));\n\t  mutt_sleep (0);\n\t}\n        /* fall through */\n      case OP_MAX + 2:\t\t/* accept once */\n        done = 2;\n        break;\n    }\n  }\n  unset_option (OPTIGNOREMACROEVENTS);\n  mutt_menuDestroy (&menu);\n  gnutls_x509_crt_deinit (cert);\n\n  return (done == 2);\n}\n\n/* sanity-checking wrapper for gnutls_certificate_verify_peers */\nstatic gnutls_certificate_status_t tls_verify_peers (gnutls_session_t tlsstate)\n{\n  int verify_ret;\n  unsigned int status;\n\n  verify_ret = gnutls_certificate_verify_peers2 (tlsstate, &status);\n  if (!verify_ret)\n    return status;\n\n  if (status == GNUTLS_E_NO_CERTIFICATE_FOUND)\n  {\n    mutt_error (_(\"Unable to get certificate from peer\"));\n    mutt_sleep (2);\n    return 0;\n  }\n  if (verify_ret < 0)\n  {\n    mutt_error (_(\"Certificate verification error (%s)\"),\n                gnutls_strerror (status));\n    mutt_sleep (2);\n    return 0;\n  }\n\n  /* We only support X.509 certificates (not OpenPGP) at the moment */\n  if (gnutls_certificate_type_get (tlsstate) != GNUTLS_CRT_X509)\n  {\n    mutt_error (_(\"Certificate is not X.509\"));\n    mutt_sleep (2);\n    return 0;\n  }\n\n  return status;\n}\n\nstatic int tls_check_certificate (CONNECTION* conn)\n{\n  tlssockdata *data = conn->sockdata;\n  gnutls_session_t state = data->state;\n  const gnutls_datum_t *cert_list;\n  unsigned int cert_list_size = 0;\n  gnutls_certificate_status_t certstat;\n  int certerr, i, preauthrc, savedcert, rc = 0;\n  int rcpeer = -1; /* the result of tls_check_preauth() on the peer's EE cert */\n\n  if (gnutls_auth_get_type (state) != GNUTLS_CRD_CERTIFICATE)\n  {\n    mutt_error (_(\"Unable to get certificate from peer\"));\n    mutt_sleep (2);\n    return 0;\n  }\n\n  certstat = tls_verify_peers (state);\n\n  cert_list = gnutls_certificate_get_peers (state, &cert_list_size);\n  if (!cert_list)\n  {\n    mutt_error (_(\"Unable to get certificate from peer\"));\n    mutt_sleep (2);\n    return 0;\n  }\n\n  /* tls_verify_peers doesn't check hostname or expiration, so walk\n   * from most specific to least checking these. If we see a saved certificate,\n   * its status short-circuits the remaining checks. */\n  preauthrc = 0;\n  for (i = 0; i < cert_list_size; i++) {\n    rc = tls_check_preauth(&cert_list[i], certstat, conn->account.host, i,\n                           &certerr, &savedcert);\n    preauthrc += rc;\n    if (i == 0)\n    {\n      /* This is the peer's end-entity X.509 certificate.  Stash the result\n       * to check later in this function.\n       */\n      rcpeer = rc;\n    }\n\n    if (savedcert)\n    {\n      if (!preauthrc)\n        return 1;\n      else\n        break;\n    }\n  }\n\n  /* then check interactively, starting from chain root */\n  for (i = cert_list_size - 1; i >= 0; i--)\n  {\n    rc = tls_check_one_certificate (&cert_list[i], certstat, conn->account.host,\n                                    i, cert_list_size);\n\n    /* add signers to trust set, then reverify */\n    if (i && rc) {\n      rc = gnutls_certificate_set_x509_trust_mem (data->xcred, &cert_list[i],\n                                                  GNUTLS_X509_FMT_DER);\n      if (rc != 1)\n        dprint (1, (debugfile, \"error trusting certificate %d: %d\\n\", i, rc));\n\n      certstat = tls_verify_peers (state);\n      /* If the cert chain now verifies, and the peer's cert was otherwise\n       * valid (rcpeer==0), we are done.\n       */\n      if (!certstat && !rcpeer)\n        return 1;\n    }\n  }\n\n  return rc;\n}\n"
  },
  {
    "path": "mutt_tunnel.c",
    "content": "/*\n * Copyright (C) 2000 Manoj Kasichainula <manoj@io.com>\n * Copyright (C) 2001,2005 Brendan Cully <brendan@kublai.com>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_socket.h\"\n#include \"mutt_tunnel.h\"\n\n#include <netinet/in.h>\n#include <sys/types.h>\n#include <sys/socket.h>\n#include <sys/wait.h>\n#include <fcntl.h>\n#include <errno.h>\n\n/* -- data types -- */\ntypedef struct\n{\n  pid_t pid;\n  int readfd;\n  int writefd;\n} TUNNEL_DATA;\n\n/* forward declarations */\nstatic int tunnel_socket_open (CONNECTION*);\nstatic int tunnel_socket_close (CONNECTION*);\nstatic int tunnel_socket_read (CONNECTION* conn, char* buf, size_t len);\nstatic int tunnel_socket_write (CONNECTION* conn, const char* buf, size_t len);\nstatic int tunnel_socket_poll (CONNECTION* conn);\n\n/* -- public functions -- */\nint mutt_tunnel_socket_setup (CONNECTION *conn)\n{\n  conn->conn_open = tunnel_socket_open;\n  conn->conn_close = tunnel_socket_close;\n  conn->conn_read = tunnel_socket_read;\n  conn->conn_write = tunnel_socket_write;\n  conn->conn_poll = tunnel_socket_poll;\n\n  return 0;\n}\n\nstatic int tunnel_socket_open (CONNECTION *conn)\n{\n  TUNNEL_DATA* tunnel;\n  int pid;\n  int rc;\n  int pin[2], pout[2];\n\n  tunnel = (TUNNEL_DATA*) safe_malloc (sizeof (TUNNEL_DATA));\n  conn->sockdata = tunnel;\n\n  mutt_message (_(\"Connecting with \\\"%s\\\"...\"), Tunnel);\n\n  if ((rc = pipe (pin)) == -1)\n  {\n    mutt_perror (\"pipe\");\n    return -1;\n  }\n  if ((rc = pipe (pout)) == -1)\n  {\n    mutt_perror (\"pipe\");\n    return -1;\n  }\n\n  mutt_block_signals_system ();\n  if ((pid = fork ()) == 0)\n  {\n    mutt_unblock_signals_system (0);\n    if (dup2 (pout[0], STDIN_FILENO) < 0 || dup2 (pin[1], STDOUT_FILENO) < 0)\n      _exit (127);\n    close (pin[0]);\n    close (pin[1]);\n    close (pout[0]);\n    close (pout[1]);\n    close (STDERR_FILENO);\n\n    /* Don't let the subprocess think it can use the controlling tty */\n    setsid ();\n\n    execl (EXECSHELL, \"sh\", \"-c\", Tunnel, NULL);\n    _exit (127);\n  }\n  mutt_unblock_signals_system (1);\n\n  if (pid == -1)\n  {\n    close (pin[0]);\n    close (pin[1]);\n    close (pout[0]);\n    close (pout[1]);\n    mutt_perror (\"fork\");\n    return -1;\n  }\n  if (close (pin[1]) < 0 || close (pout[0]) < 0)\n    mutt_perror (\"close\");\n\n  fcntl (pin[0], F_SETFD, FD_CLOEXEC);\n  fcntl (pout[1], F_SETFD, FD_CLOEXEC);\n\n  tunnel->readfd = pin[0];\n  tunnel->writefd = pout[1];\n  tunnel->pid = pid;\n\n  conn->fd = 42; /* stupid hack */\n\n  return 0;\n}\n\nstatic int tunnel_socket_close (CONNECTION* conn)\n{\n  TUNNEL_DATA* tunnel = (TUNNEL_DATA*) conn->sockdata;\n  int status;\n\n  close (tunnel->readfd);\n  close (tunnel->writefd);\n  waitpid (tunnel->pid, &status, 0);\n  if (!WIFEXITED(status) || WEXITSTATUS(status))\n  {\n    mutt_error(_(\"Tunnel to %s returned error %d (%s)\"), conn->account.host,\n               WEXITSTATUS(status),\n               NONULL(mutt_strsysexit(WEXITSTATUS(status))));\n    mutt_sleep (2);\n  }\n  FREE (&conn->sockdata);\n\n  return 0;\n}\n\nstatic int tunnel_socket_read (CONNECTION* conn, char* buf, size_t len)\n{\n  TUNNEL_DATA* tunnel = (TUNNEL_DATA*) conn->sockdata;\n  int rc;\n\n  rc = read (tunnel->readfd, buf, len);\n  if (rc == -1)\n  {\n    mutt_error (_(\"Tunnel error talking to %s: %s\"), conn->account.host,\n\t\tstrerror (errno));\n    mutt_sleep (1);\n  }\n\n  return rc;\n}\n\nstatic int tunnel_socket_write (CONNECTION* conn, const char* buf, size_t len)\n{\n  TUNNEL_DATA* tunnel = (TUNNEL_DATA*) conn->sockdata;\n  int rc;\n\n  rc = write (tunnel->writefd, buf, len);\n  if (rc == -1)\n  {\n    mutt_error (_(\"Tunnel error talking to %s: %s\"), conn->account.host,\n\t\tstrerror (errno));\n    mutt_sleep (1);\n  }\n\n  return rc;\n}\n\nstatic int tunnel_socket_poll (CONNECTION* conn)\n{\n  TUNNEL_DATA* tunnel = (TUNNEL_DATA*) conn->sockdata;\n  int ofd;\n  int rc;\n\n  ofd = conn->fd;\n  conn->fd = tunnel->readfd;\n  rc = raw_socket_poll (conn);\n  conn->fd = ofd;\n\n  return rc;\n}\n"
  },
  {
    "path": "mutt_tunnel.h",
    "content": "/*\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifndef _MUTT_TUNNEL_H_\n#define _MUTT_TUNNEL_H_ 1\n\n#include \"mutt_socket.h\"\n\nint mutt_tunnel_socket_setup (CONNECTION *);\n\n#endif /* _MUTT_TUNNEL_H_ */\n"
  },
  {
    "path": "muttbug",
    "content": "#!/bin/sh\n\nexec flea \"$@\"\n"
  },
  {
    "path": "muttbug.sh.in",
    "content": "#!/bin/sh\n\n#\n#     File a bug against the Mutt mail user agent.\n#\n\n# \n#     $Id$\n#\n\n#\n#     Copyright (c) 2000 Thomas Roessler <roessler@does-not-exist.org>\n#\n#\n#     This program is free software; you can redistribute it and/or modify\n#     it under the terms of the GNU General Public License as published by\n#     the Free Software Foundation; either version 2 of the License, or\n#     (at your option) any later version.\n# \n#     This program is distributed in the hope that it will be useful,\n#     but WITHOUT ANY WARRANTY; without even the implied warranty of\n#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n#     GNU General Public License for more details.\n# \n#     You should have received a copy of the GNU General Public License\n#     along with this program; if not, write to the Free Software\n#     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n#\n\nSUBMIT=\"fleas@mutt.org\"\nDEBIAN_SUBMIT=\"submit@bugs.debian.org\"\n\nprefix=@prefix@\n\nDEBUGGER=@DEBUGGER@\nSENDMAIL=@SENDMAIL@\nsysconfdir=@sysconfdir@\npkgdatadir=@pkgdatadir@\n\ninclude_file ()\n{\n\techo\n\techo \"--- Begin $1\"\n\tsed -e '/^[\t ]*#/d; /^[\t ]*$/d; s/^-/- -/' $1\n\techo \"--- End $1\"\n\techo\n}\n\ndebug_gdb ()\n{\n\tcat << EOF > $SCRATCH/gdb.rc\nbt\nlist\nquit\nEOF\n\t$DEBUGGER -n -x $SCRATCH/gdb.rc -c $CORE mutt\n}\n\ndebug_dbx ()\n{\n\tcat << EOF > $SCRATCH/dbx.rc\nwhere\nlist\nquit\nEOF\n\t$DEBUGGER -s $SCRATCH/dbx.rc mutt $CORE\n}\n\ndebug_sdb ()\n{\n\tcat << EOF > $SCRATCH/sdb.rc\nt\nw\nq\nEOF\n\t$DEBUGGER mutt $CORE < $SCRATCH/sdb.rc\n}\n\ncase `echo -n` in\n\"\") n=-n; c=   ;;\n *) n=; c='\\c' ;;\nesac\n \n\nexec > /dev/tty\nexec < /dev/tty\n\nSCRATCH=${TMPDIR-/tmp}/`basename $0`.`hostname`.$$\n\nmkdir ${SCRATCH} || \\\n{ \n\techo \"`basename $0`: Can't create temporary directory.\" >& 2 ; \n\texit 1 ; \n}\n\ntrap \"rm -r -f ${SCRATCH} ; trap '' 0 ; exit\" 0 1 2\n\nTEMPLATE=${SCRATCH}/template.txt\n\nif test -z \"$EMAIL\" ; then\n\tEMAIL=\"`mutt -Q from 2> /dev/null | sed -e 's/^from=.\\(.*\\).$/\\1/'`\"\nfi\n\nEMAILTMP=''\nwhile test -z \"$EMAILTMP\"\ndo\n  echo \"Please enter your e-mail address [$EMAIL]:\"\n  echo $n \"> $c\"\n  read EMAILTMP\n\n  if test -z \"$EMAILTMP\"; then EMAILTMP=\"$EMAIL\"; fi\n\n  if ! echo \"$EMAILTMP\" | grep -q @\n  then\n    echo \"$EMAILTMP does not appear to be a valid email address\"\n    EMAILTMP=''\n    continue\n  fi\n\n  EMAIL=\"$EMAILTMP\"\ndone\n\necho \"Please enter a one-line description of the problem you experience:\"\necho $n \"> $c\"\nread SUBJECT\n\ncat <<EOF  \nWhat should the severity for this bug report be?\n\n       0) Feature request, or maybe a bug which is very difficult to\n       fix due to major design considerations.\n\n       1) The package fails to perform correctly in some conditions,\n       or on some systems, or fails to comply with current policy\n       documents. Most bugs are in this category.\n\n       2) This bug makes this version of the package unsuitable for\n       a stable release.\n\n       3) Dangerous bug. Makes the package in question unusable by\n       anyone or mostly so, or causes data loss, or introduces a\n       security hole allowing access to the accounts of users who\n       use the package.\n\n       4) Critical bug. Makes unrelated software on the system (or\n       the whole system) break, or causes serious data loss, or\n       introduces a security hole on systems where you install the\n       package.\n\nEOF\necho $n \"Severity? [01234] $c\"\nread severity\ncase \"$severity\" in\n0|[Ww]) severity=wishlist  ;;\n2|[Ii]) severity=important ;;\n3|[Gg]) severity=grave     ;;\n4|[Cc]) severity=critical  ;;\n     *) severity=normal    ;;\nesac\n\nif test -x $DEBUGGER ; then\n\ttest -f core && CORE=core\n\techo \"If mutt has crashed, it may have saved some program state in\"\n\techo \"a file named core.  We can include this information with the bug\"\n\techo \"report if you wish so.\"\n\techo \"Do you want to include information gathered from a core file?\"\n\techo \"If yes, please enter the path - otherwise just say no: [$CORE]\"\n\techo $n \"> $c\"\n\tread _CORE\n\ttest \"$_CORE\" && CORE=\"$_CORE\"\nfi\n\necho $n \"Do you want to include your personal mutt configuration files? [Y|n] $c\"\nread personal\ncase \"$personal\" in\n[nN]*)  personal=no  ;;\n    *)  personal=yes ;;\nesac\n\necho $n \"Do you want to include your system's global mutt configuration file? [Y|n] $c\"\nread global\ncase \"$global\" in\n[nN]*)  global=no  ;;\n    *)\tglobal=yes ;;\nesac\n\nif test -f /etc/debian_version ; then\n\tDEBIAN=yes\n\techo $n \"Checking whether mutt has been installed as a package... $c\"\n\tDEBIANVERSION=\"`dpkg -l mutt | grep '^[ih]' | awk '{print $3}'`\" 2> /dev/null\n\tif test \"$DEBIANVERSION\" ; then\n\t\tDPKG=yes\n\telse\n\t\tDPKG=no\n\t\tunset DEBIANVERSION\n\tfi\n\techo \"$DPKG\"\n\techo $n \"File this bug with Debian? [Y|n] $c\"\n\tread DPKG\n\tcase \"$DPKG\" in\n\t[nN])\tDPKG=no ;;\n\t*)\tDPKG=yes ;;\n\tesac\nelse\n\tDEBIAN=no\n\tDPKG=no\nfi\n\nif rpm -q mutt > /dev/null 2> /dev/null ; then\n\techo \"Mutt seems to come from an RPM package.\"\n\tRPMVERSION=\"`rpm -q mutt`\"\n\tRPMPACKAGER=\"`rpm -q -i mutt | sed -n -e 's/^Packager *: *//p'`\"\nfi\n\nMUTTVERSION=\"`mutt -v | awk '{print $2; exit; }'`\"\ntest \"$DPKG\" = \"yes\" && SUBMIT=\"$SUBMIT, $DEBIAN_SUBMIT\"\n\nexec > ${TEMPLATE}\n\ntest \"$EMAIL\"        && echo \"From: $EMAIL\"\ntest \"$REPLYTO\"      && echo \"Reply-To: $REPLYTO\"\ntest \"$ORGANIZATION\" && echo \"Organization: $ORGANIZATION\"\n\necho \"Subject: mutt-$MUTTVERSION: $SUBJECT\"\necho \"To: $SUBMIT\"\ntest \"$EMAIL\" \t     && echo \"Bcc: ${EMAIL}\"\necho\necho \"Package: mutt\"\necho \"Version: ${DEBIANVERSION-${RPMVERSION-$MUTTVERSION}}\"\necho \"Severity: $severity\"\necho \necho \"-- Please type your report below this line\"\necho\necho\necho\n\nif test \"$DEBIAN\" = \"yes\" ; then\n\techo \"Obtaining Debian-specific information...\" > /dev/tty\n\tbug -p -s dummy mutt < /dev/null 2> /dev/null |        \\\n\t\tsed -n -e \"/^-- System Information/,/^---/p\" | \\\n\t\tgrep -v '^---'\nelse\n\techo \"-- System Information\"\n\techo \"System Version: `uname -a`\"\n\ttest -z \"$RPMPACKAGER\" || echo \"RPM Packager: $RPMPACKAGER\";\n\ttest -f /etc/redhat-release && echo \"RedHat Release: `cat /etc/redhat-release`\"\n\ttest -f /etc/SuSE-release && echo \"SuSE Release: `sed 1q /etc/SuSE-release`\"\n\t# Please provide more of these if you have any.\nfi\n\necho\necho \"-- Mutt Version Information\"\necho\nLC_ALL=C mutt -v\n\nif test \"$CORE\" && test -f \"$CORE\" ; then\n\techo \n\techo \"-- Core Dump Analysis Output\"\n\techo\n\n\tcase \"$DEBUGGER\" in\n\t\t*sdb) debug_sdb $CORE ;;\n\t\t*dbx) debug_dbx $CORE ;;\n\t\t*gdb) debug_gdb $CORE ;;\n\tesac\n\t\n\techo\nfi\n\nif test \"$personal\" = \"yes\" ; then\n\tCANDIDATES=\".muttrc-${MUTTVERSION} .muttrc .mutt/muttrc-${MUTTVERSION} .mutt/muttrc\"\n\tMATCHED=\"none\"\n\tfor f in $CANDIDATES; do\n\t\tif test -f \"${HOME}/$f\" ; then\n\t\t\tMATCHED=\"${HOME}/$f\"\n\t\t\tbreak\n\t        fi\n\tdone\n\t\n\tif test \"$MATCHED\" = \"none\" ; then\n\t\techo \"Warning: Can't find your personal .muttrc.\" >&2\n\telse\n\t\tinclude_file $MATCHED\n\tfi\nfi\n\n\nif test \"$global\" = \"yes\" ; then\n\tCANDIDATES=\"Muttrc-${MUTTVERSION} Muttrc\"\n\tDIRECTORIES=\"$sysconfdir $pkgdatadir\"\n\tMATCHED=\"none\"\n\tfor d in $DIRECTORIES ; do\n\t\tfor f in $CANDIDATES; do\n\t\t\tif test -f $d/$f ; then\n\t\t\t\tMATCHED=\"$d/$f\"\n\t\t\t\tbreak\n\t\t\tfi\n\t\tdone\n\t\ttest \"$MATCHED\" = \"none\" || break\n\tdone\n\t\n\tif test \"$MATCHED\" = \"none\" ; then\n\t\techo \"Warning: Can't find global Muttrc.\" >&2\n\telse\n\t\tinclude_file $MATCHED\n\tfi\nfi\n\nexec > /dev/tty\n\ncp $TEMPLATE $SCRATCH/mutt-bug.txt\n\ninput=\"e\"\nwhile : ; do\n\tif test \"$input\" = \"e\" ; then\n\t\t${VISUAL-${EDITOR-vi}} $SCRATCH/mutt-bug.txt\n\t\tif cmp $SCRATCH/mutt-bug.txt ${TEMPLATE} > /dev/null ; then\n\t\t\techo \"Warning: Bug report was not modified!\"\n\t\tfi\n\tfi\n\t\n\techo $n \"Submit, Edit, View, Quit? [S|e|v|q] $c\"\n\tread _input\n\tinput=\"`echo $_input | tr EVSQ evsq`\"\n\tcase $input in\n\te*)\t;;\n\tv*)\t${PAGER-more} $SCRATCH/mutt-bug.txt ;;\n\ts*|\"\")\t$SENDMAIL -t < $SCRATCH/mutt-bug.txt ; exit ;;\n\tq*)\texit\n\tesac\ndone\n\n"
  },
  {
    "path": "muttlib.c",
    "content": "/*\n * Copyright (C) 1996-2000,2007,2010,2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2008 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mime.h\"\n#include \"mailbox.h\"\n#include \"mx.h\"\n#include \"url.h\"\n\n#ifdef USE_IMAP\n#include \"imap.h\"\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#include \"mutt_crypt.h\"\n\n#include <string.h>\n#include <ctype.h>\n#include <unistd.h>\n#ifdef HAVE_SYS_SYSCALL_H\n#include <sys/syscall.h>\n#endif\n#include <stdlib.h>\n#include <sys/wait.h>\n#include <errno.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <time.h>\n#include <sys/types.h>\n#include <utime.h>\n\nBODY *mutt_new_body (void)\n{\n  BODY *p = (BODY *) safe_calloc (1, sizeof (BODY));\n    \n  p->disposition = DISPATTACH;\n  p->use_disp = 1;\n  return (p);\n}\n\n\n/* Modified by blong to accept a \"suggestion\" for file name.  If\n * that file exists, then construct one with unique name but \n * keep any extension.  This might fail, I guess.\n * Renamed to mutt_adv_mktemp so I only have to change where it's\n * called, and not all possible cases.\n */\nvoid mutt_adv_mktemp (char *s, size_t l)\n{\n  char prefix[_POSIX_PATH_MAX];\n  char *suffix;\n  struct stat sb;\n\n  if (s[0] == '\\0')\n  {\n    mutt_mktemp (s, l);\n  }\n  else\n  {\n    strfcpy (prefix, s, sizeof (prefix));\n    mutt_sanitize_filename (prefix, 1);\n    snprintf (s, l, \"%s/%s\", NONULL (Tempdir), prefix);\n    if (lstat (s, &sb) == -1 && errno == ENOENT)\n      return;\n\n    if ((suffix = strrchr (prefix, '.')) != NULL)\n    {\n      *suffix = 0;\n      ++suffix;\n    }\n    mutt_mktemp_pfx_sfx (s, l, prefix, suffix);\n  }\n}\n\n/* create a send-mode duplicate from a receive-mode body */\n\nint mutt_copy_body (FILE *fp, BODY **tgt, BODY *src)\n{\n  char tmp[_POSIX_PATH_MAX];\n  BODY *b;\n\n  PARAMETER *par, **ppar;\n  \n  short use_disp;\n\n  if (src->filename)\n  {\n    use_disp = 1;\n    strfcpy (tmp, src->filename, sizeof (tmp));\n  }\n  else\n  {\n    use_disp = 0;\n    tmp[0] = '\\0';\n  }\n\n  mutt_adv_mktemp (tmp, sizeof (tmp));\n  if (mutt_save_attachment (fp, src, tmp, 0, NULL) == -1)\n    return -1;\n      \n  *tgt = mutt_new_body ();\n  b = *tgt;\n\n  memcpy (b, src, sizeof (BODY));\n  b->parts = NULL;\n  b->next  = NULL;\n\n  b->filename = safe_strdup (tmp);\n  b->use_disp = use_disp;\n  b->unlink = 1;\n\n  if (mutt_is_text_part (b))\n    b->noconv = 1;\n\n  b->xtype = safe_strdup (b->xtype);\n  b->subtype = safe_strdup (b->subtype);\n  b->form_name = safe_strdup (b->form_name);\n  b->filename = safe_strdup (b->filename);\n  b->d_filename = safe_strdup (b->d_filename);\n  b->description = safe_strdup (b->description);\n\n  /* \n   * we don't seem to need the HEADER structure currently.\n   * XXX - this may change in the future\n   */\n\n  if (b->hdr) b->hdr = NULL;\n  \n  /* copy parameters */\n  for (par = b->parameter, ppar = &b->parameter; par; ppar = &(*ppar)->next, par = par->next)\n  {\n    *ppar = mutt_new_parameter ();\n    (*ppar)->attribute = safe_strdup (par->attribute);\n    (*ppar)->value = safe_strdup (par->value);\n  }\n\n  mutt_stamp_attachment (b);\n  \n  return 0;\n}\n\n\n\nvoid mutt_free_body (BODY **p)\n{\n  BODY *a = *p, *b;\n\n  while (a)\n  {\n    b = a;\n    a = a->next; \n\n    if (b->parameter)\n      mutt_free_parameter (&b->parameter);\n    if (b->filename)\n    {\n      if (b->unlink)\n\tunlink (b->filename);\n      dprint (1, (debugfile, \"mutt_free_body: %sunlinking %s.\\n\",\n\t    b->unlink ? \"\" : \"not \", b->filename));\n    }\n\n    FREE (&b->filename);\n    FREE (&b->content);\n    FREE (&b->xtype);\n    FREE (&b->subtype);\n    FREE (&b->description);\n    FREE (&b->form_name);\n\n    if (b->hdr)\n    {\n      /* Don't free twice (b->hdr->content = b->parts) */\n      b->hdr->content = NULL;\n      mutt_free_header(&b->hdr);\n    }\n\n    if (b->parts)\n      mutt_free_body (&b->parts);\n\n    FREE (&b);\n  }\n\n  *p = 0;\n}\n\nvoid mutt_free_parameter (PARAMETER **p)\n{\n  PARAMETER *t = *p;\n  PARAMETER *o;\n\n  while (t)\n  {\n    FREE (&t->attribute);\n    FREE (&t->value);\n    o = t;\n    t = t->next;\n    FREE (&o);\n  }\n  *p = 0;\n}\n\nLIST *mutt_add_list (LIST *head, const char *data)\n{\n  size_t len = mutt_strlen (data);\n\n  return mutt_add_list_n (head, data, len ? len + 1 : 0);\n}\n\nLIST *mutt_add_list_n (LIST *head, const void *data, size_t len)\n{\n  LIST *tmp;\n  \n  for (tmp = head; tmp && tmp->next; tmp = tmp->next)\n    ;\n  if (tmp)\n  {\n    tmp->next = safe_malloc (sizeof (LIST));\n    tmp = tmp->next;\n  }\n  else\n    head = tmp = safe_malloc (sizeof (LIST));\n  \n  tmp->data = safe_malloc (len);\n  if (len)\n    memcpy (tmp->data, data, len);\n  tmp->next = NULL;\n  return head;\n}\n\nLIST *mutt_find_list (LIST *l, const char *data)\n{\n  LIST *p = l;\n\n  while (p)\n  {\n    if (data == p->data)\n      return p;\n    if (data && p->data && mutt_strcmp (p->data, data) == 0)\n      return p;\n    p = p->next;\n  }\n  return NULL;\n}\n\nint mutt_remove_from_rx_list (RX_LIST **l, const char *str)\n{\n  RX_LIST *p, *last = NULL;\n  int rv = -1;\n\n  if (mutt_strcmp (\"*\", str) == 0)\n  {\n    mutt_free_rx_list (l);    /* ``unCMD *'' means delete all current entries */\n    rv = 0;\n  }\n  else\n  {\n    p = *l;\n    last = NULL;\n    while (p)\n    {\n      if (ascii_strcasecmp (str, p->rx->pattern) == 0)\n      {\n\tmutt_free_regexp (&p->rx);\n\tif (last)\n\t  last->next = p->next;\n\telse\n\t  (*l) = p->next;\n\tFREE (&p);\n\trv = 0;\n      }\n      else\n      {\n\tlast = p;\n\tp = p->next;\n      }\n    }\n  }\n  return (rv);\n}\n\nvoid mutt_free_list (LIST **list)\n{\n  LIST *p;\n  \n  if (!list) return;\n  while (*list)\n  {\n    p = *list;\n    *list = (*list)->next;\n    FREE (&p->data);\n    FREE (&p);\n  }\n}\n\nHEADER *mutt_dup_header(HEADER *h)\n{\n  HEADER *hnew;\n\n  hnew = mutt_new_header();\n  memcpy(hnew, h, sizeof (HEADER));\n  return hnew;\n}\n\nvoid mutt_free_header (HEADER **h)\n{\n  if(!h || !*h) return;\n  mutt_free_envelope (&(*h)->env);\n  mutt_free_body (&(*h)->content);\n  FREE (&(*h)->maildir_flags);\n  FREE (&(*h)->tree);\n  FREE (&(*h)->path);\n#ifdef MIXMASTER\n  mutt_free_list (&(*h)->chain);\n#endif\n#if defined USE_POP || defined USE_IMAP || defined USE_NOTMUCH\n  if ((*h)->free_cb)\n    (*h)->free_cb(*h);\n  FREE (&(*h)->data);\n#endif\n  FREE (h);\t\t/* __FREE_CHECKED__ */\n}\n\n/* returns true if the header contained in \"s\" is in list \"t\" */\nint mutt_matches_ignore (const char *s, LIST *t)\n{\n  for (; t; t = t->next)\n  {\n    if (!ascii_strncasecmp (s, t->data, mutt_strlen (t->data)) || *t->data == '*')\n      return 1;\n  }\n  return 0;\n}\n\n/* prepend the path part of *path to *link */\nvoid mutt_expand_link (char *newpath, const char *path, const char *link)\n{\n  const char *lb = NULL;\n  size_t len;\n\n  /* link is full path */\n  if (*link == '/')\n  {\n    strfcpy (newpath, link, _POSIX_PATH_MAX);\n    return;\n  }\n\n  if ((lb = strrchr (path, '/')) == NULL)\n  {\n    /* no path in link */\n    strfcpy (newpath, link, _POSIX_PATH_MAX);\n    return;\n  }\n\n  len = lb - path + 1;\n  memcpy (newpath, path, len);\n  strfcpy (newpath + len, link, _POSIX_PATH_MAX - len);\n}\n\nchar *mutt_expand_path (char *s, size_t slen)\n{\n  return _mutt_expand_path (s, slen, 0);\n}\n\nchar *_mutt_expand_path (char *s, size_t slen, int rx)\n{\n  char p[_POSIX_PATH_MAX] = \"\";\n  char q[_POSIX_PATH_MAX] = \"\";\n  char tmp[_POSIX_PATH_MAX];\n  char *t;\n\n  char *tail = \"\"; \n\n  int recurse = 0;\n  \n  do \n  {\n    recurse = 0;\n\n    switch (*s)\n    {\n      case '~':\n      {\n\tif (*(s + 1) == '/' || *(s + 1) == 0)\n\t{\n\t  strfcpy (p, NONULL(Homedir), sizeof (p));\n\t  tail = s + 1;\n\t}\n\telse\n\t{\n\t  struct passwd *pw;\n\t  if ((t = strchr (s + 1, '/'))) \n\t    *t = 0;\n\n\t  if ((pw = getpwnam (s + 1)))\n\t  {\n\t    strfcpy (p, pw->pw_dir, sizeof (p));\n\t    if (t)\n\t    {\n\t      *t = '/';\n\t      tail = t;\n\t    }\n\t    else\n\t      tail = \"\";\n\t  }\n\t  else\n\t  {\n\t    /* user not found! */\n\t    if (t)\n\t      *t = '/';\n\t    *p = '\\0';\n\t    tail = s;\n\t  }\n\t}\n      }\n      break;\n      \n      case '=':\n      case '+':    \n      {\n#ifdef USE_IMAP\n\t/* if folder = {host} or imap[s]://host/: don't append slash */\n\tif (mx_is_imap (NONULL (Maildir)) &&\n\t    (Maildir[strlen (Maildir) - 1] == '}' ||\n\t     Maildir[strlen (Maildir) - 1] == '/'))\n\t  strfcpy (p, NONULL (Maildir), sizeof (p));\n\telse\n#endif\n#ifdef USE_NOTMUCH\n\tif (mx_is_notmuch (NONULL (Maildir)))\n\t  strfcpy (p, NONULL (Maildir), sizeof (p));\n\telse\n#endif\n\tif (Maildir && *Maildir && Maildir[strlen (Maildir) - 1] == '/')\n\t  strfcpy (p, NONULL (Maildir), sizeof (p));\n\telse\n\t  snprintf (p, sizeof (p), \"%s/\", NONULL (Maildir));\n\t\n\ttail = s + 1;\n      }\n      break;\n      \n      /* elm compatibility, @ expands alias to user name */\n    \n      case '@':\n      {\n\tHEADER *h;\n\tADDRESS *alias;\n\t\n\tif ((alias = mutt_lookup_alias (s + 1)))\n\t{\n\t  h = mutt_new_header();\n\t  h->env = mutt_new_envelope();\n\t  h->env->from = h->env->to = alias;\n\t  mutt_default_save (p, sizeof (p), h);\n\t  h->env->from = h->env->to = NULL;\n\t  mutt_free_header (&h);\n\t  /* Avoid infinite recursion if the resulting folder starts with '@' */\n\t  if (*p != '@')\n\t    recurse = 1;\n\t  \n\t  tail = \"\";\n\t}\n      }\n      break;\n      \n      case '>':\n      {\n\tstrfcpy (p, NONULL(Inbox), sizeof (p));\n\ttail = s + 1;\n      }\n      break;\n      \n      case '<':\n      {\n\tstrfcpy (p, NONULL(Outbox), sizeof (p));\n\ttail = s + 1;\n      }\n      break;\n      \n      case '!':\n      {\n\tif (*(s+1) == '!')\n\t{\n\t  strfcpy (p, NONULL(LastFolder), sizeof (p));\n\t  tail = s + 2;\n\t}\n\telse \n\t{\n\t  strfcpy (p, NONULL(Spoolfile), sizeof (p));\n\t  tail = s + 1;\n\t}\n      }\n      break;\n      \n      case '-':\n      {\n\tstrfcpy (p, NONULL(LastFolder), sizeof (p));\n\ttail = s + 1;\n      }\n      break;\n      \n      case '^':        \n      {\n\tstrfcpy (p, NONULL(CurrentFolder), sizeof (p));\n\ttail = s + 1;\n      }\n      break;\n\n      default:\n      {\n\t*p = '\\0';\n\ttail = s;\n      }\n    }\n\n    if (rx && *p && !recurse)\n    {\n      mutt_rx_sanitize_string (q, sizeof (q), p);\n      snprintf (tmp, sizeof (tmp), \"%s%s\", q, tail);\n    }\n    else\n      snprintf (tmp, sizeof (tmp), \"%s%s\", p, tail);\n    \n    strfcpy (s, tmp, slen);\n  }\n  while (recurse);\n\n#ifdef USE_IMAP\n  /* Rewrite IMAP path in canonical form - aids in string comparisons of\n   * folders. May possibly fail, in which case s should be the same. */\n  if (mx_is_imap (s))\n    imap_expand_path (s, slen);\n#endif\n\n  return (s);\n}\n\n/* Extract the real name from /etc/passwd's GECOS field.\n * When set, honor the regular expression in GecosMask,\n * otherwise assume that the GECOS field is a \n * comma-separated list.\n * Replace \"&\" by a capitalized version of the user's login\n * name.\n */\n\nchar *mutt_gecos_name (char *dest, size_t destlen, struct passwd *pw)\n{\n  regmatch_t pat_match[1];\n  size_t pwnl;\n  int idx;\n  char *p;\n  \n  if (!pw || !pw->pw_gecos) \n    return NULL;\n\n  memset (dest, 0, destlen);\n  \n  if (GecosMask.rx)\n  {\n    if (regexec (GecosMask.rx, pw->pw_gecos, 1, pat_match, 0) == 0)\n      strfcpy (dest, pw->pw_gecos + pat_match[0].rm_so, \n\t       MIN (pat_match[0].rm_eo - pat_match[0].rm_so + 1, destlen));\n  }\n  else if ((p = strchr (pw->pw_gecos, ',')))\n    strfcpy (dest, pw->pw_gecos, MIN (destlen, p - pw->pw_gecos + 1));\n  else\n    strfcpy (dest, pw->pw_gecos, destlen);\n\n  pwnl = strlen (pw->pw_name);\n\n  for (idx = 0; dest[idx]; idx++)\n  {\n    if (dest[idx] == '&')\n    {\n      memmove (&dest[idx + pwnl], &dest[idx + 1],\n\t       MAX((ssize_t)(destlen - idx - pwnl - 1), 0));\n      memcpy (&dest[idx], pw->pw_name, MIN(destlen - idx - 1, pwnl));\n      dest[idx] = toupper ((unsigned char) dest[idx]);\n    }\n  }\n      \n  return dest;\n}\n  \n\nchar *mutt_get_parameter (const char *s, PARAMETER *p)\n{\n  for (; p; p = p->next)\n    if (ascii_strcasecmp (s, p->attribute) == 0)\n      return (p->value);\n\n  return NULL;\n}\n\nvoid mutt_set_parameter (const char *attribute, const char *value, PARAMETER **p)\n{\n  PARAMETER *q;\n\n  if (!value)\n  {\n    mutt_delete_parameter (attribute, p);\n    return;\n  }\n  \n  for(q = *p; q; q = q->next)\n  {\n    if (ascii_strcasecmp (attribute, q->attribute) == 0)\n    {\n      mutt_str_replace (&q->value, value);\n      return;\n    }\n  }\n  \n  q = mutt_new_parameter();\n  q->attribute = safe_strdup(attribute);\n  q->value = safe_strdup(value);\n  q->next = *p;\n  *p = q;\n}\n\nvoid mutt_delete_parameter (const char *attribute, PARAMETER **p)\n{\n  PARAMETER *q;\n  \n  for (q = *p; q; p = &q->next, q = q->next)\n  {\n    if (ascii_strcasecmp (attribute, q->attribute) == 0)\n    {\n      *p = q->next;\n      q->next = NULL;\n      mutt_free_parameter (&q);\n      return;\n    }\n  }\n}\n\n/* returns 1 if Mutt can't display this type of data, 0 otherwise */\nint mutt_needs_mailcap (BODY *m)\n{\n  switch (m->type)\n  {\n    case TYPETEXT:\n      /* we can display any text, overridable by auto_view */\n      return 0;\n      break;\n\n    case TYPEAPPLICATION:\n      if((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp(m))\n\treturn 0;\n      if((WithCrypto & APPLICATION_SMIME) && mutt_is_application_smime(m))\n\treturn 0;\n      break;\n\n    case TYPEMULTIPART:\n    case TYPEMESSAGE:\n      return 0;\n  }\n\n  return 1;\n}\n\nint mutt_is_text_part (BODY *b)\n{\n  int t = b->type;\n  char *s = b->subtype;\n  \n  if ((WithCrypto & APPLICATION_PGP) && mutt_is_application_pgp (b))\n    return 0;\n\n  if (t == TYPETEXT)\n    return 1;\n\n  if (t == TYPEMESSAGE)\n  {\n    if (!ascii_strcasecmp (\"delivery-status\", s))\n      return 1;\n  }\n\n  if ((WithCrypto & APPLICATION_PGP) && t == TYPEAPPLICATION)\n  {\n    if (!ascii_strcasecmp (\"pgp-keys\", s))\n      return 1;\n  }\n\n  return 0;\n}\n\nvoid mutt_free_envelope (ENVELOPE **p)\n{\n  if (!*p) return;\n  rfc822_free_address (&(*p)->return_path);\n  rfc822_free_address (&(*p)->from);\n  rfc822_free_address (&(*p)->to);\n  rfc822_free_address (&(*p)->cc);\n  rfc822_free_address (&(*p)->bcc);\n  rfc822_free_address (&(*p)->sender);\n  rfc822_free_address (&(*p)->reply_to);\n  rfc822_free_address (&(*p)->mail_followup_to);\n\n  FREE (&(*p)->list_post);\n  FREE (&(*p)->subject);\n  /* real_subj is just an offset to subject and shouldn't be freed */\n  FREE (&(*p)->message_id);\n  FREE (&(*p)->supersedes);\n  FREE (&(*p)->date);\n  FREE (&(*p)->x_label);\n\n  mutt_buffer_free (&(*p)->spam);\n\n  mutt_free_list (&(*p)->references);\n  mutt_free_list (&(*p)->in_reply_to);\n  mutt_free_list (&(*p)->userhdrs);\n  FREE (p);\t\t/* __FREE_CHECKED__ */\n}\n\n/* move all the headers from extra not present in base into base */\nvoid mutt_merge_envelopes(ENVELOPE* base, ENVELOPE** extra)\n{\n  /* copies each existing element if necessary, and sets the element\n  * to NULL in the source so that mutt_free_envelope doesn't leave us\n  * with dangling pointers. */\n#define MOVE_ELEM(h) if (!base->h) { base->h = (*extra)->h; (*extra)->h = NULL; }\n  MOVE_ELEM(return_path);\n  MOVE_ELEM(from);\n  MOVE_ELEM(to);\n  MOVE_ELEM(cc);\n  MOVE_ELEM(bcc);\n  MOVE_ELEM(sender);\n  MOVE_ELEM(reply_to);\n  MOVE_ELEM(mail_followup_to);\n  MOVE_ELEM(list_post);\n  MOVE_ELEM(message_id);\n  MOVE_ELEM(supersedes);\n  MOVE_ELEM(date);\n  MOVE_ELEM(x_label);\n  if (!base->refs_changed)\n  {\n    MOVE_ELEM(references);\n  }\n  if (!base->irt_changed)\n  {\n    MOVE_ELEM(in_reply_to);\n  }\n  \n  /* real_subj is subordinate to subject */\n  if (!base->subject)\n  {\n    base->subject = (*extra)->subject;\n    base->real_subj = (*extra)->real_subj;\n    (*extra)->subject = NULL;\n    (*extra)->real_subj = NULL;\n  }\n  /* spam and user headers should never be hashed, and the new envelope may\n    * have better values. Use new versions regardless. */\n  mutt_buffer_free (&base->spam);\n  mutt_free_list (&base->userhdrs);\n  MOVE_ELEM(spam);\n  MOVE_ELEM(userhdrs);\n#undef MOVE_ELEM\n  \n  mutt_free_envelope(extra);\n}\n\nstatic FILE *frandom;\n\nvoid mutt_randbuf(void *out, size_t len)\n{\n  if (len > 1048576) {\n    mutt_error (_(\"mutt_randbuf len=%zu\"), len);\n    exit(1);\n  }\n  /* XXX switch to HAVE_GETRANDOM and getrandom() in about 2017 */\n#if defined(SYS_getrandom) && defined(__linux__)\n  static int whined;\n  long ret;\n  do {\n    ret = syscall(SYS_getrandom, out, len, 0, 0, 0, 0);\n  } while ((ret == -1) && (errno == EINTR));\n  if (ret == len) return;\n  if (!whined) {\n    mutt_error (_(\"getrandom failed: %s\"), strerror(errno));\n    mutt_sleep (1);\n    whined = 1;\n  }\n  /* let's try urandom in case user has configured selinux or something\n   * to not allow getrandom */\n#endif\n  if (frandom == NULL) {\n    frandom = fopen(\"/dev/urandom\", \"rb\");\n    if (frandom == NULL) {\n      mutt_error (_(\"open /dev/urandom: %s\"), strerror(errno));\n      exit(1);\n    }\n    setbuf(frandom, NULL);\n  }\n  if (fread(out, 1, len, frandom) != len) {\n    mutt_error (_(\"read /dev/urandom: %s\"), strerror(errno));\n    exit(1);\n  }\n}\n\nstatic const unsigned char base32[] = \"abcdefghijklmnopqrstuvwxyz234567\";\n\nvoid mutt_rand_base32(void *out, size_t len)\n{\n  size_t pos;\n  uint8_t *p = out;\n\n  mutt_randbuf(p, len);\n  for (pos = 0; pos < len; pos++)\n    p[pos] = base32[p[pos] % 32];\n}\n\nuint32_t mutt_rand32(void)\n{\n  uint32_t ret;\n\n  mutt_randbuf(&ret, sizeof(ret));\n  return ret;\n}\n\nuint64_t mutt_rand64(void)\n{\n  uint64_t ret;\n\n  mutt_randbuf(&ret, sizeof(ret));\n  return ret;\n}\n\n\nvoid _mutt_mktemp (char *s, size_t slen, const char *prefix, const char *suffix,\n                   const char *src, int line)\n{\n  size_t n = snprintf (s, slen, \"%s/%s-%s-%d-%d-%\" PRIu64 \"%s%s\",\n      NONULL (Tempdir), NONULL (prefix), NONULL (Hostname),\n      (int) getuid (), (int) getpid (), mutt_rand64(),\n      suffix ? \".\" : \"\", NONULL (suffix));\n  if (n >= slen)\n    dprint (1, (debugfile, \"%s:%d: ERROR: insufficient buffer space to hold temporary filename! slen=%zu but need %zu\\n\",\n\t    src, line, slen, n));\n  dprint (3, (debugfile, \"%s:%d: mutt_mktemp returns \\\"%s\\\".\\n\", src, line, s));\n  if (unlink (s) && errno != ENOENT)\n    dprint (1, (debugfile, \"%s:%d: ERROR: unlink(\\\"%s\\\"): %s (errno %d)\\n\", src, line, s, strerror (errno), errno));\n}\n\nvoid mutt_free_alias (ALIAS **p)\n{\n  ALIAS *t;\n\n  while (*p)\n  {\n    t = *p;\n    *p = (*p)->next;\n    mutt_alias_delete_reverse (t);\n    FREE (&t->name);\n    rfc822_free_address (&t->addr);\n    FREE (&t);\n  }\n}\n\n/* collapse the pathname using ~ or = when possible */\nvoid mutt_pretty_mailbox (char *s, size_t buflen)\n{\n  char *p = s, *q = s;\n  size_t len;\n  url_scheme_t scheme;\n  char tmp[PATH_MAX];\n\n  scheme = url_check_scheme (s);\n\n#ifdef USE_IMAP\n  if (scheme == U_IMAP || scheme == U_IMAPS)\n  {\n    imap_pretty_mailbox (s);\n    return;\n  }\n#endif\n\n#ifdef USE_NOTMUCH\n  if (scheme == U_NOTMUCH)\n    return;\n#endif\n\n  /* if s is an url, only collapse path component */\n  if (scheme != U_UNKNOWN)\n  {\n    p = strchr(s, ':')+1;\n    if (!strncmp (p, \"//\", 2))\n      q = strchr (p+2, '/');\n    if (!q)\n      q = strchr (p, '\\0');\n    p = q;\n  }\n\n  /* cleanup path */\n  if (strstr (p, \"//\") || strstr (p, \"/./\"))\n  {\n    /* first attempt to collapse the pathname, this is more\n     * lightweight than realpath() and doesn't resolve links\n     */\n    while (*p)\n    {\n      if (*p == '/' && p[1] == '/')\n      {\n\t*q++ = '/';\n\tp += 2;\n      }\n      else if (p[0] == '/' && p[1] == '.' && p[2] == '/')\n      {\n\t*q++ = '/';\n\tp += 3;\n      }\n      else\n\t*q++ = *p++;\n    }\n    *q = 0;\n  }\n  else if (strstr (p, \"..\") && \n\t   (scheme == U_UNKNOWN || scheme == U_FILE) &&\n\t   realpath (p, tmp))\n    strfcpy (p, tmp, buflen - (p - s));\n\n  if (mutt_strncmp (s, Maildir, (len = mutt_strlen (Maildir))) == 0 &&\n      s[len] == '/')\n  {\n    *s++ = '=';\n    memmove (s, s + len, mutt_strlen (s + len) + 1);\n  }\n  else if (mutt_strncmp (s, Homedir, (len = mutt_strlen (Homedir))) == 0 &&\n\t   s[len] == '/')\n  {\n    *s++ = '~';\n    memmove (s, s + len - 1, mutt_strlen (s + len - 1) + 1);\n  }\n}\n\nvoid mutt_pretty_size (char *s, size_t len, LOFF_T n)\n{\n  if (n == 0)\n    strfcpy (s, \"0K\", len);\n  else if (n < 10189) /* 0.1K - 9.9K */\n    snprintf (s, len, \"%3.1fK\", (n < 103) ? 0.1 : n / 1024.0);\n  else if (n < 1023949) /* 10K - 999K */\n  {\n    /* 51 is magic which causes 10189/10240 to be rounded up to 10 */\n    snprintf (s, len, OFF_T_FMT \"K\", (n + 51) / 1024);\n  }\n  else if (n < 10433332) /* 1.0M - 9.9M */\n    snprintf (s, len, \"%3.1fM\", n / 1048576.0);\n  else /* 10M+ */\n  {\n    /* (10433332 + 52428) / 1048576 = 10 */\n    snprintf (s, len, OFF_T_FMT \"M\", (n + 52428) / 1048576);\n  }\n}\n\nvoid mutt_expand_file_fmt (char *dest, size_t destlen, const char *fmt, const char *src)\n{\n  char tmp[LONG_STRING];\n  \n  mutt_quote_filename (tmp, sizeof (tmp), src);\n  mutt_expand_fmt (dest, destlen, fmt, tmp);\n}\n\nvoid mutt_expand_fmt (char *dest, size_t destlen, const char *fmt, const char *src)\n{\n  const char *p;\n  char *d;\n  size_t slen;\n  int found = 0;\n\n  slen = mutt_strlen (src);\n  destlen--;\n  \n  for (p = fmt, d = dest; destlen && *p; p++)\n  {\n    if (*p == '%') \n    {\n      switch (p[1])\n      {\n\tcase '%':\n\t  *d++ = *p++;\n\t  destlen--;\n\t  break;\n\tcase 's':\n\t  found = 1;\n\t  strfcpy (d, src, destlen + 1);\n\t  d       += destlen > slen ? slen : destlen;\n\t  destlen -= destlen > slen ? slen : destlen;\n\t  p++;\n\t  break;\n\tdefault:\n\t  *d++ = *p; \n\t  destlen--;\n\t  break;\n      }\n    }\n    else\n    {\n      *d++ = *p;\n      destlen--;\n    }\n  }\n  \n  *d = '\\0';\n  \n  if (!found && destlen > 0)\n  {\n    safe_strcat (dest, destlen, \" \");\n    safe_strcat (dest, destlen, src);\n  }\n  \n}\n\n/* return 0 on success, -1 on abort, 1 on error */\nint mutt_check_overwrite (const char *attname, const char *path,\n\t\t\t\tchar *fname, size_t flen, int *append, char **directory) \n{\n  int rc = 0;\n  char tmp[_POSIX_PATH_MAX];\n  struct stat st;\n\n  strfcpy (fname, path, flen);\n  if (access (fname, F_OK) != 0)\n    return 0;\n  if (stat (fname, &st) != 0)\n    return -1;\n  if (S_ISDIR (st.st_mode))\n  {\n    if (directory)\n    {\n      switch (mutt_multi_choice\n      /* L10N:\n         Means \"The path you specified as the destination file is a directory.\"\n         See the msgid \"Save to file: \" (alias.c, recvattach.c) */\n\t      (_(\"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"), _(\"yna\")))\n      {\n\tcase 3:\t\t/* all */\n\t  mutt_str_replace (directory, fname);\n\t  break;\n\tcase 1:\t\t/* yes */\n\t  FREE (directory);\t\t/* __FREE_CHECKED__ */\n\t  break;\n\tcase -1:\t/* abort */\n\t  FREE (directory); \t\t/* __FREE_CHECKED__ */\n\t  return -1;\n\tcase  2:\t/* no */\n\t  FREE (directory);\t\t/* __FREE_CHECKED__ */\n\t  return 1;\n      }\n    }\n    /* L10N:\n       Means \"The path you specified as the destination file is a directory.\"\n       See the msgid \"Save to file: \" (alias.c, recvattach.c) */\n    else if ((rc = mutt_yesorno (_(\"File is a directory, save under it?\"), M_YES)) != M_YES)\n      return (rc == M_NO) ? 1 : -1;\n\n    strfcpy (tmp, mutt_basename (NONULL (attname)), sizeof (tmp));\n    if (mutt_get_field (_(\"File under directory: \"), tmp, sizeof (tmp),\n                                    M_FILE | M_CLEAR) != 0 || !tmp[0])\n      return (-1);\n    mutt_concat_path (fname, path, tmp, flen);\n  }\n  \n  if (*append == 0 && access (fname, F_OK) == 0)\n  {\n    switch (mutt_multi_choice\n\t    (_(\"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"), _(\"oac\")))\n    {\n      case -1: /* abort */\n        return -1;\n      case 3:  /* cancel */\n\treturn 1;\n\n      case 2: /* append */\n        *append = M_SAVE_APPEND;\n        break;\n      case 1: /* overwrite */\n        *append = M_SAVE_OVERWRITE;\n        break;\n    }\n  }\n  return 0;\n}\n\nvoid mutt_save_path (char *d, size_t dsize, ADDRESS *a)\n{\n  if (a && a->mailbox)\n  {\n    strfcpy (d, a->mailbox, dsize);\n    if (!option (OPTSAVEADDRESS))\n    {\n      char *p;\n\n      if ((p = strpbrk (d, \"%@\")))\n\t*p = 0;\n    }\n    mutt_strlower (d);\n  }\n  else\n    *d = 0;\n}\n\nvoid mutt_safe_path (char *s, size_t l, ADDRESS *a)\n{\n  char *p;\n\n  mutt_save_path (s, l, a);\n  for (p = s; *p; p++)\n    if (*p == '/' || ISSPACE (*p) || !IsPrint ((unsigned char) *p))\n      *p = '_';\n}\n\n\nvoid mutt_FormatString (char *dest,\t\t/* output buffer */\n\t\t\tsize_t destlen,\t\t/* output buffer len */\n\t\t\tsize_t col,\t\t/* starting column (nonzero when called recursively) */\n\t\t\tconst char *src,\t/* template string */\n\t\t\tformat_t *callback,\t/* callback for processing */\n\t\t\tunsigned long data,\t/* callback data */\n\t\t\tformat_flag flags)\t/* callback flags */\n{\n  char prefix[SHORT_STRING], buf[LONG_STRING], *cp, *wptr = dest, ch;\n  char ifstring[SHORT_STRING], elsestring[SHORT_STRING];\n  size_t wlen, count, len, wid;\n  pid_t pid;\n  FILE *filter;\n  int n;\n  char *recycler;\n\n  prefix[0] = '\\0';\n  destlen--; /* save room for the terminal \\0 */\n  wlen = ((flags & M_FORMAT_ARROWCURSOR) && option (OPTARROWCURSOR)) ? 3 : 0;\n  col += wlen;\n\n  if ((flags & M_FORMAT_NOFILTER) == 0)\n  {\n    int off = -1;\n\n    /* Do not consider filters if no pipe at end */\n    n = mutt_strlen(src);\n    if (n > 1 && src[n-1] == '|')\n    {\n      /* Scan backwards for backslashes */\n      off = n;\n      while (off > 0 && src[off-2] == '\\\\')\n        off--;\n    }\n\n    /* If number of backslashes is even, the pipe is real. */\n    /* n-off is the number of backslashes. */\n    if (off > 0 && ((n-off) % 2) == 0)\n    {\n      BUFFER *srcbuf, *word, *command;\n      char    srccopy[LONG_STRING];\n#ifdef DEBUG\n      int     i = 0;\n#endif\n\n      dprint(3, (debugfile, \"fmtpipe = %s\\n\", src));\n\n      strncpy(srccopy, src, n);\n      srccopy[n-1] = '\\0';\n\n      /* prepare BUFFERs */\n      srcbuf = mutt_buffer_from (srccopy);\n      srcbuf->dptr = srcbuf->data;\n      word = mutt_buffer_new ();\n      command = mutt_buffer_new ();\n\n      /* Iterate expansions across successive arguments */\n      do {\n        char *p;\n\n        /* Extract the command name and copy to command line */\n        dprint(3, (debugfile, \"fmtpipe +++: %s\\n\", srcbuf->dptr));\n        if (word->data)\n          *word->data = '\\0';\n        mutt_extract_token(word, srcbuf, 0);\n        dprint(3, (debugfile, \"fmtpipe %2d: %s\\n\", i++, word->data));\n        mutt_buffer_addch(command, '\\'');\n        mutt_FormatString(buf, sizeof(buf), 0, word->data, callback, data,\n                          flags | M_FORMAT_NOFILTER);\n        for (p = buf; p && *p; p++)\n        {\n          if (*p == '\\'')\n            /* shell quoting doesn't permit escaping a single quote within\n             * single-quoted material.  double-quoting instead will lead\n             * shell variable expansions, so break out of the single-quoted\n             * span, insert a double-quoted single quote, and resume. */\n            mutt_buffer_addstr(command, \"'\\\"'\\\"'\");\n          else\n            mutt_buffer_addch(command, *p);\n        }\n        mutt_buffer_addch(command, '\\'');\n        mutt_buffer_addch(command, ' ');\n      } while (MoreArgs(srcbuf));\n\n      dprint(3, (debugfile, \"fmtpipe > %s\\n\", command->data));\n\n      col -= wlen;\t/* reset to passed in value */\n      wptr = dest;      /* reset write ptr */\n      wlen = ((flags & M_FORMAT_ARROWCURSOR) && option (OPTARROWCURSOR)) ? 3 : 0;\n      if ((pid = mutt_create_filter(command->data, NULL, &filter, NULL)) != -1)\n      {\n\tint rc;\n\n        n = fread(dest, 1, destlen /* already decremented */, filter);\n        safe_fclose (&filter);\n\trc = mutt_wait_filter(pid);\n\tif (rc != 0)\n\t  dprint(1, (debugfile, \"format pipe command exited code %d\\n\", rc));\n\tif (n > 0) {\n\t  dest[n] = 0;\n\t  while ((n > 0) && (dest[n-1] == '\\n' || dest[n-1] == '\\r'))\n\t    dest[--n] = '\\0';\n\t  dprint(3, (debugfile, \"fmtpipe < %s\\n\", dest));\n\n\t  /* If the result ends with '%', this indicates that the filter\n\t   * generated %-tokens that mutt can expand.  Eliminate the '%'\n\t   * marker and recycle the string through mutt_FormatString().\n\t   * To literally end with \"%\", use \"%%\". */\n\t  if ((n > 0) && dest[n-1] == '%')\n\t  {\n\t    --n;\n\t    dest[n] = '\\0';               /* remove '%' */\n\t    if ((n > 0) && dest[n-1] != '%')\n\t    {\n\t      recycler = safe_strdup(dest);\n\t      if (recycler)\n\t      {\n\t\t/* destlen is decremented at the start of this function\n\t\t * to save space for the terminal nul char.  We can add\n\t\t * it back for the recursive call since the expansion of\n\t\t * format pipes does not try to append a nul itself.\n\t\t */\n\t\tmutt_FormatString(dest, destlen+1, col, recycler, callback, data, flags);\n\t\tFREE(&recycler);\n\t      }\n\t    }\n\t  }\n\t}\n\telse\n\t{\n\t  /* read error */\n\t  dprint(1, (debugfile, \"error reading from fmtpipe: %s (errno=%d)\\n\", strerror(errno), errno));\n\t  *wptr = 0;\n\t}\n      }\n      else\n      {\n        /* Filter failed; erase write buffer */\n        *wptr = '\\0';\n      }\n\n      mutt_buffer_free(&command);\n      mutt_buffer_free(&srcbuf);\n      mutt_buffer_free(&word);\n      return;\n    }\n  }\n\n  while (*src && wlen < destlen)\n  {\n    if (*src == '%')\n    {\n      if (*++src == '%')\n      {\n\t*wptr++ = '%';\n\twlen++;\n\tcol++;\n\tsrc++;\n\tcontinue;\n      }\n\n      if (*src == '?')\n      {\n\t/* change original %? to new %< notation */\n\t/* %?x?y&z? to %<x?y&z> where y and z are nestable */\n\tchar *p = (char *) src;\n\t*p = '<';\n\tfor ( ; *p && *p != '?'; p++);\n\t  /* nothing */\n\tif (*p == '?') {\n\t  p++;\n\t}\n\tfor ( ; *p && *p != '?'; p++);\n\t  /* nothing */\n\tif (*p == '?') {\n\t  *p = '>';\n\t}\n      }\n\n      if (*src == '<')\n      {\n\tflags |= M_FORMAT_OPTIONAL;\n\tch = *(++src); /* save the character to switch on */\n\tsrc++;\n\tcp = prefix;\n\tcount = 0;\n\twhile ((count < sizeof (prefix)) && (*src != '?')) {\n\t  *cp++ = *src++;\n\t  count++;\n\t}\n\t*cp = 0;\n      }\n      else\n      {\n\tflags &= ~M_FORMAT_OPTIONAL;\n\n\t/* eat the format string */\n\tcp = prefix;\n\tcount = 0;\n\twhile (count < sizeof (prefix) &&\n\t       (isdigit ((unsigned char) *src) || *src == '.' || *src == '-' || *src == '='))\n\t{\n\t  *cp++ = *src++;\n\t  count++;\n\t}\n\t*cp = 0;\n\n\tif (!*src)\n\t  break; /* bad format */\n\n\tch = *src++; /* save the character to switch on */\n      }\n\n      if (flags & M_FORMAT_OPTIONAL)\n      {\n\tint lrbalance;\n\n        if (*src != '?')\n          break; /* bad format */\n        src++;\n\n        /* eat the `if' part of the string */\n        cp = ifstring;\n\tcount = 0;\n\tlrbalance = 1;\n        while ((lrbalance > 0) && (count < sizeof (ifstring)) && *src) {\n\t  if (*src == '\\\\') {\n\t    src++;\n\t    *cp++ = *src++;\n\t  } else if ((src[0] == '%') && (src[1] == '<')) {\n\t    lrbalance++;\n\t  } else if (src[0] == '>') {\n\t    lrbalance--;\n\t  }\n\t  if (lrbalance == 0)\n\t    break;\n\t  if ((lrbalance == 1) && (src[0] == '&'))\n\t    break;\n          *cp++ = *src++;\n\t  count++;\n\t}\n        *cp = 0;\n\n\t/* eat the `else' part of the string (optional) */\n\tif (*src == '&')\n\t  src++; /* skip the & */\n\tcp = elsestring;\n\tcount = 0;\n\twhile ((lrbalance > 0) && (count < sizeof (elsestring)) && *src) {\n\t  if (*src == '\\\\') {\n\t    src++;\n\t    *cp++ = *src++;\n\t  } else if ((src[0] == '%') && (src[1] == '<')) {\n\t    lrbalance++;\n\t  } else if (src[0] == '>') {\n\t    lrbalance--;\n\t  }\n\t  if (lrbalance == 0)\n\t    break;\n\t  if ((lrbalance == 1) && (src[0] == '&'))\n\t    break;\n          *cp++ = *src++;\n\t  count++;\n\t}\n\t*cp = 0;\n\n\tif (!*src)\n\t  break; /* bad format */\n\n        src++; /* move past the trailing `>' (formerly '?') */\n      }\n\n      /* handle generic cases first */\n      if (ch == '>' || ch == '*')\n      {\n\t/* %>X: right justify to EOL, left takes precedence\n\t * %*X: right justify to EOL, right takes precedence */\n\tint soft = ch == '*';\n\tint pl, pw;\n\tif ((pl = mutt_charlen (src, &pw)) <= 0)\n\t  pl = pw = 1;\n\n\t/* see if there's room to add content, else ignore */\n\tif ((col < (COLS - SidebarWidth) && (wlen < destlen)) || soft)\n\t{\n\t  int pad;\n\n\t  /* get contents after padding */\n\t  mutt_FormatString (buf, sizeof (buf), 0, src + pl, callback, data, flags);\n\t  len = mutt_strlen (buf);\n\t  wid = mutt_strwidth (buf);\n\n\t  /* try to consume as many columns as we can, if we don't have\n\t   * memory for that, use as much memory as possible */\n\t  pad = (COLS - SidebarWidth - col - wid) / pw;\n\t  if (pad > 0 && wlen + (pad * pl) + len > destlen)\n\t    pad = ((signed)(destlen - wlen - len)) / pl;\n\t  if (pad > 0)\n\t  {\n\t    while (pad--)\n\t    {\n\t      memcpy (wptr, src, pl);\n\t      wptr += pl;\n\t      wlen += pl;\n\t      col += pw;\n\t    }\n\t  }\n\t  else if (soft && pad < 0)\n\t  {\n\t    int offset = ((flags & M_FORMAT_ARROWCURSOR) && option (OPTARROWCURSOR)) ? 3 : 0;\n\t    /* \\0-terminate dest for length computation in mutt_wstr_trunc() */\n\t    *wptr = 0;\n\t    /* make sure right part is at most as wide as display */\n\t    len = mutt_wstr_trunc (buf, destlen, COLS - offset - SidebarWidth, &wid);\n\t    /* truncate left so that right part fits completely in */\n\t    wlen = mutt_wstr_trunc (dest, destlen - len, col + pad*pw -offset, &col);\n\t    wptr = dest + wlen;\n\t  }\n\t  if (len + wlen > destlen)\n\t    len = mutt_wstr_trunc (buf, destlen - wlen, COLS - SidebarWidth - col, NULL);\n\t  memcpy (wptr, buf, len);\n\t  wptr += len;\n\t  wlen += len;\n\t  col += wid;\n\t  src += pl;\n\t}\n\tbreak; /* skip rest of input */\n      }\n      else if (ch == '|')\n      {\n\t/* pad to EOL */\n\tint pl, pw, c;\n\tif ((pl = mutt_charlen (src, &pw)) <= 0)\n\t  pl = pw = 1;\n\n\t/* see if there's room to add content, else ignore */\n\tif (col < COLS && wlen < destlen)\n\t{\n\t  c = (COLS - col) / pw;\n\t  if (c > 0 && wlen + (c * pl) > destlen)\n\t    c = ((signed)(destlen - wlen)) / pl;\n\t  while (c > 0)\n\t  {\n\t    memcpy (wptr, src, pl);\n\t    wptr += pl;\n\t    wlen += pl;\n\t    col += pw;\n\t    c--;\n\t  }\n\t  src += pl;\n\t}\n\tbreak; /* skip rest of input */\n      }\n      else\n      {\n\tshort tolower =  0;\n\tshort nodots  = 0;\n\t\n\twhile (ch == '_' || ch == ':') \n\t{\n\t  if (ch == '_')\n\t    tolower = 1;\n\t  else if (ch == ':') \n\t    nodots = 1;\n\t  \n\t  ch = *src++;\n\t}\n\t\n\t/* use callback function to handle this case */\n\tsrc = callback (buf, sizeof (buf), col, ch, src, prefix, ifstring, elsestring, data, flags);\n\n\tif (tolower)\n\t  mutt_strlower (buf);\n\tif (nodots) \n\t{\n\t  char *p = buf;\n\t  for (; *p; p++)\n\t    if (*p == '.')\n\t\t*p = '_';\n\t}\n\t\n\tif ((len = mutt_strlen (buf)) + wlen > destlen)\n\t  len = mutt_wstr_trunc (buf, destlen - wlen, COLS - col, NULL);\n\n\tmemcpy (wptr, buf, len);\n\twptr += len;\n\twlen += len;\n\tcol += mutt_strwidth (buf);\n      }\n    }\n    else if (*src == '\\\\')\n    {\n      if (!*++src)\n\tbreak;\n      switch (*src)\n      {\n\tcase 'n':\n\t  *wptr = '\\n';\n\t  break;\n\tcase 't':\n\t  *wptr = '\\t';\n\t  break;\n\tcase 'r':\n\t  *wptr = '\\r';\n\t  break;\n\tcase 'f':\n\t  *wptr = '\\f';\n\t  break;\n\tcase 'v':\n\t  *wptr = '\\v';\n\t  break;\n\tdefault:\n\t  *wptr = *src;\n\t  break;\n      }\n      src++;\n      wptr++;\n      wlen++;\n      col++;\n    }\n    else\n    {\n      int tmp, w;\n      /* in case of error, simply copy byte */\n      if ((tmp = mutt_charlen (src, &w)) < 0)\n\ttmp = w = 1;\n      if (tmp > 0 && wlen + tmp < destlen)\n      {\n        memcpy (wptr, src, tmp);\n        wptr += tmp;\n        src += tmp;\n        wlen += tmp;\n        col += w;\n      }\n      else\n      {\n\tsrc += destlen - wlen;\n\twlen = destlen;\n      }\n    }\n  }\n  *wptr = 0;\n\n#if 0\n  if (flags & M_FORMAT_MAKEPRINT)\n  {\n    /* Make sure that the string is printable by changing all non-printable\n       chars to dots, or spaces for non-printable whitespace */\n    for (cp = dest ; *cp ; cp++)\n      if (!IsPrint (*cp) &&\n\t  !((flags & M_FORMAT_TREE) && (*cp <= M_TREE_MAX)))\n\t*cp = isspace ((unsigned char) *cp) ? ' ' : '.';\n  }\n#endif\n}\n\n/* This function allows the user to specify a command to read stdout from in\n   place of a normal file.  If the last character in the string is a pipe (|),\n   then we assume it is a command to run instead of a normal file. */\nFILE *mutt_open_read (const char *path, pid_t *thepid)\n{\n  FILE *f;\n  struct stat s;\n\n  int len = mutt_strlen (path);\n\n  if (path[len - 1] == '|')\n  {\n    /* read from a pipe */\n\n    char *s = safe_strdup (path);\n\n    s[len - 1] = 0;\n    mutt_endwin (NULL);\n    *thepid = mutt_create_filter (s, NULL, &f, NULL);\n    FREE (&s);\n  }\n  else\n  {\n    if (stat (path, &s) < 0)\n      return (NULL);\n    if (S_ISDIR (s.st_mode))\n    {\n      errno = EINVAL;\n      return (NULL);\n    }\n    f = fopen (path, \"r\");\n    *thepid = -1;\n  }\n  return (f);\n}\n\n/* returns 0 if OK to proceed, -1 to abort, 1 to retry */\nint mutt_save_confirm (const char *s, struct stat *st)\n{\n  char tmp[_POSIX_PATH_MAX];\n  int ret = 0;\n  int rc;\n  int magic = 0;\n\n  magic = mx_get_magic (s);\n\n#ifdef USE_POP\n  if (magic == M_POP)\n  {\n    mutt_error _(\"Can't save message to POP mailbox.\");\n    return 1;\n  }\n#endif\n\n  if (magic > 0 && !mx_access (s, W_OK))\n  {\n    if (option (OPTCONFIRMAPPEND))\n    {\n      snprintf (tmp, sizeof (tmp), _(\"Append messages to %s?\"), s);\n      if ((rc = mutt_yesorno (tmp, M_YES)) == M_NO)\n\tret = 1;\n      else if (rc == -1)\n\tret = -1;\n    }\n  }\n\n  if (stat (s, st) != -1)\n  {\n    if (magic == -1)\n    {\n      mutt_error (_(\"%s is not a mailbox!\"), s);\n      return 1;\n    }\n  }\n  else if (magic != M_IMAP)\n  {\n    st->st_mtime = 0;\n    st->st_atime = 0;\n\n    if (errno == ENOENT)\n    {\n      if (option (OPTCONFIRMCREATE))\n      {\n\tsnprintf (tmp, sizeof (tmp), _(\"Create %s?\"), s);\n\tif ((rc = mutt_yesorno (tmp, M_YES)) == M_NO)\n\t  ret = 1;\n\telse if (rc == -1)\n\t  ret = -1;\n      }\n    }\n    else\n    {\n      mutt_perror (s);\n      return 1;\n    }\n  }\n\n  CLEARLINE (LINES-1);\n  return (ret);\n}\n\nvoid state_prefix_putc (char c, STATE *s)\n{\n  if (s->flags & M_PENDINGPREFIX)\n  {\n    state_reset_prefix (s);\n    if (s->prefix)\n      state_puts (s->prefix, s);\n  }\n\n  state_putc (c, s);\n\n  if (c == '\\n')\n    state_set_prefix (s);\n}\n\nint state_printf (STATE *s, const char *fmt, ...)\n{\n  int rv;\n  va_list ap;\n\n  va_start (ap, fmt);\n  rv = vfprintf (s->fpout, fmt, ap);\n  va_end (ap);\n  \n  return rv;\n}\n\nvoid state_mark_attach (STATE *s)\n{\n  if ((s->flags & M_DISPLAY) && !mutt_strcmp (Pager, \"builtin\"))\n    state_puts (AttachmentMarker, s);\n}\n\nvoid state_attach_puts (const char *t, STATE *s)\n{\n  if (*t != '\\n') state_mark_attach (s);\n  while (*t)\n  {\n    state_putc (*t, s);\n    if (*t++ == '\\n' && *t)\n      if (*t != '\\n') state_mark_attach (s);\n  }\n}\n\nint state_putwc (wchar_t wc, STATE *s)\n{\n  char mb[MB_LEN_MAX] = \"\";\n  int rc;\n\n  if ((rc = wcrtomb (mb, wc, NULL)) < 0)\n    return rc;\n  if (fputs (mb, s->fpout) == EOF)\n    return -1;\n  return 0;\n}\n\nint state_putws (const wchar_t *ws, STATE *s)\n{\n  const wchar_t *p = ws;\n\n  while (p && *p != L'\\0')\n  {\n    if (state_putwc (*p, s) < 0)\n      return -1;\n    p++;\n  }\n  return 0;\n}\n\nvoid mutt_display_sanitize (char *s)\n{\n  for (; *s; s++)\n  {\n    if (!IsPrint (*s))\n      *s = '?';\n  }\n}\n      \nvoid mutt_sleep (short s)\n{\n  if (SleepTime > s)\n    sleep (SleepTime);\n  else if (s)\n    sleep(s);\n}\n\n/* creates and initializes a BUFFER */\nBUFFER *mutt_buffer_new(void) {\n  BUFFER *b;\n\n  b = safe_malloc(sizeof(BUFFER));\n\n  mutt_buffer_init(b);\n\n  return b;\n}\n\n/* initialize a new BUFFER */\nBUFFER *mutt_buffer_init (BUFFER *b) {\n  memset(b, 0, sizeof(BUFFER));\n  return b;\n}\n\n/*\n * Creates and initializes a BUFFER*. If passed an existing BUFFER*,\n * just initializes. Frees anything already in the buffer. Copies in\n * the seed string.\n *\n * Disregards the 'destroy' flag, which seems reserved for caller.\n * This is bad, but there's no apparent protocol for it.\n */\nBUFFER *mutt_buffer_from (char *seed) {\n  BUFFER *b;\n\n  if (!seed)\n    return NULL;\n\n  b = mutt_buffer_new ();\n  b->data = safe_strdup(seed);\n  b->dsize = mutt_strlen(seed);\n  b->dptr = (char *) b->data + b->dsize;\n  return b;\n}\n\nint mutt_buffer_printf (BUFFER* buf, const char* fmt, ...)\n{\n  va_list ap, ap_retry;\n  int len, blen, doff;\n  \n  va_start (ap, fmt);\n  va_copy (ap_retry, ap);\n\n  if (!buf->dptr)\n    buf->dptr = buf->data;\n\n  doff = buf->dptr - buf->data;\n  blen = buf->dsize - doff;\n  /* solaris 9 vsnprintf barfs when blen is 0 */\n  if (!blen)\n  {\n    blen = 128;\n    buf->dsize += blen;\n    safe_realloc (&buf->data, buf->dsize);\n    buf->dptr = buf->data + doff;\n  }\n  if ((len = vsnprintf (buf->dptr, blen, fmt, ap)) >= blen)\n  {\n    blen = ++len - blen;\n    if (blen < 128)\n      blen = 128;\n    buf->dsize += blen;\n    safe_realloc (&buf->data, buf->dsize);\n    buf->dptr = buf->data + doff;\n    len = vsnprintf (buf->dptr, len, fmt, ap_retry);\n  }\n  if (len > 0)\n    buf->dptr += len;\n\n  va_end (ap);\n  va_end (ap_retry);\n\n  return len;\n}\n\nvoid mutt_buffer_addstr (BUFFER* buf, const char* s)\n{\n  mutt_buffer_add (buf, s, mutt_strlen (s));\n}\n\nvoid mutt_buffer_addch (BUFFER* buf, char c)\n{\n  mutt_buffer_add (buf, &c, 1);\n}\n\nvoid mutt_buffer_free (BUFFER **p)\n{\n  if (!p || !*p) \n    return;\n\n   FREE(&(*p)->data);\n   /* dptr is just an offset to data and shouldn't be freed */\n   FREE(p);\t\t/* __FREE_CHECKED__ */\n}\n\n/* dynamically grows a BUFFER to accommodate s, in increments of 128 bytes.\n * Always one byte bigger than necessary for the null terminator, and\n * the buffer is always null-terminated */\nvoid mutt_buffer_add (BUFFER* buf, const char* s, size_t len)\n{\n  size_t offset;\n\n  if (buf->dptr + len + 1 > buf->data + buf->dsize)\n  {\n    offset = buf->dptr - buf->data;\n    buf->dsize += len < 128 ? 128 : len + 1;\n    /* suppress compiler aliasing warning */\n    safe_realloc ((void**) (void*) &buf->data, buf->dsize);\n    buf->dptr = buf->data + offset;\n  }\n  memcpy (buf->dptr, s, len);\n  buf->dptr += len;\n  *(buf->dptr) = '\\0';\n}\n\n/* Decrease a file's modification time by 1 second */\n\ntime_t mutt_decrease_mtime (const char *f, struct stat *st)\n{\n  struct utimbuf utim;\n  struct stat _st;\n  time_t mtime;\n  \n  if (!st)\n  {\n    if (stat (f, &_st) == -1)\n      return -1;\n    st = &_st;\n  }\n\n  if ((mtime = st->st_mtime) == time (NULL))\n  {\n    mtime -= 1;\n    utim.actime = mtime;\n    utim.modtime = mtime;\n    utime (f, &utim);\n  }\n  \n  return mtime;\n}\n\n/* sets mtime of 'to' to mtime of 'from' */\nvoid mutt_set_mtime (const char* from, const char* to)\n{\n  struct utimbuf utim;\n  struct stat st;\n\n  if (stat (from, &st) != -1)\n  {\n    utim.actime = st.st_mtime;\n    utim.modtime = st.st_mtime;\n    utime (to, &utim);\n  }\n}\n\nconst char *mutt_make_version (void)\n{\n  static char vstring[STRING];\n  snprintf (vstring, sizeof (vstring), \"Mutt %s (%s)\",\n\t    MUTT_VERSION, ReleaseDate);\n  return vstring;\n}\n\nREGEXP *mutt_compile_regexp (const char *s, int flags)\n{\n  REGEXP *pp = safe_calloc (sizeof (REGEXP), 1);\n  pp->pattern = safe_strdup (s);\n  pp->rx = safe_calloc (sizeof (regex_t), 1);\n  if (REGCOMP (pp->rx, NONULL(s), flags) != 0)\n    mutt_free_regexp (&pp);\n\n  return pp;\n}\n\nvoid mutt_free_regexp (REGEXP **pp)\n{\n  FREE (&(*pp)->pattern);\n  regfree ((*pp)->rx);\n  FREE (&(*pp)->rx);\n  FREE (pp);\t\t/* __FREE_CHECKED__ */\n}\n\nvoid mutt_free_rx_list (RX_LIST **list)\n{\n  RX_LIST *p;\n  \n  if (!list) return;\n  while (*list)\n  {\n    p = *list;\n    *list = (*list)->next;\n    mutt_free_regexp (&p->rx);\n    FREE (&p);\n  }\n}\n\nvoid mutt_free_spam_list (SPAM_LIST **list)\n{\n  SPAM_LIST *p;\n  \n  if (!list) return;\n  while (*list)\n  {\n    p = *list;\n    *list = (*list)->next;\n    mutt_free_regexp (&p->rx);\n    FREE (&p->template);\n    FREE (&p);\n  }\n}\n\nint mutt_match_rx_list (const char *s, RX_LIST *l)\n{\n  if (!s)  return 0;\n  \n  for (; l; l = l->next)\n  {\n    if (regexec (l->rx->rx, s, (size_t) 0, (regmatch_t *) 0, (int) 0) == 0)\n    {\n      dprint (5, (debugfile, \"mutt_match_rx_list: %s matches %s\\n\", s, l->rx->pattern));\n      return 1;\n    }\n  }\n\n  return 0;\n}\n\n/* Match a string against the patterns defined by the 'spam' command and output\n * the expanded format into `text` when there is a match.  If textsize<=0, the\n * match is performed but the format is not expanded and no assumptions are made\n * about the value of `text` so it may be NULL.\n *\n * Returns 1 if the argument `s` matches a pattern in the spam list, otherwise\n * 0. */\nint mutt_match_spam_list (const char *s, SPAM_LIST *l, char *text, int textsize)\n{\n  static regmatch_t *pmatch = NULL;\n  static int nmatch = 0;\n  int tlen = 0;\n  char *p;\n\n  if (!s) return 0;\n\n  for (; l; l = l->next)\n  {\n    /* If this pattern needs more matches, expand pmatch. */\n    if (l->nmatch > nmatch)\n    {\n      safe_realloc (&pmatch, l->nmatch * sizeof(regmatch_t));\n      nmatch = l->nmatch;\n    }\n\n    /* Does this pattern match? */\n    if (regexec (l->rx->rx, s, (size_t) l->nmatch, (regmatch_t *) pmatch, (int) 0) == 0)\n    {\n      dprint (5, (debugfile, \"mutt_match_spam_list: %s matches %s\\n\", s, l->rx->pattern));\n      dprint (5, (debugfile, \"mutt_match_spam_list: %d subs\\n\", (int)l->rx->rx->re_nsub));\n\n      /* Copy template into text, with substitutions. */\n      for (p = l->template; *p && tlen < textsize - 1;)\n      {\n\t/* backreference to pattern match substring, eg. %1, %2, etc) */\n\tif (*p == '%')\n\t{\n\t  char *e; /* used as pointer to end of integer backreference in strtol() call */\n\t  int n;\n\n\t  ++p; /* skip over % char */\n\t  n = strtol(p, &e, 10);\n\t  /* Ensure that the integer conversion succeeded (e!=p) and bounds check.  The upper bound check\n\t   * should not strictly be necessary since add_to_spam_list() finds the largest value, and\n\t   * the static array above is always large enough based on that value. */\n\t  if (e != p && n >= 0 && n <= l->nmatch && pmatch[n].rm_so != -1) {\n\t    /* copy as much of the substring match as will fit in the output buffer, saving space for\n\t     * the terminating nul char */\n\t    int idx;\n\t    for (idx = pmatch[n].rm_so; (idx < pmatch[n].rm_eo) && (tlen < textsize - 1); ++idx)\n\t      text[tlen++] = s[idx];\n\t  }\n\t  p = e; /* skip over the parsed integer */\n\t}\n\telse\n\t{\n\t  text[tlen++] = *p++;\n\t}\n      }\n      /* tlen should always be less than textsize except when textsize<=0\n       * because the bounds checks in the above code leave room for the\n       * terminal nul char.   This should avoid returning an unterminated\n       * string to the caller.  When textsize<=0 we make no assumption about\n       * the validity of the text pointer. */\n      if (tlen < textsize) {\n\ttext[tlen] = '\\0';\n\tdprint (5, (debugfile, \"mutt_match_spam_list: \\\"%s\\\"\\n\", text));\n      }\n      return 1;\n    }\n  }\n\n  return 0;\n}\n\nvoid mutt_encode_path (char *dest, size_t dlen, const char *src)\n{\n  char *p = safe_strdup (src);\n  int rc = mutt_convert_string (&p, Charset, \"utf-8\", 0);\n  /* `src' may be NULL, such as when called from the pop3 driver. */\n  strfcpy (dest, (rc == 0) ? NONULL(p) : NONULL(src), dlen);\n  FREE (&p);\n}\n"
  },
  {
    "path": "mx.c",
    "content": "/*\n * Copyright (C) 1996-2002,2010,2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2003 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mx.h\"\n#include \"rfc2047.h\"\n#include \"sort.h\"\n#include \"mailbox.h\"\n#include \"copy.h\"\n#include \"keymap.h\"\n#include \"url.h\"\n#ifdef USE_SIDEBAR\n#include \"sidebar.h\"\n#endif\n\n#ifdef USE_IMAP\n#include \"imap.h\"\n#endif\n\n#ifdef USE_POP\n#include \"pop.h\"\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#include \"buffy.h\"\n\n#ifdef USE_DOTLOCK\n#include \"dotlock.h\"\n#endif\n\n#include \"mutt_crypt.h\"\n\n#include <dirent.h>\n#include <fcntl.h>\n#include <sys/file.h>\n#include <sys/stat.h>\n#include <errno.h>\n#include <unistd.h>\n#include <stdlib.h>\n#include <string.h>\n#include <ctype.h>\n#include <utime.h>\n\n#if USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n\n#define mutt_is_spool(s)  (mutt_strcmp (Spoolfile, s) == 0)\n\n#ifdef USE_DOTLOCK\n/* parameters: \n * path - file to lock\n * retry - should retry if unable to lock?\n */\n\n#ifdef DL_STANDALONE\n\nstatic int invoke_dotlock (const char *path, int dummy, int flags, int retry)\n{\n  char cmd[LONG_STRING + _POSIX_PATH_MAX];\n  char f[SHORT_STRING + _POSIX_PATH_MAX];\n  char r[SHORT_STRING];\n  \n  if (flags & DL_FL_RETRY)\n    snprintf (r, sizeof (r), \"-r %d \", retry ? MAXLOCKATTEMPT : 0);\n  \n  mutt_quote_filename (f, sizeof (f), path);\n  \n  snprintf (cmd, sizeof (cmd),\n\t    \"%s %s%s%s%s%s%s%s\",\n\t    NONULL (MuttDotlock),\n\t    flags & DL_FL_TRY ? \"-t \" : \"\",\n\t    flags & DL_FL_UNLOCK ? \"-u \" : \"\",\n\t    flags & DL_FL_USEPRIV ? \"-p \" : \"\",\n\t    flags & DL_FL_FORCE ? \"-f \" : \"\",\n\t    flags & DL_FL_UNLINK ? \"-d \" : \"\",\n\t    flags & DL_FL_RETRY ? r : \"\",\n\t    f);\n  \n  return mutt_system (cmd);\n}\n\n#else \n\n#define invoke_dotlock dotlock_invoke\n\n#endif\n\nstatic int dotlock_file (const char *path, int fd, int retry)\n{\n  int r;\n  int flags = DL_FL_USEPRIV | DL_FL_RETRY;\n\n  if (retry) retry = 1;\n\nretry_lock:\n  if ((r = invoke_dotlock(path, fd, flags, retry)) == DL_EX_EXIST)\n  {\n    if (!option (OPTNOCURSES))\n    {\n      char msg[LONG_STRING];\n      \n      snprintf(msg, sizeof(msg), _(\"Lock count exceeded, remove lock for %s?\"),\n\t       path);\n      if(retry && mutt_yesorno(msg, M_YES) == M_YES)\n      {\n\tflags |= DL_FL_FORCE;\n\tretry--;\n\tmutt_clear_error ();\n\tgoto retry_lock;\n      }\n    } \n    else\n    {\n      mutt_error ( _(\"Can't dotlock %s.\\n\"), path);\n    }\n  }\n  return (r == DL_EX_OK ? 0 : -1);\n}\n\nstatic int undotlock_file (const char *path, int fd)\n{\n  return (invoke_dotlock(path, fd, DL_FL_USEPRIV | DL_FL_UNLOCK, 0) == DL_EX_OK ? \n\t  0 : -1);\n}\n\n#endif /* USE_DOTLOCK */\n\n/* Args:\n *\texcl\t\tif excl != 0, request an exclusive lock\n *\tdot\t\tif dot != 0, try to dotlock the file\n *\ttimeout \tshould retry locking?\n */\nint mx_lock_file (const char *path, int fd, int excl, int dot, int timeout)\n{\n#if defined (USE_FCNTL) || defined (USE_FLOCK)\n  int count;\n  int attempt;\n  struct stat sb = { 0 }, prev_sb = { 0 }; /* silence gcc warnings */\n#endif\n  int r = 0;\n\n#ifdef USE_FCNTL\n  struct flock lck;\n  \n  memset (&lck, 0, sizeof (struct flock));\n  lck.l_type = excl ? F_WRLCK : F_RDLCK;\n  lck.l_whence = SEEK_SET;\n\n  count = 0;\n  attempt = 0;\n  while (fcntl (fd, F_SETLK, &lck) == -1)\n  {\n    dprint(1,(debugfile, \"mx_lock_file(): fcntl errno %d.\\n\", errno));\n    if (errno != EAGAIN && errno != EACCES)\n    {\n      mutt_perror (\"fcntl\");\n      return -1;\n    }\n\n    if (fstat (fd, &sb) != 0)\n      sb.st_size = 0;\n    \n    if (count == 0)\n      prev_sb = sb;\n\n    /* only unlock file if it is unchanged */\n    if (prev_sb.st_size == sb.st_size && ++count >= (timeout?MAXLOCKATTEMPT:0))\n    {\n      if (timeout)\n\tmutt_error _(\"Timeout exceeded while attempting fcntl lock!\");\n      return -1;\n    }\n\n    prev_sb = sb;\n\n    mutt_message (_(\"Waiting for fcntl lock... %d\"), ++attempt);\n    sleep (1);\n  }\n#endif /* USE_FCNTL */\n\n#ifdef USE_FLOCK\n  count = 0;\n  attempt = 0;\n  while (flock (fd, (excl ? LOCK_EX : LOCK_SH) | LOCK_NB) == -1)\n  {\n    if (errno != EWOULDBLOCK)\n    {\n      mutt_perror (\"flock\");\n      r = -1;\n      break;\n    }\n\n    if (fstat(fd, &sb) != 0)\n      sb.st_size = 0;\n    \n    if (count == 0)\n      prev_sb = sb;\n\n    /* only unlock file if it is unchanged */\n    if (prev_sb.st_size == sb.st_size && ++count >= (timeout?MAXLOCKATTEMPT:0))\n    {\n      if (timeout)\n\tmutt_error _(\"Timeout exceeded while attempting flock lock!\");\n      r = -1;\n      break;\n    }\n\n    prev_sb = sb;\n\n    mutt_message (_(\"Waiting for flock attempt... %d\"), ++attempt);\n    sleep (1);\n  }\n#endif /* USE_FLOCK */\n\n#ifdef USE_DOTLOCK\n  if (r == 0 && dot)\n    r = dotlock_file (path, fd, timeout);\n#endif /* USE_DOTLOCK */\n\n  if (r != 0)\n  {\n    /* release any other locks obtained in this routine */\n\n#ifdef USE_FCNTL\n    lck.l_type = F_UNLCK;\n    fcntl (fd, F_SETLK, &lck);\n#endif /* USE_FCNTL */\n\n#ifdef USE_FLOCK\n    flock (fd, LOCK_UN);\n#endif /* USE_FLOCK */\n  }\n\n  return r;\n}\n\nint mx_unlock_file (const char *path, int fd, int dot)\n{\n#ifdef USE_FCNTL\n  struct flock unlockit = { F_UNLCK, 0, 0, 0, 0 };\n\n  memset (&unlockit, 0, sizeof (struct flock));\n  unlockit.l_type = F_UNLCK;\n  unlockit.l_whence = SEEK_SET;\n  fcntl (fd, F_SETLK, &unlockit);\n#endif\n\n#ifdef USE_FLOCK\n  flock (fd, LOCK_UN);\n#endif\n\n#ifdef USE_DOTLOCK\n  if (dot)\n    undotlock_file (path, fd);\n#endif\n  \n  return 0;\n}\n\nstatic void mx_unlink_empty (const char *path)\n{\n  int fd;\n#ifndef USE_DOTLOCK\n  struct stat sb;\n#endif\n\n  if ((fd = open (path, O_RDWR)) == -1)\n    return;\n\n  if (mx_lock_file (path, fd, 1, 0, 1) == -1)\n  {\n    close (fd);\n    return;\n  }\n\n#ifdef USE_DOTLOCK\n  invoke_dotlock (path, fd, DL_FL_UNLINK, 1);\n#else\n  if (fstat (fd, &sb) == 0 && sb.st_size == 0)\n    unlink (path);\n#endif\n\n  mx_unlock_file (path, fd, 0);\n  close (fd);\n}\n\n/* try to figure out what type of mailbox ``path'' is\n *\n * return values:\n *\tM_*\tmailbox type\n *\t0\tnot a mailbox\n *\t-1\terror\n */\n\n#ifdef USE_IMAP\n\nint mx_is_imap(const char *p)\n{\n  url_scheme_t scheme;\n\n  if (!p)\n    return 0;\n\n  if (*p == '{')\n    return 1;\n\n  scheme = url_check_scheme (p);\n  if (scheme == U_IMAP || scheme == U_IMAPS)\n    return 1;\n\n  return 0;\n}\n\n#endif\n\n#ifdef USE_POP\nint mx_is_pop (const char *p)\n{\n  url_scheme_t scheme;\n\n  if (!p)\n    return 0;\n\n  scheme = url_check_scheme (p);\n  if (scheme == U_POP || scheme == U_POPS)\n    return 1;\n\n  return 0;\n}\n#endif\n\n#ifdef USE_NOTMUCH\n\nint mx_is_notmuch(const char *p)\n{\n  url_scheme_t scheme;\n\n  if (!p)\n    return 0;\n\n  scheme = url_check_scheme (p);\n  if (scheme == U_NOTMUCH)\n    return 1;\n\n  return 0;\n}\n\n#endif\n\nint mx_get_magic (const char *path)\n{\n  struct stat st;\n  int magic = 0;\n  char tmp[_POSIX_PATH_MAX];\n  FILE *f;\n\n#ifdef USE_IMAP\n  if(mx_is_imap(path))\n    return M_IMAP;\n#endif /* USE_IMAP */\n\n#ifdef USE_POP\n  if (mx_is_pop (path))\n    return M_POP;\n#endif /* USE_POP */\n\n#ifdef USE_NOTMUCH\n  if (mx_is_notmuch(path))\n    return M_NOTMUCH;\n#endif\n\n  if (stat (path, &st) == -1)\n  {\n    dprint (1, (debugfile, \"mx_get_magic(): unable to stat %s: %s (errno %d).\\n\",\n\t\tpath, strerror (errno), errno));\n    return (-1);\n  }\n\n  if (S_ISDIR (st.st_mode))\n  {\n    /* check for maildir-style mailbox */\n    if (mx_is_maildir (path))\n      return M_MAILDIR;\n\n    /* check for mh-style mailbox */\n    if (mx_is_mh (path))\n      return M_MH;\n  }\n  else if (st.st_size == 0)\n  {\n    /* hard to tell what zero-length files are, so assume the default magic */\n    if (DefaultMagic == M_MBOX || DefaultMagic == M_MMDF)\n      return (DefaultMagic);\n    else\n      return (M_MBOX);\n  }\n  else if ((f = fopen (path, \"r\")) != NULL)\n  {\n    struct utimbuf times;\n\n    fgets (tmp, sizeof (tmp), f);\n    if (mutt_strncmp (\"From \", tmp, 5) == 0)\n      magic = M_MBOX;\n    else if (mutt_strcmp (MMDF_SEP, tmp) == 0)\n      magic = M_MMDF;\n    safe_fclose (&f);\n\n    if (!option(OPTCHECKMBOXSIZE))\n    {\n      /* need to restore the times here, the file was not really accessed,\n       * only the type was accessed.  This is important, because detection\n       * of \"new mail\" depends on those times set correctly.\n       */\n      times.actime = st.st_atime;\n      times.modtime = st.st_mtime;\n      utime (path, &times);\n    }\n  }\n  else\n  {\n    dprint (1, (debugfile, \"mx_get_magic(): unable to open file %s for reading.\\n\",\n\t\tpath));\n    return (-1);\n  }\n\n  return (magic);\n}\n\n/*\n * set DefaultMagic to the given value\n */\nint mx_set_magic (const char *s)\n{\n  if (ascii_strcasecmp (s, \"mbox\") == 0)\n    DefaultMagic = M_MBOX;\n  else if (ascii_strcasecmp (s, \"mmdf\") == 0)\n    DefaultMagic = M_MMDF;\n  else if (ascii_strcasecmp (s, \"mh\") == 0)\n    DefaultMagic = M_MH;\n  else if (ascii_strcasecmp (s, \"maildir\") == 0)\n    DefaultMagic = M_MAILDIR;\n  else\n    return (-1);\n\n  return 0;\n}\n\n/* mx_access: Wrapper for access, checks permissions on a given mailbox.\n *   We may be interested in using ACL-style flags at some point, currently\n *   we use the normal access() flags. */\nint mx_access (const char* path, int flags)\n{\n#ifdef USE_IMAP\n  if (mx_is_imap (path))\n    return imap_access (path, flags);\n#endif\n\n  return access (path, flags);\n}\n\nstatic int mx_open_mailbox_append (CONTEXT *ctx, int flags)\n{\n  struct stat sb;\n\n  ctx->append = 1;\n\n#ifdef USE_IMAP\n  \n  if(mx_is_imap(ctx->path))  \n    return imap_open_mailbox_append (ctx);\n\n#endif\n  \n  if(stat(ctx->path, &sb) == 0)\n  {\n    ctx->magic = mx_get_magic (ctx->path);\n    \n    switch (ctx->magic)\n    {\n      case 0:\n\tmutt_error (_(\"%s is not a mailbox.\"), ctx->path);\n\t/* fall through */\n      case -1:\n\treturn (-1);\n    }\n  }\n  else if (errno == ENOENT)\n  {\n    ctx->magic = DefaultMagic;\n\n    if (ctx->magic == M_MH || ctx->magic == M_MAILDIR)\n    {\n      char tmp[_POSIX_PATH_MAX];\n\n      if (mkdir (ctx->path, S_IRWXU))\n      {\n\tmutt_perror (ctx->path);\n\treturn (-1);\n      }\n\n      if (ctx->magic == M_MAILDIR)\n      {\n\tsnprintf (tmp, sizeof (tmp), \"%s/cur\", ctx->path);\n\tif (mkdir (tmp, S_IRWXU))\n\t{\n\t  mutt_perror (tmp);\n\t  rmdir (ctx->path);\n\t  return (-1);\n\t}\n\n\tsnprintf (tmp, sizeof (tmp), \"%s/new\", ctx->path);\n\tif (mkdir (tmp, S_IRWXU))\n\t{\n\t  mutt_perror (tmp);\n\t  snprintf (tmp, sizeof (tmp), \"%s/cur\", ctx->path);\n\t  rmdir (tmp);\n\t  rmdir (ctx->path);\n\t  return (-1);\n\t}\n\tsnprintf (tmp, sizeof (tmp), \"%s/tmp\", ctx->path);\n\tif (mkdir (tmp, S_IRWXU))\n\t{\n\t  mutt_perror (tmp);\n\t  snprintf (tmp, sizeof (tmp), \"%s/cur\", ctx->path);\n\t  rmdir (tmp);\n\t  snprintf (tmp, sizeof (tmp), \"%s/new\", ctx->path);\n\t  rmdir (tmp);\n\t  rmdir (ctx->path);\n\t  return (-1);\n\t}\n      }\n      else\n      {\n\tint i;\n\n\tsnprintf (tmp, sizeof (tmp), \"%s/.mh_sequences\", ctx->path);\n\tif ((i = creat (tmp, S_IRWXU)) == -1)\n\t{\n\t  mutt_perror (tmp);\n\t  rmdir (ctx->path);\n\t  return (-1);\n\t}\n\tclose (i);\n      }\n    }\n  }\n  else\n  {\n    mutt_perror (ctx->path);\n    return (-1);\n  }\n\n  switch (ctx->magic)\n  {\n    case M_MBOX:\n    case M_MMDF:\n    if ((ctx->fp = safe_fopen (ctx->path, flags & M_NEWFOLDER ? \"w\" : \"a\")) == NULL ||\n\t  mbox_lock_mailbox (ctx, 1, 1) != 0)\n      {\n\tif (!ctx->fp)\n\t  mutt_perror (ctx->path);\n\telse\n\t{\n\t  mutt_error (_(\"Couldn't lock %s\\n\"), ctx->path);\n\t  safe_fclose (&ctx->fp);\n\t}\n\treturn (-1);\n      }\n      fseek (ctx->fp, 0, 2);\n      break;\n\n    case M_MH:\n    case M_MAILDIR:\n      /* nothing to do */\n      break;\n\n    default:\n      return (-1);\n  }\n\n  return 0;\n}\n\n/*\n * open a mailbox and parse it\n *\n * Args:\n *\tflags\tM_NOSORT\tdo not sort mailbox\n *\t\tM_APPEND\topen mailbox for appending\n *\t\tM_READONLY\topen mailbox in read-only mode\n *\t\tM_QUIET\t\tonly print error messages\n *\t\tM_PEEK\t\trevert atime where applicable\n *\tctx\tif non-null, context struct to use\n */\nCONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx)\n{\n  CONTEXT *ctx = pctx;\n  int rc;\n\n  if (!ctx)\n    ctx = safe_malloc (sizeof (CONTEXT));\n  memset (ctx, 0, sizeof (CONTEXT));\n  ctx->path = safe_strdup (path);\n\n  ctx->msgnotreadyet = -1;\n  ctx->collapsed = 0;\n\n  for (rc=0; rc < RIGHTSMAX; rc++)\n    mutt_bit_set(ctx->rights,rc);\n\n  if (flags & M_QUIET)\n    ctx->quiet = 1;\n  if (flags & M_READONLY)\n    ctx->readonly = 1;\n#ifdef USE_SIDEBAR\n  if (flags & M_PEEK)\n    ctx->peekonly = 1;\n#endif\n\n  if (flags & (M_APPEND|M_NEWFOLDER))\n  {\n    if (mx_open_mailbox_append (ctx, flags) != 0)\n    {\n      mx_fastclose_mailbox (ctx);\n      if (!pctx)\n\tFREE (&ctx);\n      return NULL;\n    }\n    return ctx;\n  }\n\n  ctx->magic = mx_get_magic (path);\n  \n  if(ctx->magic == 0)\n    mutt_error (_(\"%s is not a mailbox.\"), path);\n\n  if(ctx->magic == -1)\n    mutt_perror(path);\n  \n  if(ctx->magic <= 0)\n  {\n    mx_fastclose_mailbox (ctx);\n    if (!pctx)\n      FREE (&ctx);\n    return (NULL);\n  }\n  \n  /* if the user has a `push' command in their .muttrc, or in a folder-hook,\n   * it will cause the progress messages not to be displayed because\n   * mutt_refresh() will think we are in the middle of a macro.  so set a\n   * flag to indicate that we should really refresh the screen.\n   */\n  set_option (OPTFORCEREFRESH);\n\n  if (!ctx->quiet)\n    mutt_message (_(\"Reading %s...\"), ctx->path);\n\n  switch (ctx->magic)\n  {\n    case M_MH:\n      rc = mh_read_dir (ctx, NULL);\n      break;\n\n    case M_MAILDIR:\n      rc = maildir_read_dir (ctx);\n      break;\n\n    case M_MMDF:\n    case M_MBOX:\n      rc = mbox_open_mailbox (ctx);\n      break;\n\n#ifdef USE_IMAP\n    case M_IMAP:\n      rc = imap_open_mailbox (ctx);\n      break;\n#endif /* USE_IMAP */\n\n#ifdef USE_POP\n    case M_POP:\n      rc = pop_open_mailbox (ctx);\n      break;\n#endif /* USE_POP */\n\n#ifdef USE_NOTMUCH\n    case M_NOTMUCH:\n      rc = nm_read_query (ctx);\n      break;\n#endif /* USE_IMAP */\n\n    default:\n      rc = -1;\n      break;\n  }\n\n  if (rc == 0)\n  {\n    if ((flags & M_NOSORT) == 0)\n    {\n      /* avoid unnecessary work since the mailbox is completely unthreaded\n\t to begin with */\n      unset_option (OPTSORTSUBTHREADS);\n      unset_option (OPTNEEDRESCORE);\n      mutt_sort_headers (ctx, 1);\n    }\n    if (!ctx->quiet)\n      mutt_clear_error ();\n  }\n  else\n  {\n    mx_fastclose_mailbox (ctx);\n    if (!pctx)\n      FREE (&ctx);\n  }\n\n  unset_option (OPTFORCEREFRESH);\n  return (ctx);\n}\n\n/* free up memory associated with the mailbox context */\nvoid mx_fastclose_mailbox (CONTEXT *ctx)\n{\n  int i;\n\n  if(!ctx) \n    return;\n\n#ifdef USE_SIDEBAR\n  /* fix up the times so buffy won't get confused */\n  struct utimbuf ut;\n  if (ctx->peekonly && ctx->path && (ctx->mtime > ctx->atime)) {\n    ut.actime  = ctx->atime;\n    ut.modtime = ctx->mtime;\n    utime (ctx->path, &ut);\n  }\n#endif\n\n  /* never announce that a mailbox we've just left has new mail. #3290\n   * XXX: really belongs in mx_close_mailbox, but this is a nice hook point */\n#ifdef USE_SIDEBAR\n  if (!ctx->peekonly)\n#endif\n  mutt_buffy_setnotified(ctx->path);\n\n  if (ctx->mx_close)\n    ctx->mx_close (ctx);\n\n  if (ctx->subj_hash)\n    hash_destroy (&ctx->subj_hash, NULL);\n  if (ctx->id_hash)\n    hash_destroy (&ctx->id_hash, NULL);\n  mutt_clear_threads (ctx);\n  for (i = 0; i < ctx->msgcount; i++)\n    mutt_free_header (&ctx->hdrs[i]);\n#ifdef USE_SIDEBAR\n  ctx->msgcount -= ctx->deleted;\n  sb_set_buffystats (ctx);\n#endif\n  FREE (&ctx->hdrs);\n  FREE (&ctx->v2r);\n  FREE (&ctx->path);\n  FREE (&ctx->pattern);\n  if (ctx->limit_pattern) \n    mutt_pattern_free (&ctx->limit_pattern);\n  safe_fclose (&ctx->fp);\n  memset (ctx, 0, sizeof (CONTEXT));\n}\n\n/* save changes to disk */\nstatic int sync_mailbox (CONTEXT *ctx, int *index_hint)\n{\n  BUFFY *tmp = NULL;\n  int rc = -1;\n\n  if (!ctx->quiet)\n    mutt_message (_(\"Writing %s...\"), ctx->path);\n\n  switch (ctx->magic)\n  {\n    case M_MBOX:\n    case M_MMDF:\n      rc = mbox_sync_mailbox (ctx, index_hint);\n      if (option(OPTCHECKMBOXSIZE))\n\ttmp = mutt_find_mailbox (ctx->path);\n      break;\n      \n    case M_MH:\n    case M_MAILDIR:\n      rc = mh_sync_mailbox (ctx, index_hint);\n      break;\n      \n#ifdef USE_IMAP\n    case M_IMAP:\n      /* extra argument means EXPUNGE */\n      rc = imap_sync_mailbox (ctx, 1, index_hint);\n      break;\n#endif /* USE_IMAP */\n\n#ifdef USE_POP\n    case M_POP:\n      rc = pop_sync_mailbox (ctx, index_hint);\n      break;\n#endif /* USE_POP */\n\n#ifdef USE_NOTMUCH\n    case M_NOTMUCH:\n      rc = nm_sync (ctx, index_hint);\n      break;\n#endif /* USE_NOTMUCH */\n\n  }\n\n#if 0\n  if (!ctx->quiet && !ctx->shutup && rc == -1)\n    mutt_error ( _(\"Could not synchronize mailbox %s!\"), ctx->path);\n#endif\n  \n  if (tmp && tmp->new == 0)\n    mutt_update_mailbox (tmp);\n  return rc;\n}\n\n/* save changes and close mailbox */\nint mx_close_mailbox (CONTEXT *ctx, int *index_hint)\n{\n  int i, move_messages = 0, purge = 1, read_msgs = 0;\n  int check;\n  int isSpool = 0;\n  CONTEXT f;\n  char mbox[_POSIX_PATH_MAX];\n  char buf[SHORT_STRING];\n\n  if (!ctx) return 0;\n\n  ctx->closing = 1;\n\n  if (ctx->readonly || ctx->dontwrite)\n  {\n    /* mailbox is readonly or we don't want to write */\n    mx_fastclose_mailbox (ctx);\n    return 0;\n  }\n\n  if (ctx->append)\n  {\n    /* mailbox was opened in write-mode */\n    if (ctx->magic == M_MBOX || ctx->magic == M_MMDF)\n      mbox_close_mailbox (ctx);\n    else\n      mx_fastclose_mailbox (ctx);\n    return 0;\n  }\n\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    if (!ctx->hdrs[i]->deleted && ctx->hdrs[i]->read \n        && !(ctx->hdrs[i]->flagged && option (OPTKEEPFLAGGED)))\n      read_msgs++;\n#ifdef USE_SIDEBAR\n    if (ctx->hdrs[i]->deleted && !ctx->hdrs[i]->read)\n      ctx->unread--;\n    if (ctx->hdrs[i]->deleted && ctx->hdrs[i]->flagged)\n      ctx->flagged--;\n#endif\n  }\n\n  if (read_msgs && quadoption (OPT_MOVE) != M_NO)\n  {\n    char *p;\n\n    if ((p = mutt_find_hook (M_MBOXHOOK, ctx->path)))\n    {\n      isSpool = 1;\n      strfcpy (mbox, p, sizeof (mbox));\n    }\n    else\n    {\n      strfcpy (mbox, NONULL(Inbox), sizeof (mbox));\n      isSpool = mutt_is_spool (ctx->path) && !mutt_is_spool (mbox);\n    }\n\n    if (isSpool && *mbox)\n    {\n      mutt_expand_path (mbox, sizeof (mbox));\n      snprintf (buf, sizeof (buf), _(\"Move read messages to %s?\"), mbox);\n      if ((move_messages = query_quadoption (OPT_MOVE, buf)) == -1)\n      {\n\tctx->closing = 0;\n\treturn (-1);\n      }\n    }\n  }\n\n  /* \n   * There is no point in asking whether or not to purge if we are\n   * just marking messages as \"trash\".\n   */\n  if (ctx->deleted && !(ctx->magic == M_MAILDIR && option (OPTMAILDIRTRASH)))\n  {\n    snprintf (buf, sizeof (buf), ctx->deleted == 1\n\t     ? _(\"Purge %d deleted message?\") : _(\"Purge %d deleted messages?\"),\n\t      ctx->deleted);\n    if ((purge = query_quadoption (OPT_DELETE, buf)) < 0)\n    {\n      ctx->closing = 0;\n      return (-1);\n    }\n  }\n\n  if (option (OPTMARKOLD))\n  {\n    for (i = 0; i < ctx->msgcount; i++)\n    {\n      if (!ctx->hdrs[i]->deleted && !ctx->hdrs[i]->old && !ctx->hdrs[i]->read)\n\tmutt_set_flag (ctx, ctx->hdrs[i], M_OLD, 1);\n    }\n  }\n\n  if (move_messages)\n  {\n    if (!ctx->quiet)\n      mutt_message (_(\"Moving read messages to %s...\"), mbox);\n\n#ifdef USE_IMAP\n    /* try to use server-side copy first */\n    i = 1;\n    \n    if (ctx->magic == M_IMAP && mx_is_imap (mbox))\n    {\n      /* tag messages for moving, and clear old tags, if any */\n      for (i = 0; i < ctx->msgcount; i++)\n\tif (ctx->hdrs[i]->read && !ctx->hdrs[i]->deleted\n            && !(ctx->hdrs[i]->flagged && option (OPTKEEPFLAGGED))) \n\t  ctx->hdrs[i]->tagged = 1;\n\telse\n\t  ctx->hdrs[i]->tagged = 0;\n      \n      i = imap_copy_messages (ctx, NULL, mbox, 1);\n    }\n    \n    if (i == 0) /* success */\n      mutt_clear_error ();\n    else if (i == -1) /* horrible error, bail */\n    {\n      ctx->closing=0;\n      return -1;\n    }\n    else /* use regular append-copy mode */\n#endif\n    {\n      if (mx_open_mailbox (mbox, M_APPEND, &f) == NULL)\n      {\n\tctx->closing = 0;\n\treturn -1;\n      }\n\n      for (i = 0; i < ctx->msgcount; i++)\n      {\n\tif (ctx->hdrs[i]->read && !ctx->hdrs[i]->deleted\n            && !(ctx->hdrs[i]->flagged && option (OPTKEEPFLAGGED)))\n        {\n\t  if (mutt_append_message (&f, ctx, ctx->hdrs[i], 0, CH_UPDATE_LEN) == 0)\n\t  {\n\t    mutt_set_flag (ctx, ctx->hdrs[i], M_DELETE, 1);\n\t  }\n\t  else\n\t  {\n\t    mx_close_mailbox (&f, NULL);\n\t    ctx->closing = 0;\n\t    return -1;\n\t  }\n\t}\n      }\n    \n      mx_close_mailbox (&f, NULL);\n    }\n    \n  }\n  else if (!ctx->changed && ctx->deleted == 0)\n  {\n    if (!ctx->quiet)\n      mutt_message _(\"Mailbox is unchanged.\");\n    if (ctx->magic == M_MBOX || ctx->magic == M_MMDF)\n      mbox_reset_atime (ctx, NULL);\n    mx_fastclose_mailbox (ctx);\n    return 0;\n  }\n  \n#ifdef USE_IMAP\n  /* allow IMAP to preserve the deleted flag across sessions */\n  if (ctx->magic == M_IMAP)\n  {\n    if ((check = imap_sync_mailbox (ctx, purge, index_hint)) != 0)\n    {\n      ctx->closing = 0;\n      return check;\n    }\n  }\n  else\n#endif\n  {\n    if (!purge)\n    {\n      for (i = 0; i < ctx->msgcount; i++)\n        ctx->hdrs[i]->deleted = 0;\n      ctx->deleted = 0;\n    }\n\n    if (ctx->changed || ctx->deleted)\n    {\n      if ((check = sync_mailbox (ctx, index_hint)) != 0)\n      {\n\tctx->closing = 0;\n\treturn check;\n      }\n    }\n  }\n\n  if (!ctx->quiet)\n  {\n    if (move_messages)\n      mutt_message (_(\"%d kept, %d moved, %d deleted.\"),\n\tctx->msgcount - ctx->deleted, read_msgs, ctx->deleted);\n    else\n      mutt_message (_(\"%d kept, %d deleted.\"),\n\tctx->msgcount - ctx->deleted, ctx->deleted);\n  }\n\n  if (ctx->msgcount == ctx->deleted &&\n      (ctx->magic == M_MMDF || ctx->magic == M_MBOX) &&\n      !mutt_is_spool(ctx->path) && !option (OPTSAVEEMPTY))\n    mx_unlink_empty (ctx->path);\n\n  mx_fastclose_mailbox (ctx);\n\n  return 0;\n}\n\n\n/* update a Context structure's internal tables. */\n\nvoid mx_update_tables(CONTEXT *ctx, int committing)\n{\n  int i, j;\n  \n  /* update memory to reflect the new state of the mailbox */\n  ctx->vcount = 0;\n  ctx->vsize = 0;\n  ctx->tagged = 0;\n  ctx->deleted = 0;\n  ctx->new = 0;\n  ctx->unread = 0;\n  ctx->changed = 0;\n  ctx->flagged = 0;\n#define this_body ctx->hdrs[j]->content\n  for (i = 0, j = 0; i < ctx->msgcount; i++)\n  {\n    if (!ctx->hdrs[i]->quasi_deleted &&\n\t((committing && (!ctx->hdrs[i]->deleted ||\n\t\t\t(ctx->magic == M_MAILDIR && option (OPTMAILDIRTRASH)))) ||\n\t(!committing && ctx->hdrs[i]->active)))\n    {\n      if (i != j)\n      {\n\tctx->hdrs[j] = ctx->hdrs[i];\n\tctx->hdrs[i] = NULL;\n      }\n      ctx->hdrs[j]->msgno = j;\n      if (ctx->hdrs[j]->virtual != -1)\n      {\n\tctx->v2r[ctx->vcount] = j;\n\tctx->hdrs[j]->virtual = ctx->vcount++;\n\tctx->vsize += this_body->length + this_body->offset -\n\t  this_body->hdr_offset;\n      }\n\n      if (committing)\n\tctx->hdrs[j]->changed = 0;\n      else if (ctx->hdrs[j]->changed)\n\tctx->changed++;\n      \n      if (!committing || (ctx->magic == M_MAILDIR && option (OPTMAILDIRTRASH)))\n      {\n\tif (ctx->hdrs[j]->deleted)\n\t  ctx->deleted++;\n      }\n\n      if (ctx->hdrs[j]->tagged)\n\tctx->tagged++;\n      if (ctx->hdrs[j]->flagged)\n\tctx->flagged++;\n      if (!ctx->hdrs[j]->read)\n      { \n\tctx->unread++;\n\tif (!ctx->hdrs[j]->old)\n\t  ctx->new++;\n      } \n\n      j++;\n    }\n    else\n    {\n      if (ctx->magic == M_MH || ctx->magic == M_MAILDIR)\n\tctx->size -= (ctx->hdrs[i]->content->length +\n\t\t      ctx->hdrs[i]->content->offset -\n\t\t      ctx->hdrs[i]->content->hdr_offset);\n      /* remove message from the hash tables */\n      if (ctx->subj_hash && ctx->hdrs[i]->env->real_subj)\n\thash_delete (ctx->subj_hash, ctx->hdrs[i]->env->real_subj, ctx->hdrs[i], NULL);\n      if (ctx->id_hash && ctx->hdrs[i]->env->message_id)\n\thash_delete (ctx->id_hash, ctx->hdrs[i]->env->message_id, ctx->hdrs[i], NULL);\n      /* The path mx_check_mailbox() -> imap_check_mailbox() ->\n       *          imap_expunge_mailbox() -> mx_update_tables()\n       * can occur before a call to mx_sync_mailbox(), resulting in\n       * last_tag being stale if it's not reset here.\n       */\n      if (ctx->last_tag == ctx->hdrs[i])\n        ctx->last_tag = NULL;\n      mutt_free_header (&ctx->hdrs[i]);\n    }\n  }\n#undef this_body\n  ctx->msgcount = j;\n}\n\n\n/* save changes to mailbox\n *\n * return values:\n *\t0\t\tsuccess\n *\t-1\t\terror\n */\nint mx_sync_mailbox (CONTEXT *ctx, int *index_hint)\n{\n  int rc, i;\n  int purge = 1;\n  int msgcount, deleted;\n\n  if (ctx->dontwrite)\n  {\n    char buf[STRING], tmp[STRING];\n    if (km_expand_key (buf, sizeof(buf),\n                       km_find_func (MENU_MAIN, OP_TOGGLE_WRITE)))\n      snprintf (tmp, sizeof(tmp), _(\" Press '%s' to toggle write\"), buf);\n    else\n      strfcpy (tmp, _(\"Use 'toggle-write' to re-enable write!\"), sizeof(tmp));\n\n    mutt_error (_(\"Mailbox is marked unwritable. %s\"), tmp);\n    return -1;\n  }\n  else if (ctx->readonly)\n  {\n    mutt_error _(\"Mailbox is read-only.\");\n    return -1;\n  }\n\n  if (!ctx->changed && !ctx->deleted)\n  {\n    if (!ctx->quiet)\n      mutt_message _(\"Mailbox is unchanged.\");\n    return (0);\n  }\n\n  if (ctx->deleted)\n  {\n    char buf[SHORT_STRING];\n\n    snprintf (buf, sizeof (buf), ctx->deleted == 1\n\t     ? _(\"Purge %d deleted message?\") : _(\"Purge %d deleted messages?\"),\n\t      ctx->deleted);\n    if ((purge = query_quadoption (OPT_DELETE, buf)) < 0)\n      return (-1);\n    else if (purge == M_NO)\n    {\n      if (!ctx->changed)\n\treturn 0; /* nothing to do! */\n      /* let IMAP servers hold on to D flags */\n      if (ctx->magic != M_IMAP)\n      {\n        for (i = 0 ; i < ctx->msgcount ; i++)\n          ctx->hdrs[i]->deleted = 0;\n        ctx->deleted = 0;\n      }\n    }\n    else if (ctx->last_tag && ctx->last_tag->deleted)\n      ctx->last_tag = NULL; /* reset last tagged msg now useless */\n  }\n\n  /* really only for IMAP - imap_sync_mailbox results in a call to\n   * mx_update_tables, so ctx->deleted is 0 when it comes back */\n  msgcount = ctx->msgcount;\n  deleted = ctx->deleted;\n\n#ifdef USE_IMAP\n  if (ctx->magic == M_IMAP)\n    rc = imap_sync_mailbox (ctx, purge, index_hint);\n  else\n#endif\n    rc = sync_mailbox (ctx, index_hint);\n  if (rc == 0)\n  {\n#ifdef USE_IMAP\n    if (ctx->magic == M_IMAP && !purge)\n    {\n      if (!ctx->quiet)\n        mutt_message _(\"Mailbox checkpointed.\");\n    }\n    else\n#endif\n    {\n      if (!ctx->quiet)\n\tmutt_message (_(\"%d kept, %d deleted.\"), msgcount - deleted,\n\t\t      deleted);\n    }\n\n    mutt_sleep (0);\n    \n    if (ctx->msgcount == ctx->deleted &&\n\t(ctx->magic == M_MBOX || ctx->magic == M_MMDF) &&\n\t!mutt_is_spool (ctx->path) && !option (OPTSAVEEMPTY))\n    {\n      unlink (ctx->path);\n      mx_fastclose_mailbox (ctx);\n      return 0;\n    }\n\n    /* if we haven't deleted any messages, we don't need to resort */\n    /* ... except for certain folder formats which need \"unsorted\" \n     * sort order in order to synchronize folders.\n     * \n     * MH and maildir are safe.  mbox-style seems to need re-sorting,\n     * at least with the new threading code.\n     */\n    if (purge || (ctx->magic != M_MAILDIR && ctx->magic != M_MH))\n    {\n      /* IMAP does this automatically after handling EXPUNGE */\n      if (ctx->magic != M_IMAP)\n      {\n\tmx_update_tables (ctx, 1);\n\tmutt_sort_headers (ctx, 1); /* rethread from scratch */\n      }\n    }\n  }\n\n  return (rc);\n}\n\n\n/* {maildir,mh}_open_new_message are in mh.c. */\n\nstatic int mbox_open_new_message (MESSAGE *msg, CONTEXT *dest, HEADER *hdr)\n{\n  msg->fp = dest->fp;\n  return 0;\n}\n\n#ifdef USE_IMAP\nstatic int imap_open_new_message (MESSAGE *msg, CONTEXT *dest, HEADER *hdr)\n{\n  char tmp[_POSIX_PATH_MAX];\n\n  mutt_mktemp (tmp, sizeof (tmp));\n  if ((msg->fp = safe_fopen (tmp, \"w\")) == NULL)\n  {\n    mutt_perror (tmp);\n    return (-1);\n  }\n  msg->path = safe_strdup(tmp);\n  return 0;\n}\n#endif\n\n/* args:\n *\tdest\tdestination mailbox\n *\thdr\tmessage being copied (required for maildir support, because\n *\t\tthe filename depends on the message flags)\n */\nMESSAGE *mx_open_new_message (CONTEXT *dest, HEADER *hdr, int flags)\n{\n  MESSAGE *msg;\n  int (*func) (MESSAGE *, CONTEXT *, HEADER *);\n  ADDRESS *p = NULL;\n\n  switch (dest->magic)\n  {\n    case M_MMDF:\n    case M_MBOX:\n      func = mbox_open_new_message;\n      break;\n    case M_MAILDIR:\n      func = maildir_open_new_message;\n      break;\n    case M_MH:\n      func = mh_open_new_message;\n      break;\n#ifdef USE_IMAP\n    case M_IMAP:\n      func = imap_open_new_message;\n      break;\n#endif\n    default:\n      dprint (1, (debugfile, \"mx_open_new_message(): function unimplemented for mailbox type %d.\\n\",\n\t\t  dest->magic));\n      return (NULL);\n  }\n\n  msg = safe_calloc (1, sizeof (MESSAGE));\n  msg->magic = dest->magic;\n  msg->write = 1;\n\n  if (hdr)\n  {\n    msg->flags.flagged = hdr->flagged;\n    msg->flags.replied = hdr->replied;\n    msg->flags.read    = hdr->read;\n    msg->flags.draft   = (flags & M_SET_DRAFT) ? 1 : 0;\n    msg->received = hdr->received;\n  }\n\n  if(msg->received == 0)\n    time(&msg->received);\n  \n  if (func (msg, dest, hdr) == 0)\n  {\n    if (dest->magic == M_MMDF)\n      fputs (MMDF_SEP, msg->fp);\n\n    if ((msg->magic == M_MBOX || msg->magic ==  M_MMDF) &&\n\tflags & M_ADD_FROM)\n    {\n      if (hdr)\n      {\n\tif (hdr->env->return_path)\n\t  p = hdr->env->return_path;\n\telse if (hdr->env->sender)\n\t  p = hdr->env->sender;\n\telse\n\t  p = hdr->env->from;\n      }\n\n      fprintf (msg->fp, \"From %s %s\", p ? p->mailbox : NONULL(Username), ctime (&msg->received));\n    }\n  }\n  else\n    FREE (&msg);\n\n  return msg;\n}\n\n/* check for new mail */\nint mx_check_mailbox (CONTEXT *ctx, int *index_hint, int lock)\n{\n  int rc;\n\n  if (ctx)\n  {\n    if (ctx->locked) lock = 0;\n\n    switch (ctx->magic)\n    {\n      case M_MBOX:\n      case M_MMDF:\n\n\tif (lock)\n\t{\n\t  mutt_block_signals ();\n\t  if (mbox_lock_mailbox (ctx, 0, 0) == -1)\n\t  {\n\t    mutt_unblock_signals ();\n\t    return M_LOCKED;\n\t  }\n\t}\n\t\n\trc = mbox_check_mailbox (ctx, index_hint);\n\n\tif (lock)\n\t{\n\t  mutt_unblock_signals ();\n\t  mbox_unlock_mailbox (ctx);\n\t}\n\t\n\treturn rc;\n\n\n      case M_MH:\n\treturn (mh_check_mailbox (ctx, index_hint));\n      case M_MAILDIR:\n\treturn (maildir_check_mailbox (ctx, index_hint));\n\n#ifdef USE_IMAP\n      case M_IMAP:\n\t/* caller expects that mailbox may change */\n        imap_allow_reopen (ctx);\n\trc = imap_check_mailbox (ctx, index_hint, 0);\n        imap_disallow_reopen (ctx);\n\treturn rc;\n#endif /* USE_IMAP */\n\n#ifdef USE_POP\n      case M_POP:\n\treturn (pop_check_mailbox (ctx, index_hint));\n#endif /* USE_POP */\n\n#ifdef USE_NOTMUCH\n      case M_NOTMUCH:\n\treturn nm_check_database(ctx, index_hint);\n#endif\n    }\n  }\n\n  dprint (1, (debugfile, \"mx_check_mailbox: null or invalid context.\\n\"));\n  return (-1);\n}\n\n/* return a stream pointer for a message */\nMESSAGE *mx_open_message (CONTEXT *ctx, int msgno)\n{\n  MESSAGE *msg;\n\n  msg = safe_calloc (1, sizeof (MESSAGE));\n  switch (msg->magic = ctx->magic)\n  {\n    case M_MBOX:\n    case M_MMDF:\n      msg->fp = ctx->fp;\n      break;\n\n    case M_MH:\n    case M_MAILDIR:\n#ifdef USE_NOTMUCH\n    case M_NOTMUCH:\n#endif\n    {\n      HEADER *cur = ctx->hdrs[msgno];\n      char path[_POSIX_PATH_MAX];\n      char *folder = ctx->path;\n#ifdef USE_NOTMUCH\n      if (ctx->magic == M_NOTMUCH) {\n\tmsg->magic = nm_header_get_magic(cur);\n\tfolder = nm_header_get_folder(cur);\n      }\n#endif\n      snprintf (path, sizeof (path), \"%s/%s\", folder, cur->path);\n\n      if ((msg->fp = fopen (path, \"r\")) == NULL && errno == ENOENT &&\n\t  (ctx->magic == M_MAILDIR || ctx->magic == M_NOTMUCH))\n\tmsg->fp = maildir_open_find_message (folder, cur->path, NULL);\n      \n      if (msg->fp == NULL)\n      {\n\tmutt_perror (path);\n\tdprint (1, (debugfile, \"mx_open_message: fopen: %s: %s (errno %d).\\n\",\n\t\t    path, strerror (errno), errno));\n\tFREE (&msg);\n      }\n    }\n    break;\n    \n#ifdef USE_IMAP\n    case M_IMAP:\n    {\n      if (imap_fetch_message (msg, ctx, msgno) != 0)\n\tFREE (&msg);\n      break;\n    }\n#endif /* USE_IMAP */\n\n#ifdef USE_POP\n    case M_POP:\n    {\n      if (pop_fetch_message (msg, ctx, msgno) != 0)\n\tFREE (&msg);\n      break;\n    }\n#endif /* USE_POP */\n\n    default:\n      dprint (1, (debugfile, \"mx_open_message(): function not implemented for mailbox type %d.\\n\", ctx->magic));\n      FREE (&msg);\n      break;\n  }\n  return (msg);\n}\n\n/* commit a message to a folder */\n\nint mx_commit_message (MESSAGE *msg, CONTEXT *ctx)\n{\n  int r = 0;\n\n  if (!(msg->write && ctx->append))\n  {\n    dprint (1, (debugfile, \"mx_commit_message(): msg->write = %d, ctx->append = %d\\n\",\n\t\tmsg->write, ctx->append));\n    return -1;\n  }\n\n  switch (msg->magic)\n  {\n    case M_MMDF:\n    {\n      if (fputs (MMDF_SEP, msg->fp) == EOF)\n\tr = -1;\n      break;\n    }\n    \n    case M_MBOX:\n    {\n      if (fputc ('\\n', msg->fp) == EOF)\n\tr = -1;\n      break;\n    }\n\n#ifdef USE_IMAP\n    case M_IMAP:\n    {\n      if ((r = safe_fclose (&msg->fp)) == 0)\n\tr = imap_append_message (ctx, msg);\n      break;\n    }\n#endif\n\n    case M_MAILDIR:\n    {\n      r = maildir_commit_message (ctx, msg, NULL);\n      break;\n    }\n\n    case M_NOTMUCH:\n      mutt_perror _(\"Can't write to virtual folder.\");\n      break;\n\n    case M_MH:\n    {\n      r = mh_commit_message (ctx, msg, NULL);\n      break;\n    }\n  }\n  \n  if (r == 0 && (ctx->magic == M_MBOX || ctx->magic == M_MMDF)\n      && (fflush (msg->fp) == EOF || fsync (fileno (msg->fp)) == -1))\n  {\n    mutt_perror _(\"Can't write message\");\n    r = -1;\n  }\n\n  return r;\n}\n\n/* close a pointer to a message */\nint mx_close_message (MESSAGE **msg)\n{\n  int r = 0;\n\n  if ((*msg)->magic == M_MH || (*msg)->magic == M_MAILDIR\n      || (*msg)->magic == M_IMAP || (*msg)->magic == M_POP\n      || (*msg)->magic == M_NOTMUCH)\n  {\n    r = safe_fclose (&(*msg)->fp);\n  }\n  else\n    (*msg)->fp = NULL;\n\n  dprint (2, (debugfile, \"mx_close_message (): close: path=%s, commited=%s\\n\",\n\t(*msg)->path, (*msg)->commited_path));\n\n  if ((*msg)->path && (*msg)->magic != M_NOTMUCH)\n  {\n    dprint (1, (debugfile, \"mx_close_message (): unlinking %s\\n\",\n\t\t(*msg)->path));\n    unlink ((*msg)->path);\n    FREE (&(*msg)->path);\n  }\n\n  FREE (&(*msg)->commited_path);\n  FREE (msg);\t\t/* __FREE_CHECKED__ */\n  return (r);\n}\n\nvoid mx_alloc_memory (CONTEXT *ctx)\n{\n  int i;\n  size_t s = MAX (sizeof (HEADER *), sizeof (int));\n  \n  if ((ctx->hdrmax + 25) * s < ctx->hdrmax * s)\n  {\n    mutt_error _(\"Integer overflow -- can't allocate memory.\");\n    sleep (1);\n    mutt_exit (1);\n  }\n  \n  if (ctx->hdrs)\n  {\n    safe_realloc (&ctx->hdrs, sizeof (HEADER *) * (ctx->hdrmax += 25));\n    safe_realloc (&ctx->v2r, sizeof (int) * ctx->hdrmax);\n  }\n  else\n  {\n    ctx->hdrs = safe_calloc ((ctx->hdrmax += 25), sizeof (HEADER *));\n    ctx->v2r = safe_calloc (ctx->hdrmax, sizeof (int));\n  }\n  for (i = ctx->msgcount ; i < ctx->hdrmax ; i++)\n  {\n    ctx->hdrs[i] = NULL;\n    ctx->v2r[i] = -1;\n  }\n}\n\n/* this routine is called to update the counts in the context structure for\n * the last message header parsed.\n */\nvoid mx_update_context (CONTEXT *ctx, int new_messages)\n{\n  HEADER *h;\n  int msgno;\n\n  for (msgno = ctx->msgcount - new_messages; msgno < ctx->msgcount; msgno++)\n  {\n    h = ctx->hdrs[msgno];\n\n    if (WithCrypto)\n    {\n      /* NOTE: this _must_ be done before the check for mailcap! */\n      h->security = crypt_query (h->content);\n    }\n\n    if (!ctx->pattern)\n    {\n      ctx->v2r[ctx->vcount] = msgno;\n      h->virtual = ctx->vcount++;\n    }\n    else\n      h->virtual = -1;\n    h->msgno = msgno;\n\n    if (h->env->supersedes)\n    {\n      HEADER *h2;\n\n      if (!ctx->id_hash)\t\n\tctx->id_hash = mutt_make_id_hash (ctx);\n\n      h2 = hash_find (ctx->id_hash, h->env->supersedes);\n\n      /* FREE (&h->env->supersedes); should I ? */\n      if (h2)\n      {\n\th2->superseded = 1;\n\tif (option (OPTSCORE)) \n\t  mutt_score_message (ctx, h2, 1);\n      }\n    }\n\n    /* add this message to the hash tables */\n    if (ctx->id_hash && h->env->message_id)\n      hash_insert (ctx->id_hash, h->env->message_id, h, 0);\n    if (ctx->subj_hash && h->env->real_subj)\n      hash_insert (ctx->subj_hash, h->env->real_subj, h, 1);\n\n    if (option (OPTSCORE)) \n      mutt_score_message (ctx, h, 0);\n\n    if (h->changed)\n      ctx->changed = 1;\n    if (h->flagged)\n      ctx->flagged++;\n    if (h->deleted)\n      ctx->deleted++;\n    if (!h->read)\n    {\n      ctx->unread++;\n      if (!h->old)\n\tctx->new++;\n    }\n  }\n}\n\n/*\n * Return:\n * 1 if the specified mailbox contains 0 messages.\n * 0 if the mailbox contains messages\n * -1 on error\n */\nint mx_check_empty (const char *path)\n{\n  switch (mx_get_magic (path))\n  {\n    case M_MBOX:\n    case M_MMDF:\n      return mbox_check_empty (path);\n    case M_MH:\n      return mh_check_empty (path);\n    case M_MAILDIR:\n      return maildir_check_empty (path);\n    default:\n      errno = EINVAL;\n      return -1;\n  }\n  /* not reached */\n}\n\n/* vim: set sw=2: */\n"
  },
  {
    "path": "mx.h",
    "content": "/*\n * Copyright (C) 1996-2002,2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2002 Thomas Roessler <roessler@does-not-exist.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/*\n * This header file contains prototypes for internal functions used by the\n * generic mailbox api.  None of these functions should be called directly.\n */\n\n#ifndef _MX_H\n#define _MX_H\n\n#include \"mailbox.h\"\n#include \"buffy.h\"\n\n/* supported mailbox formats */\nenum\n{\n  M_MBOX = 1,\n  M_MMDF,\n  M_MH,\n  M_MAILDIR,\n  M_IMAP,\n  M_NOTMUCH,\n  M_POP\n};\n\nWHERE short DefaultMagic INITVAL (M_MBOX);\n\n#define MMDF_SEP \"\\001\\001\\001\\001\\n\"\n#define MAXLOCKATTEMPT 5\n\nint mbox_sync_mailbox (CONTEXT *, int *);\nint mbox_open_mailbox (CONTEXT *);\nint mbox_check_mailbox (CONTEXT *, int *);\nint mbox_close_mailbox (CONTEXT *);\nint mbox_lock_mailbox (CONTEXT *, int, int);\nint mbox_parse_mailbox (CONTEXT *);\nint mmdf_parse_mailbox (CONTEXT *);\nvoid mbox_unlock_mailbox (CONTEXT *);\nint mbox_check_empty (const char *);\nvoid mbox_reset_atime (CONTEXT *, struct stat *);\n\nint mh_read_dir (CONTEXT *, const char *);\nint mh_sync_mailbox (CONTEXT *, int *);\nint mh_check_mailbox (CONTEXT *, int *);\n#ifdef USE_SIDEBAR\nvoid mh_buffy_update (BUFFY *mailbox);\n#endif\nint mh_check_empty (const char *);\n\nint maildir_read_dir (CONTEXT *);\nint maildir_check_mailbox (CONTEXT *, int *);\nint maildir_check_empty (const char *);\n\nHEADER *maildir_parse_message (int magic, const char *fname, int is_old, HEADER * _h);\nHEADER *maildir_parse_stream (int magic, FILE *f, const char *fname, int is_old, HEADER * _h);\nvoid maildir_parse_flags (HEADER * h, const char *path);\nvoid maildir_update_flags (CONTEXT *ctx, HEADER *o, HEADER *n);\nvoid maildir_flags(char *dest, size_t destlen, HEADER * hdr);\n\n#if USE_HCACHE\n#include <hcache.h>\nint mh_sync_mailbox_message (CONTEXT * ctx, int msgno, header_cache_t *hc);\n#else\nint mh_sync_mailbox_message (CONTEXT * ctx, int msgno);\n#endif\n\n#ifdef USE_NOTMUCH\nint mx_is_notmuch(const char *p);\n#endif\n\nint maildir_commit_message (CONTEXT *, MESSAGE *, HEADER *);\nint mh_commit_message (CONTEXT *, MESSAGE *, HEADER *);\n\nint maildir_open_new_message (MESSAGE *, CONTEXT *, HEADER *);\nint mh_open_new_message (MESSAGE *, CONTEXT *, HEADER *);\n\nFILE *maildir_open_find_message (const char *, const char *, char **);\n\nint mbox_strict_cmp_headers (const HEADER *, const HEADER *);\nint mutt_reopen_mailbox (CONTEXT *, int *);\n\nvoid mx_alloc_memory (CONTEXT *);\nvoid mx_update_context (CONTEXT *, int);\nvoid mx_update_tables (CONTEXT *, int);\n\n\nint mx_lock_file (const char *, int, int, int, int);\nint mx_unlock_file (const char *path, int fd, int dot);\n\n\n#endif\n"
  },
  {
    "path": "pager.c",
    "content": "/*\n * Copyright (C) 1996-2002,2007,2010,2012-2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_regex.h\"\n#include \"keymap.h\"\n#include \"mutt_menu.h\"\n#include \"mapping.h\"\n#include \"pager.h\"\n#include \"attach.h\"\n#include \"mbyte.h\"\n#ifdef USE_SIDEBAR\n#include \"sidebar.h\"\n#endif\n\n#include \"mutt_crypt.h\"\n\n#include <sys/stat.h>\n#include <ctype.h>\n#include <unistd.h>\n#include <stdlib.h>\n#include <string.h>\n#include <errno.h>\n\n#define ISHEADER(x) ((x) == MT_COLOR_HEADER || (x) == MT_COLOR_HDEFAULT)\n\n#define IsAttach(x) (x && (x)->bdy)\n#define IsRecvAttach(x) (x && (x)->bdy && (x)->fp)\n#define IsSendAttach(x) (x && (x)->bdy && !(x)->fp)\n#define IsMsgAttach(x) (x && (x)->fp && (x)->bdy && (x)->bdy->hdr)\n#define IsHeader(x) (x && (x)->hdr && !(x)->bdy)\n\nstatic const char *Not_available_in_this_menu = N_(\"Not available in this menu.\");\nstatic const char *Mailbox_is_read_only = N_(\"Mailbox is read-only.\");\nstatic const char *Function_not_permitted_in_attach_message_mode = N_(\"Function not permitted in attach-message mode.\");\n\n/* hack to return to position when returning from index to same message */\nstatic int TopLine = 0;\nstatic HEADER *OldHdr = NULL;\n\n#define CHECK_MODE(x)\tif (!(x)) \\\n\t\t\t{ \\\n\t\t\t  \tmutt_flushinp (); \\\n\t\t\t\tmutt_error _(Not_available_in_this_menu); \\\n\t\t\t\tbreak; \\\n\t\t\t}\n\n#define CHECK_READONLY\tif (Context->readonly) \\\n\t\t\t{ \\\n\t\t\t\tmutt_flushinp (); \\\n\t\t\t\tmutt_error _(Mailbox_is_read_only);\t\\\n\t\t\t\tbreak; \\\n\t\t\t}\n\n#define CHECK_ATTACH if(option(OPTATTACHMSG)) \\\n\t\t     {\\\n\t\t\tmutt_flushinp (); \\\n\t\t\tmutt_error _(Function_not_permitted_in_attach_message_mode); \\\n\t\t\tbreak; \\\n\t\t     }\n\n#define CHECK_ACL(aclbit,action) \\\n\t\tif (!mutt_bit_isset(Context->rights,aclbit)) { \\\n\t\t\tmutt_flushinp(); \\\n        /* L10N: %s is one of the CHECK_ACL entries below. */ \\\n\t\t\tmutt_error (_(\"%s: Operation not permitted by ACL\"), action); \\\n\t\t\tbreak; \\\n\t\t}\n\nstruct q_class_t\n{\n  int length;\n  int index;\n  int color;\n  char *prefix;\n  struct q_class_t *next, *prev;\n  struct q_class_t *down, *up;\n};\n\nstruct syntax_t\n{\n  int color;\n  int first;\n  int last;\n};\n\nstruct line_t\n{\n  LOFF_T offset;\n  short type;\n  short continuation;\n  short chunks;\n  short search_cnt;\n  struct syntax_t *syntax;\n  struct syntax_t *search;\n  struct q_class_t *quote;\n  unsigned int is_cont_hdr; /* this line is a continuation of the previous header line */\n};\n\n#define ANSI_OFF       (1<<0)\n#define ANSI_BLINK     (1<<1)\n#define ANSI_BOLD      (1<<2)\n#define ANSI_UNDERLINE (1<<3)\n#define ANSI_REVERSE   (1<<4)\n#define ANSI_COLOR     (1<<5)\n\ntypedef struct _ansi_attr {\n  int attr;\n  int fg;\n  int bg;\n  int pair;\n} ansi_attr;\n\nstatic short InHelp = 0;\n\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\nstatic struct resize {\n  int line;\n  int SearchCompiled;\n  int SearchBack;\n} *Resize = NULL;\n#endif\n\n#define NumSigLines 4\n\nstatic int check_sig (const char *s, struct line_t *info, int n)\n{\n  int count = 0;\n\n  while (n > 0 && count <= NumSigLines)\n  {\n    if (info[n].type != MT_COLOR_SIGNATURE)\n      break;\n    count++;\n    n--;\n  }\n\n  if (count == 0)\n    return (-1);\n\n  if (count > NumSigLines)\n  {\n    /* check for a blank line */\n    while (*s)\n    {\n      if (!ISSPACE (*s))\n\treturn 0;\n      s++;\n    }\n\n    return (-1);\n  }\n\n  return (0);\n}\n\nstatic void\nresolve_color (struct line_t *lineInfo, int n, int cnt, int flags, int special,\n    ansi_attr *a)\n{\n  int def_color;\t\t/* color without syntax hilight */\n  int color;\t\t\t/* final color */\n  static int last_color;\t/* last color set */\n  int search = 0, i, m;\n\n  if (!cnt)\n    last_color = -1;\t\t/* force attrset() */\n\n  if (lineInfo[n].continuation)\n  {\n    if (!cnt && option (OPTMARKERS))\n    {\n      SETCOLOR (MT_COLOR_MARKERS);\n      addch ('+');\n      last_color = ColorDefs[MT_COLOR_MARKERS];\n    }\n    m = (lineInfo[n].syntax)[0].first;\n    cnt += (lineInfo[n].syntax)[0].last;\n  }\n  else\n    m = n;\n  if (!(flags & M_SHOWCOLOR))\n    def_color = ColorDefs[MT_COLOR_NORMAL];\n  else if (lineInfo[m].type == MT_COLOR_HEADER)\n    def_color = (lineInfo[m].syntax)[0].color;\n  else\n    def_color = ColorDefs[lineInfo[m].type];\n\n  if ((flags & M_SHOWCOLOR) && lineInfo[m].type == MT_COLOR_QUOTED)\n  {\n    struct q_class_t *class = lineInfo[m].quote;\n\n    if (class)\n    {\n      def_color = class->color;\n\n      while (class && class->length > cnt)\n      {\n\tdef_color = class->color;\n\tclass = class->up;\n      }\n    }\n  }\n\n  color = def_color;\n  if (flags & M_SHOWCOLOR)\n  {\n    for (i = 0; i < lineInfo[m].chunks; i++)\n    {\n      /* we assume the chunks are sorted */\n      if (cnt > (lineInfo[m].syntax)[i].last)\n\tcontinue;\n      if (cnt < (lineInfo[m].syntax)[i].first)\n\tbreak;\n      if (cnt != (lineInfo[m].syntax)[i].last)\n      {\n\tcolor = (lineInfo[m].syntax)[i].color;\n\tbreak;\n      }\n      /* don't break here, as cnt might be \n       * in the next chunk as well */\n    }\n  }\n\n  if (flags & M_SEARCH)\n  {\n    for (i = 0; i < lineInfo[m].search_cnt; i++)\n    {\n      if (cnt > (lineInfo[m].search)[i].last)\n\tcontinue;\n      if (cnt < (lineInfo[m].search)[i].first)\n\tbreak;\n      if (cnt != (lineInfo[m].search)[i].last)\n      {\n\tcolor = ColorDefs[MT_COLOR_SEARCH];\n\tsearch = 1;\n\tbreak;\n      }\n    }\n  }\n\n  /* handle \"special\" bold & underlined characters */\n  if (special || a->attr)\n  {\n#ifdef HAVE_COLOR\n    if ((a->attr & ANSI_COLOR))\n    {\n      if (a->pair == -1)\n\ta->pair = mutt_alloc_color (a->fg, a->bg);\n      color = a->pair;\n      if (a->attr & ANSI_BOLD)\n\t  color |= A_BOLD;\n    }\n    else\n#endif\n      if ((special & A_BOLD) || (a->attr & ANSI_BOLD))\n    {\n      if (ColorDefs[MT_COLOR_BOLD] && !search)\n\tcolor = ColorDefs[MT_COLOR_BOLD];\n      else\n\tcolor ^= A_BOLD;\n    }\n    if ((special & A_UNDERLINE) || (a->attr & ANSI_UNDERLINE))\n    {\n      if (ColorDefs[MT_COLOR_UNDERLINE] && !search)\n\tcolor = ColorDefs[MT_COLOR_UNDERLINE];\n      else\n\tcolor ^= A_UNDERLINE;\n    }\n    else if (a->attr & ANSI_REVERSE) \n    {\n      color ^= A_REVERSE;\n    }\n    else if (a->attr & ANSI_BLINK) \n    {\n      color ^= A_BLINK;\n    }\n    else if (a->attr & ANSI_OFF)\n    {\n      a->attr = 0;\n    }\n  }\n\n  if (color != last_color)\n  {\n    ATTRSET (color);\n    last_color = color;\n  }\n}\n\nstatic void\nappend_line (struct line_t *lineInfo, int n, int cnt)\n{\n  int m;\n\n  lineInfo[n+1].type = lineInfo[n].type;\n  (lineInfo[n+1].syntax)[0].color = (lineInfo[n].syntax)[0].color;\n  lineInfo[n+1].continuation = 1;\n\n  /* find the real start of the line */\n  for (m = n; m >= 0; m--)\n    if (lineInfo[m].continuation == 0) break;\n\n  (lineInfo[n+1].syntax)[0].first = m;\n  (lineInfo[n+1].syntax)[0].last = (lineInfo[n].continuation) ? \n    cnt + (lineInfo[n].syntax)[0].last : cnt;\n}\n\nstatic void\nnew_class_color (struct q_class_t *class, int *q_level)\n{\n  class->index = (*q_level)++;\n  class->color = ColorQuote[class->index % ColorQuoteUsed];\n}\n\nstatic void\nshift_class_colors (struct q_class_t *QuoteList, struct q_class_t *new_class,\n\t\t      int index, int *q_level)\n{\n  struct q_class_t * q_list;\n\n  q_list = QuoteList;\n  new_class->index = -1;\n\n  while (q_list)\n  {\n    if (q_list->index >= index)\n    {\n      q_list->index++;\n      q_list->color = ColorQuote[q_list->index % ColorQuoteUsed];\n    }\n    if (q_list->down)\n      q_list = q_list->down;\n    else if (q_list->next)\n      q_list = q_list->next;\n    else\n    {\n      while (!q_list->next)\n      {\n\tq_list = q_list->up;\n\tif (q_list == NULL)\n\t  break;\n      }\n      if (q_list)\n\tq_list = q_list->next;\n    }\n  }\n\n  new_class->index = index;\n  new_class->color = ColorQuote[index % ColorQuoteUsed];\n  (*q_level)++;\n}\n\nstatic void\ncleanup_quote (struct q_class_t **QuoteList)\n{\n  struct q_class_t *ptr;\n\n  while (*QuoteList)\n  {\n    if ((*QuoteList)->down)\n      cleanup_quote (&((*QuoteList)->down));\n    ptr = (*QuoteList)->next;\n    if ((*QuoteList)->prefix)\n      FREE (&(*QuoteList)->prefix);\n    FREE (QuoteList);\t\t/* __FREE_CHECKED__ */\n    *QuoteList = ptr;\n  }\n\n  return;\n}\n\nstatic struct q_class_t *\nclassify_quote (struct q_class_t **QuoteList, const char *qptr,\n\t\tint length, int *force_redraw, int *q_level)\n{\n  struct q_class_t *q_list = *QuoteList;\n  struct q_class_t *class = NULL, *tmp = NULL, *ptr, *save;\n  char *tail_qptr;\n  int offset, tail_lng;\n  int index = -1;\n\n  if (ColorQuoteUsed <= 1)\n  {\n    /* not much point in classifying quotes... */\n\n    if (*QuoteList == NULL)\n    {\n      class = (struct q_class_t *) safe_calloc (1, sizeof (struct q_class_t));\n      class->color = ColorQuote[0];\n      *QuoteList = class;\n    }\n    return (*QuoteList);\n  }\n\n  /* Did I mention how much I like emulating Lisp in C? */\n\n  /* classify quoting prefix */\n  while (q_list)\n  {\n    if (length <= q_list->length)\n    {\n      /* case 1: check the top level nodes */\n\n      if (mutt_strncmp (qptr, q_list->prefix, length) == 0)\n      {\n\tif (length == q_list->length)\n\t  return q_list;\t/* same prefix: return the current class */\n\n\t/* found shorter prefix */\n\tif (tmp == NULL)\n\t{\n\t  /* add a node above q_list */\n\t  tmp = (struct q_class_t *) safe_calloc (1, sizeof (struct q_class_t));\n\t  tmp->prefix = (char *) safe_calloc (1, length + 1);\n\t  strncpy (tmp->prefix, qptr, length);\n\t  tmp->length = length;\n\n\t  /* replace q_list by tmp in the top level list */\n\t  if (q_list->next)\n\t  {\n\t    tmp->next = q_list->next;\n\t    q_list->next->prev = tmp;\n\t  }\n\t  if (q_list->prev)\n\t  {\n\t    tmp->prev = q_list->prev;\n\t    q_list->prev->next = tmp;\n\t  }\n\n\t  /* make q_list a child of tmp */\n\t  tmp->down = q_list;\n\t  q_list->up = tmp;\n\n\t  /* q_list has no siblings for now */\n\t  q_list->next = NULL;\n\t  q_list->prev = NULL;\n\n\t  /* update the root if necessary */\n\t  if (q_list == *QuoteList)\n\t    *QuoteList = tmp;\n\n\t  index = q_list->index;\n\n\t  /* tmp should be the return class too */\n\t  class = tmp;\n\n\t  /* next class to test; if tmp is a shorter prefix for another\n\t   * node, that node can only be in the top level list, so don't\n\t   * go down after this point\n\t   */\n\t  q_list = tmp->next;\n\t}\n\telse\n\t{\n\t  /* found another branch for which tmp is a shorter prefix */\n\n\t  /* save the next sibling for later */\n\t  save = q_list->next;\n\n\t  /* unlink q_list from the top level list */\n\t  if (q_list->next)\n\t    q_list->next->prev = q_list->prev;\n\t  if (q_list->prev)\n\t    q_list->prev->next = q_list->next;\n\n\t  /* at this point, we have a tmp->down; link q_list to it */\n\t  ptr = tmp->down;\n\t  /* sibling order is important here, q_list should be linked last */\n\t  while (ptr->next)\n\t    ptr = ptr->next;\n\t  ptr->next = q_list;\n\t  q_list->next = NULL;\n\t  q_list->prev = ptr;\n\t  q_list->up = tmp;\n\n\t  index = q_list->index;\n\n\t  /* next class to test; as above, we shouldn't go down */\n\t  q_list = save;\n\t}\n\n\t/* we found a shorter prefix, so certain quotes have changed classes */\n\t*force_redraw = 1;\n\tcontinue;\n      }\n      else\n      {\n\t/* shorter, but not a substring of the current class: try next */\n\tq_list = q_list->next;\n\tcontinue;\n      }\n    }\n    else\n    {\n      /* case 2: try subclassing the current top level node */\n      \n      /* tmp != NULL means we already found a shorter prefix at case 1 */\n      if (tmp == NULL && mutt_strncmp (qptr, q_list->prefix, q_list->length) == 0)\n      {\n\t/* ok, it's a subclass somewhere on this branch */\n\n\tptr = q_list;\n\toffset = q_list->length;\n\n\tq_list = q_list->down;\n\ttail_lng = length - offset;\n\ttail_qptr = (char *) qptr + offset;\n\n\twhile (q_list)\n\t{\n\t  if (length <= q_list->length)\n\t  {\n\t    if (mutt_strncmp (tail_qptr, (q_list->prefix) + offset, tail_lng) == 0)\n\t    {\n\t      /* same prefix: return the current class */\n\t      if (length == q_list->length)\n\t\treturn q_list;\n\n\t      /* found shorter common prefix */\n\t      if (tmp == NULL)\n\t      {\n\t\t/* add a node above q_list */\n\t\ttmp = (struct q_class_t *) safe_calloc (1, \n\t\t\t\t\t    sizeof (struct q_class_t));\n\t\ttmp->prefix = (char *) safe_calloc (1, length + 1);\n\t\tstrncpy (tmp->prefix, qptr, length);\n\t\ttmp->length = length;\n\t\t\t\n\t\t/* replace q_list by tmp */\n\t\tif (q_list->next)\n\t\t{\n\t\t  tmp->next = q_list->next;\n\t\t  q_list->next->prev = tmp;\n\t\t}\n\t\tif (q_list->prev)\n\t\t{\n\t\t  tmp->prev = q_list->prev;\n\t\t  q_list->prev->next = tmp;\n\t\t}\n\n\t\t/* make q_list a child of tmp */\n\t\ttmp->down = q_list;\n\t\ttmp->up = q_list->up;\n\t\tq_list->up = tmp;\n\t\tif (tmp->up->down == q_list)\n\t\t  tmp->up->down = tmp;\n\n\t\t/* q_list has no siblings */\n\t\tq_list->next = NULL;\n\t\tq_list->prev = NULL;\n                              \n\t\tindex = q_list->index;\n\n\t\t/* tmp should be the return class too */\n\t\tclass = tmp;\n\n\t\t/* next class to test */\n\t\tq_list = tmp->next;\n\t      }\n\t      else\n\t      {\n\t\t/* found another branch for which tmp is a shorter prefix */\n\n\t\t/* save the next sibling for later */\n\t\tsave = q_list->next;\n\n\t\t/* unlink q_list from the top level list */\n\t\tif (q_list->next)\n\t\t  q_list->next->prev = q_list->prev;\n\t\tif (q_list->prev)\n\t\t  q_list->prev->next = q_list->next;\n\n\t\t/* at this point, we have a tmp->down; link q_list to it */\n\t\tptr = tmp->down;\n\t\twhile (ptr->next)\n\t\t  ptr = ptr->next;\n\t\tptr->next = q_list;\n\t\tq_list->next = NULL;\n\t\tq_list->prev = ptr;\n\t\tq_list->up = tmp;\n\n\t\tindex = q_list->index;\n\n\t\t/* next class to test */\n\t\tq_list = save;\n\t      }\n\n\t      /* we found a shorter prefix, so we need a redraw */\n\t      *force_redraw = 1;\n\t      continue;\n\t    }\n\t    else\n\t    {\n\t      q_list = q_list->next;\n\t      continue;\n\t    }\n\t  }\n\t  else\n\t  {\n\t    /* longer than the current prefix: try subclassing it */\n\t    if (tmp == NULL && mutt_strncmp (tail_qptr, (q_list->prefix) + offset,\n\t\t\t  q_list->length - offset) == 0)\n\t    {\n\t      /* still a subclass: go down one level */\n\t      ptr = q_list;\n\t      offset = q_list->length;\n\n\t      q_list = q_list->down;\n\t      tail_lng = length - offset;\n\t      tail_qptr = (char *) qptr + offset;\n\n\t      continue;\n\t    }\n\t    else\n\t    {\n\t      /* nope, try the next prefix */\n\t      q_list = q_list->next;\n\t      continue;\n\t    }\n\t  }\n\t}\n\n\t/* still not found so far: add it as a sibling to the current node */\n\tif (class == NULL)\n\t{\n\t  tmp = (struct q_class_t *) safe_calloc (1, sizeof (struct q_class_t));\n\t  tmp->prefix = (char *) safe_calloc (1, length + 1);\n\t  strncpy (tmp->prefix, qptr, length);\n\t  tmp->length = length;\n\n\t  if (ptr->down)\n\t  {\n\t    tmp->next = ptr->down;\n\t    ptr->down->prev = tmp;\n\t  }\n\t  ptr->down = tmp;\n\t  tmp->up = ptr;\n\n\t  new_class_color (tmp, q_level);\n\n\t  return tmp;\n\t}\n\telse\n\t{\n\t  if (index != -1)\n\t    shift_class_colors (*QuoteList, tmp, index, q_level);\n\n\t  return class;\n\t}\n      }\n      else\n      {\n\t/* nope, try the next prefix */\n\tq_list = q_list->next;\n\tcontinue;\n      }\n    }\n  }\n\n  if (class == NULL)\n  {\n    /* not found so far: add it as a top level class */\n    class = (struct q_class_t *) safe_calloc (1, sizeof (struct q_class_t));\n    class->prefix = (char *) safe_calloc (1, length + 1);\n    strncpy (class->prefix, qptr, length);\n    class->length = length;\n    new_class_color (class, q_level);\n\n    if (*QuoteList)\n    {\n      class->next = *QuoteList;\n      (*QuoteList)->prev = class;\n    }\n    *QuoteList = class;\n  }\n\n  if (index != -1)\n    shift_class_colors (*QuoteList, tmp, index, q_level);\n\n  return class;\n}\n\nstatic int brailleLine = -1;\nstatic int brailleCol = -1;\n\nstatic int check_attachment_marker (char *);\n\nstatic void\nresolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last,\n\t\tstruct q_class_t **QuoteList, int *q_level, int *force_redraw,\n\t\tint q_classify)\n{\n  COLOR_LINE *color_line;\n  regmatch_t pmatch[1], smatch[1];\n  int found, offset, null_rx, i;\n\n  if (n == 0 || ISHEADER (lineInfo[n-1].type))\n  {\n    if (buf[0] == '\\n') /* end of header */\n    {\n      lineInfo[n].type = MT_COLOR_NORMAL;\n      getyx(stdscr, brailleLine, brailleCol);\n    }\n    else\n    {\n      /* if this is a continuation of the previous line, use the previous\n       * line's color as default. */\n      if (n > 0 && (buf[0] == ' ' || buf[0] == '\\t'))\n      {\n\tlineInfo[n].type = lineInfo[n-1].type; /* wrapped line */\n\t(lineInfo[n].syntax)[0].color = (lineInfo[n-1].syntax)[0].color;\n\tlineInfo[n].is_cont_hdr = 1;\n      }\n      else\n      {\n\tlineInfo[n].type = MT_COLOR_HDEFAULT;\n      }\n\n      for (color_line = ColorHdrList; color_line; color_line = color_line->next)\n      {\n\tif (REGEXEC (color_line->rx, buf) == 0)\n\t{\n\t  lineInfo[n].type = MT_COLOR_HEADER;\n\t  lineInfo[n].syntax[0].color = color_line->pair;\n\t  if (lineInfo[n].is_cont_hdr)\n\t  {\n\t    /* adjust the previous continuation lines to reflect the color of this continuation line */\n\t    int j;\n\t    for (j = n - 1; j >= 0 && lineInfo[j].is_cont_hdr; --j)\n\t    {\n\t      lineInfo[j].type = lineInfo[n].type;\n\t      lineInfo[j].syntax[0].color = lineInfo[n].syntax[0].color;\n\t    }\n\t    /* now adjust the first line of this header field */\n\t    if (j >= 0)\n\t    {\n\t      lineInfo[j].type = lineInfo[n].type;\n\t      lineInfo[j].syntax[0].color = lineInfo[n].syntax[0].color;\n\t    }\n\t    *force_redraw = 1; /* the previous lines have already been drawn on the screen */\n\t  }\n\t  break;\n\t}\n      }\n    }\n  }\n  else if (mutt_strncmp (\"\\033[0m\", raw, 4) == 0)\t/* a little hack... */\n    lineInfo[n].type = MT_COLOR_NORMAL;\n#if 0\n  else if (mutt_strncmp (\"[-- \", buf, 4) == 0)\n    lineInfo[n].type = MT_COLOR_ATTACHMENT;\n#else\n  else if (check_attachment_marker ((char *) raw) == 0)\n    lineInfo[n].type = MT_COLOR_ATTACHMENT;\n#endif\n  else if (mutt_strcmp (\"-- \\n\", buf) == 0 || mutt_strcmp (\"-- \\r\\n\", buf) == 0)\n  {\n    i = n + 1;\n\n    lineInfo[n].type = MT_COLOR_SIGNATURE;\n    while (i < last && check_sig (buf, lineInfo, i - 1) == 0 &&\n\t   (lineInfo[i].type == MT_COLOR_NORMAL ||\n\t    lineInfo[i].type == MT_COLOR_QUOTED ||\n\t    lineInfo[i].type == MT_COLOR_HEADER))\n      {\n\t/* oops... */\n\tif (lineInfo[i].chunks)\n\t{\n\t  lineInfo[i].chunks = 0;\n\t  safe_realloc (&(lineInfo[n].syntax), \n\t\t\tsizeof (struct syntax_t));\n\t}\n\tlineInfo[i++].type = MT_COLOR_SIGNATURE;\n      }\n  }\n  else if (check_sig (buf, lineInfo, n - 1) == 0)\n    lineInfo[n].type = MT_COLOR_SIGNATURE;\n  else if (regexec ((regex_t *) QuoteRegexp.rx, buf, 1, pmatch, 0) == 0)\n  {\n    if (regexec ((regex_t *) Smileys.rx, buf, 1, smatch, 0) == 0)\n    {\n      if (smatch[0].rm_so > 0)\n      {\n\tchar c;\n\n\t/* hack to avoid making an extra copy of buf */\n\tc = buf[smatch[0].rm_so];\n\tbuf[smatch[0].rm_so] = 0;\n\n\tif (regexec ((regex_t *) QuoteRegexp.rx, buf, 1, pmatch, 0) == 0)\n\t{\n\t  if (q_classify && lineInfo[n].quote == NULL)\n\t    lineInfo[n].quote = classify_quote (QuoteList,\n\t\t\t\t  buf + pmatch[0].rm_so,\n\t\t\t\t  pmatch[0].rm_eo - pmatch[0].rm_so,\n\t\t\t\t  force_redraw, q_level);\n\t  lineInfo[n].type = MT_COLOR_QUOTED;\n\t}\n\telse\n\t  lineInfo[n].type = MT_COLOR_NORMAL;\n\n\tbuf[smatch[0].rm_so] = c;\n      }\n      else\n\tlineInfo[n].type = MT_COLOR_NORMAL;\n    }\n    else\n    {\n      if (q_classify && lineInfo[n].quote == NULL)\n\tlineInfo[n].quote = classify_quote (QuoteList, buf + pmatch[0].rm_so,\n\t\t\t      pmatch[0].rm_eo - pmatch[0].rm_so,\n\t\t\t      force_redraw, q_level);\n      lineInfo[n].type = MT_COLOR_QUOTED;\n    }\n  }\n  else\n    lineInfo[n].type = MT_COLOR_NORMAL;\n\n  /* body patterns */\n  if (lineInfo[n].type == MT_COLOR_NORMAL || \n      lineInfo[n].type == MT_COLOR_QUOTED)\n  {\n    size_t nl;\n\n    /* don't consider line endings part of the buffer\n     * for regex matching */\n    if ((nl = mutt_strlen (buf)) > 0 && buf[nl-1] == '\\n')\n      buf[nl-1] = 0;\n\n    i = 0;\n    offset = 0;\n    lineInfo[n].chunks = 0;\n    do\n    {\n      if (!buf[offset])\n\tbreak;\n\n      found = 0;\n      null_rx = 0;\n      color_line = ColorBodyList;\n      while (color_line)\n      {\n\tif (regexec (&color_line->rx, buf + offset, 1, pmatch,\n\t\t     (offset ? REG_NOTBOL : 0)) == 0)\n\t{\n\t  if (pmatch[0].rm_eo != pmatch[0].rm_so)\n\t  {\n\t    if (!found)\n\t    {\n\t      if (++(lineInfo[n].chunks) > 1)\n\t\tsafe_realloc (&(lineInfo[n].syntax), \n\t\t\t      (lineInfo[n].chunks) * sizeof (struct syntax_t));\n\t    }\n\t    i = lineInfo[n].chunks - 1;\n\t    pmatch[0].rm_so += offset;\n\t    pmatch[0].rm_eo += offset;\n\t    if (!found ||\n\t\tpmatch[0].rm_so < (lineInfo[n].syntax)[i].first ||\n\t\t(pmatch[0].rm_so == (lineInfo[n].syntax)[i].first &&\n\t\t pmatch[0].rm_eo > (lineInfo[n].syntax)[i].last))\n\t    {\n\t      (lineInfo[n].syntax)[i].color = color_line->pair;\n\t      (lineInfo[n].syntax)[i].first = pmatch[0].rm_so;\n\t      (lineInfo[n].syntax)[i].last = pmatch[0].rm_eo;\n\t    }\n\t    found = 1;\n\t    null_rx = 0;\n\t  }\n\t  else\n\t    null_rx = 1; /* empty regexp; don't add it, but keep looking */\n\t}\n\tcolor_line = color_line->next;\n      }\n\n      if (null_rx)\n\toffset++; /* avoid degenerate cases */\n      else\n\toffset = (lineInfo[n].syntax)[i].last;\n    } while (found || null_rx);\n    if (nl > 0)\n      buf[nl] = '\\n';\n  }\n}\n\nstatic int is_ansi (unsigned char *buf)\n{\n  while (*buf && (isdigit(*buf) || *buf == ';'))\n    buf++;\n  return (*buf == 'm');\n}\n\nstatic int check_attachment_marker (char *p)\n{\n  char *q = AttachmentMarker;\n  \n  for (;*p == *q && *q && *p && *q != '\\a' && *p != '\\a'; p++, q++)\n    ;\n  return (int) (*p - *q);\n}\n\nstatic int grok_ansi(unsigned char *buf, int pos, ansi_attr *a)\n{\n  int x = pos;\n\n  while (isdigit(buf[x]) || buf[x] == ';')\n    x++;\n\n  /* Character Attributes */\n  if (option (OPTALLOWANSI) && a != NULL && buf[x] == 'm')\n  {\n    if (pos == x)\n    {\n#ifdef HAVE_COLOR\n      if (a->pair != -1)\n\tmutt_free_color (a->fg, a->bg);\n#endif\n      a->attr = ANSI_OFF;\n      a->pair = -1;\n    }\n    while (pos < x)\n    {\n      if (buf[pos] == '1' && (pos+1 == x || buf[pos+1] == ';'))\n      {\n\ta->attr |= ANSI_BOLD;\n\tpos += 2;\n      } \n      else if (buf[pos] == '4' && (pos+1 == x || buf[pos+1] == ';'))\n      {\n\ta->attr |= ANSI_UNDERLINE;\n\tpos += 2;\n      }\n      else if (buf[pos] == '5' && (pos+1 == x || buf[pos+1] == ';'))\n      {\n\ta->attr |= ANSI_BLINK;\n\tpos += 2;\n      }\n      else if (buf[pos] == '7' && (pos+1 == x || buf[pos+1] == ';'))\n      {\n\ta->attr |= ANSI_REVERSE;\n\tpos += 2;\n      }\n      else if (buf[pos] == '0' && (pos+1 == x || buf[pos+1] == ';'))\n      {\n#ifdef HAVE_COLOR\n\tif (a->pair != -1)\n\t  mutt_free_color(a->fg,a->bg);\n#endif\n\ta->attr = ANSI_OFF;\n\ta->pair = -1;\n\tpos += 2;\n      }\n      else if (buf[pos] == '3' && isdigit(buf[pos+1]))\n      {\n#ifdef HAVE_COLOR\n\tif (a->pair != -1)\n\t  mutt_free_color(a->fg,a->bg);\n#endif\n\ta->pair = -1;\n\ta->attr |= ANSI_COLOR;\n\ta->fg = buf[pos+1] - '0';\n\tpos += 3;\n      }\n      else if (buf[pos] == '4' && isdigit(buf[pos+1]))\n      {\n#ifdef HAVE_COLOR\n\tif (a->pair != -1)\n\t  mutt_free_color(a->fg,a->bg);\n#endif\n\ta->pair = -1;\n\ta->attr |= ANSI_COLOR;\n\ta->bg = buf[pos+1] - '0';\n\tpos += 3;\n      }\n      else \n      {\n\twhile (pos < x && buf[pos] != ';') pos++;\n\tpos++;\n      }\n    }\n  }\n  pos = x;\n  return pos;\n}\n\n/* trim tail of buf so that it contains complete multibyte characters */\nstatic int\ntrim_incomplete_mbyte(unsigned char *buf, size_t len)\n{\n  mbstate_t mbstate;\n  size_t k;\n\n  memset (&mbstate, 0, sizeof (mbstate));\n  for (; len > 0; buf += k, len -= k)\n  {\n    k = mbrtowc (NULL, (char *) buf, len, &mbstate);\n    if (k == -2) \n      break; \n    else if (k == -1 || k == 0) \n      k = 1;\n  }\n  *buf = '\\0';\n\n  return len;\n}\n\nstatic int\nfill_buffer (FILE *f, LOFF_T *last_pos, LOFF_T offset, unsigned char **buf,\n\t     unsigned char **fmt, size_t *blen, int *buf_ready)\n{\n  unsigned char *p, *q;\n  static int b_read;\n  int l;\n\n  if (*buf_ready == 0)\n  {\n    if (offset != *last_pos)\n      fseeko (f, offset, 0);\n    if ((*buf = (unsigned char *) mutt_read_line ((char *) *buf, blen, f, &l, M_EOL)) == NULL)\n    {\n      fmt[0] = 0;\n      return (-1);\n    }\n    *last_pos = ftello (f);\n    b_read = (int) (*last_pos - offset);\n    *buf_ready = 1;\n\n    safe_realloc (fmt, *blen);\n\n    /* incomplete mbyte characters trigger a segfault in regex processing for\n     * certain versions of glibc. Trim them if necessary. */\n    if (b_read == *blen - 2)\n      b_read -= trim_incomplete_mbyte(*buf, b_read);\n    \n    /* copy \"buf\" to \"fmt\", but without bold and underline controls */\n    p = *buf;\n    q = *fmt;\n    while (*p)\n    {\n      if (*p == '\\010' && (p > *buf))\n      {\n\tif (*(p+1) == '_')\t/* underline */\n\t  p += 2;\n\telse if (*(p+1) && q > *fmt)\t/* bold or overstrike */\n\t{\n\t  *(q-1) = *(p+1);\n\t  p += 2;\n\t}\n\telse\t\t\t/* ^H */\n\t  *q++ = *p++;\n      }\n      else if (*p == '\\033' && *(p+1) == '[' && is_ansi (p + 2))\n      {\n\twhile (*p++ != 'm')\t/* skip ANSI sequence */\n\t  ;\n      }\n      else if (*p == '\\033' && *(p+1) == ']' && check_attachment_marker ((char *) p) == 0)\n      {\n\tdprint (2, (debugfile, \"fill_buffer: Seen attachment marker.\\n\"));\n\twhile (*p++ != '\\a')\t/* skip pseudo-ANSI sequence */\n\t  ;\n      }\n      else\n\t*q++ = *p++;\n    }\n    *q = 0;\n  }\n  return b_read;\n}\n\n\nstatic int format_line (struct line_t **lineInfo, int n, unsigned char *buf,\n\t\t\tint flags, ansi_attr *pa, int cnt,\n\t\t\tint *pspace, int *pvch, int *pcol, int *pspecial)\n{\n  int space = -1; /* index of the last space or TAB */\n  int col = option (OPTMARKERS) ? (*lineInfo)[n].continuation : 0;\n  int ch, vch, k, last_special = -1, special = 0, t;\n  wchar_t wc;\n  mbstate_t mbstate;\n  int wrap_cols = mutt_term_width ((flags & M_PAGER_NOWRAP) ? 0 : Wrap);\n#ifdef USE_SIDEBAR\n  wrap_cols -= SidebarWidth;\n#endif\n\n  if (check_attachment_marker ((char *)buf) == 0)\n    wrap_cols = COLS;\n\n  /* FIXME: this should come from lineInfo */\n  memset(&mbstate, 0, sizeof(mbstate));\n\n  for (ch = 0, vch = 0; ch < cnt; ch += k, vch += k)\n  {\n    /* Handle ANSI sequences */\n    while (cnt-ch >= 2 && buf[ch] == '\\033' && buf[ch+1] == '[' &&\n\t   is_ansi (buf+ch+2))\n      ch = grok_ansi (buf, ch+2, pa) + 1;\n\n    while (cnt-ch >= 2 && buf[ch] == '\\033' && buf[ch+1] == ']' &&\n\t   check_attachment_marker ((char *) buf+ch) == 0)\n    {\n      while (buf[ch++] != '\\a')\n\tif (ch >= cnt)\n\t  break;\n    }\n\n    /* is anything left to do? */\n    if (ch >= cnt)\n      break;\n    \n    k = mbrtowc (&wc, (char *)buf+ch, cnt-ch, &mbstate);\n    if (k == -2 || k == -1)\n    {\n      dprint (1, (debugfile, \"%s:%d: mbrtowc returned %d; errno = %d.\\n\",\n\t\t  __FILE__, __LINE__, k, errno));\n      if (col + 4 > wrap_cols)\n\tbreak;\n      col += 4;\n      if (pa)\n\tprintw (\"\\\\%03o\", buf[ch]);\n      k = 1;\n      continue;\n    }\n    if (k == 0)\n      k = 1;\n\n    if (Charset_is_utf8 && (wc == 0x200B || wc == 0xFEFF))\n    {\n\tdprint (3, (debugfile, \"skip zero-width character U+%04X\\n\", (unsigned short)wc));\n\tcontinue;\n    }\n\n    /* Handle backspace */\n    special = 0;\n    if (IsWPrint (wc))\n    {\n      wchar_t wc1;\n      mbstate_t mbstate1;\n      int k1, k2;\n\n      while ((wc1 = 0, mbstate1 = mbstate,\n\t      k1 = k + mbrtowc (&wc1, (char *)buf+ch+k, cnt-ch-k, &mbstate1),\n\t      k1 - k > 0 && wc1 == '\\b') &&\n\t     (wc1 = 0,\n\t      k2 = mbrtowc (&wc1, (char *)buf+ch+k1, cnt-ch-k1, &mbstate1),\n\t      k2 > 0 && IsWPrint (wc1)))\n      {\n\tif (wc == wc1)\n\t{\n\t  special |= (wc == '_' && special & A_UNDERLINE)\n\t    ? A_UNDERLINE : A_BOLD;\n\t}\n\telse if (wc == '_' || wc1 == '_')\n\t{\n\t  special |= A_UNDERLINE;\n\t  wc = (wc1 == '_') ? wc : wc1;\n\t}\n\telse\n\t{\n\t  /* special = 0; / * overstrike: nothing to do! */\n\t  wc = wc1;\n\t}\n\tch += k1;\n\tk = k2;\n\tmbstate = mbstate1;\n      }\n    }\n\n    if (pa &&\n\t((flags & (M_SHOWCOLOR | M_SEARCH | M_PAGER_MARKER)) ||\n\t special || last_special || pa->attr))\n    {\n      resolve_color (*lineInfo, n, vch, flags, special, pa);\n      last_special = special;\n    }\n\n    if (IsWPrint (wc) || (Charset_is_utf8 && wc == 0x00A0))\n    {\n      if (wc == ' ')\n\tspace = ch;\n      else if (Charset_is_utf8 && wc == 0x00A0)\n      {\n\t/* Convert non-breaking space to normal space. The local variable\n\t * `space' is not set here so that the caller of this function won't\n\t * attempt to wrap at this character. */\n\twc = ' ';\n      }\n      t = wcwidth (wc);\n      if (col + t > wrap_cols)\n\tbreak;\n      col += t;\n      if (pa)\n\tmutt_addwch (wc);\n    }\n    else if (wc == '\\n')\n      break;\n    else if (wc == '\\t')\n    {\n      space = ch;\n      t = (col & ~7) + 8;\n      if (t > wrap_cols)\n\tbreak;\n      if (pa)\n\tfor (; col < t; col++)\n\t  addch (' ');\n      else\n\tcol = t;\n    }\n    else if (wc < 0x20 || wc == 0x7f)\n    {\n      if (col + 2 > wrap_cols)\n\tbreak;\n      col += 2;\n      if (pa)\n\tprintw (\"^%c\", ('@' + wc) & 0x7f);\n    }\n    else if (wc < 0x100)\n    {\n      if (col + 4 > wrap_cols)\n\tbreak;\n      col += 4;\n      if (pa)\n\tprintw (\"\\\\%03o\", wc);\n    }\n    else\n    {\n      if (col + 1 > wrap_cols)\n\tbreak;\n      ++col;\n      if (pa)\n\taddch (replacement_char ());\n    }\n  }\n  *pspace = space;\n  *pcol = col;\n  *pvch = vch;\n  *pspecial = special;\n  return ch;\n}\n\n/*\n * Args:\n *\tflags\tM_SHOWFLAT, show characters (used for displaying help)\n *\t\tM_SHOWCOLOR, show characters in color\n *\t\t\totherwise don't show characters\n *\t\tM_HIDE, don't show quoted text\n *\t\tM_SEARCH, resolve search patterns\n *\t\tM_TYPES, compute line's type\n *\t\tM_PAGER_NSKIP, keeps leading whitespace\n *\t\tM_PAGER_MARKER, eventually show markers\n *\n * Return values:\n *\t-1\tEOF was reached\n *\t0\tnormal exit, line was not displayed\n *\t>0\tnormal exit, line was displayed\n */\n\nstatic int\ndisplay_line (FILE *f, LOFF_T *last_pos, struct line_t **lineInfo, int n, \n\t      int *last, int *max, int flags, struct q_class_t **QuoteList,\n\t      int *q_level, int *force_redraw, regex_t *SearchRE)\n{\n  unsigned char *buf = NULL, *fmt = NULL;\n  size_t buflen = 0;\n  unsigned char *buf_ptr = buf;\n  int ch, vch, col, cnt, b_read;\n  int buf_ready = 0, change_last = 0;\n  int special;\n  int offset;\n  int def_color;\n  int m;\n  int rc = -1;\n  ansi_attr a = {0,0,0,-1};\n  regmatch_t pmatch[1];\n\n  if (n == *last)\n  {\n    (*last)++;\n    change_last = 1;\n  }\n\n  if (*last == *max)\n  {\n    safe_realloc (lineInfo, sizeof (struct line_t) * (*max += LINES));\n    for (ch = *last; ch < *max ; ch++)\n    {\n      memset (&((*lineInfo)[ch]), 0, sizeof (struct line_t));\n      (*lineInfo)[ch].type = -1;\n      (*lineInfo)[ch].search_cnt = -1;\n      (*lineInfo)[ch].syntax = safe_malloc (sizeof (struct syntax_t));\n      ((*lineInfo)[ch].syntax)[0].first = ((*lineInfo)[ch].syntax)[0].last = -1;\n    }\n  }\n\n  /* only do color hiliting if we are viewing a message */\n  if (flags & (M_SHOWCOLOR | M_TYPES))\n  {\n    if ((*lineInfo)[n].type == -1)\n    {\n      /* determine the line class */\n      if (fill_buffer (f, last_pos, (*lineInfo)[n].offset, &buf, &fmt, &buflen, &buf_ready) < 0)\n      {\n\tif (change_last)\n\t  (*last)--;\n\tgoto out;\n      }\n\n      resolve_types ((char *) fmt, (char *) buf, *lineInfo, n, *last,\n\t\t      QuoteList, q_level, force_redraw, flags & M_SHOWCOLOR);\n\n      /* avoid race condition for continuation lines when scrolling up */\n      for (m = n + 1; m < *last && (*lineInfo)[m].offset && (*lineInfo)[m].continuation; m++)\n\t(*lineInfo)[m].type = (*lineInfo)[n].type;\n    }\n\n    /* this also prevents searching through the hidden lines */\n    if ((flags & M_HIDE) && (*lineInfo)[n].type == MT_COLOR_QUOTED)\n      flags = 0; /* M_NOSHOW */\n  }\n\n  /* At this point, (*lineInfo[n]).quote may still be undefined. We \n   * don't want to compute it every time M_TYPES is set, since this\n   * would slow down the \"bottom\" function unacceptably. A compromise\n   * solution is hence to call regexec() again, just to find out the\n   * length of the quote prefix.\n   */\n  if ((flags & M_SHOWCOLOR) && !(*lineInfo)[n].continuation &&\n      (*lineInfo)[n].type == MT_COLOR_QUOTED && (*lineInfo)[n].quote == NULL)\n  {\n    if (fill_buffer (f, last_pos, (*lineInfo)[n].offset, &buf, &fmt, &buflen, &buf_ready) < 0)\n    {\n      if (change_last)\n\t(*last)--;\n      goto out;\n    }\n    regexec ((regex_t *) QuoteRegexp.rx, (char *) fmt, 1, pmatch, 0);\n    (*lineInfo)[n].quote = classify_quote (QuoteList,\n\t\t\t    (char *) fmt + pmatch[0].rm_so,\n\t\t\t    pmatch[0].rm_eo - pmatch[0].rm_so,\n\t\t\t    force_redraw, q_level);\n  }\n\n  if ((flags & M_SEARCH) && !(*lineInfo)[n].continuation && (*lineInfo)[n].search_cnt == -1) \n  {\n    if (fill_buffer (f, last_pos, (*lineInfo)[n].offset, &buf, &fmt, &buflen, &buf_ready) < 0)\n    {\n      if (change_last)\n\t(*last)--;\n      goto out;\n    }\n\n    offset = 0;\n    (*lineInfo)[n].search_cnt = 0;\n    while (regexec (SearchRE, (char *) fmt + offset, 1, pmatch, (offset ? REG_NOTBOL : 0)) == 0)\n    {\n      if (++((*lineInfo)[n].search_cnt) > 1)\n\tsafe_realloc (&((*lineInfo)[n].search),\n\t\t      ((*lineInfo)[n].search_cnt) * sizeof (struct syntax_t));\n      else\n\t(*lineInfo)[n].search = safe_malloc (sizeof (struct syntax_t));\n      pmatch[0].rm_so += offset;\n      pmatch[0].rm_eo += offset;\n      ((*lineInfo)[n].search)[(*lineInfo)[n].search_cnt - 1].first = pmatch[0].rm_so;\n      ((*lineInfo)[n].search)[(*lineInfo)[n].search_cnt - 1].last = pmatch[0].rm_eo;\n\n      if (pmatch[0].rm_eo == pmatch[0].rm_so)\n\toffset++; /* avoid degenerate cases */\n      else\n\toffset = pmatch[0].rm_eo;\n      if (!fmt[offset])\n\tbreak;\n    }\n  }\n\n  if (!(flags & M_SHOW) && (*lineInfo)[n+1].offset > 0)\n  {\n    /* we've already scanned this line, so just exit */\n    rc = 0;\n    goto out;\n  }\n  if ((flags & M_SHOWCOLOR) && *force_redraw && (*lineInfo)[n+1].offset > 0)\n  {\n    /* no need to try to display this line... */\n    rc = 1;\n    goto out; /* fake display */\n  }\n\n  if ((b_read = fill_buffer (f, last_pos, (*lineInfo)[n].offset, &buf, &fmt, \n\t\t\t     &buflen, &buf_ready)) < 0)\n  {\n    if (change_last)\n      (*last)--;\n    goto out;\n  }\n\n  /* now chose a good place to break the line */\n  cnt = format_line (lineInfo, n, buf, flags, 0, b_read, &ch, &vch, &col, &special);\n  buf_ptr = buf + cnt;\n\n  /* move the break point only if smart_wrap is set */\n  if (option (OPTWRAP))\n  {\n    if (cnt < b_read)\n    {\n      if (ch != -1 && buf[0] != ' ' && buf[0] != '\\t' &&\n\t  buf[cnt] != ' ' && buf[cnt] != '\\t' && buf[cnt] != '\\n' && buf[cnt] != '\\r')\n      {\n\tbuf_ptr = buf + ch;\n\t/* skip trailing blanks */\n\twhile (ch && (buf[ch] == ' ' || buf[ch] == '\\t' || buf[ch] == '\\r'))\n\t  ch--;\n        /* a very long word with leading spaces causes infinite wrapping */\n        if ((!ch) && (flags & M_PAGER_NSKIP))\n          buf_ptr = buf + cnt;\n        else\n          cnt = ch + 1;\n      }\n      else\n\tbuf_ptr = buf + cnt; /* a very long word... */\n    }\n    if (!(flags & M_PAGER_NSKIP))\n      /* skip leading blanks on the next line too */\n      while (*buf_ptr == ' ' || *buf_ptr == '\\t') \n\tbuf_ptr++;\n  }\n\n  if (*buf_ptr == '\\r')\n    buf_ptr++;\n  if (*buf_ptr == '\\n')\n    buf_ptr++;\n\n  if ((int) (buf_ptr - buf) < b_read && !(*lineInfo)[n+1].continuation)\n    append_line (*lineInfo, n, (int) (buf_ptr - buf));\n  (*lineInfo)[n+1].offset = (*lineInfo)[n].offset + (long) (buf_ptr - buf);\n\n  /* if we don't need to display the line we are done */\n  if (!(flags & M_SHOW))\n  {\n    rc = 0;\n    goto out;\n  }\n\n  /* display the line */\n  format_line (lineInfo, n, buf, flags, &a, cnt, &ch, &vch, &col, &special);\n\n  /* avoid a bug in ncurses... */\n#ifndef USE_SLANG_CURSES\n  if (col == 0)\n  {\n    NORMAL_COLOR;\n    addch (' ');\n  }\n#endif\n\n  /* end the last color pattern (needed by S-Lang) */\n  if (special || (col != COLS && (flags & (M_SHOWCOLOR | M_SEARCH))))\n    resolve_color (*lineInfo, n, vch, flags, 0, &a);\n          \n  /*\n   * Fill the blank space at the end of the line with the prevailing color.\n   * ncurses does an implicit clrtoeol() when you do addch('\\n') so we have\n   * to make sure to reset the color *after* that\n   */\n  if (flags & M_SHOWCOLOR)\n  {\n    m = ((*lineInfo)[n].continuation) ? ((*lineInfo)[n].syntax)[0].first : n;\n    if ((*lineInfo)[m].type == MT_COLOR_HEADER)\n      def_color = ((*lineInfo)[m].syntax)[0].color;\n    else\n      def_color = ColorDefs[ (*lineInfo)[m].type ];\n\n    ATTRSET(def_color);\n  }\n\n  /* ncurses always wraps lines when you get to the right side of the\n   * screen, but S-Lang seems to only wrap if the next character is *not*\n   * a newline (grr!).\n   */\n#ifndef USE_SLANG_CURSES\n    if (col < (COLS - SidebarWidth))\n#endif\n      addch ('\\n');\n\n  /*\n   * reset the color back to normal.  This *must* come after the\n   * addch('\\n'), otherwise the color for this line will not be\n   * filled to the right margin.\n   */\n  if (flags & M_SHOWCOLOR)\n    NORMAL_COLOR;\n\n  /* build a return code */\n  if (!(flags & M_SHOW))\n    flags = 0;\n\n  rc = flags;\n\nout:\n  FREE(&buf);\n  FREE(&fmt);\n  return rc;\n}\n\nstatic int\nupNLines (int nlines, struct line_t *info, int cur, int hiding)\n{\n  while (cur > 0 && nlines > 0)\n  {\n    cur--;\n    if (!hiding || info[cur].type != MT_COLOR_QUOTED)\n      nlines--;\n  }\n\n  return cur;\n}\n\nstatic const struct mapping_t PagerHelp[] = {\n  { N_(\"Exit\"),\tOP_EXIT },\n  { N_(\"PrevPg\"), OP_PREV_PAGE },\n  { N_(\"NextPg\"), OP_NEXT_PAGE },\n  { NULL,\t0 }\n};\nstatic const struct mapping_t PagerHelpExtra[] = {\n  { N_(\"View Attachm.\"), OP_VIEW_ATTACHMENTS },\n  { N_(\"Del\"), OP_DELETE },\n  { N_(\"Reply\"), OP_REPLY },\n  { N_(\"Next\"),\tOP_MAIN_NEXT_UNDELETED },\n  { NULL,\t0 }\n};\n\n\n\n/* This pager is actually not so simple as it once was.  It now operates in\n   two modes: one for viewing messages and the other for viewing help.  These\n   can be distinguished by whether or not ``hdr'' is NULL.  The ``hdr'' arg\n   is there so that we can do operations on the current message without the\n   need to pop back out to the main-menu.  */\nint \nmutt_pager (const char *banner, const char *fname, int flags, pager_t *extra)\n{\n  static char searchbuf[STRING] = \"\";\n  char buffer[LONG_STRING];\n  char helpstr[SHORT_STRING*2];\n  char tmphelp[SHORT_STRING*2];\n  int maxLine, lastLine = 0;\n  struct line_t *lineInfo;\n  struct q_class_t *QuoteList = NULL;\n  int i, j, ch = 0, rc = -1, hideQuoted = 0, q_level = 0, force_redraw = 0;\n  int lines = 0, curline = 0, topline = 0, oldtopline = 0, err, first = 1;\n  int r = -1, wrapped = 0, searchctx = 0;\n  int redraw = REDRAW_FULL;\n  FILE *fp = NULL;\n  LOFF_T last_pos = 0, last_offset = 0;\n  int old_smart_wrap, old_markers;\n  struct stat sb;\n  regex_t SearchRE;\n  int SearchCompiled = 0, SearchFlag = 0, SearchBack = 0;\n  int has_types = (IsHeader(extra) || (flags & M_SHOWCOLOR)) ? M_TYPES : 0; /* main message or rfc822 attachment */\n\n  int bodyoffset = 1;\t\t\t/* offset of first line of real text */\n  int statusoffset = 0; \t\t/* offset for the status bar */\n  int statuswidth = COLS;\n  int helpoffset = LINES - 2;\t\t/* offset for the help bar. */\n  int bodylen = LINES - 2 - bodyoffset; /* length of displayable area */\n\n  MUTTMENU *index = NULL;\t\t/* the Pager Index (PI) */\n  int indexoffset = 0;\t\t\t/* offset for the PI */\n  int indexlen = PagerIndexLines;\t/* indexlen not always == PIL */\n  int indicator = indexlen / 3; \t/* the indicator line of the PI */\n  int old_PagerIndexLines;\t\t/* some people want to resize it\n  \t\t\t\t\t * while inside the pager... */\n\n  if (!(flags & M_SHOWCOLOR))\n    flags |= M_SHOWFLAT;\n\n  if ((fp = fopen (fname, \"r\")) == NULL)\n  {\n    mutt_perror (fname);\n    return (-1);\n  }\n\n  if (stat (fname, &sb) != 0)\n  {\n    mutt_perror (fname);\n    safe_fclose (&fp);\n    return (-1);\n  }\n  unlink (fname);\n\n  /* Initialize variables */\n\n  if (IsHeader (extra) && !extra->hdr->read)\n  {\n    Context->msgnotreadyet = extra->hdr->msgno;\n    mutt_set_flag (Context, extra->hdr, M_READ, 1);\n  }\n\n  lineInfo = safe_malloc (sizeof (struct line_t) * (maxLine = LINES));\n  for (i = 0 ; i < maxLine ; i++)\n  {\n    memset (&lineInfo[i], 0, sizeof (struct line_t));\n    lineInfo[i].type = -1;\n    lineInfo[i].search_cnt = -1;\n    lineInfo[i].syntax = safe_malloc (sizeof (struct syntax_t));\n    (lineInfo[i].syntax)[0].first = (lineInfo[i].syntax)[0].last = -1;\n  }\n\n  mutt_compile_help (helpstr, sizeof (helpstr), MENU_PAGER, PagerHelp);\n  if (IsHeader (extra))\n  {\n    strfcpy (tmphelp, helpstr, sizeof (tmphelp));\n    mutt_compile_help (buffer, sizeof (buffer), MENU_PAGER, PagerHelpExtra);\n    snprintf (helpstr, sizeof (helpstr), \"%s %s\", tmphelp, buffer);\n  }\n  if (!InHelp)\n  {\n    strfcpy (tmphelp, helpstr, sizeof (tmphelp));\n    mutt_make_help (buffer, sizeof (buffer), _(\"Help\"), MENU_PAGER, OP_HELP);\n    snprintf (helpstr, sizeof (helpstr), \"%s %s\", tmphelp, buffer);\n  }\n\n  while (ch != -1)\n  {\n    mutt_curs_set (0);\n\n    if (redraw & REDRAW_FULL)\n    {\n      NORMAL_COLOR;\n      /* clear() doesn't optimize screen redraws */\n      move (0, 0);\n      clrtobot ();\n\n      if (IsHeader (extra) && Context->vcount + 1 < PagerIndexLines)\n\tindexlen = Context->vcount + 1;\n      else\n\tindexlen = PagerIndexLines;\n\n      indicator = indexlen / 3;\n\n      if (option (OPTSTATUSONTOP))\n      {\n\tindexoffset = 0;\n\tstatusoffset = IsHeader (extra) ? indexlen : 0;\n\tbodyoffset = statusoffset + 1;\n\thelpoffset = LINES - 2;\n\tbodylen = helpoffset - bodyoffset;\n\tif (!option (OPTHELP))\n\t  bodylen++;\n      }\n      else\n      {\n\thelpoffset = 0;\n\tindexoffset = 1;\n\tstatusoffset = LINES - 2;\n\tif (!option (OPTHELP))\n\t  indexoffset = 0;\n\tbodyoffset = indexoffset + (IsHeader (extra) ? indexlen : 0);\n\tbodylen = statusoffset - bodyoffset;\n      }\n\n      if (option (OPTHELP))\n      {\n\tSETCOLOR (MT_COLOR_STATUS);\n\tmove (helpoffset, 0);\n\tmutt_paddstr (COLS, helpstr);\n\tNORMAL_COLOR;\n      }\n\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\n      if (Resize != NULL)\n      {\n\tif ((SearchCompiled = Resize->SearchCompiled))\n\t{\n\t  REGCOMP\n\t    (&SearchRE, searchbuf, REG_NEWLINE | mutt_which_case (searchbuf));\n\t  SearchFlag = M_SEARCH;\n\t  SearchBack = Resize->SearchBack;\n\t}\n\tlines = Resize->line;\n\tredraw |= REDRAW_SIGWINCH;\n\n\tFREE (&Resize);\n      }\n#endif\n\n      if (IsHeader (extra) && PagerIndexLines)\n      {\n\tif (index == NULL)\n\t{\n\t  /* only allocate the space if/when we need the index.\n\t     Initialise the menu as per the main index */\n\t  index = mutt_new_menu(MENU_MAIN);\n\t  index->make_entry = index_make_entry;\n\t  index->color = index_color;\n\t  index->max = Context->vcount;\n\t  index->current = extra->hdr->virtual;\n\t}\n\n\tNORMAL_COLOR;\n\tindex->offset  = indexoffset + (option (OPTSTATUSONTOP) ? 1 : 0);\n\n\tindex->pagelen = indexlen - 1;\n\n\t/* some fudge to work out where abouts the indicator should go */\n\tif (index->current - indicator < 0)\n\t  index->top = 0;\n\telse if (index->max - index->current < index->pagelen - indicator)\n\t  index->top = index->max - index->pagelen;\n\telse\n\t  index->top = index->current - indicator;\n\n\tmenu_redraw_index(index);\n      }\n\n      redraw |= REDRAW_BODY | REDRAW_INDEX | REDRAW_STATUS;\n      mutt_show_error ();\n    }\n\n    if (redraw & REDRAW_SIGWINCH)\n    {\n      i = -1;\n      j = -1;\n      while (display_line (fp, &last_pos, &lineInfo, ++i, &lastLine, &maxLine,\n\t     has_types | SearchFlag | (flags & M_PAGER_NOWRAP), &QuoteList, &q_level, &force_redraw,\n\t     &SearchRE) == 0)\n\tif (!lineInfo[i].continuation && ++j == lines)\n\t{\n\t  topline = i;\n\t  if (!SearchFlag)\n\t    break;\n\t}\n    }\n\n    if ((redraw & REDRAW_BODY) || topline != oldtopline)\n    {\n      do {\n\tmove (bodyoffset, SidebarWidth);\n\tcurline = oldtopline = topline;\n\tlines = 0;\n\tforce_redraw = 0;\n\n\twhile (lines < bodylen && lineInfo[curline].offset <= sb.st_size - 1)\n\t{\n\t  if (display_line (fp, &last_pos, &lineInfo, curline, &lastLine, \n\t\t\t    &maxLine,\n\t\t\t    (flags & M_DISPLAYFLAGS) | hideQuoted | SearchFlag | (flags & M_PAGER_NOWRAP),\n\t\t\t    &QuoteList, &q_level, &force_redraw, &SearchRE) > 0)\n\t    lines++;\n\t  curline++;\n#ifdef USE_SIDEBAR\n\t  move (lines + bodyoffset, SidebarWidth);\n#endif\n\t}\n\tlast_offset = lineInfo[curline].offset;\n      } while (force_redraw);\n\n      SETCOLOR (MT_COLOR_TILDE);\n      while (lines < bodylen)\n      {\n\tclrtoeol ();\n\tif (option (OPTTILDE))\n\t  addch ('~');\n\taddch ('\\n');\n\tlines++;\n#ifdef USE_SIDEBAR\n\tmove (lines + bodyoffset, SidebarWidth);\n#endif\n      }\n      NORMAL_COLOR;\n\n      /* We are going to update the pager status bar, so it isn't\n       * necessary to reset to normal color now. */\n\n      redraw |= REDRAW_STATUS; /* need to update the % seen */\n    }\n\n    if (redraw & REDRAW_STATUS)\n    {\n      struct hdr_format_info hfi;\n      char pager_progress_str[4];\n\n      hfi.ctx = Context;\n      hfi.pager_progress = pager_progress_str;\n\n#ifdef USE_SIDEBAR\n      statuswidth = COLS;\n      if (option (OPTSTATUSONTOP) && (PagerIndexLines > 0))\n        statuswidth -= SidebarWidth;\n#endif\n\n      if (last_pos < sb.st_size - 1)\n\tsnprintf(pager_progress_str, sizeof(pager_progress_str), OFF_T_FMT \"%%\", (100 * last_offset / sb.st_size));\n      else\n\tstrfcpy(pager_progress_str, (topline == 0) ? \"all\" : \"end\", sizeof(pager_progress_str));\n\n      /* print out the pager status bar */\n      move (statusoffset, SidebarWidth);\n      SETCOLOR (MT_COLOR_STATUS);\n#ifdef USE_SIDEBAR\n      short sw = SidebarWidth;\n      if (option (OPTSTATUSONTOP) && PagerIndexLines > 0) {\n        CLEARLINE_WIN (statusoffset);\n      } else {\n        CLEARLINE (statusoffset);\n        /* Temporarily lie about the sidebar width */\n        SidebarWidth = 0;\n      }\n#endif\n\n      if (IsHeader (extra) || IsMsgAttach (extra))\n      {\n\tsize_t l1 = statuswidth * MB_LEN_MAX;\n\tsize_t l2 = sizeof (buffer);\n\thfi.hdr = (IsHeader (extra)) ? extra->hdr : extra->bdy->hdr;\n\tmutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT);\n\tmutt_draw_statusline (statuswidth, buffer);\n      }\n      else\n      {\n\tchar bn[STRING];\n\tsnprintf (bn, sizeof (bn), \"%s (%s)\", banner, pager_progress_str);\n\tmutt_draw_statusline (statuswidth, bn);\n      }\n#ifdef USE_SIDEBAR\n      if (!option (OPTSTATUSONTOP) || PagerIndexLines == 0)\n        SidebarWidth = sw; /* Restore the sidebar width */\n#endif\n      NORMAL_COLOR;\n      if (option(OPTTSENABLED) && TSSupported)\n      {\n\tmenu_status_line (buffer, sizeof (buffer), index, NONULL (TSStatusFormat));\n\tmutt_ts_status(buffer);\n\tmenu_status_line (buffer, sizeof (buffer), index, NONULL (TSIconFormat));\n\tmutt_ts_icon(buffer);\n      }\n    }\n\n    if ((redraw & REDRAW_INDEX) && index)\n    {\n      /* redraw the pager_index indicator, because the\n       * flags for this message might have changed. */\n      menu_redraw_current (index);\n#ifdef USE_SIDEBAR\n      sb_draw();\n#endif\n\n      /* print out the index status bar */\n      menu_status_line (buffer, sizeof (buffer), index, NONULL(Status));\n \n      move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)),\n          (option(OPTSTATUSONTOP) ? 0: SidebarWidth));\n      SETCOLOR (MT_COLOR_STATUS);\n      mutt_paddstr (COLS - (option(OPTSTATUSONTOP) ? 0 : SidebarWidth), buffer);\n      NORMAL_COLOR;\n    }\n\n#ifdef USE_SIDEBAR\n    /* if we're not using the index, update every time */\n    if (index == 0)\n      sb_draw();\n#endif\n\n    redraw = 0;\n\n    if (option(OPTBRAILLEFRIENDLY)) {\n      if (brailleLine!=-1) {\n        move(brailleLine+1, 0);\n        brailleLine = -1;\n      }\n    } else move (statusoffset, COLS-1);\n    mutt_refresh ();\n\n    if (IsHeader (extra) && OldHdr == extra->hdr && TopLine != topline\n        && lineInfo[curline].offset < sb.st_size-1)\n    {\n      if (TopLine - topline > lines)\n        topline += lines;\n      else\n        topline = TopLine;\n      continue;\n    }\n    else\n      OldHdr = NULL;\n      \n    ch = km_dokey (MENU_PAGER);\n    if (ch != -1)\n      mutt_clear_error ();\n    mutt_curs_set (1);\n\n    if (SigInt)\n    {\n      mutt_query_exit ();\n      continue;\n    }\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\n    else if (SigWinch)\n    {\n      mutt_resize_screen ();\n\n      /* Store current position. */\n      lines = -1;\n      for (i = 0; i <= topline; i++)\n\tif (!lineInfo[i].continuation)\n\t  lines++;\n\n      if (flags & M_PAGER_RETWINCH)\n      {\n\tResize = safe_malloc (sizeof (struct resize));\n\n\tResize->line = lines;\n\tResize->SearchCompiled = SearchCompiled;\n\tResize->SearchBack = SearchBack;\n\n\tch = -1;\n\trc = OP_REFORMAT_WINCH;\n      }\n      else\n      {\n\tfor (i = 0; i < maxLine; i++)\n\t{\n\t  lineInfo[i].offset = 0;\n\t  lineInfo[i].type = -1;\n\t  lineInfo[i].continuation = 0;\n\t  lineInfo[i].chunks = 0;\n\t  lineInfo[i].search_cnt = -1;\n\t  lineInfo[i].quote = NULL;\n\n\t  safe_realloc (&(lineInfo[i].syntax),\n\t\t\tsizeof (struct syntax_t));\n\t  if (SearchCompiled && lineInfo[i].search)\n\t      FREE (&(lineInfo[i].search));\n\t}\n\n\tlastLine = 0;\n\ttopline = 0;\n\n\tredraw = REDRAW_FULL | REDRAW_SIGWINCH;\n\tch = 0;\n      }\n\n      SigWinch = 0;\n      clearok(stdscr,TRUE);/*force complete redraw*/\n      continue;\n    }\n#endif\n    else if (ch == -1)\n    {\n      ch = 0;\n      continue;\n    }\n\n    rc = ch;\n\n    switch (ch)\n    {\n      case OP_EXIT:\n\trc = -1;\n\tch = -1;\n\tbreak;\n\n      case OP_QUIT:\n\tif (query_quadoption (OPT_QUIT, _(\"Quit Mutt?\")) == M_YES)\n\t{\n\t  /* avoid prompting again in the index menu */\n\t  set_quadoption (OPT_QUIT, M_YES);\n\t  ch = -1;\n\t}\n\tbreak;\n\n      case OP_NEXT_PAGE:\n\tif (lineInfo[curline].offset < sb.st_size-1)\n\t{\n\t  topline = upNLines (PagerContext, lineInfo, curline, hideQuoted);\n\t}\n\telse if (option (OPTPAGERSTOP))\n\t{\n\t  /* emulate \"less -q\" and don't go on to the next message. */\n\t  mutt_error _(\"Bottom of message is shown.\");\n\t}\n\telse\n\t{\n\t  /* end of the current message, so display the next message. */\n\t  rc = OP_MAIN_NEXT_UNDELETED;\n\t  ch = -1;\n\t}\n\tbreak;\n\n      case OP_PREV_PAGE:\n\tif (topline != 0)\n\t{\n\t  topline = upNLines (bodylen-PagerContext, lineInfo, topline, hideQuoted);\n\t}\n\telse\n\t  mutt_error _(\"Top of message is shown.\");\n\tbreak;\n\n      case OP_NEXT_LINE:\n\tif (lineInfo[curline].offset < sb.st_size-1)\n\t{\n\t  topline++;\n\t  if (hideQuoted)\n\t  {\n\t    while (lineInfo[topline].type == MT_COLOR_QUOTED &&\n\t\t   topline < lastLine)\n\t      topline++;\n\t  }\n\t}\n\telse\n\t  mutt_error _(\"Bottom of message is shown.\");\n\tbreak;\n\n      case OP_PREV_LINE:\n\tif (topline)\n\t  topline = upNLines (1, lineInfo, topline, hideQuoted);\n\telse\n\t  mutt_error _(\"Top of message is shown.\");\n\tbreak;\n\n      case OP_PAGER_TOP:\n        if (topline)\n\t  topline = 0;\n      \telse\n\t  mutt_error _(\"Top of message is shown.\");\n\tbreak;\n\n      case OP_HALF_UP:\n\tif (topline)\n\t  topline = upNLines (bodylen/2, lineInfo, topline, hideQuoted);\n\telse\n\t  mutt_error _(\"Top of message is shown.\");\n\tbreak;\n\n      case OP_HALF_DOWN:\n\tif (lineInfo[curline].offset < sb.st_size-1)\n\t{\n\t  topline = upNLines (bodylen/2, lineInfo, curline, hideQuoted);\n\t}\n\telse if (option (OPTPAGERSTOP))\n\t{\n\t  /* emulate \"less -q\" and don't go on to the next message. */\n\t  mutt_error _(\"Bottom of message is shown.\");\n\t}\n\telse\n\t{\n\t  /* end of the current message, so display the next message. */\n\t  rc = OP_MAIN_NEXT_UNDELETED;\n\t  ch = -1;\n\t}\n\tbreak;\n\n      case OP_SEARCH_NEXT:\n      case OP_SEARCH_OPPOSITE:\n\tif (SearchCompiled)\n\t{\n\t  wrapped = 0;\n\n\t  if (SearchContext > 0 && SearchContext < LINES - 2 - option (OPTHELP) ? 1 : 0)\n\t    searchctx = SearchContext;\n\t  else\n\t    searchctx = 0;\n\nsearch_next:\n\t  if ((!SearchBack && ch==OP_SEARCH_NEXT) ||\n\t      (SearchBack &&ch==OP_SEARCH_OPPOSITE))\n\t  {\n\t    /* searching forward */\n\t    for (i = wrapped ? 0 : topline + searchctx + 1; i < lastLine; i++)\n\t    {\n\t      if ((!hideQuoted || lineInfo[i].type != MT_COLOR_QUOTED) && \n\t\t    !lineInfo[i].continuation && lineInfo[i].search_cnt > 0)\n\t\tbreak;\n\t    }\n\n\t    if (i < lastLine)\n\t      topline = i;\n\t    else if (wrapped || !option (OPTWRAPSEARCH))\n\t      mutt_error _(\"Not found.\");\n\t    else\n\t    {\n\t      mutt_message _(\"Search wrapped to top.\");\n\t      wrapped = 1;\n\t      goto search_next;\n\t    }\n\t  }\n\t  else\n\t  {\n\t    /* searching backward */\n\t    for (i = wrapped ? lastLine : topline + searchctx - 1; i >= 0; i--)\n\t    {\n\t      if ((!hideQuoted || (has_types && \n\t\t    lineInfo[i].type != MT_COLOR_QUOTED)) && \n\t\t    !lineInfo[i].continuation && lineInfo[i].search_cnt > 0)\n\t\tbreak;\n\t    }\n\n\t    if (i >= 0)\n\t      topline = i;\n\t    else if (wrapped || !option (OPTWRAPSEARCH))\n\t      mutt_error _(\"Not found.\");\n\t    else\n\t    {\n\t      mutt_message _(\"Search wrapped to bottom.\");\n\t      wrapped = 1;\n\t      goto search_next;\n\t    }\n\t  }\n\n\t  if (lineInfo[topline].search_cnt > 0)\n\t  {\n\t    SearchFlag = M_SEARCH;\n\t    /* give some context for search results */\n\t    if (topline - searchctx > 0)\n\t      topline -= searchctx;\n\t  }\n\n\t  break;\n\t}\n\t/* no previous search pattern, so fall through to search */\n\n      case OP_SEARCH:\n      case OP_SEARCH_REVERSE:\n        strfcpy (buffer, searchbuf, sizeof (buffer));\n\tif (mutt_get_field ((ch == OP_SEARCH || ch == OP_SEARCH_NEXT) ?\n\t\t\t    _(\"Search for: \") : _(\"Reverse search for: \"),\n\t\t\t    buffer, sizeof (buffer),\n\t\t\t    M_CLEAR) != 0)\n\t  break;\n\n\tif (!strcmp (buffer, searchbuf))\n\t{\n\t  if (SearchCompiled)\n\t  {\n\t    /* do an implicit search-next */\n\t    if (ch == OP_SEARCH)\n\t      ch = OP_SEARCH_NEXT;\n\t    else\n\t      ch = OP_SEARCH_OPPOSITE;\n\n\t    wrapped = 0;\n\t    goto search_next;\n\t  }\n\t}\n      \n        if (!buffer[0])\n\t  break;\n      \n\tstrfcpy (searchbuf, buffer, sizeof (searchbuf));\n\n\t/* leave SearchBack alone if ch == OP_SEARCH_NEXT */\n\tif (ch == OP_SEARCH)\n\t  SearchBack = 0;\n\telse if (ch == OP_SEARCH_REVERSE)\n\t  SearchBack = 1;\n\n\tif (SearchCompiled)\n\t{\n\t  regfree (&SearchRE);\n\t  for (i = 0; i < lastLine; i++)\n\t  {\n\t    if (lineInfo[i].search)\n\t      FREE (&(lineInfo[i].search));\n\t    lineInfo[i].search_cnt = -1;\n\t  }\n\t}\n\n\tif ((err = REGCOMP (&SearchRE, searchbuf, REG_NEWLINE | mutt_which_case (searchbuf))) != 0)\n\t{\n\t  regerror (err, &SearchRE, buffer, sizeof (buffer));\n\t  mutt_error (\"%s\", buffer);\n\t  for (i = 0; i < maxLine ; i++)\n\t  {\n\t    /* cleanup */\n\t    if (lineInfo[i].search)\n\t      FREE (&(lineInfo[i].search));\n\t    lineInfo[i].search_cnt = -1;\n\t  }\n\t  SearchFlag = 0;\n\t  SearchCompiled = 0;\n\t}\n\telse\n\t{\n\t  SearchCompiled = 1;\n\t  /* update the search pointers */\n\t  i = 0;\n\t  while (display_line (fp, &last_pos, &lineInfo, i, &lastLine, \n\t\t\t\t&maxLine, M_SEARCH | (flags & M_PAGER_NSKIP) | (flags & M_PAGER_NOWRAP),\n\t\t\t\t&QuoteList, &q_level,\n\t\t\t\t&force_redraw, &SearchRE) == 0)\n\t    i++;\n\n\t  if (!SearchBack)\n\t  {\n\t    /* searching forward */\n\t    for (i = topline; i < lastLine; i++)\n\t    {\n\t      if ((!hideQuoted || lineInfo[i].type != MT_COLOR_QUOTED) && \n\t\t    !lineInfo[i].continuation && lineInfo[i].search_cnt > 0)\n\t\tbreak;\n\t    }\n\n\t    if (i < lastLine) topline = i;\n\t  }\n\t  else\n\t  {\n\t    /* searching backward */\n\t    for (i = topline; i >= 0; i--)\n\t    {\n\t      if ((!hideQuoted || lineInfo[i].type != MT_COLOR_QUOTED) && \n\t\t    !lineInfo[i].continuation && lineInfo[i].search_cnt > 0)\n\t\tbreak;\n\t    }\n\n\t    if (i >= 0) topline = i;\n\t  }\n\n\t  if (lineInfo[topline].search_cnt == 0)\n\t  {\n\t    SearchFlag = 0;\n\t    mutt_error _(\"Not found.\");\n\t  }\n\t  else\n\t  {\n\t    SearchFlag = M_SEARCH;\n\t    /* give some context for search results */\n\t    if (SearchContext > 0 && SearchContext < LINES - 2 - option (OPTHELP) ? 1 : 0)\n\t      searchctx = SearchContext;\n\t    else\n\t      searchctx = 0;\n\t    if (topline - searchctx > 0)\n\t      topline -= searchctx;\n\t  }\n\n\t}\n\tredraw = REDRAW_BODY;\n\tbreak;\n\n      case OP_SEARCH_TOGGLE:\n\tif (SearchCompiled)\n\t{\n\t  SearchFlag ^= M_SEARCH;\n\t  redraw = REDRAW_BODY;\n\t}\n\tbreak;\n\n      case OP_HELP:\n\t/* don't let the user enter the help-menu from the help screen! */\n\tif (! InHelp)\n\t{\n\t  InHelp = 1;\n\t  mutt_help (MENU_PAGER);\n\t  redraw = REDRAW_FULL;\n\t  InHelp = 0;\n\t}\n\telse\n\t  mutt_error _(\"Help is currently being shown.\");\n\tbreak;\n\n      case OP_PAGER_HIDE_QUOTED:\n\tif (has_types)\n\t{\n\t  hideQuoted ^= M_HIDE;\n\t  if (hideQuoted && lineInfo[topline].type == MT_COLOR_QUOTED)\n\t    topline = upNLines (1, lineInfo, topline, hideQuoted);\n\t  else\n\t    redraw = REDRAW_BODY;\n\t}\n\tbreak;\n\n      case OP_PAGER_SKIP_QUOTED:\n\tif (has_types)\n\t{\n\t  int dretval = 0;\n\t  int new_topline = topline;\n\n\t  while ((new_topline < lastLine ||\n\t\t  (0 == (dretval = display_line (fp, &last_pos, &lineInfo,\n\t\t\t new_topline, &lastLine, &maxLine, M_TYPES | (flags & M_PAGER_NOWRAP),\n\t\t\t &QuoteList, &q_level, &force_redraw, &SearchRE))))\n\t\t && lineInfo[new_topline].type != MT_COLOR_QUOTED)\n\t    new_topline++;\n\n\t  if (dretval < 0)\n\t  {\n\t    mutt_error _(\"No more quoted text.\");\n\t    break;\n\t  }\n\n\t  while ((new_topline < lastLine ||\n\t\t  (0 == (dretval = display_line (fp, &last_pos, &lineInfo,\n\t\t\t new_topline, &lastLine, &maxLine, M_TYPES | (flags & M_PAGER_NOWRAP),\n\t\t\t &QuoteList, &q_level, &force_redraw, &SearchRE))))\n\t\t && lineInfo[new_topline].type == MT_COLOR_QUOTED)\n\t    new_topline++;\n\n\t  if (dretval < 0)\n\t  {\n\t    mutt_error _(\"No more unquoted text after quoted text.\");\n\t    break;\t  \n\t  }\n\t  topline = new_topline;\n\t}\n\tbreak;\n\n      case OP_PAGER_BOTTOM: /* move to the end of the file */\n\tif (lineInfo[curline].offset < sb.st_size - 1)\n\t{\n\t  i = curline;\n\t  /* make sure the types are defined to the end of file */\n\t  while (display_line (fp, &last_pos, &lineInfo, i, &lastLine, \n\t\t\t\t&maxLine, has_types | (flags & M_PAGER_NOWRAP),\n\t\t\t\t&QuoteList, &q_level, &force_redraw,\n\t\t\t\t&SearchRE) == 0)\n\t    i++;\n\t  topline = upNLines (bodylen, lineInfo, lastLine, hideQuoted);\n\t}\n\telse\n\t  mutt_error _(\"Bottom of message is shown.\");\n\tbreak;\n\n      case OP_REDRAW:\n\tclearok (stdscr, TRUE);\n\tredraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_NULL:\n\tkm_error_key (MENU_PAGER);\n\tbreak;\n\n\t/* --------------------------------------------------------------------\n\t * The following are operations on the current message rather than\n\t * adjusting the view of the message.\n\t */\n\n      case OP_BOUNCE_MESSAGE:\n\tCHECK_MODE(IsHeader (extra) || IsMsgAttach (extra))\n        CHECK_ATTACH;\n        if (IsMsgAttach (extra))\n\t  mutt_attach_bounce (extra->fp, extra->hdr,\n\t\t\t      extra->idx, extra->idxlen,\n\t\t\t      extra->bdy);\n        else\n          ci_bounce_message (extra->hdr, &redraw);\n\tbreak;\n\n      case OP_RESEND:\n        CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra))\n        CHECK_ATTACH;\n        if (IsMsgAttach (extra))\n\t  mutt_attach_resend (extra->fp, extra->hdr,\n\t\t\t      extra->idx, extra->idxlen,\n\t\t\t      extra->bdy);\n        else\n\t  mutt_resend_message (NULL, extra->ctx, extra->hdr);\n        redraw = REDRAW_FULL;\n        break;\n\n      case OP_CHECK_TRADITIONAL:\n        CHECK_MODE (IsHeader (extra));\n        if (!(WithCrypto & APPLICATION_PGP))\n\t  break;\n        if (!(extra->hdr->security & PGP_TRADITIONAL_CHECKED)) \n        {\n\t  ch = -1;\n\t  rc = OP_CHECK_TRADITIONAL;\n\t}\n        break;\n      \n      case OP_CREATE_ALIAS:\n\tCHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));\n        if (IsMsgAttach (extra))\n\t  mutt_create_alias (extra->bdy->hdr->env, NULL);\n        else\n\t  mutt_create_alias (extra->hdr->env, NULL);\n\tMAYBE_REDRAW (redraw);\n\tbreak;\n\n      case OP_DELETE:\n\tCHECK_MODE(IsHeader (extra));\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot delete message\"));\n\n\tmutt_set_flag (Context, extra->hdr, M_DELETE, 1);\n        if (option (OPTDELETEUNTAG))\n\t  mutt_set_flag (Context, extra->hdr, M_TAG, 0);\n\tredraw = REDRAW_STATUS | REDRAW_INDEX;\n\tif (option (OPTRESOLVE))\n\t{\n\t  ch = -1;\n\t  rc = OP_MAIN_NEXT_UNDELETED;\n\t}\n\tbreak;\n\n      case OP_MAIN_SET_FLAG:\n      case OP_MAIN_CLEAR_FLAG:\n\tCHECK_MODE(IsHeader (extra));\n\tCHECK_READONLY;\n\n\tif (mutt_change_flag (extra->hdr, (ch == OP_MAIN_SET_FLAG)) == 0)\n\t  redraw |= REDRAW_STATUS | REDRAW_INDEX;\n\tif (extra->hdr->deleted && option (OPTRESOLVE))\n\t{\n\t  ch = -1;\n\t  rc = OP_MAIN_NEXT_UNDELETED;\n\t}\n\tbreak;\n\n      case OP_DELETE_THREAD:\n      case OP_DELETE_SUBTHREAD:\n\tCHECK_MODE(IsHeader (extra));\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot delete message(s)\"));\n\n\tr = mutt_thread_set_flag (extra->hdr, M_DELETE, 1,\n\t\t\t\t  ch == OP_DELETE_THREAD ? 0 : 1);\n\n\tif (r != -1)\n\t{\n\t  if (option (OPTDELETEUNTAG))\n\t    mutt_thread_set_flag (extra->hdr, M_TAG, 0,\n\t\t\t\t  ch == OP_DELETE_THREAD ? 0 : 1);\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    rc = OP_MAIN_NEXT_UNDELETED;\n\t    ch = -1;\n\t  }\n\n\t  if (!option (OPTRESOLVE) && PagerIndexLines)\n\t    redraw = REDRAW_FULL;\n\t  else\n\t    redraw = REDRAW_STATUS | REDRAW_INDEX;\n\t}\n\tbreak;\n\n      case OP_DISPLAY_ADDRESS:\n\tCHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));\n        if (IsMsgAttach (extra))\n\t  mutt_display_address (extra->bdy->hdr->env);\n        else\n\t  mutt_display_address (extra->hdr->env);\n\tbreak;\n\n      case OP_ENTER_COMMAND:\n\told_smart_wrap = option (OPTWRAP);\n\told_markers = option (OPTMARKERS);\n\told_PagerIndexLines = PagerIndexLines;\n\n\tCurrentMenu = MENU_PAGER;\n\tmutt_enter_command ();\n\n\tif (option (OPTNEEDRESORT))\n\t{\n\t  unset_option (OPTNEEDRESORT);\n\t  CHECK_MODE(IsHeader (extra));\n\t  set_option (OPTNEEDRESORT);\n\t}\n\n\tif (old_PagerIndexLines != PagerIndexLines)\n\t{\n\t  if (index)\n\t    mutt_menuDestroy (&index);\n\t  index = NULL;\n\t}\n\t\n\tif (option (OPTWRAP) != old_smart_wrap || \n\t    option (OPTMARKERS) != old_markers)\n\t{\n\t  if (flags & M_PAGER_RETWINCH)\n\t  {\n\t    ch = -1;\n\t    rc = OP_REFORMAT_WINCH;\n\t    continue;\n\t  }\n\n\t  /* count the real lines above */\n\t  j = 0;\n\t  for (i = 0; i <= topline; i++)\n\t  {\n\t    if (!lineInfo[i].continuation)\n\t      j++;\n\t  }\n\n\t  /* we need to restart the whole thing */\n\t  for (i = 0; i < maxLine; i++)\n\t  {\n\t    lineInfo[i].offset = 0;\n\t    lineInfo[i].type = -1;\n\t    lineInfo[i].continuation = 0;\n\t    lineInfo[i].chunks = 0;\n\t    lineInfo[i].search_cnt = -1;\n\t    lineInfo[i].quote = NULL;\n\n\t    safe_realloc (&(lineInfo[i].syntax), sizeof (struct syntax_t));\n\t    if (SearchCompiled && lineInfo[i].search)\n\t\tFREE (&(lineInfo[i].search));\n\t  }\n\n\t  if (SearchCompiled)\n\t  {\n\t    regfree (&SearchRE);\n\t    SearchCompiled = 0;\n\t  }\n\t  SearchFlag = 0;\n\n\t  /* try to keep the old position */\n\t  topline = 0;\n\t  lastLine = 0;\n\t  while (j > 0 && display_line (fp, &last_pos, &lineInfo, topline, \n\t\t\t\t\t&lastLine, &maxLine,\n\t\t\t\t\t(has_types ? M_TYPES : 0) | (flags & M_PAGER_NOWRAP),\n\t\t\t\t\t&QuoteList, &q_level, &force_redraw,\n\t\t\t\t\t&SearchRE) == 0)\n\t  {\n\t    if (! lineInfo[topline].continuation)\n\t      j--;\n\t    if (j > 0)\n\t      topline++;\n\t  }\n\n\t  ch = 0;\n\t}\n\n\tif (option (OPTFORCEREDRAWPAGER)) {\n\t  redraw = REDRAW_FULL;\n#ifdef USE_SIDEBAR\n\t  sb_draw();\n#endif\n\t}\n\tunset_option (OPTFORCEREDRAWINDEX);\n\tunset_option (OPTFORCEREDRAWPAGER);\n\tbreak;\n\n      case OP_FLAG_MESSAGE:\n\tCHECK_MODE(IsHeader (extra));\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_WRITE, \"Cannot flag message\");\n\n\tmutt_set_flag (Context, extra->hdr, M_FLAG, !extra->hdr->flagged);\n\tredraw = REDRAW_STATUS | REDRAW_INDEX;\n\tif (option (OPTRESOLVE))\n\t{\n\t  ch = -1;\n\t  rc = OP_MAIN_NEXT_UNDELETED;\n\t}\n\tbreak;\n\n      case OP_PIPE:\n\tCHECK_MODE(IsHeader (extra) || IsAttach (extra));\n\tif (IsAttach (extra))\n\t  mutt_pipe_attachment_list (extra->fp, 0, extra->bdy, 0);\n\telse\n\t  mutt_pipe_message (extra->hdr);\n\tMAYBE_REDRAW (redraw);\n\tbreak;\n\n      case OP_PRINT:\n\tCHECK_MODE(IsHeader (extra) || IsAttach (extra));\n        if (IsAttach (extra))\n\t  mutt_print_attachment_list (extra->fp, 0, extra->bdy);\n        else\n\t  mutt_print_message (extra->hdr);\n\tbreak;\n\n      case OP_MAIL:\n\tCHECK_MODE(IsHeader (extra) && !IsAttach (extra));\n        CHECK_ATTACH;      \n\tci_send_message (0, NULL, NULL, extra->ctx, NULL);\n\tredraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_REPLY:\n\tCHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));\n        CHECK_ATTACH;      \n        if (IsMsgAttach (extra)) \n\t  mutt_attach_reply (extra->fp, extra->hdr, extra->idx,\n\t\t\t     extra->idxlen, extra->bdy,\n\t\t\t     SENDREPLY);\n\telse\n\t  ci_send_message (SENDREPLY, NULL, NULL, extra->ctx, extra->hdr);\n\tredraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_RECALL_MESSAGE:\n\tCHECK_MODE(IsHeader (extra) && !IsAttach(extra));\n        CHECK_ATTACH;\n\tci_send_message (SENDPOSTPONED, NULL, NULL, extra->ctx, extra->hdr);\n\tredraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_GROUP_REPLY:\n\tCHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));\n        CHECK_ATTACH;\n        if (IsMsgAttach (extra))\n\t  mutt_attach_reply (extra->fp, extra->hdr, extra->idx,\n\t\t\t     extra->idxlen, extra->bdy, SENDREPLY|SENDGROUPREPLY);\n        else\n\t  ci_send_message (SENDREPLY | SENDGROUPREPLY, NULL, NULL, extra->ctx, extra->hdr);\n\tredraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_LIST_REPLY:\n\tCHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));\n        CHECK_ATTACH;        \n        if (IsMsgAttach (extra))\n\t  mutt_attach_reply (extra->fp, extra->hdr, extra->idx,\n\t\t\t     extra->idxlen, extra->bdy, SENDREPLY|SENDLISTREPLY);\n        else\n\t  ci_send_message (SENDREPLY | SENDLISTREPLY, NULL, NULL, extra->ctx, extra->hdr);\n\tredraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_FORWARD_MESSAGE:\n\tCHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));\n        CHECK_ATTACH;\n        if (IsMsgAttach (extra))\n\t  mutt_attach_forward (extra->fp, extra->hdr, extra->idx,\n\t\t\t       extra->idxlen, extra->bdy);\n        else\n\t  ci_send_message (SENDFORWARD, NULL, NULL, extra->ctx, extra->hdr);\n\tredraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_DECRYPT_SAVE:\n        if (!WithCrypto)\n        {\n          ch = -1;\n          break;\n        }\n\t/* fall through */\n      case OP_SAVE:\n\tif (IsAttach (extra))\n\t{\n\t  mutt_save_attachment_list (extra->fp, 0, extra->bdy, extra->hdr, NULL);\n\t  break;\n\t}\n\t/* fall through */\n      case OP_COPY_MESSAGE:\n      case OP_DECODE_SAVE:\n      case OP_DECODE_COPY:\n      case OP_DECRYPT_COPY:\n        if (!WithCrypto && ch == OP_DECRYPT_COPY)\n        {\n          ch = -1;\n          break;\n        }\n\tCHECK_MODE(IsHeader (extra));\n\tif (mutt_save_message (extra->hdr,\n\t\t\t       (ch == OP_DECRYPT_SAVE) ||\n\t\t\t       (ch == OP_SAVE) || (ch == OP_DECODE_SAVE),\n\t\t\t       (ch == OP_DECODE_SAVE) || (ch == OP_DECODE_COPY),\n\t\t\t       (ch == OP_DECRYPT_SAVE) || (ch == OP_DECRYPT_COPY) ||\n\t\t\t       0,\n\t\t\t       &redraw) == 0 && (ch == OP_SAVE || ch == OP_DECODE_SAVE\n\t\t\t\t\t\t || ch == OP_DECRYPT_SAVE\n\t\t\t\t\t\t ))\n\t{\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    ch = -1;\n\t    rc = OP_MAIN_NEXT_UNDELETED;\n\t  }\n\t  else\n\t    redraw |= REDRAW_STATUS | REDRAW_INDEX;\n\t}\n\tMAYBE_REDRAW (redraw);\n\tbreak;\n\n      case OP_SHELL_ESCAPE:\n\tmutt_shell_escape ();\n\tMAYBE_REDRAW (redraw);\n\tbreak;\n\n      case OP_TAG:\n\tCHECK_MODE(IsHeader (extra));\n\tmutt_set_flag (Context, extra->hdr, M_TAG, !extra->hdr->tagged);\n\n\tContext->last_tag = extra->hdr->tagged ? extra->hdr :\n\t  ((Context->last_tag == extra->hdr && !extra->hdr->tagged)\n\t   ? NULL : Context->last_tag);\n\n\tredraw = REDRAW_STATUS | REDRAW_INDEX;\n\tif (option (OPTRESOLVE))\n\t{\n\t  ch = -1;\n\t  rc = OP_NEXT_ENTRY;\n\t}\n\tbreak;\n\n      case OP_TOGGLE_NEW:\n\tCHECK_MODE(IsHeader (extra));\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_SEEN, _(\"Cannot toggle new\"));\n\n\tif (extra->hdr->read || extra->hdr->old)\n\t  mutt_set_flag (Context, extra->hdr, M_NEW, 1);\n\telse if (!first)\n\t  mutt_set_flag (Context, extra->hdr, M_READ, 1);\n\tfirst = 0;\n        Context->msgnotreadyet = -1;\n\tredraw = REDRAW_STATUS | REDRAW_INDEX;\n\tif (option (OPTRESOLVE))\n\t{\n\t  ch = -1;\n\t  rc = OP_MAIN_NEXT_UNDELETED;\n\t}\n\tbreak;\n\n      case OP_UNDELETE:\n\tCHECK_MODE(IsHeader (extra));\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot undelete message\"));\n\n\tmutt_set_flag (Context, extra->hdr, M_DELETE, 0);\n\tredraw = REDRAW_STATUS | REDRAW_INDEX;\n\tif (option (OPTRESOLVE))\n\t{\n\t  ch = -1;\n\t  rc = OP_NEXT_ENTRY;\n\t}\n\tbreak;\n\n      case OP_UNDELETE_THREAD:\n      case OP_UNDELETE_SUBTHREAD:\n\tCHECK_MODE(IsHeader (extra));\n\tCHECK_READONLY;\n        /* L10N: CHECK_ACL */\n\tCHECK_ACL(M_ACL_DELETE, _(\"Cannot undelete message(s)\"));\n\n\tr = mutt_thread_set_flag (extra->hdr, M_DELETE, 0,\n\t\t\t\t  ch == OP_UNDELETE_THREAD ? 0 : 1);\n\n\tif (r != -1)\n\t{\n\t  if (option (OPTRESOLVE))\n\t  {\n\t    rc = (ch == OP_DELETE_THREAD) ?\n\t\t\t\t  OP_MAIN_NEXT_THREAD : OP_MAIN_NEXT_SUBTHREAD;\n\t    ch = -1;\n\t  }\n\n\t  if (!option (OPTRESOLVE) && PagerIndexLines)\n\t    redraw = REDRAW_FULL;\n\t  else\n\t    redraw = REDRAW_STATUS | REDRAW_INDEX;\n\t}\n\tbreak;\n\n      case OP_VERSION:\n\tmutt_version ();\n\tbreak;\n\n      case OP_BUFFY_LIST:\n\tmutt_buffy_list ();\n\tbreak;\n\n      case OP_VIEW_ATTACHMENTS:\n        if (flags & M_PAGER_ATTACHMENT)\n        {\n\t  ch = -1;\n\t  rc = OP_ATTACH_COLLAPSE;\n\t  break;\n\t}\n\tCHECK_MODE(IsHeader (extra));\n\tmutt_view_attachments (extra->hdr);\n\tif (extra->hdr->attach_del)\n\t  Context->changed = 1;\n\tredraw = REDRAW_FULL;\n\tbreak;\n\n\n      case OP_MAIL_KEY:\n        if (!(WithCrypto & APPLICATION_PGP))\n        {\n          ch = -1;\n          break;\n        }\n\tCHECK_MODE(IsHeader(extra));\n        CHECK_ATTACH;\n\tci_send_message (SENDKEY, NULL, NULL, extra->ctx, extra->hdr);\n\tredraw = REDRAW_FULL;\n\tbreak;\n\n\n      case OP_FORGET_PASSPHRASE:\n\tcrypt_forget_passphrase ();\n\tbreak;\n\n      case OP_EXTRACT_KEYS:\n        if (!WithCrypto)\n        {\n          ch = -1;\n          break;\n        }\n        CHECK_MODE(IsHeader(extra));\n\tcrypt_extract_keys_from_messages(extra->hdr);\n        redraw = REDRAW_FULL;\n        break;\n\n      case OP_WHAT_KEY:\n\tmutt_what_key ();\n\tbreak;\n\n#ifdef USE_SIDEBAR\n      case OP_SIDEBAR_NEXT:\n      case OP_SIDEBAR_NEXT_NEW:\n      case OP_SIDEBAR_PAGE_DOWN:\n      case OP_SIDEBAR_PAGE_UP:\n      case OP_SIDEBAR_PREV:\n      case OP_SIDEBAR_PREV_NEW:\n\tsb_change_mailbox (ch);\n\tbreak;\n\n      case OP_SIDEBAR_TOGGLE_VISIBLE:\n\ttoggle_option (OPTSIDEBAR);\n\tredraw = REDRAW_FULL;\n\tbreak;\n#endif\n\n      default:\n\tch = -1;\n\tbreak;\n    }\n  }\n\n  safe_fclose (&fp);\n  if (IsHeader (extra))\n  {\n    Context->msgnotreadyet = -1;\n    if (rc == -1)\n      OldHdr = NULL;\n    else\n    {\n      TopLine = topline;\n      OldHdr = extra->hdr;\n    }\n  }\n    \n  cleanup_quote (&QuoteList);\n  \n  for (i = 0; i < maxLine ; i++)\n  {\n    FREE (&(lineInfo[i].syntax));\n    if (SearchCompiled && lineInfo[i].search)\n      FREE (&(lineInfo[i].search));\n  }\n  if (SearchCompiled)\n  {\n    regfree (&SearchRE);\n    SearchCompiled = 0;\n  }\n  FREE (&lineInfo);\n  if (index)\n    mutt_menuDestroy(&index);\n  return (rc != -1 ? rc : 0);\n}\n"
  },
  {
    "path": "pager.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#include \"attach.h\"\n\n/* dynamic internal flags */\n#define M_SHOWFLAT\t(1<<0)\n#define M_SHOWCOLOR\t(1<<1)\n#define M_HIDE\t\t(1<<2)\n#define M_SEARCH\t(1<<3)\n#define M_TYPES\t\t(1<<4)\n#define M_SHOW\t\t(M_SHOWCOLOR | M_SHOWFLAT)\n\n/* exported flags for mutt_(do_)?pager */\n#define M_PAGER_NSKIP\t\t(1<<5)\t/* preserve whitespace with smartwrap */\n#define M_PAGER_MARKER\t\t(1<<6)\t/* use markers if option is set */\n#define M_PAGER_RETWINCH\t(1<<7)\t/* need reformatting on SIGWINCH */\n#define M_PAGER_MESSAGE\t\t(M_SHOWCOLOR | M_PAGER_MARKER)\n#define M_PAGER_ATTACHMENT\t(1<<8)\n#define M_PAGER_NOWRAP\t\t(1<<9)\t/* format for term width, ignore $wrap */\n\n#define M_DISPLAYFLAGS\t(M_SHOW | M_PAGER_NSKIP | M_PAGER_MARKER)\n\ntypedef struct\n{\n  CONTEXT *ctx;\t/* current mailbox */\n  HEADER *hdr;\t/* current message */\n  BODY *bdy;\t/* current attachment */\n  FILE *fp;\t/* source stream */\n  ATTACHPTR **idx;\t/* attachment information */\n  short idxlen;\n} pager_t;\n\nint mutt_do_pager (const char *, const char *, int, pager_t *);\nint mutt_pager (const char *, const char *, int, pager_t *);\n"
  },
  {
    "path": "parse.c",
    "content": "/*\n * Copyright (C) 1996-2000,2012-2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_regex.h\"\n#include \"mailbox.h\"\n#include \"mime.h\"\n#include \"rfc2047.h\"\n#include \"rfc2231.h\"\n#include \"mutt_crypt.h\"\n#include \"url.h\"\n\n#include <string.h>\n#include <ctype.h>\n#include <sys/stat.h>\n#include <stdlib.h>\n\n/* Reads an arbitrarily long header field, and looks ahead for continuation\n * lines.  ``line'' must point to a dynamically allocated string; it is\n * increased if more space is required to fit the whole line.\n */\nchar *mutt_read_rfc822_line (FILE *f, char *line, size_t *linelen)\n{\n  char *buf = line;\n  int ch;\n  size_t offset = 0;\n  size_t len = 0;\n\n  FOREVER\n  {\n    if (fgets (buf, *linelen - offset, f) == NULL ||\t/* end of file or */\n\t(ISSPACE (*line) && !offset))\t\t\t/* end of headers */ \n    {\n      *line = 0;\n      return (line);\n    }\n\n    len = mutt_strlen (buf);\n    if (! len)\n      return (line);\n\n    buf += len - 1;\n    if (*buf == '\\n')\n    {\n      /* we did get a full line. remove trailing space */\n      while (ISSPACE (*buf))\n\t*buf-- = 0;\t/* we cannot come beyond line's beginning because\n\t\t\t * it begins with a non-space */\n\n      /* check to see if the next line is a continuation line */\n      if ((ch = fgetc (f)) != ' ' && ch != '\\t')\n      {\n\tungetc (ch, f);\n\treturn (line); /* next line is a separate header field or EOH */\n      }\n\n      /* eat tabs and spaces from the beginning of the continuation line */\n      while ((ch = fgetc (f)) == ' ' || ch == '\\t')\n\t;\n      ungetc (ch, f);\n      *++buf = ' '; /* string is still terminated because we removed\n\t\t       at least one whitespace char above */\n    }\n\n    buf++;\n    offset = buf - line;\n    if (*linelen < offset + STRING)\n    {\n      /* grow the buffer */\n      *linelen += STRING;\n      safe_realloc (&line, *linelen);\n      buf = line + offset;\n    }\n  }\n  /* not reached */\n}\n\nstatic LIST *mutt_parse_references (char *s, int in_reply_to)\n{\n  LIST *t, *lst = NULL;\n  char *m;\n  const char *sp;\n\n  m = mutt_extract_message_id (s, &sp);\n  while (m)\n  {\n    t = safe_malloc (sizeof (LIST));\n    t->data = m;\n    t->next = lst;\n    lst = t;\n\n    m = mutt_extract_message_id (NULL, &sp);\n  }\n\n  return lst;\n}\n\nint mutt_check_encoding (const char *c)\n{\n  if (ascii_strncasecmp (\"7bit\", c, sizeof (\"7bit\")-1) == 0)\n    return (ENC7BIT);\n  else if (ascii_strncasecmp (\"8bit\", c, sizeof (\"8bit\")-1) == 0)\n    return (ENC8BIT);\n  else if (ascii_strncasecmp (\"binary\", c, sizeof (\"binary\")-1) == 0)\n    return (ENCBINARY);\n  else if (ascii_strncasecmp (\"quoted-printable\", c, sizeof (\"quoted-printable\")-1) == 0)\n    return (ENCQUOTEDPRINTABLE);\n  else if (ascii_strncasecmp (\"base64\", c, sizeof(\"base64\")-1) == 0)\n    return (ENCBASE64);\n  else if (ascii_strncasecmp (\"x-uuencode\", c, sizeof(\"x-uuencode\")-1) == 0)\n    return (ENCUUENCODED);\n#ifdef SUN_ATTACHMENT\n  else if (ascii_strncasecmp (\"uuencode\", c, sizeof(\"uuencode\")-1) == 0)\n    return (ENCUUENCODED);\n#endif\n  else\n    return (ENCOTHER);\n}\n\nstatic PARAMETER *parse_parameters (const char *s)\n{\n  PARAMETER *head = 0, *cur = 0, *new;\n  char buffer[LONG_STRING];\n  const char *p;\n  size_t i;\n\n  dprint (2, (debugfile, \"parse_parameters: `%s'\\n\", s));\n  \n  while (*s)\n  {\n    if ((p = strpbrk (s, \"=;\")) == NULL)\n    {\n      dprint(1, (debugfile, \"parse_parameters: malformed parameter: %s\\n\", s));\n      goto bail;\n    }\n\n    /* if we hit a ; now the parameter has no value, just skip it */\n    if (*p != ';')\n    {\n      i = p - s;\n      /* remove whitespace from the end of the attribute name */\n      while (i > 0 && is_email_wsp(s[i-1]))\n\t--i;\n\n      /* the check for the missing parameter token is here so that we can skip\n       * over any quoted value that may be present.\n       */\n      if (i == 0)\n      {\n\tdprint(1, (debugfile, \"parse_parameters: missing attribute: %s\\n\", s));\n\tnew = NULL;\n      }\n      else\n      {\n\tnew = mutt_new_parameter ();\n\tnew->attribute = mutt_substrdup(s, s + i);\n      }\n\n      s = skip_email_wsp(p + 1); /* skip over the = */\n\n      if (*s == '\"')\n      {\n        int state_ascii = 1;\n\ts++;\n\tfor (i=0; *s && i < sizeof (buffer) - 1; i++, s++)\n\t{\n\t  if (AssumedCharset && *AssumedCharset) {\n            /* As iso-2022-* has a character of '\"' with non-ascii state,\n\t     * ignore it. */\n            if (*s == 0x1b && i < sizeof (buffer) - 2)\n            {\n              if (s[1] == '(' && (s[2] == 'B' || s[2] == 'J'))\n                state_ascii = 1;\n              else\n                state_ascii = 0;\n            }\n          }\n          if (state_ascii && *s == '\"')\n            break;\n\t  if (*s == '\\\\')\n\t  {\n\t    /* Quote the next character */\n\t    buffer[i] = s[1];\n\t    if (!*++s)\n\t      break;\n\t  }\n\t  else\n\t    buffer[i] = *s;\n\t}\n\tbuffer[i] = 0;\n\tif (*s)\n\t  s++; /* skip over the \" */\n      }\n      else\n      {\n\tfor (i=0; *s && *s != ' ' && *s != ';' && i < sizeof (buffer) - 1; i++, s++)\n\t  buffer[i] = *s;\n\tbuffer[i] = 0;\n      }\n\n      /* if the attribute token was missing, 'new' will be NULL */\n      if (new)\n      {\n\tnew->value = safe_strdup (buffer);\n\n\tdprint (2, (debugfile, \"parse_parameter: `%s' = `%s'\\n\",\n\t      new->attribute ? new->attribute : \"\",\n\t      new->value ? new->value : \"\"));\n\n\t/* Add this parameter to the list */\n\tif (head)\n\t{\n\t  cur->next = new;\n\t  cur = cur->next;\n\t}\n\telse\n\t  head = cur = new;\n      }\n    }\n    else\n    {\n      dprint (1, (debugfile, \"parse_parameters(): parameter with no value: %s\\n\", s));\n      s = p;\n    }\n\n    /* Find the next parameter */\n    if (*s != ';' && (s = strchr (s, ';')) == NULL)\n      break; /* no more parameters */\n\n    do\n    {\n      /* Move past any leading whitespace. the +1 skips over the semicolon */\n      s = skip_email_wsp(s + 1);\n    }\n    while (*s == ';'); /* skip empty parameters */\n  }    \n\nbail:\n\n  rfc2231_decode_parameters (&head);\n  return (head);\n}\n\nint mutt_check_mime_type (const char *s)\n{\n  if (ascii_strcasecmp (\"text\", s) == 0)\n    return TYPETEXT;\n  else if (ascii_strcasecmp (\"multipart\", s) == 0)\n    return TYPEMULTIPART;\n#ifdef SUN_ATTACHMENT \n  else if (ascii_strcasecmp (\"x-sun-attachment\", s) == 0)\n    return TYPEMULTIPART;\n#endif\n  else if (ascii_strcasecmp (\"application\", s) == 0)\n    return TYPEAPPLICATION;\n  else if (ascii_strcasecmp (\"message\", s) == 0)\n    return TYPEMESSAGE;\n  else if (ascii_strcasecmp (\"image\", s) == 0)\n    return TYPEIMAGE;\n  else if (ascii_strcasecmp (\"audio\", s) == 0)\n    return TYPEAUDIO;\n  else if (ascii_strcasecmp (\"video\", s) == 0)\n    return TYPEVIDEO;\n  else if (ascii_strcasecmp (\"model\", s) == 0)\n    return TYPEMODEL;\n  else if (ascii_strcasecmp (\"*\", s) == 0)\n    return TYPEANY;\n  else if (ascii_strcasecmp (\".*\", s) == 0)\n    return TYPEANY;\n  else\n    return TYPEOTHER;\n}\n\nvoid mutt_parse_content_type (char *s, BODY *ct)\n{\n  char *pc;\n  char *subtype;\n\n  FREE (&ct->subtype);\n  mutt_free_parameter(&ct->parameter);\n\n  /* First extract any existing parameters */\n  if ((pc = strchr(s, ';')) != NULL)\n  {\n    *pc++ = 0;\n    while (*pc && ISSPACE (*pc))\n      pc++;\n    ct->parameter = parse_parameters(pc);\n\n    /* Some pre-RFC1521 gateways still use the \"name=filename\" convention,\n     * but if a filename has already been set in the content-disposition,\n     * let that take precedence, and don't set it here */\n    if ((pc = mutt_get_parameter( \"name\", ct->parameter)) && !ct->filename)\n      ct->filename = safe_strdup(pc);\n    \n#ifdef SUN_ATTACHMENT\n    /* this is deep and utter perversion */\n    if ((pc = mutt_get_parameter (\"conversions\", ct->parameter)))\n      ct->encoding = mutt_check_encoding (pc);\n#endif\n    \n  }\n  \n  /* Now get the subtype */\n  if ((subtype = strchr(s, '/')))\n  {\n    *subtype++ = '\\0';\n    for(pc = subtype; *pc && !ISSPACE(*pc) && *pc != ';'; pc++)\n      ;\n    *pc = '\\0';\n    ct->subtype = safe_strdup (subtype);\n  }\n\n  /* Finally, get the major type */\n  ct->type = mutt_check_mime_type (s);\n\n#ifdef SUN_ATTACHMENT\n  if (ascii_strcasecmp (\"x-sun-attachment\", s) == 0)\n      ct->subtype = safe_strdup (\"x-sun-attachment\");\n#endif\n\n  if (ct->type == TYPEOTHER)\n  {\n    ct->xtype = safe_strdup (s);\n  }\n\n  if (ct->subtype == NULL)\n  {\n    /* Some older non-MIME mailers (i.e., mailtool, elm) have a content-type\n     * field, so we can attempt to convert the type to BODY here.\n     */\n    if (ct->type == TYPETEXT)\n      ct->subtype = safe_strdup (\"plain\");\n    else if (ct->type == TYPEAUDIO)\n      ct->subtype = safe_strdup (\"basic\");\n    else if (ct->type == TYPEMESSAGE)\n      ct->subtype = safe_strdup (\"rfc822\");\n    else if (ct->type == TYPEOTHER)\n    {\n      char buffer[SHORT_STRING];\n\n      ct->type = TYPEAPPLICATION;\n      snprintf (buffer, sizeof (buffer), \"x-%s\", s);\n      ct->subtype = safe_strdup (buffer);\n    }\n    else\n      ct->subtype = safe_strdup (\"x-unknown\");\n  }\n\n  /* Default character set for text types. */\n  if (ct->type == TYPETEXT)\n  {\n    if (!(pc = mutt_get_parameter (\"charset\", ct->parameter)))\n      mutt_set_parameter (\"charset\", (AssumedCharset && *AssumedCharset) ?\n                         (const char *) mutt_get_default_charset ()\n                         : \"us-ascii\", &ct->parameter);\n  }\n\n}\n\nstatic void parse_content_disposition (const char *s, BODY *ct)\n{\n  PARAMETER *parms;\n\n  if (!ascii_strncasecmp (\"inline\", s, 6))\n    ct->disposition = DISPINLINE;\n  else if (!ascii_strncasecmp (\"form-data\", s, 9))\n    ct->disposition = DISPFORMDATA;\n  else\n    ct->disposition = DISPATTACH;\n\n  /* Check to see if a default filename was given */\n  if ((s = strchr (s, ';')) != NULL)\n  {\n    s = skip_email_wsp(s + 1);\n    if ((s = mutt_get_parameter (\"filename\", (parms = parse_parameters (s)))))\n      mutt_str_replace (&ct->filename, s);\n    if ((s = mutt_get_parameter (\"name\", parms)))\n      ct->form_name = safe_strdup (s);\n    mutt_free_parameter (&parms);\n  }\n}\n\n/* args:\n *\tfp\tstream to read from\n *\n *\tdigest\t1 if reading subparts of a multipart/digest, 0\n *\t\totherwise\n */\n\nBODY *mutt_read_mime_header (FILE *fp, int digest)\n{\n  BODY *p = mutt_new_body();\n  char *c;\n  char *line = safe_malloc (LONG_STRING);\n  size_t linelen = LONG_STRING;\n  \n  p->hdr_offset  = ftello (fp);\n\n  p->encoding    = ENC7BIT; /* default from RFC1521 */\n  p->type        = digest ? TYPEMESSAGE : TYPETEXT;\n  p->disposition = DISPINLINE;\n  \n  while (*(line = mutt_read_rfc822_line (fp, line, &linelen)) != 0)\n  {\n    /* Find the value of the current header */\n    if ((c = strchr (line, ':')))\n    {\n      *c = 0;\n      c = skip_email_wsp(c + 1);\n      if (!*c)\n      {\n\tdprint (1, (debugfile, \"mutt_read_mime_header(): skipping empty header field: %s\\n\", line));\n\tcontinue;\n      }\n    }\n    else\n    {\n      dprint (1, (debugfile, \"read_mime_header: bogus MIME header: %s\\n\", line));\n      break;\n    }\n\n    if (!ascii_strncasecmp (\"content-\", line, 8))\n    {\n      if (!ascii_strcasecmp (\"type\", line + 8))\n\tmutt_parse_content_type (c, p);\n      else if (!ascii_strcasecmp (\"transfer-encoding\", line + 8))\n\tp->encoding = mutt_check_encoding (c);\n      else if (!ascii_strcasecmp (\"disposition\", line + 8))\n\tparse_content_disposition (c, p);\n      else if (!ascii_strcasecmp (\"description\", line + 8))\n      {\n\tmutt_str_replace (&p->description, c);\n\trfc2047_decode (&p->description);\n      }\n    } \n#ifdef SUN_ATTACHMENT\n    else if (!ascii_strncasecmp (\"x-sun-\", line, 6))\n    {\n      if (!ascii_strcasecmp (\"data-type\", line + 6))\n        mutt_parse_content_type (c, p);\n      else if (!ascii_strcasecmp (\"encoding-info\", line + 6))\n        p->encoding = mutt_check_encoding (c);\n      else if (!ascii_strcasecmp (\"content-lines\", line + 6))\n        mutt_set_parameter (\"content-lines\", c, &(p->parameter));\n      else if (!ascii_strcasecmp (\"data-description\", line + 6))\n      {\n\tmutt_str_replace (&p->description, c);\n        rfc2047_decode (&p->description);\n      }\n    }\n#endif\n  }\n  p->offset = ftello (fp); /* Mark the start of the real data */\n  if (p->type == TYPETEXT && !p->subtype)\n    p->subtype = safe_strdup (\"plain\");\n  else if (p->type == TYPEMESSAGE && !p->subtype)\n    p->subtype = safe_strdup (\"rfc822\");\n\n  FREE (&line);\n\n  return (p);\n}\n\nvoid mutt_parse_part (FILE *fp, BODY *b)\n{\n  char *bound = 0;\n\n  switch (b->type)\n  {\n    case TYPEMULTIPART:\n#ifdef SUN_ATTACHMENT\n      if ( !ascii_strcasecmp (b->subtype, \"x-sun-attachment\") )\n          bound = \"--------\";\n      else\n#endif\n          bound = mutt_get_parameter (\"boundary\", b->parameter);\n\n      fseeko (fp, b->offset, SEEK_SET);\n      b->parts =  mutt_parse_multipart (fp, bound, \n\t\t\t\t\tb->offset + b->length,\n\t\t\t\t\tascii_strcasecmp (\"digest\", b->subtype) == 0);\n      break;\n\n    case TYPEMESSAGE:\n      if (b->subtype)\n      {\n\tfseeko (fp, b->offset, SEEK_SET);\n\tif (mutt_is_message_type(b->type, b->subtype))\n\t  b->parts = mutt_parse_messageRFC822 (fp, b);\n\telse if (ascii_strcasecmp (b->subtype, \"external-body\") == 0)\n\t  b->parts = mutt_read_mime_header (fp, 0);\n\telse\n\t  return;\n      }\n      break;\n\n    default:\n      return;\n  }\n\n  /* try to recover from parsing error */\n  if (!b->parts)\n  {\n    b->type = TYPETEXT;\n    mutt_str_replace (&b->subtype, \"plain\");\n  }\n}\n\n/* parse a MESSAGE/RFC822 body\n *\n * args:\n *\tfp\t\tstream to read from\n *\n *\tparent\t\tstructure which contains info about the message/rfc822\n *\t\t\tbody part\n *\n * NOTE: this assumes that `parent->length' has been set!\n */\n\nBODY *mutt_parse_messageRFC822 (FILE *fp, BODY *parent)\n{\n  BODY *msg;\n\n  parent->hdr = mutt_new_header ();\n  parent->hdr->offset = ftello (fp);\n  parent->hdr->env = mutt_read_rfc822_header (fp, parent->hdr, 0, 0);\n  msg = parent->hdr->content;\n\n  /* ignore the length given in the content-length since it could be wrong\n     and we already have the info to calculate the correct length */\n  /* if (msg->length == -1) */\n  msg->length = parent->length - (msg->offset - parent->offset);\n\n  /* if body of this message is empty, we can end up with a negative length */\n  if (msg->length < 0)\n    msg->length = 0;\n\n  mutt_parse_part(fp, msg);\n  return (msg);\n}\n\n/* parse a multipart structure\n *\n * args:\n *\tfp\t\tstream to read from\n *\n *\tboundary\tbody separator\n *\n *\tend_off\t\tlength of the multipart body (used when the final\n *\t\t\tboundary is missing to avoid reading too far)\n *\n *\tdigest\t\t1 if reading a multipart/digest, 0 otherwise\n */\n\nBODY *mutt_parse_multipart (FILE *fp, const char *boundary, LOFF_T end_off, int digest)\n{\n#ifdef SUN_ATTACHMENT\n  int lines;\n#endif\n  int blen, len, crlf = 0;\n  char buffer[LONG_STRING];\n  BODY *head = 0, *last = 0, *new = 0;\n  int i;\n  int final = 0; /* did we see the ending boundary? */\n\n  if (!boundary)\n  {\n    mutt_error _(\"multipart message has no boundary parameter!\");\n    return (NULL);\n  }\n\n  blen = mutt_strlen (boundary);\n  while (ftello (fp) < end_off && fgets (buffer, LONG_STRING, fp) != NULL)\n  {\n    len = mutt_strlen (buffer);\n\n    crlf =  (len > 1 && buffer[len - 2] == '\\r') ? 1 : 0;\n\n    if (buffer[0] == '-' && buffer[1] == '-' &&\n\tmutt_strncmp (buffer + 2, boundary, blen) == 0)\n    {\n      if (last)\n      {\n\tlast->length = ftello (fp) - last->offset - len - 1 - crlf;\n\tif (last->parts && last->parts->length == 0)\n\t  last->parts->length = ftello (fp) - last->parts->offset - len - 1 - crlf;\n\t/* if the body is empty, we can end up with a -1 length */\n\tif (last->length < 0)\n\t  last->length = 0;\n      }\n\n      /* Remove any trailing whitespace, up to the length of the boundary */\n      for (i = len - 1; ISSPACE (buffer[i]) && i >= blen + 2; i--)\n        buffer[i] = 0;\n\n      /* Check for the end boundary */\n      if (mutt_strcmp (buffer + blen + 2, \"--\") == 0)\n      {\n\tfinal = 1;\n\tbreak; /* done parsing */\n      }\n      else if (buffer[2 + blen] == 0)\n      {\n\tnew = mutt_read_mime_header (fp, digest);\n\n#ifdef SUN_ATTACHMENT\n        if (mutt_get_parameter (\"content-lines\", new->parameter)) {\n\t  mutt_atoi (mutt_get_parameter (\"content-lines\", new->parameter), &lines);\n\t  for ( ; lines; lines-- )\n\t     if (ftello (fp) >= end_off || fgets (buffer, LONG_STRING, fp) == NULL)\n\t       break;\n\t}\n#endif\n\t\n\t/*\n\t * Consistency checking - catch\n\t * bad attachment end boundaries\n\t */\n\t\n\tif(new->offset > end_off)\n\t{\n\t  mutt_free_body(&new);\n\t  break;\n\t}\n\tif (head)\n\t{\n\t  last->next = new;\n\t  last = new;\n\t}\n\telse\n\t  last = head = new;\n      }\n    }\n  }\n\n  /* in case of missing end boundary, set the length to something reasonable */\n  if (last && last->length == 0 && !final)\n    last->length = end_off - last->offset;\n\n  /* parse recursive MIME parts */\n  for(last = head; last; last = last->next)\n    mutt_parse_part(fp, last);\n  \n  return (head);\n}\n\nstatic const char *uncomment_timezone (char *buf, size_t buflen, const char *tz)\n{\n  char *p;\n  size_t len;\n\n  if (*tz != '(')\n    return tz; /* no need to do anything */\n  tz = skip_email_wsp(tz + 1);\n  if ((p = strpbrk (tz, \" )\")) == NULL)\n    return tz;\n  len = p - tz;\n  if (len > buflen - 1)\n    len = buflen - 1;\n  memcpy (buf, tz, len);\n  buf[len] = 0;\n  return buf;\n}\n\nstatic const struct tz_t\n{\n  char tzname[5];\n  unsigned char zhours;\n  unsigned char zminutes;\n  unsigned char zoccident; /* west of UTC? */\n}\nTimeZones[] =\n{\n  { \"aat\",   1,  0, 1 }, /* Atlantic Africa Time */\n  { \"adt\",   4,  0, 0 }, /* Arabia DST */\n  { \"ast\",   3,  0, 0 }, /* Arabia */\n/*{ \"ast\",   4,  0, 1 },*/ /* Atlantic */\n  { \"bst\",   1,  0, 0 }, /* British DST */\n  { \"cat\",   1,  0, 0 }, /* Central Africa */\n  { \"cdt\",   5,  0, 1 },\n  { \"cest\",  2,  0, 0 }, /* Central Europe DST */\n  { \"cet\",   1,  0, 0 }, /* Central Europe */\n  { \"cst\",   6,  0, 1 },\n/*{ \"cst\",   8,  0, 0 },*/ /* China */\n/*{ \"cst\",   9, 30, 0 },*/ /* Australian Central Standard Time */\n  { \"eat\",   3,  0, 0 }, /* East Africa */\n  { \"edt\",   4,  0, 1 },\n  { \"eest\",  3,  0, 0 }, /* Eastern Europe DST */\n  { \"eet\",   2,  0, 0 }, /* Eastern Europe */\n  { \"egst\",  0,  0, 0 }, /* Eastern Greenland DST */\n  { \"egt\",   1,  0, 1 }, /* Eastern Greenland */\n  { \"est\",   5,  0, 1 },\n  { \"gmt\",   0,  0, 0 },\n  { \"gst\",   4,  0, 0 }, /* Presian Gulf */\n  { \"hkt\",   8,  0, 0 }, /* Hong Kong */\n  { \"ict\",   7,  0, 0 }, /* Indochina */\n  { \"idt\",   3,  0, 0 }, /* Israel DST */\n  { \"ist\",   2,  0, 0 }, /* Israel */\n/*{ \"ist\",   5, 30, 0 },*/ /* India */\n  { \"jst\",   9,  0, 0 }, /* Japan */\n  { \"kst\",   9,  0, 0 }, /* Korea */\n  { \"mdt\",   6,  0, 1 },\n  { \"met\",   1,  0, 0 }, /* this is now officially CET */\n  { \"msd\",   4,  0, 0 }, /* Moscow DST */\n  { \"msk\",   3,  0, 0 }, /* Moscow */\n  { \"mst\",   7,  0, 1 },\n  { \"nzdt\", 13,  0, 0 }, /* New Zealand DST */\n  { \"nzst\", 12,  0, 0 }, /* New Zealand */\n  { \"pdt\",   7,  0, 1 },\n  { \"pst\",   8,  0, 1 },\n  { \"sat\",   2,  0, 0 }, /* South Africa */\n  { \"smt\",   4,  0, 0 }, /* Seychelles */\n  { \"sst\",  11,  0, 1 }, /* Samoa */\n/*{ \"sst\",   8,  0, 0 },*/ /* Singapore */\n  { \"utc\",   0,  0, 0 },\n  { \"wat\",   0,  0, 0 }, /* West Africa */\n  { \"west\",  1,  0, 0 }, /* Western Europe DST */\n  { \"wet\",   0,  0, 0 }, /* Western Europe */\n  { \"wgst\",  2,  0, 1 }, /* Western Greenland DST */\n  { \"wgt\",   3,  0, 1 }, /* Western Greenland */\n  { \"wst\",   8,  0, 0 }, /* Western Australia */\n};\n\n/* parses a date string in RFC822 format:\n *\n * Date: [ weekday , ] day-of-month month year hour:minute:second timezone\n *\n * This routine assumes that `h' has been initialized to 0.  the `timezone'\n * field is optional, defaulting to +0000 if missing.\n */\ntime_t mutt_parse_date (const char *s, HEADER *h)\n{\n  int count = 0;\n  char *t;\n  int hour, min, sec;\n  struct tm tm;\n  int i;\n  int tz_offset = 0;\n  int zhours = 0;\n  int zminutes = 0;\n  int zoccident = 0;\n  const char *ptz;\n  char tzstr[SHORT_STRING];\n  char scratch[SHORT_STRING];\n\n  /* Don't modify our argument. Fixed-size buffer is ok here since\n   * the date format imposes a natural limit. \n   */\n\n  strfcpy (scratch, s, sizeof (scratch));\n  \n  /* kill the day of the week, if it exists. */\n  if ((t = strchr (scratch, ',')))\n    t++;\n  else\n    t = scratch;\n  t = skip_email_wsp(t);\n\n  memset (&tm, 0, sizeof (tm));\n\n  while ((t = strtok (t, \" \\t\")) != NULL)\n  {\n    switch (count)\n    {\n      case 0: /* day of the month */\n\tif (mutt_atoi (t, &tm.tm_mday) < 0 || tm.tm_mday < 0)\n\t  return (-1);\n\tif (tm.tm_mday > 31)\n\t  return (-1);\n\tbreak;\n\n      case 1: /* month of the year */\n\tif ((i = mutt_check_month (t)) < 0)\n\t  return (-1);\n\ttm.tm_mon = i;\n\tbreak;\n\n      case 2: /* year */\n\tif (mutt_atoi (t, &tm.tm_year) < 0 || tm.tm_year < 0)\n\t  return (-1);\n        if (tm.tm_year < 50)\n\t  tm.tm_year += 100;\n        else if (tm.tm_year >= 1900)\n\t  tm.tm_year -= 1900;\n\tbreak;\n\n      case 3: /* time of day */\n\tif (sscanf (t, \"%d:%d:%d\", &hour, &min, &sec) == 3)\n\t  ;\n\telse if (sscanf (t, \"%d:%d\", &hour, &min) == 2)\n\t  sec = 0;\n\telse\n\t{\n\t  dprint(1, (debugfile, \"parse_date: could not process time format: %s\\n\", t));\n\t  return(-1);\n\t}\n\ttm.tm_hour = hour;\n\ttm.tm_min = min;\n\ttm.tm_sec = sec;\n\tbreak;\n\n      case 4: /* timezone */\n\t/* sometimes we see things like (MST) or (-0700) so attempt to\n\t * compensate by uncommenting the string if non-RFC822 compliant\n\t */\n\tptz = uncomment_timezone (tzstr, sizeof (tzstr), t);\n\n\tif (*ptz == '+' || *ptz == '-')\n\t{\n\t  if (ptz[1] && ptz[2] && ptz[3] && ptz[4]\n\t      && isdigit ((unsigned char) ptz[1]) && isdigit ((unsigned char) ptz[2])\n\t      && isdigit ((unsigned char) ptz[3]) && isdigit ((unsigned char) ptz[4]))\n\t  {\n\t    zhours = (ptz[1] - '0') * 10 + (ptz[2] - '0');\n\t    zminutes = (ptz[3] - '0') * 10 + (ptz[4] - '0');\n\n\t    if (ptz[0] == '-')\n\t      zoccident = 1;\n\t  }\n\t}\n\telse\n\t{\n\t  struct tz_t *tz;\n\n\t  tz = bsearch (ptz, TimeZones, sizeof TimeZones/sizeof (struct tz_t),\n\t\t\tsizeof (struct tz_t),\n\t\t\t(int (*)(const void *, const void *)) ascii_strcasecmp\n\t\t\t/* This is safe to do: A pointer to a struct equals\n\t\t\t * a pointer to its first element*/);\n\n\t  if (tz)\n\t  {\n\t    zhours = tz->zhours;\n\t    zminutes = tz->zminutes;\n\t    zoccident = tz->zoccident;\n\t  }\n\n\t  /* ad hoc support for the European MET (now officially CET) TZ */\n\t  if (ascii_strcasecmp (t, \"MET\") == 0)\n\t  {\n\t    if ((t = strtok (NULL, \" \\t\")) != NULL)\n\t    {\n\t      if (!ascii_strcasecmp (t, \"DST\"))\n\t\tzhours++;\n\t    }\n\t  }\n\t}\n\ttz_offset = zhours * 3600 + zminutes * 60;\n\tif (!zoccident)\n\t  tz_offset = -tz_offset;\n\tbreak;\n    }\n    count++;\n    t = 0;\n  }\n\n  if (count < 4) /* don't check for missing timezone */\n  {\n    dprint(1,(debugfile, \"parse_date(): error parsing date format, using received time\\n\"));\n    return (-1);\n  }\n\n  if (h)\n  {\n    h->zhours = zhours;\n    h->zminutes = zminutes;\n    h->zoccident = zoccident;\n  }\n\n  return (mutt_mktime (&tm, 0) + tz_offset);\n}\n\n/* extract the first substring that looks like a message-id.\n * call back with NULL for more (like strtok).\n */\nchar *mutt_extract_message_id (const char *s, const char **saveptr)\n{\n  const char *o, *onull, *p;\n  char *ret = NULL;\n\n  if (s)\n    p = s;\n  else if (saveptr)\n    p = *saveptr;\n  else\n    return NULL;\n\n  for (s = NULL, o = NULL, onull = NULL;\n       (p = strpbrk (p, \"<> \\t;\")) != NULL; ++p)\n  {\n    if (*p == '<')\n    {\n      s = p; \n      o = onull = NULL;\n      continue;\n    }\n\n    if (!s)\n      continue;\n\n    if (*p == '>')\n    {\n      size_t olen = onull - o, slen = p - s + 1;\n      ret = safe_malloc (olen + slen + 1);\n      if (o)\n\tmemcpy (ret, o, olen);\n      memcpy (ret + olen, s, slen);\n      ret[olen + slen] = '\\0';\n      if (saveptr)\n\t*saveptr = p + 1; /* next call starts after '>' */\n      return ret;\n    }\n\n    /* some idiotic clients break their message-ids between lines */\n    if (s == p) \n      /* step past another whitespace */\n      s = p + 1;\n    else if (o)\n      /* more than two lines, give up */\n      s = o = onull = NULL;\n    else\n    {\n      /* remember the first line, start looking for the second */\n      o = s;\n      onull = p;\n      s = p + 1;\n    }\n  }\n\n  return NULL;\n}\n\nvoid mutt_parse_mime_message (CONTEXT *ctx, HEADER *cur)\n{\n  MESSAGE *msg;\n\n  do {\n    if (cur->content->type != TYPEMESSAGE &&\n        cur->content->type != TYPEMULTIPART)\n      break; /* nothing to do */\n\n    if (cur->content->parts)\n      break; /* The message was parsed earlier. */\n\n    if ((msg = mx_open_message (ctx, cur->msgno)))\n    {\n      mutt_parse_part (msg->fp, cur->content);\n\n      if (WithCrypto)\n        cur->security = crypt_query (cur->content);\n\n      mx_close_message (&msg);\n    }\n  } while (0);\n\n  cur->attach_valid = 0;\n}\n\nint mutt_parse_rfc822_line (ENVELOPE *e, HEADER *hdr, char *line, char *p, short user_hdrs, short weed,\n\t\t\t    short do_2047, LIST **lastp)\n{\n  int matched = 0;\n  LIST *last = NULL;\n  \n  if (lastp)\n    last = *lastp;\n  \n  switch (ascii_tolower (line[0]))\n  {\n    case 'a':\n    if (ascii_strcasecmp (line+1, \"pparently-to\") == 0)\n    {\n      e->to = rfc822_parse_adrlist (e->to, p);\n      matched = 1;\n    }\n    else if (ascii_strcasecmp (line+1, \"pparently-from\") == 0)\n    {\n      e->from = rfc822_parse_adrlist (e->from, p);\n      matched = 1;\n    }\n    break;\n    \n    case 'b':\n    if (ascii_strcasecmp (line+1, \"cc\") == 0)\n    {\n      e->bcc = rfc822_parse_adrlist (e->bcc, p);\n      matched = 1;\n    }\n    break;\n    \n    case 'c':\n    if (ascii_strcasecmp (line+1, \"c\") == 0)\n    {\n      e->cc = rfc822_parse_adrlist (e->cc, p);\n      matched = 1;\n    }\n    else if (ascii_strncasecmp (line + 1, \"ontent-\", 7) == 0)\n    {\n      if (ascii_strcasecmp (line+8, \"type\") == 0)\n      {\n\tif (hdr)\n\t  mutt_parse_content_type (p, hdr->content);\n\tmatched = 1;\n      }\n      else if (ascii_strcasecmp (line+8, \"transfer-encoding\") == 0)\n      {\n\tif (hdr)\n\t  hdr->content->encoding = mutt_check_encoding (p);\n\tmatched = 1;\n      }\n      else if (ascii_strcasecmp (line+8, \"length\") == 0)\n      {\n\tif (hdr)\n\t{\n\t  if ((hdr->content->length = atol (p)) < 0)\n\t    hdr->content->length = -1;\n\t}\n\tmatched = 1;\n      }\n      else if (ascii_strcasecmp (line+8, \"description\") == 0)\n      {\n\tif (hdr)\n\t{\n\t  mutt_str_replace (&hdr->content->description, p);\n\t  rfc2047_decode (&hdr->content->description);\n\t}\n\tmatched = 1;\n      }\n      else if (ascii_strcasecmp (line+8, \"disposition\") == 0)\n      {\n\tif (hdr)\n\t  parse_content_disposition (p, hdr->content);\n\tmatched = 1;\n      }\n    }\n    break;\n    \n    case 'd':\n    if (!ascii_strcasecmp (\"ate\", line + 1))\n    {\n      mutt_str_replace (&e->date, p);\n      if (hdr)\n\thdr->date_sent = mutt_parse_date (p, hdr);\n      matched = 1;\n    }\n    break;\n    \n    case 'e':\n    if (!ascii_strcasecmp (\"xpires\", line + 1) &&\n\thdr && mutt_parse_date (p, NULL) < time (NULL))\n      hdr->expired = 1;\n    break;\n    \n    case 'f':\n    if (!ascii_strcasecmp (\"rom\", line + 1))\n    {\n      e->from = rfc822_parse_adrlist (e->from, p);\n      matched = 1;\n    }\n    break;\n    \n    case 'i':\n    if (!ascii_strcasecmp (line+1, \"n-reply-to\"))\n    {\n      mutt_free_list (&e->in_reply_to);\n      e->in_reply_to = mutt_parse_references (p, 1);\n      matched = 1;\n    }\n    break;\n    \n    case 'l':\n    if (!ascii_strcasecmp (line + 1, \"ines\"))\n    {\n      if (hdr)\n      {\n\t/* \n\t * HACK - mutt has, for a very short time, produced negative\n\t * Lines header values.  Ignore them. \n\t */\n\tif (mutt_atoi (p, &hdr->lines) < 0 || hdr->lines < 0)\n\t  hdr->lines = 0;\n      }\n\n      matched = 1;\n    }\n    else if (!ascii_strcasecmp (line + 1, \"ist-Post\"))\n    {\n      /* RFC 2369.  FIXME: We should ignore whitespace, but don't. */\n      if (strncmp (p, \"NO\", 2))\n      {\n\tchar *beg, *end;\n\tfor (beg = strchr (p, '<'); beg; beg = strchr (end, ','))\n\t{\n\t  ++beg;\n\t  if (!(end = strchr (beg, '>')))\n\t    break;\n\t  \n\t  /* Take the first mailto URL */\n\t  if (url_check_scheme (beg) == U_MAILTO)\n\t  {\n\t    FREE (&e->list_post);\n\t    e->list_post = mutt_substrdup (beg, end);\n\t    break;\n\t  }\n\t}\n      }\n      matched = 1;\n    }\n    break;\n    \n    case 'm':\n    if (!ascii_strcasecmp (line + 1, \"ime-version\"))\n    {\n      if (hdr)\n\thdr->mime = 1;\n      matched = 1;\n    }\n    else if (!ascii_strcasecmp (line + 1, \"essage-id\"))\n    {\n      /* We add a new \"Message-ID:\" when building a message */\n      FREE (&e->message_id);\n      e->message_id = mutt_extract_message_id (p, NULL);\n      matched = 1;\n    }\n    else if (!ascii_strncasecmp (line + 1, \"ail-\", 4))\n    {\n      if (!ascii_strcasecmp (line + 5, \"reply-to\"))\n      {\n\t/* override the Reply-To: field */\n\trfc822_free_address (&e->reply_to);\n\te->reply_to = rfc822_parse_adrlist (e->reply_to, p);\n\tmatched = 1;\n      }\n      else if (!ascii_strcasecmp (line + 5, \"followup-to\"))\n      {\n\te->mail_followup_to = rfc822_parse_adrlist (e->mail_followup_to, p);\n\tmatched = 1;\n      }\n    }\n    break;\n    \n    case 'r':\n    if (!ascii_strcasecmp (line + 1, \"eferences\"))\n    {\n      mutt_free_list (&e->references);\n      e->references = mutt_parse_references (p, 0);\n      matched = 1;\n    }\n    else if (!ascii_strcasecmp (line + 1, \"eply-to\"))\n    {\n      e->reply_to = rfc822_parse_adrlist (e->reply_to, p);\n      matched = 1;\n    }\n    else if (!ascii_strcasecmp (line + 1, \"eturn-path\"))\n    {\n      e->return_path = rfc822_parse_adrlist (e->return_path, p);\n      matched = 1;\n    }\n    else if (!ascii_strcasecmp (line + 1, \"eceived\"))\n    {\n      if (hdr && !hdr->received)\n      {\n\tchar *d = strrchr (p, ';');\n\t\n\tif (d)\n\t  hdr->received = mutt_parse_date (d + 1, NULL);\n      }\n    }\n    break;\n    \n    case 's':\n    if (!ascii_strcasecmp (line + 1, \"ubject\"))\n    {\n      if (!e->subject)\n\te->subject = safe_strdup (p);\n      matched = 1;\n    }\n    else if (!ascii_strcasecmp (line + 1, \"ender\"))\n    {\n      e->sender = rfc822_parse_adrlist (e->sender, p);\n      matched = 1;\n    }\n    else if (!ascii_strcasecmp (line + 1, \"tatus\"))\n    {\n      if (hdr)\n      {\n\twhile (*p)\n\t{\n\t  switch(*p)\n\t  {\n\t    case 'r':\n\t    hdr->replied = 1;\n\t    break;\n\t    case 'O':\n\t      hdr->old = 1;\n\t    break;\n\t    case 'R':\n\t    hdr->read = 1;\n\t    break;\n\t  }\n\t  p++;\n\t}\n      }\n      matched = 1;\n    }\n    else if ((!ascii_strcasecmp (\"upersedes\", line + 1) ||\n\t      !ascii_strcasecmp (\"upercedes\", line + 1)) && hdr)\n    {\n      FREE(&e->supersedes);\n      e->supersedes = safe_strdup (p);\n    }\n    break;\n    \n    case 't':\n    if (ascii_strcasecmp (line+1, \"o\") == 0)\n    {\n      e->to = rfc822_parse_adrlist (e->to, p);\n      matched = 1;\n    }\n    break;\n    \n    case 'x':\n    if (ascii_strcasecmp (line+1, \"-status\") == 0)\n    {\n      if (hdr)\n      {\n\twhile (*p)\n\t{\n\t  switch (*p)\n\t  {\n\t    case 'A':\n\t    hdr->replied = 1;\n\t    break;\n\t    case 'D':\n\t    hdr->deleted = 1;\n\t    break;\n\t    case 'F':\n\t    hdr->flagged = 1;\n\t    break;\n\t    default:\n\t    break;\n\t  }\n\t  p++;\n\t}\n      }\n      matched = 1;\n    }\n    else if (ascii_strcasecmp (line+1, \"-label\") == 0)\n    {\n      FREE(&e->x_label);\n      e->x_label = safe_strdup(p);\n      matched = 1;\n    }\n    \n    default:\n    break;\n  }\n  \n  /* Keep track of the user-defined headers */\n  if (!matched && user_hdrs)\n  {\n    /* restore the original line */\n    line[strlen (line)] = ':';\n    \n    if (weed && option (OPTWEED) && mutt_matches_ignore (line, Ignore)\n\t&& !mutt_matches_ignore (line, UnIgnore))\n      goto done;\n\n    if (last)\n    {\n      last->next = mutt_new_list ();\n      last = last->next;\n    }\n    else\n      last = e->userhdrs = mutt_new_list ();\n    last->data = safe_strdup (line);\n    if (do_2047)\n      rfc2047_decode (&last->data);\n  }\n\n  done:\n  \n  *lastp = last;\n  return matched;\n}\n  \n  \n/* mutt_read_rfc822_header() -- parses a RFC822 header\n *\n * Args:\n *\n * f\t\tstream to read from\n *\n * hdr\t\theader structure of current message (optional).\n * \n * user_hdrs\tIf set, store user headers.  Used for recall-message and\n * \t\tpostpone modes.\n * \n * weed\t\tIf this parameter is set and the user has activated the\n * \t\t$weed option, honor the header weed list for user headers.\n * \t        Used for recall-message.\n * \n * Returns:     newly allocated envelope structure.  You should free it by\n *              mutt_free_envelope() when envelope stay unneeded.\n */\nENVELOPE *mutt_read_rfc822_header (FILE *f, HEADER *hdr, short user_hdrs,\n\t\t\t\t   short weed)\n{\n  ENVELOPE *e = mutt_new_envelope();\n  LIST *last = NULL;\n  char *line = safe_malloc (LONG_STRING);\n  char *p;\n  LOFF_T loc;\n  size_t linelen = LONG_STRING;\n  char buf[LONG_STRING+1];\n\n  if (hdr)\n  {\n    if (hdr->content == NULL)\n    {\n      hdr->content = mutt_new_body ();\n\n      /* set the defaults from RFC1521 */\n      hdr->content->type        = TYPETEXT;\n      hdr->content->subtype     = safe_strdup (\"plain\");\n      hdr->content->encoding    = ENC7BIT;\n      hdr->content->length      = -1;\n\n      /* RFC 2183 says this is arbitrary */\n      hdr->content->disposition = DISPINLINE;\n    }\n  }\n\n  while ((loc = ftello (f)),\n\t  *(line = mutt_read_rfc822_line (f, line, &linelen)) != 0)\n  {\n    if ((p = strpbrk (line, \": \\t\")) == NULL || *p != ':')\n    {\n      char return_path[LONG_STRING];\n      time_t t;\n\n      /* some bogus MTAs will quote the original \"From \" line */\n      if (mutt_strncmp (\">From \", line, 6) == 0)\n\tcontinue; /* just ignore */\n      else if (is_from (line, return_path, sizeof (return_path), &t))\n      {\n\t/* MH sometimes has the From_ line in the middle of the header! */\n\tif (hdr && !hdr->received)\n\t  hdr->received = t - mutt_local_tz (t);\n\tcontinue;\n      }\n\n      fseeko (f, loc, 0);\n      break; /* end of header */\n    }\n\n    *buf = '\\0';\n\n    if (mutt_match_spam_list(line, SpamList, buf, sizeof(buf)))\n    {\n      if (!mutt_match_rx_list(line, NoSpamList))\n      {\n\n\t/* if spam tag already exists, figure out how to amend it */\n\tif (e->spam && *buf)\n\t{\n\t  /* If SpamSep defined, append with separator */\n\t  if (SpamSep)\n\t  {\n\t    mutt_buffer_addstr(e->spam, SpamSep);\n\t    mutt_buffer_addstr(e->spam, buf);\n\t  }\n\n\t  /* else overwrite */\n\t  else\n\t  {\n\t    e->spam->dptr = e->spam->data;\n\t    *e->spam->dptr = '\\0';\n\t    mutt_buffer_addstr(e->spam, buf);\n\t  }\n\t}\n\n\t/* spam tag is new, and match expr is non-empty; copy */\n\telse if (!e->spam && *buf)\n\t{\n\t  e->spam = mutt_buffer_from (buf);\n\t}\n\n\t/* match expr is empty; plug in null string if no existing tag */\n\telse if (!e->spam)\n\t{\n\t  e->spam = mutt_buffer_from(\"\");\n\t}\n\n\tif (e->spam && e->spam->data)\n          dprint(5, (debugfile, \"p822: spam = %s\\n\", e->spam->data));\n      }\n    }\n\n    *p = 0;\n    p = skip_email_wsp(p + 1);\n    if (!*p)\n      continue; /* skip empty header fields */\n\n    mutt_parse_rfc822_line (e, hdr, line, p, user_hdrs, weed, 1, &last);\n  }\n\n  FREE (&line);\n\n  if (hdr)\n  {\n    hdr->content->hdr_offset = hdr->offset;\n    hdr->content->offset = ftello (f);\n\n    /* do RFC2047 decoding */\n    rfc2047_decode_adrlist (e->from);\n    rfc2047_decode_adrlist (e->to);\n    rfc2047_decode_adrlist (e->cc);\n    rfc2047_decode_adrlist (e->bcc);\n    rfc2047_decode_adrlist (e->reply_to);\n    rfc2047_decode_adrlist (e->mail_followup_to);\n    rfc2047_decode_adrlist (e->return_path);\n    rfc2047_decode_adrlist (e->sender);\n    rfc2047_decode (&e->x_label);\n\n    if (e->subject)\n    {\n      regmatch_t pmatch[1];\n\n      rfc2047_decode (&e->subject);\n\n      if (regexec (ReplyRegexp.rx, e->subject, 1, pmatch, 0) == 0)\n\te->real_subj = e->subject + pmatch[0].rm_eo;\n      else\n\te->real_subj = e->subject;\n    }\n\n    /* check for missing or invalid date */\n    if (hdr->date_sent <= 0)\n    {\n      dprint(1,(debugfile,\"read_rfc822_header(): no date found, using received time from msg separator\\n\"));\n      hdr->date_sent = hdr->received;\n    }\n  }\n\n  return (e);\n}\n\nADDRESS *mutt_parse_adrlist (ADDRESS *p, const char *s)\n{\n  const char *q;\n\n  /* check for a simple whitespace separated list of addresses */\n  if ((q = strpbrk (s, \"\\\"<>():;,\\\\\")) == NULL)\n  {\n    char tmp[HUGE_STRING];\n    char *r;\n\n    strfcpy (tmp, s, sizeof (tmp));\n    r = tmp;\n    while ((r = strtok (r, \" \\t\")) != NULL)\n    {\n      p = rfc822_parse_adrlist (p, r);\n      r = NULL;\n    }\n  }\n  else\n    p = rfc822_parse_adrlist (p, s);\n  \n  return p;\n}\n\n/* Compares mime types to the ok and except lists */\nstatic int count_body_parts_check(LIST **checklist, BODY *b, int dflt)\n{\n  LIST *type;\n  ATTACH_MATCH *a;\n\n  /* If list is null, use default behavior. */\n  if (! *checklist)\n  {\n    /*return dflt;*/\n    return 0;\n  }\n\n  for (type = *checklist; type; type = type->next)\n  {\n    a = (ATTACH_MATCH *)type->data;\n    dprint(5, (debugfile, \"cbpc: %s %d/%s ?? %s/%s [%d]... \",\n\t\tdflt ? \"[OK]   \" : \"[EXCL] \",\n\t\tb->type, b->subtype, a->major, a->minor, a->major_int));\n    if ((a->major_int == TYPEANY || a->major_int == b->type) &&\n\t!regexec(&a->minor_rx, b->subtype, 0, NULL, 0))\n    {\n      dprint(5, (debugfile, \"yes\\n\"));\n      return 1;\n    }\n    else\n    {\n      dprint(5, (debugfile, \"no\\n\"));\n    }\n  }\n\n  return 0;\n}\n\n#define AT_COUNT(why)   { shallcount = 1; }\n#define AT_NOCOUNT(why) { shallcount = 0; }\n\nstatic int count_body_parts (BODY *body, int flags)\n{\n  int count = 0;\n  int shallcount, shallrecurse;\n  BODY *bp;\n\n  if (body == NULL)\n    return 0;\n\n  for (bp = body; bp != NULL; bp = bp->next)\n  {\n    /* Initial disposition is to count and not to recurse this part. */\n    AT_COUNT(\"default\");\n    shallrecurse = 0;\n\n    dprint(5, (debugfile, \"bp: desc=\\\"%s\\\"; fn=\\\"%s\\\", type=\\\"%d/%s\\\"\\n\",\n\t   bp->description ? bp->description : (\"none\"),\n\t   bp->filename ? bp->filename :\n\t\t\tbp->d_filename ? bp->d_filename : \"(none)\",\n\t   bp->type, bp->subtype ? bp->subtype : \"*\"));\n\n    if (bp->type == TYPEMESSAGE)\n    {\n      shallrecurse = 1;\n\n      /* If it's an external body pointer, don't recurse it. */\n      if (!ascii_strcasecmp (bp->subtype, \"external-body\"))\n\tshallrecurse = 0;\n\n      /* Don't count containers if they're top-level. */\n      if (flags & M_PARTS_TOPLEVEL)\n\tAT_NOCOUNT(\"top-level message/*\");\n    }\n    else if (bp->type == TYPEMULTIPART)\n    {\n      /* Always recurse multiparts, except multipart/alternative. */\n      shallrecurse = 1;\n      if (!ascii_strcasecmp(bp->subtype, \"alternative\"))\n        shallrecurse = 0;\n\n      /* Don't count containers if they're top-level. */\n      if (flags & M_PARTS_TOPLEVEL)\n\tAT_NOCOUNT(\"top-level multipart\");\n    }\n\n    if (bp->disposition == DISPINLINE &&\n        bp->type != TYPEMULTIPART && bp->type != TYPEMESSAGE && bp == body)\n      AT_NOCOUNT(\"ignore fundamental inlines\");\n\n    /* If this body isn't scheduled for enumeration already, don't bother\n     * profiling it further.\n     */\n    if (shallcount)\n    {\n      /* Turn off shallcount if message type is not in ok list,\n       * or if it is in except list. Check is done separately for\n       * inlines vs. attachments.\n       */\n\n      if (bp->disposition == DISPATTACH)\n      {\n        if (!count_body_parts_check(&AttachAllow, bp, 1))\n\t  AT_NOCOUNT(\"attach not allowed\");\n        if (count_body_parts_check(&AttachExclude, bp, 0))\n\t  AT_NOCOUNT(\"attach excluded\");\n      }\n      else\n      {\n        if (!count_body_parts_check(&InlineAllow, bp, 1))\n\t  AT_NOCOUNT(\"inline not allowed\");\n        if (count_body_parts_check(&InlineExclude, bp, 0))\n\t  AT_NOCOUNT(\"excluded\");\n      }\n    }\n\n    if (shallcount)\n      count++;\n    bp->attach_qualifies = shallcount ? 1 : 0;\n\n    dprint(5, (debugfile, \"cbp: %p shallcount = %d\\n\", (void *)bp, shallcount));\n\n    if (shallrecurse)\n    {\n      dprint(5, (debugfile, \"cbp: %p pre count = %d\\n\", (void *)bp, count));\n      bp->attach_count = count_body_parts(bp->parts, flags & ~M_PARTS_TOPLEVEL);\n      count += bp->attach_count;\n      dprint(5, (debugfile, \"cbp: %p post count = %d\\n\", (void *)bp, count));\n    }\n  }\n\n  dprint(5, (debugfile, \"bp: return %d\\n\", count < 0 ? 0 : count));\n  return count < 0 ? 0 : count;\n}\n\nint mutt_count_body_parts (CONTEXT *ctx, HEADER *hdr)\n{\n  short keep_parts = 0;\n\n  if (hdr->attach_valid)\n    return hdr->attach_total;\n  \n  if (hdr->content->parts)\n    keep_parts = 1;\n  else\n    mutt_parse_mime_message (ctx, hdr);\n  \n  if (AttachAllow || AttachExclude || InlineAllow || InlineExclude)\n    hdr->attach_total = count_body_parts(hdr->content, M_PARTS_TOPLEVEL);\n  else\n    hdr->attach_total = 0;\n\n  hdr->attach_valid = 1;\n  \n  if (!keep_parts)\n    mutt_free_body (&hdr->content->parts);\n  \n  return hdr->attach_total;\n}\n"
  },
  {
    "path": "patchlist.sh",
    "content": "#!/bin/sh --\n\nlist_patches_PATCHES () {\n\tcat -\n}\n\nlist_patches_mq () {\n\thg qapplied | sed -e 's/^/mq-/'\n}\n\nlist_patches () {\n\tif [ -f .hg/patches/series ]; then\n\t\tlist_patches_mq\n\telse\n\t\tlist_patches_PATCHES\n\tfi\n}\n\ncat <<EOF\n/* this is an autogenerated file.  edit patchlist.sh instead. */\n#include \"config.h\"\n\n#include <stdio.h>\n#include <stdlib.h>\n\n#include \"mutt.h\"\n\nvoid mutt_print_patchlist (void)\n{\nEOF\n\nlist_patches | while read patch ; do\n\techo \"  puts (\\\"${patch}\\\");\"\ndone\n\necho \"}\"\n"
  },
  {
    "path": "pattern.c",
    "content": "/*\n * Copyright (C) 1996-2000,2006-2007,2010 Michael R. Elkins <me@mutt.org>, and others\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mapping.h\"\n#include \"keymap.h\"\n#include \"mailbox.h\"\n#include \"copy.h\"\n\n#include <string.h>\n#include <stdlib.h>\n#include <ctype.h>\n#include <sys/stat.h>\n#include <unistd.h>\n#include <stdarg.h>\n\n#include \"mutt_crypt.h\"\n#include \"mutt_curses.h\"\n#include \"group.h\"\n\n#ifdef USE_IMAP\n#include \"mx.h\"\n#include \"imap/imap.h\"\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\nstatic int eat_regexp (pattern_t *pat, BUFFER *, BUFFER *);\nstatic int eat_date (pattern_t *pat, BUFFER *, BUFFER *);\nstatic int eat_range (pattern_t *pat, BUFFER *, BUFFER *);\nstatic int patmatch (const pattern_t *pat, const char *buf);\n\nstatic const struct pattern_flags\n{\n  int tag;\t/* character used to represent this op */\n  int op;\t/* operation to perform */\n  int class;\n  int (*eat_arg) (pattern_t *, BUFFER *, BUFFER *);\n}\nFlags[] =\n{\n  { 'A', M_ALL,\t\t\t0,\t\tNULL },\n  { 'b', M_BODY,\t\tM_FULL_MSG,\teat_regexp },\n  { 'B', M_WHOLE_MSG,\t\tM_FULL_MSG,\teat_regexp },\n  { 'c', M_CC,\t\t\t0,\t\teat_regexp },\n  { 'C', M_RECIPIENT,\t\t0,\t\teat_regexp },\n  { 'd', M_DATE,\t\t0,\t\teat_date },\n  { 'D', M_DELETED,\t\t0,\t\tNULL },\n  { 'e', M_SENDER,\t\t0,\t\teat_regexp },\n  { 'E', M_EXPIRED,\t\t0,\t\tNULL },\n  { 'f', M_FROM,\t\t0,\t\teat_regexp },\n  { 'F', M_FLAG,\t\t0,\t\tNULL },\n  { 'g', M_CRYPT_SIGN,\t\t0,\t\tNULL },\n  { 'G', M_CRYPT_ENCRYPT,\t0,\t\tNULL },\n  { 'h', M_HEADER,\t\tM_FULL_MSG,\teat_regexp },\n  { 'H', M_HORMEL,\t\t0,\t\teat_regexp },\n  { 'i', M_ID,\t\t\t0,\t\teat_regexp },\n  { 'k', M_PGP_KEY,\t\t0,\t\tNULL },\n  { 'l', M_LIST,\t\t0,\t\tNULL },\n  { 'L', M_ADDRESS,\t\t0,\t\teat_regexp },\n  { 'm', M_MESSAGE,\t\t0,\t\teat_range },\n  { 'n', M_SCORE,\t\t0,\t\teat_range },\n  { 'N', M_NEW,\t\t\t0,\t\tNULL },\n  { 'O', M_OLD,\t\t\t0,\t\tNULL },\n  { 'p', M_PERSONAL_RECIP,\t0,\t\tNULL },\n  { 'P', M_PERSONAL_FROM,\t0,\t\tNULL },\n  { 'Q', M_REPLIED,\t\t0,\t\tNULL },\n  { 'r', M_DATE_RECEIVED,\t0,\t\teat_date },\n  { 'R', M_READ,\t\t0,\t\tNULL },\n  { 's', M_SUBJECT,\t\t0,\t\teat_regexp },\n  { 'S', M_SUPERSEDED,\t\t0,\t\tNULL },\n  { 't', M_TO,\t\t\t0,\t\teat_regexp },\n  { 'T', M_TAG,\t\t\t0,\t\tNULL },\n  { 'u', M_SUBSCRIBED_LIST,\t0,\t\tNULL },\n  { 'U', M_UNREAD,\t\t0,\t\tNULL },\n  { 'v', M_COLLAPSED,\t\t0,\t\tNULL },\n  { 'V', M_CRYPT_VERIFIED,\t0,\t\tNULL },\n  { 'x', M_REFERENCE,\t\t0,\t\teat_regexp },\n  { 'X', M_MIMEATTACH,\t\t0,\t\teat_range },\n  { 'y', M_XLABEL,\t\t0,\t\teat_regexp },\n#ifdef USE_NOTMUCH\n  { 'Y', M_NOTMUCH_LABEL,\t0,\t\teat_regexp },\n#endif\n  { 'z', M_SIZE,\t\t0,\t\teat_range },\n  { '=', M_DUPLICATED,\t\t0,\t\tNULL },\n  { '$', M_UNREFERENCED,\t0,\t\tNULL },\n  { 0,   0,\t\t\t0,\t\tNULL }\n};\n\nstatic pattern_t *SearchPattern = NULL; /* current search pattern */\nstatic char LastSearch[STRING] = { 0 };\t/* last pattern searched for */\nstatic char LastSearchExpn[LONG_STRING] = { 0 }; /* expanded version of\n\t\t\t\t\t\t    LastSearch */\n\n#define M_MAXRANGE -1\n\n/* constants for parse_date_range() */\n#define M_PDR_NONE\t0x0000\n#define M_PDR_MINUS\t0x0001\n#define M_PDR_PLUS\t0x0002\n#define M_PDR_WINDOW\t0x0004\n#define M_PDR_ABSOLUTE\t0x0008\n#define M_PDR_DONE\t0x0010\n#define M_PDR_ERROR\t0x0100\n#define M_PDR_ERRORDONE\t(M_PDR_ERROR | M_PDR_DONE)\n\n\n/* if no uppercase letters are given, do a case-insensitive search */\nint mutt_which_case (const char *s)\n{\n  wchar_t w;\n  mbstate_t mb;\n  size_t l;\n  \n  memset (&mb, 0, sizeof (mb));\n  \n  for (; (l = mbrtowc (&w, s, MB_CUR_MAX, &mb)) != 0; s += l)\n  {\n    if (l == (size_t) -2)\n      continue; /* shift sequences */\n    if (l == (size_t) -1)\n      return 0; /* error; assume case-sensitive */\n    if (iswalpha ((wint_t) w) && iswupper ((wint_t) w))\n      return 0; /* case-sensitive */\n  }\n\n  return REG_ICASE; /* case-insensitive */\n}\n\nstatic int\nmsg_search (CONTEXT *ctx, pattern_t* pat, int msgno)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  MESSAGE *msg = NULL;\n  STATE s;\n  struct stat st;\n  FILE *fp = NULL;\n  long lng = 0;\n  int match = 0;\n  HEADER *h = ctx->hdrs[msgno];\n  char *buf;\n  size_t blen;\n\n  if ((msg = mx_open_message (ctx, msgno)) != NULL)\n  {\n    if (option (OPTTHOROUGHSRC))\n    {\n      /* decode the header / body */\n      memset (&s, 0, sizeof (s));\n      s.fpin = msg->fp;\n      s.flags = M_CHARCONV;\n      mutt_mktemp (tempfile, sizeof (tempfile));\n      if ((s.fpout = safe_fopen (tempfile, \"w+\")) == NULL)\n      {\n\tmutt_perror (tempfile);\n\treturn (0);\n      }\n\n      if (pat->op != M_BODY)\n\tmutt_copy_header (msg->fp, h, s.fpout, CH_FROM | CH_DECODE, NULL);\n\n      if (pat->op != M_HEADER)\n      {\n\tmutt_parse_mime_message (ctx, h);\n\n\tif (WithCrypto && (h->security & ENCRYPT)\n            && !crypt_valid_passphrase(h->security))\n\t{\n\t  mx_close_message (&msg);\n\t  if (s.fpout)\n\t  {\n\t    safe_fclose (&s.fpout);\n\t    unlink (tempfile);\n\t  }\n\t  return (0);\n\t}\n\n\tfseeko (msg->fp, h->offset, 0);\n\tmutt_body_handler (h->content, &s);\n      }\n\n      fp = s.fpout;\n      fflush (fp);\n      fseek (fp, 0, 0);\n      fstat (fileno (fp), &st);\n      lng = (long) st.st_size;\n    }\n    else\n    {\n      /* raw header / body */\n      fp = msg->fp;\n      if (pat->op != M_BODY)\n      {\n\tfseeko (fp, h->offset, 0);\n\tlng = h->content->offset - h->offset;\n      }\n      if (pat->op != M_HEADER)\n      {\n\tif (pat->op == M_BODY)\n\t  fseeko (fp, h->content->offset, 0);\n\tlng += h->content->length;\n      }\n    }\n\n    blen = STRING;\n    buf = safe_malloc (blen);\n\n    /* search the file \"fp\" */\n    while (lng > 0)\n    {\n      if (pat->op == M_HEADER)\n      {\n\tif (*(buf = mutt_read_rfc822_line (fp, buf, &blen)) == '\\0')\n\t  break;\n      }\n      else if (fgets (buf, blen - 1, fp) == NULL)\n\tbreak; /* don't loop forever */\n      if (patmatch (pat, buf) == 0)\n      {\n\tmatch = 1;\n\tbreak;\n      }\n      lng -= mutt_strlen (buf);\n    }\n\n    FREE (&buf);\n    \n    mx_close_message (&msg);\n\n    if (option (OPTTHOROUGHSRC))\n    {\n      safe_fclose (&fp);\n      unlink (tempfile);\n    }\n  }\n\n  return match;\n}\n\nstatic int eat_regexp (pattern_t *pat, BUFFER *s, BUFFER *err)\n{\n  BUFFER buf;\n  char errmsg[STRING];\n  int r;\n  char *pexpr;\n\n  mutt_buffer_init (&buf);\n  pexpr = s->dptr;\n  if (mutt_extract_token (&buf, s, M_TOKEN_PATTERN | M_TOKEN_COMMENT) != 0 ||\n      !buf.data)\n  {\n    snprintf (err->data, err->dsize, _(\"Error in expression: %s\"), pexpr);\n    return (-1);\n  }\n  if (!*buf.data)\n  {\n    snprintf (err->data, err->dsize, _(\"Empty expression\"));\n    return (-1);\n  }\n\n#if 0\n  /* If there are no RE metacharacters, use simple search anyway */\n  if (!pat->stringmatch && !strpbrk (buf.data, \"|[{.*+?^$\"))\n    pat->stringmatch = 1;\n#endif\n\n  if (pat->stringmatch)\n  {\n    pat->p.str = safe_strdup (buf.data);\n    pat->ign_case = mutt_which_case (buf.data) == REG_ICASE;\n    FREE (&buf.data);\n  }\n  else if (pat->groupmatch)\n  {\n    pat->p.g = mutt_pattern_group (buf.data);\n    FREE (&buf.data);\n  }\n  else\n  {\n    pat->p.rx = safe_malloc (sizeof (regex_t));\n    r = REGCOMP (pat->p.rx, buf.data, REG_NEWLINE | REG_NOSUB | mutt_which_case (buf.data));\n    if (r)\n    {\n      regerror (r, pat->p.rx, errmsg, sizeof (errmsg));\n      mutt_buffer_printf (err, \"'%s': %s\", buf.data, errmsg);\n      FREE (&buf.data);\n      FREE (&pat->p.rx);\n      return (-1);\n    }\n    FREE (&buf.data);\n  }\n\n  return 0;\n}\n\nint eat_range (pattern_t *pat, BUFFER *s, BUFFER *err)\n{\n  char *tmp;\n  int do_exclusive = 0;\n  int skip_quote = 0;\n  \n  /*\n   * If simple_search is set to \"~m %s\", the range will have double quotes \n   * around it...\n   */\n  if (*s->dptr == '\"')\n  {\n    s->dptr++;\n    skip_quote = 1;\n  }\n  if (*s->dptr == '<')\n    do_exclusive = 1;\n  if ((*s->dptr != '-') && (*s->dptr != '<'))\n  {\n    /* range minimum */\n    if (*s->dptr == '>')\n    {\n      pat->max = M_MAXRANGE;\n      pat->min = strtol (s->dptr + 1, &tmp, 0) + 1; /* exclusive range */\n    }\n    else\n      pat->min = strtol (s->dptr, &tmp, 0);\n    if (toupper ((unsigned char) *tmp) == 'K') /* is there a prefix? */\n    {\n      pat->min *= 1024;\n      tmp++;\n    }\n    else if (toupper ((unsigned char) *tmp) == 'M')\n    {\n      pat->min *= 1048576;\n      tmp++;\n    }\n    if (*s->dptr == '>')\n    {\n      s->dptr = tmp;\n      return 0;\n    }\n    if (*tmp != '-')\n    {\n      /* exact value */\n      pat->max = pat->min;\n      s->dptr = tmp;\n      return 0;\n    }\n    tmp++;\n  }\n  else\n  {\n    s->dptr++;\n    tmp = s->dptr;\n  }\n  \n  if (isdigit ((unsigned char) *tmp))\n  {\n    /* range maximum */\n    pat->max = strtol (tmp, &tmp, 0);\n    if (toupper ((unsigned char) *tmp) == 'K')\n    {\n      pat->max *= 1024;\n      tmp++;\n    }\n    else if (toupper ((unsigned char) *tmp) == 'M')\n    {\n      pat->max *= 1048576;\n      tmp++;\n    }\n    if (do_exclusive)\n      (pat->max)--;\n  }\n  else\n    pat->max = M_MAXRANGE;\n\n  if (skip_quote && *tmp == '\"')\n    tmp++;\n\n  SKIPWS (tmp);\n  s->dptr = tmp;\n  return 0;\n}\n\nstatic const char *getDate (const char *s, struct tm *t, BUFFER *err)\n{\n  char *p;\n  time_t now = time (NULL);\n  struct tm *tm = localtime (&now);\n\n  t->tm_mday = strtol (s, &p, 10);\n  if (t->tm_mday < 1 || t->tm_mday > 31)\n  {\n    snprintf (err->data, err->dsize, _(\"Invalid day of month: %s\"), s);\n    return NULL;\n  }\n  if (*p != '/')\n  {\n    /* fill in today's month and year */\n    t->tm_mon = tm->tm_mon;\n    t->tm_year = tm->tm_year;\n    return p;\n  }\n  p++;\n  t->tm_mon = strtol (p, &p, 10) - 1;\n  if (t->tm_mon < 0 || t->tm_mon > 11)\n  {\n    snprintf (err->data, err->dsize, _(\"Invalid month: %s\"), p);\n    return NULL;\n  }\n  if (*p != '/')\n  {\n    t->tm_year = tm->tm_year;\n    return p;\n  }\n  p++;\n  t->tm_year = strtol (p, &p, 10);\n  if (t->tm_year < 70) /* year 2000+ */\n    t->tm_year += 100;\n  else if (t->tm_year > 1900)\n    t->tm_year -= 1900;\n  return p;\n}\n\n/* Ny\tyears\n   Nm\tmonths\n   Nw\tweeks\n   Nd\tdays */\nstatic const char *get_offset (struct tm *tm, const char *s, int sign)\n{\n  char *ps;\n  int offset = strtol (s, &ps, 0);\n  if ((sign < 0 && offset > 0) || (sign > 0 && offset < 0))\n    offset = -offset;\n\n  switch (*ps)\n  {\n    case 'y':\n      tm->tm_year += offset;\n      break;\n    case 'm':\n      tm->tm_mon += offset;\n      break;\n    case 'w':\n      tm->tm_mday += 7 * offset;\n      break;\n    case 'd':\n      tm->tm_mday += offset;\n      break;\n    default:\n      return s;\n  }\n  mutt_normalize_time (tm);\n  return (ps + 1);\n}\n\nstatic void adjust_date_range (struct tm *min, struct tm *max)\n{\n  if (min->tm_year > max->tm_year\n      || (min->tm_year == max->tm_year && min->tm_mon > max->tm_mon)\n      || (min->tm_year == max->tm_year && min->tm_mon == max->tm_mon\n\t&& min->tm_mday > max->tm_mday))\n  {\n    int tmp;\n    \n    tmp = min->tm_year;\n    min->tm_year = max->tm_year;\n    max->tm_year = tmp;\n      \n    tmp = min->tm_mon;\n    min->tm_mon = max->tm_mon;\n    max->tm_mon = tmp;\n      \n    tmp = min->tm_mday;\n    min->tm_mday = max->tm_mday;\n    max->tm_mday = tmp;\n    \n    min->tm_hour = min->tm_min = min->tm_sec = 0;\n    max->tm_hour = 23;\n    max->tm_min = max->tm_sec = 59;\n  }\n}\n\nstatic const char * parse_date_range (const char* pc, struct tm *min,\n    struct tm *max, int haveMin, struct tm *baseMin, BUFFER *err)\n{\n  int flag = M_PDR_NONE;\t\n  while (*pc && ((flag & M_PDR_DONE) == 0))\n  {\n    const char *pt;\n    char ch = *pc++;\n    SKIPWS (pc);\n    switch (ch)\n    {\n      case '-':\n      {\n\t/* try a range of absolute date minus offset of Ndwmy */\n\tpt = get_offset (min, pc, -1);\n\tif (pc == pt)\n\t{\n\t  if (flag == M_PDR_NONE)\n\t  { /* nothing yet and no offset parsed => absolute date? */\n\t    if (!getDate (pc, max, err))\n\t      flag |= (M_PDR_ABSOLUTE | M_PDR_ERRORDONE);  /* done bad */\n\t    else\n\t    {\n\t      /* reestablish initial base minimum if not specified */\n\t      if (!haveMin)\n\t\tmemcpy (min, baseMin, sizeof(struct tm));\n\t      flag |= (M_PDR_ABSOLUTE | M_PDR_DONE);  /* done good */\n\t    }\n\t  }\n\t  else\n\t    flag |= M_PDR_ERRORDONE;\n\t}\n\telse\n\t{\n\t  pc = pt;\n\t  if (flag == M_PDR_NONE && !haveMin)\n\t  { /* the very first \"-3d\" without a previous absolute date */\n\t    max->tm_year = min->tm_year;\n\t    max->tm_mon = min->tm_mon;\n\t    max->tm_mday = min->tm_mday;\n\t  }\n\t  flag |= M_PDR_MINUS;\n\t}\n      }\n      break;\n      case '+':\n      { /* enlarge plusRange */\n\tpt = get_offset (max, pc, 1);\n\tif (pc == pt)\n\t  flag |= M_PDR_ERRORDONE;\n\telse\n\t{\n\t  pc = pt;\n\t  flag |= M_PDR_PLUS;\n\t}\n      }\n      break;\n      case '*':\n      { /* enlarge window in both directions */\n\tpt = get_offset (min, pc, -1);\n\tif (pc == pt)\n\t  flag |= M_PDR_ERRORDONE;\n\telse\n\t{\n\t  pc = get_offset (max, pc, 1);\n\t  flag |= M_PDR_WINDOW;\n\t}\n      }\n      break;\n      default:\n\tflag |= M_PDR_ERRORDONE;\n    }\n    SKIPWS (pc);\n  }\n  if ((flag & M_PDR_ERROR) && !(flag & M_PDR_ABSOLUTE))\n  { /* getDate has its own error message, don't overwrite it here */\n    snprintf (err->data, err->dsize, _(\"Invalid relative date: %s\"), pc-1);\n  }\n  return ((flag & M_PDR_ERROR) ? NULL : pc);\n}\n\nstatic int eat_date (pattern_t *pat, BUFFER *s, BUFFER *err)\n{\n  BUFFER buffer;\n  struct tm min, max;\n  char *pexpr;\n\n  mutt_buffer_init (&buffer);\n  pexpr = s->dptr;\n  if (mutt_extract_token (&buffer, s, M_TOKEN_COMMENT | M_TOKEN_PATTERN) != 0\n      || !buffer.data)\n  {\n    snprintf (err->data, err->dsize, _(\"Error in expression: %s\"), pexpr);\n    return (-1);\n  }\n  if (!*buffer.data)\n  {\n    snprintf (err->data, err->dsize, _(\"Empty expression\"));\n    return (-1);\n  }\n\n  memset (&min, 0, sizeof (min));\n  /* the `0' time is Jan 1, 1970 UTC, so in order to prevent a negative time\n     when doing timezone conversion, we use Jan 2, 1970 UTC as the base\n     here */\n  min.tm_mday = 2;\n  min.tm_year = 70;\n\n  memset (&max, 0, sizeof (max));\n\n  /* Arbitrary year in the future.  Don't set this too high\n     or mutt_mktime() returns something larger than will\n     fit in a time_t on some systems */\n  max.tm_year = 130;\n  max.tm_mon = 11;\n  max.tm_mday = 31;\n  max.tm_hour = 23;\n  max.tm_min = 59;\n  max.tm_sec = 59;\n\n  if (strchr (\"<>=\", buffer.data[0]))\n  {\n    /* offset from current time\n       <3d\tless than three days ago\n       >3d\tmore than three days ago\n       =3d\texactly three days ago */\n    time_t now = time (NULL);\n    struct tm *tm = localtime (&now);\n    int exact = 0;\n\n    if (buffer.data[0] == '<')\n    {\n      memcpy (&min, tm, sizeof (min));\n      tm = &min;\n    }\n    else\n    {\n      memcpy (&max, tm, sizeof (max));\n      tm = &max;\n\n      if (buffer.data[0] == '=')\n\texact++;\n    }\n    tm->tm_hour = 23;\n    tm->tm_min = tm->tm_sec = 59;\n\n    /* force negative offset */\n    get_offset (tm, buffer.data + 1, -1);\n\n    if (exact)\n    {\n      /* start at the beginning of the day in question */\n      memcpy (&min, &max, sizeof (max));\n      min.tm_hour = min.tm_sec = min.tm_min = 0;\n    }\n  }\n  else\n  {\n    const char *pc = buffer.data;\n\n    int haveMin = FALSE;\n    int untilNow = FALSE;\n    if (isdigit ((unsigned char)*pc))\n    {\n      /* minimum date specified */\n      if ((pc = getDate (pc, &min, err)) == NULL)\n      {\n\tFREE (&buffer.data);\n\treturn (-1);\n      }\n      haveMin = TRUE;\n      SKIPWS (pc);\n      if (*pc == '-')\n      {\n        const char *pt = pc + 1;\n\tSKIPWS (pt);\n\tuntilNow = (*pt == '\\0');\n      }\n    }\n\n    if (!untilNow)\n    { /* max date or relative range/window */\n\n      struct tm baseMin;\n\n      if (!haveMin)\n      { /* save base minimum and set current date, e.g. for \"-3d+1d\" */\n\ttime_t now = time (NULL);\n\tstruct tm *tm = localtime (&now);\n\tmemcpy (&baseMin, &min, sizeof(baseMin));\n\tmemcpy (&min, tm, sizeof (min));\n\tmin.tm_hour = min.tm_sec = min.tm_min = 0;\n      }\n      \n      /* preset max date for relative offsets,\n\t if nothing follows we search for messages on a specific day */\n      max.tm_year = min.tm_year;\n      max.tm_mon = min.tm_mon;\n      max.tm_mday = min.tm_mday;\n\n      if (!parse_date_range (pc, &min, &max, haveMin, &baseMin, err))\n      { /* bail out on any parsing error */\n\tFREE (&buffer.data);\n\treturn (-1);\n      }\n    }\n  }\n\n  /* Since we allow two dates to be specified we'll have to adjust that. */\n  adjust_date_range (&min, &max);\n\n  pat->min = mutt_mktime (&min, 1);\n  pat->max = mutt_mktime (&max, 1);\n\n  FREE (&buffer.data);\n\n  return 0;\n}\n\nstatic int patmatch (const pattern_t* pat, const char* buf)\n{\n  if (pat->stringmatch)\n    return pat->ign_case ? !strcasestr (buf, pat->p.str) :\n\t\t\t   !strstr (buf, pat->p.str);\n  else if (pat->groupmatch)\n    return !mutt_group_match (pat->p.g, buf);\n  else\n    return regexec (pat->p.rx, buf, 0, NULL, 0);\n}\n\nstatic const struct pattern_flags *lookup_tag (char tag)\n{\n  int i;\n\n  for (i = 0; Flags[i].tag; i++)\n    if (Flags[i].tag == tag)\n      return (&Flags[i]);\n  return NULL;\n}\n\nstatic /* const */ char *find_matching_paren (/* const */ char *s)\n{\n  int level = 1;\n\n  for (; *s; s++)\n  {\n    if (*s == '(')\n      level++;\n    else if (*s == ')')\n    {\n      level--;\n      if (!level)\n\tbreak;\n    }\n  }\n  return s;\n}\n\nvoid mutt_pattern_free (pattern_t **pat)\n{\n  pattern_t *tmp;\n\n  while (*pat)\n  {\n    tmp = *pat;\n    *pat = (*pat)->next;\n\n    if (tmp->stringmatch)\n      FREE (&tmp->p.str);\n    else if (tmp->groupmatch)\n      tmp->p.g = NULL;\n    else if (tmp->p.rx)\n    {\n      regfree (tmp->p.rx);\n      FREE (&tmp->p.rx);\n    }\n\n    if (tmp->child)\n      mutt_pattern_free (&tmp->child);\n    FREE (&tmp);\n  }\n}\n\npattern_t *mutt_pattern_comp (/* const */ char *s, int flags, BUFFER *err)\n{\n  pattern_t *curlist = NULL;\n  pattern_t *tmp, *tmp2;\n  pattern_t *last = NULL;\n  int not = 0;\n  int alladdr = 0;\n  int or = 0;\n  int implicit = 1;\t/* used to detect logical AND operator */\n  const struct pattern_flags *entry;\n  char *p;\n  char *buf;\n  BUFFER ps;\n\n  mutt_buffer_init (&ps);\n  ps.dptr = s;\n  ps.dsize = mutt_strlen (s);\n\n  while (*ps.dptr)\n  {\n    SKIPWS (ps.dptr);\n    switch (*ps.dptr)\n    {\n      case '^':\n\tps.dptr++;\n\talladdr = !alladdr;\n\tbreak;\n      case '!':\n\tps.dptr++;\n\tnot = !not;\n\tbreak;\n      case '|':\n\tif (!or)\n\t{\n\t  if (!curlist)\n\t  {\n\t    snprintf (err->data, err->dsize, _(\"error in pattern at: %s\"), ps.dptr);\n\t    return NULL;\n\t  }\n\t  if (curlist->next)\n\t  {\n\t    /* A & B | C == (A & B) | C */\n\t    tmp = new_pattern ();\n\t    tmp->op = M_AND;\n\t    tmp->child = curlist;\n\n\t    curlist = tmp;\n\t    last = curlist;\n\t  }\n\n\t  or = 1;\n\t}\n\tps.dptr++;\n\timplicit = 0;\n\tnot = 0;\n\talladdr = 0;\n\tbreak;\n      case '%':\n      case '=':\n      case '~':\n\tif (!*(ps.dptr + 1))\n\t{\n\t  snprintf (err->data, err->dsize, _(\"missing pattern: %s\"), ps.dptr);\n\t  mutt_pattern_free (&curlist);\n\t  return NULL;\n\t}\n\tif (*(ps.dptr + 1) == '(')\n        {\n\t  ps.dptr ++; /* skip ~ */\n\t  p = find_matching_paren (ps.dptr + 1);\n\t  if (*p != ')')\n\t  {\n\t    snprintf (err->data, err->dsize, _(\"mismatched brackets: %s\"), ps.dptr);\n\t    mutt_pattern_free (&curlist);\n\t    return NULL;\n\t  }\n\t  tmp = new_pattern ();\n\t  tmp->op = M_THREAD;\n\t  if (last)\n\t    last->next = tmp;\n\t  else\n\t    curlist = tmp;\n\t  last = tmp;\n\t  tmp->not ^= not;\n\t  tmp->alladdr |= alladdr;\n\t  not = 0;\n\t  alladdr = 0;\n\t  /* compile the sub-expression */\n\t  buf = mutt_substrdup (ps.dptr + 1, p);\n\t  if ((tmp2 = mutt_pattern_comp (buf, flags, err)) == NULL)\n\t  {\n\t    FREE (&buf);\n\t    mutt_pattern_free (&curlist);\n\t    return NULL;\n\t  }\n\t  FREE (&buf);\n\t  tmp->child = tmp2;\n\t  ps.dptr = p + 1; /* restore location */\n\t  break;\n\t}\n        if (implicit && or)\n\t{\n\t  /* A | B & C == (A | B) & C */\n\t  tmp = new_pattern ();\n\t  tmp->op = M_OR;\n\t  tmp->child = curlist;\n\t  curlist = tmp;\n\t  last = tmp;\n\t  or = 0;\n\t}\n\n\ttmp = new_pattern ();\n\ttmp->not = not;\n\ttmp->alladdr = alladdr;\n        tmp->stringmatch = (*ps.dptr == '=') ? 1 : 0;\n        tmp->groupmatch  = (*ps.dptr == '%') ? 1 : 0;\n\tnot = 0;\n\talladdr = 0;\n\n\tif (last)\n\t  last->next = tmp;\n\telse\n\t  curlist = tmp;\n\tlast = tmp;\n\n\tps.dptr++; /* move past the ~ */\n\tif ((entry = lookup_tag (*ps.dptr)) == NULL)\n\t{\n\t  snprintf (err->data, err->dsize, _(\"%c: invalid pattern modifier\"), *ps.dptr);\n\t  mutt_pattern_free (&curlist);\n\t  return NULL;\n\t}\n\tif (entry->class && (flags & entry->class) == 0)\n\t{\n\t  snprintf (err->data, err->dsize, _(\"%c: not supported in this mode\"), *ps.dptr);\n\t  mutt_pattern_free (&curlist);\n\t  return NULL;\n\t}\n\ttmp->op = entry->op;\n\n\tps.dptr++; /* eat the operator and any optional whitespace */\n\tSKIPWS (ps.dptr);\n\n\tif (entry->eat_arg)\n\t{\n\t  if (!*ps.dptr)\n\t  {\n\t    snprintf (err->data, err->dsize, _(\"missing parameter\"));\n\t    mutt_pattern_free (&curlist);\n\t    return NULL;\n\t  }\n\t  if (entry->eat_arg (tmp, &ps, err) == -1)\n\t  {\n\t    mutt_pattern_free (&curlist);\n\t    return NULL;\n\t  }\n\t}\n\timplicit = 1;\n\tbreak;\n      case '(':\n\tp = find_matching_paren (ps.dptr + 1);\n\tif (*p != ')')\n\t{\n\t  snprintf (err->data, err->dsize, _(\"mismatched parenthesis: %s\"), ps.dptr);\n\t  mutt_pattern_free (&curlist);\n\t  return NULL;\n\t}\n\t/* compile the sub-expression */\n\tbuf = mutt_substrdup (ps.dptr + 1, p);\n\tif ((tmp = mutt_pattern_comp (buf, flags, err)) == NULL)\n\t{\n\t  FREE (&buf);\n\t  mutt_pattern_free (&curlist);\n\t  return NULL;\n\t}\n\tFREE (&buf);\n\tif (last)\n\t  last->next = tmp;\n\telse\n\t  curlist = tmp;\n\tlast = tmp;\n\ttmp->not ^= not;\n\ttmp->alladdr |= alladdr;\n\tnot = 0;\n\talladdr = 0;\n\tps.dptr = p + 1; /* restore location */\n\tbreak;\n      default:\n\tsnprintf (err->data, err->dsize, _(\"error in pattern at: %s\"), ps.dptr);\n\tmutt_pattern_free (&curlist);\n\treturn NULL;\n    }\n  }\n  if (!curlist)\n  {\n    strfcpy (err->data, _(\"empty pattern\"), err->dsize);\n    return NULL;\n  }\n  if (curlist->next)\n  {\n    tmp = new_pattern ();\n    tmp->op = or ? M_OR : M_AND;\n    tmp->child = curlist;\n    curlist = tmp;\n  }\n  return (curlist);\n}\n\nstatic int\nperform_and (pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, HEADER *hdr)\n{\n  for (; pat; pat = pat->next)\n    if (mutt_pattern_exec (pat, flags, ctx, hdr) <= 0)\n      return 0;\n  return 1;\n}\n\nstatic int\nperform_or (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, HEADER *hdr)\n{\n  for (; pat; pat = pat->next)\n    if (mutt_pattern_exec (pat, flags, ctx, hdr) > 0)\n      return 1;\n  return 0;\n}\n\nstatic int match_adrlist (pattern_t *pat, int match_personal, int n, ...)\n{\n  va_list ap;\n  ADDRESS *a;\n\n  va_start (ap, n);\n  for ( ; n ; n --)\n  {\n    for (a = va_arg (ap, ADDRESS *) ; a ; a = a->next)\n    {\n      if (pat->alladdr ^ ((a->mailbox && patmatch (pat, a->mailbox) == 0) ||\n\t   (match_personal && a->personal && patmatch (pat, a->personal) == 0)))\n      {\n\tva_end (ap);\n\treturn (! pat->alladdr); /* Found match, or non-match if alladdr */\n      }\n    }\n  }\n  va_end (ap);\n  return pat->alladdr; /* No matches, or all matches if alladdr */\n}\n\nstatic int match_reference (pattern_t *pat, LIST *refs)\n{\n  for (; refs; refs = refs->next)\n    if (patmatch (pat, refs->data) == 0)\n      return 1;\n  return 0;\n}\n\n/*\n * Matches subscribed mailing lists\n */\nint mutt_is_list_recipient (int alladdr, ADDRESS *a1, ADDRESS *a2)\n{\n  for (; a1 ; a1 = a1->next)\n    if (alladdr ^ mutt_is_subscribed_list (a1))\n      return (! alladdr);\n  for (; a2 ; a2 = a2->next)\n    if (alladdr ^ mutt_is_subscribed_list (a2))\n      return (! alladdr);\n  return alladdr;\n}\n\n/*\n * Matches known mailing lists\n * The function name may seem a little bit misleading: It checks all\n * recipients in To and Cc for known mailing lists, subscribed or not.\n */\nint mutt_is_list_cc (int alladdr, ADDRESS *a1, ADDRESS *a2)\n{\n  for (; a1 ; a1 = a1->next)\n    if (alladdr ^ mutt_is_mail_list (a1))\n      return (! alladdr);\n  for (; a2 ; a2 = a2->next)\n    if (alladdr ^ mutt_is_mail_list (a2))\n      return (! alladdr);\n  return alladdr;\n}\n\nstatic int match_user (int alladdr, ADDRESS *a1, ADDRESS *a2)\n{\n  for (; a1 ; a1 = a1->next)\n    if (alladdr ^ mutt_addr_is_user (a1))\n      return (! alladdr);\n  for (; a2 ; a2 = a2->next)\n    if (alladdr ^ mutt_addr_is_user (a2))\n      return (! alladdr);\n  return alladdr;\n}\n\nstatic int match_threadcomplete(struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, THREAD *t,int left,int up,int right,int down)\n{\n  int a;\n  HEADER *h;\n\n  if(!t)\n    return 0;\n  h = t->message;\n  if(h)\n    if(mutt_pattern_exec(pat, flags, ctx, h))\n      return 1;\n\n  if(up && (a=match_threadcomplete(pat, flags, ctx, t->parent,1,1,1,0)))\n    return a;\n  if(right && t->parent && (a=match_threadcomplete(pat, flags, ctx, t->next,0,0,1,1)))\n    return a;\n  if(left && t->parent && (a=match_threadcomplete(pat, flags, ctx, t->prev,1,0,0,1)))\n    return a;\n  if(down && (a=match_threadcomplete(pat, flags, ctx, t->child,1,0,1,1)))\n    return a;\n  return 0;\n}\n\n/* flags\n   \tM_MATCH_FULL_ADDRESS\tmatch both personal and machine address */\nint\nmutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, HEADER *h)\n{\n  switch (pat->op)\n  {\n    case M_AND:\n      return (pat->not ^ (perform_and (pat->child, flags, ctx, h) > 0));\n    case M_OR:\n      return (pat->not ^ (perform_or (pat->child, flags, ctx, h) > 0));\n    case M_THREAD:\n      return (pat->not ^ match_threadcomplete(pat->child, flags, ctx, h->thread, 1, 1, 1, 1));\n    case M_ALL:\n      return (!pat->not);\n    case M_EXPIRED:\n      return (pat->not ^ h->expired);\n    case M_SUPERSEDED:\n      return (pat->not ^ h->superseded);\n    case M_FLAG:\n      return (pat->not ^ h->flagged);\n    case M_TAG:\n      return (pat->not ^ h->tagged);\n    case M_NEW:\n      return (pat->not ? h->old || h->read : !(h->old || h->read));\n    case M_UNREAD:\n      return (pat->not ? h->read : !h->read);\n    case M_REPLIED:\n      return (pat->not ^ h->replied);\n    case M_OLD:\n      return (pat->not ? (!h->old || h->read) : (h->old && !h->read));\n    case M_READ:\n      return (pat->not ^ h->read);\n    case M_DELETED:\n      return (pat->not ^ h->deleted);\n    case M_MESSAGE:\n      return (pat->not ^ (h->msgno >= pat->min - 1 && (pat->max == M_MAXRANGE ||\n\t\t\t\t\t\t   h->msgno <= pat->max - 1)));\n    case M_DATE:\n      return (pat->not ^ (h->date_sent >= pat->min && h->date_sent <= pat->max));\n    case M_DATE_RECEIVED:\n      return (pat->not ^ (h->received >= pat->min && h->received <= pat->max));\n    case M_BODY:\n    case M_HEADER:\n    case M_WHOLE_MSG:\n      /*\n       * ctx can be NULL in certain cases, such as when replying to a message from the attachment menu and\n       * the user has a reply-hook using \"~h\" (bug #2190).\n       */\n      if (!ctx)\n\t      return 0;\n#ifdef USE_IMAP\n      /* IMAP search sets h->matched at search compile time */\n      if (ctx->magic == M_IMAP && pat->stringmatch)\n\treturn (h->matched);\n#endif\n      return (pat->not ^ msg_search (ctx, pat, h->msgno));\n    case M_SENDER:\n      return (pat->not ^ match_adrlist (pat, flags & M_MATCH_FULL_ADDRESS, 1,\n                                        h->env->sender));\n    case M_FROM:\n      return (pat->not ^ match_adrlist (pat, flags & M_MATCH_FULL_ADDRESS, 1,\n                                        h->env->from));\n    case M_TO:\n      return (pat->not ^ match_adrlist (pat, flags & M_MATCH_FULL_ADDRESS, 1,\n                                        h->env->to));\n    case M_CC:\n      return (pat->not ^ match_adrlist (pat, flags & M_MATCH_FULL_ADDRESS, 1,\n                                        h->env->cc));\n    case M_SUBJECT:\n      return (pat->not ^ (h->env->subject && patmatch (pat, h->env->subject) == 0));\n    case M_ID:\n      return (pat->not ^ (h->env->message_id && patmatch (pat, h->env->message_id) == 0));\n    case M_SCORE:\n      return (pat->not ^ (h->score >= pat->min && (pat->max == M_MAXRANGE ||\n\t\t\t\t\t\t   h->score <= pat->max)));\n    case M_SIZE:\n      return (pat->not ^ (h->content->length >= pat->min && (pat->max == M_MAXRANGE || h->content->length <= pat->max)));\n    case M_REFERENCE:\n      return (pat->not ^ (match_reference (pat, h->env->references) ||\n\t\t\t  match_reference (pat, h->env->in_reply_to)));\n    case M_ADDRESS:\n      return (pat->not ^ match_adrlist (pat, flags & M_MATCH_FULL_ADDRESS, 4,\n                                        h->env->from, h->env->sender,\n                                        h->env->to, h->env->cc));\n    case M_RECIPIENT:\n           return (pat->not ^ match_adrlist (pat, flags & M_MATCH_FULL_ADDRESS,\n                                             2, h->env->to, h->env->cc));\n    case M_LIST:\t/* known list, subscribed or not */\n      return (pat->not ^ mutt_is_list_cc (pat->alladdr, h->env->to, h->env->cc));\n    case M_SUBSCRIBED_LIST:\n      return (pat->not ^ mutt_is_list_recipient (pat->alladdr, h->env->to, h->env->cc));\n    case M_PERSONAL_RECIP:\n      return (pat->not ^ match_user (pat->alladdr, h->env->to, h->env->cc));\n    case M_PERSONAL_FROM:\n      return (pat->not ^ match_user (pat->alladdr, h->env->from, NULL));\n    case M_COLLAPSED:\n      return (pat->not ^ (h->collapsed && h->num_hidden > 1));\n   case M_CRYPT_SIGN:\n     if (!WithCrypto)\n       break;\n     return (pat->not ^ ((h->security & SIGN) ? 1 : 0));\n   case M_CRYPT_VERIFIED:\n     if (!WithCrypto)\n       break;\n     return (pat->not ^ ((h->security & GOODSIGN) ? 1 : 0));\n   case M_CRYPT_ENCRYPT:\n     if (!WithCrypto)\n       break;\n     return (pat->not ^ ((h->security & ENCRYPT) ? 1 : 0));\n   case M_PGP_KEY:\n     if (!(WithCrypto & APPLICATION_PGP))\n       break;\n     return (pat->not ^ ((h->security & APPLICATION_PGP) && (h->security & PGPKEY)));\n    case M_XLABEL:\n      return (pat->not ^ (h->env->x_label && patmatch (pat, h->env->x_label) == 0));\n#ifdef USE_NOTMUCH\n    case M_NOTMUCH_LABEL:\n      {\n      char *tags = nm_header_get_tags(h);\n      return (pat->not ^ (tags && patmatch (pat, tags) == 0));\n      }\n#endif\n    case M_HORMEL:\n      return (pat->not ^ (h->env->spam && h->env->spam->data && patmatch (pat, h->env->spam->data) == 0));\n    case M_DUPLICATED:\n      return (pat->not ^ (h->thread && h->thread->duplicate_thread));\n    case M_MIMEATTACH:\n      {\n      int count = mutt_count_body_parts (ctx, h);\n      return (pat->not ^ (count >= pat->min && (pat->max == M_MAXRANGE ||\n                                                count <= pat->max)));\n      }\n    case M_UNREFERENCED:\n      return (pat->not ^ (h->thread && !h->thread->child));\n  }\n  mutt_error (_(\"error: unknown op %d (report this error).\"), pat->op);\n  return (-1);\n}\n\nstatic void quote_simple(char *tmp, size_t len, const char *p)\n{\n  int i = 0;\n  \n  tmp[i++] = '\"';\n  while (*p && i < len - 3)\n  {\n    if (*p == '\\\\' || *p == '\"')\n      tmp[i++] = '\\\\';\n    tmp[i++] = *p++;\n  }\n  tmp[i++] = '\"';\n  tmp[i] = 0;\n}\n  \n/* convert a simple search into a real request */\nvoid mutt_check_simple (char *s, size_t len, const char *simple)\n{\n  char tmp[LONG_STRING];\n  int do_simple = 1;\n  char *p;\n\n  for (p = s; p && *p; p++)\n  {\n    if (*p == '\\\\' && *(p + 1))\n      p++;\n    else if (*p == '~' || *p == '=' || *p == '%')\n    {\n      do_simple = 0;\n      break;\n    }\n  }\n\n  /* XXX - is ascii_strcasecmp() right here, or should we use locale's\n   * equivalences?\n   */\n\n  if (do_simple) /* yup, so spoof a real request */\n  {\n    /* convert old tokens into the new format */\n    if (ascii_strcasecmp (\"all\", s) == 0 ||\n\t!mutt_strcmp (\"^\", s) || !mutt_strcmp (\".\", s)) /* ~A is more efficient */\n      strfcpy (s, \"~A\", len);\n    else if (ascii_strcasecmp (\"del\", s) == 0)\n      strfcpy (s, \"~D\", len);\n    else if (ascii_strcasecmp (\"flag\", s) == 0)\n      strfcpy (s, \"~F\", len);\n    else if (ascii_strcasecmp (\"new\", s) == 0)\n      strfcpy (s, \"~N\", len);\n    else if (ascii_strcasecmp (\"old\", s) == 0)\n      strfcpy (s, \"~O\", len);\n    else if (ascii_strcasecmp (\"repl\", s) == 0)\n      strfcpy (s, \"~Q\", len);\n    else if (ascii_strcasecmp (\"read\", s) == 0)\n      strfcpy (s, \"~R\", len);\n    else if (ascii_strcasecmp (\"tag\", s) == 0)\n      strfcpy (s, \"~T\", len);\n    else if (ascii_strcasecmp (\"unread\", s) == 0)\n      strfcpy (s, \"~U\", len);\n    else\n    {\n      quote_simple (tmp, sizeof(tmp), s);\n      mutt_expand_fmt (s, len, simple, tmp);\n    }\n  }\n}\n\nint mutt_pattern_func (int op, char *prompt)\n{\n  pattern_t *pat;\n  char buf[LONG_STRING] = \"\", *simple;\n  BUFFER err;\n  int i;\n  progress_t progress;\n\n  strfcpy (buf, NONULL (Context->pattern), sizeof (buf));\n  if (mutt_get_field (prompt, buf, sizeof (buf), M_PATTERN | M_CLEAR) != 0 || !buf[0])\n    return (-1);\n\n  mutt_message _(\"Compiling search pattern...\");\n  \n  simple = safe_strdup (buf);\n  mutt_check_simple (buf, sizeof (buf), NONULL (SimpleSearch));\n\n  mutt_buffer_init (&err);\n  err.dsize = STRING;\n  err.data = safe_malloc(err.dsize);\n  if ((pat = mutt_pattern_comp (buf, M_FULL_MSG, &err)) == NULL)\n  {\n    FREE (&simple);\n    mutt_error (\"%s\", err.data);\n    FREE (&err.data);\n    return (-1);\n  }\n\n#ifdef USE_IMAP\n  if (Context->magic == M_IMAP && imap_search (Context, pat) < 0)\n    return -1;\n#endif\n\n  mutt_progress_init (&progress, _(\"Executing command on matching messages...\"),\n\t\t      M_PROGRESS_MSG, ReadInc,\n\t\t      (op == M_LIMIT) ? Context->msgcount : Context->vcount);\n\n#define THIS_BODY Context->hdrs[i]->content\n\n  if (op == M_LIMIT)\n  {\n    Context->vcount    = 0;\n    Context->vsize     = 0;\n    Context->collapsed = 0;\n\n    for (i = 0; i < Context->msgcount; i++)\n    {\n      mutt_progress_update (&progress, i, -1);\n      /* new limit pattern implicitly uncollapses all threads */\n      Context->hdrs[i]->virtual = -1;\n      Context->hdrs[i]->limited = 0;\n      Context->hdrs[i]->collapsed = 0;\n      Context->hdrs[i]->num_hidden = 0;\n      if (mutt_pattern_exec (pat, M_MATCH_FULL_ADDRESS, Context, Context->hdrs[i]))\n      {\n\tContext->hdrs[i]->virtual = Context->vcount;\n\tContext->hdrs[i]->limited = 1;\n\tContext->v2r[Context->vcount] = i;\n\tContext->vcount++;\n\tContext->vsize+=THIS_BODY->length + THIS_BODY->offset -\n\t  THIS_BODY->hdr_offset;\n      }\n    }\n  }\n  else\n  {\n    for (i = 0; i < Context->vcount; i++)\n    {\n      mutt_progress_update (&progress, i, -1);\n      if (mutt_pattern_exec (pat, M_MATCH_FULL_ADDRESS, Context, Context->hdrs[Context->v2r[i]]))\n      {\n\tswitch (op)\n\t{\n\t  case M_DELETE:\n\t  case M_UNDELETE:\n\t    mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_DELETE, \n\t\t\t  (op == M_DELETE));\n\t    break;\n\t  case M_TAG:\n\t  case M_UNTAG:\n\t    mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_TAG, \n\t\t\t   (op == M_TAG));\n\t    break;\n\t}\n      }\n    }\n  }\n\n#undef THIS_BODY\n\n  mutt_clear_error ();\n\n  if (op == M_LIMIT)\n  {\n    /* drop previous limit pattern */\n    FREE (&Context->pattern);\n    if (Context->limit_pattern)\n      mutt_pattern_free (&Context->limit_pattern);\n\n    if (Context->msgcount && !Context->vcount)\n      mutt_error _(\"No messages matched criteria.\");\n\n    /* record new limit pattern, unless match all */\n    if (mutt_strcmp (buf, \"~A\") != 0)\n    {\n      Context->pattern = simple;\n      simple = NULL; /* don't clobber it */\n      Context->limit_pattern = mutt_pattern_comp (buf, M_FULL_MSG, &err);\n    }\n  }\n  FREE (&simple);\n  mutt_pattern_free (&pat);\n  FREE (&err.data);\n\n  return 0;\n}\n\nint mutt_search_command (int cur, int op)\n{\n  int i, j;\n  char buf[STRING];\n  char temp[LONG_STRING];\n  int incr;\n  HEADER *h;\n  progress_t progress;\n  const char* msg = NULL;\n\n  if (!*LastSearch || (op != OP_SEARCH_NEXT && op != OP_SEARCH_OPPOSITE))\n  {\n    strfcpy (buf, *LastSearch ? LastSearch : \"\", sizeof (buf));\n    if (mutt_get_field ((op == OP_SEARCH || op == OP_SEARCH_NEXT) ?\n\t\t\t_(\"Search for: \") : _(\"Reverse search for: \"),\n\t\t\tbuf, sizeof (buf),\n\t\t      M_CLEAR | M_PATTERN) != 0 || !buf[0])\n      return (-1);\n\n    if (op == OP_SEARCH || op == OP_SEARCH_NEXT)\n      unset_option (OPTSEARCHREVERSE);\n    else\n      set_option (OPTSEARCHREVERSE);\n\n    /* compare the *expanded* version of the search pattern in case \n       $simple_search has changed while we were searching */\n    strfcpy (temp, buf, sizeof (temp));\n    mutt_check_simple (temp, sizeof (temp), NONULL (SimpleSearch));\n\n    if (!SearchPattern || mutt_strcmp (temp, LastSearchExpn))\n    {\n      BUFFER err;\n      mutt_buffer_init (&err);\n      set_option (OPTSEARCHINVALID);\n      strfcpy (LastSearch, buf, sizeof (LastSearch));\n      mutt_message _(\"Compiling search pattern...\");\n      mutt_pattern_free (&SearchPattern);\n      err.dsize = STRING;\n      err.data = safe_malloc (err.dsize);\n      if ((SearchPattern = mutt_pattern_comp (temp, M_FULL_MSG, &err)) == NULL)\n      {\n\tmutt_error (\"%s\", err.data);\n\tFREE (&err.data);\n\tLastSearch[0] = '\\0';\n\treturn (-1);\n      }\n      mutt_clear_error ();\n    }\n  }\n\n  if (option (OPTSEARCHINVALID))\n  {\n    for (i = 0; i < Context->msgcount; i++)\n      Context->hdrs[i]->searched = 0;\n#ifdef USE_IMAP\n    if (Context->magic == M_IMAP && imap_search (Context, SearchPattern) < 0)\n      return -1;\n#endif\n    unset_option (OPTSEARCHINVALID);\n  }\n\n  incr = (option (OPTSEARCHREVERSE)) ? -1 : 1;\n  if (op == OP_SEARCH_OPPOSITE)\n    incr = -incr;\n\n  mutt_progress_init (&progress, _(\"Searching...\"), M_PROGRESS_MSG,\n\t\t      ReadInc, Context->vcount);\n\n  for (i = cur + incr, j = 0 ; j != Context->vcount; j++)\n  {\n    mutt_progress_update (&progress, j, -1);\n    if (i > Context->vcount - 1)\n    {\n      i = 0;\n      if (option (OPTWRAPSEARCH))\n        msg = _(\"Search wrapped to top.\");\n      else \n      {\n        mutt_message _(\"Search hit bottom without finding match\");\n\treturn (-1);\n      }\n    }\n    else if (i < 0)\n    {\n      i = Context->vcount - 1;\n      if (option (OPTWRAPSEARCH))\n        msg = _(\"Search wrapped to bottom.\");\n      else \n      {\n        mutt_message _(\"Search hit top without finding match\");\n\treturn (-1);\n      }\n    }\n\n    h = Context->hdrs[Context->v2r[i]];\n    if (h->searched)\n    {\n      /* if we've already evaluated this message, use the cached value */\n      if (h->matched)\n      {\n\tmutt_clear_error();\n\tif (msg && *msg)\n\t  mutt_message (msg);\n\treturn i;\n      }\n    }\n    else\n    {\n      /* remember that we've already searched this message */\n      h->searched = 1;\n      if ((h->matched = (mutt_pattern_exec (SearchPattern, M_MATCH_FULL_ADDRESS, Context, h) > 0)))\n      {\n\tmutt_clear_error();\n\tif (msg && *msg)\n\t  mutt_message (msg);\n\treturn i;\n      }\n    }\n\n    if (SigInt)\n    {\n      mutt_error _(\"Search interrupted.\");\n      SigInt = 0;\n      return (-1);\n    }\n\n    i += incr;\n  }\n\n  mutt_error _(\"Not found.\");\n  return (-1);\n}\n"
  },
  {
    "path": "pgp.c",
    "content": "/*\n * Copyright (C) 1996-1997,2000,2010 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1998-2005 Thomas Roessler <roessler@does-not-exist.org>\n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/*\n * This file contains all of the PGP routines necessary to sign, encrypt,\n * verify and decrypt PGP messages in either the new PGP/MIME format, or\n * in the older Application/Pgp format.  It also contains some code to\n * cache the user's passphrase for repeat use when decrypting or signing\n * a message.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_curses.h\"\n#include \"pgp.h\"\n#include \"mime.h\"\n#include \"copy.h\"\n\n#include <sys/wait.h>\n#include <string.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/stat.h>\n#include <errno.h>\n#include <ctype.h>\n\n#ifdef HAVE_LOCALE_H\n#include <locale.h>\n#endif\n\n#ifdef HAVE_SYS_TIME_H\n# include <sys/time.h>\n#endif\n\n#ifdef HAVE_SYS_RESOURCE_H\n# include <sys/resource.h>\n#endif\n\n#ifdef CRYPT_BACKEND_CLASSIC_PGP\n\n#include \"mutt_crypt.h\"\n#include \"mutt_menu.h\"\n\n\nchar PgpPass[LONG_STRING];\ntime_t PgpExptime = 0; /* when does the cached passphrase expire? */\n\nvoid pgp_void_passphrase (void)\n{\n  memset (PgpPass, 0, sizeof (PgpPass));\n  PgpExptime = 0;\n}\n\nint pgp_valid_passphrase (void)\n{\n  time_t now = time (NULL);\n\n  if (pgp_use_gpg_agent())\n    {\n      *PgpPass = 0;\n      return 1; /* handled by gpg-agent */\n    }\n\n  if (now < PgpExptime)\n    /* Use cached copy.  */\n    return 1;\n  \n  pgp_void_passphrase ();\n\n  if (mutt_get_password (_(\"Enter PGP passphrase:\"), PgpPass, sizeof (PgpPass)) == 0)\n    {\n      PgpExptime = time (NULL) + PgpTimeout;\n      return (1);\n    }\n  else\n    PgpExptime = 0;\n\n  return 0;\n}\n\nvoid pgp_forget_passphrase (void)\n{\n  pgp_void_passphrase ();\n  mutt_message _(\"PGP passphrase forgotten.\");\n}\n\nint pgp_use_gpg_agent (void)\n{\n  char *tty;\n\n  /* GnuPG 2.1 no longer exports GPG_AGENT_INFO */\n  if (!option (OPTUSEGPGAGENT))\n    return 0;\n\n  if ((tty = ttyname(0)))\n    setenv(\"GPG_TTY\", tty, 0);\n\n  return 1;\n}\n\nstatic pgp_key_t _pgp_parent(pgp_key_t k)\n{\n  if((k->flags & KEYFLAG_SUBKEY) && k->parent && option(OPTPGPIGNORESUB))\n    k = k->parent;\n\n  return k;\n}\n\nchar *pgp_long_keyid(pgp_key_t k)\n{\n  k = _pgp_parent(k);\n\n  return k->keyid;\n}\n\nchar *pgp_short_keyid(pgp_key_t k)\n{\n  k = _pgp_parent(k);\n\n  return k->keyid + 8;\n}\n\nchar *pgp_keyid(pgp_key_t k)\n{\n  k = _pgp_parent(k);\n\n  return _pgp_keyid(k);\n}\n\nchar *_pgp_keyid(pgp_key_t k)\n{\n  if(option(OPTPGPLONGIDS))\n    return k->keyid;\n  else\n    return (k->keyid + 8);\n}\n\nchar *pgp_fingerprint(pgp_key_t k)\n{\n  k = _pgp_parent(k);\n\n  return k->fingerprint;\n}\n\n/* Grab the longest key identifier available: fingerprint or else\n * the long keyid.\n *\n * The longest available should be used for internally identifying\n * the key and for invoking pgp commands.\n */\nchar *pgp_fpr_or_lkeyid(pgp_key_t k)\n{\n  char *fingerprint;\n\n  fingerprint = pgp_fingerprint (k);\n  return fingerprint ? fingerprint : pgp_long_keyid (k);\n}\n\n/* ----------------------------------------------------------------------------\n * Routines for handing PGP input.\n */\n\n\n\n/* Copy PGP output messages and look for signs of a good signature */\n\nstatic int pgp_copy_checksig (FILE *fpin, FILE *fpout)\n{\n  int rv = -1;\n\n  if (PgpGoodSign.pattern)\n  {\n    char *line = NULL;\n    int lineno = 0;\n    size_t linelen;\n    \n    while ((line = mutt_read_line (line, &linelen, fpin, &lineno, 0)) != NULL)\n    {\n      if (regexec (PgpGoodSign.rx, line, 0, NULL, 0) == 0)\n      {\n\tdprint (2, (debugfile, \"pgp_copy_checksig: \\\"%s\\\" matches regexp.\\n\",\n\t\t    line));\n\trv = 0;\n      }\n      else\n\tdprint (2, (debugfile, \"pgp_copy_checksig: \\\"%s\\\" doesn't match regexp.\\n\",\n\t\t    line));\n      \n      if (strncmp (line, \"[GNUPG:] \", 9) == 0)\n\tcontinue;\n      fputs (line, fpout);\n      fputc ('\\n', fpout);\n    }\n    FREE (&line);\n  }\n  else\n  {\n    dprint (2, (debugfile, \"pgp_copy_checksig: No pattern.\\n\"));\n    mutt_copy_stream (fpin, fpout);\n    rv = 1;\n  }\n\n  return rv;\n}\n\n/* Checks PGP output messages to look for the $pgp_decryption_okay message.\n * This protects against messages with multipart/encrypted headers\n * but which aren't actually encrypted.  See ticket #3770\n */\nstatic int pgp_check_decryption_okay (FILE *fpin)\n{\n  int rv = -1;\n\n  if (PgpDecryptionOkay.pattern)\n  {\n    char *line = NULL;\n    int lineno = 0;\n    size_t linelen;\n\n    while ((line = mutt_read_line (line, &linelen, fpin, &lineno, 0)) != NULL)\n    {\n      if (regexec (PgpDecryptionOkay.rx, line, 0, NULL, 0) == 0)\n      {\n        dprint (2, (debugfile, \"pgp_check_decryption_okay: \\\"%s\\\" matches regexp.\\n\",\n                    line));\n        rv = 0;\n        break;\n      }\n      else\n        dprint (2, (debugfile, \"pgp_check_decryption_okay: \\\"%s\\\" doesn't match regexp.\\n\",\n                    line));\n    }\n    FREE (&line);\n  }\n  else\n  {\n    dprint (2, (debugfile, \"pgp_check_decryption_okay: No pattern.\\n\"));\n    rv = 1;\n  }\n\n  return rv;\n}\n\n\n/* \n * Copy a clearsigned message, and strip the signature and PGP's\n * dash-escaping.\n * \n * XXX - charset handling: We assume that it is safe to do\n * character set decoding first, dash decoding second here, while\n * we do it the other way around in the main handler.\n * \n * (Note that we aren't worse than Outlook &c in this, and also\n * note that we can successfully handle anything produced by any\n * existing versions of mutt.) \n */\n\nstatic void pgp_copy_clearsigned (FILE *fpin, STATE *s, char *charset)\n{\n  char buf[HUGE_STRING];\n  short complete, armor_header;\n  \n  FGETCONV *fc;\n  \n  rewind (fpin);\n\n  /* fromcode comes from the MIME Content-Type charset label. It might\n   * be a wrong label, so we want the ability to do corrections via\n   * charset-hooks. Therefore we set flags to M_ICONV_HOOK_FROM.\n   */\n  fc = fgetconv_open (fpin, charset, Charset, M_ICONV_HOOK_FROM);\n  \n  for (complete = 1, armor_header = 1;\n       fgetconvs (buf, sizeof (buf), fc) != NULL;\n       complete = strchr (buf, '\\n') != NULL)\n  {\n    if (!complete)\n    {\n      if (!armor_header)\n\tstate_puts (buf, s);\n      continue;\n    }\n\n    if (mutt_strcmp (buf, \"-----BEGIN PGP SIGNATURE-----\\n\") == 0)\n      break;\n    \n    if (armor_header)\n    {\n      char *p = mutt_skip_whitespace (buf);\n      if (*p == '\\0') \n\tarmor_header = 0;\n      continue;\n    }\n    \n    if (s->prefix) \n      state_puts (s->prefix, s);\n    \n    if (buf[0] == '-' && buf[1] == ' ')\n      state_puts (buf + 2, s);\n    else\n      state_puts (buf, s);\n  }\n  \n  fgetconv_close (&fc);\n}\n\n\n/* Support for the Application/PGP Content Type. */\n\nint pgp_application_pgp_handler (BODY *m, STATE *s)\n{\n  int could_not_decrypt = 0;\n  int needpass = -1, pgp_keyblock = 0;\n  int clearsign = 0, rv, rc;\n  int c = 1; /* silence GCC warning */\n  long bytes;\n  LOFF_T last_pos, offset;\n  char buf[HUGE_STRING];\n  char outfile[_POSIX_PATH_MAX];\n  char tmpfname[_POSIX_PATH_MAX];\n  FILE *pgpout = NULL, *pgpin = NULL, *pgperr = NULL;\n  FILE *tmpfp = NULL;\n  pid_t thepid;\n\n  short maybe_goodsig = 1;\n  short have_any_sigs = 0;\n\n  char *gpgcharset = NULL;\n  char body_charset[STRING];\n  mutt_get_body_charset (body_charset, sizeof (body_charset), m);\n\n  rc = 0;\t/* silence false compiler warning if (s->flags & M_DISPLAY) */\n\n  fseeko (s->fpin, m->offset, 0);\n  last_pos = m->offset;\n  \n  for (bytes = m->length; bytes > 0;)\n  {\n    if (fgets (buf, sizeof (buf), s->fpin) == NULL)\n      break;\n    \n    offset = ftello (s->fpin);\n    bytes -= (offset - last_pos); /* don't rely on mutt_strlen(buf) */\n    last_pos = offset;\n    \n    if (mutt_strncmp (\"-----BEGIN PGP \", buf, 15) == 0)\n    {\n      clearsign = 0;\n\n      if (mutt_strcmp (\"MESSAGE-----\\n\", buf + 15) == 0)\n        needpass = 1;\n      else if (mutt_strcmp (\"SIGNED MESSAGE-----\\n\", buf + 15) == 0)\n      {\n\tclearsign = 1;\n        needpass = 0;\n      }\n      else if (!mutt_strcmp (\"PUBLIC KEY BLOCK-----\\n\", buf + 15))\n      {\n        needpass = 0;\n        pgp_keyblock = 1;\n      } \n      else\n      {\n\t/* XXX - we may wish to recode here */\n\tif (s->prefix)\n\t  state_puts (s->prefix, s);\n\tstate_puts (buf, s);\n\tcontinue;\n      }\n\n      have_any_sigs = have_any_sigs || (clearsign && (s->flags & M_VERIFY));\n\n      /* Copy PGP material to temporary file */\n      mutt_mktemp (tmpfname, sizeof (tmpfname));\n      if ((tmpfp = safe_fopen (tmpfname, \"w+\")) == NULL)\n      {\n\tmutt_perror (tmpfname);\n\treturn -1;\n      }\n      \n      fputs (buf, tmpfp);\n      while (bytes > 0 && fgets (buf, sizeof (buf) - 1, s->fpin) != NULL)\n      {\n\toffset = ftello (s->fpin);\n\tbytes -= (offset - last_pos); /* don't rely on mutt_strlen(buf) */\n\tlast_pos = offset;\n\t\n\tfputs (buf, tmpfp);\n\n\tif ((needpass && mutt_strcmp (\"-----END PGP MESSAGE-----\\n\", buf) == 0) ||\n\t    (!needpass \n             && (mutt_strcmp (\"-----END PGP SIGNATURE-----\\n\", buf) == 0\n                 || mutt_strcmp (\"-----END PGP PUBLIC KEY BLOCK-----\\n\",buf) == 0)))\n\t  break;\n\t/* remember optional Charset: armor header as defined by RfC4880 */\n\tif (mutt_strncmp (\"Charset: \", buf, 9) == 0)\n\t{\n\t  size_t l = 0;\n\t  gpgcharset = safe_strdup (buf + 9);\n\t  if ((l = mutt_strlen (gpgcharset)) > 0 && gpgcharset[l-1] == '\\n')\n\t    gpgcharset[l-1] = 0;\n\t  if (mutt_check_charset (gpgcharset, 0) < 0)\n\t    mutt_str_replace (&gpgcharset, \"UTF-8\");\n\t}\n      }\n\n      /* leave tmpfp open in case we still need it - but flush it! */\n      fflush (tmpfp);\n\n      /* Invoke PGP if needed */\n      if (!clearsign || (s->flags & M_VERIFY))\n      {\n\tmutt_mktemp (outfile, sizeof (outfile));\n\tif ((pgpout = safe_fopen (outfile, \"w+\")) == NULL)\n\t{\n\t  mutt_perror (outfile);\n\t  return -1;\n\t}\n\t\n\tif ((thepid = pgp_invoke_decode (&pgpin, NULL, &pgperr, -1,\n\t\t\t\t\t fileno (pgpout), -1, tmpfname,\n\t\t\t\t\t needpass)) == -1)\n\t{\n\t  safe_fclose (&pgpout);\n\t  maybe_goodsig = 0;\n\t  pgpin = NULL;\n\t  pgperr = NULL;\n\t  state_attach_puts (_(\"[-- Error: unable to create PGP subprocess! --]\\n\"), s);\n\t}\n\telse /* PGP started successfully */\n\t{\n\t  if (needpass)\n\t  {\n\t    if (!pgp_valid_passphrase ()) pgp_void_passphrase();\n            if (pgp_use_gpg_agent())\n              *PgpPass = 0;\n\t    fprintf (pgpin, \"%s\\n\", PgpPass);\n\t  }\n\t  \n\t  safe_fclose (&pgpin);\n\n\t  if (s->flags & M_DISPLAY)\n\t  {\n\t    crypt_current_time (s, \"PGP\");\n\t    rc = pgp_copy_checksig (pgperr, s->fpout);\n\t  }\n\t  \n\t  safe_fclose (&pgperr);\n\t  rv = mutt_wait_filter (thepid);\n\t  \n\t  if (s->flags & M_DISPLAY)\n\t  {\n\t    if (rc == 0) have_any_sigs = 1;\n\t    /*\n\t     * Sig is bad if\n\t     * gpg_good_sign-pattern did not match || pgp_decode_command returned not 0\n\t     * Sig _is_ correct if\n\t     *  gpg_good_sign=\"\" && pgp_decode_command returned 0\n\t     */\n\t    if (rc == -1 || rv) maybe_goodsig = 0;\n\t    \n\t    state_attach_puts (_(\"[-- End of PGP output --]\\n\\n\"), s);\n\t  }\n\t  if (pgp_use_gpg_agent())\n\t    mutt_need_hard_redraw ();\n\t}\n\t\n        /* treat empty result as sign of failure */\n\t/* TODO: maybe on failure mutt should include the original undecoded text. */\n\tif (pgpout)\n\t{\n\t  rewind (pgpout);\n\t  c = fgetc (pgpout);\n\t  ungetc (c, pgpout);\n\t}\n        if (!clearsign && (!pgpout || c == EOF))\n\t{\n\t  could_not_decrypt = 1;\n\t  pgp_void_passphrase ();\n\t}\n\t\n\tif (could_not_decrypt && !(s->flags & M_DISPLAY))\n\t{\n          mutt_error _(\"Could not decrypt PGP message\");\n\t  mutt_sleep (1);\n\t  rc = -1;\n\t  goto out;\n        }\n      }\n      \n      /*\n       * Now, copy cleartext to the screen.\n       */\n\n      if(s->flags & M_DISPLAY)\n      {\n\tif (needpass)\n\t  state_attach_puts (_(\"[-- BEGIN PGP MESSAGE --]\\n\\n\"), s);\n\telse if (pgp_keyblock)\n\t  state_attach_puts (_(\"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"), s);\n\telse\n\t  state_attach_puts (_(\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\\n\"), s);\n      }\n\n      if (clearsign)\n      {\n\trewind (tmpfp);\n\tif (tmpfp) \n\t  pgp_copy_clearsigned (tmpfp, s, body_charset);\n      }\n      else if (pgpout)\n      {\n\tFGETCONV *fc;\n\tint c;\n\tchar *expected_charset = gpgcharset && *gpgcharset ? gpgcharset : \"utf-8\";\n\n\tdprint(4,(debugfile,\"pgp: recoding inline from [%s] to [%s]\\n\",\n\t\t  expected_charset, Charset));\n\n\trewind (pgpout);\n\tstate_set_prefix (s);\n\tfc = fgetconv_open (pgpout, expected_charset, Charset, M_ICONV_HOOK_FROM);\n\twhile ((c = fgetconv (fc)) != EOF)\n\t  state_prefix_putc (c, s);\n\tfgetconv_close (&fc);\n      }\n\n      /*\n       * Multiple PGP blocks can exist, so these need to be closed and\n       * unlinked inside the loop.\n       */\n      safe_fclose (&tmpfp);\n      mutt_unlink (tmpfname);\n      if (pgpout)\n      {\n\tsafe_fclose (&pgpout);\n\tmutt_unlink (outfile);\n      }\n\n      if (s->flags & M_DISPLAY)\n      {\n\tstate_putc ('\\n', s);\n\tif (needpass)\n        {\n\t  state_attach_puts (_(\"[-- END PGP MESSAGE --]\\n\"), s);\n\t  if (could_not_decrypt)\n\t    mutt_error _(\"Could not decrypt PGP message\");\n\t  else\n\t    mutt_message _(\"PGP message successfully decrypted.\");\n        }\n\telse if (pgp_keyblock)\n\t  state_attach_puts (_(\"[-- END PGP PUBLIC KEY BLOCK --]\\n\"), s);\n\telse\n\t  state_attach_puts (_(\"[-- END PGP SIGNED MESSAGE --]\\n\"), s);\n      }\n    }\n    else\n    {\n      /* A traditional PGP part may mix signed and unsigned content */\n      /* XXX - we may wish to recode here */\n      if (s->prefix)\n\tstate_puts (s->prefix, s);\n      state_puts (buf, s);\n    }\n  }\n\n  rc = 0;\n\nout:\n  m->goodsig = (maybe_goodsig && have_any_sigs);\n\n  if (tmpfp)\n  {\n    safe_fclose (&tmpfp);\n    mutt_unlink (tmpfname);\n  }\n  if (pgpout)\n  {\n    safe_fclose (&pgpout);\n    mutt_unlink (outfile);\n  }\n\n  FREE(&gpgcharset);\n\n  if (needpass == -1)\n  {\n    state_attach_puts (_(\"[-- Error: could not find beginning of PGP message! --]\\n\\n\"), s);\n    return -1;\n  }\n  \n  return rc;\n}\n\nstatic int pgp_check_traditional_one_body (FILE *fp, BODY *b, int tagged_only)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  char buf[HUGE_STRING];\n  FILE *tfp;\n  \n  short sgn = 0;\n  short enc = 0;\n  short key = 0;\n  \n  if (b->type != TYPETEXT)\n    return 0;\n\n  if (tagged_only && !b->tagged)\n    return 0;\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (mutt_decode_save_attachment (fp, b, tempfile, 0, 0) != 0)\n  {\n    unlink (tempfile);\n    return 0;\n  }\n  \n  if ((tfp = fopen (tempfile, \"r\")) == NULL)\n  {\n    unlink (tempfile);\n    return 0;\n  }\n  \n  while (fgets (buf, sizeof (buf), tfp))\n  {\n    if (mutt_strncmp (\"-----BEGIN PGP \", buf, 15) == 0)\n    {\n      if (mutt_strcmp (\"MESSAGE-----\\n\", buf + 15) == 0)\n\tenc = 1;\n      else if (mutt_strcmp (\"SIGNED MESSAGE-----\\n\", buf + 15) == 0)\n\tsgn = 1;\n      else if (mutt_strcmp (\"PUBLIC KEY BLOCK-----\\n\", buf + 15) == 0)\n\tkey = 1;\n    }\n  }\n  safe_fclose (&tfp);\n  unlink (tempfile);\n\n  if (!enc && !sgn && !key)\n    return 0;\n\n  /* fix the content type */\n  \n  mutt_set_parameter (\"format\", \"fixed\", &b->parameter);\n  if (enc)\n    mutt_set_parameter (\"x-action\", \"pgp-encrypted\", &b->parameter);\n  else if (sgn)\n    mutt_set_parameter (\"x-action\", \"pgp-signed\", &b->parameter);\n  else if (key)\n    mutt_set_parameter (\"x-action\", \"pgp-keys\", &b->parameter);\n  \n  return 1;\n}\n\nint pgp_check_traditional (FILE *fp, BODY *b, int tagged_only)\n{\n  int rv = 0;\n  int r;\n  for (; b; b = b->next)\n  {\n    if (is_multipart (b))\n      rv = pgp_check_traditional (fp, b->parts, tagged_only) || rv;\n    else if (b->type == TYPETEXT)\n    {\n      if ((r = mutt_is_application_pgp (b)))\n\trv = rv || r;\n      else\n\trv = pgp_check_traditional_one_body (fp, b, tagged_only) || rv;\n    }\n  }\n\n  return rv;\n}\n\n     \n\n\n\nint pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempfile)\n{\n  char sigfile[_POSIX_PATH_MAX], pgperrfile[_POSIX_PATH_MAX];\n  FILE *fp, *pgpout, *pgperr;\n  pid_t thepid;\n  int badsig = -1;\n  int rv;\n  \n  snprintf (sigfile, sizeof (sigfile), \"%s.asc\", tempfile);\n  \n  if(!(fp = safe_fopen (sigfile, \"w\")))\n  {\n    mutt_perror(sigfile);\n    return -1;\n  }\n\t\n  fseeko (s->fpin, sigbdy->offset, 0);\n  mutt_copy_bytes (s->fpin, fp, sigbdy->length);\n  safe_fclose (&fp);\n  \n  mutt_mktemp (pgperrfile, sizeof (pgperrfile));\n  if(!(pgperr = safe_fopen(pgperrfile, \"w+\")))\n  {\n    mutt_perror(pgperrfile);\n    unlink(sigfile);\n    return -1;\n  }\n  \n  crypt_current_time (s, \"PGP\");\n  \n  if((thepid = pgp_invoke_verify (NULL, &pgpout, NULL, \n\t\t\t\t   -1, -1, fileno(pgperr),\n\t\t\t\t   tempfile, sigfile)) != -1)\n  {\n    if (pgp_copy_checksig (pgpout, s->fpout) >= 0)\n      badsig = 0;\n    \n    \n    safe_fclose (&pgpout);\n    fflush (pgperr);\n    rewind (pgperr);\n    \n    if (pgp_copy_checksig  (pgperr, s->fpout) >= 0)\n      badsig = 0;\n\n    if ((rv = mutt_wait_filter (thepid)))\n      badsig = -1;\n    \n     dprint (1, (debugfile, \"pgp_verify_one: mutt_wait_filter returned %d.\\n\", rv));\n  }\n\n  safe_fclose (&pgperr);\n\n  state_attach_puts (_(\"[-- End of PGP output --]\\n\\n\"), s);\n\n  mutt_unlink (sigfile);\n  mutt_unlink (pgperrfile);\n\n  dprint (1, (debugfile, \"pgp_verify_one: returning %d.\\n\", badsig));\n  \n  return badsig;\n}\n\n\n/* Extract pgp public keys from messages or attachments */\n\nvoid pgp_extract_keys_from_messages (HEADER *h)\n{\n  int i;\n  char tempfname[_POSIX_PATH_MAX];\n  FILE *fpout;\n\n  if (h)\n  {\n    mutt_parse_mime_message (Context, h);\n    if(h->security & PGPENCRYPT && !pgp_valid_passphrase ())\n      return;\n  }\n\n  mutt_mktemp (tempfname, sizeof (tempfname));\n  if (!(fpout = safe_fopen (tempfname, \"w\")))\n  {\n    mutt_perror (tempfname);\n    return;\n  }\n\n  set_option (OPTDONTHANDLEPGPKEYS);\n  \n  if (!h)\n  {\n    for (i = 0; i < Context->vcount; i++)\n    {\n      if (Context->hdrs[Context->v2r[i]]->tagged)\n      {\n\tmutt_parse_mime_message (Context, Context->hdrs[Context->v2r[i]]);\n\tif (Context->hdrs[Context->v2r[i]]->security & PGPENCRYPT\n\t   && !pgp_valid_passphrase())\n\t{\n\t  safe_fclose (&fpout);\n\t  goto bailout;\n\t}\n\tmutt_copy_message (fpout, Context, Context->hdrs[Context->v2r[i]], \n\t\t\t   M_CM_DECODE|M_CM_CHARCONV, 0);\n      }\n    }\n  } \n  else\n  {\n    mutt_parse_mime_message (Context, h);\n    if (h->security & PGPENCRYPT && !pgp_valid_passphrase())\n    {\n      safe_fclose (&fpout);\n      goto bailout;\n    }\n    mutt_copy_message (fpout, Context, h, M_CM_DECODE|M_CM_CHARCONV, 0);\n  }\n      \n  safe_fclose (&fpout);\n  mutt_endwin (NULL);\n  pgp_invoke_import (tempfname);\n  mutt_any_key_to_continue (NULL);\n\n  bailout:\n  \n  mutt_unlink (tempfname);\n  unset_option (OPTDONTHANDLEPGPKEYS);\n  \n}\n\nstatic void pgp_extract_keys_from_attachment (FILE *fp, BODY *top)\n{\n  STATE s;\n  FILE *tempfp;\n  char tempfname[_POSIX_PATH_MAX];\n\n  mutt_mktemp (tempfname, sizeof (tempfname));\n  if (!(tempfp = safe_fopen (tempfname, \"w\")))\n  {\n    mutt_perror (tempfname);\n    return;\n  }\n\n  memset (&s, 0, sizeof (STATE));\n  \n  s.fpin = fp;\n  s.fpout = tempfp;\n  \n  mutt_body_handler (top, &s);\n\n  safe_fclose (&tempfp);\n\n  pgp_invoke_import (tempfname);\n  mutt_any_key_to_continue (NULL);\n\n  mutt_unlink (tempfname);\n}\n\nvoid pgp_extract_keys_from_attachment_list (FILE *fp, int tag, BODY *top)\n{\n  if(!fp)\n  {\n    mutt_error _(\"Internal error.  Please submit a bug report.\");\n    return;\n  }\n\n  mutt_endwin (NULL);\n  set_option(OPTDONTHANDLEPGPKEYS);\n  \n  for(; top; top = top->next)\n  {\n    if(!tag || top->tagged)\n      pgp_extract_keys_from_attachment (fp, top);\n    \n    if(!tag)\n      break;\n  }\n  \n  unset_option(OPTDONTHANDLEPGPKEYS);\n}\n\nBODY *pgp_decrypt_part (BODY *a, STATE *s, FILE *fpout, BODY *p)\n{\n  char buf[LONG_STRING];\n  FILE *pgpin, *pgpout, *pgperr, *pgptmp;\n  struct stat info;\n  BODY *tattach;\n  int len;\n  char pgperrfile[_POSIX_PATH_MAX];\n  char pgptmpfile[_POSIX_PATH_MAX];\n  pid_t thepid;\n  int rv;\n  \n  mutt_mktemp (pgperrfile, sizeof (pgperrfile));\n  if ((pgperr = safe_fopen (pgperrfile, \"w+\")) == NULL)\n  {\n    mutt_perror (pgperrfile);\n    return NULL;\n  }\n  unlink (pgperrfile);\n\n  mutt_mktemp (pgptmpfile, sizeof (pgptmpfile));\n  if((pgptmp = safe_fopen (pgptmpfile, \"w\")) == NULL)\n  {\n    mutt_perror (pgptmpfile);\n    safe_fclose (&pgperr);\n    return NULL;\n  }\n\n  /* Position the stream at the beginning of the body, and send the data to\n   * the temporary file.\n   */\n\n  fseeko (s->fpin, a->offset, 0);\n  mutt_copy_bytes (s->fpin, pgptmp, a->length);\n  safe_fclose (&pgptmp);\n\n  if ((thepid = pgp_invoke_decrypt (&pgpin, &pgpout, NULL, -1, -1,\n\t\t\t\t    fileno (pgperr), pgptmpfile)) == -1)\n  {\n    safe_fclose (&pgperr);\n    unlink (pgptmpfile);\n    if (s->flags & M_DISPLAY)\n      state_attach_puts (_(\"[-- Error: could not create a PGP subprocess! --]\\n\\n\"), s);\n    return (NULL);\n  }\n\n  /* send the PGP passphrase to the subprocess.  Never do this if the\n     agent is active, because this might lead to a passphrase send as\n     the message. */\n  if (!pgp_use_gpg_agent())\n    fputs (PgpPass, pgpin);\n  fputc ('\\n', pgpin);\n  safe_fclose (&pgpin);\n  \n  /* Read the output from PGP, and make sure to change CRLF to LF, otherwise\n   * read_mime_header has a hard time parsing the message.\n   */\n  while (fgets (buf, sizeof (buf) - 1, pgpout) != NULL)\n  {\n    len = mutt_strlen (buf);\n    if (len > 1 && buf[len - 2] == '\\r')\n      strcpy (buf + len - 2, \"\\n\");\t/* __STRCPY_CHECKED__ */\n    fputs (buf, fpout);\n  }\n\n  safe_fclose (&pgpout);\n  rv = mutt_wait_filter (thepid);\n  mutt_unlink(pgptmpfile);\n\n  fflush (pgperr);\n  rewind (pgperr);\n  if (pgp_check_decryption_okay (pgperr) < 0)\n  {\n    mutt_error _(\"Decryption failed\");\n    pgp_void_passphrase ();\n    return NULL;\n  }\n\n  if (s->flags & M_DISPLAY)\n  {\n    rewind (pgperr);\n    if (pgp_copy_checksig (pgperr, s->fpout) == 0 && !rv && p)\n      p->goodsig = 1;\n    else\n      p->goodsig = 0;\n    state_attach_puts (_(\"[-- End of PGP output --]\\n\\n\"), s);\n  }\n  safe_fclose (&pgperr);\n\n  fflush (fpout);\n  rewind (fpout);\n\n  if (pgp_use_gpg_agent())\n    mutt_need_hard_redraw ();\n\n  if (fgetc (fpout) == EOF)\n  {\n    mutt_error _(\"Decryption failed\");\n    pgp_void_passphrase ();\n    return NULL;\n  }\n\n  rewind (fpout);\n  \n  if ((tattach = mutt_read_mime_header (fpout, 0)) != NULL)\n  {\n    /*\n     * Need to set the length of this body part.\n     */\n    fstat (fileno (fpout), &info);\n    tattach->length = info.st_size - tattach->offset;\n\n    /* See if we need to recurse on this MIME part.  */\n\n    mutt_parse_part (fpout, tattach);\n  }\n\n  return (tattach);\n}\n\nint pgp_decrypt_mime (FILE *fpin, FILE **fpout, BODY *b, BODY **cur)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  STATE s;\n  BODY *p = b;\n  int need_decode = 0;\n  int saved_type;\n  LOFF_T saved_offset;\n  size_t saved_length;\n  FILE *decoded_fp = NULL;\n  int rv = 0;\n\n  if (mutt_is_valid_multipart_pgp_encrypted (b))\n    b = b->parts->next;\n  else if (mutt_is_malformed_multipart_pgp_encrypted (b))\n  {\n    b = b->parts->next->next;\n    need_decode = 1;\n  }\n  else\n    return -1;\n\n  memset (&s, 0, sizeof (s));\n  s.fpin = fpin;\n\n  if (need_decode)\n  {\n    saved_type = b->type;\n    saved_offset = b->offset;\n    saved_length = b->length;\n\n    mutt_mktemp (tempfile, sizeof (tempfile));\n    if ((decoded_fp = safe_fopen (tempfile, \"w+\")) == NULL)\n    {\n      mutt_perror (tempfile);\n      return (-1);\n    }\n    unlink (tempfile);\n\n    fseeko (s.fpin, b->offset, 0);\n    s.fpout = decoded_fp;\n\n    mutt_decode_attachment (b, &s);\n\n    fflush (decoded_fp);\n    b->length = ftello (decoded_fp);\n    b->offset = 0;\n    rewind (decoded_fp);\n    s.fpin = decoded_fp;\n    s.fpout = 0;\n  }\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((*fpout = safe_fopen (tempfile, \"w+\")) == NULL)\n  {\n    mutt_perror (tempfile);\n    rv = -1;\n    goto bail;\n  }\n  unlink (tempfile);\n\n  if ((*cur = pgp_decrypt_part (b, &s, *fpout, p)) == NULL)\n    rv = -1;\n  rewind (*fpout);\n\nbail:\n  if (need_decode)\n  {\n    b->type = saved_type;\n    b->length = saved_length;\n    b->offset = saved_offset;\n    safe_fclose (&decoded_fp);\n  }\n\n  return rv;\n}\n\n/*\n * This handler is passed the application/octet-stream directly.\n * The caller must propagate a->goodsig to its parent.\n */\nint pgp_encrypted_handler (BODY *a, STATE *s)\n{\n  char tempfile[_POSIX_PATH_MAX];\n  FILE *fpout, *fpin;\n  BODY *tattach;\n  int rc = 0;\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((fpout = safe_fopen (tempfile, \"w+\")) == NULL)\n  {\n    if (s->flags & M_DISPLAY)\n      state_attach_puts (_(\"[-- Error: could not create temporary file! --]\\n\"), s);\n    return -1;\n  }\n\n  if (s->flags & M_DISPLAY) crypt_current_time (s, \"PGP\");\n\n  if ((tattach = pgp_decrypt_part (a, s, fpout, a)) != NULL)\n  {\n    if (s->flags & M_DISPLAY)\n      state_attach_puts (_(\"[-- The following data is PGP/MIME encrypted --]\\n\\n\"), s);\n\n    fpin = s->fpin;\n    s->fpin = fpout;\n    rc = mutt_body_handler (tattach, s);\n    s->fpin = fpin;\n\n    /* \n     * if a multipart/signed is the _only_ sub-part of a\n     * multipart/encrypted, cache signature verification\n     * status.\n     *\n     */\n    \n    if (mutt_is_multipart_signed (tattach) && !tattach->next)\n      a->goodsig |= tattach->goodsig;\n    \n    if (s->flags & M_DISPLAY)\n    {\n      state_puts (\"\\n\", s);\n      state_attach_puts (_(\"[-- End of PGP/MIME encrypted data --]\\n\"), s);\n    }\n\n    mutt_free_body (&tattach);\n    /* clear 'Invoking...' message, since there's no error */\n    mutt_message _(\"PGP message successfully decrypted.\");\n  }\n  else\n  {\n    mutt_error _(\"Could not decrypt PGP message\");\n    mutt_sleep (2);\n    /* void the passphrase, even if it's not necessarily the problem */\n    pgp_void_passphrase ();\n    rc = -1;\n  }\n\n  safe_fclose (&fpout);\n  mutt_unlink(tempfile);\n\n  return rc;\n}\n\n/* ----------------------------------------------------------------------------\n * Routines for sending PGP/MIME messages.\n */\n\n\nBODY *pgp_sign_message (BODY *a)\n{\n  BODY *t;\n  char buffer[LONG_STRING];\n  char sigfile[_POSIX_PATH_MAX], signedfile[_POSIX_PATH_MAX];\n  FILE *pgpin, *pgpout, *pgperr, *fp, *sfp;\n  int err = 0;\n  int empty = 1;\n  pid_t thepid;\n  \n  convert_to_7bit (a); /* Signed data _must_ be in 7-bit format. */\n\n  mutt_mktemp (sigfile, sizeof (sigfile));\n  if ((fp = safe_fopen (sigfile, \"w\")) == NULL)\n  {\n    return (NULL);\n  }\n\n  mutt_mktemp (signedfile, sizeof (signedfile));\n  if ((sfp = safe_fopen(signedfile, \"w\")) == NULL)\n  {\n    mutt_perror(signedfile);\n    safe_fclose (&fp);\n    unlink(sigfile);\n    return NULL;\n  }\n  \n  mutt_write_mime_header (a, sfp);\n  fputc ('\\n', sfp);\n  mutt_write_mime_body (a, sfp);\n  safe_fclose (&sfp);\n  \n  if ((thepid = pgp_invoke_sign (&pgpin, &pgpout, &pgperr,\n\t\t\t\t -1, -1, -1, signedfile)) == -1)\n  {\n    mutt_perror _(\"Can't open PGP subprocess!\");\n    safe_fclose (&fp);\n    unlink(sigfile);\n    unlink(signedfile);\n    return NULL;\n  }\n  \n  if (!pgp_use_gpg_agent())\n     fputs(PgpPass, pgpin);\n  fputc('\\n', pgpin);\n  safe_fclose (&pgpin);\n  \n  /*\n   * Read back the PGP signature.  Also, change MESSAGE=>SIGNATURE as\n   * recommended for future releases of PGP.\n   */\n  while (fgets (buffer, sizeof (buffer) - 1, pgpout) != NULL)\n  {\n    if (mutt_strcmp (\"-----BEGIN PGP MESSAGE-----\\n\", buffer) == 0)\n      fputs (\"-----BEGIN PGP SIGNATURE-----\\n\", fp);\n    else if (mutt_strcmp(\"-----END PGP MESSAGE-----\\n\", buffer) == 0)\n      fputs (\"-----END PGP SIGNATURE-----\\n\", fp);\n    else\n      fputs (buffer, fp);\n    empty = 0; /* got some output, so we're ok */\n  }\n\n  /* check for errors from PGP */\n  err = 0;\n  while (fgets (buffer, sizeof (buffer) - 1, pgperr) != NULL)\n  {\n    err = 1;\n    fputs (buffer, stdout);\n  }\n\n  if(mutt_wait_filter (thepid) && option(OPTPGPCHECKEXIT))\n    empty=1;\n\n  safe_fclose (&pgperr);\n  safe_fclose (&pgpout);\n  unlink (signedfile);\n  \n  if (fclose (fp) != 0)\n  {\n    mutt_perror (\"fclose\");\n    unlink (sigfile);\n    return (NULL);\n  }\n\n  if (err)\n    mutt_any_key_to_continue (NULL);\n  if (empty)\n  {\n    unlink (sigfile);\n    /* most likely error is a bad passphrase, so automatically forget it */\n    pgp_void_passphrase ();\n    return (NULL); /* fatal error while signing */\n  }\n\n  t = mutt_new_body ();\n  t->type = TYPEMULTIPART;\n  t->subtype = safe_strdup (\"signed\");\n  t->encoding = ENC7BIT;\n  t->use_disp = 0;\n  t->disposition = DISPINLINE;\n\n  mutt_generate_boundary (&t->parameter);\n  mutt_set_parameter (\"protocol\", \"application/pgp-signature\", &t->parameter);\n  mutt_set_parameter (\"micalg\", pgp_micalg (sigfile), &t->parameter);\n\n  t->parts = a;\n  a = t;\n\n  t->parts->next = mutt_new_body ();\n  t = t->parts->next;\n  t->type = TYPEAPPLICATION;\n  t->subtype = safe_strdup (\"pgp-signature\");\n  t->filename = safe_strdup (sigfile);\n  t->use_disp = 0;\n  t->disposition = DISPNONE;\n  t->encoding = ENC7BIT;\n  t->unlink = 1; /* ok to remove this file after sending. */\n  mutt_set_parameter (\"name\", \"signature.asc\", &t->parameter);\n\n  return (a);\n}\n\n/* This routine attempts to find the keyids of the recipients of a message.\n * It returns NULL if any of the keys can not be found.\n * If oppenc_mode is true, only keys that can be determined without\n * prompting will be used.\n */\nchar *pgp_findKeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  LIST *crypt_hook_list, *crypt_hook = NULL;\n  char *keyID, *keylist = NULL;\n  size_t keylist_size = 0;\n  size_t keylist_used = 0;\n  ADDRESS *addr = NULL;\n  ADDRESS *p, *q;\n  pgp_key_t k_info = NULL;\n  char buf[LONG_STRING];\n  int r;\n  int key_selected;\n\n  const char *fqdn = mutt_fqdn (1);\n\n  for (p = adrlist; p ; p = p->next)\n  {\n    key_selected = 0;\n    crypt_hook_list = crypt_hook = mutt_crypt_hook (p);\n    do\n    {\n      q = p;\n      k_info = NULL;\n\n      if (crypt_hook != NULL)\n      {\n        keyID = crypt_hook->data;\n        r = M_YES;\n        if (! oppenc_mode && option(OPTCRYPTCONFIRMHOOK))\n        {\n          snprintf (buf, sizeof (buf), _(\"Use keyID = \\\"%s\\\" for %s?\"), keyID, p->mailbox);\n          r = mutt_yesorno (buf, M_YES);\n        }\n        if (r == M_YES)\n        {\n          if (crypt_is_numerical_keyid (keyID))\n          {\n            if (strncmp (keyID, \"0x\", 2) == 0)\n              keyID += 2;\n            goto bypass_selection;\t\t/* you don't see this. */\n          }\n\n          /* check for e-mail address */\n          if (strchr (keyID, '@') &&\n              (addr = rfc822_parse_adrlist (NULL, keyID)))\n          {\n            if (fqdn) rfc822_qualify (addr, fqdn);\n            q = addr;\n          }\n          else if (! oppenc_mode)\n          {\n            k_info = pgp_getkeybystr (keyID, KEYFLAG_CANENCRYPT, PGP_PUBRING);\n          }\n        }\n        else if (r == M_NO)\n        {\n          if (key_selected || (crypt_hook->next != NULL))\n          {\n            crypt_hook = crypt_hook->next;\n            continue;\n          }\n        }\n        else if (r == -1)\n        {\n          FREE (&keylist);\n          rfc822_free_address (&addr);\n          mutt_free_list (&crypt_hook_list);\n          return NULL;\n        }\n      }\n\n      if (k_info == NULL)\n      {\n        pgp_invoke_getkeys (q);\n        k_info = pgp_getkeybyaddr (q, KEYFLAG_CANENCRYPT, PGP_PUBRING, oppenc_mode);\n      }\n\n      if ((k_info == NULL) && (! oppenc_mode))\n      {\n        snprintf (buf, sizeof (buf), _(\"Enter keyID for %s: \"), q->mailbox);\n        k_info = pgp_ask_for_key (buf, q->mailbox,\n                              KEYFLAG_CANENCRYPT, PGP_PUBRING);\n      }\n\n      if (k_info == NULL)\n      {\n        FREE (&keylist);\n        rfc822_free_address (&addr);\n        mutt_free_list (&crypt_hook_list);\n        return NULL;\n      }\n\n      keyID = pgp_fpr_or_lkeyid (k_info);\n\n    bypass_selection:\n      keylist_size += mutt_strlen (keyID) + 4;\n      safe_realloc (&keylist, keylist_size);\n      sprintf (keylist + keylist_used, \"%s0x%s\", keylist_used ? \" \" : \"\",\t/* __SPRINTF_CHECKED__ */\n              keyID);\n      keylist_used = mutt_strlen (keylist);\n\n      key_selected = 1;\n\n      pgp_free_key (&k_info);\n      rfc822_free_address (&addr);\n\n      if (crypt_hook != NULL)\n        crypt_hook = crypt_hook->next;\n\n    } while (crypt_hook != NULL);\n\n    mutt_free_list (&crypt_hook_list);\n  }\n  return (keylist);\n}\n\n/* Warning: \"a\" is no longer freed in this routine, you need\n * to free it later.  This is necessary for $fcc_attach. */\n\nBODY *pgp_encrypt_message (BODY *a, char *keylist, int sign)\n{\n  char buf[LONG_STRING];\n  char tempfile[_POSIX_PATH_MAX], pgperrfile[_POSIX_PATH_MAX];\n  char pgpinfile[_POSIX_PATH_MAX];\n  FILE *pgpin, *pgperr, *fpout, *fptmp;\n  BODY *t;\n  int err = 0;\n  int empty = 0;\n  pid_t thepid;\n  \n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((fpout = safe_fopen (tempfile, \"w+\")) == NULL)\n  {\n    mutt_perror (tempfile);\n    return (NULL);\n  }\n\n  mutt_mktemp (pgperrfile, sizeof (pgperrfile));\n  if ((pgperr = safe_fopen (pgperrfile, \"w+\")) == NULL)\n  {\n    mutt_perror (pgperrfile);\n    unlink(tempfile);\n    safe_fclose (&fpout);\n    return NULL;\n  }\n  unlink (pgperrfile);\n\n  mutt_mktemp (pgpinfile, sizeof (pgpinfile));\n  if((fptmp = safe_fopen(pgpinfile, \"w\")) == NULL)\n  {\n    mutt_perror(pgpinfile);\n    unlink(tempfile);\n    safe_fclose (&fpout);\n    safe_fclose (&pgperr);\n    return NULL;\n  }\n  \n  if (sign)\n    convert_to_7bit (a);\n  \n  mutt_write_mime_header (a, fptmp);\n  fputc ('\\n', fptmp);\n  mutt_write_mime_body (a, fptmp);\n  safe_fclose (&fptmp);\n  \n  if ((thepid = pgp_invoke_encrypt (&pgpin, NULL, NULL, -1, \n\t\t\t\t    fileno (fpout), fileno (pgperr),\n\t\t\t\t    pgpinfile, keylist, sign)) == -1)\n  {\n    safe_fclose (&pgperr);\n    unlink(pgpinfile);\n    return (NULL);\n  }\n\n  if (sign)\n  {\n    if (!pgp_use_gpg_agent())\n       fputs (PgpPass, pgpin);\n    fputc ('\\n', pgpin);\n  }\n  safe_fclose (&pgpin);\n  \n  if(mutt_wait_filter (thepid) && option(OPTPGPCHECKEXIT))\n    empty=1;\n\n  unlink(pgpinfile);\n  \n  fflush (fpout);\n  rewind (fpout);\n  if(!empty)\n    empty = (fgetc (fpout) == EOF);\n  safe_fclose (&fpout);\n\n  fflush (pgperr);\n  rewind (pgperr);\n  while (fgets (buf, sizeof (buf) - 1, pgperr) != NULL)\n  {\n    err = 1;\n    fputs (buf, stdout);\n  }\n  safe_fclose (&pgperr);\n\n  /* pause if there is any error output from PGP */\n  if (err)\n    mutt_any_key_to_continue (NULL);\n\n  if (empty)\n  {\n    /* fatal error while trying to encrypt message */\n    if (sign)\n      pgp_void_passphrase (); /* just in case */\n    unlink (tempfile);\n    return (NULL);\n  }\n\n  t = mutt_new_body ();\n  t->type = TYPEMULTIPART;\n  t->subtype = safe_strdup (\"encrypted\");\n  t->encoding = ENC7BIT;\n  t->use_disp = 0;\n  t->disposition = DISPINLINE;\n\n  mutt_generate_boundary(&t->parameter);\n  mutt_set_parameter(\"protocol\", \"application/pgp-encrypted\", &t->parameter);\n  \n  t->parts = mutt_new_body ();\n  t->parts->type = TYPEAPPLICATION;\n  t->parts->subtype = safe_strdup (\"pgp-encrypted\");\n  t->parts->encoding = ENC7BIT;\n\n  t->parts->next = mutt_new_body ();\n  t->parts->next->type = TYPEAPPLICATION;\n  t->parts->next->subtype = safe_strdup (\"octet-stream\");\n  t->parts->next->encoding = ENC7BIT;\n  t->parts->next->filename = safe_strdup (tempfile);\n  t->parts->next->use_disp = 1;\n  t->parts->next->disposition = DISPATTACH;\n  t->parts->next->unlink = 1; /* delete after sending the message */\n  t->parts->next->d_filename = safe_strdup (\"msg.asc\"); /* non pgp/mime can save */\n\n  return (t);\n}\n\nBODY *pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)\n{\n  BODY *b;\n\n  char pgpoutfile[_POSIX_PATH_MAX];\n  char pgperrfile[_POSIX_PATH_MAX];\n  char pgpinfile[_POSIX_PATH_MAX];\n  \n  char body_charset[STRING];\n  char *from_charset;\n  const char *send_charset;\n  \n  FILE *pgpout = NULL, *pgperr = NULL, *pgpin = NULL;\n  FILE *fp;\n\n  int empty = 0;\n  int err;\n\n  char buff[STRING];\n\n  pid_t thepid;\n\n  if (a->type != TYPETEXT)\n    return NULL;\n  if (ascii_strcasecmp (a->subtype, \"plain\"))\n    return NULL;\n  \n  if ((fp = fopen (a->filename, \"r\")) == NULL)\n  {\n    mutt_perror (a->filename);\n    return NULL;\n  }\n  \n  mutt_mktemp (pgpinfile, sizeof (pgpinfile));\n  if ((pgpin = safe_fopen (pgpinfile, \"w\")) == NULL)\n  {\n    mutt_perror (pgpinfile);\n    safe_fclose (&fp);\n    return NULL;\n  }\n\n  /* The following code is really correct:  If noconv is set,\n   * a's charset parameter contains the on-disk character set, and\n   * we have to convert from that to utf-8.  If noconv is not set,\n   * we have to convert from $charset to utf-8.\n   */\n  \n  mutt_get_body_charset (body_charset, sizeof (body_charset), a);\n  if (a->noconv)\n    from_charset = body_charset;\n  else \n    from_charset = Charset;\n    \n  if (!mutt_is_us_ascii (body_charset))\n  {\n    int c;\n    FGETCONV *fc;\n    \n    if (flags & ENCRYPT)\n      send_charset = \"us-ascii\";\n    else\n      send_charset = \"utf-8\";\n\n    /* fromcode is assumed to be correct: we set flags to 0 */\n    fc = fgetconv_open (fp, from_charset, \"utf-8\", 0);\n    while ((c = fgetconv (fc)) != EOF)\n      fputc (c, pgpin);\n    \n    fgetconv_close (&fc);\n  }\n  else\n  {\n    send_charset = \"us-ascii\";\n    mutt_copy_stream (fp, pgpin);\n  }\n  safe_fclose (&fp);\n  safe_fclose (&pgpin);\n\n  mutt_mktemp (pgpoutfile, sizeof (pgpoutfile));\n  mutt_mktemp (pgperrfile, sizeof (pgperrfile));\n  if ((pgpout = safe_fopen (pgpoutfile, \"w+\")) == NULL ||\n      (pgperr = safe_fopen (pgperrfile, \"w+\")) == NULL)\n  {\n    mutt_perror (pgpout ? pgperrfile : pgpoutfile);\n    unlink (pgpinfile);\n    if (pgpout) \n    {\n      safe_fclose (&pgpout);\n      unlink (pgpoutfile);\n    }\n    return NULL;\n  }\n  \n  unlink (pgperrfile);\n\n  if ((thepid = pgp_invoke_traditional (&pgpin, NULL, NULL, \n\t\t\t\t\t-1, fileno (pgpout), fileno (pgperr),\n\t\t\t\t\tpgpinfile, keylist, flags)) == -1)\n  {\n    mutt_perror _(\"Can't invoke PGP\");\n    safe_fclose (&pgpout);\n    safe_fclose (&pgperr);\n    mutt_unlink (pgpinfile);\n    unlink (pgpoutfile);\n    return NULL;\n  }\n\n  if (pgp_use_gpg_agent())\n    *PgpPass = 0;\n  if (flags & SIGN)\n    fprintf (pgpin, \"%s\\n\", PgpPass);\n  safe_fclose (&pgpin);\n\n  if(mutt_wait_filter (thepid) && option(OPTPGPCHECKEXIT))\n    empty=1;\n\n  mutt_unlink (pgpinfile);\n\n  fflush (pgpout);\n  fflush (pgperr);\n\n  rewind (pgpout);\n  rewind (pgperr);\n  \n  if(!empty)\n    empty = (fgetc (pgpout) == EOF);\n  safe_fclose (&pgpout);\n  \n  err = 0;\n  \n  while (fgets (buff, sizeof (buff), pgperr))\n  {\n    err = 1;\n    fputs (buff, stdout);\n  }\n  \n  safe_fclose (&pgperr);\n  \n  if (err)\n    mutt_any_key_to_continue (NULL);\n  \n  if (empty)\n  {\n    if (flags & SIGN)\n      pgp_void_passphrase (); /* just in case */\n    unlink (pgpoutfile);\n    return NULL;\n  }\n    \n  b = mutt_new_body ();\n  \n  b->encoding = ENC7BIT;\n\n  b->type = TYPETEXT;\n  b->subtype = safe_strdup (\"plain\");\n  \n  mutt_set_parameter (\"x-action\", flags & ENCRYPT ? \"pgp-encrypted\" : \"pgp-signed\",\n\t\t      &b->parameter);\n  mutt_set_parameter (\"charset\", send_charset, &b->parameter);\n  \n  b->filename = safe_strdup (pgpoutfile);\n  \n#if 0\n  /* The following is intended to give a clue to some completely brain-dead \n   * \"mail environments\" which are typically used by large corporations.\n   */\n\n  b->d_filename = safe_strdup (\"msg.pgp\");\n  b->use_disp = 1;\n\n#endif\n\n  b->disposition = DISPNONE;\n  b->unlink   = 1;\n\n  b->noconv = 1;\n  b->use_disp = 0;\n  \n  if (!(flags & ENCRYPT))\n    b->encoding = a->encoding;\n  \n  return b;\n}\n\nint pgp_send_menu (HEADER *msg, int *redraw)\n{\n  pgp_key_t p;\n  char input_signas[SHORT_STRING];\n  char *prompt, *letters, *choices;\n  char promptbuf[LONG_STRING];\n  int choice;\n\n  if (!(WithCrypto & APPLICATION_PGP))\n    return msg->security;\n\n  /* If autoinline and no crypto options set, then set inline. */\n  if (option (OPTPGPAUTOINLINE) && \n      !((msg->security & APPLICATION_PGP) && (msg->security & (SIGN|ENCRYPT))))\n    msg->security |= INLINE;\n\n  msg->security |= APPLICATION_PGP;\n\n  /*\n   * Opportunistic encrypt is controlling encryption.  Allow to toggle\n   * between inline and mime, but not turn encryption on or off.\n   * NOTE: \"Signing\" and \"Clearing\" only adjust the sign bit, so we have different\n   *       letter choices for those.\n   */\n  if (option (OPTCRYPTOPPORTUNISTICENCRYPT) && (msg->security & OPPENCRYPT))\n  {\n    if (msg->security & (ENCRYPT | SIGN))\n    {\n      snprintf (promptbuf, sizeof (promptbuf),\n          _(\"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"),\n          (msg->security & INLINE) ? _(\"PGP/M(i)ME\") : _(\"(i)nline\"));\n      prompt = promptbuf;\n      /* L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n         'clear'.  Please use a corresponding letter in your language.\n         Alternatively, you may duplicate the letter 'c' is translated to.\n         This comment also applies to the five following letter sequences. */\n      letters = _(\"safcoi\");\n      choices = \"SaFCoi\";\n    }\n    else\n    {\n      prompt = _(\"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \");\n      letters = _(\"safco\");\n      choices = \"SaFCo\";\n    }\n  }\n  /*\n   * Opportunistic encryption option is set, but is toggled off\n   * for this message.\n   */\n  else if (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n  {\n    /* When the message is not selected for signing or encryption, the toggle\n    * between PGP/MIME and Traditional doesn't make sense.\n    */\n    if (msg->security & (ENCRYPT | SIGN))\n    {\n\n      snprintf (promptbuf, sizeof (promptbuf), \n          _(\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc mode? \"),\n          (msg->security & INLINE) ? _(\"PGP/M(i)ME\") : _(\"(i)nline\"));\n      prompt = promptbuf;\n      letters = _(\"esabfcoi\");\n      choices = \"esabfcOi\";\n    }\n    else\n    {\n      prompt = _(\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \");\n      letters = _(\"esabfco\");\n      choices = \"esabfcO\";\n    }\n  }\n  /*\n   * Opportunistic encryption is unset\n   */\n  else\n  {\n    if (msg->security & (ENCRYPT | SIGN))\n    {\n\n      snprintf (promptbuf, sizeof (promptbuf), \n          _(\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"),\n          (msg->security & INLINE) ? _(\"PGP/M(i)ME\") : _(\"(i)nline\"));\n      prompt = promptbuf;\n      letters = _(\"esabfci\");\n      choices = \"esabfci\";\n    }\n    else\n    {\n      prompt = _(\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \");\n      letters = _(\"esabfc\");\n      choices = \"esabfc\";\n    }\n  }\n\n  choice = mutt_multi_choice (prompt, letters);\n  if (choice > 0)\n  {\n    switch (choices[choice - 1])\n    {\n    case 'e': /* (e)ncrypt */\n      msg->security |= ENCRYPT;\n      msg->security &= ~SIGN;\n      break;\n\n    case 's': /* (s)ign */\n      msg->security &= ~ENCRYPT;\n      msg->security |= SIGN;\n      break;\n\n    case 'S': /* (s)ign in oppenc mode */\n      msg->security |= SIGN;\n      break;\n\n    case 'a': /* sign (a)s */\n      unset_option(OPTPGPCHECKTRUST);\n\n      if ((p = pgp_ask_for_key (_(\"Sign as: \"), NULL, 0, PGP_SECRING)))\n      {\n        snprintf (input_signas, sizeof (input_signas), \"0x%s\",\n            pgp_fpr_or_lkeyid (p));\n        mutt_str_replace (&PgpSignAs, input_signas);\n        pgp_free_key (&p);\n\n        msg->security |= SIGN;\n\n        crypt_pgp_void_passphrase ();  /* probably need a different passphrase */\n      }\n      *redraw = REDRAW_FULL;\n      break;\n\n    case 'b': /* (b)oth */\n      msg->security |= (ENCRYPT | SIGN);\n      break;\n\n    case 'f': /* (f)orget it: kept for backward compatibility. */\n    case 'c': /* (c)lear     */\n      msg->security &= ~(ENCRYPT | SIGN);\n      break;\n\n    case 'F': /* (f)orget it or (c)lear in oppenc mode */\n    case 'C':\n      msg->security &= ~SIGN;\n      break;\n\n    case 'O': /* oppenc mode on */\n      msg->security |= OPPENCRYPT;\n      crypt_opportunistic_encrypt (msg);\n      break;\n\n    case 'o': /* oppenc mode off */\n      msg->security &= ~OPPENCRYPT;\n      break;\n\n    case 'i': /* toggle (i)nline */\n      msg->security ^= INLINE;\n      break;\n    }\n  }\n\n  return (msg->security);\n}\n\n\n#endif /* CRYPT_BACKEND_CLASSIC_PGP */\n"
  },
  {
    "path": "pgp.h",
    "content": "/*\n * Copyright (C) 1996-1997 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2003 Thomas Roessler <roessler@does-not-exist.org>\n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifdef CRYPT_BACKEND_CLASSIC_PGP\n\n#include \"mutt_crypt.h\"\n#include \"pgplib.h\"\n\n\n/* prototypes */\n\nint pgp_use_gpg_agent(void);\n\nint pgp_check_traditional (FILE *, BODY *, int);\nBODY *pgp_decrypt_part (BODY *, STATE *, FILE *, BODY *);\nBODY *pgp_make_key_attachment (char *);\nconst char *pgp_micalg (const char *fname);\n\nchar *_pgp_keyid (pgp_key_t);\nchar *pgp_keyid (pgp_key_t);\nchar *pgp_short_keyid (pgp_key_t);\nchar *pgp_long_keyid (pgp_key_t);\nchar *pgp_fingerprint (pgp_key_t k);\nchar *pgp_fpr_or_lkeyid (pgp_key_t k);\n\n\nint mutt_check_pgp (HEADER * h);\n\nint pgp_decrypt_mime (FILE *, FILE **, BODY *, BODY **);\n\n/* int pgp_string_matches_hint (const char *s, LIST * hints); */\n\n/* pgp_key_t gpg_get_candidates (struct pgp_vinfo *, pgp_ring_t, LIST *); */\npgp_key_t pgp_ask_for_key (char *, char *, short, pgp_ring_t);\npgp_key_t pgp_get_candidates (pgp_ring_t, LIST *);\npgp_key_t pgp_getkeybyaddr (ADDRESS *, short, pgp_ring_t, int);\npgp_key_t pgp_getkeybystr (char *, short, pgp_ring_t);\n\nchar *pgp_findKeys (ADDRESS *adrlist, int oppenc_mode);\n\nvoid pgp_forget_passphrase (void);\nint pgp_application_pgp_handler (BODY *, STATE *);\nint pgp_encrypted_handler (BODY *, STATE *);\nvoid pgp_extract_keys_from_attachment_list (FILE * fp, int tag, BODY * top);\nvoid pgp_void_passphrase (void);\nint pgp_valid_passphrase (void);\n\n\n/* The PGP invocation interface - not really beautiful. */\n\npid_t pgp_invoke_decode (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t const char *fname, short need_passphrase);\npid_t pgp_invoke_verify (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t const char *fname, const char *sig_fname);\npid_t pgp_invoke_decrypt (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t  int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t  const char *fname);\npid_t pgp_invoke_sign (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t       int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t       const char *fname);\npid_t pgp_invoke_encrypt (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t  int pgpinfd, int pgpoutfd, int pgperrfd,\n\t\t\t  const char *fname, const char *uids, int sign);\npid_t pgp_invoke_export (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t const char *uids);\npid_t pgp_invoke_verify_key (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t     int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t     const char *uids);\npid_t pgp_invoke_list_keys (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t    int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t    pgp_ring_t keyring, LIST *hints);\npid_t pgp_invoke_traditional (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t  int pgpinfd, int pgpoutfd, int pgperrfd,\n\t\t\t  const char *fname, const char *uids, int flags);\n\n\nvoid pgp_invoke_import (const char *fname);\nvoid pgp_invoke_getkeys (ADDRESS *);\n\n\n/* private ? */\nint pgp_verify_one (BODY *, STATE *, const char *);\nBODY *pgp_traditional_encryptsign (BODY *, int, char *);\nBODY *pgp_encrypt_message (BODY *, char *, int);\nBODY *pgp_sign_message (BODY *);\n\nint pgp_send_menu (HEADER *msg, int *redraw);\n\n#endif /* CRYPT_BACKEND_CLASSIC_PGP */\n"
  },
  {
    "path": "pgpewrap.c",
    "content": "/*\n * C version by Wessel Dankers <wsl@fruit.eu.org>\n *\n * This code is in the public domain.\n *\n */\n#ifdef HAVE_CONFIG_H\n#include \"config.h\"\n#endif\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <string.h>\n\nvoid print_usage(const char *progname) {\n\tfprintf(stderr, \"Command line usage: %s [flags] -- prefix [recipients]\\n\", progname);\n\texit(1);\n}\n\nint main(int argc, char **argv) {\n\tchar **opts, **opt, *pfx;\n\tint i;\n\n\tif (argc <= 1) {\n\t\tprint_usage(argv[0]);\n        }\n\n\topts = malloc((2 * argc + 1) * sizeof (* opts));\t/* __MEM_CHECKED__ */\n\tif(!opts) {\n\t\tperror(argv[0]);\n\t\texit(2);\n\t}\n\n\tif (argc < 2)\n\t{\n\t  fprintf (stderr,\n\t\t   \"Command line usage: %s [flags] -- prefix [recipients]\\n\",\n\t\t   argv[0]);\n\t  return 1;\n\t}\n\n\topt = opts;\n\t*opt++ = argv[1];\n\tpfx = NULL;\n\n\tfor(i = 2; i < argc; ) {\n\t\tif(!strcmp(argv[i], \"--\")) {\n\t\t\ti += 2;\n\t\t\tif(i > argc) {\n\t\t\t\tprint_usage(argv[0]);\n\t\t\t}\n\t\t\tpfx = argv[i-1];\n\t\t}\n\t\tif(pfx)\n\t\t\t*opt++ = pfx;\n\t\t*opt++ = argv[i++];\n\t}\n\t*opt = NULL;\n\n\texecvp(opts[0], opts);\n\tperror(argv[0]);\n\treturn 2;\n}\n"
  },
  {
    "path": "pgpinvoke.c",
    "content": "/*\n * Copyright (C) 1997-2003 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */ \n\n/* This file contains the new pgp invocation code.  Note that this\n * is almost entirely format based.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <sys/types.h>\n#include <sys/stat.h>\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <fcntl.h>\n#include <time.h>\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_idna.h\"\n#include \"pgp.h\"\n#include \"rfc822.h\"\n\n/*\n * The actual command line formatter.\n */\n\nstruct pgp_command_context {\n  short need_passphrase;\t/* %p */\n  const char *fname;\t\t/* %f */\n  const char *sig_fname;\t/* %s */\n  const char *signas;\t\t/* %a */\n  const char *ids;\t\t/* %r */\n};\n\n\nconst char *_mutt_fmt_pgp_command (char *dest,\n\t\t\t\t   size_t destlen,\n\t\t\t\t   size_t col,\n\t\t\t\t   char op,\n\t\t\t\t   const char *src,\n\t\t\t\t   const char *prefix,\n\t\t\t\t   const char *ifstring,\n\t\t\t\t   const char *elsestring,\n\t\t\t\t   unsigned long data,\n\t\t\t\t   format_flag flags)\n{\n  char fmt[16];\n  struct pgp_command_context *cctx = (struct pgp_command_context *) data;\n  int optional = (flags & M_FORMAT_OPTIONAL);\n  \n  switch (op)\n  {\n    case 'r':\n    {\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (cctx->ids));\n      }\n      else if (!cctx->ids)\n\toptional = 0;\n      break;\n    }\n    \n    case 'a':\n    {\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (cctx->signas));\n      }\n      else if (!cctx->signas)\n\toptional = 0;\n      break;\n    }\n    \n    case 's':\n    {\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (cctx->sig_fname));\n      }\n      else if (!cctx->sig_fname)\n\toptional = 0;\n      break;\n    }\n    \n    case 'f':\n    {\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (cctx->fname));\n      }\n      else if (!cctx->fname)\n\toptional = 0;\n      break;\n    }\n    \n    case 'p':\n    {\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, cctx->need_passphrase ? \"PGPPASSFD=0\" : \"\");\n      }\n      else if (!cctx->need_passphrase || pgp_use_gpg_agent())\n\toptional = 0;\n      break;\n    }\n    default:\n    {\n      *dest = '\\0';\n      break;\n    }\n  }\n\n  if (optional)\n    mutt_FormatString (dest, destlen, col, ifstring, _mutt_fmt_pgp_command, data, 0);\n  else if (flags & M_FORMAT_OPTIONAL)\n    mutt_FormatString (dest, destlen, col, elsestring, _mutt_fmt_pgp_command, data, 0);\n\n  return (src);\n}\n\nvoid mutt_pgp_command (char *d, size_t dlen, struct pgp_command_context *cctx, const char *fmt)\n{\n  mutt_FormatString (d, dlen, 0, NONULL (fmt), _mutt_fmt_pgp_command, (unsigned long) cctx, 0);\n  dprint (2, (debugfile, \"mutt_pgp_command: %s\\n\", d));\n}\n\n/*\n * Glue.\n */\n\n\nstatic pid_t pgp_invoke (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t int pgpinfd, int pgpoutfd, int pgperrfd,\n\t\t\t short need_passphrase,\n\t\t\t const char *fname,\n\t\t\t const char *sig_fname,\n\t\t\t const char *signas,\n\t\t\t const char *ids,\n\t\t\t const char *format)\n{\n  struct pgp_command_context cctx;\n  char cmd[HUGE_STRING];\n  \n  memset (&cctx, 0, sizeof (cctx));\n\n  if (!format || !*format)\n    return (pid_t) -1;\n  \n  cctx.need_passphrase = need_passphrase;\n  cctx.fname\t       = fname;\n  cctx.sig_fname       = sig_fname;\n  cctx.signas\t       = signas;\n  cctx.ids\t       = ids;\n  \n  mutt_pgp_command (cmd, sizeof (cmd), &cctx, format);\n  \n  return mutt_create_filter_fd (cmd, pgpin, pgpout, pgperr,\n\t\t\t       pgpinfd, pgpoutfd, pgperrfd);\n}\n\n\n/*\n * The exported interface.\n * \n * This is historic and may be removed at some point.\n *\n */\n\n\npid_t pgp_invoke_decode (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t const char *fname, short need_passphrase)\n{\n  return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t     need_passphrase, fname, NULL, PgpSignAs, NULL, \n\t\t     PgpDecodeCommand);\n}\n\npid_t pgp_invoke_verify (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t const char *fname, const char *sig_fname)\n{\n  return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t     0, fname, sig_fname, PgpSignAs, NULL, PgpVerifyCommand);\n}\n\npid_t pgp_invoke_decrypt (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t  int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t  const char *fname)\n{\n  return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t     1, fname, NULL, PgpSignAs, NULL, PgpDecryptCommand);\n}\n\npid_t pgp_invoke_sign (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t       int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t       const char *fname)\n{\n  return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t     1, fname, NULL, PgpSignAs, NULL, PgpSignCommand);\n}\n\n\npid_t pgp_invoke_encrypt (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t  int pgpinfd, int pgpoutfd, int pgperrfd,\n\t\t\t  const char *fname, const char *uids, int sign)\n{\n  if (sign)\n    return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t       1, fname, NULL, PgpSignAs, uids, \n\t\t       PgpEncryptSignCommand);\n  else\n    return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t       0, fname, NULL, PgpSignAs, uids,\n\t\t       PgpEncryptOnlyCommand);\n}\n\npid_t pgp_invoke_traditional (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t      int pgpinfd, int pgpoutfd, int pgperrfd,\n\t\t\t      const char *fname, const char *uids, int flags)\n{\n  if (flags & ENCRYPT)\n    return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t       flags & SIGN ? 1 : 0, fname, NULL, PgpSignAs, uids, \n\t\t       flags & SIGN ? PgpEncryptSignCommand : PgpEncryptOnlyCommand);\n  else\n    return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t       1, fname, NULL, PgpSignAs, NULL,\n\t\t       PgpClearSignCommand);\n}\n\n\nvoid pgp_invoke_import (const char *fname)\n{\n  char _fname[_POSIX_PATH_MAX + SHORT_STRING];\n  char cmd[HUGE_STRING];\n  struct pgp_command_context cctx;\n  \n  memset (&cctx, 0, sizeof (cctx));\n  \n  mutt_quote_filename (_fname, sizeof (_fname), fname);\n  cctx.fname = _fname;\n  cctx.signas = PgpSignAs;\n  \n  mutt_pgp_command (cmd, sizeof (cmd), &cctx, PgpImportCommand);\n  mutt_system (cmd);\n}\n\nvoid pgp_invoke_getkeys (ADDRESS *addr)\n{\n  char buff[LONG_STRING];\n  char tmp[LONG_STRING];\n  char cmd[HUGE_STRING];\n  int devnull;\n\n  char *personal;\n  \n  struct pgp_command_context cctx;\n\n  if (!PgpGetkeysCommand) return;\n  \n  memset (&cctx, 0, sizeof (cctx));\n\n  personal = addr->personal;\n  addr->personal = NULL;\n  \n  *tmp = '\\0';\n  mutt_addrlist_to_local (addr);\n  rfc822_write_address_single (tmp, sizeof (tmp), addr, 0);\n  mutt_quote_filename (buff, sizeof (buff), tmp);\n\n  addr->personal = personal;\n  \n  cctx.ids = buff;\n  \n  mutt_pgp_command (cmd, sizeof (cmd), &cctx, PgpGetkeysCommand);\n\n  devnull = open (\"/dev/null\", O_RDWR);\n\n  if (!isendwin ()) mutt_message  _(\"Fetching PGP key...\");\n\n  mutt_system (cmd);\n\n  if (!isendwin ()) mutt_clear_error ();\n\n  close (devnull);\n}\n\npid_t pgp_invoke_export (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t const char *uids)\n{\n  return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t     0, NULL, NULL, PgpSignAs, uids,\n\t\t     PgpExportCommand);\n}\n\npid_t pgp_invoke_verify_key (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t     int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t     const char *uids)\n{\n  return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t     0, NULL, NULL, PgpSignAs, uids,\n\t\t     PgpVerifyKeyCommand);\n}\n\npid_t pgp_invoke_list_keys (FILE **pgpin, FILE **pgpout, FILE **pgperr,\n\t\t\t    int pgpinfd, int pgpoutfd, int pgperrfd, \n\t\t\t    pgp_ring_t keyring, LIST *hints)\n{\n  char uids[HUGE_STRING];\n  char tmpuids[HUGE_STRING];\n  char quoted[HUGE_STRING];\n  \n  *uids = '\\0';\n  \n  for (; hints; hints = hints->next)\n  {\n    mutt_quote_filename (quoted, sizeof (quoted), (char *) hints->data);\n    snprintf (tmpuids, sizeof (tmpuids), \"%s %s\", uids, quoted);\n    strcpy (uids, tmpuids);\t/* __STRCPY_CHECKED__ */\n  }\n\n  return pgp_invoke (pgpin, pgpout, pgperr, pgpinfd, pgpoutfd, pgperrfd,\n\t\t     0, NULL, NULL, PgpSignAs, uids,\n\t\t     keyring == PGP_SECRING ? PgpListSecringCommand :\n\t\t     PgpListPubringCommand);\n}\n"
  },
  {
    "path": "pgpkey.c",
    "content": "/*\n * Copyright (C) 1996-1997,2007 Michael R. Elkins <me@mutt.org>\n * Copyright (c) 1998-2003 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"mime.h\"\n#include \"pgp.h\"\n#include \"pager.h\"\n#include \"sort.h\"\n\n#include <string.h>\n#include <ctype.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/stat.h>\n#include <sys/wait.h>\n\n#include <locale.h>\n\n#ifdef CRYPT_BACKEND_CLASSIC_PGP\n\nstruct pgp_cache\n{\n  char *what;\n  char *dflt;\n  struct pgp_cache *next;\n};\n\nstatic struct pgp_cache *id_defaults = NULL;\n\nstatic const char trust_flags[] = \"?- +\";\n\nstatic char *pgp_key_abilities (int flags)\n{\n  static char buff[3];\n\n  if (!(flags & KEYFLAG_CANENCRYPT))\n    buff[0] = '-';\n  else if (flags & KEYFLAG_PREFER_SIGNING)\n    buff[0] = '.';\n  else\n    buff[0] = 'e';\n\n  if (!(flags & KEYFLAG_CANSIGN))\n    buff[1] = '-';\n  else if (flags & KEYFLAG_PREFER_ENCRYPTION)\n    buff[1] = '.';\n  else\n    buff[1] = 's';\n\n  buff[2] = '\\0';\n\n  return buff;\n}\n\nstatic char pgp_flags (int flags)\n{\n  if (flags & KEYFLAG_REVOKED)\n    return 'R';\n  else if (flags & KEYFLAG_EXPIRED)\n    return 'X';\n  else if (flags & KEYFLAG_DISABLED)\n    return 'd';\n  else if (flags & KEYFLAG_CRITICAL)\n    return 'c';\n  else \n    return ' ';\n}\n\nstatic pgp_key_t pgp_principal_key (pgp_key_t key)\n{\n  if (key->flags & KEYFLAG_SUBKEY && key->parent)\n    return key->parent;\n  else\n    return key;\n}\n\n/*\n * Format an entry on the PGP key selection menu.\n * \n * %n\tnumber\n * %k\tkey id\t\t%K \tkey id of the principal key\n * %u\tuser id\n * %a\talgorithm\t%A      algorithm of the princ. key\n * %l\tlength\t\t%L\tlength of the princ. key\n * %f\tflags\t\t%F \tflags of the princ. key\n * %c\tcapabilities\t%C\tcapabilities of the princ. key\n * %t\ttrust/validity of the key-uid association\n * %[...] date of key using strftime(3)\n */\n\ntypedef struct pgp_entry\n{\n  size_t num;\n  pgp_uid_t *uid;\n} pgp_entry_t;\n\nstatic const char *pgp_entry_fmt (char *dest,\n\t\t\t\t  size_t destlen,\n\t\t\t\t  size_t col,\n\t\t\t\t  char op,\n\t\t\t\t  const char *src,\n\t\t\t\t  const char *prefix,\n\t\t\t\t  const char *ifstring,\n\t\t\t\t  const char *elsestring,\n\t\t\t\t  unsigned long data,\n\t\t\t\t  format_flag flags)\n{\n  char fmt[16];\n  pgp_entry_t *entry;\n  pgp_uid_t *uid;\n  pgp_key_t key, pkey;\n  int kflags = 0;\n  int optional = (flags & M_FORMAT_OPTIONAL);\n\n  entry = (pgp_entry_t *) data;\n  uid   = entry->uid;\n  key   = uid->parent;\n  pkey  = pgp_principal_key (key);\n\n  if (isupper ((unsigned char) op))\n    key = pkey;\n\n  kflags = key->flags | (pkey->flags & KEYFLAG_RESTRICTIONS)\n    | uid->flags;\n\n  switch (ascii_tolower (op))\n  {\n    case '[':\n\n      {\n\tconst char *cp;\n\tchar buf2[SHORT_STRING], *p;\n\tint do_locales;\n\tstruct tm *tm;\n\tsize_t len;\n\n\tp = dest;\n\n\tcp = src;\n\tif (*cp == '!')\n\t{\n\t  do_locales = 0;\n\t  cp++;\n\t}\n\telse\n\t  do_locales = 1;\n\n\tlen = destlen - 1;\n\twhile (len > 0 && *cp != ']')\n\t{\n\t  if (*cp == '%')\n\t  {\n\t    cp++;\n\t    if (len >= 2)\n\t    {\n\t      *p++ = '%';\n\t      *p++ = *cp;\n\t      len -= 2;\n\t    }\n\t    else\n\t      break; /* not enough space */\n\t    cp++;\n\t  }\n\t  else\n\t  {\n\t    *p++ = *cp++;\n\t    len--;\n\t  }\n\t}\n\t*p = 0;\n\n\tif (do_locales && Locale)\n\t  setlocale (LC_TIME, Locale);\n\n\ttm = localtime (&key->gen_time);\n\n\tstrftime (buf2, sizeof (buf2), dest, tm);\n\n\tif (do_locales)\n\t  setlocale (LC_TIME, \"C\");\n\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, buf2);\n\tif (len > 0)\n\t  src = cp + 1;\n      }\n      break;\n    case 'n':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (dest, destlen, fmt, entry->num);\n      }\n      break;\n    case 'k':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, _pgp_keyid (key));\n      }\n      break;\n    case 'u':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (uid->addr));\n      }\n      break;\n    case 'a':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, key->algorithm);\n      }\n      break;\n    case 'l':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (dest, destlen, fmt, key->keylen);\n      }\n      break;\n    case 'f':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sc\", prefix);\n\tsnprintf (dest, destlen, fmt, pgp_flags (kflags));\n      }\n      else if (!(kflags & (KEYFLAG_RESTRICTIONS)))\n        optional = 0;\n      break;\n    case 'c':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, pgp_key_abilities (kflags));\n      }\n      else if (!(kflags & (KEYFLAG_ABILITIES)))\n        optional = 0;\n      break;\n    case 't':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sc\", prefix);\n\tsnprintf (dest, destlen, fmt, trust_flags[uid->trust & 0x03]);\n      }\n      else if (!(uid->trust & 0x03))\n        /* undefined trust */\n        optional = 0;\n      break;\n    default:\n      *dest = '\\0';\n  }\n\n  if (optional)\n    mutt_FormatString (dest, destlen, col, ifstring, mutt_attach_fmt, data, 0);\n  else if (flags & M_FORMAT_OPTIONAL)\n    mutt_FormatString (dest, destlen, col, elsestring, mutt_attach_fmt, data, 0);\n  return (src);\n}\n\nstatic void pgp_entry (char *s, size_t l, MUTTMENU * menu, int num)\n{\n  pgp_uid_t **KeyTable = (pgp_uid_t **) menu->data;\n  pgp_entry_t entry;\n\n  entry.uid = KeyTable[num];\n  entry.num = num + 1;\n\n  mutt_FormatString (s, l, 0, NONULL (PgpEntryFormat), pgp_entry_fmt, \n\t\t     (unsigned long) &entry, M_FORMAT_ARROWCURSOR);\n}\n\nstatic int _pgp_compare_address (const void *a, const void *b)\n{\n  int r;\n\n  pgp_uid_t **s = (pgp_uid_t **) a;\n  pgp_uid_t **t = (pgp_uid_t **) b;\n\n  if ((r = mutt_strcasecmp ((*s)->addr, (*t)->addr)))\n    return r > 0;\n  else\n    return (mutt_strcasecmp (pgp_fpr_or_lkeyid ((*s)->parent),\n\t\t\t     pgp_fpr_or_lkeyid ((*t)->parent)) > 0);\n}\n\nstatic int pgp_compare_address (const void *a, const void *b)\n{\n  return ((PgpSortKeys & SORT_REVERSE) ? !_pgp_compare_address (a, b)\n\t\t\t\t       : _pgp_compare_address (a, b));\n}\n\n\n\nstatic int _pgp_compare_keyid (const void *a, const void *b)\n{\n  int r;\n\n  pgp_uid_t **s = (pgp_uid_t **) a;\n  pgp_uid_t **t = (pgp_uid_t **) b;\n\n  if ((r = mutt_strcasecmp (pgp_fpr_or_lkeyid ((*s)->parent), \n\t\t\t    pgp_fpr_or_lkeyid ((*t)->parent))))\n    return r > 0;\n  else\n    return (mutt_strcasecmp ((*s)->addr, (*t)->addr)) > 0;\n}\n\nstatic int pgp_compare_keyid (const void *a, const void *b)\n{\n  return ((PgpSortKeys & SORT_REVERSE) ? !_pgp_compare_keyid (a, b)\n\t\t\t\t       : _pgp_compare_keyid (a, b));\n}\n\nstatic int _pgp_compare_date (const void *a, const void *b)\n{\n  int r;\n  pgp_uid_t **s = (pgp_uid_t **) a;\n  pgp_uid_t **t = (pgp_uid_t **) b;\n\n  if ((r = ((*s)->parent->gen_time - (*t)->parent->gen_time)))\n    return r > 0;\n  return (mutt_strcasecmp ((*s)->addr, (*t)->addr)) > 0;\n}\n\nstatic int pgp_compare_date (const void *a, const void *b)\n{\n  return ((PgpSortKeys & SORT_REVERSE) ? !_pgp_compare_date (a, b)\n\t\t\t\t       : _pgp_compare_date (a, b));\n}\n\nstatic int _pgp_compare_trust (const void *a, const void *b)\n{\n  int r;\n\n  pgp_uid_t **s = (pgp_uid_t **) a;\n  pgp_uid_t **t = (pgp_uid_t **) b;\n\n  if ((r = (((*s)->parent->flags & (KEYFLAG_RESTRICTIONS))\n\t    - ((*t)->parent->flags & (KEYFLAG_RESTRICTIONS)))))\n    return r > 0;\n  if ((r = ((*s)->trust - (*t)->trust)))\n    return r < 0;\n  if ((r = ((*s)->parent->keylen - (*t)->parent->keylen)))\n    return r < 0;\n  if ((r = ((*s)->parent->gen_time - (*t)->parent->gen_time)))\n    return r < 0;\n  if ((r = mutt_strcasecmp ((*s)->addr, (*t)->addr)))\n    return r > 0;\n  return (mutt_strcasecmp (pgp_fpr_or_lkeyid ((*s)->parent), \n\t\t\t   pgp_fpr_or_lkeyid ((*t)->parent))) > 0;\n}\n\nstatic int pgp_compare_trust (const void *a, const void *b)\n{\n  return ((PgpSortKeys & SORT_REVERSE) ? !_pgp_compare_trust (a, b)\n\t\t\t\t       : _pgp_compare_trust (a, b));\n}\n\nstatic int pgp_key_is_valid (pgp_key_t k)\n{\n  pgp_key_t pk = pgp_principal_key (k);\n  if (k->flags & KEYFLAG_CANTUSE)\n    return 0;\n  if (pk->flags & KEYFLAG_CANTUSE)\n    return 0;\n\n  return 1;\n}\n\nstatic int pgp_id_is_strong (pgp_uid_t *uid)\n{\n  if ((uid->trust & 3) < 3)\n    return 0;\n  /* else */\n  return 1;\n}\n\nstatic int pgp_id_is_valid (pgp_uid_t *uid)\n{\n  if (!pgp_key_is_valid (uid->parent))\n    return 0;\n  if (uid->flags & KEYFLAG_CANTUSE)\n    return 0;\n  /* else */\n  return 1;\n}\n\n#define PGP_KV_VALID  \t1\n#define PGP_KV_ADDR   \t2\n#define PGP_KV_STRING \t4\n#define PGP_KV_STRONGID 8\n\n#define PGP_KV_MATCH (PGP_KV_ADDR|PGP_KV_STRING)\n\nstatic int pgp_id_matches_addr (ADDRESS *addr, ADDRESS *u_addr, pgp_uid_t *uid)\n{\n  int rv = 0;\n\n  if (pgp_id_is_valid (uid))\n    rv |= PGP_KV_VALID;\n\n  if (pgp_id_is_strong (uid))\n    rv |= PGP_KV_STRONGID;\n\n  if (addr->mailbox && u_addr->mailbox\n      && mutt_strcasecmp (addr->mailbox, u_addr->mailbox) == 0)\n    rv |= PGP_KV_ADDR;\n\n  if (addr->personal && u_addr->personal\n      && mutt_strcasecmp (addr->personal, u_addr->personal) == 0)\n    rv |= PGP_KV_STRING;\n\n  return rv;\n}\n\nstatic pgp_key_t pgp_select_key (pgp_key_t keys,\n                                 ADDRESS * p, const char *s)\n{\n  int keymax;\n  pgp_uid_t **KeyTable;\n  MUTTMENU *menu;\n  int i, done = 0;\n  char helpstr[LONG_STRING], buf[LONG_STRING], tmpbuf[STRING];\n  char cmd[LONG_STRING], tempfile[_POSIX_PATH_MAX];\n  FILE *fp, *devnull;\n  pid_t thepid;\n  pgp_key_t kp;\n  pgp_uid_t *a;\n  int (*f) (const void *, const void *);\n\n  int unusable = 0;\n\n  keymax = 0;\n  KeyTable = NULL;\n\n  for (i = 0, kp = keys; kp; kp = kp->next)\n  {\n    if (!option (OPTPGPSHOWUNUSABLE) && (kp->flags & KEYFLAG_CANTUSE))\n    {\n      unusable = 1;\n      continue;\n    }\n\n    for (a = kp->address; a; a = a->next)\n    {\n      if (!option (OPTPGPSHOWUNUSABLE) && (a->flags & KEYFLAG_CANTUSE))\n      {\n\tunusable = 1;\n\tcontinue;\n      }\n\n      if (i == keymax)\n      {\n\tkeymax += 5;\n\tsafe_realloc (&KeyTable, sizeof (pgp_uid_t *) * keymax);\n      }\n\n      KeyTable[i++] = a;\n    }\n  }\n\n  if (!i && unusable)\n  {\n    mutt_error _(\"All matching keys are expired, revoked, or disabled.\");\n    mutt_sleep (1);\n    return NULL;\n  }\n\n  switch (PgpSortKeys & SORT_MASK)\n  {\n    case SORT_DATE:\n      f = pgp_compare_date;\n      break;\n    case SORT_KEYID:\n      f = pgp_compare_keyid;\n      break;\n    case SORT_ADDRESS:\n      f = pgp_compare_address;\n      break;\n    case SORT_TRUST:\n    default:\n      f = pgp_compare_trust;\n      break;\n  }\n  qsort (KeyTable, i, sizeof (pgp_uid_t *), f);\n\n  helpstr[0] = 0;\n  mutt_make_help (buf, sizeof (buf), _(\"Exit  \"), MENU_PGP, OP_EXIT);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n  mutt_make_help (buf, sizeof (buf), _(\"Select  \"), MENU_PGP,\n\t\t  OP_GENERIC_SELECT_ENTRY);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n  mutt_make_help (buf, sizeof (buf), _(\"Check key  \"), MENU_PGP, OP_VERIFY_KEY);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n  mutt_make_help (buf, sizeof (buf), _(\"Help\"), MENU_PGP, OP_HELP);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n\n  menu = mutt_new_menu (MENU_PGP);\n  menu->max = i;\n  menu->make_entry = pgp_entry;\n  menu->help = helpstr;\n  menu->data = KeyTable;\n\n  if (p)\n    snprintf (buf, sizeof (buf), _(\"PGP keys matching <%s>.\"), p->mailbox);\n  else\n    snprintf (buf, sizeof (buf), _(\"PGP keys matching \\\"%s\\\".\"), s);\n\n\n  menu->title = buf;\n\n  kp = NULL;\n\n  mutt_clear_error ();\n\n  while (!done)\n  {\n    switch (mutt_menuLoop (menu))\n    {\n\n    case OP_VERIFY_KEY:\n\n      mutt_mktemp (tempfile, sizeof (tempfile));\n      if ((devnull = fopen (\"/dev/null\", \"w\")) == NULL)\t/* __FOPEN_CHECKED__ */\n      {\n\tmutt_perror _(\"Can't open /dev/null\");\n\tbreak;\n      }\n      if ((fp = safe_fopen (tempfile, \"w\")) == NULL)\n      {\n\tsafe_fclose (&devnull);\n\tmutt_perror _(\"Can't create temporary file\");\n\tbreak;\n      }\n\n      mutt_message _(\"Invoking PGP...\");\n\n      snprintf (tmpbuf, sizeof (tmpbuf), \"0x%s\",\n          pgp_fpr_or_lkeyid (pgp_principal_key (KeyTable[menu->current]->parent)));\n\n      if ((thepid = pgp_invoke_verify_key (NULL, NULL, NULL, -1,\n\t\t    fileno (fp), fileno (devnull), tmpbuf)) == -1)\n      {\n\tmutt_perror _(\"Can't create filter\");\n\tunlink (tempfile);\n\tsafe_fclose (&fp);\n\tsafe_fclose (&devnull);\n      }\n\n      mutt_wait_filter (thepid);\n      safe_fclose (&fp);\n      safe_fclose (&devnull);\n      mutt_clear_error ();\n      snprintf (cmd, sizeof (cmd), _(\"Key ID: 0x%s\"), \n\t\tpgp_keyid (pgp_principal_key (KeyTable[menu->current]->parent)));\n      mutt_do_pager (cmd, tempfile, 0, NULL);\n      menu->redraw = REDRAW_FULL;\n\n      break;\n\n    case OP_VIEW_ID:\n\n      mutt_message (\"%s\", NONULL (KeyTable[menu->current]->addr));\n      break;\n\n    case OP_GENERIC_SELECT_ENTRY:\n\n\n      /* XXX make error reporting more verbose */\n\n      if (option (OPTPGPCHECKTRUST))\n\tif (!pgp_key_is_valid (KeyTable[menu->current]->parent))\n\t{\n\t  mutt_error _(\"This key can't be used: expired/disabled/revoked.\");\n\t  break;\n\t}\n\n      if (option (OPTPGPCHECKTRUST) &&\n\t  (!pgp_id_is_valid (KeyTable[menu->current])\n\t   || !pgp_id_is_strong (KeyTable[menu->current])))\n      {\n\tchar *s = \"\";\n\tchar buff[LONG_STRING];\n\t\n\tif (KeyTable[menu->current]->flags & KEYFLAG_CANTUSE)\n\t  s = N_(\"ID is expired/disabled/revoked.\");\n\telse switch (KeyTable[menu->current]->trust & 0x03)\n\t{\n\t  case 0:\n\t    s = N_(\"ID has undefined validity.\");\n\t    break;\n\t  case 1:\n\t    s = N_(\"ID is not valid.\");\n\t    break;\n\t  case 2:\n\t    s = N_(\"ID is only marginally valid.\");\n\t    break;\n\t}\n\n\tsnprintf (buff, sizeof (buff), _(\"%s Do you really want to use the key?\"),\n\t\t  _(s));\n\n\tif (mutt_yesorno (buff, M_NO) != M_YES)\n\t{\n\t  mutt_clear_error ();\n\t  break;\n\t}\n      }\n\n# if 0\n      kp = pgp_principal_key (KeyTable[menu->current]->parent);\n# else\n      kp = KeyTable[menu->current]->parent;\n# endif\n      done = 1;\n      break;\n\n    case OP_EXIT:\n\n      kp = NULL;\n      done = 1;\n      break;\n    }\n  }\n\n  mutt_menuDestroy (&menu);\n  FREE (&KeyTable);\n\n  set_option (OPTNEEDREDRAW);\n\n  return (kp);\n}\n\npgp_key_t pgp_ask_for_key (char *tag, char *whatfor,\n                           short abilities, pgp_ring_t keyring)\n{\n  pgp_key_t key;\n  char resp[SHORT_STRING];\n  struct pgp_cache *l = NULL;\n\n  mutt_clear_error ();\n\n  resp[0] = 0;\n  if (whatfor)\n  {\n\n    for (l = id_defaults; l; l = l->next)\n      if (!mutt_strcasecmp (whatfor, l->what))\n      {\n\tstrfcpy (resp, NONULL (l->dflt), sizeof (resp));\n\tbreak;\n      }\n  }\n\n\n  FOREVER\n  {\n    resp[0] = 0;\n    if (mutt_get_field (tag, resp, sizeof (resp), M_CLEAR) != 0)\n      return NULL;\n\n    if (whatfor)\n    {\n      if (l)\n\tmutt_str_replace (&l->dflt, resp);\n      else\n      {\n\tl = safe_malloc (sizeof (struct pgp_cache));\n\tl->next = id_defaults;\n\tid_defaults = l;\n\tl->what = safe_strdup (whatfor);\n\tl->dflt = safe_strdup (resp);\n      }\n    }\n\n    if ((key = pgp_getkeybystr (resp, abilities, keyring)))\n      return key;\n\n    BEEP ();\n  }\n  /* not reached */\n}\n\n/* generate a public key attachment */\n\nBODY *pgp_make_key_attachment (char *tempf)\n{\n  BODY *att;\n  char buff[LONG_STRING];\n  char tempfb[_POSIX_PATH_MAX], tmp[STRING];\n  FILE *tempfp;\n  FILE *devnull;\n  struct stat sb;\n  pid_t thepid;\n  pgp_key_t key;\n  unset_option (OPTPGPCHECKTRUST);\n\n  key = pgp_ask_for_key (_(\"Please enter the key ID: \"), NULL, 0, PGP_PUBRING);\n\n  if (!key)    return NULL;\n\n  snprintf (tmp, sizeof (tmp), \"0x%s\", pgp_fpr_or_lkeyid (pgp_principal_key (key)));\n  pgp_free_key (&key);\n\n  if (!tempf)\n  {\n    mutt_mktemp (tempfb, sizeof (tempfb));\n    tempf = tempfb;\n  }\n\n  if ((tempfp = safe_fopen (tempf, tempf == tempfb ? \"w\" : \"a\")) == NULL)\n  {\n    mutt_perror _(\"Can't create temporary file\");\n    return NULL;\n  }\n\n  if ((devnull = fopen (\"/dev/null\", \"w\")) == NULL)\t/* __FOPEN_CHECKED__ */\n  {\n    mutt_perror _(\"Can't open /dev/null\");\n    safe_fclose (&tempfp);\n    if (tempf == tempfb)\n      unlink (tempf);\n    return NULL;\n  }\n\n  mutt_message _(\"Invoking PGP...\");\n\n\n  if ((thepid = \n       pgp_invoke_export (NULL, NULL, NULL, -1,\n\t\t\t   fileno (tempfp), fileno (devnull), tmp)) == -1)\n  {\n    mutt_perror _(\"Can't create filter\");\n    unlink (tempf);\n    safe_fclose (&tempfp);\n    safe_fclose (&devnull);\n    return NULL;\n  }\n\n  mutt_wait_filter (thepid);\n\n  safe_fclose (&tempfp);\n  safe_fclose (&devnull);\n\n  att = mutt_new_body ();\n  att->filename = safe_strdup (tempf);\n  att->unlink = 1;\n  att->use_disp = 0;\n  att->type = TYPEAPPLICATION;\n  att->subtype = safe_strdup (\"pgp-keys\");\n  snprintf (buff, sizeof (buff), _(\"PGP Key %s.\"), tmp);\n  att->description = safe_strdup (buff);\n  mutt_update_encoding (att);\n\n  stat (tempf, &sb);\n  att->length = sb.st_size;\n\n  return att;\n}\n\nstatic LIST *pgp_add_string_to_hints (LIST *hints, const char *str)\n{\n  char *scratch;\n  char *t;\n\n  if ((scratch = safe_strdup (str)) == NULL)\n    return hints;\n\n  for (t = strtok (scratch, \" ,.:\\\"()<>\\n\"); t;\n       \t\tt = strtok (NULL, \" ,.:\\\"()<>\\n\"))\n  {\n    if (strlen (t) > 3)\n      hints = mutt_add_list (hints, t);\n  }\n\n  FREE (&scratch);\n  return hints;\n}\n\nstatic pgp_key_t *pgp_get_lastp (pgp_key_t p)\n{\n  for (; p; p = p->next)\n    if (!p->next)\n      return &p->next;\n\n  return NULL;\n}\n\npgp_key_t pgp_getkeybyaddr (ADDRESS * a, short abilities, pgp_ring_t keyring,\n                            int oppenc_mode)\n{\n  ADDRESS *r, *p;\n  LIST *hints = NULL;\n\n  int multi   = 0;\n  int match;\n\n  pgp_key_t keys, k, kn;\n  pgp_key_t the_strong_valid_key = NULL;\n  pgp_key_t a_valid_addrmatch_key = NULL;\n  pgp_key_t matches = NULL;\n  pgp_key_t *last = &matches;\n  pgp_uid_t *q;\n\n  if (a && a->mailbox)\n    hints = pgp_add_string_to_hints (hints, a->mailbox);\n  if (a && a->personal)\n    hints = pgp_add_string_to_hints (hints, a->personal);\n\n  if (! oppenc_mode )\n    mutt_message (_(\"Looking for keys matching \\\"%s\\\"...\"), a->mailbox);\n  keys = pgp_get_candidates (keyring, hints);\n\n  mutt_free_list (&hints);\n\n  if (!keys)\n    return NULL;\n\n  dprint (5, (debugfile, \"pgp_getkeybyaddr: looking for %s <%s>.\",\n\t      a->personal, a->mailbox));\n\n\n  for (k = keys; k; k = kn)\n  {\n    kn = k->next;\n\n    dprint (5, (debugfile, \"  looking at key: %s\\n\",\n\t\tpgp_keyid (k)));\n\n    if (abilities && !(k->flags & abilities))\n    {\n      dprint (5, (debugfile, \"  insufficient abilities: Has %x, want %x\\n\",\n\t\t  k->flags, abilities));\n      continue;\n    }\n\n    match                = 0;   /* any match \t\t  */\n\n    for (q = k->address; q; q = q->next)\n    {\n      r = rfc822_parse_adrlist (NULL, NONULL (q->addr));\n\n      for (p = r; p; p = p->next)\n      {\n\tint validity = pgp_id_matches_addr (a, p, q);\n\n\tif (validity & PGP_KV_MATCH)\t/* something matches */\n\t  match = 1;\n\n        if ((validity & PGP_KV_VALID)\n            && (validity & PGP_KV_ADDR))\n        {\n          if (validity & PGP_KV_STRONGID)\n          {\n            if (the_strong_valid_key && the_strong_valid_key != k)\n              multi = 1;\n            the_strong_valid_key = k;\n          }\n          else\n          {\n            a_valid_addrmatch_key = k;\n          }\n        }\n      }\n\n      rfc822_free_address (&r);\n    }\n\n    if (match)\n    {\n      *last  = pgp_principal_key (k);\n      kn     = pgp_remove_key (&keys, *last);\n      last   = pgp_get_lastp (k);\n    }\n  }\n\n  pgp_free_key (&keys);\n\n  if (matches)\n  {\n    if (oppenc_mode)\n    {\n      if (the_strong_valid_key)\n      {\n        pgp_remove_key (&matches, the_strong_valid_key);\n        k = the_strong_valid_key;\n      }\n      else if (a_valid_addrmatch_key)\n      {\n        pgp_remove_key (&matches, a_valid_addrmatch_key);\n        k = a_valid_addrmatch_key;\n      }\n      else\n        k = NULL;\n    }\n    else if (the_strong_valid_key && !multi)\n    {\n      /*\n       * There was precisely one strong match on a valid ID.\n       * \n       * Proceed without asking the user.\n       */\n      pgp_remove_key (&matches, the_strong_valid_key);\n      k = the_strong_valid_key;\n    }\n    else \n    {\n      /* \n       * Else: Ask the user.\n       */\n      if ((k = pgp_select_key (matches, a, NULL)))\n\tpgp_remove_key (&matches, k);\n    }\n\n    pgp_free_key (&matches);\n\n    return k;\n  }\n\n  return NULL;\n}\n\npgp_key_t pgp_getkeybystr (char *p, short abilities, pgp_ring_t keyring)\n{\n  LIST *hints = NULL;\n  pgp_key_t keys;\n  pgp_key_t matches = NULL;\n  pgp_key_t *last = &matches;\n  pgp_key_t k, kn;\n  pgp_uid_t *a;\n  short match;\n  size_t l;\n  const char *ps, *pl, *pfcopy, *phint;\n\n  if ((l = mutt_strlen (p)) && p[l-1] == '!')\n    p[l-1] = 0;\n\n  mutt_message (_(\"Looking for keys matching \\\"%s\\\"...\"), p);\n\n  pfcopy = crypt_get_fingerprint_or_id (p, &phint, &pl, &ps);\n  hints = pgp_add_string_to_hints (hints, phint);\n  keys = pgp_get_candidates (keyring, hints);\n  mutt_free_list (&hints);\n\n  if (!keys)\n    goto out;\n\n  for (k = keys; k; k = kn)\n  {\n    kn = k->next;\n    if (abilities && !(k->flags & abilities))\n      continue;\n\n    /* This shouldn't happen, but keys without any addresses aren't selectable\n     * in pgp_select_key().\n     */\n    if (!k->address)\n      continue;\n\n    match = 0;\n\n    dprint (5, (debugfile, \"pgp_getkeybystr: matching \\\"%s\\\" against key %s:\\n\",\n                p, pgp_long_keyid (k)));\n\n    if (!*p ||\n        (pfcopy && mutt_strcasecmp (pfcopy, k->fingerprint) == 0) ||\n        (pl && mutt_strcasecmp (pl, pgp_long_keyid (k)) == 0) ||\n        (ps && mutt_strcasecmp (ps, pgp_short_keyid (k)) == 0))\n    {\n      dprint (5, (debugfile, \"\\t\\tmatch.\\n\"));\n      match = 1;\n    }\n    else\n    {\n      for (a = k->address; a; a = a->next)\n      {\n        dprint (5, (debugfile, \"pgp_getkeybystr: matching \\\"%s\\\" against key %s, \\\"%s\\\":\\n\",\n                    p, pgp_long_keyid (k), NONULL (a->addr)));\n        if (mutt_stristr (a->addr, p))\n        {\n          dprint (5, (debugfile, \"\\t\\tmatch.\\n\"));\n          match = 1;\n          break;\n        }\n      }\n    }\n\n    if (match)\n    {\n      *last = pgp_principal_key (k);\n      kn    = pgp_remove_key (&keys, *last);\n      last  = pgp_get_lastp (k);\n    }\n  }\n\n  pgp_free_key (&keys);\n\n  if (matches)\n  {\n    if ((k = pgp_select_key (matches, NULL, p)))\n      pgp_remove_key (&matches, k);\n\n    pgp_free_key (&matches);\n    FREE (&pfcopy);\n    if (l && !p[l-1])\n      p[l-1] = '!';\n    return k;\n  }\n\nout:\n  FREE (&pfcopy);\n  if (l && !p[l-1])\n    p[l-1] = '!';\n  return NULL;\n}\n\n#endif /* CRYPT_BACKEND_CLASSIC_PGP */\n"
  },
  {
    "path": "pgplib.c",
    "content": "/*\n * Copyright (C) 1997-2002 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */\n\n/* Generally useful, pgp-related functions. */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <time.h>\n\n#include \"mutt.h\"\n#include \"lib.h\"\n#include \"pgplib.h\"\n\nconst char *pgp_pkalgbytype (unsigned char type)\n{\n  switch (type)\n  {\n  case 1:\n    return \"RSA\";\n  case 2:\n    return \"RSA\";\n  case 3:\n    return \"RSA\";\n  case 16:\n    return \"ElG\";\n  case 17:\n    return \"DSA\";\n  case 20:\n    return \"ElG\";\n  default:\n    return \"unk\";\n  }\n}\n\n\n\n/* unused */\n\n#if 0\n\nstatic const char *hashalgbytype (unsigned char type)\n{\n  switch (type)\n  {\n  case 1:\n    return \"MD5\";\n  case 2:\n    return \"SHA1\";\n  case 3:\n    return \"RIPE-MD/160\";\n  case 4:\n    return \"HAVAL\";\n  default:\n    return \"unknown\";\n  }\n}\n\n#endif\n\nshort pgp_canencrypt (unsigned char type)\n{\n  switch (type)\n  {\n  case 1:\n  case 2:\n  case 16:\n  case 20:\n    return 1;\n  default:\n    return 0;\n  }\n}\n\nshort pgp_cansign (unsigned char type)\n{\n  switch (type)\n  {\n  case 1:\n  case 3:\n  case 17:\n  case 20:\n    return 1;\n  default:\n    return 0;\n  }\n}\n\n/* return values: \n\n * 1 = sign only\n * 2 = encrypt only\n * 3 = both\n */\n\nshort pgp_get_abilities (unsigned char type)\n{\n  return (pgp_canencrypt (type) << 1) | pgp_cansign (type);\n}\n\nvoid pgp_free_sig (pgp_sig_t **sigp)\n{\n  pgp_sig_t *sp, *q;\n  \n  if (!sigp || !*sigp)\n    return;\n  \n  for (sp = *sigp; sp; sp = q)\n  {\n    q = sp->next;\n    FREE (&sp);\n  }\n  \n  *sigp = NULL;\n}\n\nvoid pgp_free_uid (pgp_uid_t ** upp)\n{\n  pgp_uid_t *up, *q;\n\n  if (!upp || !*upp)\n    return;\n  for (up = *upp; up; up = q)\n  {\n    q = up->next;\n    pgp_free_sig (&up->sigs);\n    FREE (&up->addr);\n    FREE (&up);\n  }\n\n  *upp = NULL;\n}\n\npgp_uid_t *pgp_copy_uids (pgp_uid_t *up, pgp_key_t parent)\n{\n  pgp_uid_t *l = NULL;\n  pgp_uid_t **lp = &l;\n\n  for (; up; up = up->next)\n  {\n    *lp = safe_calloc (1, sizeof (pgp_uid_t));\n    (*lp)->trust  = up->trust;\n    (*lp)->flags  = up->flags;\n    (*lp)->addr   = safe_strdup (up->addr);\n    (*lp)->parent = parent;\n    lp = &(*lp)->next;\n  }\n\n  return l;\n}\n\nstatic void _pgp_free_key (pgp_key_t *kpp)\n{\n  pgp_key_t kp;\n\n  if (!kpp || !*kpp)\n    return;\n\n  kp = *kpp;\n\n  pgp_free_uid (&kp->address);\n  FREE (&kp->keyid);\n  FREE (&kp->fingerprint);\n  /* mutt_crypt.h: 'typedef struct pgp_keyinfo *pgp_key_t;' */\n  FREE (kpp);\t\t/* __FREE_CHECKED__ */\n}\n\npgp_key_t pgp_remove_key (pgp_key_t *klist, pgp_key_t key)\n{\n  pgp_key_t *last;\n  pgp_key_t p, q, r;\n\n  if (!klist || !*klist || !key)\n    return NULL;\n\n  if (key->parent && key->parent != key)\n    key = key->parent;\n\n  last = klist;\n  for (p = *klist; p && p != key; p = p->next)\n    last = &p->next;\n\n  if (!p)\n    return NULL;\n\n  for (q = p->next, r = p; q && q->parent == p; q = q->next)\n    r = q;\n\n  if (r)\n    r->next = NULL;\n\n  *last = q;\n  return q;\n}\n\nvoid pgp_free_key (pgp_key_t *kpp)\n{\n  pgp_key_t p, q, r;\n\n  if (!kpp || !*kpp)\n    return;\n\n  if ((*kpp)->parent && (*kpp)->parent != *kpp)\n    *kpp = (*kpp)->parent;\n  \n  /* Order is important here:\n   *\n   * - First free all children.\n   * - If we are an orphan (i.e., our parent was not in the key list),\n   *   free our parent.\n   * - free ourselves.\n   */\n\n  for (p = *kpp; p; p = q)\n  {\n    for (q = p->next; q && q->parent == p; q = r)\n    {\n      r = q->next;\n      _pgp_free_key (&q);\n    }\n    if (p->parent)\n      _pgp_free_key (&p->parent);\n\n    _pgp_free_key (&p);\n  }\n\n  *kpp = NULL;\n}\n\n"
  },
  {
    "path": "pgplib.h",
    "content": "/*\n * Copyright (C) 1996-1997 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2002 Thomas Roessler <roessler@does-not-exist.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#ifdef CRYPT_BACKEND_CLASSIC_PGP\n\n#include \"mutt_crypt.h\"\n\n\ntypedef struct pgp_signature\n{\n  struct pgp_signature *next;\n  unsigned char sigtype;\n  unsigned long sid1;\n  unsigned long sid2;\n}\npgp_sig_t;\n\nstruct pgp_keyinfo\n{\n  char *keyid;\n  char *fingerprint;\n  struct pgp_uid *address;\n  int flags;\n  short keylen;\n  time_t gen_time;\n  int numalg;\n  const char *algorithm;\n  struct pgp_keyinfo *parent;\n  struct pgp_signature *sigs;\n  struct pgp_keyinfo *next;\n};\n/* Note, that pgp_key_t is now pointer and declared in crypt.h */\n\ntypedef struct pgp_uid\n{\n  char *addr;\n  short trust;\n  int flags;\n  struct pgp_keyinfo *parent;\n  struct pgp_uid *next;\n  struct pgp_signature *sigs;\n}\npgp_uid_t;\n\nenum pgp_version\n{\n  PGP_V2,\n  PGP_V3,\n  PGP_GPG,\n  PGP_UNKNOWN\n};\n\n/* prototypes */\n\nconst char *pgp_pkalgbytype (unsigned char);\n\npgp_key_t pgp_remove_key (pgp_key_t *, pgp_key_t );\npgp_uid_t *pgp_copy_uids (pgp_uid_t *, pgp_key_t );\n\nshort pgp_canencrypt (unsigned char);\nshort pgp_cansign (unsigned char);\nshort pgp_get_abilities (unsigned char);\n\nvoid pgp_free_key (pgp_key_t *kpp);\n\n#define pgp_new_keyinfo() safe_calloc (sizeof *((pgp_key_t)0), 1)\n\n#endif /* CRYPT_BACKEND_CLASSIC_PGP */\n"
  },
  {
    "path": "pgpmicalg.c",
    "content": "/*\n * Copyright (C) 2001 Thomas Roessler <roessler@does-not-exist.org>\n * \n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License as\n * published by the Free Software Foundation; either version 2 of\n * the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public\n * License along with this program; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA  02110-1301, USA.\n */\n\n/* This module peeks at a PGP signature and figures out the hash\n * algorithm.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"pgp.h\"\n#include \"pgppacket.h\"\n#include \"charset.h\"\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <ctype.h>\n\nstatic const struct \n{\n  short id;\n  const char *name;\n} \nHashAlgorithms[] = \n{\n  { 1,\t\t\"pgp-md5\"  \t\t},\n  { 2,  \t\"pgp-sha1\" \t\t},\n  { 3,  \t\"pgp-ripemd160\" \t},\n  { 5,  \t\"pgp-md2\"\t\t},\n  { 6,  \t\"pgp-tiger192\"\t\t},\n  { 7,\t\t\"pgp-haval-5-160\" \t},\n  { 8,\t\t\"pgp-sha256\"\t\t},\n  { 9,\t\t\"pgp-sha384\"\t\t},\n  { 10,\t\t\"pgp-sha512\"\t\t},\n  { 11,\t\t\"pgp-sha224\"\t\t},\n  { -1, \tNULL }\n};\n\nstatic const char *pgp_hash_to_micalg (short id)\n{\n  int i;\n  \n  for (i = 0; HashAlgorithms[i].id >= 0; i++)\n    if (HashAlgorithms[i].id == id)\n      return HashAlgorithms[i].name;\n  return \"x-unknown\";\n}\n\nstatic void pgp_dearmor (FILE *in, FILE *out)\n{\n  char line[HUGE_STRING];\n  LOFF_T start;\n  LOFF_T end;\n  char *r;\n\n  STATE state;\n  \n  memset (&state, 0, sizeof (STATE));\n  state.fpin = in;\n  state.fpout = out;\n  \n  /* find the beginning of ASCII armor */\n  \n  while ((r = fgets (line, sizeof (line), in)) != NULL)\n  {\n    if (!strncmp (line, \"-----BEGIN\", 10))\n      break;\n  }\n  if (r == NULL)\n  {\n    dprint (1, (debugfile, \"pgp_dearmor: Can't find begin of ASCII armor.\\n\"));\n    return;\n  }\n\n  /* skip the armor header */\n  \n  while ((r = fgets (line, sizeof (line), in)) != NULL)\n  {\n    SKIPWS (r);\n    if (!*r) break;\n  }\n  if (r == NULL)\n  {\n    dprint (1, (debugfile, \"pgp_dearmor: Armor header doesn't end.\\n\"));\n    return;\n  }\n  \n  /* actual data starts here */\n  start = ftello (in);\n  \n  /* find the checksum */\n  \n  while ((r = fgets (line, sizeof (line), in)) != NULL)\n  {\n    if (*line == '=' || !strncmp (line, \"-----END\", 8))\n      break;\n  }\n  if (r == NULL)\n  {\n    dprint (1, (debugfile, \"pgp_dearmor: Can't find end of ASCII armor.\\n\"));\n    return;\n  }\n  \n  if ((end = ftello (in) - strlen (line)) < start)\n  {\n    dprint (1, (debugfile, \"pgp_dearmor: end < start???\\n\"));\n    return;\n  }\n  \n  if (fseeko (in, start, SEEK_SET) == -1)\n  {\n    dprint (1, (debugfile, \"pgp_dearmor: Can't seekto start.\\n\"));\n    return;\n  }\n\n  mutt_decode_base64 (&state, end - start, 0, (iconv_t) -1);\n}\n\nstatic short pgp_mic_from_packet (unsigned char *p, size_t len)\n{\n  /* is signature? */\n  if ((p[0] & 0x3f) != PT_SIG)\n  {\n    dprint (1, (debugfile, \"pgp_mic_from_packet: tag = %d, want %d.\\n\",\n\t\tp[0]&0x3f, PT_SIG));\n    return -1;\n  }\n  \n  if (len >= 18 && p[1] == 3)\n    /* version 3 signature */\n    return (short) p[17];\n  else if (len >= 5 && p[1] == 4)\n    /* version 4 signature */\n    return (short) p[4];\n  else\n  {\n    dprint (1, (debugfile, \"pgp_mic_from_packet: Bad signature packet.\\n\"));\n    return -1;\n  }\n}\n\nstatic short pgp_find_hash (const char *fname)\n{\n  FILE *in = NULL;\n  FILE *out = NULL;\n  \n  char tempfile[_POSIX_PATH_MAX];\n  \n  unsigned char *p;\n  size_t l;\n  \n  short rv = -1;\n  \n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((out = safe_fopen (tempfile, \"w+\")) == NULL)\n  {\n    mutt_perror (tempfile);\n    goto bye;\n  }\n  unlink (tempfile);\n  \n  if ((in = fopen (fname, \"r\")) == NULL)\n  {\n    mutt_perror (fname);\n    goto bye;\n  }\n  \n  pgp_dearmor (in, out);\n  rewind (out);\n\n  if ((p = pgp_read_packet (out, &l)) != NULL)\n  {\n    rv = pgp_mic_from_packet (p, l);\n  }\n  else\n  {\n    dprint (1, (debugfile, \"pgp_find_hash: No packet.\\n\"));\n  }\n  \n  bye:\n  \n  safe_fclose (&in);\n  safe_fclose (&out);\n  pgp_release_packet ();\n  return rv;\n}\n\nconst char *pgp_micalg (const char *fname)\n{\n  return pgp_hash_to_micalg (pgp_find_hash (fname));\n}\n\n"
  },
  {
    "path": "pgppacket.c",
    "content": "/*\n * Copyright (C) 2001-2002,2007 Thomas Roessler <roessler@does-not-exist.org>\n * \n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License as\n * published by the Free Software Foundation; either version 2 of\n * the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public\n * License along with this program; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <time.h>\n\n\n\n/* yuck, we were including this one somewhere below. */\n#include \"mutt.h\"\n\n#include \"lib.h\"\n#include \"pgppacket.h\"\n\n#define CHUNKSIZE 1024\n\nstatic unsigned char *pbuf = NULL;\nstatic size_t plen = 0;\n\nstatic int read_material (size_t material, size_t * used, FILE * fp)\n{\n  if (*used + material >= plen)\n  {\n    unsigned char *p;\n    size_t nplen;\n\n    nplen = *used + material + CHUNKSIZE;\n\n    if (!(p = realloc (pbuf, nplen)))\t/* __MEM_CHECKED__ */\n    {\n      perror (\"realloc\");\n      return -1;\n    }\n    plen = nplen;\n    pbuf = p;\n  }\n\n  if (fread (pbuf + *used, 1, material, fp) < material)\n  {\n    perror (\"fread\");\n    return -1;\n  }\n\n  *used += material;\n  return 0;\n}\n\nunsigned char *pgp_read_packet (FILE * fp, size_t * len)\n{\n  size_t used = 0;\n  LOFF_T startpos;\n  unsigned char ctb;\n  unsigned char b;\n  size_t material;\n\n  startpos = ftello (fp);\n\n  if (!plen)\n  {\n    plen = CHUNKSIZE;\n    pbuf = safe_malloc (plen);\n  }\n\n  if (fread (&ctb, 1, 1, fp) < 1)\n  {\n    if (!feof (fp))\n      perror (\"fread\");\n    goto bail;\n  }\n\n  if (!(ctb & 0x80))\n  {\n    goto bail;\n  }\n\n  if (ctb & 0x40)\t\t/* handle PGP 5.0 packets. */\n  {\n    int partial = 0;\n    pbuf[0] = ctb;\n    used++;\n\n    do\n    {\n      if (fread (&b, 1, 1, fp) < 1)\n      {\n\tperror (\"fread\");\n\tgoto bail;\n      }\n\n      if (b < 192)\n      {\n\tmaterial = b;\n\tpartial = 0;\n\t/* material -= 1; */\n      }\n      else if (192 <= b && b <= 223)\n      {\n\tmaterial = (b - 192) * 256;\n\tif (fread (&b, 1, 1, fp) < 1)\n\t{\n\t  perror (\"fread\");\n\t  goto bail;\n\t}\n\tmaterial += b + 192;\n\tpartial = 0;\n\t/* material -= 2; */\n      }\n      else if (b < 255)\n      {\n\tmaterial = 1 << (b & 0x1f);\n\tpartial = 1;\n\t/* material -= 1; */\n      }\n      else\n\t/* b == 255 */\n      {\n\tunsigned char buf[4];\n\tif (fread (buf, 4, 1, fp) < 1)\n\t{\n\t  perror (\"fread\");\n\t  goto bail;\n\t}\n\t/*assert( sizeof(material) >= 4 ); */\n\tmaterial = buf[0] << 24;\n\tmaterial |= buf[1] << 16;\n\tmaterial |= buf[2] << 8;\n\tmaterial |= buf[3];\n\tpartial = 0;\n\t/* material -= 5; */\n      }\n\n      if (read_material (material, &used, fp) == -1)\n\tgoto bail;\n\n    }\n    while (partial);\n  }\n  else\n    /* Old-Style PGP */\n  {\n    int bytes = 0;\n    pbuf[0] = 0x80 | ((ctb >> 2) & 0x0f);\n    used++;\n\n    switch (ctb & 0x03)\n    {\n      case 0:\n      {\n\tif (fread (&b, 1, 1, fp) < 1)\n\t{\n\t  perror (\"fread\");\n\t  goto bail;\n\t}\n\n\tmaterial = b;\n\tbreak;\n      }\n\n      case 1:\n      bytes = 2;\n\n      case 2:\n      {\n\tint i;\n\n\tif (!bytes)\n\t  bytes = 4;\n\n\tmaterial = 0;\n\n\tfor (i = 0; i < bytes; i++)\n\t{\n\t  if (fread (&b, 1, 1, fp) < 1)\n\t  {\n\t    perror (\"fread\");\n\t    goto bail;\n\t  }\n\n\t  material = (material << 8) + b;\n\t}\n\tbreak;\n      }\n\n      default:\n      goto bail;\n    }\n\n    if (read_material (material, &used, fp) == -1)\n      goto bail;\n  }\n\n  if (len)\n    *len = used;\n\n  return pbuf;\n\nbail:\n\n  fseeko (fp, startpos, SEEK_SET);\n  return NULL;\n}\n\nvoid pgp_release_packet (void)\n{\n  plen = 0;\n  FREE (&pbuf);\n}\n\n"
  },
  {
    "path": "pgppacket.h",
    "content": "/*\n * Copyright (C) 2001 Thomas Roessler <roessler@does-not-exist.org>\n * \n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License as\n * published by the Free Software Foundation; either version 2 of\n * the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public\n * License along with this program; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA  02110-1301, USA.\n */\n\n/* \n * Definitions for a rudimentary PGP packet parser which is shared\n * by mutt proper and the PGP public key ring lister.\n */\n\n#ifndef _PGPPACKET_H\n# define _PGPPACKET_H\n\nenum packet_tags\n{\n  PT_RES0 = 0,\t\t\t/* reserved */\n  PT_ESK,\t\t\t/* Encrypted Session Key */\n  PT_SIG,\t\t\t/* Signature Packet */\n  PT_CESK,\t\t\t/* Conventionally Encrypted Session Key Packet */\n  PT_OPS,\t\t\t/* One-Pass Signature Packet */\n  PT_SECKEY,\t\t\t/* Secret Key Packet */\n  PT_PUBKEY,\t\t\t/* Public Key Packet */\n  PT_SUBSECKEY,\t\t\t/* Secret Subkey Packet */\n  PT_COMPRESSED,\t\t/* Compressed Data Packet */\n  PT_SKE,\t\t\t/* Symmetrically Encrypted Data Packet */\n  PT_MARKER,\t\t\t/* Marker Packet */\n  PT_LITERAL,\t\t\t/* Literal Data Packet */\n  PT_TRUST,\t\t\t/* Trust Packet */\n  PT_NAME,\t\t\t/* Name Packet */\n  PT_SUBKEY,\t\t\t/* Subkey Packet */\n  PT_RES15,\t\t\t/* Reserved */\n  PT_COMMENT\t\t\t/* Comment Packet */\n};\n\nunsigned char *pgp_read_packet (FILE * fp, size_t * len);\nvoid pgp_release_packet (void);\n\n#endif\n"
  },
  {
    "path": "pgppubring.c",
    "content": "/*\n * Copyright (C) 1997-2003 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */\n\n/*\n * This is a \"simple\" PGP key ring dumper.\n * \n * The output format is supposed to be compatible to the one GnuPG\n * emits and Mutt expects.\n * \n * Note that the code of this program could be considerably less\n * complex, but most of it was taken from mutt's second generation\n * key ring parser.\n * \n * You can actually use this to put together some fairly general\n * PGP key management applications.\n *\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <time.h>\n#ifdef HAVE_GETOPT_H\n# include <getopt.h>\n#endif\n#include <errno.h>\n\nextern char *optarg;\nextern int optind;\n\n#include \"sha1.h\"\n#include \"md5.h\"\n#include \"lib.h\"\n#include \"pgplib.h\"\n#include \"pgppacket.h\"\n\n#define MD5_DIGEST_LENGTH  16\n\n#ifdef HAVE_FGETPOS\n#define FGETPOS(fp,pos) fgetpos((fp),&(pos))\n#define FSETPOS(fp,pos) fsetpos((fp),&(pos))\n#else\n#define FGETPOS(fp,pos) pos=ftello((fp));\n#define FSETPOS(fp,pos) fseeko((fp),(pos),SEEK_SET)\n#endif\n\n\nstatic short dump_signatures = 0;\nstatic short dump_fingerprints = 0;\n\n\nstatic void pgpring_find_candidates (char *ringfile, const char *hints[], int nhints);\nstatic void pgpring_dump_keyblock (pgp_key_t p);\n\nint main (int argc, char * const argv[])\n{\n  int c;\n  \n  short version = 2;\n  short secring = 0;\n  \n  const char *_kring = NULL;\n  char *env_pgppath, *env_home;\n\n  char pgppath[_POSIX_PATH_MAX];\n  char kring[_POSIX_PATH_MAX];\n\n  while ((c = getopt (argc, argv, \"f25sk:S\")) != EOF)\n  {\n    switch (c)\n    {\n      case 'S':\n      {\n\tdump_signatures = 1;\n\tbreak;\n      }\n\n      case 'f':\n      {\n\tdump_fingerprints = 1;\n\tbreak;\n      }\n\n      case 'k':\n      {\n\t_kring = optarg;\n\tbreak;\n      }\n      \n      case '2': case '5':\n      {\n\tversion = c - '0';\n\tbreak;\n      }\n      \n      case 's':\n      {\n\tsecring = 1;\n\tbreak;\n      }\n    \n      default:\n      {\n\tfprintf (stderr, \"usage: %s [-k <key ring> | [-2 | -5] [ -s] [-S] [-f]] [hints]\\n\",\n\t\t argv[0]);\n\texit (1);\n      }\n    }\n  }\n\n  if (_kring)\n    strfcpy (kring, _kring, sizeof (kring));\n  else\n  {\n    if ((env_pgppath = getenv (\"PGPPATH\")))\n      strfcpy (pgppath, env_pgppath, sizeof (pgppath));\n    else if ((env_home = getenv (\"HOME\")))\n      snprintf (pgppath, sizeof (pgppath), \"%s/.pgp\", env_home);\n    else\n    {\n      fprintf (stderr, \"%s: Can't determine your PGPPATH.\\n\", argv[0]);\n      exit (1);\n    }\n    \n    if (secring)\n      snprintf (kring, sizeof (kring), \"%s/secring.%s\", pgppath, version == 2 ? \"pgp\" : \"skr\");\n    else\n      snprintf (kring, sizeof (kring), \"%s/pubring.%s\", pgppath, version == 2 ? \"pgp\" : \"pkr\");\n  }\n  \n  pgpring_find_candidates (kring, (const char**) argv + optind, argc - optind);\n    \n  return 0;\n}\n\nstatic char *binary_fingerprint_to_string (unsigned char *buff, size_t length)\n{\n  int i;\n  char *fingerprint, *pf;\n\n  pf = fingerprint = (char *)safe_malloc ((length * 2) + 1);\n\n  for (i = 0; i < length; i++)\n  {\n    sprintf (pf, \"%02X\", buff[i]);\n    pf += 2;\n  }\n  *pf = 0;\n\n  return fingerprint;\n}\n\n\n/* The actual key ring parser */\nstatic void pgp_make_pgp2_fingerprint (unsigned char *buff,\n                                       unsigned char *digest)\n{\n  struct md5_ctx ctx;\n  unsigned int size = 0;\n\n  md5_init_ctx (&ctx);\n\n  size = (buff[0] << 8) + buff[1];\n  size = ((size + 7) / 8);\n  buff = &buff[2];\n\n  md5_process_bytes (buff, size, &ctx);\n\n  buff = &buff[size];\n\n  size = (buff[0] << 8) + buff[1];\n  size = ((size + 7) / 8);\n  buff = &buff[2];\n\n  md5_process_bytes (buff, size, &ctx);\n\n  md5_finish_ctx (&ctx, digest);\n} /* pgp_make_pgp2_fingerprint() */\n\nstatic pgp_key_t pgp_parse_pgp2_key (unsigned char *buff, size_t l)\n{\n  pgp_key_t p;\n  unsigned char alg;\n  unsigned char digest[MD5_DIGEST_LENGTH];\n  size_t expl;\n  unsigned long id;\n  time_t gen_time = 0;\n  unsigned short exp_days = 0;\n  size_t j;\n  int i, k;\n  unsigned char scratch[LONG_STRING];\n\n  if (l < 12)\n    return NULL;\n\n  p = pgp_new_keyinfo();\n\n  for (i = 0, j = 2; i < 4; i++)\n    gen_time = (gen_time << 8) + buff[j++];\n\n  p->gen_time = gen_time;\n\n  for (i = 0; i < 2; i++)\n    exp_days = (exp_days << 8) + buff[j++];\n\n  if (exp_days && time (NULL) > gen_time + exp_days * 24 * 3600)\n    p->flags |= KEYFLAG_EXPIRED;\n\n  alg = buff[j++];\n\n  p->numalg = alg;\n  p->algorithm = pgp_pkalgbytype (alg);\n  p->flags |= pgp_get_abilities (alg);\n\n  if (dump_fingerprints)\n  {\n    /* j now points to the key material, which we need for the fingerprint */\n    pgp_make_pgp2_fingerprint (&buff[j], digest);\n    p->fingerprint = binary_fingerprint_to_string (digest, MD5_DIGEST_LENGTH);\n  }\n    \n  expl = 0;\n  for (i = 0; i < 2; i++)\n    expl = (expl << 8) + buff[j++];\n\n  p->keylen = expl;\n\n  expl = (expl + 7) / 8;\n  if (expl < 4)\n    goto bailout;\n\n\n  j += expl - 8;\n\n  for (k = 0; k < 2; k++)\n  {\n    for (id = 0, i = 0; i < 4; i++)\n      id = (id << 8) + buff[j++];\n\n    snprintf ((char *) scratch + k * 8, sizeof (scratch) - k * 8,\n\t      \"%08lX\", id);\n  }\n\n  p->keyid = safe_strdup ((char *) scratch);\n\n  return p;\n\nbailout:\n\n  FREE (&p);\n  return NULL;\n}\n\nstatic void pgp_make_pgp3_fingerprint (unsigned char *buff, size_t l,\n\t\t\t\t       unsigned char *digest)\n{\n  unsigned char dummy;\n  SHA1_CTX context;\n\n  SHA1_Init (&context);\n\n  dummy = buff[0] & 0x3f;\n\n  if (dummy == PT_SUBSECKEY || dummy == PT_SUBKEY || dummy == PT_SECKEY)\n    dummy = PT_PUBKEY;\n\n  dummy = (dummy << 2) | 0x81;\n  SHA1_Update (&context, &dummy, 1);\n  dummy = ((l - 1) >> 8) & 0xff;\n  SHA1_Update (&context, &dummy, 1);\n  dummy = (l - 1) & 0xff;\n  SHA1_Update (&context, &dummy, 1);\n  SHA1_Update (&context, buff + 1, l - 1);\n  SHA1_Final (digest, &context);\n\n}\n\nstatic void skip_bignum (unsigned char *buff, size_t l, size_t j,\n\t\t\t size_t * toff, size_t n)\n{\n  size_t len;\n\n  do\n  {\n    len = (buff[j] << 8) + buff[j + 1];\n    j += (len + 7) / 8 + 2;\n  }\n  while (j <= l && --n > 0);\n\n  if (toff)\n    *toff = j;\n}\n\n\nstatic pgp_key_t pgp_parse_pgp3_key (unsigned char *buff, size_t l)\n{\n  pgp_key_t p;\n  unsigned char alg;\n  unsigned char digest[SHA_DIGEST_LENGTH];\n  unsigned char scratch[LONG_STRING];\n  time_t gen_time = 0;\n  unsigned long id;\n  int i, k;\n  short len;\n  size_t j;\n\n  p = pgp_new_keyinfo ();\n  j = 2;\n\n  for (i = 0; i < 4; i++)\n    gen_time = (gen_time << 8) + buff[j++];\n\n  p->gen_time = gen_time;\n\n  alg = buff[j++];\n\n  p->numalg = alg;\n  p->algorithm = pgp_pkalgbytype (alg);\n  p->flags |= pgp_get_abilities (alg);\n\n  if (alg == 17)\n    skip_bignum (buff, l, j, &j, 3);\n  else if (alg == 16 || alg == 20)\n    skip_bignum (buff, l, j, &j, 2);\n\n  len = (buff[j] << 8) + buff[j + 1];\n  p->keylen = len;\n\n\n  if (alg >= 1 && alg <= 3)\n    skip_bignum (buff, l, j, &j, 2);\n  else if (alg == 17 || alg == 16 || alg == 20)\n    skip_bignum (buff, l, j, &j, 1);\n\n  pgp_make_pgp3_fingerprint (buff, j, digest);\n  if (dump_fingerprints)\n  {\n    p->fingerprint = binary_fingerprint_to_string (digest, SHA_DIGEST_LENGTH);\n  }\n  \n  for (k = 0; k < 2; k++)\n  {\n    for (id = 0, i = SHA_DIGEST_LENGTH - 8 + k * 4;\n\t i < SHA_DIGEST_LENGTH + (k - 1) * 4; i++)\n      id = (id << 8) + digest[i];\n\n    snprintf ((char *) scratch + k * 8, sizeof (scratch) - k * 8, \"%08lX\", id);\n  }\n\n  p->keyid = safe_strdup ((char *) scratch);\n\n  return p;\n}\n\nstatic pgp_key_t pgp_parse_keyinfo (unsigned char *buff, size_t l)\n{\n  if (!buff || l < 2)\n    return NULL;\n\n  switch (buff[1])\n  {\n  case 2:\n  case 3:\n    return pgp_parse_pgp2_key (buff, l);\n  case 4:\n    return pgp_parse_pgp3_key (buff, l);\n  default:\n    return NULL;\n  }\n}\n\nstatic int pgp_parse_pgp2_sig (unsigned char *buff, size_t l,\n                               pgp_key_t p, pgp_sig_t *s)\n{\n  unsigned char sigtype;\n  time_t sig_gen_time;\n  unsigned long signerid1;\n  unsigned long signerid2;\n  size_t j;\n  int i;\n\n  if (l < 22)\n    return -1;\n\n  j = 3;\n  sigtype = buff[j++];\n\n  sig_gen_time = 0;\n  for (i = 0; i < 4; i++)\n    sig_gen_time = (sig_gen_time << 8) + buff[j++];\n\n  signerid1 = signerid2 = 0;\n  for (i = 0; i < 4; i++)\n    signerid1 = (signerid1 << 8) + buff[j++];\n\n  for (i = 0; i < 4; i++)\n    signerid2 = (signerid2 << 8) + buff[j++];\n\n  \n  if (sigtype == 0x20 || sigtype == 0x28)\n    p->flags |= KEYFLAG_REVOKED;\n\n  if (s)\n  {\n    s->sigtype = sigtype;\n    s->sid1    = signerid1;\n    s->sid2    = signerid2;\n  }\n  \n  return 0;\n}\n\nstatic int pgp_parse_pgp3_sig (unsigned char *buff, size_t l,\n                               pgp_key_t p, pgp_sig_t *s)\n{\n  unsigned char sigtype;\n  unsigned char skt;\n  time_t sig_gen_time = -1;\n  long validity = -1;\n  long key_validity = -1;\n  unsigned long signerid1 = 0;\n  unsigned long signerid2 = 0;\n  size_t ml;\n  size_t j;\n  int i;\n  short ii;\n  short have_critical_spks = 0;\n\n  if (l < 7)\n    return -1;\n\n  j = 2;\n\n  sigtype = buff[j++];\n  j += 2; /* pkalg, hashalg */\n\n  for (ii = 0; ii < 2; ii++)\n  {\n    size_t skl;\n    size_t nextone;\n\n    ml = (buff[j] << 8) + buff[j + 1];\n    j += 2;\n\n    if (j + ml > l)\n      break;\n\n    nextone = j;\n    while (ml)\n    {\n      j = nextone;\n      skl = buff[j++];\n      if (!--ml)\n\tbreak;\n\n      if (skl >= 192)\n      {\n\tskl = (skl - 192) * 256 + buff[j++] + 192;\n\tif (!--ml)\n\t  break;\n      }\n\n      if ((int) ml - (int) skl < 0)\n\tbreak;\n      ml -= skl;\n\n      nextone = j + skl;\n      skt = buff[j++];\n\n      switch (skt & 0x7f)\n      {\n\tcase 2:\t\t\t/* creation time */\n\t{\n\t  if (skl < 4)\n\t    break;\n\t  sig_gen_time = 0;\n\t  for (i = 0; i < 4; i++)\n\t    sig_gen_time = (sig_gen_time << 8) + buff[j++];\n\n\t  break;\n\t}\n\tcase 3:\t\t\t/* expiration time */\n\t{\n\t  if (skl < 4)\n\t    break;\n\t  validity = 0;\n\t  for (i = 0; i < 4; i++)\n\t    validity = (validity << 8) + buff[j++];\n\t  break;\n\t}\n\tcase 9:\t\t\t/* key expiration time */\n\t{\n\t  if (skl < 4)\n\t    break;\n\t  key_validity = 0;\n\t  for (i = 0; i < 4; i++)\n\t    key_validity = (key_validity << 8) + buff[j++];\n\t  break;\n\t}\n\tcase 16:\t\t\t/* issuer key ID */\n\t{\n\t  if (skl < 8)\n\t    break;\n\t  signerid2 = signerid1 = 0;\n\t  for (i = 0; i < 4; i++)\n\t    signerid1 = (signerid1 << 8) + buff[j++];\n\t  for (i = 0; i < 4; i++)\n\t    signerid2 = (signerid2 << 8) + buff[j++];\n\t  \n\t  break;\n\t}\n\tcase 10:\t\t\t/* CMR key */\n\tbreak;\n\tcase 4:\t\t\t\t/* exportable */\n\tcase 5:\t\t\t\t/* trust */\n\tcase 6:\t\t\t\t/* regexp */\n\tcase 7:\t\t\t\t/* revocable */\n\tcase 11:\t\t\t/* Pref. symm. alg. */\n\tcase 12:\t\t\t/* revocation key */\n\tcase 20:\t\t\t/* notation data */\n\tcase 21:\t\t\t/* pref. hash */\n\tcase 22:\t\t\t/* pref. comp.alg. */\n\tcase 23:\t\t\t/* key server prefs. */\n\tcase 24:\t\t\t/* pref. key server */\n\tdefault:\n\t{\n\t  if (skt & 0x80)\n\t    have_critical_spks = 1;\n\t}\n      }\n    }\n    j = nextone;\n  }\n\n  if (sigtype == 0x20 || sigtype == 0x28)\n    p->flags |= KEYFLAG_REVOKED;\n  if (key_validity != -1 && time (NULL) > p->gen_time + key_validity)\n    p->flags |= KEYFLAG_EXPIRED;\n  if (have_critical_spks)\n    p->flags |= KEYFLAG_CRITICAL;\n\n  if (s)\n  {\n    s->sigtype = sigtype;\n    s->sid1    = signerid1;\n    s->sid2    = signerid2;\n  }\n\n  \n  return 0;\n\n}\n\n\nstatic int pgp_parse_sig (unsigned char *buff, size_t l,\n                          pgp_key_t p, pgp_sig_t *sig)\n{\n  if (!buff || l < 2 || !p)\n    return -1;\n\n  switch (buff[1])\n  {\n  case 2:\n  case 3:\n    return pgp_parse_pgp2_sig (buff, l, p, sig);      \n  case 4:\n    return pgp_parse_pgp3_sig (buff, l, p, sig);\n  default:\n    return -1;\n  }\n}\n\n/* parse one key block, including all subkeys. */\n\nstatic pgp_key_t pgp_parse_keyblock (FILE * fp)\n{\n  unsigned char *buff;\n  unsigned char pt = 0;\n  unsigned char last_pt;\n  size_t l;\n  short err = 0;\n\n#ifdef HAVE_FGETPOS\n  fpos_t pos;\n#else\n  LOFF_T pos;\n#endif\n\n  pgp_key_t root = NULL;\n  pgp_key_t *last = &root;\n  pgp_key_t p = NULL;\n  pgp_uid_t *uid = NULL;\n  pgp_uid_t **addr = NULL;\n  pgp_sig_t **lsig = NULL;\n\n  FGETPOS(fp,pos);\n  \n  while (!err && (buff = pgp_read_packet (fp, &l)) != NULL)\n  {\n    last_pt = pt;\n    pt = buff[0] & 0x3f;\n\n    /* check if we have read the complete key block. */\n    \n    if ((pt == PT_SECKEY || pt == PT_PUBKEY) && root)\n    {\n      FSETPOS(fp, pos);\n      return root;\n    }\n    \n    switch (pt)\n    {\n      case PT_SECKEY:\n      case PT_PUBKEY:\n      case PT_SUBKEY:\n      case PT_SUBSECKEY:\n      {\n\tif (!(*last = p = pgp_parse_keyinfo (buff, l)))\n\t{\n\t  err = 1;\n\t  break;\n\t}\n\n\tlast = &p->next;\n\taddr = &p->address;\n\tlsig = &p->sigs;\n\t\n\tif (pt == PT_SUBKEY || pt == PT_SUBSECKEY)\n\t{\n\t  p->flags |= KEYFLAG_SUBKEY;\n\t  if (p != root)\n\t  {\n\t    p->parent  = root;\n\t    p->address = pgp_copy_uids (root->address, p);\n\t    while (*addr) addr = &(*addr)->next;\n\t  }\n\t}\n\t\n\tif (pt == PT_SECKEY || pt == PT_SUBSECKEY)\n\t  p->flags |= KEYFLAG_SECRET;\n\n\tbreak;\n      }\n\n      case PT_SIG:\n      {\n\tif (lsig)\n\t{\n\t  pgp_sig_t *signature = safe_calloc (sizeof (pgp_sig_t), 1);\n\t  *lsig = signature;\n\t  lsig = &signature->next;\n\t  \n\t  pgp_parse_sig (buff, l, p, signature);\n\t}\n\tbreak;\n      }\n\n      case PT_TRUST:\n      {\n\tif (p && (last_pt == PT_SECKEY || last_pt == PT_PUBKEY ||\n\t\t  last_pt == PT_SUBKEY || last_pt == PT_SUBSECKEY))\n\t{\n\t  if (buff[1] & 0x20)\n\t  {\n\t    p->flags |= KEYFLAG_DISABLED;\n\t  }\n\t}\n\telse if (last_pt == PT_NAME && uid)\n\t{\n\t  uid->trust = buff[1];\n\t}\n\tbreak;\n      }\n      case PT_NAME:\n      {\n\tchar *chr;\n\n\n\tif (!addr)\n\t  break;\n\n\tchr = safe_malloc (l);\n\tmemcpy (chr, buff + 1, l - 1);\n\tchr[l - 1] = '\\0';\n\n\n\t*addr = uid = safe_calloc (1, sizeof (pgp_uid_t)); /* XXX */\n\tuid->addr = chr;\n\tuid->parent = p;\n\tuid->trust = 0;\n\taddr = &uid->next;\n\tlsig = &uid->sigs;\n\t\n\t/* the following tags are generated by\n\t * pgp 2.6.3in.\n\t */\n\n\tif (strstr (chr, \"ENCR\"))\n\t  p->flags |= KEYFLAG_PREFER_ENCRYPTION;\n\tif (strstr (chr, \"SIGN\"))\n\t  p->flags |= KEYFLAG_PREFER_SIGNING;\n\n\tbreak;\n      }\n    }\n\n    FGETPOS(fp,pos);\n  }\n\n  if (err)\n    pgp_free_key (&root);\n  \n  return root;  \n}\n\nstatic int pgpring_string_matches_hint (const char *s, const char *hints[], int nhints)\n{\n  int i;\n\n  if (!hints || !nhints)\n    return 1;\n\n  for (i = 0; i < nhints; i++)\n  {\n    if (mutt_stristr (s, hints[i]) != NULL)\n      return 1;\n  }\n\n  return 0;\n}\n\n/* \n * Go through the key ring file and look for keys with\n * matching IDs.\n */\n\nstatic void pgpring_find_candidates (char *ringfile, const char *hints[], int nhints)\n{\n  FILE *rfp;\n#ifdef HAVE_FGETPOS\n  fpos_t pos, keypos;\n#else\n  LOFF_T pos, keypos;\n#endif\n\n  unsigned char *buff = NULL;\n  unsigned char pt = 0;\n  size_t l = 0;\n\n  short err = 0;\n  \n  if ((rfp = fopen (ringfile, \"r\")) == NULL)\n  {\n    char *error_buf;\n    size_t error_buf_len;\n\n    error_buf_len = sizeof (\"fopen: \") - 1 + strlen (ringfile) + 1;\n    error_buf = safe_malloc (error_buf_len);\n    snprintf (error_buf, error_buf_len, \"fopen: %s\", ringfile);\n    perror (error_buf);\n    FREE (&error_buf);\n    return;\n  }\n\n  FGETPOS(rfp,pos);\n  FGETPOS(rfp,keypos);\n\n  while (!err && (buff = pgp_read_packet (rfp, &l)) != NULL)\n  {\n    pt = buff[0] & 0x3f;\n    \n    if (l < 1)\n      continue;\n    \n    if ((pt == PT_SECKEY) || (pt == PT_PUBKEY))\n    {\n      keypos = pos;\n    }\n    else if (pt == PT_NAME)\n    {\n      char *tmp = safe_malloc (l);\n\n      memcpy (tmp, buff + 1, l - 1);\n      tmp[l - 1] = '\\0';\n\n      /* mutt_decode_utf8_string (tmp, chs); */\n\n      if (pgpring_string_matches_hint (tmp, hints, nhints))\n      {\n\tpgp_key_t p;\n\n\tFSETPOS(rfp, keypos);\n\n\t/* Not bailing out here would lead us into an endless loop. */\n\n\tif ((p = pgp_parse_keyblock (rfp)) == NULL)\n\t  err = 1;\n\t\n\tpgpring_dump_keyblock (p);\n\tpgp_free_key (&p);\n      }\n\n      FREE (&tmp);\n    }\n\n    FGETPOS(rfp,pos);\n  }\n\n  safe_fclose (&rfp);\n\n}\n\nstatic void print_userid (const char *id)\n{\n  for (; id && *id; id++)\n  {\n    if (*id >= ' ' && *id <= 'z' && *id != ':')\n      putchar (*id);\n    else\n      printf (\"\\\\x%02x\", (*id) & 0xff);\n  }\n}\n\nstatic void print_fingerprint (pgp_key_t p) \n{\n  if (!p->fingerprint)\n    return;\n\n  printf (\"fpr:::::::::%s:\\n\", p->fingerprint);\n} /* print_fingerprint() */\n\n\nstatic void pgpring_dump_signatures (pgp_sig_t *sig)\n{\n  for (; sig; sig = sig->next)\n  {\n    if (sig->sigtype == 0x10 || sig->sigtype == 0x11 ||\n\tsig->sigtype == 0x12 || sig->sigtype == 0x13)\n      printf (\"sig::::%08lX%08lX::::::%X:\\n\",\n\t      sig->sid1, sig->sid2, sig->sigtype);\n    else if (sig->sigtype == 0x20)\n      printf (\"rev::::%08lX%08lX::::::%X:\\n\",\n\t      sig->sid1, sig->sid2, sig->sigtype);\n  }\n}\n\n\nstatic char gnupg_trustletter (int t)\n{\n  switch (t)\n  {\n    case 1: return 'n';\n    case 2: return 'm';\n    case 3: return 'f';\n  }\n  return 'q';\n}\n\nstatic void pgpring_dump_keyblock (pgp_key_t p)\n{\n  pgp_uid_t *uid;\n  short first;\n  struct tm *tp;\n  time_t t;\n  \n  for (; p; p = p->next)\n  {\n    first = 1;\n\n    if (p->flags & KEYFLAG_SECRET)\n    {\n      if (p->flags & KEYFLAG_SUBKEY)\n\tprintf (\"ssb:\");\n      else\n\tprintf (\"sec:\");\n    }\n    else \n    {\n      if (p->flags & KEYFLAG_SUBKEY)\n\tprintf (\"sub:\");\n      else\n\tprintf (\"pub:\");\n    }\n    \n    if (p->flags & KEYFLAG_REVOKED)\n      putchar ('r');\n    if (p->flags & KEYFLAG_EXPIRED)\n      putchar ('e');\n    if (p->flags & KEYFLAG_DISABLED)\n      putchar ('d');\n\n    for (uid = p->address; uid; uid = uid->next, first = 0)\n    {\n      if (!first)\n      {\n\tprintf (\"uid:%c::::::::\", gnupg_trustletter (uid->trust));\n\tprint_userid (uid->addr);\n\tprintf (\":\\n\");\n      }\n      else\n      {\n\tif (p->flags & KEYFLAG_SECRET)\n\t  putchar ('u');\n\telse\n\t  putchar (gnupg_trustletter (uid->trust));\n\n\tt = p->gen_time;\n\ttp = gmtime (&t);\n\n\tprintf (\":%d:%d:%s:%04d-%02d-%02d::::\", p->keylen, p->numalg, p->keyid,\n\t\t1900 + tp->tm_year, tp->tm_mon + 1, tp->tm_mday);\n\t\n\tprint_userid (uid->addr);\n\tprintf (\"::\");\n\n\tif(pgp_canencrypt(p->numalg))\n\t  putchar ('e');\n\tif(pgp_cansign(p->numalg))\n\t  putchar ('s');\n\tif (p->flags & KEYFLAG_DISABLED)\n\t  putchar ('D');\n\tprintf (\":\\n\");\n\n\tif (dump_fingerprints) \n          print_fingerprint (p);\n      }\n      \n      if (dump_signatures)\n      {\n\tif (first) pgpring_dump_signatures (p->sigs);\n\tpgpring_dump_signatures (uid->sigs);\n      }\n    }\n  }\n}\n\n/*\n * The mutt_gettext () defined in gettext.c requires iconv,\n * so we do without charset conversion here.\n */\n\nchar *mutt_gettext (const char *message)\n{\n  return (char *)message;\n}\n"
  },
  {
    "path": "po/Makefile.in.in",
    "content": "# Makefile for program source directory in GNU NLS utilities package.\n# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper <drepper@gnu.ai.mit.edu>\n#\n# This file file be copied and used freely without restrictions.  It can\n# be used in projects which are not available under the GNU General Public License\n# but which still want to provide support for the GNU gettext functionality.\n# Please note that the actual code is *not* freely available.\n\nPACKAGE = @PACKAGE@\nVERSION = @VERSION@\n\n# These two variables depend on the location of this directory.\nsubdir = po\ntop_builddir = ..\n\nSHELL = /bin/sh\n@SET_MAKE@\n\nsrcdir = @srcdir@\ntop_srcdir = @top_srcdir@\nVPATH = @srcdir@\n\nprefix = @prefix@\nexec_prefix = @exec_prefix@\ndatadir = @datadir@\ndatarootdir = @datarootdir@\nlocaledir = $(datadir)/locale\ngettextsrcdir = $(datadir)/gettext/po\n\nINSTALL = @INSTALL@\nINSTALL_DATA = @INSTALL_DATA@\nMKDIR_P = @MKDIR_P@\n\nCC = @CC@\nGMSGFMT = @GMSGFMT@\nMSGFMT = @MSGFMT@\nXGETTEXT = @XGETTEXT@\nMSGMERGE = msgmerge\n\nDEFS = @DEFS@\nCFLAGS = @CFLAGS@\nCPPFLAGS = @CPPFLAGS@\n\nINCLUDES = -I.. -I$(top_srcdir)/intl\n\nCOMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)\n\nPOFILES = @POFILES@\nGMOFILES = @GMOFILES@\nDISTFILES = Makefile.in.in POTFILES.in $(PACKAGE).pot \\\n$(POFILES) $(GMOFILES)\n\n# need two spaces before = as m4/gettext.m4 matches against\n# 'POTFILES[space]=' to add files from POTFILES\nBUILT_POTFILES  = $(top_builddir)/keymap_alldefs.h\n\nPOTFILES = \\\n\nCATALOGS = @CATALOGS@\n\n.SUFFIXES:\n.SUFFIXES: .c .o .po .pox .gmo .mo\n\n.c.o:\n\t$(COMPILE) $<\n\n.po.pox:\n\t$(MAKE) $(PACKAGE).pot\n\t$(MSGMERGE) $< $(PACKAGE).pot -o $*.pox\n\n.po.mo:\n\t$(MSGFMT) -o $@ $<\n\n.po.gmo:\n\tfile=`echo $* | sed 's,.*/,,'`.gmo \\\n\t  && rm -f $$file && $(GMSGFMT) --statistics -c -o $$file $<\n\n\nall: all-@USE_NLS@\n\nall-yes: $(CATALOGS)\nall-no:\n\n$(top_builddir)/keymap_alldefs.h:\n\t( cd $(top_builddir) && $(MAKE) keymap_alldefs.h )\n\n# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot',\n# otherwise packages like GCC can not be built if only parts of the source\n# have been downloaded.\n\n$(PACKAGE).pot: $(POTFILES) $(BUILT_POTFILES) $(srcdir)/POTFILES.in\n\trm -f $(PACKAGE).pot $(PACKAGE).po\n\t$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \\\n\t  --add-comments=L10N --keyword=_ --keyword=N_ \\\n\t  --files-from=$(srcdir)/POTFILES.in \\\n\t&& \\\n\t$(XGETTEXT) --default-domain=$(PACKAGE) \\\n\t  --add-comments=L10N --keyword=_ --keyword=N_ \\\n\t  --join $(BUILT_POTFILES) \\\n\t&& test ! -f $(PACKAGE).po \\\n\t   || ( rm -f $(PACKAGE).pot \\\n\t\t&& mv $(PACKAGE).po $(PACKAGE).pot )\n\n\ninstall: install-exec install-data\ninstall-exec:\ninstall-data: install-data-@USE_NLS@\n\tif test \"$(PACKAGE)\" = \"gettext\"; then \\\n\t  $(MKDIR_P) $(DESTDIR)$(gettextsrcdir); \\\n\t  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \\\n\t\t\t  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \\\n\telse \\\n\t  : ; \\\n\tfi\ninstall-data-no: all\ninstall-data-yes: all\n\t$(MKDIR_P) $(DESTDIR)$(datadir)\n\t@catalogs='$(CATALOGS)'; \\\n\tfor cat in $$catalogs; do \\\n\t  cat=`basename $$cat`; \\\n\t  lang=`echo $$cat | sed 's/\\.gmo$$//'`; \\\n\t  dir=$(localedir)/$$lang/LC_MESSAGES; \\\n\t  $(MKDIR_P) $(DESTDIR)$$dir; \\\n\t  if test -r $$cat; then \\\n\t    $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \\\n\t    echo \"installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo\"; \\\n\t  else \\\n\t    $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \\\n\t    echo \"installing $(srcdir)/$$cat as\" \\\n\t\t \"$(DESTDIR)$$dir/$(PACKAGE).mo\"; \\\n\t  fi; \\\n\tdone\n\n# Define this as empty until I found a useful application.\ninstallcheck:\n\nuninstall:\n\tcatalogs='$(CATALOGS)'; \\\n\tfor cat in $$catalogs; do \\\n\t  cat=`basename $$cat`; \\\n\t  lang=`echo $$cat | sed 's/\\.gmo$$//'`; \\\n\t  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \\\n\tdone\n\tif test \"$(PACKAGE)\" = \"gettext\"; then \\\n\t  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \\\n\telse \\\n\t  : ; \\\n\tfi\n\ncheck: all\n\ndvi info tags TAGS ID:\n\nmostlyclean:\n\trm -f core core.* *.pox $(PACKAGE).po *.new.po\n\trm -fr *.o\n\nclean: mostlyclean\n\ndistclean: clean\n\trm -f Makefile Makefile.in POTFILES *.mo\n\nmaintainer-clean: distclean\n\t@echo \"This command is intended for maintainers to use;\"\n\t@echo \"it deletes files that may require special tools to rebuild.\"\n\trm -f $(GMOFILES)\n\ndistdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)\ndist distdir: $(DISTFILES)\n\tdists=\"$(DISTFILES)\"; \\\n\tfor file in $$dists; do \\\n\t  if test -f $$file; then dir=.; else dir=$(srcdir); fi; \\\n\t  cp -p $$dir/$$file $(distdir); \\\n\tdone\n\nupdate-po: Makefile\n\t$(MAKE) $(PACKAGE).pot\n\tif test \"$(PACKAGE)\" = \"gettext\"; then PATH=`pwd`/../src:$$PATH; fi; \\\n\tcd $(srcdir); \\\n\tcatalogs='$(GMOFILES)'; \\\n\tfor cat in $$catalogs; do \\\n\t  cat=`basename $$cat`; \\\n\t  lang=`echo $$cat | sed 's/\\.gmo$$//'`; \\\n\t  echo \"$$lang:\"; \\\n\t  if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \\\n\t    mv -f $$lang.new.po $$lang.po; \\\n\t  else \\\n\t    echo \"msgmerge for $$cat failed!\"; \\\n\t    rm -f $$lang.new.po; \\\n\t  fi; \\\n\tdone\n\t$(MAKE) update-gmo\n\nupdate-gmo: Makefile $(GMOFILES)\n\t@:\n\nMakefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in\n\tcd $(top_builddir) \\\n\t  && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \\\n\t       $(SHELL) ./config.status\n\n# Tell versions [3.59,3.63) of GNU make not to export all variables.\n# Otherwise a system limit (for SysV at least) may be exceeded.\n.NOEXPORT:\n"
  },
  {
    "path": "po/POTFILES.in",
    "content": "account.c\naddrbook.c\nalias.c\nattach.c\nbrowser.c\nbuffy.c\ncharset.c\ncolor.c\ncommands.c\ncompose.c\ncrypt-gpgme.c\ncrypt.c\ncryptglue.c\ncurs_lib.c\ncurs_main.c\nedit.c\neditmsg.c\nflags.c\nhandler.c\nheaders.c\nhelp.c\nhistory.c\nhook.c\nimap/auth.c\nimap/auth_anon.c\nimap/auth_cram.c\nimap/auth_gss.c\nimap/auth_login.c\nimap/auth_sasl.c\nimap/browse.c\nimap/command.c\nimap/imap.c\nimap/message.c\nimap/util.c\ninit.c\nkeymap.c\nlib.c\nmain.c\nmbox.c\nmenu.c\nmh.c\nmutt_sasl.c\nmutt_socket.c\nmutt_ssl.c\nmutt_ssl_gnutls.c\nmutt_tunnel.c\nmuttlib.c\nmx.c\npager.c\nparse.c\npattern.c\npgp.c\npgpinvoke.c\npgpkey.c\npop.c\npop_auth.c\npop_lib.c\npostpone.c\nquery.c\nrecvattach.c\nrecvcmd.c\nremailer.c\nrfc1524.c\nscore.c\nsend.c\nsendlib.c\nsignal.c\nsmime.c\nsmtp.c\nsort.c\nstatus.c\nthread.c\n"
  },
  {
    "path": "po/bg.po",
    "content": "# This file was translated by Velko Hristov\n# Copyright (C) 2003 Free Software Foundation, Inc.\n# Velko Hristov <hristov@informatik.hu-berlin.de>, 2003.\n#\n# todo: remailer, debugging, pipe, mailing list, clear & continue, subparts, captitalize,\n# todo: overflow, certfile\n# todo: matching - \"\"  \" \"?\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt 1.5.5.1\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=CP1251\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"   %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"  %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \".\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \".\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"    !\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"   :\"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"     !\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"\"\n\":      .     ?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \":\"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \": '%s'   IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \":\"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] ?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"  :\"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"    \"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"  .\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"    \"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"    .    ?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \" \\\"compose\\\"  mailcap  %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"    \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"         .\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"         .\"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \"         .\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \" mailcap   \\\"compose\\\"  %s.    .\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \" \\\"edit\\\"  mailcap  %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \" mailcap   \\\"edit\\\"  %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"\"\n\"    mailcap .     .\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \" MIME .      .\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"     \"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- \"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- \"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"    \"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"  !\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \" !\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s   .\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"  [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \" [%s],  : %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \" [%s],  : %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"    !\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \" ,   \"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \" IMAP      \"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \" IMAP      \"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \" IMAP      \"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"     \"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"       \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"   .\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"    .\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"  : \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"    .\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \" : \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"   (d),  (a), (z)   \"\n\"(n)?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"  (d),  (a), (z)   (n)?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dazn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"   : \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"     \"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"    \"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"   \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s:    \"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s:   \"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s:   \"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s:       \"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s:  \"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \" .\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color:  \"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono:  \"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s:   \"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \" \"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"  \"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"    \"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"      PGP-?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"    !\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"     \"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"     .\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME-   .\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"  S/MIME       .\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME-    .\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP-   .\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP-    .\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \": \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"   : \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"    : \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"    !\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \" IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"    %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"    %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"   .\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"   .\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"  .\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"  .\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"    \"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"   (pipe): \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"     \"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"    ?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"     ?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"  \"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"  \"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"   \"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"   \"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"  :   (d)/(f)/  (r)/\"\n\"(s)/(o)/(t)/ (u)/(z)/(c)?: \"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\" :   (d)/(f)/  (r)/(s)/\"\n\"(o)/(t)/ (u)/(z)/(c)?: \"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrsotuzc\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \" : \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"   %s   \"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"   %s   \"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"   %s   \"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"   %s   \"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \" %s   \"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \" %s   \"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" \"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"    %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"      %s  ?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type    %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"     %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"  \"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \" .\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"  \"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"   .\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \", \"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"(-)\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \"  : \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"< >\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \" c: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d]   !\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d]  .     ?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- \"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \": '%s'   IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"       .\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \" IDN  \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"   ...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"  %s  !\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"   ,      \"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"     !\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"    .\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \" ,    !\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"  !\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"      .\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"     .\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"    .\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"   .\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"       ?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \" : \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"    %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \" : \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \" Content-Type   -/\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \" Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"     %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"    \"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"    ?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"     \"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"    %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"  .\"\n\n#: compose.c:1251\n#, fuzzy\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME-   . Clear & continue? \"\n\n#: compose.c:1284\n#, fuzzy\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP-   . Clear & continue? \"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"     \"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"    \"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"SSL    .\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"    %s?\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"   : %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- :       ! --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--   PGP- --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[--      PGP- --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--   PGP-  --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[--   PGP- --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[--      PGP- --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[--   PGP-  --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :   PGP-     ! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- :       ! --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--      PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--      PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[--     PGP/MIME  --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[--     PGP/MIME  --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP-   .\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"     .\"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"[--      S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"[--      S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     S/MIME  --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     S/MIME  --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"   \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \" : %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \" : %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \"  \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \" : 0x%s\"\n\n#: crypt-gpgme.c:3533\n#, fuzzy\nmsgid \"[Revoked]\"\nmsgstr \"   \"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"   \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"  %s...\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"    : %s\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"   : %s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \" : 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \" SSL: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"    ,   .\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \" \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"    \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP ,   \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"PGP ,   \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME ,   \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"PGP ,   \\\"%s\\\".\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"\"\n\"      ,   ,   \"\n\".\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"   ,   .\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"     .\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"     .\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"     .\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s       ?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"  ,   \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"     \\\"%s\\\"  %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"    %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \",   : \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"   : %s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP  %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \" : \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"         .\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" ( : %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s  %s) --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"  .\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"  PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"   .\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"S/MIME         .\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"    PGP ...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"    S/MIME ...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :  multipart/signed  %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :  multipart/signed ! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- : %s/%s-     . --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--     --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :      . --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"  PGP...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"yes\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"no\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"    mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \" \"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"  ...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?'    ): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"   .\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \" .\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"      .\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"          .\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"  .\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"\"\n\"           !\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"          .\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"        .\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \". .\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"\"\n\"      .     \"\n\".\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"     .\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"      .\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"  .\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"    .\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"   : \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"      .\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"    .\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"   .\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"  .\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"    : \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"   .\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \": %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"  ,  : \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"    mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"  ,  : \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"  .\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"  ,  : \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"    ,  : \"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"    IMAP ...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"      \"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"   \"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"     .\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s    .\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"    Mutt    ?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"     .\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"     - \"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"   .\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"  .\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"   .\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"   .\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"   .\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"        \"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"  .\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"        \"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"  \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \" \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"  .\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"   .\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"   .\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"  .\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"   \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"     \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"  .\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\t  ,    ~\\n\"\n\"~b \\t     (Cc)  :\\n\"\n\"~c \\t      (Bcc)  :\\n\"\n\"~f \\t  \\n\"\n\"~F \\t  ~f,    ,      \"\n\"\\n\"\n\"~h\\t\\t   \\n\"\n\"~m \\t    \\n\"\n\"~M \\t  ~m,    ,      \"\n\"\\n\"\n\"~p\\t\\t  \\n\"\n\"~q\\t\\t      \\n\"\n\"~r \\t\\t    \\n\"\n\"~t \\t     To:\\n\"\n\"~u\\t\\t    \\n\"\n\"~v\\t\\t     $visual\\n\"\n\"~w \\t\\t    \\n\"\n\"~x\\t\\t      \\n\"\n\"~?\\t\\t \\n\"\n\".\\t\\t      \\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\t  ,    ~\\n\"\n\"~b \\t     (Cc)  :\\n\"\n\"~c \\t      (Bcc)  :\\n\"\n\"~f \\t  \\n\"\n\"~F \\t  ~f,    ,      \"\n\"\\n\"\n\"~h\\t\\t   \\n\"\n\"~m \\t    \\n\"\n\"~M \\t  ~m,    ,      \"\n\"\\n\"\n\"~p\\t\\t  \\n\"\n\"~q\\t\\t      \\n\"\n\"~r \\t\\t    \\n\"\n\"~t \\t     To:\\n\"\n\"~u\\t\\t    \\n\"\n\"~v\\t\\t     $visual\\n\"\n\"~w \\t\\t    \\n\"\n\"~x\\t\\t      \\n\"\n\"~?\\t\\t \\n\"\n\".\\t\\t      \\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d:    .\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(     .     )\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"  .\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \" :\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(-)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"   .\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"   .\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \" IDN  %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s:      (~?  )\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"      : %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"      : %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"      : %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"    !\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"  !\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"    : %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"       : %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \".    : %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"  \"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"  \"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- :            \"\n\"  --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- : #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- : %s/%s, : %s, : %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[--    %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"  : %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[--     %s. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[--   %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- : message/external-body       --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[--  %s/%s  \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"( %s ) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"  --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[--  %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- : %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[--  %s/%s      , --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"[--  ,      . --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[--      %s   . --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"     !\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \": multipart/signed  protocol .\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[--  %s/%s  \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s   \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \" ('%s'     )\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"('view-attachments'   !)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s:     \"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \": ,     \"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"  :\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\",   :\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"  %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook:     unhook *  hook.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook:  hook : %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook:     %s  %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"  .\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \" (a)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"  .\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \" (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \" CRAM-MD5 .\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \" (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \" GSSAPI .\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN     .\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \" .\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \" (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \" SASL .\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s    IMAP \"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"     ...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"  \"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"   : \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"     .\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"   .\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"   : \"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \" SSL: %s\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"   .\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"   .\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \" SSL: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"    %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \" IMAP-  . Mutt     .\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"       TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"     TSL \"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"  %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"     !\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"    %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \" \"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"  %d   ...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"    ... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"    !\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"    ...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbo:  EXPUNGE\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"    \"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"  %s...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"  %s...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"  %s...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"  %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"\"\n\"          IMAP-.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"     %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"   ... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"   ... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"  ...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"\"\n\"   .      .\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"     ...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"  %d   %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"  %d-   %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"   ?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"      .\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \" ,   \"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"   ,   \"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \":  IDN '%s'   '%s'.\\n\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"   \"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"   \"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"   \"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias:  \"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \":  IDN '%s'   '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"  \"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s:    \"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s):    : %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s:  \"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"      \\\"reset\\\"\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"      \\\"reset\\\"\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s  \"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s  \"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"   : %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s:     \"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s:  \"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s:  \"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s:  .\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s:  \"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"  %s,  %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source:   %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source:         %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source:   %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source:   \"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s:  \"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"   : %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"       \"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"       \"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"       \"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \" \"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"    .\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"  .\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"  .  '%s'  .\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push:   \"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s:    \"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"   \"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind:   \"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s:  \"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro:    \"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro:   \"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec:  \"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s:   \"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"  (^G  ): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \" = %s,  = %o,  = %d\"\n\n#: lib.c:131\n#, fuzzy\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Integer overflow --     !\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \" !\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"   ,     <mutt-dev@mutt.org>.\\n\"\n\"    ,    flea(1).\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"  (C) 1996-2002 Michael R. Elkins  .\\n\"\n\"Mutt    ;    `mutt -vv'.\\n\"\n\"Mutt        \\n\"\n\"  ;  `mutt -vv'   .\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\": mutt [ -nRyzZ ] [ -e <> ] [ -F <> ] [ -m <> ] [ -f \"\n\"<> ]\\n\"\n\"       mutt [ -nR ] [ -e <> ] [ -F <> ] -Q <> [ -Q \"\n\"<> ] [...]\\n\"\n\"       mutt [ -nR ] [ -e <> ] [ -F <> ] -A <> [ -A \"\n\"<> ] [...]\\n\"\n\"       mutt [ -nx ] [ -e <> ] [ -a <> ] [ -F <> ] [ -H \"\n\"<> ] [ -i <> ] [ -s <> ] [ -b <> ] [ -c <> ] <> \"\n\"[ ... ]\\n\"\n\"       mutt [ -n ] [ -e <> ] [ -F <> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\":\\n\"\n\"  -A <>\\t  \\n\"\n\"  -a <  >\\t   \\n\"\n\"  -b <>\\t   (BCC)   \\n\"\n\"  -c <>\\t  (CC)   \\n\"\n\"  -e <>\\t,      \\n\"\n\"  -f <  >\\t ,    \\n\"\n\"  -F <  >\\t muttrc \\n\"\n\"  -H <  >\\t   \\n\"\n\"  -i <  >\\t,      \\n\"\n\"  -m <>\\t     \\n\"\n\"  -n\\t\\t  Muttrc\\n\"\n\"  -p\\t\\t \\n\"\n\"  -Q <variable>\\t   \\n\"\n\"  -R\\t\\t     \\n\"\n\"  -s <>\\t   (    ,   )\\n\"\n\"  -v\\t\\t   ,   \\n\"\n\"  -x\\t\\t mailx \\n\"\n\"  -y\\t\\t     `mailboxes'\\n\"\n\"  -z\\t\\t   ,      \\n\"\n\"  -Z\\t\\t           \"\n\"    \\n\"\n\"  -h\\t\\t  \"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\": mutt [ -nRyzZ ] [ -e <> ] [ -F <> ] [ -m <> ] [ -f \"\n\"<> ]\\n\"\n\"       mutt [ -nR ] [ -e <> ] [ -F <> ] -Q <> [ -Q \"\n\"<> ] [...]\\n\"\n\"       mutt [ -nR ] [ -e <> ] [ -F <> ] -A <> [ -A \"\n\"<> ] [...]\\n\"\n\"       mutt [ -nx ] [ -e <> ] [ -a <> ] [ -F <> ] [ -H \"\n\"<> ] [ -i <> ] [ -s <> ] [ -b <> ] [ -c <> ] <> \"\n\"[ ... ]\\n\"\n\"       mutt [ -n ] [ -e <> ] [ -F <> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\":\\n\"\n\"  -A <>\\t  \\n\"\n\"  -a <  >\\t   \\n\"\n\"  -b <>\\t   (BCC)   \\n\"\n\"  -c <>\\t  (CC)   \\n\"\n\"  -e <>\\t,      \\n\"\n\"  -f <  >\\t ,    \\n\"\n\"  -F <  >\\t muttrc \\n\"\n\"  -H <  >\\t   \\n\"\n\"  -i <  >\\t,      \\n\"\n\"  -m <>\\t     \\n\"\n\"  -n\\t\\t  Muttrc\\n\"\n\"  -p\\t\\t \\n\"\n\"  -Q <variable>\\t   \\n\"\n\"  -R\\t\\t     \\n\"\n\"  -s <>\\t   (    ,   )\\n\"\n\"  -v\\t\\t   ,   \\n\"\n\"  -x\\t\\t mailx \\n\"\n\"  -y\\t\\t     `mailboxes'\\n\"\n\"  -z\\t\\t   ,      \\n\"\n\"  -Z\\t\\t           \"\n\"    \\n\"\n\"  -h\\t\\t  \"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"  :\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"    .\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \": '%s'   IDN.\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Debugging   %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \" DEBUG         .\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s  .    ?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"    %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"   .\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s:     .\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"     .\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"     .\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"   .\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"  %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"   !\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"   !\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"\"\n\" !       !\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"     !\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync:    ,    ! (,  \"\n\"  )\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"  %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"  ...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"  !       %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"      !\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"    ...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \" : \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"   .\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \" .\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"     .\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"     .\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"   .\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"   .\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"   .\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"   .\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \": \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \" : \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"   .\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"  .\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"      .\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"     .\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"   .\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"  %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"     .\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"\"\n\"maildir_commit_message():         \"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"   : %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"  %s  \"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL    .\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"     \\\"preconnect\\\"\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"    %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \" IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"  %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \" \\\"%s\\\"     .\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"  %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"    %s (%s)\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"   \"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"       : %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s     !\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL       \"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"- \"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \" SSL: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"       \"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"SSL ,  %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[  ]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[ ]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"       \"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"    \"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"       \"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"       \"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"  S/MIME       .\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"  \"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"   :\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"    :\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"   \"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"    %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \" : %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r),  (o),  (a)\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"roa\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r),  (o)\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ro\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \":      \"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"  \"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL ,  %s (%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"    .\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \" : %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \" : %s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"       \"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"    \"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"    \"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\n#, fuzzy\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"       \"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \"  \"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"  %s...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"    %s (%s)\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"\"\n\"  .      ? [(y) , (n) , (a) \"\n\"]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"yna\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"  .      ?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"   : \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \" . (o), (a)  (c)?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"oac\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"    POP    .\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"      %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s    !\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"\"\n\"    .     \"\n\"  %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \" dot-  %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"fcntl        (timeout)!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"  fcntl ... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"flock        (timeout)!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"  flock ... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"   %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"    %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"       %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"    %d-    ?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"     %d    ?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"     %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"   .\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \": %d; : %d; : %d\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \": %d; : %d\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" '%s'  /    \"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \" 'toggle-write'      !\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"     . %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"   .\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"   \"\n\n#: mx.c:1513\n#, fuzzy\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Integer overflow --     .\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \". .\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \". .\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"    .\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"    .\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"   .\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"   .\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"     .\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"   \\\"boundary\\\" !\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"  : %s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"  \"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"   : %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \" : %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \" : %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"   : %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \" \"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"  : %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c:  \"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c:      \"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \" \"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"  : %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \" \"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \":   %d (,    ).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"    ...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"    ...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \" ,    .\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"   ,     \"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"   ,     \"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"  .\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"  PGP :\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP   .\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- :       PGP ! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--   PGP- --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :       PGP ! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \" .\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"      PGP !\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"PGP     \"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"eswabf\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"eswabf\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"eswabf\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"PGP (e), (s),  (a),  (b)   (f)?\"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"eswabf\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"  PGP ...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"    ,   .\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP ,   <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP ,   \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"    /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP  %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"    TOP.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"          \"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"    UIDL.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"\"\n\"   .      .\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s    POP \"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"    ...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"       \"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"  %d   ...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"   ...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP    .\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"     POP  .\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"      ?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"    (%d )...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"     !\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d  %d   ]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"  !\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \" (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \" (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \" APOP .\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"    USER.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"   \"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"      .\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"    : %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"    POP ...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"   ...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \" .        POP ?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"  .\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \" PGP  \"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \" S/MIME  \"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"  ...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \" .\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \" \"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"  \"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"  ...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"     .\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \": \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \" '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Pipe\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"    .\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"!      %s,  ?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"  .\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \" : \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"  (pipe): \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"       %s !\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"     ?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"    ?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"     !\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"\"\n\n#: recvattach.c:1057\n#, fuzzy\nmsgid \"There are no subparts to show!\"\nmsgstr \" ,    !.\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"      POP .\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"        .\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"        .\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"        .\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"     message/rfc822 .\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"    !\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"    !\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"      %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"      ?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"      .    \"\n\"  MIME ?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"     MIME  ?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"    %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"  .\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \" mailing list-!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"      .    \"\n\"  MIME ?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"   mixmaster \\\"type2.list\\\"!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"  remailer .\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \": %s        remailer  .\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"mixmaster     %d .\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"remailer    .\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"      .\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"      .\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"mixmaster   Cc  Bcc  .\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\",      \\\"hostname\\\"  \"\n\" mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \" (%d)    .\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"    .\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"     %s  \\\"%s\\\"   %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"     mailcap\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"   mailcap-   %s\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score:  \"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score:   \"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"  ,     ?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"    .\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"     %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"     %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"      !\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"      ?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"   ...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"       !\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"      ?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"  ...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"    ?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"      ?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"     ?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"   .\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"    .\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"   !\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"   .\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"   .     ?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \" .\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"  ...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"   \"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"     .\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"  o.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"   .\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"   \\\"boundary\\\" ! [,    ]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s   !\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s    .\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"    %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \" %d (%s)    .\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \" :\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \" IDN %s       .\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...   .\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"  %s...   .\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"  %d...   .\\n\"\n\n#: smime.c:141\n#, fuzzy\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"  SMIME :\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"      \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"   \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"   \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME ,   \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"     .\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"  : \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"   ()   %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \":       OpenSSL !\"\n\n#: smime.c:1320\n#, fuzzy\nmsgid \"no certfile\"\nmsgstr \"no certfile\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"  \"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"    OpenSSL ...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"      OpenSSL !\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--   OpenSSL- --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- :       OpenSSL ! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[--      S/MIME --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[--      S/MIME --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     S/MIME  --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     S/MIME  --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (e), (s),  (w),  (a),  (b) \"\n\"  (f)?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (e), (s),  (w),  (a),  (b) \"\n\"  (f)?\"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"eswabf\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e), (s),  (w),  (a),  (b) \"\n\"  (f)?\"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"eswabf\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \" SSL: %s\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \" SSL: %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"   \"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \" GSSAPI .\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \" SASL .\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \" SASL .\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"   ...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"\"\n\"       ! (,    \"\n\")\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(  )\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"        \"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"    .\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"    (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"      mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:9\n#, fuzzy\nmsgid \"Toggle display of subparts\"\nmsgstr \"/ \"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"     ( IMAP)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"       ( IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"       ( IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"  ,   .\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \" ()  \"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"         (BCC)\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"        (CC)\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"  ,         \"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"  ,    \"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"  (From)\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \" ,    mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"      (Reply-To)\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"    ( IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"      ispell\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"   ,      mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"/    \"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"     - \"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"       \"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"\"\n\"          \"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"   / \"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \" a     \"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"  (text/plain) \"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"   (text/plain)     \"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"    ( IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"   /    \"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"       \"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"       \"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:83\n#, fuzzy\nmsgid \"capitalize the word\"\nmsgstr \"capitalize the word\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"       \"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"       \"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \" a muttrc \"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"/     \"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"    1/2 \"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"    1/2 \"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"   mailing list\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \" ,   \"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"    IMAP \"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"   POP \"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"  ,   \"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"    : \"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"     .\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \" ,   \"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \" ,   \"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"   ,   \"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"/  \"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"        \"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"       \"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"    ( IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"/   \"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"/ ,    \"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"/    \"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"       \"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"   mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \" ,  mailcap\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \" MIME \"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"/  \"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"/  \"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \" PGP  \"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \" PGP \"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \" PGP  \"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \" PGP  \"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"   pgp\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \" remailer  \"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \" remailer  \"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \" remailer  \"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"   mixmaster remailer \"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \" S/MIME \"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"  .\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \"    \"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"  .\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \" \"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"  \"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \" . ,  <roessler@does-not-exist.org>\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"     \"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- :   PGP/MIME ! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \": multipart/encrypted  protocol .\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"\"\n#~ \" %s   .       %s ?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"\"\n#~ \"   (   !)  \\\"%s\\\"  \"\n#~ \"%s?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"    \\\"%s\\\"  %s?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \":  %s        . \"\n#~ \"(    )\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"    OpenSSL ..\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \":       .\"\n\n#~ msgid \"Clear\"\n#~ msgstr \" \"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"esabf\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"     .\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \" : \"\n\n#~ msgid \"Search: \"\n#~ msgstr \": \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"    .\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"  SSL \"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"  SSL \"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"  namespaces...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \": mutt [ -nRyzZ ] [ -e <> ] [ -F <> ] [ -m <> ] \"\n#~ \"[ -f <> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <> ] [ -F <> ] -Q <> [ -Q \"\n#~ \"<> ] [...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <> ] [ -F <> ] -A <> [ -A \"\n#~ \"<> ] [...]\\n\"\n#~ \"       mutt [ -nx ] [ -e <> ] [ -a <> ] [ -F <> ] [ -H \"\n#~ \"<> ] [ -i <> ] [ -s <> ] [ -b <> ] [ -c <> ] \"\n#~ \"<> [ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <> ] [ -F <> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \":\\n\"\n#~ \"  -A <>\\t  \\n\"\n#~ \"  -a <  >\\t   \\n\"\n#~ \"  -b <>\\t   (BCC)   \\n\"\n#~ \"  -c <>\\t  (CC)   \\n\"\n#~ \"  -e <>\\t,      \\n\"\n#~ \"  -f <  >\\t ,    \\n\"\n#~ \"  -F <  >\\t muttrc \\n\"\n#~ \"  -H <  >\\t   \\n\"\n#~ \"  -i <  >\\t,      \\n\"\n#~ \"  -m <>\\t     \\n\"\n#~ \"  -n\\t\\t  Muttrc\\n\"\n#~ \"  -p\\t\\t \\n\"\n#~ \"  -Q <variable>\\t   \\n\"\n#~ \"  -R\\t\\t     \\n\"\n#~ \"  -s <>\\t   (    ,   \"\n#~ \")\\n\"\n#~ \"  -v\\t\\t   ,   \\n\"\n#~ \"  -x\\t\\t mailx \\n\"\n#~ \"  -y\\t\\t     `mailboxes'\\n\"\n#~ \"  -z\\t\\t   ,      \\n\"\n#~ \"  -Z\\t\\t          \"\n#~ \"     \\n\"\n#~ \"  -h\\t\\t  \"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"      'important'  POP .\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"    POP    .\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"  %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"  ... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"  %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"  pgp...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \" .    !\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \" CLOSE\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"  (C) 1996-2002 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"  (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"  (C) 1997-2002 Thomas Roessler <roessler@does-not-exist.\"\n#~ \"org>\\n\"\n#~ \"  (C) 1998-2002 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"  (C) 1999-2002 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"  (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"  (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \",  ,    ,   \"\n#~ \"\\n\"\n#~ \"\\n\"\n#~ \"        ;     /\\n\"\n#~ \"        GNU General Public License, \"\n#~ \"\\n\"\n#~ \"        ,   2   \"\n#~ \"\\n\"\n#~ \"    (  ) - .\\n\"\n#~ \"\\n\"\n#~ \"            ,\\n\"\n#~ \"          ;     \"\n#~ \"\\n\"\n#~ \"     -        .\\n\"\n#~ \"     GNU General Public License   .\\n\"\n#~ \"\\n\"\n#~ \"           GNU General Public License\\n\"\n#~ \"       ;     ,    Free \"\n#~ \"Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n\n#~ msgid \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (f)orget it? \"\n#~ msgstr \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128,  (f)? \"\n\n#~ msgid \"12345f\"\n#~ msgstr \"12345f\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"   .\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"   .\"\n\n#~ msgid \"Unexpected response received from server: %s\"\n#~ msgstr \"   : %s\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"    IMAP     \"\n\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"\"\n#~ \"     PGP ? (PGP   ,  \"\n#~ \" )\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"    %s: %s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s    .\"\n\n#~ msgid \"unspecified protocol error\"\n#~ msgstr \"  \"\n\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"  OpenSSL...\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"       %s...?\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"       %s...?\"\n\n#~ msgid \"ewsabf\"\n#~ msgstr \"ewsabf\"\n"
  },
  {
    "path": "po/ca.po",
    "content": "# Catalan messages for mutt.\n# Ivan Vilata i Balaguer <ivan@selidor.net>, 2001-2004, 2006-2009, 2013, 2014, 2015, 2016.\n#\n# Sóc Ivan, aquestes són les convencions que adopte per a la 1.5.22:\n#\n# - Sempre que es puga s’usaran els caràcters adequats per al text en català:\n#   l’apòstrof (’), ela geminada (l·l, L·L), cometes («, », “, ”, ‘, ’, en\n#   aquest ordre de d’aparició), guionet (‐), guionet dur (‑), guió (—) i punts\n#   suspensius (…).  Compte, perquè alguns dels caràcters anteriors no són els\n#   que s’obtenen teclejant directament; vegeu\n#   https://elvil.net/blog/ca/ortotipografia\n# - Use 2 espais després d’un punt.\n# - Missatges d’ajuda:\n#   - Forma d’ús: …\n#           o bé: …\n#   - ARGUMENT_COMPOST, però ARGCOMP\n#   - FILE(s) -> cada FITXER (si és possible)\n#   - Cada línia de descripció d’una opció comença en la columna 24, i sempre es\n#     manté com a mínim a 4 espais del nom de l’opció.  Quan l’opció arriba a la\n#     columna 24, la descripció comença en la línia inferior.  Les descripcions\n#     que no caben en una línia es parteixen i continuen en la columna 24 de la\n#     línia següent.\n#   - Les descripcions d’ítems que no són opcions es mantenen alineades a 4\n#     espais de l’ítem més llarg del bloc.  Les que no caben en una línia es\n#     parteixen i continuen en la mateixa columna on comencen.\n#     - Excepció: ajudes de «pr», quin format vos agrada més?\n# - Errors i avisos:\n#   - no és igual «no es pot obrir» que «no s’ha pogut obrir»\n#   - no és igual «s’està obrint X» que «en obrir X» (error)\n#   - «avís:» comença amb minúscula, la cadena següent també\n#   - sempre van en una sola línia, a no ser que els retorns importen; en\n#     aquest cas, les noves línies comencen amb un caràcter de tabulació\n# - VARIABLE_ENTORN, però «valor de variable»\n# - Noms de funció: printf()\n# - Noms de fitxer: «fitxer»\n# - Noms d’opcions: «--opció=ARGUMENT»\n# - El text com a molt arriba a la columna 78, amb el caràcter de nova línia en\n#   la 79.  Les línies es parteixen de forma automàtica (no per a que quede\n#   bonic, excepte quan quede realment horrend o porte a confusió).\n# - Els missatges marcats com a multilínia només arriben fins a la columna 70.\n#   Sovint contenen marques de format; en aquest cas s’hi inserta una nova\n#   línia perquè no hi ha forma de saber com serà de llarga la línia.\n#\n# IDN = Internationalized Domain Name\n#\n# He aplicat algunes de les recomanacions de\n# <https://www.softcatala.org/recursos/quality/gnutools.html>.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt 1.6.0\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2016-03-23 20:29+0100\\n\"\n\"Last-Translator: Ivan Vilata i Balaguer <ivan@selidor.net>\\n\"\n\"Language-Team: Catalan <ca@dodds.net>\\n\"\n\"Language: ca\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Nom d’usuari a «%s»: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Contrasenya per a «%s@%s»: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Ix\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Esborra\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Recupera\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Selecciona\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Ajuda\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"No teniu cap àlies.\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Àlies\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Nou àlies: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Ja heu definit un àlies amb aquest nom.\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Avís: Aquest àlies podria no funcionar.  Voleu reparar‐lo?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adreça: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Error: L’IDN no és vàlid: %s\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Nom personal: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"Voleu acceptar «%s» com a àlies de «%s»?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Desa al fitxer: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Error en llegir el fitxer d’àlies.\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"S’ha afegit l’àlies.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Error en desplaçar‐se dins del fitxer d’àlies.\"\n\n# ABREUJAT!\n#   El nom de fitxer no concorda amb cap «nametemplate»; voleu continuar?\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"El nom de fitxer no concorda amb cap «nametemplate»; continuar?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Cal que l’entrada «compose» de «mailcap» continga «%%s».\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Error en executar «%s».\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"No s’ha pogut obrir el fitxer per a interpretar‐ne les capçaleres.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"No s’ha pogut obrir el fitxer per a eliminar‐ne les capçaleres.\"\n\n# Es refereix a un fitxer temporal.  ivb\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"No s’ha pogut reanomenar un fitxer.\"\n\n# ABREUJAT!\n#   No hi ha cap entrada «compose» de «%s» a «mailcap»: es crea un fitxer buit.\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"«%s» no té entrada «compose» a «mailcap»: cree fitxer buit.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Cal que l’entrada «edit» de «mailcap» continga «%%s».\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"No hi ha cap entrada «edit» de «%s» a «mailcap».\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"No hi ha cap entrada adequada a «mailcap».  Es visualitza com a text.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"No s’ha definit el tipus MIME.  No es pot veure l’adjunció.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"No s’ha pogut crear el filtre.\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Ordre: %-20.20s Descripció: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Ordre: %-30.30s Adjunció: %s\"\n\n# Nom de fitxer i tipus MIME.  ivb\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Adjunció: %s: %s\"\n\n# Nom de fitxer.  ivb\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---Adjunció: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"No s’ha pogut crear el filtre.\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Error d’escriptura.\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Es desconeix com imprimir l’adjunció.\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Canvia de directori\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Màscara\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"«%s» no és un directori.\"\n\n# ivb (2001/12/07)\n# ivb  Es refereix a les definides en «mailboxes».\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Bústies d’entrada [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Subscrites [%s], màscara de fitxers: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Directori [%s], màscara de fitxers: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"No es pot adjuntar un directori.\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"No hi ha cap fitxer que concorde amb la màscara de fitxers.\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Només es poden crear bústies amb IMAP.\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Només es poden reanomenar bústies amb IMAP.\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Només es poden esborrar bústies amb IMAP.\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"No es pot esborrar la carpeta arrel.\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Voleu realment esborrar la bústia «%s»?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"S’ha esborrat la bústia.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"No s’ha esborrat la bústia.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Canvia al directori: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Error en llegir el directori.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Màscara de fitxers: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Ordena inversament per (d)ata, (a)lfabet, (m)ida, o (n)o ordena? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Ordena per (d)ata, (a)lfabet, (m)ida, o (n)o ordena? \"\n\n# ivb (2004/03/20)\n# ivb  (d)ata, (a)lfabet, (m)ida, (n)o\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"damn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nom del nou fitxer: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"No es pot veure un directori.\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Error en intentar veure el fitxer.\"\n\n# Vaja, no hi ha com posar‐li cometes…  ivb\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Hi ha correu nou a \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: El terminal no permet aquest color.\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: El color no existeix.\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: L’objecte no existeix.\"\n\n# «index» i companyia són paraules clau.  ivb\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: L’ordre només és vàlida per a objectes «index», «body» i «header».\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: Manquen arguments.\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Manquen arguments.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: Manquen arguments.\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: Manquen arguments.\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: L’atribut no existeix.\"\n\n# ivb (2001/12/08)\n# ivb  També apareix com a error aïllat.\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"Manquen arguments.\"\n\n# ivb (2001/12/08)\n# ivb  També apareix com a error aïllat.\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"Sobren arguments.\"\n\n# ivb (2001/12/08)\n# ivb  També apareix com a error aïllat.\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"No es permet l’ús de colors per defecte.\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Voleu verificar la signatura PGP?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"No s’ha pogut crear un fitxer temporal.\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"No s’ha pogut crear el filtre de visualització.\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"No s’ha pogut copiar el missatge.\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S’ha pogut verificar amb èxit la signatura S/MIME.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"El propietari del certificat S/MIME no concorda amb el remitent.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Avís: Part d’aquest missatge no ha estat signat.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"NO s’ha pogut verificar la signatura S/MIME.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"S’ha pogut verificar amb èxit la signatura PGP.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"NO s’ha pogut verificar la signatura PGP.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Ordre: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Avís: El missatge no té capçalera «From:».\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Redirigeix el missatge a: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Redirigeix els missatges marcats a: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Error en interpretar l’adreça.\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"L’IDN no és vàlid: %s\"\n\n# ivb (2001/12/02)\n# ivb  El programa posa l’interrogant.\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Voleu redirigir el missatge a «%s»\"\n\n# ivb (2001/12/02)\n# ivb  El programa posa l’interrogant.\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Voleu redirigir els missatges a «%s»\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"No s’ha redirigit el missatge.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"No s’han redirigit els missatges.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"S’ha redirigit el missatge.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"S’han redirigit els missatges.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"No s’ha pogut crear el procés filtre.\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Redirigeix a l’ordre: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"No s’ha definit cap ordre d’impressió.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Voleu imprimir el missatge?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Voleu imprimir els misatges marcats?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"S’ha imprès el missatge.\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"S’han imprès els missatges.\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"No s’ha pogut imprimir el missatge.\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"No s’han pogut imprimir els missatges.\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Dscnd (d)ata/(o)rig/(r)ebut/(t)ema/de(s)t/(f)il/(c)ap/(m)ida/(p)unts/\"\n\"sp(a)m?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Ascnd (d)ata/(o)rig/(r)ebut/(t)ema/de(s)t/(f)il/(c)ap/(m)ida/(p)unts/\"\n\"sp(a)m?: \"\n\n# ivb (2004/08/16)\n# ivb  (d)ata/(o)rig/(r)ebut/(t)ema/de(s)t/(f)il/(c)ap/(m)ida/(p)unt/sp(a)m\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dortsfcmpa\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Ordre per a l’intèrpret: \"\n\n# «%s» podria ser « els marcats».  ivb\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Descodifica i desa%s a la bústia\"\n\n# «%s» podria ser « els marcats».  ivb\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Descodifica i copia%s a la bústia\"\n\n# «%s» podria ser « els marcats».  ivb\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Desxifra i desa%s a la bústia\"\n\n# «%s» podria ser « els marcats».  ivb\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Desxifra i copia%s a la bústia\"\n\n# «%s» podria ser « els marcats».  ivb\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Desa%s a la bústia\"\n\n# «%s» podria ser « els marcats».  ivb\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Copia%s a la bústia\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" els marcats\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"S’està copiant a «%s»…\"\n\n# «%s» és un codi de caràcters.  ivb\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Voleu convertir en %s en enviar?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"S’ha canviat «Content-Type» a «%s».\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"S’ha canviat el joc de caràcters a %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"es farà conversió\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"no es farà conversió\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"No hi ha cap adjunció.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Envia\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Avorta\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Ajunta fitxer\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Descriu\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"No es permet\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Signa i xifra\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Xifra\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Signa\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"Cap\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (PGP en línia)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n# Crec que hi ha bastant d’espai per a la cadena.  ivb\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \" (xifratge oportunista)\"\n\n# ivb (2001/11/19)\n# ivb  L’espai de principi és per a alinear, però no hi ha res a fer…\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \"  signa com a: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<per defecte>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Xifra amb: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"«%s» [#%d] ja no existeix.\"\n\n# ivb (2001/11/19)\n# ivb  ABREUJAT!\n# S'ha modificat «%s» [#%d].  Voleu actualitzar‐ne la codificació?\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"Modificat «%s» [#%d].  Actualitzar codificació?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Adjuncions\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Avís: L’IDN no és vàlid: %s\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"No es pot esborrar l’única adjunció.\"\n\n# El primer camp és una capçalera de correu.  ivb\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"L’IDN de «%s» no és vàlid: %s\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"S’estan adjuntant els fitxers seleccionats…\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"No s’ha pogut adjuntar «%s».\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Bústia a obrir per a adjuntar‐ne missatges\"\n\n#: compose.c:762\n#, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"No s’ha pogut obrir la bústia «%s».\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"La carpeta no conté missatges.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Marqueu els missatges que voleu adjuntar.\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"No s’ha pogut adjuntar.\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"La recodificació només afecta les adjuncions de tipus text.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"No es convertirà l’adjunció actual.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Es convertirà l’adjunció actual.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"La codificació no és vàlida.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Voleu desar una còpia d’aquest missatge?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Reanomena a: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Ha fallat stat() sobre «%s»: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Nou fitxer: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"«Content-Type» ha de tenir la forma «base/sub».\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"El valor de «Content-Type» «%s» no és conegut.\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"No s’ha pogut crear el fitxer «%s».\"\n\n# ivb (2001/11/20)\n# ivb  Curiosa forma d’emetre un error…\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"El que ocorre aquí és que no s’ha pogut incloure una adjunció.\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Voleu posposar aquest missatge?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Escriu el missatge a la bústia\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"S’està escrivint el missatge a «%s»…\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"S’ha escrit el missatge.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"El missatge ja empra S/MIME.  Voleu posar‐lo en clar i continuar? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"El missatge ja empra PGP.  Voleu posar‐lo en clar i continuar? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"Error en crear el context GPGME: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"Error en habilitar el protocol CMS: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"Error en crear l’objecte de dades GPGME: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"Error en reservar l’objecte de dades: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"Error en rebobinar l’objecte de dades: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"Error en llegir l’objecte de dades: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"No s’ha pogut crear un fitxer temporal.\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"Error en afegir el destinatari «%s»: %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"No s’ha trobat la clau secreta «%s»: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"L’especificació de la clau secreta «%s» és ambigua.\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"Error en establir la clau secreta «%s»: %s\\n\"\n\n# PKA és la notació, no la signatura.  ivb\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"Error en establir la notació PKA de la signatura: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"Error en xifrar les dades: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"Error en signar les dades: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\"$pgp_sign_as no està establerta i «~/.gnupg/gpg.conf» no conté una clau per \"\n\"defecte\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Avís: Una de les claus ha estat revocada.\\n\"\n\n# I darrere va la data sense punt.  ivb\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Avís: La clau emprada per a crear la signatura expirà en: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Avís: Almenys una de les claus de certificació ha expirat.\\n\"\n\n# I darrere va la data sense punt.  ivb\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Avís: La signatura expirà en: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"No s’ha pogut verificar perquè manca una clau o certificat.\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"La CRL (llista de certificats revocats) no es troba disponible.\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"La CRL (llista de certificats revocats) és massa vella.\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"No s’ha acomplert un requeriment establert per política.\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"S’ha produït un error de sistema.\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"Avís: L’entrada PKA no concorda amb l’adreça del signatari: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"L’adreça del signatari verificada amb PKA és: \"\n\n# XXX No puc unificar les traduccions pq una porta replè i l’altra no!  ivb\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Empremta digital: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"Avís: RES indica que la clau pertanya a la persona esmentada a sobre.\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"Avís: La clau NO PERTANY a la persona esmentada a sobre.\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"Avís: NO és segur que la clau pertanya a la persona esmentada a sobre.\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"també conegut com a: \"\n\n# Millor amb cometes però no es pot.  ivb\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"identificador \"\n\n# Es refereix a una signatura.  ivb\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"creada en: \"\n\n# Millor amb cometes però no es pot (per coherència amb l’anterior).  ivb\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Error en obtenir informació de la clau amb identificador %s: %s\\n\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"Signatura correcta de:\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"Signatura *INCORRECTA* de:\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Problema, la signatura de:\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"                expira en: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Inici de la informació de la signatura. --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Error: La verificació ha fallat: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Inici de la notació (signatura de: %s). ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Final de la notació. ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Final de la informació de la signatura. --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: El desxifratge ha fallat: %s --]\\n\"\n\"\\n\"\n\n# Es refereix a múltiples claus.  ivb\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Error en extreure les dades de les claus.\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Error: El desxifratge o verificació ha fallat: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Error: La còpia de les dades ha fallat.\\n\"\n\n# Aquests texts en majúscules reprodueixen els marcadors dels fitxers PGP,\n# així que no té molt de sentit mantenir les majúscules en la traducció.  ivb\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Inici del missatge PGP. --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- Inici del bloc de clau pública PGP. --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Inici del missatge PGP signat. --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- Final del missatge PGP. --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- Final del bloc de clau pública PGP. --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- Final del missatge PGP signat. --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: No s’ha trobat l’inici del missatge PGP. --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Error: No s’ha pogut crear un fitxer temporal. --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les dades següents es troben signades i xifrades amb PGP/MIME: --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les dades següents es troben xifrades amb PGP/MIME: --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Final de les dades signades i xifrades amb PGP/MIME. --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Final de les dades xifrades amb PGP/MIME. --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"S’ha pogut desxifrar amb èxit el missatge PGP.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"No s’ha pogut desxifrar el missatge PGP.\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les dades següents es troben signades amb S/MIME: --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les dades següents es troben xifrades amb S/MIME: --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Final de les dades signades amb S/MIME. --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Final de les dades xifrades amb S/MIME. --]\\n\"\n\n# Cal mantenir‐lo curt (porta al davant «Nom ..................: »).  ivb\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[No es mostra l’ID d’usuari (codificació desconeguda).]\"\n\n# Cal mantenir‐lo curt (porta al davant «Nom ..................: »).  ivb\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[No es mostra l’ID d’usuari (codificació no vàlida).]\"\n\n# Cal mantenir‐lo curt (porta al davant «Nom ..................: »).  ivb\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[No es mostra l’ID d’usuari (DN desconegut).]\"\n\n# Alineat amb «  també conegut com a : ».  ivb\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"  també conegut com a : \"\n\n# Alineat amb «  també conegut com a : ».  ivb\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Nom ..................: \"\n\n# Es refereix a un identificador d’usuari.  ivb\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[No és vàlid]\"\n\n# Es refereix a una clau.  ivb\n# Alineat amb «  també conegut com a : ».  ivb\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Vàlida des de ........: %s\\n\"\n\n# Es refereix a una clau.  ivb\n# Alineat amb «  també conegut com a : ».  ivb\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Vàlida fins a ........: %s\\n\"\n\n# Alineat amb «  també conegut com a : ».  ivb\n# Tipus de certificat, bits de l’algorisme, tipus d’algorisme.  ivb\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Tipus de clau ........: %1$s, %3$s de %2$lu bits\\n\"\n\n# Alineat amb «  també conegut com a : ».  ivb\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Utilitat de la clau ..: \"\n\n# Capacitats d’una clau.  ivb\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"xifratge\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n# Capacitats d’una clau.  ivb\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"signatura\"\n\n# Capacitats d’una clau.  ivb\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"certificació\"\n\n# Alineat amb «  també conegut com a : ».  ivb\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Número de sèrie ......: 0x%s\\n\"\n\n# Alineat amb «  també conegut com a : ».  ivb\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Lliurada per .........: \"\n\n# Alineat amb «  també conegut com a : ».  ivb\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Subclau ..............: 0x%s\"\n\n# Subclau.  ivb\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Revocada]\"\n\n# Subclau.  ivb\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Expirada]\"\n\n# Subclau.  ivb\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Inhabilitada]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"S’estan recollint les dades…\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Error en trobar la clau del lliurador: %s\\n\"\n\n#: crypt-gpgme.c:3675\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Error: La cadena de certificació és massa llarga, s’abandona aquí.\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"ID de la clau: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"Ha fallat gpgme_new(): %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"Ha fallat gpgme_op_keylist_start(): %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"Ha fallat gpgme_op_keylist_next(): %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"\"\n\"Totes les claus concordants estan marcades com a expirades o revocades.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Ix  \"\n\n# Aquest menú no està massa poblat.  -- ivb\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Selecciona  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Comprova la clau  \"\n\n# Darrere va el patró corresponent.  ivb\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Claus PGP i S/MIME que concordem amb\"\n\n# Darrere va el patró corresponent.  ivb\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"Claus PGP que concordem amb\"\n\n# Darrere va el patró corresponent.  ivb\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"Claus S/MIME que concorden amb\"\n\n# Darrere va el patró corresponent.  ivb\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"Claus que concordem amb\"\n\n# Nom i adreça?  ivb\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n# Nom i àlies?  ivb\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s «%s».\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"\"\n\"No es pot emprar aquesta clau: es troba expirada, inhabilitada o revocada.\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  Aquest ID es troba expirat, inhabilitat o revocat.\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID expirat/inhabilitat/revocat.\"\n\n# ivb (2002/02/02)\n# ivb  ABREUJAT! (Hei!  Hui és 2/2/2!)\n# ivb  Aquest ID té una validesa indefinida.\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"L’ID té una validesa indefinida.\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  Aquest ID no és vàlid.\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"L’ID no és vàlid.\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  Aquest ID només és lleugerament vàlid.\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"L’ID és lleugerament vàlid.\"\n\n# ivb (2001/12/08)\n# ivb  Davant d’açò pot anar una de les quatre anteriors.\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s  Voleu realment emprar la clau?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"S’estan cercant les claus que concorden amb «%s»…\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Voleu emprar l’ID de clau «%s» per a %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Entreu l’ID de clau per a %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Per favor, entreu l’ID de la clau: \"\n\n#: crypt-gpgme.c:4614\n#, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Error en exportar la clau: %s\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Clau PGP 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"GPGME: El protocol OpenPGP no es troba disponible.\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"GPGME: El protocol CMS no es troba disponible.\"\n\n#: crypt-gpgme.c:4721\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME: (s)igna, si(g)na com a, (p)gp, (c)lar, no (o)portunista? \"\n\n# (s)igna, si(g)na com a, (p)gp, (c)lar, no (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"sgpcco\"\n\n#: crypt-gpgme.c:4731\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP: (s)igna, si(g)na com a, s/(m)ime, (c)lar, no (o)portunista? \"\n\n# (s)igna, si(g)na com a, s/(m)ime, (c)lar, no (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"sgmcco\"\n\n#: crypt-gpgme.c:4744\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME: (x)ifra, (s)igna, si(g)na com a, (a)mbdós, (p)gp, (c)lar, \"\n\"(o)portunista? \"\n\n# (x)ifra, (s)igna, si(g)na com a, (a)mbdós, (p)gp, (c)lar, (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: crypt-gpgme.c:4745\nmsgid \"esabpfco\"\nmsgstr \"xsgapcco\"\n\n#: crypt-gpgme.c:4750\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP: (x)ifra, (s)igna, si(g)na com a, (a)mbdós, s/(m)ime, (c)lar, \"\n\"(o)portunista? \"\n\n# (x)ifra, (s)igna, si(g)na com a, (a)mbdós, s/(m)ime, (c)lar, (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: crypt-gpgme.c:4751\nmsgid \"esabmfco\"\nmsgstr \"xsgamcco\"\n\n#: crypt-gpgme.c:4762\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"S/MIME: (x)ifra, (s)igna, si(g)na com a, (a)mbdós, (p)gp, (c)lar? \"\n\n# (x)ifra, (s)igna, si(g)na com a, (a)mbdós, (p)gp, (c)lar\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"xsgapcc\"\n\n#: crypt-gpgme.c:4768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"PGP: (x)ifra, (s)igna, si(g)na com a, (a)mbdós, s/(m)ime, (c)lar? \"\n\n# (x)ifra, (s)igna, si(g)na com a, (a)mbdós, s/(m)ime, (c)lar\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"xsgamcc\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Signa com a: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"No s’ha pogut verificar el remitent.\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"No s’ha pogut endevinar el remitent.\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (data actual: %c)\"\n\n# ABREUJAT!\n#   [-- Aquesta és l'eixida de %s%s. --]\n# Exemple:\n#   [-- Eixida de OpenSSL (data actual: dg 05 nov 2006 21:04:11 CET). --]\n# La primera: «OpenSSL» o «PGP» (meec, apòstrof); la segona l’anterior.  ivb\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Eixida de %s%s: --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"S’han esborrat de la memòria les frases clau.\"\n\n# No es pot fer mai.  ivb\n# ABREUJAT!  ivb\n# No es pot emprar PGP en línia amb adjuncions.  Voleu recórrer a emprar PGP/MIME?\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"No es pot emprar PGP en línia amb adjuncions.  Emprar PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\"No s’ha enviat el missatge: no es pot emprar PGP en línia amb adjuncions.\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"S’està invocant PGP…\"\n\n# S’ha intentat però ha fallat.  ivb\n# ABREUJAT!  ivb\n# No s’ha pogut enviar el missatge en línia.  Voleu recórrer a emprar PGP/MIME?\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"No s’ha pogut enviar el missatge en línia.  Emprar PGP/MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"No s’ha enviat el missatge.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"No es permeten els misatges S/MIME sense pistes sobre el contingut.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"S’està provant d’extreure les claus PGP…\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"S’està provant d’extreure els certificats S/MIME…\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: El protocol «%s» de «multipart/signed» no és conegut. --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: L’estructura «multipart/signed» no és consistent. --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Avís: No es poden verificar les signatures «%s/%s». --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les dades següents es troben signades: --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Avís: No s’ha trobat cap signatura. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Final de les dades signades. --]\\n\"\n\n# ABREUJAT!  ivb\n# S’ha activat «crypt_use_gpgme», però Mutt no s’ha compilat per a emprar GPGME.\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"S’ha activat «crypt_use_gpgme», però aquest Mutt no pot emprar GPGME.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"S’està invocant S/MIME…\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"sí\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"no\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Voleu abandonar Mutt?\"\n\n# ivb (2001/12/08)\n# ivb  Apareix amb més coses al darrere (curs_lib) o entre parèntesis\n# ivb  (mutt_socket) -> sense punt.\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"Error desconegut\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Premeu qualsevol tecla per a continuar…\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" («?» llista): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"No hi ha cap bústia oberta.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"No hi ha cap missatge.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"La bústia és de només lectura.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"No es permet aquesta funció al mode d’adjuntar missatges.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"No hi ha cap missatge visible.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"%s: l’ACL no permet l’operació.\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"No es pot establir si una bústia de només lectura pot ser modificada.\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"S’escriuran els canvis a la carpeta en abandonar‐la.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"No s’escriuran els canvis a la carpeta.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Ix\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Desa\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Nou correu\"\n\n# ivb (2001/12/08)\n# ivb  Menú superpoblat: mantenir _molt_ curt!\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Respon\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grup\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"\"\n\"S’ha modificat la bústia des de fora.  Els senyaladors poden ser incorrectes.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Hi ha correu nou en aquesta bústia.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"S’ha modificat la bústia des de fora.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"No hi ha cap missatge marcat.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"No hi ha res per fer.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Salta al missatge: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"L’argument ha de ser un número de missatge.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"El missatge no és visible.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"El número de missatge no és vàlid.\"\n\n# Al darrere porta dos punts.  ivb\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\nmsgid \"Cannot delete message(s)\"\nmsgstr \"No es poden esborrar els missatges\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Esborra els missatges que concorden amb: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"No hi ha cap patró limitant en efecte.\"\n\n# ivb (2001/12/08)\n# ivb  Nooop!  Només mostra el límit actual.\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Límit: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Limita als missatges que concorden amb: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Per a veure tots els missatges, limiteu a «all».\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Voleu abandonar Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Marca els missatges que concorden amb: \"\n\n# Al darrere porta dos punts.  ivb\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"No es poden restaurar els missatges\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Restaura els missatges que concorden amb: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Desmarca els missatges que concorden amb: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"S’ha eixit dels servidors IMAP.\"\n\n# És una pregunta.  -- ivb\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Obri en mode de només lectura la bústia\"\n\n# És una pregunta.  -- ivb\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Obri la bústia\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"No hi ha cap bústia amb correu nou.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"«%s» no és una bústia.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Voleu abandonar Mutt sense desar els canvis?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"No s’ha habilitat l’ús de fils.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"S’ha trencat el fil.\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"No es pot trencar el fil, el missatge no n’és part de cap.\"\n\n# Al darrere porta dos punts.  ivb\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"No es poden enllaçar els fils\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"No hi ha capçalera «Message-ID:» amb què enllaçar el fil.\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Per favor, marqueu un missatge per a enllaçar‐lo ací.\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"S’han enllaçat els fils.\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"No s’ha enllaçat cap fil.\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Vos trobeu sobre el darrer missatge.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"No hi ha cap missatge no esborrat.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Vos trobeu sobre el primer missatge.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"La cerca ha tornat al principi.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"La cerca ha tornat al final.\"\n\n#: curs_main.c:1608\nmsgid \"No new messages in this limited view.\"\nmsgstr \"No hi ha cap missatge nou en aquesta vista limitada.\"\n\n#: curs_main.c:1610\nmsgid \"No new messages.\"\nmsgstr \"No hi ha cap missatge nou.\"\n\n#: curs_main.c:1615\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"No hi ha cap missatge no llegit en aquesta vista limitada.\"\n\n#: curs_main.c:1617\nmsgid \"No unread messages.\"\nmsgstr \"No hi ha cap missatge no llegit.\"\n\n# Al darrere porta dos punts.  ivb\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\nmsgid \"Cannot flag message\"\nmsgstr \"No es pot senyalar el missatge\"\n\n# Al darrere porta dos punts.  ivb\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"No es pot canviar el senyalador «nou»\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"No hi ha més fils.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Vos trobeu al primer fil.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"El fil conté missatges no llegits.\"\n\n# Al darrere porta dos punts.  ivb\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\nmsgid \"Cannot delete message\"\nmsgstr \"No es pot esborrar el missatge\"\n\n# Al darrere porta dos punts.  ivb\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\nmsgid \"Cannot edit message\"\nmsgstr \"No es pot editar el missatge.\"\n\n# Al darrere porta dos punts.  ivb\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"No es poden marcar els missatges com a llegits\"\n\n# Al darrere porta dos punts.  ivb\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\nmsgid \"Cannot undelete message\"\nmsgstr \"No es pot restaurar el missatge\"\n\n#: edit.c:41\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~                     Insereix una línia que comença amb un sol «~».\\n\"\n\"~b USUARIS             Afegeix els USUARIS al camp «Bcc:».\\n\"\n\"~c USUARIS             Afegeix els USUARIS al camp «Cc:».\\n\"\n\"~f MISSATGES           Inclou els MISSATGES.\\n\"\n\"~F MISSATGES           El mateix que «~f», però incloent‐hi també les\\n\"\n\"                       capçaleres.\\n\"\n\"~h                     Edita la capçalera del missatge.\\n\"\n\"~m MISSATGES           Inclou i cita els MISSATGES.\\n\"\n\"~M MISSATGES           El mateix que «~m», però incloent‐hi també les\\n\"\n\"                       capçaleres.\\n\"\n\"~p                     Imprimeix el missatge.\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q                     Escriu el fitxer i abandona l’editor.\\n\"\n\"~r FITXER              Llegeix un FITXER a l’editor.\\n\"\n\"~t USUARIS             Afegeix els USUARIS al camp «To:».\\n\"\n\"~u                     Retorna a la línia anterior.\\n\"\n\"~v                     Edita el missatge amb l’editor $VISUAL.\\n\"\n\"~w FITXER              Escriu el missatge al FITXER.\\n\"\n\"~x                     Avorta els canvis i abandona l’editor.\\n\"\n\"~?                     Mostra aquest missatge.\\n\"\n\".                      A soles en una línia termina l’entrada.\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: El número de missatge no és vàlid.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Termineu el missatge amb «.» a soles en una línia)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"No hi ha cap bústia activa.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Contingut del missatge:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(continuar)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"Manca un nom de fitxer.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"El missatge no conté cap línia.\\n\"\n\n# El primer camp és una capçalera de correu.  ivb\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"L’IDN de «%s» no és vàlid: %s\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: L’ordre de l’editor no és coneguda («~?» per a l’ajuda).\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"No s’ha pogut crear una carpeta temporal: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"No s’ha pogut escriure en una carpeta temporal: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"No s’ha pogut truncar una carpeta temporal: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"El fitxer missatge és buit.\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"El missatge no ha estat modificat.\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"No s’ha pogut obrir el fitxer missatge: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"No s’ha pogut afegir a la carpeta: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Error.  Es manté el fitxer temporal: %s\"\n\n# ivb (2001/12/08)\n# ivb  Així queda més clar.  El programa posa l’interrogant.\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Quin senyalador voleu activar\"\n\n# ivb (2001/12/08)\n# ivb  Així queda més clar.  El programa posa l’interrogant.\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Quin senyalador voleu desactivar\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Error: No s’ha pogut mostrar cap part del «multipart/alternative». --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Adjunció #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Tipus: %s/%s, Codificació: %s, Mida: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"No s’han pogut mostrar una o més parts d’aquest missatge.\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"\"\n\"[-- Eixida de l’ordre de visualització automàtica --]\\n\"\n\"[-- «%s». --]\\n\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  S’està invocant l’ordre de visualització automàtica: %s\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Ordre de visualització automàtica: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- No s’ha pogut executar «%s». --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"\"\n\"[-- Errors de l’ordre de visualització automàtica --]\\n\"\n\"[-- «%s». --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Error: La part «message/external-body» no té paràmetre «access-type». \"\n\"--]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"\"\n\"[-- Aquesta adjunció de tipus «%s/%s» --]\\n\"\n\"[-- \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(amb mida %s octets) \"\n\n# No es pot posar sempre el punt en la frase!  ivb\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"ha estat esborrada --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- amb data %s. --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- Nom: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Aquesta adjunció de tipus «%s/%s» no s’inclou, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"[-- i la font externa indicada ha expirat. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- i no es pot emprar el mètode d’accés indicat, «%s». --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"No s’ha pogut obrir el fitxer temporal.\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Error: La part «multipart/signed» no té paràmetre «protocol».\"\n\n# Es concatenen amb una o cap de les següents i en acabant « --]».  ivb\n# Sí, la concatenació original està malament.  ivb\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Açò és una adjunció.\"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- No es pot mostrar «%s/%s».\"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \" (Useu «%s» per a veure aquesta part.)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \" (Vinculeu «view-attachents» a una tecla.)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: No s’ha pogut adjuntar el fitxer.\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"Error: Per favor, informeu d’aquest error.\"\n\n# ivb (2001/12/07)\n# ivb  Es refereix a un menú -> masculí.\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<DESCONEGUT>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Vincles genèrics:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Funcions no vinculades:\\n\"\n\"\\n\"\n\n# ivb (2001/12/08)\n# ivb  El noms dels menús no estan traduïts.\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Ajuda de «%s»\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"El format del fitxer d’historial no és vàlid (línia %d).\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"La drecera «^» a la bústia actual no està establerta.\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"La drecera a bústia s’ha expandit a l’expressió regular buida.\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: No es pot fer «unhook *» des d’un «hook».\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: El tipus de «hook» no és conegut: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: No es pot esborrar un «%s» des d’un «%s».\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"No hi ha cap autenticador disponible.\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"S’està autenticant (anònimament)…\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"L’autenticació anònima ha fallat.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"S’està autenticant (CRAM‐MD5)…\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"L’autenticació CRAM‐MD5 ha fallat.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"S’està autenticant (GSSAPI)…\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"L’autenticació GSSAPI ha fallat.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"L’ordre «LOGIN» no es troba habilitada en aquest servidor.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"S’està entrant…\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"L’entrada ha fallat.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"S’està autenticant (%s)…\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"L’autenticació SASL ha fallat.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"«%s» no és un camí IMAP vàlid.\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"S’està obtenint la llista de carpetes…\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"La carpeta no existeix.\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Crea la bústia: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"La bústia ha de tenir un nom.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"S’ha creat la bústia.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Reanomena la bústia «%s» a: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"El reanomenament ha fallat: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"S’ha reanomenat la bústia.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"S’ha tancat la bústia.\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"L’ordre «CREATE» ha fallat: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"S’està tancant la connexió amb «%s»…\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Aquest servidor IMAP és antic.  Mutt no pot funcionar amb ell.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Voleu protegir la connexió emprant TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"No s’ha pogut negociar la connexió TLS.\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"No s’ha pogut establir una connexió xifrada.\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"S’està seleccionant la bústia «%s»…\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Error en obrir la bústia.\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Voleu crear «%s»?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"No s’han pogut eliminar els missatges.\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"S’estan marcant %d missatges com a esborrats…\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"S’estan desant els missatges canviats… [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Error en desar els senyaladors.  Voleu tancar igualment?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Error en desar els senyaladors.\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"S’estan eliminant missatges del servidor…\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: Ha fallat «EXPUNGE».\"\n\n# És un missatge d’error.  ivb\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Cal un nom de capçalera per a cercar les capçaleres: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"El nom de la bústia no és vàlid.\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"S’està subscrivint a «%s»…\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"S’està dessubscrivint de «%s»…\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"S’ha subscrit a «%s».\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"S’ha dessubscrit de «%s».\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"\"\n\"No s’han pogut recollir les capçaleres d’aquesta versió de servidor IMAP.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"No s’ha pogut crear el fitxer temporal «%s».\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"S’està avaluant la memòria cau…\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"S’estan recollint les capçaleres dels missatges…\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"S’està recollint el missatge…\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"L’índex del missatge no és correcte.  Proveu de reobrir la bústia.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"S’està penjant el missatge…\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"S’estan copiant %d missatges a «%s»…\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"S’està copiant el missatge %d a «%s»…\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Voleu continuar?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"No es troba disponible en aquest menú.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"L’expressió regular no és vàlida: %s\"\n\n# Vol dir que a::\n#\n#    spam patró format\n#\n# Una regla usa més referències cap enrere al «format» que es defineixen\n# al «patró».  ivb\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"spam: Hi ha més referències cap enrere que subexpressions definides.\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: No s’ha indicat el patró de concordança.\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: No s’ha indicat el patró de concordança.\"\n\n# L’indicador de format inicial altera l’ordre de configuració.  ivb\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%sgroup: Manca «-rx» o «-addr».\"\n\n# L’indicador de format inicial altera l’ordre de configuració.  ivb\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%sgroup: Avís: L’IDN no és vàlid: %s\\n\"\n\n# «attachments» és una ordre de configuració.  ivb\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"attachments: No s’ha indicat la disposició.\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"attachments: La disposició no és vàlida.\"\n\n# «unattachments» és una ordre de configuració.  ivb\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"unattachments: No s’ha indicat la disposició.\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"unattachments: La disposició no és vàlida.\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: No s’ha indicat cap adreça.\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Avís: L’IDN de l’àlies «%2$s» no és vàlid: %1$s\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"El camp de capçalera no és vàlid.\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: El mètode d’ordenació no és conegut.\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): Error a l’expressió regular: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: La variable no és coneguda.\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"El prefix emprat en «reset» no és permès.\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"El valor emprat en «reset» no és permès.\"\n\n# Açò és sintaxi, no té traducció.  ivb\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Forma d’ús: set variable=yes|no\"\n\n# ivb (2001/11/24)\n# ivb  Es refereix a una variable lògica.\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"«%s» està activada.\"\n\n# ivb (2001/11/24)\n# ivb  Es refereix a una variable lògica.\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"«%s» no està activada.\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"El valor de l’opció «%s» no és vàlid: «%s»\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: El tipus de bústia no és vàlid.\"\n\n# La cadena entre parèntesis és un dels missatges següents.  ivb\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: El valor no és vàlid (%s).\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"error de format\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"desbordament numèric\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: El valor no és vàlid.\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: El tipus no és conegut.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: El tipus no és conegut.\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Error a «%s», línia %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: Hi ha errors a «%s».\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  source: S’avorta la lectura de «%s» perquè conté massa errors.\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: «%s» conté massa errors: s’avorta la lectura.\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: Error a «%s».\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: Sobren arguments.\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: L’ordre no és coneguda.\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Error a la línia d’ordres: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"No s’ha pogut determinar el directori de l’usuari.\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"No s’ha pogut determinar el nom de l’usuari.\"\n\n#: init.c:2970\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"No s’ha pogut determinar el nom de l’estació amb uname().\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: No s’ha indicat el nom del grup.\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"Manquen arguments.\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"Les macros es troben inhabilitades en aquest moment.\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"S’ha detectat un bucle entre macros.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"La tecla no està vinculada.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"La tecla no està vinculada.  Premeu «%s» per a obtenir ajuda.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: Sobren arguments.\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: El menú no existeix.\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"La seqüència de tecles és nul·la.\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: Sobren arguments.\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: La funció no es troba al mapa.\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: La seqüència de tecles és buida.\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: Sobren arguments.\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: Manquen arguments.\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: La funció no existeix.\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Premeu les tecles («^G» avorta): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Caràcter = %s, Octal = %o, Decimal = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Desbordament enter, no s’ha pogut reservar memòria.\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"No resta memòria.\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Per a contactar amb els desenvolupadors, per favor envieu un missatge de\\n\"\n\"correu a <mutt-dev@mutt.org>.  Per a informar d’un error, per favor visiteu\\n\"\n\"http://bugs.mutt.org/.  Si teniu observacions sobre la traducció, contacteu\\n\"\n\"amb Ivan Vilata i Balaguer <ivan@selidor.net>.\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright © 1996‐2016 Michael R. Elkins i d’altres.\\n\"\n\"Mutt s’ofereix SENSE CAP GARANTIA; useu «mutt -vv» per a obtenir‐ne més\\n\"\n\"detalls.  Mutt és programari lliure, i podeu, si voleu, redistribuir‐lo \"\n\"sota\\n\"\n\"certes condicions; useu «mutt -vv» per a obtenir‐ne més detalls.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright © 1996‐2007 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright © 1996‐2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright © 1997‐2008 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright © 1998‐2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright © 1999‐2009 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright © 1999‐2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright © 2000‐2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright © 2006‐2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright © 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Moltes altres persones que no s’hi mencionen han contribuït amb codi,\\n\"\n\"solucions i suggeriments.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    Aquest és programari lliure; podeu redistribuir‐lo i/o modificar‐lo \"\n\"sota\\n\"\n\"    els termes de la Llicència Pública General GNU tal i com ha estat\\n\"\n\"    publicada per la Free Software Foundation; bé sota la versió 2 de la\\n\"\n\"    Llicència o bé (si ho preferiu) sota qualsevol versió posterior.\\n\"\n\"\\n\"\n\"    Aquest programa es distribueix amb l’expectativa de que serà útil, però\\n\"\n\"    SENSE CAP GARANTIA; ni tan sols la garantia implícita de \"\n\"COMERCIABILITAT\\n\"\n\"    o ADEQUACIÓ PER A UN PROPÒSIT PARTICULAR.  Vegeu la Llicència Pública\\n\"\n\"    General GNU per a obtenir‐ne més detalls.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    Hauríeu d’haver rebut una còpia de la Llicència Pública General GNU\\n\"\n\"    juntament amb aquest programa; en cas contrari, escriviu a la Free\\n\"\n\"    Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\\n\"\n\"    MA  02110‐1301, USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"Forma d’ús: mutt [OPCIÓ]… [-z] [-f FITXER | -yZ]\\n\"\n\"            mutt [OPCIÓ]… [-Ex] [-Hi FITXER] [-s ASSUMPTE] [-bc ADREÇA]\\n\"\n\"                 [-a FITXER… --] ADREÇA…\\n\"\n\"            mutt [OPCIÓ]… [-x] [-s ASSUMPTE] [-bc ADREÇA] [-a FITXER… --]\\n\"\n\"                 ADREÇA… < MISSATGE\\n\"\n\"            mutt [OPCIÓ]… -p\\n\"\n\"            mutt [OPCIÓ]… -A ÀLIES [-A ÀLIES]…\\n\"\n\"            mutt [OPCIÓ]… -Q VAR [-Q VAR]…\\n\"\n\"            mutt [OPCIÓ]… -D\\n\"\n\"            mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"Opcions:\\n\"\n\"  -A ÀLIES             Expandeix l’ÀLIES indicat.\\n\"\n\"  -a FITXER… --        Adjunta cada FITXER al missatge.  La llista de \"\n\"fitxers\\n\"\n\"                       ha d’acabar amb l’argument «--».\\n\"\n\"  -b ADREÇA            Indica una ADREÇA per a la còpia cega (Bcc).\\n\"\n\"  -c ADREÇA            Indica una ADREÇA per a la còpia (Cc).\\n\"\n\"  -D                   Mostra el valor de totes les variables a l’eixida\\n\"\n\"                       estàndard.\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\"  -d NIVELL            Escriu els missatges de depuració a «~/.muttdebug0».\"\n\n#: main.c:137\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -E                   Edita el fitxer esborrany (vegeu l’opció «-H») o el\\n\"\n\"                       fitxer a incloure (opció «-i»).\\n\"\n\"  -e ORDRE             Indica una ORDRE a executar abans de la \"\n\"inicialització.\\n\"\n\"  -f FITXER            Indica quina bústia llegir.\\n\"\n\"  -F FITXER            Indica un FITXER «muttrc» alternatiu.\\n\"\n\"  -H FITXER            Indica un FITXER esborrany d’on llegir la capçalera i \"\n\"el\\n\"\n\"                       cos.\\n\"\n\"  -i FITXER            Indica un FITXER que Mutt inclourà al cos.\\n\"\n\"  -m TIPUS             Indica un TIPUS de bústia per defecte.\\n\"\n\"  -n                   Fa que Mutt no llija el fitxer «Muttrc» del sistema.\\n\"\n\"  -p                   Recupera un missatge posposat.\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q VARIABLE          Consulta el valor d’una VARIABLE de configuració.\\n\"\n\"  -R                   Obri la bústia en mode de només lectura.\\n\"\n\"  -s ASSUMPTE          Indica l’ASSUMPTE (entre cometes si porta espais).\\n\"\n\"  -v                   Mostra la versió i les definicions de compilació.\\n\"\n\"  -x                   Simula el mode d’enviament de «mailx».\\n\"\n\"  -y                   Selecciona una bústia de la vostra llista \"\n\"«mailboxes».\\n\"\n\"  -z                   Ix immediatament si no hi ha missatges a la bústia.\\n\"\n\"  -Z                   Obri la primera bústia amb missatges nous, eixint\\n\"\n\"                       immediatament si no n’hi ha cap.\\n\"\n\"  -h                   Mostra aquest missatge d’ajuda.\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Opcions de compilació:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Error en inicialitzar el terminal.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Error: L’argument de l’opció «-d» no és vàlid: %s\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"S’activa la depuració a nivell %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"No es va definir «DEBUG» a la compilació.  Es descarta l’opció.\\n\"\n\n# ivb (2001/11/27)\n# ivb  Es refereix al directori «Maildir» -> masculí.\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"«%s» no existeix.  Voleu crear‐lo?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"No s’ha pogut crear «%s»: %s\"\n\n# Es refereix a l’esquema d’URL.  ivb\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"No s’ha pogut interpretar l’enllaç de tipus «mailto:».\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"No s’ha indicat cap destinatari.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"No es pot emprar l’opció «-E» amb l’entrada estàndard.\\n\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: No s’ha pogut adjuntar el fitxer.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"No hi ha cap bústia amb correu nou.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"No s’ha definit cap bústia d’entrada.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"La bústia és buida.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"S’està llegint «%s»…\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"La bústia és corrupta.\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"La bústia ha estat corrompuda.\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Error fatal.  No s’ha pogut reobrir la bústia.\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"No s’ha pogut blocar la bústia.\"\n\n# ivb (2001/11/27)\n# ivb  Cal mantenir el missatge curt.\n# ivb  ABREUJAT!\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: La bústia és modificada però els missatges no (informeu de l’error).\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"S’està escrivint «%s»…\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"S’estan realitzant els canvis…\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  L’escriptura ha fallat.  S’ha desat la bústia parcial a «%s».\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"L’escriptura fallà.  Es desa la bústia parcial a «%s».\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"No s’ha pogut reobrir la bústia.\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"S’està reobrint la bústia…\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Salta a: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"El número d’índex no és vàlid.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"No hi ha cap entrada.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"No podeu baixar més.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"No podeu pujar més.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Vos trobeu a la primera pàgina.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Vos trobeu a la darrera pàgina.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Vos trobeu a la darrera entrada.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Vos trobeu a la primera entrada.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Cerca: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Cerca cap enrere: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"No s’ha trobat.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"No hi ha cap entrada marcada.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"No es pot cercar en aquest menú.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"No es pot saltar en un diàleg.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"No es pot marcar.\"\n\n# Mutt usa «scan» quan es refereix a llegir una bústia Maildir.  ivb\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"S’està llegint «%s»…\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"No s’ha pogut escriure el missatge a disc.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): No s’ha pogut canviar la data del fitxer.\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"El perfil SASL no és conegut.\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Error en reservar una connexió SASL.\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Error en establir les propietats de seguretat de SASL.\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Error en establir el nivell de seguretat extern de SASL.\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Error en establir el nom d’usuari extern de SASL.\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"S’ha tancat la connexió amb «%s».\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL no es troba disponible.\"\n\n# «preconnect» és una ordre de configuració.  ivb\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"preconnect: L’ordre de preconnexió ha fallat.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Error en parlar amb «%s» (%s).\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"L’IDN no és vàlid: %s\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"S’està cercant «%s»…\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"No s’ha pogut trobar l’estació «%s».\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"S’està connectant amb «%s»…\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"No s’ha pogut connectar amb «%s» (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"No s’ha pogut extraure l’entropia suficient del vostre sistema.\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"S’està plenant la piscina d’entropia «%s»…\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"«%s» no té uns permisos segurs.\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"S’ha inhabilitat l’SSL per manca d’entropia.\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"Error d’E/S.\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"La negociació d’SSL ha fallat: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"No s’ha pogut obtenir el certificat del servidor.\"\n\n# El primer argument és p. ex. «SSL».  ivb\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"La connexió %s empra «%s» (%s).\"\n\n# ivb (2001/12/02)\n# ivb  Es pot referir a nom, correu, organització, unitat organitzativa,\n# ivb  localitat, estat, país -> ni masculí ni femení, sinó tot el contrari.\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"No es coneix\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[no s’ha pogut calcular]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[la data no és vàlida]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"El certificat del servidor encara no és vàlid.\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"El certificat del servidor ha expirat.\"\n\n# Sí, «subjecte» del certificat X.509, no «assumpte».  ivb\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"No s’ha pogut obtenir el subjecte del certificat.\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"No s’ha pogut obtenir el nom comú del certificat.\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"El propietari del certificat no concorda amb l’amfitrió «%s».\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"La comprovació de l’amfitrió del certificat ha fallat: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Aquest certificat pertany a:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Aquest certificat ha estat lliurat per:\"\n\n# ivb (2001/12/08)\n# ivb  A continuació ve el rang de validesa.\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Aquest certificat té validesa\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   des de %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     fins a %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Empremta digital: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"Comprovació del certificat SSL (%d de %d en la cadena)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r)ebutja, accepta (u)na sola volta, accepta (s)empre\"\n\n# ivb (2001/11/27)\n# ivb  (r)ebutja, accepta (u)na sola volta, accepta (s)empre\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"rus\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r)ebutja, accepta (u)na sola volta\"\n\n# ivb (2001/11/27)\n# ivb  (r)ebutja, accepta (u)na sola volta\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ru\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Avís: No s’ha pogut desar el certificat.\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"S’ha desat el certificat.\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Error: No hi ha un connector TLS obert.\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Tots els protocols de connexió TLS/SSL disponibles estan inhabilitats.\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\"No es permet la selecció explícita de la suite de xifrat amb $ssl_ciphers.\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"La connexió SSL/TLS empra «%s» (%s/%s/%s).\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Error en inicialitzar les dades de certificat de GNU TLS.\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Error en processar les dades del certificat.\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\"Avís: El certificat del servidor s’ha signat emprant un algorisme insegur.\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Empremta digital SHA1: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Empremta digital MD5: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"Avís: El certificat del servidor encara no és vàlid.\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"Avís: El certificat del servidor ha expirat.\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"Avís: El certificat del servidor ha estat revocat.\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"Avís: El nom d’estació del servidor no concorda amb el del certificat.\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"Avís: El signatari del certificat del servidor no és una CA.\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Error en verificar el certificat: %s\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"El certificat no és de tipus X.509.\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"S’està connectant amb «%s»…\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"El túnel a «%s» ha tornat l’error %d: %s\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Error al túnel establert amb «%s»: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"El fitxer és un directori; voleu desar a dins? [(s)í, (n)o, (t)ots]\"\n\n# (s)í, (n)o, (t)ots  ivb\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"snt\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"El fitxer és un directori; voleu desar a dins?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Fitxer a sota del directori: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"El fitxer ja existeix; (s)obreescriu, (a)fegeix, (c)ancel·la? \"\n\n# ivb (2001/11/27)\n# ivb  (s)obreescriu, (a)fegeix, (c)ancel·la\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"sac\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"No es poden desar missatges en bústies POP.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Voleu afegir els missatges a «%s»?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"«%s» no és una bústia.\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  Hi ha massa forrellats; voleu eliminar‐ne un de «%s»?\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Voleu eliminar un forrellat sobrant de «%s»?\"\n\n# ivb (2001/11/27)\n# ivb  «dotlock» és el programa emprat per a blocar.\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"No s’ha pogut blocar «%s» amb «dotlock».\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"S’ha excedit el temps d’espera en intentar blocar amb fcntl().\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"S’està esperant el blocatge amb fcntl()… %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"S’ha excedit el temps d’espera en intentar blocar amb flock().\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"S’està esperant el blocatge amb flock()… %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"No s’ha pogut blocar «%s».\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"No s’ha pogut sincronitzar la bústia «%s».\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Voleu moure els missatges a «%s»?\"\n\n# ivb (2001/12/08)\n# ivb  Ací «%d» sempre és 1.\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Voleu eliminar %d missatge esborrat?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Voleu eliminar %d missatges esborrats?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"S’estan movent els missatges llegits a «%s»…\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"No s’ha modificat la bústia.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d mantinguts, %d moguts, %d esborrats.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d mantinguts, %d esborrats.\"\n\n# ivb (2001/12/08)\n# ivb  Pot anar darrere de la següent de la següent.\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \"Premeu «%s» per a habilitar l’escriptura.\"\n\n# ivb (2001/12/08)\n# ivb  Pot anar darrere de la següent.\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Habiliteu l’escriptura amb «toggle-write».\"\n\n# Precedeix alguna de les anteriors.  Mantenir breu.  ivb\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Bústia en estat de només lectura.  %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"S’ha establert un punt de control a la bústia.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"No s’ha pogut escriure el missatge.\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Desbordament enter, no s’ha pogut reservar memòria.\"\n\n# ivb (2001/12/08)\n# ivb  Menú superpoblat: mantenir _molt_ curt!\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"RePàg\"\n\n# ivb (2001/12/08)\n# ivb  Menú superpoblat: mantenir _molt_ curt!\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"AvPàg\"\n\n# ivb (2001/12/08)\n# ivb  Menú superpoblat: mantenir _molt_ curt!\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Adjuncs.\"\n\n# ivb (2001/12/08)\n# ivb  Menú superpoblat: mantenir _molt_ curt!\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Segnt.\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"El final del missatge ja és visible.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"L’inici del missatge ja és visible.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Ja s’està mostrant l’ajuda.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"No hi ha més text citat.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"No hi ha més text sense citar després del text citat.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"El missatge «multipart» no té paràmetre «boundary».\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Error a l’expressió: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"L’expressió és buida.\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"El dia del mes no és vàlid: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"El mes no és vàlid: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"La data relativa no és vàlida: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"Error al patró a: %s\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"Manca el patró: %s\"\n\n# Realment són parèntesis!  ivb\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"Els parèntesis no estan aparellats: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: El modificador de patró no és vàlid.\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: No es permet en aquest mode.\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"Manca un paràmetre.\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"Els parèntesis no estan aparellats: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"El patró és buit.\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"Error: L’operació %d no és coneguda (informeu d’aquest error).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"S’està compilant el patró de cerca…\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"S’està executant l’ordre sobre els missatges concordants…\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"No hi ha cap missatge que concorde amb el criteri.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"S’està cercant…\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"La cerca ha arribat al final sense trobar cap concordança.\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"La cerca ha arribat a l’inici sense trobar cap concordança.\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"S’ha interromput la cerca.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Entreu la frase clau de PGP:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"S’ha esborrat de la memòria la frase clau de PGP.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Error: No s’ha pogut crear el subprocés PGP. --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Final de l’eixida de PGP. --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"Error intern.  Per favor, informeu d’aquest error.\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: No s’ha pogut crear el subprocés PGP. --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"El desxifratge ha fallat.\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"No s’ha pogut obrir el subprocés PGP.\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"No s’ha pogut invocar PGP.\"\n\n# Prescindesc de la paraula «format» perquè en reemplaçar‐hi les cadenes\n# següents la línia esdevé massa llarga.  ivb\n#: pgp.c:1730\n#, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP: (s)igna, si(g)na com a, %s, (c)lar, no (o)portunista? \"\n\n# Ull!  La mateixa clau que «en línia».  ivb\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n# Ull!  La mateixa clau que «PGP/MIME».  ivb\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"en lín(i)a\"\n\n# (s)igna, si(g)na com a, %s, (c)lar, no (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"sgccoi\"\n\n#: pgp.c:1742\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP: (s)igna, si(g)na com a, (c)lar, no (o)portunista? \"\n\n# (s)igna, si(g)na com a, (c)lar, no (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"sgcco\"\n\n# Prescindesc de la paraula «format» perquè en reemplaçar‐hi les cadenes\n# següents la línia esdevé massa llarga.  ivb\n#: pgp.c:1760\n#, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP: (x)ifra, (s)igna, si(g)na com a, (a)mbdós, %s, (c)lar, (o)portunista? \"\n\n# (x)ifra, (s)igna, si(g)na com a, (a)mbdós, %s, (c)lar, (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: pgp.c:1763\nmsgid \"esabfcoi\"\nmsgstr \"xsgaccoi\"\n\n#: pgp.c:1768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"PGP: (x)ifra, (s)igna, si(g)na com a, (a)mbdós, (c)lar, (o)portunista? \"\n\n# (x)ifra, (s)igna, si(g)na com a, (a)mbdós, (c)lar, (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: pgp.c:1769\nmsgid \"esabfco\"\nmsgstr \"xsgacco\"\n\n# Prescindesc de la paraula «format» perquè en reemplaçar‐hi les cadenes\n# següents la línia esdevé massa llarga.  ivb\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP: (x)ifra, (s)igna, si(g)na com a, (a)mbdós, %s, (c)lar? \"\n\n# (x)ifra, (s)igna, si(g)na com a, (a)mbdós, %s, (c)lar\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"xsgacci\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP: (x)ifra, (s)igna, si(g)na com a, (a)mbdós, (c)lar? \"\n\n# (x)ifra, (s)igna, si(g)na com a, (a)mbdós, (c)lar\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"xsgacc\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"S’està recollint la clau PGP…\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\"Totes les claus concordants han expirat o estan revocades o inhabilitades.\"\n\n# Una adreça..  ivb\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"Claus PGP que concorden amb <%s>.\"\n\n# Un nom.  ivb\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"Claus PGP que concordem amb «%s».\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"No s’ha pogut obrir «/dev/null».\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Clau PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"El servidor no permet l’ordre «TOP».\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"No s’ha pogut escriure la capçalera en un fitxer temporal.\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"El servidor no permet l’ordre «UIDL».\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"S’han perdut %d missatges.  Proveu de reobrir la bústia.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"«%s» no és un camí POP vàlid.\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"S’està recollint la llista de missatges…\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"No s’ha pogut escriure el missatge en un fitxer temporal.\"\n\n# No els seleccionats, sinó els marcats per a esborrar.  ivb\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"S’estan marcant els missatges per a esborrar…\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"S’està comprovant si hi ha missatges nous…\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"No s’ha definit el servidor POP (pop_host).\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"No hi ha correu nou a la bústia POP.\"\n\n# ivb (2001/11/30)\n# ivb  Use «eliminar» pq en portar els missatges s’eliminen completament\n# ivb  del servidor POP.\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Voleu eliminar els missatges del servidor?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"S’estan llegint els missatges nous (%d octets)…\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Error en escriure a la bústia.\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [llegits %d de %d missatges]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"El servidor ha tancat la connexió.\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"S’està autenticant (SASL)…\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"La marca horària de POP no és vàlida.\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"S’està autenticant (APOP)…\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"L’autenticació APOP ha fallat.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"El servidor no permet l’ordre «USER».\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"L’URL de POP no és vàlid: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"No s’han pogut deixar els missatges al servidor.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Error en connectar amb el servidor: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"S’està tancant la connexió amb el servidor POP…\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"S’estan verificant els índexs dels missatges…\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  S’ha perdut la connexió.  Voleu reconnectar amb el servidor POP?\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"S’ha perdut la connexió.  Reconnectar amb el servidor POP?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Missatges posposats\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"No hi ha cap missatge posposat.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"La capçalera criptogràfica no és permesa.\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"La capçalera S/MIME no és permesa.\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"S’està desxifrant el missatge…\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"El desxifratge ha fallat.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nova consulta\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Crea àlies\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Cerca\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"S’està esperant una resposta…\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"No s’ha definit cap ordre de consulta.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Consulta\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Consulta: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Consulta de «%s»\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Redirigeix\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Imprimeix\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"S’està desant…\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"S’ha desat l’adjunció.\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  AVÍS.  Esteu a punt de sobreescriure «%s»; voleu continuar?\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"AVÍS.  Aneu a sobreescriure «%s»; voleu continuar?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"S’ha filtrat l’adjunció.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtra amb: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Redirigeix a: \"\n\n#: recvattach.c:710\n#, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Es desconeix com imprimir adjuncions de tipus «%s».\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Voleu imprimir les adjuncions seleccionades?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Voleu imprimir l’adjunció?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"No s’ha pogut desxifrar el missatge xifrat.\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Adjuncions\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"No hi ha cap subpart a mostrar.\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"No es poden esborrar les adjuncions d’un servidor POP.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"No es poden esborrar les adjuncions d’un missatge xifrat.\"\n\n#: recvattach.c:1132\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"\"\n\"Esborrar les adjuncions d’un missatge xifrat pot invalidar‐ne la signatura.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Només es poden esborrar les adjuncions dels missatges «multipart».\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Només es poden redirigir parts de tipus «message/rfc822».\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Error en redirigir el missatge.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Error en redirigir els missatges.\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"No s’ha pogut obrir el fitxer temporal «%s».\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Voleu reenviar com a adjuncions?\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  No s’han pogut descodificar totes les adjuncions marcades.  Voleu reenviar les altres emprant MIME?\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"Reenviar amb MIME les adjuncions marcades no descodificables?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Voleu reenviar amb encapsulament MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"No s’ha pogut crear «%s».\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"No s’ha trobat cap missatge marcat.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"No s’ha trobat cap llista de correu.\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  No s’han pogut descodificar totes les adjuncions marcades.  Voleu encapsular la resta emprant MIME?\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"Encapsular amb MIME les adjuncions marcades no descodificables?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Afegeix\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Insereix\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Esborra\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"Accepta\"\n\n# ivb (2001/12/07)\n# ivb  En aquest cas «mixmaster» és un programa.\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"No s’ha pogut obtenir «type2.list» de «mixmaster».\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Seleccioneu una cadena de redistribuïdors.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Error: No es pot emprar «%s» com a redistribuïdor final d’una cadena.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Les cadenes de Mixmaster estan limitades a %d elements.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"La cadena de redistribuïdors ja és buida.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Vos trobeu al primer element de la cadena.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Vos trobeu al darrer element de la cadena.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"No es poden emprar les capçaleres «Cc» i «Bcc» amb Mixmaster.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Per favor, establiu un valor adequat per a «hostname» quan useu Mixmaster.\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Error en enviar el missatge, el procés fill ha eixit amb codi %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Error en enviar el missatge.\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  L’entrada del tipus «%s» a «%s», línia %d, no té un format vàlid.\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Entrada de tipus «%s» a «%s», línia %d: format no vàlid.\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"No s’ha indicat cap camí per a «mailcap».\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"No s’ha trobat cap entrada pel tipus «%s» a «mailcap»\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: Manquen arguments.\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: Sobren arguments.\"\n\n# És un error com els anteriors.  ivb\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"score: El número no és vàlid.\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"No hi ha assumpte; voleu avortar el missatge?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"S’avorta el missatge sense assumpte.\"\n\n# ivb (2001/12/07)\n# ivb  El primer «%s» és una adreça de correu i el segon potser «,...».\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Voleu escriure una resposta a %s%s?\"\n\n# ivb (2001/12/07)\n# ivb  El primer «%s» és una adreça de correu i el segon potser «,...».\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Voleu escriure un seguiment a %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Cap dels missatges marcats és visible.\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Voleu incloure el missatge a la resposta?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"S’hi està incloent el missatge citat…\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"No s’han pogut incloure tots els missatges sol·licitats.\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Voleu reenviar com a adjunció?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"S’està preparant el missatge a reenviar…\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Voleu recuperar un missatge posposat?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Voleu editar el missatge a reenviar?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Voleu avortar el missatge no modificat?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"S’avorta el missatge no modificat.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"S’ha posposat el missatge.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"No s’ha indicat cap destinatari.\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"No s’ha indicat cap destinatari.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"No hi ha assumpte; voleu avortar l’enviament?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"No s’ha indicat l’assumpte.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"S’està enviant el missatge…\"\n\n# El nom «Fcc» és bastant entenedor per a l’usuari si l’ha especificat.  ivb\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Voleu desar les adjuncions a l’Fcc?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"No s’ha pogut enviar el missatge.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"S’ha enviat el missatge.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"S’està enviant en segon pla.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"No s’ha trobat el paràmetre «boundary» (informeu d’aquest error).\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"«%s» ja no existeix.\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"«%s» no és un fitxer ordinari.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"No s’ha pogut obrir «%s».\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"$sendmail ha d’estar establerta per a poder enviar correu.\"\n\n# ivb (2001/12/08)\n# ivb  ABREUJAT!\n# ivb  Error en enviar el missatge, el procés fill ha exit amb codi %d (%s).\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Error en enviament, el fill isqué amb codi %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Eixida del procés de repartiment\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"En preparar «Resent-From»: L’IDN no és vàlid: %s\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s…  Eixint.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"S’ha rebut «%s»…  Eixint.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"S’ha rebut el senyal %d…  Eixint.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Entreu la frase clau de S/MIME:\"\n\n# Es refereixen a un certificat -> masculí, singular.  ivb\n# La longitud crec que no és fonamental, si totes són iguals.  ivb\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Confiat     \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Verficat    \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"No verificat\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Expirat     \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Revocat     \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"No vàlid    \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Desconegut  \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Certificats S/MIME que concorden amb «%s».\"\n\n# ivb (2015/08/29)\n# ivb  ABREUJAT!\n# ivb  Aquest ID no és de confiança.\n#: smime.c:472\nmsgid \"ID is not trusted.\"\nmsgstr \"L’ID no és de confiança.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Entreu l’ID de clau: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"No s’ha trobat cap certificat (vàlid) per a %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Error: No s’ha pogut crear el subprocés OpenSSL.\"\n\n# Hau!  ivb\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"No hi ha fitxer de certificat.\"\n\n# Hau!  ivb\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"No hi ha bústia.\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"OpenSSL no ha produit cap eixida…\"\n\n# Encara no s’ha signat.  ivb\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"No es pot signar: no s’ha indicat cap clau.  Useu «signa com a».\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"No s’ha pogut obrir el subprocés OpenSSL.\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Final de l’eixida d’OpenSSL. --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Error: No s’ha pogut crear el subprocés OpenSSL. --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Les dades següents es troben xifrades amb S/MIME: --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Les dades següents es troben signades amb S/MIME: --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Final de les dades xifrades amb S/MIME. --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Final de les dades signades amb S/MIME. --]\\n\"\n\n#: smime.c:2109\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME: (s)igna, xi(f)ra amb, si(g)na com a, (c)lar, no (o)portunista? \"\n\n# (s)igna, xi(f)ra amb, si(g)na com a, (c)lar, no (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"sfgcco\"\n\n#: smime.c:2123\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME: (x)ifra, (s)igna, xi(f)ra amb, si(g)na com a, (a)mbdós, (c)lar, \"\n\"(o)portunista? \"\n\n# (x)ifra, (s)igna, xi(f)ra amb, si(g)na com a, (a)mbdós, (c)lar, (o)portunista\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: smime.c:2124\nmsgid \"eswabfco\"\nmsgstr \"xsfgacco\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME: (x)ifra, (s)igna, xi(f)ra amb, si(g)na com a, (a)mbdós, (c)lar? \"\n\n# ivb (2003/03/26)\n# ivb  (x)ifra, (s)igna, xi(f)ra amb, si(g)na com a, (a)mbdós, (c)lar\n# La «f» i la «c» originals s’agafen en el mateix cas en el codi.  ivb\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"xsfgacc\"\n\n# Més coherent que l’original.  ivb\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Trieu la família d’algorismes: (D)ES, (R)C2, (A)ES, (c)lar? \"\n\n# (D)ES, (R)C2, (A)ES, (c)lar  ivb\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drac\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"(D)ES, DES (t)riple \"\n\n# (D)ES, DES (t)riple  ivb\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"RC2‐(4)0, RC2‐(6)4, RC2‐12(8) \"\n\n# RC2-(4)0, RC2-(6)4, RC2-12(8)  ivb\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"AES12(8), AES1(9)2, AES2(5)6 \"\n\n# AES12(8), AES1(9)2, AES2(5)6  ivb\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"La sessió SMTP fallat: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"La sessió SMTP fallat: no s’ha pogut obrir «%s»\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"No s’ha indicat el remitent (From).\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"La sessió SMTP ha fallat: error de lectura\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"La sessió SMTP ha fallat: error d’escriptura\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"La resposta del servidor no és vàlida.\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"L’URL d’SMTP no és vàlid: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"El servidor SMTP no admet autenticació.\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"L’autenticació SMTP necessita SASL.\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"L’autenticació %s ha fallat, es provarà amb el mètode següent.\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"L’autenticació SASL ha fallat.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"S’està ordenant la bústia…\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"No s’ha pogut trobar la funció d’ordenació (informeu d’aquest error).\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(cap bústia)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"El missatge pare no és visible en aquesta vista limitada.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"El missatge pare no es troba disponible.\"\n\n# ivb (2001/11/24)\n# ivb  Totes aquestes cadenes són missatges d’ajuda.  No sembla haver\n# ivb  restriccions de longitud.\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"L’operació nul·la.\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"Termina l’execució condicional (operació nul·la).\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"Força la visualització d’una adjunció emprant «mailcap».\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"Mostra una adjunció com a text.\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Activa o desactiva la visualització de les subparts.\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"Va al final de la pàgina.\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"Redirigeix un missatge a un altre destinatari.\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"Selecciona un nou fitxer d’aquest directori.\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"Mostra un fitxer.\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"Mostra el nom del fitxer seleccionat actualment.\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"Se subscriu a la bústia actual (només a IMAP).\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"Es dessubscriu de la bústia actual (només a IMAP).\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"\"\n\"Canvia entre veure totes les bústies o tan sols les subscrites (només a \"\n\"IMAP).\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"Llista les bústies amb correu nou.\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"Canvia de directori.\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"Comprova si hi ha correu nou a les bústies.\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"Adjunta fitxers a aquest missatge.\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"Adjunta missatges a aquest missatge.\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"Edita la llista de còpia cega (Bcc).\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"Edita la llista de còpia (Cc).\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"Edita la descripció d’una adjunció.\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"Edita la codificació de transferència d’una adjunció.\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"Demana un fitxer on desar una còpia d’aquest missatge.\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"Edita un fitxer a adjuntar.\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"Edita el camp de remitent (From).\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"Edita el missatge amb capçaleres.\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"Edita el missatge.\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"Edita l’adjunció emprant l’entrada de «mailcap».\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"Edita el camp de resposta (Reply-To).\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"Edita l’assumpte del missatge (Subject).\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"Edita la llista de destinataris (To).\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"Crea una nova bústia (només a IMAP).\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"Edita el tipus de contingut d’una adjunció.\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"Crea una còpia temporal d’una adjunció.\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"Executa «ispell» (comprovació ortogràfica) sobre el missatge.\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"Crea una nova adjunció emprant l’entrada de «mailcap».\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"Estableix si una adjunció serà recodificada.\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"Desa aquest missatge per a enviar‐lo més endavant.\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"Reanomena (o mou) un fitxer adjunt.\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"Envia el missatge.\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"Canvia la disposició entre en línia o adjunt.\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"Estableix si cal esborrar un fitxer una volta enviat.\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"Edita la informació de codificació d’un missatge.\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"Escriu el missatge en una carpeta.\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"Copia un missatge en un fitxer o bústia.\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"Crea un àlies partint del remitent d’un missatge.\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"Mou l’indicador al final de la pantalla.\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"Mou l’indicador al centre de la pantalla.\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"Mou l’indicador al començament de la pantalla.\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"Crea una còpia descodificada (text/plain) del missatge.\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"Crea una còpia descodificada (text/plain) del missatge i l’esborra.\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"Esborra l’entrada actual.\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"Esborra la bústia actual (només a IMAP).\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"Esborra tots els missatges d’un subfil.\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"Esborra tots els missatges d’un fil.\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"Mostra l’adreça completa del remitent.\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"Mostra un missatge i oculta o mostra certs camps de la capçalera.\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"Mostra un missatge.\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"Edita un missatge en brut.\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"Esborra el caràcter anterior al cursor.\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"Mou el cursor un caràcter a l’esquerra.\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"Mou el cursor al començament de la paraula.\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"Salta al començament de la línia.\"\n\n# ivb (2001/12/07)\n# ivb  Es refereix a les definides en «mailboxes».\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"Canvia entre les bústies d’entrada.\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"Completa el nom de fitxer o l’àlies.\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"Completa una adreça fent una consulta.\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"Esborra el caràcter sota el cursor.\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"Salta al final de la línia.\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"Mou el cursor un caràcter a la dreta.\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"Mou el cursor al final de la paraula.\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"Es desplaça cap avall a la llista d’historial.\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"Es desplaça cap amunt a la llista d’historial.\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"Esborra els caràcters des del cursor fins al final de la línia.\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"Esborra els caràcters des del cursor fins al final de la paraula.\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"Esborra tots els caràcters de la línia.\"\n\n# Sí, enfront és a l’esquerra.  ivb\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"Esborra la paraula a l’esquerra del cursor.\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"Escriu tal qual la tecla premuda a continuació.\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"Transposa el caràcter sota el cursor i l’anterior.\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"Posa la primera lletra de la paraula en majúscula.\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"Converteix la paraula a minúscules.\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"Converteix la paraula a majúscules.\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"Executa una ordre de «muttrc».\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"Estableix una màscara de fitxers.\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"Abandona aquest menú.\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"Filtra una adjunció amb una ordre de l’intèrpret.\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"Va a la primera entrada.\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"Canvia el senyalador «important» d’un missatge.\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"Reenvia un missatge amb comentaris.\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"Selecciona l’entrada actual.\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"Respon a tots els destinataris.\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"Avança mitja pàgina.\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"Endarrereix mitja pàgina.\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"Mostra aquesta pantalla.\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"Salta a un número d’índex.\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"Va a la darrera entrada.\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"Respon a la llista de correu indicada.\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"Executa una macro.\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"Redacta un nou missatge de correu.\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"Parteix el fil en dos.\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"Obri una carpeta diferent.\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"Obri una carpeta diferent en mode de només lectura.\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"Elimina un senyalador d’estat d’un missatge.\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"Esborra els missatges que concorden amb un patró.\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"Força l’obtenció del correu d’un servidor IMAP.\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"Ix de tots els servidors IMAP.\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"Obté el correu d’un servidor POP.\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"Va al primer missatge.\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"Va al darrer missatge.\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"Mostra només els missatges que concorden amb un patró.\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"Enllaça el missatge marcat a l’actual.\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Obri la següent bústia amb correu nou.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"Salta al següent missatge nou.\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"Salta al següent missatge nou o no llegit.\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"Salta al subfil següent.\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"Salta al fil següent.\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"Va al següent missatge no esborrat.\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"Salta al següent missatge no llegit.\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"Salta al missatge pare del fil.\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"Salta al fil anterior.\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"Salta al subfil anterior.\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"Va a l’anterior missatge no llegit.\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"Salta a l’anterior missatge nou.\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"Salta a l’anterior missatge nou o no llegit.\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"Salta a l’anterior missatge no llegit.\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"Marca el fil actual com a llegit.\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"Marca el subfil actual com a llegit.\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"Estableix un senyalador d’estat d’un missatge.\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"Desa els canvis realitzats a la bústia.\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"Marca els missatges que concorden amb un patró.\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"Restaura els missatges que concorden amb un patró.\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"Desmarca els missatges que concorden amb un patró.\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"Va al centre de la pàgina.\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"Va a l’entrada següent.\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"Avança una línia.\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"Va a la pàgina següent.\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"Salta al final del missatge.\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"Oculta o mostra el text citat.\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"Avança fins al final del text citat.\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"Salta a l’inici del missatge.\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"Redirigeix un missatge o adjunció a una ordre de l’intèrpret.\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"Va a l’entrada anterior.\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"Endarrereix una línia.\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"Va a la pàgina anterior.\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"Imprimeix l’entrada actual.\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"Pregunta a un programa extern per una adreça.\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"Afegeix els resultats d’una consulta nova als resultats actuals.\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"Desa els canvis realitzats a la bústia i ix.\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"Recupera un missatge posposat.\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"Neteja i redibuixa la pantalla.\"\n\n# ivb (2001/11/26)\n# ivb  Es refereix a una funció -> femení.\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{interna}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"Reanomena la bústia actual (només a IMAP).\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"Respon a un missatge.\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"Empra el missatge actual com a plantilla per a un de nou.\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"Desa un missatge o adjunció en una bústia o fitxer.\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"Cerca una expressió regular.\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"Cerca cap enrere una expressió regular.\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"Cerca la concordança següent.\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"Cerca la concordança anterior.\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"Estableix si cal resaltar les concordances trobades.\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"Invoca una ordre en un subintèrpret.\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"Ordena els missatges.\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"Ordena inversament els missatges.\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"Marca l’entrada actual.\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"Aplica la funció següent als missatges marcats.\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"Aplica la funció següent NOMÉS als missatges marcats.\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"Marca el subfil actual.\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"Marca el fil actual.\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"Canvia el senyalador «nou» d’un missatge.\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"Estableix si s’escriuran els canvis a la bústia.\"\n\n# ivb (2001/12/07)\n# ivb  Es refereix a les definides en «mailboxes».\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"\"\n\"Estableix si es navegarà només per les bústies d’entrada o per tots els \"\n\"fitxers.\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"Va a l’inici de la pàgina.\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"Restaura l’entrada actual.\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"Restaura tots els missatges d’un fil.\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"Restaura tots els missatges d’un subfil.\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"Mostra el número de versió i la data de Mutt.\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"Mostra una adjunció emprant l’entrada de «mailcap» si és necessari.\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"Mostra les adjuncions MIME.\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"Mostra el codi d’una tecla premuda.\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"Mostra el patró limitant actiu.\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"Plega o desplega el fil actual.\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"Plega o desplega tots els fils.\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"Adjunta una clau pública PGP.\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"Mostra les opcions de PGP.\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"Envia una clau pública PGP.\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"Verifica una clau pública PGP.\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"Mostra l’identificador d’usuari d’una clau.\"\n\n# ivb (2001/12/02)\n# ivb  Es refereix al format del missatge.\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"Comprova si s’ha emprat el PGP clàssic.\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Accepta la cadena construïda.\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Afegeix un redistribuïdor a la cadena.\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Insereix un redistribuïdor a la cadena.\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Esborra un redistribuïdor de la cadena.\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Selecciona l’element anterior de la cadena.\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Selecciona l’element següent de la cadena.\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"Envia el missatge per una cadena de redistribuïdors Mixmaster.\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"Fa una còpia desxifrada del missatge i esborra aquest.\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"Fa una còpia desxifrada del missatge.\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"Esborra de la memòria les frases clau.\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"Extreu totes les claus públiques possibles.\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"Mostra les opcions de S/MIME.\"\n"
  },
  {
    "path": "po/cs.po",
    "content": "# translation of mutt to Czech\n# Copyright (C) 2004 Free Software Foundation, Inc.\n# Dan Ohnesorg <dan@ohnesorg.cz>, 2004.\n# Petr Písař <petr.pisar@atlas.cz>, 2007, 2008, 2009, 2010, 2012, 2014, 2015.\n# Petr Písař <petr.pisar@atlas.cz>, 2016.\n#\n# mailbox → schránka\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt ec1ebdf1e088\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2016-03-19 21:53+01:00\\n\"\n\"Last-Translator: Petr Písař <petr.pisar@atlas.cz>\\n\"\n\"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\\n\"\n\"Language: cs\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Uživatelské jméno na %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Heslo pro %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Konec\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Smazat\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Obnovit\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Volba\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Nápověda\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Nejsou definovány žádné přezdívky!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Přezdívky\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Přezdívat jako: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Pro toto jméno je již přezdívka definována!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Pozor: :Takto pojmenovaný alias nemusí fungovat, mám to napravit?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adresa: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Chyba: „%s“ není platné IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Vlastní jméno: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Přijmout?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Uložit jako: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Chyba při čtení souboru s přezdívkami\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Přezdívka zavedena.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Chyba při pohybu v souboru s přezdívkami\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Shodu pro jmenný vzor nelze nalézt, pokračovat?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Položka mailcapu „compose“ vyžaduje %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Chyba při běhu programu \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Soubor nutný pro zpracování hlaviček se nepodařilo otevřít.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Soubor nutný pro odstranění hlaviček se nepodařilo otevřít.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Soubor se nepodařilo přejmenovat.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Pro %s neexistuje položka mailcapu „compose“, vytvářím prázdný soubor.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Položka mailcapu „edit“ vyžaduje %%s.\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Pro %s neexistuje položka mailcapu „edit“.\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Odpovídající položka v mailcapu nebyla nalezena. Zobrazuji jako text.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME typ není definován, nelze zobrazit přílohu.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Nelze vytvořit filtr\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Příkaz: %-20.20s Popis: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Příkaz: %-30.30s Příloha: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Příloha: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"--–Příloha: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Filtr nelze vytvořit\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Chyba při zápisu!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Nevím, jak mám toto vytisknout!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Změnit adresář\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Maska\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s není adresářem.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Schránky [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Přihlášená schránka [%s], Souborová maska: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Adresář [%s], Souborová maska: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Adresář nelze připojit!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Souborové masce nevyhovuje žádný soubor.\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Vytváření funguje pouze u IMAP schránek.\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Přejmenování funguje pouze u IMAP schránek.\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Mazání funguje pouze u IMAP schránek.\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Kořenovou složku nelze smazat\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Skutečně chcete smazat schránku \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Schránka byla smazána.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Schránka nebyla smazána.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Nastavit pracovní adresář na: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Chyba při načítání adresáře.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Souborová maska: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Obrácené řazení dle (d)ata, (p)ísmena, (v)elikosti či (n)eřadit?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Řadit dle (d)ata, (p)ísmena, (v)elikosti či (n)eřadit?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dpvn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nové jméno souboru: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Adresář nelze zobrazit\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Chyba při zobrazování souboru\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Nová pošta ve složce \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"Barvu %s terminál nepodporuje.\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"Barva %s není definována.\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"Objekt %s není definován\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: příkaz je platný pouze pro objekt typu seznam, tělo, hlavička\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"příliš málo argumentů pro %s\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Chybí argumenty.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: příliš málo argumentů\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: příliš málo argumentů\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"Atribut %s není definován.\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"příliš málo argumentů\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"příliš mnoho argumentů\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"implicitní barvy nejsou podporovány\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Ověřit PGP podpis?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Dočasný soubor nelze vytvořit!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Nelze vytvořit zobrazovací filtr\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Nelze kopírovat zprávu.\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME podpis byl úspěšně ověřen.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Vlastník S/MIME certifikátu není totožný s odesílatelem zprávy.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Pozor: Část této zprávy nebyla podepsána.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME podpis NELZE ověřit.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP podpis byl úspěšně ověřen.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP podpis NELZE ověřit.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Příkaz: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Pozor: zpráva neobsahuje hlavičku From:\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Zaslat kopii zprávy na: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Zaslat kopii označených zpráv na: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Chyba při zpracování adresy!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Chybné IDN: „%s“\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Zaslat kopii zprávy na %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Zaslat kopii zpráv na %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Kopie zprávy nebyla odeslána.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Kopie zpráv nebyly odeslány.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Kopie zprávy byla odeslána.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Kopie zpráv byly odeslány.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Filtrovací proces nelze vytvořit\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Poslat rourou do příkazu: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Není definován žádný příkaz pro tisk.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Vytisknout zprávu?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Vytisknout označené zprávy?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Zpráva byla vytisknuta\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Zprávy byly vytisknuty\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Zprávu nelze vytisknout\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Zprávy nelze vytisknout\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Řadit opačně (d)at/(o)d/pří(j)/(v)ěc/(p)ro/v(l)ákno/(n)eseř/veli(k)/(s)kóre/\"\n\"sp(a)m?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Řadit (d)at/(o)d/pří(j)/(v)ěc/(p)ro/v(l)ákno/(n)eseř/veli(k)/(s)kóre/\"\n\"sp(a)m?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dojvplnksa\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Příkaz pro shell: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Dekódovat - uložit %s do schránky\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Dekódovat - zkopírovat %s do schránky\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Dešifrovat - uložit %s do schránky\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Dešifrovat - zkopírovat %s do schránky\"\n\n# XXX: Missing space before %s is not a typo\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Uložit%s do schránky\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Zkopírovat %s do schránky\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" označené\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Kopíruji do %s…\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Převést při odesílání na %s?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Položka „Content-Type“ změněna na %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Znaková sada změněna na %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"nepřevádím\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"převádím\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Nejsou žádné přílohy.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Odeslat\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Zrušit\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Přiložit soubor\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Popis\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"Není podporováno\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Podepsat, zašifrovat\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Zašifrovat\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Podepsat\"\n\n# Security: None - Zabezpečení: Žádné\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"Žádné\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (inline PGP)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \" (příležitostné šifrování)\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" podepsat jako: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<implicitní>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Zašifrovat pomocí: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] již neexistuje!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"Změna v %s [#%d]. Změnit kódování?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Přílohy\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Pozor: „%s“ není platné IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Nemůžete smazat jedinou přílohu.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Neplatné IDN v \\\"%s\\\": „%s“\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Připojuji zvolené soubory…\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"%s nelze připojit!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Otevřít schránku, z níž se připojí zpráva\"\n\n#: compose.c:762\n#, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Schránku %s nelze otevřít.\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"V této složce nejsou žádné zprávy.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Označte zprávy, které chcete připojit!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Nelze připojit!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Překódování se týká pouze textových příloh.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Aktuální příloha nebude převedena.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Aktuální příloha bude převedena.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Nesprávné kódování.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Uložit kopii této zprávy?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Přejmenovat na: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Chyba při volání funkce stat pro %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Nový soubor: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Položka „Content-Type“ je tvaru třída/podtřída\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Hodnota %s položky „Content-Type“ je neznámá.\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Soubor %s nelze vytvořit.\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Vytvoření přílohy se nezdařilo.\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Odložit tuto zprávu?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Uložit zprávu do schránky\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Ukládám zprávu do %s…\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Zpráva uložena.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"Je aktivní S/MIME, zrušit jej a pokračovat?\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"Je aktivní PGP, zrušit jej a pokračovat?\"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"chyba při vytváření kontextu pro gpgme: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"chybě při zapínání CMS protokolu: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"chybě při vytváření gpgme datového objektu: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"chybě při alokování datového objektu: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"chyba při přetáčení datového objektu: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"chyba při čtení datového objektu: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Dočasný soubor nelze vytvořit.\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"chyba při přidávání příjemce „%s“: %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"tajný klíč „%s“ nenalezen: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"tajný klíč „%s“ neurčen jednoznačně\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"chyba při nastavování tajného klíče „%s“: %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"chyba při nastavování PKA podpisové poznámky: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"chyba při dešifrování dat: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"chyba při podepisování dat: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\"$pgp_sign_as není nastaveno a v ~/.gnupg/gpg.conf není určen výchozí klíč\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Pozor: Jeden z klíčů byl zneplatněn\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Pozor: Klíči použitému k podepsání vypršela platnost: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Pozor: Platnost alespoň jednoho certifikátu vypršela\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Pozor: Podpis pozbyl platnosti: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Nelze ověřit, protože chybí klíč nebo certifikát\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL není dostupný\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"Dostupný CRL je příliš starý\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Požadavky bezpečnostní politiky nebyly splněny\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Došlo k systémové chybě\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"POZOR: Položka PKA se neshoduje s adresou podepsaného: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"Adresa podepsaného ověřená pomocí PKA je: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Otisk klíče: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"POZOR: Nemáme ŽÁDNÝ důkaz, že klíč patří výše jmenované osobě\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"POZOR: Klíč NEPATŘÍ výše jmenované osobě\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"POZOR: NENÍ jisté, zda klíč patří výše jmenované osobě\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"alias: \"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"ID klíče \"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"vytvořen: \"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Chyba při získávání podrobností o klíči s ID %s: %s\\n\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"Dobrý podpis od:\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"*ŠPATNÝ* podpis od:\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Problematický podpis od:\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"                vyprší: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Začátek podrobností o podpisu --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Chyba: ověření selhalo: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Začátek zápisu (podepsáno: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Konec zápisu ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Konec podrobností o podpisu --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Chyba: dešifrování selhalo: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Chyba při získávání podrobností o klíči!\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Chyba: dešifrování/ověřování selhalo: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Chyba: selhalo kopírování dat\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ZAČÁTEK PGP ZPRÁVY --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[--ZAČÁTEK VEŘEJNÉHO KLÍČE PGP --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ZAČÁTEK PODEPSANÉ PGP ZPRÁVY --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- KONEC PGP ZPRÁVY --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- KONEC VEŘEJNÉHO KLÍČE PGP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- KONEC PODEPSANÉ PGP ZPRÁVY --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Chyba: nelze najít začátek PGP zprávy! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Chyba: dočasný soubor nelze vytvořit! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Následující data jsou podepsána a zašifrována ve formátu PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Následující data jsou zašifrována ve formátu PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Konec dat podepsaných a zašifrovaných ve formátu PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Konec dat zašifrovaných ve formátu PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP zpráva byla úspěšně dešifrována.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"PGP zprávu nelze dešifrovat\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Následují data podepsaná pomocí S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Následující data jsou zašifrována pomocí S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Konec dat podepsaných pomocí S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Konec dat zašifrovaných ve formátu S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Nelze zobrazit ID tohoto uživatele (neznámé kódování)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Nelze zobrazit ID tohoto uživatele (neplatné kódování)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Nelze zobrazit ID tohoto uživatele (neplatné DN)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" aka ......: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Jméno .....: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Neplatný]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Platný od .: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Platný do .: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Druh klíče : %s, %lu bit %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Účel klíče : \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"šifrovaní\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"podepisování\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"ověřování\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Sériové č. : 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Vydal .....: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Podklíč ...: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Odvolaný]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Platnost vypršela]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Zakázán]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Sbírám údaje…\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Chyba při vyhledávání klíče vydavatele: %s\\n\"\n\n#: crypt-gpgme.c:3675\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Chyba: řetězec certifikátů je příliš dlouhý – zde se končí\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"ID klíče: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new selhala: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start selhala: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next selhala: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Všem vyhovujícím klíčům vypršela platnost nebo byly zneplatněny.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Ukončit  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Zvolit \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Kontrolovat klíč  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP a S/MIME klíče vyhovující\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"PGP klíče vyhovující\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME klíče vyhovující\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"klíče vyhovující\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Klíč nelze použít: vypršela jeho platnost, nebo byl zakázán či stažen.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"Tomuto ID vypršela platnost, nebo bylo zakázáno či staženo.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"ID nemá definovanou důvěryhodnost\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"Toto ID není důvěryhodné.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Důvěryhodnost tohoto ID je pouze částečná.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Opravdu chcete tento klíč použít?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Hledám klíče vyhovující \\\"%s\\\"…\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Použít ID klíče = \\\"%s\\\" pro %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Zadejte ID klíče pro %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Zadejte ID klíče: \"\n\n#: crypt-gpgme.c:4614\n#, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Chyba při exportu klíče: %s\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Klíč PGP 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"GPGME: Protokol OpenGPG není dostupný\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"GPGME: Protokol CMS není dostupný\"\n\n#: crypt-gpgme.c:4721\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (p)odepsat, podepsat (j)ako, p(g)p, (n)ic či vypnout pří(l)ež. šifr.? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"pjgfnl\"\n\n#: crypt-gpgme.c:4731\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (p)odepsat, podepsat (j)ako, s/(m)ime, (n)ic či vypnout pří(l)ež. šifr.? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"pjmfnl\"\n\n#: crypt-gpgme.c:4744\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME šif(r)ovat, (p)odepsat, pod.(j)ako, (o)bojí, p(g)p, (n)ic, pří(l).\"\n\"šifr.? \"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: crypt-gpgme.c:4745\nmsgid \"esabpfco\"\nmsgstr \"rpjogfnl\"\n\n#: crypt-gpgme.c:4750\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP šif(r)ovat, (p)odepsat, pod.(j)ako, (o)bojí, s/(m)ime, (n)ic, pří(l).\"\n\"šifr.? \"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: crypt-gpgme.c:4751\nmsgid \"esabmfco\"\nmsgstr \"rpjomfnl\"\n\n#: crypt-gpgme.c:4762\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME šif(r)ovat, (p)odepsat, podepsat (j)ako, (o)bojí, p(g)p či (n)ic? \"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"rpjogfn\"\n\n#: crypt-gpgme.c:4768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP šif(r)ovat, (p)odepsat, podepsat (j)ako, (o)bojí, s/(m)ime, či (n)ic? \"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"rpjomfn\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Podepsat jako: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Odesílatele nelze ověřit\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Nelze určit odesílatele\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (aktuální čas: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- následuje výstup %s %s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Šifrovací heslo(a) zapomenuto(a).\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"PGP v textu nelze použít s přílohami. Použít PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"E-mail neodeslán: PGP v textu nelze použít s přílohami.\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Spouští se PGP…\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Zprávu nelze poslat vloženou do textu. Použít PGP/MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Zpráva nebyla odeslána.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"S/MIME zprávy bez popisu obsahu nejsou podporovány.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Zkouším extrahovat PGP klíče…\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Zkouším extrahovat S/MIME certifikáty…\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Chyba: 'multipart/signed' protokol %s není znám! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Chyba: Chybná struktura zprávy typu multipart/signed! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Varování: Podpisy typu %s/%s nelze ověřit. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Následují podepsaná data --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Varování: Nemohu nalézt žádný podpis. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Konec podepsaných dat --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"„crypt_use_gpgme“ nastaveno, ale nepřeloženo s podporou GPGME.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Spouštím S/MIME…\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"ano\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"ne\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Ukončit Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"neznámá chyba\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Stiskněte libovolnou klávesu…\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' pro seznam): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Žádná schránka není otevřena.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Nejsou žádné zprávy.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Ze schránky je možné pouze číst.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"V režimu přikládání zpráv není tato funkce povolena.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Žádné viditelné zprávy.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"%s: Operace je v rozporu s ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Schránka je určena pouze pro čtení, zápis nelze zapnout!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Změny obsahu složky budou uloženy po jejím uzavření.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Změny obsahu složky nebudou uloženy.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Konec\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Uložit\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Psát\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Odepsat\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Skupině\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Obsah schránky byl změněn zvenčí. Atributy mohou být nesprávné.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"V této schránce je nová pošta.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Obsah schránky byl změněn zvenčí.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Žádné zprávy nejsou označeny.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Není co dělat\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Přejít na zprávu: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Argumentem musí být číslo zprávy.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Tato zpráva není viditelná.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Číslo zprávy není správné.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Zprávu(-y) nelze smazat\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Smazat zprávy shodující se s: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Žádné omezení není zavedeno.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Omezení: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Omezit na zprávy shodující se s: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Pro zobrazení všech zpráv změňte omezení na „all“.\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Ukončit Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Označit zprávy shodující se s: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Zprávu(-y) nelze obnovit\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Obnovit zprávy shodující se s: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Odznačit zprávy shodující se s: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Odhlášeno z IMAP serverů.\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Otevřít schránku pouze pro čtení\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Otevřít schránku\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"V žádné schránce není nová pošta\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s není schránkou.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Ukončit Mutt bez uložení změn?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Vlákna nejsou podporována.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Vlákno rozbito\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"Vlákno nelze rozdělit, zpráva není součástí vlákna\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"Vlákna nelze spojit\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Pro spojení vláken chybí hlavička Message-ID:\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Aby sem mohla být zpráva připojena, nejprve musíte nějakou označit\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Vlákna spojena\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Žádné vlákno nespojeno\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Jste na poslední zprávě.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Nejsou žádné obnovené zprávy.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Jste na první zprávě.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Hledání pokračuje od začátku.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Hledání pokračuje od konce.\"\n\n#: curs_main.c:1608\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Žádné nové zprávy v tomto omezeném zobrazení.\"\n\n#: curs_main.c:1610\nmsgid \"No new messages.\"\nmsgstr \"Žádné nové zprávy.\"\n\n#: curs_main.c:1615\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Žádné nepřečtené zprávy v tomto omezeném zobrazení.\"\n\n#: curs_main.c:1617\nmsgid \"No unread messages.\"\nmsgstr \"Žádné nepřečtené zprávy.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\nmsgid \"Cannot flag message\"\nmsgstr \"Zprávě nelze nastavit příznak\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"Nelze přepnout mezi nová/stará\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Nejsou další vlákna.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Jste na prvním vláknu.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Vlákno obsahuje nepřečtené zprávy.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\nmsgid \"Cannot delete message\"\nmsgstr \"Zprávu nelze smazat\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\nmsgid \"Cannot edit message\"\nmsgstr \"Zprávu nelze upravit\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"Zprávu(-y) nelze označit za přečtenou(-é)\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\nmsgid \"Cannot undelete message\"\nmsgstr \"Zprávu nelze obnovit\"\n\n#: edit.c:41\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tvloží řádku začínající znakem ~\\n\"\n\"~b uživatelé\\tpřidá uživatele do položky Bcc:\\n\"\n\"~c uživatelé\\tpřidá uživatele do položky Cc:\\n\"\n\"~f zprávy\\tvloží zprávy\\n\"\n\"~F zprávy\\tstejné jako ~f a navíc vloží i hlavičky zpráv\\n\"\n\"~h\\t\\teditace hlavičky zprávy\\n\"\n\"~m zprávy\\tvloží zprávy a uzavře je do uvozovek\\n\"\n\"~M zprávy\\tstejné jako ~m a navíc vloží i hlavičky zpráv\\n\"\n\"~p\\t\\tvytiskne zprávu\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tuloží soubor a ukončí editor\\n\"\n\"~r soubor\\t\\tnačte soubor do editoru\\n\"\n\"~t uživatelé\\tpřidá uživatele do položky To:\\n\"\n\"~u\\t\\teditace předchozí řádky\\n\"\n\"~v\\t\\teditace zprávy $visual editorem\\n\"\n\"~w soubor\\t\\tzapíše zprávu do souboru\\n\"\n\"~x\\t\\tukončí editaci bez uložení jakýchkoli změn\\n\"\n\"~?\\t\\tvypíše tuto nápovědu\\n\"\n\".\\t\\tpokud je tento znak na řádce samotný, znamená ukončení vstupu\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"Číslo zprávy (%d) není správné.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Zprávu ukončíte zapsáním samotného znaku '.' na novou řádku)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Žádná schránka.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Zpráva obsahuje:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(pokračovat)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"Chybí jméno souboru.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Zpráva neobsahuje žádné řádky.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Neplatné IDN v %s: „%s“\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"Příkaz %s je neznámý (~? pro nápovědu)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"Dočasnou složku nelze vytvořit: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"Dočasnou poštovní složku nelze vytvořit: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"nemohu zkrátit dočasnou poštovní složku: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Soubor se zprávou je prázdný!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Zpráva nebyla změněna!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Soubor se zprávou nelze otevřít: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Ke složce nelze připojit: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Chyba. Zachovávám dočasný soubor %s.\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Nastavit příznak\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Vypnout příznak\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Chyba: Žádnou z částí „Multipart/Alternative“ nelze zobrazit! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Příloha #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Typ: %s/%s, Kódování: %s, Velikost: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Jedna nebo více část této zprávy nemohly být zobrazeny.\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Zobrazuji automaticky pomocí %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Vyvolávám příkaz %s pro automatické zobrazování\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- %s nelze spustit --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Automaticky zobrazuji standardní chybový výstup %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Chyba: typ „message/external-body“ nemá parametr „access-type“ --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Tato příloha typu „%s/%s“ \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(o velikosti v bajtech: %s) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"byla smazána --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- jméno: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Tato příloha typu '%s/%s' není přítomna, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"[-- a udaný externí zdroj již není platný --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"\"\n\"[-- a udaná hodnota parametru 'access-type %s' --]\\n\"\n\"[-- není podporována --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Dočasný soubor nelze otevřít!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Chyba: typ 'multipart/signed' bez informace o protokolu\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Toto je příloha \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- typ '%s/%s' není podporován \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(pro zobrazení této části použijte „%s“)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(je třeba svázat funkci „view-attachments“ s nějakou klávesou!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"soubor %s nelze připojit\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"CHYBA: ohlaste, prosím, tuto chybu\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<NEZNÁMÝ>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Obecně platné:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Nesvázané funkce:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Nápověda pro %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Špatný formát souboru s historií (řádek %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"zkratka „^“ pro aktuální schránku není nastavena\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"zkratka pro schránku expandována na prázdný regulární výraz\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: unhook * nelze provést z jiného háčku.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: neznámý typ háčku: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: %s nelze z %s smazat.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Nejsou k dispozici žádné autentizační metody\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Ověřuji (anonymně)…\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonymní ověření se nezdařilo.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Ověřuji (CRAM-MD5)…\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 ověření se nezdařilo.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Ověřuji (GSSAPI)…\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI ověření se nezdařilo.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN autentizace je na tomto serveru zakázána\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Probíhá přihlašování…\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Přihlášení se nezdařilo.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Přihlašuji (%s)…\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL ověření se nezdařilo.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s není platná IMAP cesta\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Stahuji seznam schránek…\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Složka nenalezena\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Vytvořit schránku: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Schránka musí mít jméno.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Schránka vytvořena.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Přejmenovat schránku %s na: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Přejmenování selhalo: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Schránka přejmenována.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Schránka uzavřena.\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"Příkaz CREATE selhal: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Končím spojení s %s…\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Tento IMAP server je zastaralý. Mutt s ním nebude fungovat.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Bezpečné spojení přes TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Nelze navázat TLS spojení\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Šifrované spojení není k dispozici\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Volím %s…\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Chyba při otevírání schránky\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Vytvořit %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Příkaz EXPUNGE se nezdařil.\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Mažu zprávy (počet: %d)…\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Ukládám změněné zprávy… [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Došlo k chybě při ukládání příznaků. Přesto uzavřít?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Chyba při ukládání příznaků\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Odstraňuji zprávy ze serveru…\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"při volání imap_sync_mailbox: EXPUNGE selhalo\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Hledám v hlavičkách bez udání položky: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Chybný název schránky\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Přihlašuji %s…\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Odhlašuji %s…\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"%s přihlášeno\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"%s odhlášeno\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Z IMAP serveru této verze hlavičky nelze stahovat.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Dočasný soubor %s nelze vytvořit\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Vyhodnocuji cache…\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Stahuji hlavičky zpráv…\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Stahuji zprávu…\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"Index zpráv je chybný. Zkuste schránku znovu otevřít.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Nahrávám zprávu na server…\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Kopíruji zprávy (%d) do %s…\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Kopíruji zprávu %d do %s…\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Pokračovat?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"V tomto menu není tato funkce dostupná.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Chybný regulární výraz: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Na šablonu spamu není dost podvýrazů\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: vzoru nic nevyhovuje\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: vzoru nic nevyhovuje\"\n\n# \"%sgroup\" is literal\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%sgroup: chybí -rx nebo -addr.\"\n\n# \"%sgroup\" is literal\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%sgroup: pozor: chybné IDN „%s“.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"přílohy: chybí dispozice\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"přílohy: chybná dispozice\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"nepřílohy: chybí dispozice\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"nepřílohy: chybná dispozice\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"přezdívka: žádná adresa\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Pozor: Neplatné IDN „%s“ v přezdívce „%s“.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"neplatná hlavička\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"metoda %s pro řazení není známa\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): chybný regulární výraz %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"Proměnná %s není známa.\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"Prefix není s „reset“ povolen.\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"Hodnota není s „reset“ povolena.\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Použití: set proměnná=yes|no (ano|ne)\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s je nastaveno\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s není nastaveno\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Nesprávná hodnota přepínače %s: „%s“\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s je nesprávný typ schránky.\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: nesprávná hodnota (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"chyba formátu\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"přetečení čísla\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"Hodnota %s je nesprávná.\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"neznámý typ %s\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"neznámý typ %s\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Chyba v %s na řádku %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: chyby v %s\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: čtení přerušeno kvůli velikému množství chyb v %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: chyba na %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: příliš mnoho argumentů\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"Příkaz %s není znám.\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Chyba %s na příkazovém řádku\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"domovský adresář nelze určit\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"uživatelské jméno nelze určit\"\n\n#: init.c:2970\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"název stroje nelze určit pomocí volání uname()\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: chybí jméno skupiny\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"příliš málo argumentů\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"Makra jsou nyní vypnuta.\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Detekována smyčka v makru.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Klávesa není svázána s žádnou funkcí.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Klávesa není svázána. Stiskněte „%s“ pro nápovědu.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: příliš mnoho argumentů\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"menu %s neexistuje\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"prázdný sled kláves\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: příliš mnoho argumentů\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"funkce %s není v mapě\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: sled kláves je prázdný\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: příliš mnoho argumentů\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: žádné argumenty\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"funkce %s není známa\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Zadejte klávesy (nebo stiskněte ^G pro zrušení): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Znak = %s, Osmičkově = %o, Desítkově = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Přetečení celočíselné proměnné – nelze alokovat paměť!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Paměť vyčerpána!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Vývojáře programu můžete kontaktovat na adrese <mutt-dev@mutt.org> \"\n\"(anglicky).\\n\"\n\"Chcete-li oznámit chybu v programu, navštivte http://bugs.mutt.org/.\\n\"\n\"Připomínky k překladu (česky) zasílejte na adresu\\n\"\n\"<translation-team-cs@lists.sourceforge.net>.\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright © 1996–2016 Michael R. Elkins a další.\\n\"\n\"Mutt je rozšiřován BEZ JAKÉKOLI ZÁRUKY; podrobnosti získáte příkazem\\n\"\n\"„mutt -vv“.\\n\"\n\"Mutt je volné programové vybavení. Rozšiřování tohoto programu je vítáno,\\n\"\n\"musíte ovšem dodržet určitá pravidla; další informace získáte příkazem\\n\"\n\"„mutt -vv“.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright © 1996–2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright © 1996–2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright © 1997–2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright © 1998–2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright © 1999–2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright © 1999–2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright © 2000–2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright © 2006–2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright © 2014–2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Mnoho dalších zde nezmíněných přispělo kódem, opravami a nápady.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    Tento program je volné programové vybavení; můžete jej šířit a/nebo\\n\"\n\"    měnit, pokud dodržíte podmínky GNU General Public License (GPL) vydané\\n\"\n\"    Free Software Foundation a to buď ve verzi 2 nebo (dle vaší volby)\\n\"\n\"    libovolné novější.\\n\"\n\"\\n\"\n\"    Program je šířen v naději, že bude užitečný, ale BEZ JAKÉKOLIV\\n\"\n\"    ZÁRUKY a to ani záruky OBCHODOVATELNOSTI nebo VHODNOSTI PRO\\n\"\n\"    JAKÝKOLIV ÚČEL. Více informací najdete v GNU GPL.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    S tímto programem byste měli obdržet kopii GNU GPL. Pokud se tak\\n\"\n\"    nestalo, obraťte se na Free Software Foundation, Inc.,\\n\"\n\"    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"Použití: mutt [<přepínače>] [-z] [-f <soubor> | -yZ]\\n\"\n\"         mutt [<přepínače>] [-Ex] [-Hi <soubor>] [-s <věc>] [-bc <adr>]\\n\"\n\"              [-a <soubor> […] --] <adr> […]\\n\"\n\"         mutt [<přepínače>] [-x] [-s <věc>] [-bc <adr>] [-a <soubor> […] \"\n\"--]\\n\"\n\"              <adr> […] < zpráva\\n\"\n\"         mutt [<přepínače>] -p\\n\"\n\"         mutt [<přepínače>] -A <alias> […]\\n\"\n\"         mutt [<přepínače>] -Q <dotaz> […]\\n\"\n\"         mutt [<přepínače>] -D\\n\"\n\"         mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"Přepínače:\\n\"\n\"  -A <alias>\\texpanduje zadaný alias\\n\"\n\"  -a <soubor> […] --\\tpřipojí ke zprávě soubor(y)\\n\"\n\"\\t\\tseznam souborů musí být ukončen řetězcem „--“\\n\"\n\"  -b <adresa>\\turčuje adresu pro utajenou kopii (BCC)\\n\"\n\"  -c <adresa>\\turčuje adresu pro kopii (CC)\\n\"\n\"  -D\\t\\tna standardní výstup vypíše hodnoty všech proměnných\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <úroveň>\\tladící informace zapisuje do ~/.muttdebug0\"\n\n#: main.c:137\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -E\\t\\tupraví koncept (-H) nebo vloží (-i) soubor\\n\"\n\"  -e <příkaz>\\tpříkaz bude vykonán po inicializaci\\n\"\n\"  -f <soubor>\\tčte z této schránky\\n\"\n\"  -F <soubor>\\talternativní soubor muttrc\\n\"\n\"  -H <soubor>\\tze souboru s konceptem budou načteny hlavičky a tělo\\n\"\n\"  -i <soubor>\\ttento soubor Mutt vloží do těla odpovědi\\n\"\n\"  -m <typ>\\turčí výchozí typ schránky\\n\"\n\"  -n\\t\\tMutt nebude číst systémový soubor Muttrc\\n\"\n\"  -p\\t\\tvrátí se k odložené zprávě\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <proměnná>\\tdotáže se na konfigurační proměnnou\\n\"\n\"  -R\\t\\totevře schránku pouze pro čtení\\n\"\n\"  -s <věc>\\tspecifikuje věc (pokud obsahuje mezery,\\n\"\n\"              \\ttak musí být v uvozovkách)\\n\"\n\"  -v\\t\\tzobrazí označení verze a parametry zadané při překladu\\n\"\n\"  -x\\t\\tnapodobí odesílací režim programu mailx\\n\"\n\"  -y\\t\\tzvolí schránku uvedenou v seznamu „mailboxes“\\n\"\n\"  -z\\t\\tpokud ve schránce není pošta, pak okamžitě skončí\\n\"\n\"  -Z\\t\\totevře první složku s novou poštou; pokud není žádná nová pošta,\\n\"\n\"    \\t\\ttak okamžitě skončí\\n\"\n\"  -h\\t\\tvypíše tuto nápovědu\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Přeloženo s volbami:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Chyba při inicializaci terminálu.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Chyba: pro -d není „%s“ platná hodnota.\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Úroveň ladění je %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"při překladu programu nebylo 'DEBUG' definováno. Ignoruji.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s neexistuje. Mám ho vytvořit?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"%s nelze vytvořit: %s\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Rozebrání odkazu mailto: se nezdařilo\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Nejsou specifikováni žádní příjemci.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"Přepínač -E nelze se standardním vstupem použít\\n\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"Soubor %s nelze připojit.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"V žádné schránce není nová pošta.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Není definována žádná schránka přijímající novou poštu.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Schránka je prázdná.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Čtu %s…\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Schránka je poškozena!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Schránka byla poškozena!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Kritická chyba! Schránku nelze znovu otevřít!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Schránku nelze zamknout!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: mbox byl změněn, ale nebyly změněny žádné zprávy! (ohlaste tuto chybu)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Ukládám %s…\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Provádím změny…\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Uložení se nezdařilo! Část schránky byla uložena do %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Schránku nelze znovu otevřít!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Otevírám schránku znovu…\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Přeskočit na: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Nesprávné indexové číslo.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Žádné položky.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Dolů již rolovat nemůžete.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Nahoru již rolovat nemůžete.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Jste na první stránce.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Jste na poslední stránce.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Jste na poslední položce.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Jste na první položce.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Vyhledat: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Vyhledat obráceným směrem: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Nenalezeno.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Žádné položky nejsou označeny.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"V tomto menu není hledání přístupné.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"V dialozích není přeskakování implementováno.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Označování není podporováno.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Prohledávám %s…\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"Zprávu nebylo možné bezpečně uložit (flush) na disk\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"\"\n\"při volání maildir_commit_message(): nemohu nastavit datum a čas u souboru\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Neznámý SASL profil\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Chyba při alokování SASL spojení\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Chyba při nastavování bezpečnostních vlastností SASL\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Chyba při nastavování úrovně zabezpečení vnějšího SASL mechanismu\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Chyba při nastavování jména uživatele vnějšího SASL mechanismu\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Spojení s %s uzavřeno\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL není dostupné\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"příkaz před spojením selhal\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Chyba při komunikaci s %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Chybné IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Vyhledávám %s…\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Počítač \\\"%s\\\" nelze nalézt.\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Připojuji se k %s…\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Spojení s %s nelze navázat (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Nemohu získat dostatek náhodných dat\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Připravuji zdroj náhodných dat: %s…\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s má příliš volná přístupová práva!\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL vypnuto kvůli nedostatku entropie\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"I/O chyba\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"Chyba SSL: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Certifikát od serveru nelze získat\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"%s spojení pomocí %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Neznámý\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[nelze spočítat]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[chybné datum]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Certifikát serveru není zatím platný\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Platnost certifikátu serveru vypršela.\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"nelze zjistit, na čí jméno byl certifikát vydán\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"nelze získat obecné jméno (CN) certifikátu\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"vlastník certifikátu není totožný s názvem stroje %s\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Kontrola certifikátu stroje selhala: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Tento certifikát patří:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Tento certifikát vydal:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Tento certifikát platí:\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   od %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"   do %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Otisk klíče: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"Kontrola SSL certifikátu (certifikát %d z %d v řetězu)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(o)dmítnout, akceptovat pouze (t)eď, akceptovat (v)ždy \"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"otv\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(o)dmítnout, akceptovat pouze (t)eď \"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ot\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Varování: Certifikát nelze uložit\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Certifikát uložen\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Chyba: TLS socket není otevřen\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Všechny dostupné protokoly pro TLS/SSL byly zakázány\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\"Explicitní výběr šifrovacích algoritmů pomoc $ssl_ciphers není podporován\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL/TLS spojení pomocí %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Chyba při inicializaci certifikačních údajů GNU TLS\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Chyba při zpracování certifikačních údajů\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"Pozor: Certifikát serveru byl podepsán pomocí nebezpečného algoritmu\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Otisk SHA1 klíče: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Otisk MD5 klíče: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"POZOR: Certifikát serveru není zatím platný\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"POZOR: Platnost certifikátu serveru vypršela.\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"POZOR: Certifikátu serveru byl odvolán\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"POZOR: Jméno serveru se neshoduje s jménem v certifikátu\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"POZOR: Certifikát serveru nebyl podepsán certifikační autoritou\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Chyba při ověřování certifikátu (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Certifikát není typu X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Připojuji se s „%s“…\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Tunel do %s vrátil chybu %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Chyba při komunikaci tunelem s %s (%s)\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Soubor je adresářem. Uložit do něj? [(a)no, (n)e, (v)šechny]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"anv\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Soubor je adresářem. Uložit do něj?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Zadejte jméno souboru: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Soubor již existuje: (p)řepsat, př(i)pojit či (z)rušit?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"piz\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Do POP schránek nelze ukládat zprávy.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Připojit zprávy do %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s není schránkou!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Zámek stále existuje, odemknout %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"%s nelze zamknout.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Vypršel čas pro pokus o zamknutí pomocí funkce fcntl!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Čekám na zamknutí pomocí funkce fcntl… %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Čas pro zamknutí pomocí funkce flock vypršel!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Čekám na pokus o zamknutí pomocí funkce flock… %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"%s nelze zamknout.\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Schránku %s nelze synchronizovat!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Přesunout přečtené zprávy do %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Zahodit smazané zprávy (%d)?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Zahodit smazané zprávy (%d)?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Přesunuji přečtené zprávy do %s…\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Obsah schránky nebyl změněn.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"ponecháno: %d, přesunuto: %d, smazáno: %d\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"ponecháno: %d, smazáno: %d\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Stiskněte „%s“ pro zapnutí zápisu\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Použijte 'toggle-write' pro zapnutí zápisu!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Schránka má vypnut zápis. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Do schránky byla vložena kontrolní značka.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Zprávu nelze uložit\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Přetečení celočíselné proměnné – nelze alokovat paměť.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"Přstr\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"Dlstr\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Přílohy\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Další\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Konec zprávy je zobrazen.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Začátek zprávy je zobrazen.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Nápověda je právě zobrazena.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Žádný další citovaný text.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Za citovaným textem již nenásleduje žádný běžný text.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"Zpráva o více částech nemá určeny hranice!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Výraz %s je chybný.\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Prázdný výraz\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Nesprávné datum dne (%s).\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Měsíc %s není správný.\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Chybné relativní datum: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"chyba ve vzoru na: %s\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"chybí vzor: %s\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"neshodují se závorky: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: nesprávný modifikátor vzoru\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"V tomto režimu není %c podporováno.\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"chybí parametr\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"neshodují se závorky: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"prázdný vzor\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"chyba: neznámý operand %d (ohlaste tuto chybu).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Překládám vzor k vyhledání…\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Spouštím příkaz pro shodující se zprávy… \"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Žádná ze zpráv nesplňuje daná kritéria.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Hledám…\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Při vyhledávání bylo dosaženo konce bez nalezení shody.\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Při vyhledávání bylo dosaženo začátku bez nalezení shody.\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Hledání bylo přerušeno.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Zadejte PGP heslo:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP heslo zapomenuto\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Chyba: nelze spustit PGP proces! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Konec výstupu PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"Vnitřní chyba. Prosím, zašlete hlášení o chybě.\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Chyba: nelze spustit PGP! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Dešifrování se nezdařilo\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"PGP proces nelze spustit!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"PGP nelze spustit.\"\n\n# XXX: %s is \"PGP/M(i)ME\" or \"(i)nline\"\n#: pgp.c:1730\n#, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (p)odepsat, pod.(j)ako, formát %s, (n)ic, vypnout pří(l).šifr.? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)nline\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"pjfnli\"\n\n#: pgp.c:1742\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (p)odepsat, podepsat (j)ako, (n)ic, vypnout pří(l). šifr.? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"pjfnl\"\n\n# XXX: %s is \"PGP/M(i)ME\" or \"(i)nline\"\n#: pgp.c:1760\n#, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP šif(r)ovat, (p)odep., pod.(j)ako, (o)bojí, %s, (n)ic, pří(l).šif.? \"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: pgp.c:1763\nmsgid \"esabfcoi\"\nmsgstr \"rpjofnli\"\n\n#: pgp.c:1768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"PGP šif(r)ovat, (p)odepsat, podepsat (j)ako, (o)bojí, (n)ic, pří(l). šifr.? \"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: pgp.c:1769\nmsgid \"esabfco\"\nmsgstr \"rpjofnl\"\n\n# XXX: %s is \"PGP/M(i)ME\" or \"(i)nline\"\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP šif(r)ovat, (p)odepsat, podp (j)ako, (o)bojí, formát %s, či (n)ic?\"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"rpjofni\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP šif(r)ovat, (p)odepsat, podepsat (j)ako, (o)bojí, či (n)ic?\"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"rpjofn\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Získávám PGP klíč…\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\"Všem vyhovujícím klíčům vypršela platnost, byly zneplatněny nebo zakázány.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"klíče PGP vyhovující <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"klíče PGP vyhovující \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Nelze otevřít /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Klíč PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Server nepodporuje příkaz TOP.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Nelze zapsat hlavičku do dočasného souboru!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Server nepodporuje příkaz UIDL.\"\n\n# TODO: plurals\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d zpráv bylo ztraceno. Zkuste schránku znovu otevřít.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s není platná POP cesta\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Stahuji seznam zpráv…\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Nelze zapsat zprávu do dočasného souboru!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Označuji zprávy ke smazání…\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Hledám nové zprávy…\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP server není definován.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Ve schránce na POP serveru nejsou nové zprávy.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Odstranit zprávy ze serveru?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Načítám nové zprávy (počet bajtů: %d)…\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Chyba při zápisu do schránky!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [počet přečtených zpráv: %d/%d]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Server uzavřel spojení!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Ověřuji (SASL)…\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"Časové razítko POP protokolu není platné!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Ověřuji (APOP)…\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP ověření se nezdařilo.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Server nepodporuje příkaz USER.\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Neplatné POP URL: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Nelze ponechat zprávy na serveru.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Chyba při připojováno k serveru: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Končím spojení s POP serverem…\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Ukládám indexy zpráv…\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Spojení ztraceno. Navázat znovu spojení s POP serverem.\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"žádné odložené zprávy\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Žádné zprávy nejsou odloženy.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Nekorektní šifrovací hlavička\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Nekorektní S/MIME hlavička\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Dešifruji zprávu…\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Dešifrování se nezdařilo.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nový dotaz\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Vytvořit přezdívku\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Hledat\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Čekám na odpověď…\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Příkaz pro dotazy není definován.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Dotaz\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Dotázat se na: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Dotaz na „%s“\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Poslat rourou\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Tisk\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Ukládám…\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Příloha uložena.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"VAROVÁNÍ! Takto přepíšete %s. Pokračovat?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Příloha byla filtrována.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtrovat přes: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Poslat rourou do: \"\n\n#: recvattach.c:710\n#, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Neví se, jak vytisknout přílohy typu %s!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Vytisknout označené přílohy?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Vytisknout přílohu?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Nemohu dešifrovat zašifrovanou zprávu!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Přílohy\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Nejsou žádné podčásti pro zobrazení!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Z POP serveru nelze mazat přílohy.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Mazání příloh ze zašifrovaných zpráv není podporováno.\"\n\n#: recvattach.c:1132\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Mazání příloh z podepsaných zpráv může zneplatnit podpis.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Podporováno je pouze mazání příloh o více částech.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Přeposílat v nezměněné podobě lze pouze části typu „message/rfc822“.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Chyba při přeposílání zprávy!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Chyba při přeposílání zpráv!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Dočasný soubor %s nelze otevřít.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Přeposlat jako přílohy?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"Všechny označené přílohy nelze dekódovat. Přeposlat je v MIME formátu?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Přeposlat zprávu zapouzdřenou do MIME formátu?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Soubor %s nelze vytvořit.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Žádná zpráva není označena.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Žádné poštovní konference nebyly nalezeny!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Všechny označené přílohy nelze dekódovat. Zapouzdřit je do MIME formátu?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Připojit\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Vložit\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Smazat\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"'type2.list' pro mixmaster nelze získat.\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Vyberte řetěz remailerů\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Chyba: %s nelze použít jako poslední článek řetězu remailerů.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Maximální počet článků řetězu remailerů typu mixmaster je %d.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Řetěz remailerů je již prázdný.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"První článek řetězu jste již vybral.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Poslední článek řetězu jste již vybral.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster nepovoluje Cc a Bcc hlavičky.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Pokud používáte mixmaster, je třeba správně nastavit proměnnou „hostname“.\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Chyba při zasílání zprávy, potomek ukončen %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Chyba při zasílání zprávy.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Nesprávně formátovaná položka pro typ %s v „%s“ na řádku %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Cesta k mailcapu není zadána.\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"pro typ %s nebyla nalezena položka v mailcapu\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"skóre: příliš málo argumentů\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"skóre: příliš mnoho argumentů\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"Chyba: skóre: nesprávné číslo\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Věc není specifikována, zrušit?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Věc není specifikována, zrušeno.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Odepsat %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Odepsat %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Žádná označená zpráva není viditelná!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Vložit zprávu do odpovědi?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Vkládám zakomentovanou zprávu…\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Všechny požadované zprávy nelze vložit!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Přeposlat jako přílohu?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Připravuji přeposílanou zprávu…\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Vrátit se k odloženým zprávám?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Upravit přeposílanou zprávu?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Zahodit nezměněnou zprávu?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Nezměněná zpráva byla zahozena.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Zpráva byla odložena.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Nejsou zadáni příjemci!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Nebyli zadání příjemci.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Žádná věc, zrušit odeslání?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Věc nebyla zadána.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Posílám zprávu…\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Uložit do Fcc přílohy?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Zprávu nelze odeslat.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Zpráva odeslána.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Zasílám na pozadí.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Nebyl nalezen parametr „boundary“! [ohlaste tuto chybu]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s již neexistuje!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s není řádným souborem.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"%s nelze otevřít\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"Aby bylo možné odesílat e-maily, je třeba nastavit $sendmail.\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Chyba při zasílání zprávy, potomek ukončen %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Výstup doručovacího programu\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Chybné IDN %s při generování „resent-from“ (odesláno z).\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s… Končím.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Zachycen %s… Končím.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Zachycen signál %d… Končím.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Zadejte S/MIME heslo:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Důvěryhodný   \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Ověřený   \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Neověřený   \"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Platnost vypršela   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Odvolaný   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Není platný   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Neznámý   \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME klíče vyhovující \\\"%s\\\".\"\n\n#: smime.c:472\nmsgid \"ID is not trusted.\"\nmsgstr \"ID není důvěryhodné.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Zadejte ID klíče: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Nebyl nalezen žádný (platný) certifikát pro %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Chyba: nelze spustit OpenSSL jako podproces!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"chybí soubor s certifikáty\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"žádná schránka\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"OpenSSL nevygenerovalo žádný výstup…\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"Nemohu najít klíč odesílatele, použijte funkci podepsat jako.\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"OpenSSL podproces nelze spustit!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Konec OpenSSL výstupu --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Chyba: nelze spustit OpenSSL podproces! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Následující data jsou zašifrována pomocí S/MIME --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Následují data podepsaná pomocí S/MIME --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Konec dat zašifrovaných ve formátu S/MIME --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Konec dat podepsaných pomocí S/MIME --]\\n\"\n\n#: smime.c:2109\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (p)odepsat, šifr. po(m)ocí, podep. (j)ako, (n)ic, vypnout pří(l). \"\n\"šifr.? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"pmjfnl\"\n\n#: smime.c:2123\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME šif(r)., (p)ode., šif.po(m)ocí, pod.(j)ako, (o)bojí, (n)ic, pří(l).\"\n\"šif.? \"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: smime.c:2124\nmsgid \"eswabfco\"\nmsgstr \"rpmjofnl\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME šif(r)ovat, (p)odepsat, šifr. po(m)ocí, podep. (j)ako, (o)bojí či \"\n\"(n)ic? \"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"rpmjofn\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Vyberte rodinu algoritmů: 1: DES, 2: RC2, 3: AES nebo (n)ešifrovaný? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"dran\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"859\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SMTP relace selhala: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SMTP relace selhala: nelze otevřít %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"Adresa odesílatele nezadána\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"SMTP relace selhala: chyba při čtení\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"SMTP relace selhala: chyba při zápisu\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Nesprávná odpověď serveru\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Neplatné SMTP URL: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP server nepodporuje autentizaci\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP autentizace požaduje SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"%s autentizace se nezdařila, zkouším další metodu\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL autentizace se nezdařila\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Řadím schránku…\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Řadící funkci nelze nalézt! [ohlaste tuto chybu]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(žádná schránka)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Rodičovská zpráva není v omezeném zobrazení viditelná..\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Rodičovská zpráva není dostupná.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"nulová operace\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"konec podmíněného spuštění (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"pro zobrazení příloh vynuceně použít mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"zobrazit přílohu jako text\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"přepnout zobrazování podčástí\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"přeskočit na začátek stránky\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"zaslat kopii zprávy jinému uživateli\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"zvolit jiný soubor v tomto adresáři\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"zobrazit soubor\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"zobrazit jméno zvoleného souboru\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"přihlásit aktuální schránku (pouze IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"odhlásit aktuální schránku (pouze IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"přepnout zda zobrazovat všechny/přihlášené schránky (IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"zobraz schránky, které obsahují novou poštu\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"změnit adresáře\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"zjistit zda schránky obsahují novou poštu\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"připojit soubor(-y) k této zprávě\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"připojit zprávy k této zprávě\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"editovat BCC seznam\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"editovat CC seznam\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"editovat popis přílohy\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"editovat položku „transfer-encoding“ přílohy\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"změnit soubor pro uložení kopie této zprávy\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"editovat soubor, který bude připojen\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"editovat položku „from“\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"editovat zprávu i s hlavičkami\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"editovat zprávu\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"editovat přílohu za použití položky mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"editovat položku 'Reply-To'\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"editovat věc této zprávy\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"editovat seznam 'TO'\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"vytvořit novou schránku (pouze IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"editovat typ přílohy\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"pracovat s dočasnou kopií přílohy\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"zkontrolovat pravopis zprávy programem ispell\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"sestavit novou přílohu dle položky mailcapu\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"přepnout automatické ukládání této přílohy\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"odložit zprávu pro pozdější použití\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"přejmenovat/přesunout přiložený soubor\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"odeslat zprávu\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"přepnout metodu přiložení mezi vložením a přílohou\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"přepnout, zda má být soubor po odeslání smazán\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"upravit informaci o kódování přílohy\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"uložit zprávu do složky\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"uložit kopii zprávy do souboru/schránky\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"vytvořit přezdívku z odesílatele dopisu\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"přesunout položku na konec obrazovky\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"přesunout položku do středu obrazovky\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"přesunout položku na začátek obrazovky\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"vytvořit kopii ve formátu 'text/plain'\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"vytvořit kopii ve formátu 'text/plain' a smazat\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"smazat aktuální položku\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"smazat aktuální schránku (pouze IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"smazat všechny zprávy v podvláknu\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"smazat všechny zprávy ve vláknu\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"zobrazit úplnou adresu odesílatele\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"zobrazit zprávu a přepnout odstraňování hlaviček\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"zobrazit zprávu\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"editovat přímo tělo zprávy\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"smazat znak před kurzorem\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"posunout kurzor o jeden znak vlevo\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"posunout kurzor na začátek slova\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"přeskočit na začátek řádku\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"procházet schránkami, přijímajícími novou poštu\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"doplnit jméno souboru nebo přezdívku\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"doplnit adresu výsledkem dotazu\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"smazat znak pod kurzorem\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"přeskočit na konec řádku\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"posunout kurzor o jeden znak vpravo\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"posunout kurzor na konec slova\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"rolovat dolů seznamem provedených příkazů\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"rolovat nahoru seznamem provedených příkazů\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"smazat znaky od kurzoru do konce řádku\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"smazat znaky od kurzoru do konce slova\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"smazat všechny znaky na řádku\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"smazat slovo před kurzorem\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"příští napsaný znak uzavřít do uvozovek\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"přehodit znak pod kurzorem s předchozím\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"převést všechna písmena slova na velká\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"převést všechna písmena slova na malá\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"převést všechna písmena slova na velká\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"zadat muttrc příkaz\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"změnit souborovou masku\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"odejít z tohoto menu\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtrovat přílohu příkazem shellu\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"přeskočit na první položku\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"přepnout zprávě příznak důležitosti\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"přeposlat zprávu jinému uživateli s komentářem\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"zvolit aktuální položku\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"odepsat všem příjemcům\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"rolovat dolů o 1/2 stránky\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"rolovat nahoru o 1/2 stránky\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"tato obrazovka\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"přeskočit na indexové číslo\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"přeskočit na poslední položku\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"odepsat do specifikovaných poštovních konferencí\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"spustit makro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"sestavit novou zprávu\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"rozdělit vlákno na dvě\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"otevřít jinou složku\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"otevřít jinou složku pouze pro čtení\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"odstranit zprávě příznak stavu\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"smazat zprávy shodující se se vzorem\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"vynutit stažení pošty z IMAP serveru\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"odhlásit ze všech IMAP serverů\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"stáhnout poštu z POP serveru\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"přeskočit na první zprávu\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"přeskočit na poslední zprávu\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"zobrazovat pouze zprávy shodující se se vzorem\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"k aktuální zprávě připojit označené zprávy\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"otevřít další schránku s novou poštou\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"přeskočit na následující novou zprávu\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"přeskočit na následující novou nebo nepřečtenou zprávu\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"přeskočit na následující podvlákno\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"přeskočit na následující vlákno\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"přeskočit na následující obnovenou zprávu\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"přeskočit na následující nepřečtenou zprávu\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"přeskočit na předchozí zprávu ve vláknu\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"přeskočit na předchozí vlákno\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"přeskočit na předchozí podvlákno\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"přeskočit na předchozí obnovenou zprávu\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"přeskočit na předchozí novou zprávu\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"přeskočit na předchozí novou nebo nepřečtenou zprávu\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"přeskočit na předchozí nepřečtenou zprávu\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"označit toto vlákno jako přečtené\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"označit toto podvlákno jako přečtené\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"nastavit zprávě příznak stavu\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"uložit změny do schránky\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"označit zprávy shodující se se vzorem\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"obnovit zprávy shodující se se vzorem\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"odznačit zprávy shodující se se vzorem\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"přeskočit do středu stránky\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"přeskočit na další položku\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"rolovat o řádek dolů\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"přeskočit na další stránku\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"přeskočit na konec zprávy\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"přepnout zobrazování citovaného textu\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"přeskočit za citovaný text\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"přeskočit na začátek zprávy\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"poslat zprávu/přílohu rourou do příkazu shellu\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"přeskočit na předchozí položku\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"rolovat o řádek nahoru\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"přeskočit na předchozí stránku\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"vytisknout aktuální položku\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"dotázat se externího programu na adresy\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"přidat výsledky nového dotazu k již existujícím\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"uložit změny do schránky a skončit\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"vrátit se k odložené zprávě\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"smazat a překreslit obrazovku\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"<vnitřní>\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"přejmenovat aktuální schránku (pouze IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"odepsat na zprávu\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"použít aktuální zprávu jako šablonu pro novou\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"uložit zprávu/přílohu do schránky/souboru\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"vyhledat regulární výraz\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"vyhledat regulární výraz opačným směrem\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"vyhledat následující shodu\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"vyhledat následující shodu opačným směrem\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"přepnout obarvování hledaných vzorů\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"spustit příkaz v podshellu\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"seřadit zprávy\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"seřadit zprávy v opačném pořadí\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"označit aktuální položku\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"prefix funkce, která má být použita pouze pro označené zprávy\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"následující funkci použij POUZE pro označené zprávy\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"označit toto podvlákno\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"označit toto vlákno\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"přepnout zprávě příznak 'nová'\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"přepnout, zda bude schránka přepsána\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"přepnout, zda procházet schránky nebo všechny soubory\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"přeskočit na začátek stránky\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"obnovit aktuální položku\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"obnovit všechny zprávy ve vláknu\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"obnovit všechny zprávy v podvláknu\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"Vypíše označení verze a datum\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"pokud je to nezbytné, zobrazit přílohy pomocí mailcapu\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"zobrazit MIME přílohy\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"zobraz kód stisknuté klávesy\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"zobrazit aktivní omezující vzor\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"zavinout/rozvinout toto vlákno\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"zavinout/rozvinout všechna vlákna\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"připojit veřejný PGP klíč\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"zobrazit menu PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"odeslat veřejný klíč PGP\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"ověřit veřejný klíč PGP\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"zobrazit uživatelské ID klíče\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"hledat klasické PGP\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Akceptovat řetěz.\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Připojit k řetězu remailer\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Vložit do řetězu remailer\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Odstranit remailer z řetězu\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Vybrat předchozí článek řetězu\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Vybrat další článek řetězu\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"odeslat zprávu pomocí řetězu remailerů typu mixmaster\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"vytvořit dešifrovanou kopii a smazat\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"vytvořit dešifrovanou kopii\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"odstranit všechna hesla z paměti\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"extrahovat všechny podporované veřejné klíče\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"zobrazit menu S/MIME\"\n\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Pozor: zpráva nemá hlavičku From:\"\n\n#~ msgid \": \"\n#~ msgstr \": \"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"smazat zprávu(-y)\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" v tomto omezeném zobrazení\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"smazat zprávu\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"editovat zprávu\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"chyba ve výrazu\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Vnitřní chyba. Informujte <roessler@does-not-exist.org>.\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"OpenSSL nevygenerovalo žádný výstup…\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Chyba: zpráva ve formátu PGP/MIME je porušena! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Ačkoliv gpg-agent neběží, použiji GPGME backend\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Chyba: typ „multipart/encrypted“ bez informace o protokolu!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID %s není verifikováno, chcete jej použít pro %s?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Použít nedůvěryhodný klíč s  ID %s pro %s?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Použít klíč s ID %s pro %s?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Pozor: Zatím jste se nerozhodli, jestli důvěřujete klíči s ID %s \"\n#~ \"(pokračujte stiskem jakékoliv klávesy)\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Varování: Nebyl nalezen mezilehlý certifikát.\"\n\n#~ msgid \"This is qualified signature\\n\"\n#~ msgstr \"Toto je kvalifikovaný podpis\\n\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\tseparate filename(s) and recipients,\\n\"\n#~ \"\\t\\twhen using -a, -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\toddělí názvy souborů od příjemců\\n\"\n#~ \"\\t\\tJe-li použit přepínač -a, jsou -- povinné.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Nepodepsat/nešifrovat\"\n\n# `f` means forget it. The absolute order must be preserved. Therefore `f'\n# has to be injected on 6th position.\n#~ msgid \"esabifc\"\n#~ msgstr \"rpjoifn\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\tzbývající argumenty považuje za adresy, i když začínají pomlčkou\\n\"\n#~ \"\\t\\tJe-li použit přepínač -a s více jmény souborů, jsou -- povinné\"\n\n#~ msgid \"Interactive SMTP authentication not supported\"\n#~ msgstr \"Interaktivní autentizace SMTP není podporována\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Není žádný vzor k vyhledání.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Hledat opačným směrem: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Hledat: \"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"Kontrola SSL certifikátu\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"Kontrola TLS/SSL certifikátu\"\n\n#~ msgid \"            created: \"\n#~ msgstr \"          vytvořený: \"\n\n#~ msgid \"*BAD* signature claimed to be from: \"\n#~ msgstr \"*ŠPATNÝ* podpis je prý od: \"\n\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Chyba při ověřování podpisu\"\n\n#~ msgid \"SASL failed to get local IP address\"\n#~ msgstr \"SASL nedokázala zjistit místní IP adresu\"\n\n#~ msgid \"SASL failed to parse local IP address\"\n#~ msgstr \"SASL nedokázala rozebrat místní IP adresu\"\n\n#~ msgid \"SASL failed to get remote IP address\"\n#~ msgstr \"SASL nedokázala zjistit vzdálenou IP adresu\"\n\n#~ msgid \"SASL failed to parse remote IP address\"\n#~ msgstr \"SASL nedokázala rozebrat vzdálenou IP adresu\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Stahuji jmenný prostor…\"\n\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"Použití: mutt [-nRyzZ] [-e <příkaz>] [-F <soubor>] [-m <typ>] [-f \"\n#~ \"<soubor>]\\n\"\n#~ \"         mutt [-nR] [-e <příkaz>] [-F <soubor>] -Q <dotaz> [-Q <dotaz>] \"\n#~ \"[…]\\n\"\n#~ \"         mutt [-nR] [-e <příkaz>] [-F <soubor>] -A <alias> [-A <alias>] \"\n#~ \"[…]\\n\"\n#~ \"         mutt [-nR] [-e <příkaz>] [-F <soubor>] -D\\n\"\n#~ \"         mutt [-nx] [-e <příkaz>] [-a <soubor>] [-F <soubor>] [-H \"\n#~ \"<soubor>]\\n\"\n#~ \"                    [-i <soubor>] [-s <věc>] [-b <adr>] [-c <adr>] <adr> \"\n#~ \"[…]\\n\"\n#~ \"         mutt [-n] [-e <příkaz>] [-F <soubor>] -p\\n\"\n#~ \"         mutt -v[v]\\n\"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"U zpráv uložených na POP serveru nelze nastavit příznak 'Důležité'.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"Na POP serveru nelze zprávy editovat.\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"Čtu %s… %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Zapisuji zprávy… %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"Čtu %s… %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Spouštím PGP…\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Osudová chyba. Aktuální počet zpráv nesouhlasí s předchozím údajem!\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"Příkaz CLOSE se nezdařil.\"\n\n#~ msgid \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (f)orget it? \"\n#~ msgstr \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, nebo (n)ic? \"\n\n#~ msgid \"12345f\"\n#~ msgstr \"12345n\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"První položka je zobrazena.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"Poslední položka je zobrazena.\"\n\n#~ msgid \"Unexpected response received from server: %s\"\n#~ msgstr \"Neočekávaná odpověď od serveru: %s\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"Ke schránkám na tomto IMAP serveru nelze připojovat.\"\n\n#~ msgid \"unspecified protocol error\"\n#~ msgstr \"nespecifikovaná chyba v protokolu\"\n\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"Vytvořit tradiční vloženou (inline) PGP zprávu?\"\n\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"Chyba při volání funkce stat pro %s: %s\"\n\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s není řádným souborem.\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"Zaslat kopii zprávy na %s…?\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"Zaslat kopii zpráv na %s…?\"\n\n#~ msgid \"Decode-save\"\n#~ msgstr \"Dekódovat-uložit\"\n\n#~ msgid \"Decode-copy\"\n#~ msgstr \"Dekódovat-kopírovat\"\n\n#~ msgid \"Decrypt-save\"\n#~ msgstr \"Dešifrovat-uložit\"\n\n#~ msgid \"Decrypt-copy\"\n#~ msgstr \"Dešifrovat-kopírovat\"\n\n#~ msgid \"Copy\"\n#~ msgstr \"Kopírovat\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"[-- End of PGP output --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"[-- Konec výstupu PGP --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"%s: no such command\"\n#~ msgstr \"příkaz %s neexistuje\"\n\n#~ msgid \"Authentication method is unknown.\"\n#~ msgstr \"Neznámá autentizační metoda.\"\n\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"Spouštím OpenSSL…\"\n\n#~ msgid \"ewsabf\"\n#~ msgstr \"špzjon\"\n\n#~ msgid \"Certificate *NOT* added.\"\n#~ msgstr \"Certifikát *NEBYL* přidán.\"\n\n#~ msgid \"This ID's validity level is undefined.\"\n#~ msgstr \"Míra důvěryhodnosti tohoto ID není definována.\"\n\n#~ msgid \"Can't stat %s.\"\n#~ msgstr \"Chyba při volání funkce stat pro %s\"\n"
  },
  {
    "path": "po/da.po",
    "content": "# Danish messages for the mail user agent Mutt.\n# This file is distributed under the same license as the Mutt package.\n# Byrial Jensen <byrial@image.dk> 2000-2005.\n# Morten Bo Johansen <mjb@spamcop.net>, 2000-2016.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt 1.6.0\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2016-03-20 20:39+0100\\n\"\n\"Last-Translator: Morten Bo Johansen <mbj@spamcop.net>\\n\"\n\"Language-Team: Danish <dansk@dansk-gruppen.dk>\\n\"\n\"Language: da\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Generator: Jed w/po-mode: http://mbjnet.dk/po-mode/\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Brugernavn på %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Adgangskode for %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Tilbage\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Slet\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Behold\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Vælg\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Hjælp\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Adressebogen er tom!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Adressebog\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Vælg et alias: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Der er allerede et alias med det navn!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Advarsel: Dette navn for alias vil måske ikke virke. Ret det?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adresse: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Fejl: '%s' er et forkert IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Navn: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] O.k.?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Gem i fil: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Fejl ved læsning af alias-fil\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Adresse tilføjet.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Fejl ved søgning i alias-fil\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Kan ikke matche navneskabelon, fortsæt?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Brug af \\\"compose\\\" i mailcap-fil kræver %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Fejl ved kørsel af \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Kan ikke åbne fil for at analysere brevhovedet.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Kan ikke åbne fil for at fjerne brevhovedet.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Omdøbning af fil slog fejl.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Ingen \\\"compose\\\"-regel for %s i mailcap-fil, opretter en tom fil.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Brug af \\\"edit\\\" i mailcap-fil kræver %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Ingen \\\"edit\\\"-regel for %s i mailcap-fil\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Ingen passende mailcap-regler fundet. Viser som tekst.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME-typen er ikke defineret. Kan ikke vise bilag.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Kan ikke oprette filter\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Kommando: %-20.20s Beskrivelse: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Kommando: %-30.30s Bilag: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Bilag: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---Bilag: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Kan ikke oprette filter\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Skrivefejl!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Jeg ved ikke hvordan man udskriver dette!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Skift filkatalog\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Maske\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s er ikke et filkatalog.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Indbakker [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Abonnementer [%s], filmaske: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Filkatalog [%s], filmaske: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Kan ikke vedlægge et filkatalog!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Ingen filer passer til filmasken\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Oprettelse er kun understøttet for IMAP-brevbakker\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Omdøbning er kun understøttet for IMAP-brevbakker\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Sletning er kun understøttet for IMAP-brevbakker\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Kan ikke slette rodkatalog\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Virkelig slette brevbakke \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Brevbakke slettet.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Brevbakke ikke slettet.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Skift til filkatalog: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Fejl ved indlæsning af filkatalog.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Filmaske: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Omvendt sortering efter (d)ato, (a)lfabetisk, (s)tr. eller (i)ngen? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Sortering efter (d)ato, (a)lfabetisk, (s)tr. eller (i)ngen? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dasi\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nyt filnavn: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Filkataloger kan ikke vises\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Fejl ved visning af fil\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Ny post i \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: farve er ikke understøttet af terminal\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: ukendt farve\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: ukendt objekt\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: kommandoen kan kun bruges på index-, body- og header-objekter\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: for få parametre\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Manglende parameter.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: for få parametre\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: for få parametre\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: ukendt attribut\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"for få parametre\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"for mange parametre\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"standard-farver er ikke understøttet\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Kontrollér PGP-underskrift?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Kunne ikke oprette midlertidig fil!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Kan ikke oprette fremvisningsfilter\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Kunne ikke kopiere brevet\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME-underskrift er i orden.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Der er ikke sammenfald mellem ejer af S/MIME-certifikat og afsender.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Advarsel: En del af dette brev er ikke underskrevet.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME-underskrift er IKKE i orden.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP-underskrift er i orden.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP-underskrift er IKKE i orden.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Kommando: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Advarsel: brevet har ingen From:-header\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Gensend brev til: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Gensend udvalgte breve til: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Ugyldig adresse!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Forkert IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Gensend brev til %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Gensend breve til %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Brevet er ikke gensendt.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Brevene er ikke gensendt.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Brevet er gensendt.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Brevene er gensendt.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Kan ikke oprette filterproces\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Overfør til kommando: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Ingen udskrivningskommando er defineret.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Udskriv brev?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Udskriv udvalgte breve?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Brevet er udskrevet\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Brevene er udskrevet\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Brevet kunne ikke udskrives\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Brevene kunne ikke udskrives\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Omv-sort. (d)ato/(f)ra/(a)nk./(e)mne/t(i)l/(t)råd/(u)sort/(s)tr./s(c)ore/\"\n\"s(p)am?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Sortér (d)ato/(f)ra/(a)nk./(e)mne/t(i)l/(t)råd/(u)sort/(s)tr./s(c)ore/\"\n\"s(p)am?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfaeituscp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Skalkommando: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Afkod-gem%s i brevbakke\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Afkod-kopiér%s til brevbakke\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Dekryptér-gem%s i brevbakke\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Dekryptér-kopiér%s til brevbakke\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Gem%s i brevbakke\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Kopiér%s til brevbakke\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" udvalgte\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Kopierer til %s ...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Omdan til %s ved afsendelse?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"\\\"Content-Type\\\" ændret til %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Tegnsæt ændret til %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"omdanner ikke\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"omdanner\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Der er ingen bilag.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Send\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Afbryd\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Vedlæg fil\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Beskr.\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"Ikke understøttet\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Underskriv og kryptér\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Kryptér\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Underskriv\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"Ingen\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (indlejret PGP)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \" (OppEnc-tilstand)\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" underskriv som: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<forvalgt>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Kryptér med: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] findes ikke mere!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] blev ændret. Opdatér indkodning?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- MIME-dele\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Advarsel: '%s' er et forkert IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Brevets eneste del kan ikke slettes.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Forkert IDN i \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Vedlægger valgte filer ...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Kan ikke vedlægge %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Åbn brevbakken med brevet som skal vedlægges\"\n\n#: compose.c:762\n#, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Kan ikke åbne brevbakke %s\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Ingen breve i den brevbakke.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Udvælg de breve som du vil vedlægge!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Kan ikke vedlægge!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Omkodning berører kun tekstdele.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Den aktuelle del vil ikke blive konverteret.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Den aktuelle del vil blive konverteret.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Ugyldig indkodning.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Gem en kopi af dette brev?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Omdøb til: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Kan ikke finde filen %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Ny fil: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"\\\"Content-Type\\\" er på formen grundtype/undertype\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Ukendt \\\"Content-Type\\\" %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Kan ikke oprette filen %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Det er ikke muligt at lave et bilag\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Udsæt afsendelse af dette brev?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Skriv brevet til brevbakke\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Skriver brevet til %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Brevet skrevet.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME allerede valgt. Ryd & fortsæt ? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP allerede valgt. Ryd & fortsæt ? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"dannelse af gpgme-kontekst fejlede: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"fejl ved aktivering af CMS-protokol: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"dannelse af gpgme-dataobjekt fejlede: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"tildeling af dataobjekt fejlede: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"fejl ved tilbagespoling af dataobjekt: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"fejl ved læsning af dataobjekt: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Kan ikke oprette midlertidig fil\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"tilføjelse af modtager fejlede \\\"%s\\\": %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"hemmelig nøgle \\\"%s\\\" ikke fundet: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"tvetydig specifikation af hemmelig nøgle \\\"%s\\\"\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"fejl ved indstilling af hemmelig nøgle \\\"%s\\\": %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"fejl ved indstilling af PKA-underskrifts notation: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"fejl ved kryptering af data: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"fejl ved underskrivelse af data: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\"$pgp_sign_as er ikke indstilet, og ingen standardnøgle er anført i ~/.gnupg/\"\n\"gpg.conf\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Advarsel: En af nøglerne er blevet tilbagekaldt\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Advarsel: Nøglen som underskriften oprettedes med er udløbet den: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Advarsel: Mindst en certificeringsnøgle er udløbet\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Advarsel: Undskriftens gyldighed udløb den: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Kan ikke verificere p.g.a. manglende nøgle eller certifikat\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL er ikke tilgængelig.\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"Tilgængelig CRL er for gammel\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Et policy-krav blev ikke indfriet\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"En systemfejl opstod\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"ADVARSEL: PKA-nøgle matcher ikke underskrivers adresse: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"Underskrivers PKA-verificerede adresse er: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Fingeraftryk ....: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"ADVARSEL: Vi har INGEN indikation på om Nøglen tilhører personen med det \"\n\"ovenfor viste navn\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"ADVARSEL: Nøglen TILHØRER IKKE personen med det ovenfor viste navn\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"ADVARSEL: Det er IKKE sikkert at nøglen personen med det ovenfor viste navn\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"alias: \"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"KeyID \"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"oprettet: \"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Fejl ved indhentning af information for KeyID %s: %s\\n\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"God underskrift fra:\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"*DÅRLIG* underskrift fra:\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Problematisk underskrift fra:\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"               udløber: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Begyndelse på underskriftsinformation --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Fejl: verificering fejlede: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Begyndelse på påtegnelse (underskrift af: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Slut på påtegnelse ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"[-- Slut på underskriftsinformation --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Fejl: dekryptering fejlede: %s --]\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Fejl ved udtrækning af nøgledata!\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Fejl: dekryptering/verificering fejlede: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Fejl: kopiering af data fejlede\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- END PGP MESSAGE --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- END PGP SIGNED MESSAGE --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fejl: kunne ikke finde begyndelse på PGP-meddelelsen! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Fejl: Kunne ikke oprette en midlertidig fil! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Følgende data er underskrevet og krypteret med PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Følgende data er PGP/MIME-krypteret --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Slut på PGP/MIME-underskrevne og -krypterede data --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Slut på PGP/MIME-krypteret data --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"Vellykket dekryptering af PGP-brev.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Kunne ikke dekryptere PGP-brev\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"[-- Følgende data er unserskrevet med S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"[-- Følgende data er krypteret med S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Slut på S/MIME-underskrevne data --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Slut på S/MIME-krypteret data --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Kan ikke vise denne bruger-id (ukendt indkodning)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Kan ikke vise denne bruger-id (ugyldig indkodning)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Kan ikke vise denne bruger-id (ugyldig DN)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" alias ..........: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Navn ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Ugyldigt]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Gyldig fra ......: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Gyldig til ......: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Nøgletype .......: %s, %lu bit %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Nøgleanvendelse .: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"kryptering\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"underskrivning\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"certificering\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Serienummer .....: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Udstedt af ......: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Delnøgle ........: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Tilbagekaldt]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Udløbet]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Deaktiveret]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Samler data ...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Kunne ikke finde udsteders nøgle: %s\\n\"\n\n#: crypt-gpgme.c:3675\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Fejl: certificeringskæde er for lang - stopper her\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Nøgle-id: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new fejlede: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start fejlede: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next fejlede: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Alle matchende nøgler er markeret som udløbet/tilbagekaldt.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Afslut\"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Udvælg  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Undersøg nøgle  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP- og S/MIME-nøgler som matcher\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"PGP-nøgler som matcher\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME-nøgler som matcher\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"nøgler som matcher\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Denne nøgle kan ikke bruges: udløbet/sat ud af kraft/tilbagekaldt.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"Id er udløbet/ugyldig/ophævet.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"Ægthed af id er ubestemt.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"Id er ikke bevist ægte.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Id er kun bevist marginalt ægte.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Vil du virkelig anvende nøglen?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Leder efter nøgler, der matcher \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Anvend nøgle-id = \\\"%s\\\" for %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Anfør nøgle-id for %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Anfør venligst nøgle-id: \"\n\n#: crypt-gpgme.c:4614\n#, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Fejl ved eksportering af nøgle: %s\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP-nøgle 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"GPGME: OpenPGP-protokol utilgængelig\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"GPGME: CMS-protokol utilgængelig\"\n\n#: crypt-gpgme.c:4721\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (u)nderskriv, underskriv (s)om, (p)gp, r(y)d eller (o)ppenc-tilstand \"\n\"fra? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"uspgyo\"\n\n#: crypt-gpgme.c:4731\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (u)nderskriv, underskriv (s)om, s/(m)ime, r(y)d eller (o)ppenc-tilstand \"\n\"fra? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"usmgyo\"\n\n#: crypt-gpgme.c:4744\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME (k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge, (p)gp, r(y)d \"\n\"eller (o)ppenc-tilstand fra? \"\n\n#: crypt-gpgme.c:4745\nmsgid \"esabpfco\"\nmsgstr \"kusbpgyo\"\n\n#: crypt-gpgme.c:4750\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge, s/(m)ime, r(y)d \"\n\"eller (o)ppenc-tilstand? \"\n\n#: crypt-gpgme.c:4751\nmsgid \"esabmfco\"\nmsgstr \"kusbmgyo\"\n\n#: crypt-gpgme.c:4762\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge, (p)gp, eller \"\n\"r(y)d? \"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"kusbpgy\"\n\n#: crypt-gpgme.c:4768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP (k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge, s/(m)ime, eller \"\n\"r(y)d? \"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"kusbmgy\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Underskriv som: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Kunne ikke verificere afsender\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Kunne ikke bestemme afsender\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (aktuelt tidspunkt: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s uddata følger%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Har glemt løsen(er).\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\"Integreret PGP kan ikke bruges sammen med bilag. Brug PGP/MIME i stedet?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"Brev ikke sendt: integreret PGP kan ikke bruges sammen med bilag.\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Starter PGP ...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Brevet kan ikke sendes integreret. Brug PGP/MIME i stedet?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Brev ikke sendt.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"S/MIME-breve uden antydning om indhold er ikke understøttet.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Forsøger at udtrække PGP-nøgler ...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Forsøger at udtrække S/MIME-certifikater ...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fejl: Ukendt \\\"multipart/signed\\\" protokol %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fejl: Inkonsistent \\\"multipart/signed\\\" struktur! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"[-- Advarsel: %s/%s underskrifter kan ikke kontrolleres. --]\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Følgende data er underskrevet --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"[-- Advarsel: Kan ikke finde nogen underskrifter. --]\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Slut på underskrevne data --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\\\"crypt_use_gpgme\\\" er sat men ikke bygget med GPGME-understøttelse.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Starter S/MIME ...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"ja\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"nej\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Afslut Mutt øjeblikkeligt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"ukendt fejl\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Tryk på en tast for at fortsætte ...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' for en liste): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Ingen brevbakke er åben.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Der er ingen breve.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Brevbakken er skrivebeskyttet.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funktionen er ikke tilladt ved vedlægning af bilag.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Ingen synlige breve.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"%s: Operationen er ikke tilladt af ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Kan ikke skrive til en skrivebeskyttet brevbakke!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Ændringer i brevbakken vil blive skrevet til disk, når den forlades.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Ændringer i brevbakken vil ikke blive skrevet til disk.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Afslut\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Gem\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Send\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Svar\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Gruppe\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Brevbakke ændret udefra. Statusindikatorer kan være forkerte.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Nye breve i denne brevbakke.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Brevbakke ændret udefra.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Ingen breve er udvalgt.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Intet at gøre.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Hop til brev: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Parameter skal være nummeret på et brev.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Brevet er ikke synligt.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Ugyldigt brevnummer.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Kan ikke slette breve\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Slet breve efter mønster: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Intet afgrænsningsmønster er i brug.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Afgrænsning: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Afgræns til breve efter mønster: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Afgræns til \\\"all\\\" for at se alle breve.\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Afslut Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Udvælg breve efter mønster: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Kan ikke fortryde sletning af breve\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Behold breve efter mønster: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Fjern valg efter mønster: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Logget ud fra IMAP-servere.\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Åbn brevbakke i skrivebeskyttet tilstand\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Åbn brevbakke\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Ingen brevbakker med nye breve\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s er ikke en brevbakke.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Afslut Mutt uden at gemme?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Trådning er ikke i brug.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Tråden er brudt\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"Tråden må ikke være brudt, brevet er ikke en del af en tråd\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"Kan ikke sammenkæde tråde\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Ingen Message-ID: i brevhoved er tilgængelig til at sammenkæde tråde\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Markér et brev til sammenkædning som det første\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Tråde sammenkædet\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Ingen tråd sammenkædet\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Du er ved sidste brev.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Alle breve har slette-markering.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Du er ved første brev.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Søgning fortsat fra top.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Søgning fortsat fra bund.\"\n\n#: curs_main.c:1608\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Ingen nye breve i denne afgrænsede oversigt.\"\n\n#: curs_main.c:1610\nmsgid \"No new messages.\"\nmsgstr \"Ingen nye breve.\"\n\n#: curs_main.c:1615\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Ingen ulæste breve i denne afgrænsede oversigt.\"\n\n#: curs_main.c:1617\nmsgid \"No unread messages.\"\nmsgstr \"Ingen ulæste breve.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\nmsgid \"Cannot flag message\"\nmsgstr \"Kan ikke give brev statusindikator\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"Kan ikke skifte mellem ny/ikke-ny\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Ikke flere tråde.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Du er ved den første tråd.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Tråden indeholder ulæste breve.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\nmsgid \"Cannot delete message\"\nmsgstr \"Kan ikke slette brev\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\nmsgid \"Cannot edit message\"\nmsgstr \"Kan ikke redigere brev\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"Kan ikke markére breve som læst\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\nmsgid \"Cannot undelete message\"\nmsgstr \"Kan ikke fortryde sletning af brev\"\n\n#: edit.c:41\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tindsæt en linje som begynder med en enkelt ~\\n\"\n\"~b modtagere\\tføj modtagere til Bcc-feltet\\n\"\n\"~c modtagere\\tføj modtagere til Cc-feltet\\n\"\n\"~f breve\\tmedtag breve\\n\"\n\"~F breve\\tsamme som ~f, men inkl. brevhoved.\\n\"\n\"~h\\t\\tret i brevhoved.\\n\"\n\"~m breve\\tmedtag og citér breve\\n\"\n\"~M breve\\tsamme som ~m, men inkl. brevhoved\\n\"\n\"~p\\t\\tudskriv brevet\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tskriv fil og afslut editoren\\n\"\n\"~r file\\t\\tindlæs en fil i editoren\\n\"\n\"~t users\\tføj modtagere til To:-feltet\\n\"\n\"~u\\t\\tgenkald den forrige linje\\n\"\n\"~v\\t\\tredigér brev med editor som er angivet i $VISUAL-miljøvariablen\\n\"\n\"~w file\\t\\tskriv brev til fil\\n\"\n\"~x\\t\\tforkast ændringer og afslut editor\\n\"\n\"~?\\t\\tdenne besked\\n\"\n\".\\t\\tpå en linje for sig selv afslutter input\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: ugyldigt brevnummer.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Afslut brevet med et '.' på en linje for sig selv).\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Ingen brevbakke.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Brevet indeholder:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(fortsæt)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"manglende filnavn.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Ingen linjer i brevet.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Forkert IDN i %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: ukendt editor-kommando (~? for hjælp)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"kunne ikke oprette midlertidig brevbakke: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"kunne ikke skrive til midlertidig brevbakke: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"kunne ikke afkorte midlertidig brevbakke: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Brevfilen er tom!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Brevet er uændret!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Kan ikke åbne brev: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Kan ikke føje til brevbakke: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Fejl. Bevarer midlertidig fil: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Sæt statusindikator\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Fjern statusindikator\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Fejl: Kunne ikke vise nogen del af \\\"Multipart/Alternative\\\"! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Brevdel #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Type: %s/%s, indkodning: %s, størrelse: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"En eller flere dele af dette brev kunne ikke vises\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Autovisning ved brug af %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Starter autovisning kommando: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Kan ikke køre %s --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Fejl fra autovisning af %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Fejl: \\\"message/external-body\\\" har ingen \\\"access-type\\\"-parameter --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Denne %s/%s-del \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(på %s bytes) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"er blevet slettet --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- den %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- navn %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Denne %s/%s-del er ikke medtaget, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"[-- og den angivne eksterne kilde findes ikke mere. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- og den angivne \\\"access-type\\\" %s er ikke understøttet --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Kan ikke åbne midlertidig fil!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Fejl: \\\"multipart/signed\\\" har ingen \\\"protocol\\\"-parameter.\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Dette er et bilag \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s er ikke understøttet \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(brug '%s' for vise denne brevdel)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"('view-attachments' må tildeles en tast!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: kunne ikke vedlægge fil\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"FEJL: vær venlig at rapportere denne fejl\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<UKENDT>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Almene tastetildelinger:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Funktioner uden tastetildelinger:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Hjælp for %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Fejlformateret historikfil (linje %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"genvejstasten '^' til den aktuelle brebakke er inaktiv\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"genvejstaste til brevbakke udfoldet til tomt regulært udtryk\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Kan ikke foretage unhook * inde fra en hook.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: ukendt hooktype: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: Kan ikke slette en %s inde fra en %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Ingen godkendelsesmetode kan bruges\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Godkender (anonym) ...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonym godkendelse slog fejl.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Godkender (CRAM-MD5) ...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5-godkendelse slog fejl.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Godkender (GSSAPI) ...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI-godkendelse slog fejl.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"Der er spærret for indlogning på denne server.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Logger ind ...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Login slog fejl.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Godkender (%s) ...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL-godkendelse slog fejl.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s er en ugyldig IMAP-sti\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Henter liste over brevbakker ...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Brevbakken findes ikke\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Opret brevbakke: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Brevbakken skal have et navn.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Brevbakke oprettet.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Omdøb brevbakke %s to: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Omdøbning slog fejl: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Brevbakke omdøbt.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Brevbakke lukket\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"CREATE fejlede: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Lukker forbindelsen til %s ...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Forældet IMAP-server. Mutt kan ikke bruge den.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Sikker forbindelse med TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Kunne ikke opnå TLS-forbindelse\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Krypteret forbindelse ikke tilgængelig\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Vælger %s ...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Fejl ved åbning af brevbakke\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Opret %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Sletning slog fejl\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Markerer %d breve slettet ...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Gemmer ændrede breve ... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Fejl ved gemning af statusindikatorer. Luk alligevel?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Fejl ved gemning af statusindikatorer\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Sletter breve på server ...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE slog fejl\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Headersøgning uden et headernavn: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Ugyldigt navn på brevbakke\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Abonnerer på %s ...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Afmelder %s ...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Abonnerer på %s\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Afmeldt fra %s\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Kan ikke hente brevhoveder fra denne version IMAP-server.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Kunne ikke oprette midlertidig fil %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Evaluerer cache ...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Henter brevhoveder ...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Henter brev ...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"Brevindekset er forkert. Prøv at genåbne brevbakken.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Uploader brev ...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Kopierer %d breve til %s ...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Kopierer brev %d til %s ...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Fortsæt?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Funktion er ikke tilgængelig i denne menu.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Fejl i regulært udtryk: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Ikke nok deludtryk til spamskabelon\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: intet mønster matcher\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: intet mønster matcher\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%sgroup: mangler -rx eller -addr.\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%sgroup: advarsel: forkert IDN \\\"%s\\\".\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"vedlæg bilag: ingen beskrivelse\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"vedlæg bilag: ugyldig beskrivelse\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"fjern bilag: ingen beskrivelse\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"fjern bilag: ugyldig beskrivelse\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: Ingen adresse\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Advarsel: Forkert IDN '%s' i alias '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"ugyldig linje i brevhoved\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: ukendt sorteringsmetode\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): Fejl i regulært udtryk: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: ukendt variabel\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"præfiks er ikke tilladt med reset\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"værdi er ikke tilladt med reset\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Brug: set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s er sat\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s er ikke sat\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Ugyldig værdi for tilvalget %s: \\\"%s\\\"\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: ugyldig type brevbakke\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: Ugyldig værdi (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"formatfejl\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"taloverløb\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: Ugyldig værdi\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: Ukendt type.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: ukendt type\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Fejl i %s, linje %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: Fejl i %s\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: læsning afbrudt pga. for mange fejl i %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: Fejl ved %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: For mange parametre\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: Ukendt kommando\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Fejl i kommandolinje: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"kan ikke bestemme hjemmekatalog\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"kan ikke bestemme brugernavn\"\n\n#: init.c:2970\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"kan ikke bestemme nodenavn via uname()\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: intet gruppenavn\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"parametre slap op\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"Makroer er deaktiveret for øjeblikket.\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Makro-sløjfe opdaget.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Tasten er ikke tillagt en funktion.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Tasten er ikke tillagt en funktion. Tast '%s' for hjælp.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: For mange parametre\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: ukendt menu\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"tom tastesekvens\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: for mange parametre\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: ukendt funktion\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: tom tastesekvens\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: for mange parametre\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: ingen parametre\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: ukendt funktion\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Anfør nøgler (^G afbryder): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Tegn = %s, oktalt = %o, decimalt = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Heltals-overløb, kan ikke tildele hukommelse!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Ikke mere hukommelse!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"For at kontakte Mutts udviklere, skriv venligst til <mutt-dev@mutt.org>.\\n\"\n\"Besøg netstedet http://bugs.mutt.org/, hvis du vil rapportere en \"\n\"programfejl.\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins m.fl.\\n\"\n\"Der følger ABSOLUT INGEN GARANTI med Mutt; tast `mutt -vv` for detaljer.\\n\"\n\"Mutt er et frit program, og du er velkommen til at redistribuere det\\n\"\n\"under visse betingelser; tast `mutt -vv` for detaljer.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Mange andre, som ikke er nævnt her, har bidraget med kode, rettelser\\n\"\n\"og forslag.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"brug: mutt [<tilvalg>] [-z] [-f <fil> | -yZ]\\n\"\n\"      mutt [<tilvalg>] [-Ex] [-Hi <fil>] [-s <emne>] [-bc <adr>] [-a <fil> \"\n\"[...] --] <adr> [...]\\n\"\n\"      mutt [<tilvalg>] [-x] [-s <emne>] [-bc <adr>] [-a <fil> [...] --] \"\n\"<adr> [...] < brev\\n\"\n\"      mutt [<tilvalg>] -p\\n\"\n\"      mutt [<tilvalg>] -A <alias> [...]\\n\"\n\"      mutt [<tilvalg>] -Q <forespørgsel> [...]\\n\"\n\"      mutt [<tilvalg>] -D\\n\"\n\"      mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"options:\\n\"\n\"  -A <alias>\\tudfold det angivne alias\\n\"\n\"  -a <fil> [...] --\\tvedhæft fil(er) til brevet\\n\"\n\"\\t\\tfillisten skal afsluttes med sekvensen \\\"--\\\"\\n\"\n\"  -b <adresse>\\tanfør en \\\"blind carbon-copy\\\"-adresse (BCC)\\n\"\n\"  -c <adresse>\\tanfør en \\\"carbon-copy\\\"-adresse (CC)\\n\"\n\"  -D\\t\\tudskriv værdien af alle variabler til standardud\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <niveau>\\tlog uddata fra fejlfinding til ~/.muttdebug0\"\n\n#: main.c:137\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -E\\t\\tredigér kladden (-H) eller medtag (-i) fil\\n\"\n\"  -e <kommando>\\tanfør en kommando til udførelse efter opstart\\n\"\n\"  -f <fil>\\tanfør hvilken brevbakke der skal læses\\n\"\n\"  -F <fil>\\tanfør en alternativ muttrc-fil\\n\"\n\"  -H <fil>\\tanfør en kladdefil hvorfra brevhoved og indhold skal læses\\n\"\n\"  -i <fil>\\tanfør en fil som Mutt skal medtage i brevet\\n\"\n\"  -m <type>\\tanfør en standardtype på brevbakke\\n\"\n\"  -n\\t\\tbevirker at Mutt ikke læser systemets Muttrc\\n\"\n\"  -p\\t\\tgenkald et udsat brev\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <variabel>\\tspørg til en opsætningsvariabel\\n\"\n\"  -R\\t\\tåbn en brevbakke i skrivebeskyttet tilstand\\n\"\n\"  -s <emne>\\tanfør et emne (skal stå i citationstegn hvis der er mellemrum)\\n\"\n\"  -v\\t\\tvis version og definitioner ved kompilering\\n\"\n\"  -x\\t\\tsimulér mailx' måde at sende på\\n\"\n\"  -y\\t\\tvælg en brevbakke som er angivet i din \\\"mailboxes\\\"-liste\\n\"\n\"  -z\\t\\tafslut øjeblikkeligt hvis der ikke er nogen breve i brevbakken\\n\"\n\"  -Z\\t\\tåbn den første brevbakke med nye breve, afslut øjeblikkeligt hvis \"\n\"ingen\\n\"\n\"  -h\\t\\tdenne hjælpebesked\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Tilvalg ved oversættelsen:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Kan ikke klargøre terminal.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Fejl: 'værdien \\\"%s\\\" er ugyldig til -d.\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Fejlfinder på niveau %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG blev ikke defineret ved oversættelsen. Ignoreret.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s findes ikke. Opret?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Kan ikke oprette %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Kunne ikke fortolke mailto:-link\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Ingen angivelse af modtagere.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"Kan ikke bruge tilvalget -E sammen med standardinddata\\n\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: kan ikke vedlægge fil.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Ingen brevbakke med nye breve.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Ingen indbakker er defineret.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Brevbakken er tom.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Læser %s ...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Brevbakken er ødelagt!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Brevbakken blev ødelagt!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Kritisk fejl! Kunne ikke genåbne brevbakke!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Kan ikke låse brevbakke!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"sync: mbox ændret, men ingen ændrede breve! (rapportér denne bug)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Skriver %s ...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Udfører ændringer ...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Kunne ikke skrive! Gemte en del af brevbakken i %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Kunne ikke genåbne brevbakke!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Genåbner brevbakke ...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Hop til: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Ugyldigt indeksnummer.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Ingen punkter.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Du kan ikke komme længere ned.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Du kan ikke komme længere op.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Du er på den første side.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Du er på den sidste side.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Du er på sidste listning.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Du er på første listning.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Søg efter: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Søg baglæns efter: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Ikke fundet.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Der er ingen udvalgte listninger.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Søgning kan ikke bruges i denne menu.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Man kan ikke springe rundt i dialogerne.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Udvælgelse er ikke understøttet.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Skanner %s ...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"Kunne ikke gemme brev på disken\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): kan ikke sætte tidsstempel på fil\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Ukendt SASL-profil\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Fejl ved tildeling af SASL-forbindelse\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Fejl ved indstilling af sikkerhedsegenskaber for SASL\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Fejl ved indstilling af ekstern sikkerhedsstyrke for SASL\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Fejl ved indstilling af eksternt brugernavn for SASL\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Forbindelse til %s er lukket\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL er ikke tilgængelig.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"\\\"Preconnect\\\"-kommando slog fejl.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Kommunikationsfejl med server %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Forkert IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Opsøger %s ...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Kunne ikke finde værten \\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Forbinder til %s ...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Kunne ikke forbinde til %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Kunne ikke finde nok entropi på dit system\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Fylder entropipuljen: %s ...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s har usikre tilladelser!\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL deaktiveret pga. mangel på entropi\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"I/O-fejl\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL slog fejl: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Ude af stand til at hente certifikat fra server\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"%s-forbindelse bruger %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Ukendt\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[kan ikke beregne]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[ugyldig dato]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Server-certifikat er endnu ikke gyldigt\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Server-certifikat er udløbet\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"kan ikke hente certifikatets \\\"subject\\\"\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"kan ikke finde certifikatets \\\"common name\\\"\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"der er ikke sammenfald mellem ejer af certifikat og værtsnavn %s\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Kontrol af certifikat-vært fejlede: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Dette certifikat tilhører:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Dette certifikat er udstedt af:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Dette certifikat er gyldigt\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   fra %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     til %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Fingeraftryk: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"Kontrol af SSL-certifikat (certifikat %d af %d i kæde)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(a)fvis, (g)odkend denne gang, (v)arig godkendelse\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"agv\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(a)fvis, (g)odkend denne gang\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ag\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Advarsel: Kunne ikke gemme certifikat\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Certifikat gemt\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Fejl: ingen åben TLS-socket\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Alle tilgængelige protokoller for TLS/SSL-forbindelse deaktiveret\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"Eksplicit ciphersuite-valg via $ssl_ciphers ikke understøttet\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL/TLS-forbindelse bruger %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Kan ikke klargøre gnutls-certifikatdata\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Fejl under behandling af certifikatdata\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"Advarsel: Servercertifikat blev underskrevet med en usikker algoritme\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1-fingeraftryk: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5-fingeraftryk: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"ADVARSEL: Server-certifikat er endnu ikke gyldigt\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"ADVARSEL: Server-certifikat er udløbet\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"ADVARSEL: Server-certifikat er blevet tilbagekaldt\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"ADVARSEL: Værtsnavn på server matcher ikke certifikat\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"ADVARSEL: Undskriver af servercertifikat er ikke autoriseret (CA)\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Fejl under godkendelse af certifikat (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Certifikat er ikke X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Opretter forbindelse til \\\"%s\\\" ...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Tunnel til %s returnerede fejl %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Fejl i tunnel under kommunikation med %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Filen er et filkatalog; gem i det? [(j)a, (n)ej, (a)lle]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"jna\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Filen er et filkatalog, gem i det?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Fil i dette filkatalog: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Filen eksisterer , (o)verskriv, (t)ilføj, (a)nnulér?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"ota\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Kan ikke gemme brev i POP-brevbakke.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Føj breve til %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s er ingen brevbakke!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Fil blokeret af gammel lås. Fjern låsen på  %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Kan ikke låse %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Udløbstid overskredet under forsøg på at bruge fcntl-lås!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Venter på fcntl-lås ... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Timeout overskredet ved forsøg på brug af flock-lås!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Venter på flock-lås ... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Kunne ikke låse %s.\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Kan ikke synkronisere brevbakke %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Flyt læste breve til %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Fjern %d slettet brev?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Fjern %d slettede breve?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Flytter læste breve til %s ...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Brevbakken er uændret.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d beholdt, %d flyttet, %d slettet.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d beholdt, %d slettet.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Tast '%s' for at skifte til/fra skrivebeskyttet tilstand\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Brug 'toggle-write' for at muliggøre skrivning!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Brevbakken er skrivebeskyttet. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Brevbakke opdateret.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Kan ikke skrive brev\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Heltals-overløb, kan ikke tildele hukommelse.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"Side op\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"Side ned\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Vis brevdel.\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Næste\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Bunden af brevet vises.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Toppen af brevet vises.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Hjælpeskærm vises nu.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Ikke mere citeret tekst.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Ikke mere uciteret tekst efter citeret tekst.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"brev med flere dele har ingen \\\"boundary\\\"-parameter!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Fejl i udtryk: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Tomt udtryk\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Ugyldig dag: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Ugyldig måned: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Ugyldig relativ dato: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"fejl i mønster ved: %s\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"manglende mønster: %s\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"parenteser matcher ikke: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: ugyldig modifikator af søgemønster\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: er ikke understøttet i denne tilstand\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"manglende parameter\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"parenteser matcher ikke: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"tomt mønster\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"fejl: ukendt op %d (rapportér denne fejl).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Klargør søgemønster ...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Udfører kommando på matchende breve ...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Ingen breve opfylder kriterierne.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Søger ...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Søgning er nået til bunden uden resultat\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Søgning nåede toppen uden resultat\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Søgning afbrudt.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Anfør PGP-løsen:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Har glemt PGP-løsen.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Fejl: kan ikke skabe en PGP-delproces! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Slut på PGP-uddata --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"Intern fejl. Indsend venligst en fejlrapport.\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fejl: Kunne ikke skabe en PGP-delproces! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Dekryptering fejlede\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Kan ikke åbne PGP-delproces!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Kan ikke starte PGP\"\n\n#: pgp.c:1730\n#, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (u)nderskriv, underskriv (s)om, %s-format, r(y)d eller (o)ppenc-tilstand \"\n\"fra? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)ntegreret\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"usgyoi\"\n\n#: pgp.c:1742\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (u)nderskriv, underskriv (s)om, r(y)d eller (o)ppenc-tilstand fra? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"usgyo\"\n\n#: pgp.c:1760\n#, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge, %s-format, r(y)d \"\n\"eller (o)ppenc-tilstand? \"\n\n#: pgp.c:1763\nmsgid \"esabfcoi\"\nmsgstr \"kusbgyoi\"\n\n#: pgp.c:1768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"PGP (k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge, r(y)d eller (o)ppenc-\"\n\"tilstand? \"\n\n#: pgp.c:1769\nmsgid \"esabfco\"\nmsgstr \"kusbgyo\"\n\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"PGP (k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge, %s-format, r(y)d \"\n\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"kusby\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP (k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge eller r(y)d? \"\n\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"kusby\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Henter PGP-nøgle ...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Alle matchende nøgler er sat ud af kraft, udløbet eller tilbagekaldt.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP-nøgler som matcher <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP-nøgler som matcher \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Kan ikke åbne /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP-nøgle %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Kommandoen TOP understøttes ikke af server.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Kan ikke skrive brevhoved til midlertidig fil!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Kommandoen UIDL er ikke understøttet af server.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d breve er gået tabt. Prøv at genåbne brevbakken.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s er en ugyldig POP-sti\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Henter liste over breve ...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Kan ikke skrive brev til midlertidig fil!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Giver breve slettemarkering ...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Kigger efter nye breve ...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"Ingen POP-server er defineret.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Ingen nye breve på POP-serveren.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Slet breve på server?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Indlæser nye breve (%d bytes) ...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Fejl ved skrivning til brevbakke!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d af %d breve læst]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Serveren afbrød forbindelsen!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Godkender (SASL) ...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"POP-tidsstempel er ugyldigt!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Godkender (APOP) ...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP-godkendelse slog fejl.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Kommandoen USER er ikke understøttet af server.\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Ugyldig POP-URL: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Kunne ikke efterlade breve på server.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Fejl under forbindelse til server: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Lukker forbindelsen til POP-server ...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Efterkontrollerer brevfortegnelser ...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Mistede forbindelsen. Opret ny forbindelse til POP-server?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Tilbageholdte breve\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Ingen tilbageholdte breve.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Ugyldig crypto-header\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Ugyldig S/MIME-header\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Dekrypterer brev ...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Dekryptering slog fejl.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Ny forespørgsel\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Opret alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Søg\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Venter på svar ...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Ingen forespørgsels-kommando defineret.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Forespørgsel\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Forespørgsel: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Forespørgsel: '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Overfør til program\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Udskriv\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Gemmer ...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Bilag gemt.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"ADVARSEL! Fil %s findes, overskriv?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Brevdel filtreret.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtrér gennem: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Overfør til kommando (pipe): \"\n\n#: recvattach.c:710\n#, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Jeg ved ikke hvordan man udskriver %s-brevdele!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Udskriv udvalgte brevdel(e)?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Udskriv brevdel?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Kan ikke dekryptere krypteret brev!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Brevdele\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Der er ingen underdele at vise!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Kan ikke slette bilag fra POP-server.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Sletning af brevdele fra krypterede breve er ikke understøttet.\"\n\n#: recvattach.c:1132\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"\"\n\"Sletning af brevdele fra underskrevne breve kan gøre underskriften ugyldig.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Sletning af brevdele fra udelte breve er ikke understøttet.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Du kan kun gensende message/rfc822-brevdele.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Fejl ved gensending af brev!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Fejl ved gensending af breve!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Kan ikke åbne midlertidig fil %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Videresend som bilag?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"Kan ikke afkode alle udvalgte brevdele. MIME-videresend de øvrige?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Videresend MIME-indkapslet?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Kan ikke oprette %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Kan ikke finde nogen udvalgte breve.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Ingen postlister fundet!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"Kan ikke afkode alle udvalgte brevdele. MIME-indkapsl de øvrige?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Tilføj\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Indsæt\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Slet\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Kan ikke hente mixmasters type2.liste!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Vælg en genposterkæde.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Fejl: %s kan ikke være sidste led i kæden.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Kæden må højst have %d led.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Genposterkæden er allerede tom.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Du har allerede valgt kædens første led.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Du har allerede valgt kædens sidste led.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Breve sendt med Mixmaster må ikke have Cc- eller Bcc-felter.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"Sæt hostname-variablen til en passende værdi ved brug af mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Fejl ved afsendelse af brev, afslutningskode fra barneproces: %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Fejl ved afsendelse af brev.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Ugyldig angivelse for type %s i \\\"%s\\\" linje %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Ingen mailcap-sti er defineret\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"ingen mailcap-angivelse for type %s\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: for få parametre\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: for mange parametre\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"Fejl: score: ugyldigt tal\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Intet emne, afbryd?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Intet emne, afbryder.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Svar til %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Opfølg til %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Ingen udvalgte breve er synlige!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Citér brevet i svar?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Inkluderer citeret brev ...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Kunne ikke citere alle ønskede breve!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Videresend som bilag?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Forbereder brev til videresendelse ...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Genindlæs tilbageholdt brev?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Redigér brev før videresendelse?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Annullér uændret brev?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Annullerede uændret brev.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Brev tilbageholdt.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Ingen modtagere er anført!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Ingen modtagere blev anført.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Intet emne, undlad at sende?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Intet emne er angivet.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Sender brev ...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Gem bilag i Fcc?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Kunne ikke sende brevet.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Brev sendt.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Sender i baggrunden.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Fandt ingen \\\"boundary\\\"-parameter! [rapportér denne fejl]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s eksisterer ikke mere!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s er ikke en almindelig fil.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Kunne ikke åbne %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"$sendmail skal sættes for at sende post.\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Fejl %d under afsendelse af brev (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Uddata fra leveringsprocessen\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Forkert IDN %s under forberedelse af af \\\"Resent-From\\\"-felt.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s... Afslutter.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Signal %s ... Afslutter.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Modtog signal %d ... Afslutter.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Anfør S/MIME-løsen:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Betroet   \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Kontrolleret  \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Ikke kontrolleret\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Udløbet   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Tilbagekaldt   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Ugyldigt   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Ukendt   \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME-certifikater som matcher \\\"%s\\\".\"\n\n#: smime.c:472\nmsgid \"ID is not trusted.\"\nmsgstr \"Id er ikke betroet.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Anfør nøgle-ID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Fandt ikke et (gyldigt) certifikat for %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Fejl: kan ikke skabe en OpenSSL-delproces!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"ingen certfil\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"ingen afsender-adresse\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Ingen uddata fra OpenSSL ...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"Kan ikke underskrive: Ingen nøgle er angivet. Brug \\\"underskriv som\\\".\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Kan ikke åbne OpenSSL-delproces!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Slut på OpenSSL-uddata --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Fejl: kan ikke skabe en OpenSSL-delproces! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Følgende data er S/MIME-krypteret --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Følgende data er S/MIME-underskrevet --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Slut på S/MIME-krypteret data --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Slut på S/MIME-underskrevne data --]\\n\"\n\n#: smime.c:2109\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (u).skriv, kryptér (m)ed, u.skriv (s)om, r(y)d eller (o)ppenc-\"\n\"tilstand fra? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"umsgyo\"\n\n#: smime.c:2123\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (k)ryptér, (u).skriv, kryptér (m)ed, u.skriv (s)om, (b)egge, r(y)d \"\n\"eller (o)ppenc-tilstand? \"\n\n#: smime.c:2124\nmsgid \"eswabfco\"\nmsgstr \"kumsbgyo\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (k)ryptér, (u).skriv, kryptér (m)ed, u.skriv (s)om, (b)egge, r(y)d? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"kumsbgy\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Vælg algoritme-familie: 1: DES, 2: RC2, 3: AES, eller r(y)d? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"dray\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SMTP-session fejlede: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SMTP-session fejlede: kunne ikke åbne %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"Afsenderadresse ikke anført\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"SMTP-session fejlede: læsningsfejl\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"SMTP-session fejlede: skrivningsfejl\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Ugyldigt svar fra server\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Ugyldig SMTP-URL: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP-server understøtter ikke godkendelse\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP-godkendelse kræver SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"%s-godkendelse fejlede, prøver næste metode\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL-godkendelse fejlede\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Sorterer brevbakke ...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Kunne ikke finde sorteringsfunktion! [rapportér denne fejl]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(ingen brevbakke)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Forrige brev i tråden er ikke synligt i afgrænset oversigt.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Forrige brev i tråden er ikke tilgængeligt.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"tom funktion\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"slut på betinget udførelse (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"fremtving visning af denne del ved brug af mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"vis denne del som tekst\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Slå visning af underdele fra eller til\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"gå til bunden af siden\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"videresend et brev til en anden modtager\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"vælg en ny fil i dette filkatalog\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"vis fil\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"vis navnet på den aktuelt valgte fil\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"abonnér på aktuelle brevbakke (kun IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"afmeld abonnement på aktuelle brevbakke (kun IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"skift mellem visning af alle/abonnerede postbakker (kun IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"oplist brevbakker med nye breve\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"skift filkatalog\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"undersøg brevbakker for nye breve\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"vedlæg fil(er) til dette brev\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"vedlæg breve til dette brev\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"ret i Bcc-listen\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"ret i Cc-listen\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"ret brevdelens beskrivelse\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"ret brevdelens indkodning\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"kopiér dette brev til fil\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"redigér i den fil der skal vedlægges\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"ret afsender (from:)\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"redigér brevet med brevhoved\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"redigér brev\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"redigér brevdel efter mailcap-regel\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"ret Reply-To-feltet\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"ret dette brevs emne (Subject:)\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"ret listen over modtagere (To:)\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"opret en ny brevbakke (kun IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"ret brevdelens \\\"content-type\\\"\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"lav en midlertidig kopi af en brevdel\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"stavekontrollér brevet\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"lav en ny brevdel efter mailcap-regel\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"slå omkodning af denne brevdel til/fra\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"gem dette brev til senere forsendelse\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"omdøb/flyt en vedlagt fil\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"send brevet\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"skift status mellem integreret og bilagt\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"vælg om filen skal slettes efter afsendelse\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"opdatér data om brevdelens indkodning\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"læg brevet i en brevbakke\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"kopiér brev til en fil/brevbakke\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"opret et alias fra afsenderadresse\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"flyt til nederste listning\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"flyt til midterste listning\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"flyt til øverste listning\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"lav en afkodet kopi (text/plain)\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"lav en afkodet kopi (text/plain) og slet\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"slet den aktuelle listning\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"slet den aktuelle brevbakke (kun IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"slet alle breve i deltråd\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"slet alle breve i tråd\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"vis fuld afsenderadresse\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"fremvis brev med helt eller beskåret brevhoved\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"fremvis et brev\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"redigér det \\\"rå\\\" brev\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"slet tegnet foran markøren\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"flyt markøren et tegn til venstre\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"flyt markøren til begyndelse af ord\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"gå til begyndelsen af linje\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"gennemløb indbakker\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"færdiggør filnavn eller alias\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"færdiggør adresse ved forespørgsel\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"slet tegnet under markøren\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"gå til linjeslut\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"flyt markøren et tegn til højre\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"flyt markøren til slutning af ord\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"gå ned igennem historik-listen\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"gå op igennem historik-listen\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"slet alle tegn til linjeafslutning\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"slet resten af ord fra markørens position\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"slet linje\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"slet ord foran markør\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"citér den næste tast\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"udskift tegn under markøren med forrige\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"skriv ord med stort begyndelsesbogstav\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"skriv ord med små bogstaver\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"skriv ord med store bogstaver\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"skriv en muttrc-kommando\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"skriv en filmaske\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"forlad denne menu\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtrér brevdel gennem en skalkommando\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"gå til den første listning\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"markér brev som vigtig/fjern markering\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"videresend et brev med kommentarer\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"vælg den aktuelle listning\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"svar til alle modtagere\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"gå ½ side ned\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"gå ½ side op\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"dette skærmbillede\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"gå til et indeksnummer\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"gå til den sidste listning\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"svar til en angivet postliste\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"udfør makro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"skriv et nyt brev\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"del tråden i to\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"åbn en anden brevbakke\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"åbn en anden brevbakke som skrivebeskyttet\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"fjern statusindikator fra brev\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"slet breve efter mønster\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"hent post fra IMAP-server nu\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"log ud fra alle IMAP-servere\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"hent post fra POP-server\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"gå til det første brev\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"gå til det sidste brev\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"vis kun breve, der matcher et mønster\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"sammenkæd markeret brev med det aktuelle\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"åbn næste brevbakke med nye breve\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"hop til det næste nye brev\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"hop til næste nye eller ulæste brev\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"hop til næste deltråd\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"hop til næste tråd\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"hop til næste ikke-slettede brev\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"hop til næste ulæste brev\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"hop til forrige brev i tråden\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"hop til forrige tråd\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"hop til forrige deltråd\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"hop til forrige ikke-slettede brev\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"hop til forrige nye brev\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"hop til forrige nye eller ulæste brev\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"hop til forrige ulæste brev\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"markér den aktuelle tråd som læst\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"markér den aktuelle deltråd som læst\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"sæt en statusindikator på et brev\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"gem ændringer i brevbakke\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"udvælg breve efter et mønster\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"fjern slet-markering efter mønster\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"fjern valg efter mønster\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"gå til midten af siden\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"gå til næste listning\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"flyt en linje ned\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"gå til næste side\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"gå til bunden af brevet\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"vælg om citeret tekst skal vises\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"gå forbi citeret tekst\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"gå til toppen af brevet\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"overfør brev/brevdel til en skalkommando\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"gå til forrige listning\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"flyt en linje op\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"gå til den forrige side\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"udskriv den aktuelle listning\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"send adresse-forespørgsel til hjælpeprogram\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"føj nye resultater af forespørgsel til de aktuelle resultater\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"gem ændringer i brevbakke og afslut\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"genindlæs et tilbageholdt brev\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"ryd og opfrisk skærmen\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{intern}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"omdøb den aktuelle brevbakke (kun IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"svar på et brev\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"brug det aktuelle brev som forlæg for et nyt\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"gem brev/brevdel i en brevbakke/fil\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"søg efter et regulært udtryk\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"søg baglæns efter et regulært udtryk\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"søg efter næste resultat\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"søg efter næste resultat i modsat retning\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"vælg om fundne søgningsmønstre skal farves\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"kør en kommando i en under-skal\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"sortér breve\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"sortér breve i omvendt rækkefølge\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"udvælg den aktuelle listning\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"anvend næste funktion på de udvalgte breve\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"anvend næste funktion KUN på udvalgte breve\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"markér den aktuelle deltråd\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"markér den aktuelle tråd\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"sæt/fjern et brevs \\\"ny\\\"-indikator\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"slå genskrivning af brevbakke til/fra\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"skift mellem visning af brevbakker eller alle filer\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"gå til toppen af siden\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"fjern slet-markering fra den aktuelle listning\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"fjern slet-markering fra alle breve i tråd\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"fjern slet-markering fra alle breve i deltråd\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"vis Mutts versionsnummer og dato\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"vis brevdel, om nødvendigt ved brug af mailcap\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"vis MIME-dele\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"vis tastekoden for et tastetryk\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"vis det aktive afgrænsningsmønster\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"sammen-/udfold den aktuelle tråd\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"sammen-/udfold alle tråde\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"vedlæg en offentlig PGP-nøgle (public key)\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"vis tilvalg for PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"send en offentlig PGP-nøgle\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"kontrollér en offentlig PGP-nøgle\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"vis nøglens bruger-id\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"søg efter klassisk pgp\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Brug den opbyggede kæde\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Føj en genposter til kæden\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Indsæt en genposter i kæden\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Slet en genposter fra kæden\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Vælg kædens forrige led\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Vælg kædens næste led\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"send brevet gennem en mixmaster-genposterkæde\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"opret dekrypteret kopi og slet\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"opret dekrypteret kopi\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"fjern løsen(er) fra hukommelse\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"udtræk understøttede offentlige nøgler\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"vis tilvalg for S/MIME\"\n"
  },
  {
    "path": "po/de.po",
    "content": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 1.5.20\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2008-05-18 10:28+0200\\n\"\n\"Last-Translator: Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Language-Team: German <mutt-po@mutt.org>\\n\"\n\"Language: de\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=iso-8859-1\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Username bei %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Passwort fr %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Verlassen\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Lsch.\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Behalten\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Auswhlen\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Hilfe\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Keine Eintrge im Adressbuch!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Adressbuch\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Kurzname fr Adressbuch: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"\"\n\"Sie haben bereits einen Adressbucheintrag mit diesem Kurznamen definiert.\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Warnung: Dieser Alias-Name knnte Probleme bereiten. Korrigieren?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adresse: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Fehler: '%s' ist eine fehlerhafte IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Name: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Eintragen?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Speichern in Datei: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Fehler beim Lesen der alias Datei\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Adresse eingetragen.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Fehler beim Suchen in alias Datei\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Namensschema kann nicht erfllt werden, fortfahren?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"\\\"compose\\\"-Eintrag in der Mailcap-Datei erfordert %%s.\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Fehler beim Ausfhren von \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Kann Datei nicht ffnen, um Nachrichtenkopf zu untersuchen.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Kann Datei nicht ffnen, um Nachrichtenkopf zu entfernen.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Fehler beim Umbenennen der Datei.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"\"\n\"Kein \\\"compose\\\"-Eintrag fr %s in der Mailcap-Datei, erzeuge leere Datei.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"\\\"edit\\\"-Eintrag in Mailcap erfordert %%s.\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Kein \\\"edit\\\"-Eintrag fr %s in Mailcap.\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Es gibt keinen passenden Mailcap-Eintrag. Anzeige als Text.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"Undefinierter MIME-Typ. Kann Anhang nicht anzeigen.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Kann Filter nicht erzeugen.\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Kommando: %-20.20s Beschreibung: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Kommando: %-30.30s Anhang: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Anhang: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---Anhang: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Kann Filter nicht erzeugen\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Schreibfehler!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Ich wei nicht, wie man dies druckt!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Verzeichnis\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Maske\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s ist kein Verzeichnis.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Mailbox-Dateien [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Abonniert [%s], Dateimaske: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Verzeichnis [%s], Dateimaske: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Verzeichnisse knnen nicht angehngt werden!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Es gibt keine zur Maske passenden Dateien\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Es knnen nur IMAP Mailboxen erzeugt werden\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Es knnen nur IMAP Mailboxen umbenannt werden\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Es knnen nur IMAP Mailboxen gelscht werden\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Kann Wurzel-Mailbox nicht lschen\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Mailbox \\\"%s\\\" wirklich lschen?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Mailbox gelscht.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Mailbox nicht gelscht.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Verzeichnis wechseln nach: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Fehler beim Einlesen des Verzeichnisses.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Dateimaske: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"Sortiere umgekehrt nach (D)atum, (a)lphabetisch, (G)re, oder (n)icht? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Sortiere nach (D)atum, (a)lphabetisch, (G)re oder (n)icht?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dagn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Neuer Dateiname: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Verzeichnisse knnen nicht angezeigt werden.\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Fehler bei der Anzeige einer Datei\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Neue Nachrichten in \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: color wird nicht vom Terminal untersttzt.\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: Farbe unbekannt.\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: Objekt unbekannt.\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: Kommando ist nur fr Index-/Body-/Header-Objekt gltig.\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: Zu wenige Parameter.\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Fehlende Parameter.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: Zu wenige Parameter.\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: Zu wenige Parameter.\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: Attribut unbekannt.\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"Zu wenige Parameter.\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"Zu viele Parameter.\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"Standard-Farben werden nicht untersttzt.\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"PGP-Signatur berprfen?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Konnte keine Temporrdatei erzeugen!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Kann Filter zum Anzeigen nicht erzeugen.\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Konnte Nachricht nicht kopieren.\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME Unterschrift erfolgreich berprft.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"S/MIME Zertifikat-Inhaber stimmt nicht mit Absender berein.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Warnung: Ein Teil dieser Nachricht wurde nicht signiert.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME Unterschrift konnte NICHT berprft werden.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP Unterschrift erfolgreich berprft.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP Unterschrift konnte NICHT berprft werden.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Kommando: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Warnung: Nachricht enthlt keine From: Kopfzeile\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Nachricht weiterleiten an: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Markierte Nachrichten weiterleiten an: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Unverstndliche Adresse!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Ungltige IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Nachricht an %s weiterleiten\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Nachrichten an %s weiterleiten\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Nachricht nicht weitergeleitet.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Nachrichten nicht weitergeleitet.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Nachricht weitergeleitet.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Nachrichten weitergeleitet.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Kann Filterprozess nicht erzeugen\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"In Kommando einspeisen: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Kein Druck-Kommando definiert.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Nachricht drucken?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Ausgewhlte Nachrichten drucken?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Nachricht gedruckt\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Nachrichten gedruckt\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Nachricht konnte nicht gedruckt werden\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Nachrichten konnten nicht gedruckt werden\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Umgekehrt (D)at/(A)bs/Ei(n)g/(B)etr/(E)mpf/(F)aden/(u)nsrt/(G)re/Be(w)/\"\n\"S(p)am?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Sortieren (D)at/(A)bs/Ei(n)g/(B)etr/(E)mpf/(F)aden/(u)nsrt/(G)re/Be(w)ert/\"\n\"S(p)am?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"danbefugwp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Shell-Kommando: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Speichere%s dekodiert in Mailbox\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Kopiere%s dekodiert in Mailbox\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Speichere%s entschlsselt in Mailbox\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Kopiere%s entschlsselt in Mailbox\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Speichere%s in Mailbox\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Kopiere%s in Mailbox\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" ausgewhlte\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Kopiere nach %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Konvertiere beim Senden nach %s?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type in %s abgendert.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Zeichensatz in %s abgendert; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"nicht konvertiert\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"konvertiert\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Es sind keine Anhnge vorhanden.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Absenden\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Verwerfen\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Datei anhngen\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Beschr.\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Markieren wird nicht untersttzt.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Signieren, Verschlsseln\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Verschlsseln\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Signieren\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \" (inline)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\n#, fuzzy\nmsgid \" (S/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" signiere als: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<Voreinstellung>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Verschlsseln mit: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] existiert nicht mehr!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] wurde verndert. Kodierung neu bestimmen?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Anhnge\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Warnung: '%s' ist eine ungltige IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Der einzige Nachrichtenteil kann nicht gelscht werden.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Ungltige IDN in \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Hnge ausgewhlte Dateien an...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Kann %s nicht anhngen!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Mailbox, aus der angehngt werden soll\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Kann Mailbox nicht fr exklusiven Zugriff sperren!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Keine Nachrichten in diesem Ordner.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Bitte markieren Sie die Nachrichten, die Sie anhngen wollen!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Kann nicht anhngen!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"ndern der Kodierung betrifft nur Textanhnge.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Der aktuelle Anhang wird nicht konvertiert werden.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Der aktuelle Anhang wird konvertiert werden.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Ungltige Kodierung.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Soll eine Kopie dieser Nachricht gespeichert werden?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Umbenennen in: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Kann Verzeichniseintrag fr Datei %s nicht lesen: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Neue Datei: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type ist von der Form Basis/Untertyp.\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Unbekannter Content-Type %s.\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Kann Datei %s nicht anlegen.\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Anhang kann nicht erzeugt werden.\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Nachricht zurckstellen?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Schreibe Nachricht in Mailbox\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Schreibe Nachricht nach %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Nachricht geschrieben.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME bereits ausgewhlt. Lschen und weiter?\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP bereits ausgewhlt. Lschen und weiter?\"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"Fehler beim Erzeugen des gpgme Kontexts: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"Fehler beim Aktivieren des CMS Protokolls : %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"Fehler beim Erzeugen des gpgme Datenobjekts: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"Fehler beim Anlegen des Datenobjekts: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"Fehler beim Zurcklegen des Datenobjekts: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"Fehler beim Lesen des Datenobjekts: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Kann temporre Datei nicht erzeugen\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"Fehler beim Hinzufgen des Empfngers `%s': %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"Geheimer Schlssel `%s' nicht gefunden: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"mehrdeutige Angabe des geheimen Schlssels `%s'\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"Fehler beim Setzen des geheimen Schlssels `%s': %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"Fehler beim Setzen der Darstellung der PKA Unterschrift: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"Fehler beim Verschlsseln der Daten: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"Fehler beim Signiren der Daten: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Warnung: Einer der Schlssel wurde zurckgezogen\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Warnung: Der Signatur-Schlssel ist verfallen am: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Warnung: Mindestens ein Zertifikat ist abgelaufen\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Warnung: Die Signatur ist verfallen am: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Kann wegen fehlenden Schlssel oder Zertifikats nicht geprft werden\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"Die CRL ist nicht verfgbar.\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"Verfgbare CRL ist zu alt\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Eine Policy-Anforderung wurde nicht erfllt\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Ein Systemfehler ist aufgetreten\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"WARNUNG: PKA Eintrag entspricht nicht Adresse des Unterzeichners: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"Die PKA geprfte Adresse des Unterzeichners lautet: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Fingerabdruck: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"WARNUNG: Wir haben KEINEN Hinweis, ob der Schlssel zur oben genannten \"\n\"Person gehrt\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"WARNUNG: Der Schlssel gehrt NICHT zur oben genannten Person\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"WARNUNG: Es ist NICHT sicher, dass der Schlssel zur oben genannten Person \"\n\"gehrt\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"erstellt: \"\n\n#: crypt-gpgme.c:1462\n#, fuzzy, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Fehler beim Auslesen der Schlsselinformation: \"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"Gltige Unterschrift von:\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"*Ungltige* Unterschrift von:\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Problematische Unterschrift von:\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"              luft ab: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Anfang der Unterschrift --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Fehler: berprfung fehlgeschlagen: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Anfang Darstellung (Unterschrift von: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Ende Darstellung ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ende der Signatur --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fehler: Entschlsselung fehlgeschlagen: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Fehler beim Auslesen der Schlsselinformation!\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Fehler: Entschlsselung/Prfung fehlgeschlagen: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Fehler: Kopieren der Daten fehlgeschlagen\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- END PGP MESSAGE --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- END PGP SIGNED MESSAGE --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fehler: Konnte Anfang der PGP-Nachricht nicht finden! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Fehler: Konnte Temporrdatei nicht anlegen! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Die folgenden Daten sind PGP/MIME-signiert und -verschlsselt --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Die folgenden Daten sind PGP/MIME-verschlsselt --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Ende der PGP/MIME-signierten und -verschlsselten Daten --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Ende der PGP/MIME-verschlsselten Daten --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP Nachricht erfolgreich entschlsselt.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Konnte PGP Nachricht nicht entschlsseln\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Die folgenden Daten sind S/MIME signiert --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Die folgenden Daten sind S/MIME-verschlsselt --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Ende der S/MIME signierten Daten --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Ende der S/MIME-verschlsselten Daten --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Kann Benutzer-ID nicht darstellen (unbekannte Kodierung)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Kann Benutzer-ID nicht darstellen (unzulssige Kodierung)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Kann Benutzer-ID nicht darstellen (unzulssiger DN)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" aka ......: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Name ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Ungltig]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Gltig ab: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Gltig bis: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Schlssel Typ ..: %s, %lu Bit %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Schlssel Gebrauch .: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"Verschlsselung\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"Signieren\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"Zertifikat\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Seriennr. .: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Herausgegeben von .: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Unter-Schlssel: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Zurckgez.]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Abgelaufen]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Deaktiviert]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Sammle Informtionen...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Fehler bei der Suche nach dem Schlssel des Herausgebers: %s\\n\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Fehler: Zertifikatskette zu lang - Stoppe hier\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Schlssel ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new fehlgeschlagen: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start fehlgeschlagen: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next fehlgeschlagen: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Alles passenden Schlssel sind abgelaufen/zurckgezogen.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Ende  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Auswahl  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Schlssel prfen  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Passende PGP und S/MIME Schlssel\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"Passende PGP Schlssel\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"Passende S/MIME Schlssel\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"Passende Schlssel\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"\"\n\"Dieser Schlssel ist nicht verwendbar: veraltet/deaktiviert/zurckgezogen.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"Diese ID ist veraltet/deaktiviert/zurckgezogen.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"Die Gltigkeit dieser ID ist undefiniert.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"Diese ID ist ungltig.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Diese Gltigkeit dieser ID ist begrenzt.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Wollen Sie den Schlssel wirklich benutzen?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Suche nach Schlsseln, die auf \\\"%s\\\" passen...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Benutze KeyID = \\\"%s\\\" fr %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"KeyID fr %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Bitte Schlsselidentifikation eingeben: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Fehler beim Auslesen der Schlsselinformation!\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP Schlssel %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (v)erschl., (s)ign., sign. (a)ls, (b)eides, (p)gp, (u)nverschl.?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, s/(m)ime, (u)nverschl.?\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME (v)erschl., (s)ign., sign. (a)ls, (b)eides, (p)gp, (u)nverschl.?\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"vsabpku\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, s/(m)ime, (u)nverschl.?\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"vsabmku\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (v)erschl., (s)ign., sign. (a)ls, (b)eides, (p)gp, (u)nverschl.?\"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"vsabpku\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, s/(m)ime, (u)nverschl.?\"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"vsabmku\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Signiere als: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Prfung des Absenders fehlgeschlagen\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Kann Absender nicht ermitteln\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (aktuelle Zeit: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s Ausgabe folgt%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Mantra(s) vergessen.\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Nachricht kann nicht inline verschickt werden. PGP/MIME verwenden?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Rufe PGP auf...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Nachricht kann nicht inline verschickt werden. PGP/MIME verwenden?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Nachricht nicht verschickt.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\"S/MIME Nachrichten ohne Hinweis auf den Inhalt werden nicht untersttzt.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Versuche PGP Keys zu extrahieren...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Versuche S/MIME Zertifikate zu extrahieren...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fehler: Unbekanntes multipart/signed Protokoll %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fehler: Inkonsistente multipart/signed Struktur! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Warnung: %s/%s Unterschriften knnen nicht geprft werden. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Die folgenden Daten sind signiert --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Warnung: Kann keine Unterschriften finden. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Ende der signierten Daten --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\"\\\"crypt_use_gpgme\\\" gesetzt, obwohl nicht mit GPGME Support kompiliert.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Rufe S/MIME auf...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"ja\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"nein\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Mutt verlassen?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"unbekannter Fehler\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Bitte drcken Sie eine Taste...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" (fr eine Liste '?' eingeben): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Keine Mailbox ist geffnet.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Es sind keine Nachrichten vorhanden.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Mailbox kann nur gelesen, nicht geschrieben werden.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funktion steht beim Anhngen von Nachrichten nicht zur Verfgung.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Keine sichtbaren Nachrichten.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, fuzzy, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"Operation \\\"%s\\\" gem ACL nicht zulssig\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Kann Mailbox im Nur-Lese-Modus nicht schreibbar machen!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"nderungen an dieser Mailbox werden beim Verlassen geschrieben.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"nderungen an dieser Mailbox werden nicht geschrieben.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Ende\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Speichern\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Senden\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Antw.\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Antw.alle\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Mailbox wurde verndert. Markierungen knnen veraltet sein.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Neue Nachrichten in dieser Mailbox.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Mailbox wurde von auen verndert.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Keine markierten Nachrichten.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Nichts zu erledigen.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Springe zu Nachricht: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Argument muss eine Nachrichtennummer sein.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Diese Nachricht ist nicht sichtbar.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Ungltige Nachrichtennummer.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Lschmarkierung von Nachricht(en) entfernen\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Lsche Nachrichten nach Muster: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Zur Zeit ist kein Muster aktiv.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Begrenze: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Begrenze auf Nachrichten nach Muster: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Um alle Nachrichten zu sehen, begrenze auf \\\"all\\\".\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Mutt beenden?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Markiere Nachrichten nach Muster: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Lschmarkierung von Nachricht(en) entfernen\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Entferne Lschmarkierung nach Muster: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Entferne Markierung nach Muster: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"ffne Mailbox im nur-Lesen-Modus\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"ffne Mailbox\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Keine Mailbox mit neuen Nachrichten\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s ist keine Mailbox.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Mutt verlassen, ohne nderungen zu speichern?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Darstellung von Diskussionsfden ist nicht eingeschaltet.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Diskussionsfaden unterbrochen\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"Nachricht ist nicht Teil eines Diskussionsfadens\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\n#, fuzzy\nmsgid \"Cannot link threads\"\nmsgstr \"Diskussionsfden verlinken\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Keine Message-ID verfgbar, um Diskussionsfaden aufzubauen\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Bitte erst eine Nachricht zur Verlinkung markieren\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Diskussionfden verbunden\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Kein Diskussionsfaden verbunden\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Sie sind bereits auf der letzten Nachricht.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Keine ungelschten Nachrichten.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Sie sind bereits auf der ersten Nachricht.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Suche von vorne begonnen.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Suche von hinten begonnen.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Bezugsnachricht ist in dieser begrenzten Sicht nicht sichtbar.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Keine neuen Nachrichten\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Bezugsnachricht ist in dieser begrenzten Sicht nicht sichtbar.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Keine ungelesenen Nachrichten\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"Indikator setzen\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\n#, fuzzy\nmsgid \"Cannot toggle new\"\nmsgstr \"Umschalten zwischen neu/nicht neu\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Keine weiteren Diskussionsfden.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Sie haben bereits den ersten Diskussionsfaden ausgewhlt.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Diskussionsfaden enthlt ungelesene Nachrichten.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"Lschmarkierung entfernen\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Kann Nachricht nicht schreiben\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"Nachricht(en) als gelesen markieren\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"Lschmarkierung entfernen\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tFge Zeile hinzu, die mit einer Tilde beginnt\\n\"\n\"~b Adressen\\tFge Adressen zum Bcc-Feld hinzu\\n\"\n\"~c Adressen\\tFge Adressen zum Cc-Feld hinzu\\n\"\n\"~f Nachrichten\\tNachrichten einfgen\\n\"\n\"~F Nachrichten\\tWie ~f, mit Nachrichtenkopf\\n\"\n\"~h\\t\\tEditiere Nachrichtenkopf\\n\"\n\"~m Nachrichten\\tNachrichten zitieren\\n\"\n\"~M Nachrichten\\tWie ~t, mit Nachrichtenkopf\\n\"\n\"~p\\t\\tNachricht ausdrucken\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tDatei speichern und Editor verlassen\\n\"\n\"~r Datei\\tDatei in Editor einlesen\\n\"\n\"~t Adressen\\tFge Adressen zum To-Feld hinzu\\n\"\n\"~u\\t\\tEditiere die letzte Zeile erneut\\n\"\n\"~v\\t\\tEditiere Nachricht mit Editor $visual\\n\"\n\"~w Datei\\tSchreibe Nachricht in Datei\\n\"\n\"~x\\t\\tVerwerfe nderungen und verlasse Editor\\n\"\n\"~?\\t\\tDiese Nachricht\\n\"\n\".\\t\\tin einer Zeile alleine beendet die Eingabe\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: Ungltige Nachrichtennummer.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"\"\n\"(Beenden Sie die Nachricht mit einen Punkt ('.') allein in einer Zeile)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Keine Mailbox.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Nachricht enthlt:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(weiter)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"Dateiname fehlt.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Keine Zeilen in der Nachricht.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Ungltige IDN in %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: Unbekanntes Editor-Kommando (~? fr Hilfestellung)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"Konnte temporre Mailbox nicht erzeugen: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"Konnte nicht in temporre Mailbox schreiben: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"Konnte temporre Mailbox nicht sutzen: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Nachricht ist leer!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Nachricht nicht verndert!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Kann Nachrichten-Datei nicht ffnen: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Kann an Mailbox nicht anhngen: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Fehler. Speichere temporre Datei als %s ab.\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Setze Indikator\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Entferne Indikator\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Fehler: Konnte keinen der multipart/alternative-Teile anzeigen! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Anhang #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Typ: %s/%s, Kodierung: %s, Gre: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Warnung: Mind. ein Teil dieser Nachricht konnte nicht angezeigt werden\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Automatische Anzeige mittels %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Automatische Anzeige mittels: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Kann %s nicht ausfhren. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Fehlerausgabe von %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Fehler: message/external-body hat keinen access-type Parameter --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Dieser %s/%s-Anhang \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(Gre %s Byte) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"wurde gelscht --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- am %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- Name: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Dieser %s/%s-Anhang ist nicht in der Nachricht enthalten, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- und die zugehrige externe Quelle --]\\n\"\n\"[-- existiert nicht mehr. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- und die angegebene Zugangsmethode %s wird nicht untersttzt --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Konnte temporre Datei nicht ffnen!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Fehler: multipart/signed ohne \\\"protocol\\\"-Parameter.\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Dies ist ein Anhang \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s wird nicht untersttzt \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(benutzen Sie '%s', um diesen Teil anzuzeigen)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(Tastaturbindung fr 'view-attachments' bentigt!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: Kann Datei nicht anhngen.\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ERROR: Bitte melden sie diesen Fehler\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<unbekannt>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Allgemeine Tastenbelegungen:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Funktionen ohne Bindung an Taste:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Hilfe fr %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Falsches Format der Datei frherer Eingaben (Zeile %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Innerhalb eines hook kann kein unhook * aufgerufen werden.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: Unbekannter hook-Typ: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: Kann kein %s innerhalb von %s lschen.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Keine Authentifizierung verfgbar\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Authentifiziere (anonymous)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonyme Authentifizierung fehlgeschlagen.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Authentifiziere (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 Authentifizierung fehlgeschlagen.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Authentifiziere (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI Authentifizierung fehlgeschlagen.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN ist auf diesem Server abgeschaltet.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Anmeldung...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Anmeldung gescheitert...\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Authentifiziere (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL Authentifizierung fehlgeschlagen.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s ist ein ungltiger IMAP Pfad\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Hole Liste der Ordner...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Ordner existiert nicht\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Erzeuge Mailbox: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Mailbox muss einen Namen haben.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Mailbox erzeugt.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Benenne Mailbox %s um in: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Umbenennung fehlgeschlagen: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Mailbox umbenannt.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Mailbox geschlossen\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"CREATE fehlgeschlagen: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Beende Verbindung zu %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Dieser IMAP-Server ist veraltet und wird nicht von Mutt untersttzt.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Sichere Verbindung mittels TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Konnte keine TLS-Verbindung realisieren\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Verschlsselte Verbindung nicht verfgbar\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Whle %s aus...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Fehler beim ffnen der Mailbox\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"%s erstellen?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Lschen fehlgeschlagen\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Markiere %d Nachrichten zum Lschen...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Speichere vernderte Nachrichten... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Fehler beim Speichern der Markierungen. Trotzdem Schlieen?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Fehler beim Speichern der Markierungen\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Lsche Nachrichten auf dem Server...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE fehlgeschlagen\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Suche im Nachrichtenkopf ohne Angabe des Feldes: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Unzulssiger Mailbox Name\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Abonniere %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Beende Abonnement von %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Abonniere %s\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Abonnement von %s beendet\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"\"\n\"Kann von dieser Version des IMAP-Servers keine Nachrichtenkpfe erhalten.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Konnte Temporrdatei %s nicht erzeugen\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Werte Cache aus...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Hole Nachrichten-Kpfe...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Hole Nachricht...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"\"\n\"Der Nachrichtenindex ist fehlerhaft. Versuche die Mailbox neu zu ffnen.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Lade Nachricht auf den Server...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Kopiere %d Nachrichten nach %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Kopiere Nachricht %d nach %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Weiter?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Funktion ist in diesem Men nicht verfgbar.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Fehlerhafte regexp: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Nicht gengend Unterausdrcke fr Spam-Vorlage\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"Spam: kein passendes Muster\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: kein passendes Muster\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%sgroup: -rx oder -addr fehlt.\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%sgroup: Warnung: Ungltige IDN '%s'.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"attachments: keine disposition\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"attachments: ungltige disposition\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"unattachments: keine disposition\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"unattachments: ungltige disposition\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: Keine Adresse\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Warnung: Ungltige IDN '%s' in Alias '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"my_hdr: Ungltiges Kopf-Feld\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: Unbekannte Sortiermethode\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): Fehler in regulrem Ausdruck: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: Unbekannte Variable.\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"Prfix ist bei \\\"reset\\\" nicht zulssig.\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"Wertzuweisung ist bei \\\"reset\\\" nicht zulssig.\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Benutzung: set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s ist gesetzt.\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s ist nicht gesetzt.\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Ungltiger Wert fr Variable %s: \\\"%s\\\"\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: Ungltiger Mailbox-Typ\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: ungltiger Wert (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"Format-Fehler\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"Zahlenberlauf\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: Ungltiger Wert\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: Unbekannter Typ.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: Unbekannter Typ\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Fehler in %s, Zeile %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: Fehler in %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: Lesevorgang abgebrochen, zu viele Fehler in %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: Fehler bei %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: Zu viele Argumente\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: Unbekanntes Kommando\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Fehler in Kommandozeile: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"Kann Home-Verzeichnis nicht bestimmen.\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"Kann Nutzernamen nicht bestimmen.\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"Kann Nutzernamen nicht bestimmen.\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: Kein Gruppen Name\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"Zu wenige Parameter\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Makro-Schleife!\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Taste ist nicht belegt.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Taste ist nicht belegt. Drcken Sie '%s' fr Hilfe.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: Zu viele Argumente\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"Men \\\"%s\\\" existiert nicht\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"Leere Tastenfolge\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: Zu viele Argumente\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: Funktion unbekannt\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: Leere Tastenfolge\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: Zu viele Parameter\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: Keine Parameter\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: Funktion unbekannt\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Tasten drcken (^G zum Abbrechen): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Char = %s, Oktal = %o, Dezimal = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Integer berlauf -- Kann keinen Speicher belegen!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Kein Speicher verfgbar!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Um die Entwickler zu kontaktieren, schicken Sie bitte\\n\"\n\"eine Nachricht (in englisch) an <mutt-dev@mutt.org>.\\n\"\n\"Um einen Bug zu melden, besuchen Sie bitte http://bugs.mutt.org/.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2009 Michael R. Elkins und andere.\\n\"\n\"Mutt bernimmt KEINERLEI GEWHRLEISTUNG. Starten Sie `mutt -vv', um\\n\"\n\"weitere Details darber zu erfahren. Mutt ist freie Software. \\n\"\n\"Sie knnen es unter bestimmten Bedingungen weitergeben; starten Sie\\n\"\n\"`mutt -vv' fr weitere Details.\\n\"\n\n#: main.c:75\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2007 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2008 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2009 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"\\n\"\n\"Unzhlige hier nicht einzeln aufgefhrte Helfer haben Code,\\n\"\n\"Fehlerkorrekturen und hilfreiche Hinweise beigesteuert.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    Dieses Programm ist freie Software. Sie drfen es weitergeben\\n\"\n\"    und/oder verndern, gem der Bestimmungen der GNU General\\n\"\n\"    Public License wie von der Free Software Foundation\\n\"\n\"    verffentlicht; entweder nach Version 2 dieser Lizenz\\n\"\n\"    oder, so wie Sie es wnschen, jeder spteren Version.\\n\"\n\"\\n\"\n\"    Die Verffentlichung dieses Programms erfolgt in der Hoffnung, dass\\n\"\n\"    es von Nutzen sein wird, aber OHNE JEGLICHE GEWHRLEISTUNG,\\n\"\n\"    nicht einmal die Garantie der MARKTREIFE oder EIGNUNG FR EINEN\\n\"\n\"    BESTIMMTEN ZWECK. Entnehmen Sie alle weiteren Details der\\n\"\n\"    GNU General Public License.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    Sie sollten eine Kopie der GNU General Public License zusammen mit\\n\"\n\"    diesem Programm erhalten haben; falls nicht, schreiben sie an die\\n\"\n\"    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\\n\"\n\"    Boston, MA 02110-1301, USA.\\n\"\n\n#: main.c:116\n#, fuzzy\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-x] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...]] [--] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...]] [--] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\n\n#: main.c:125\n#, fuzzy\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"Optionen:\\n\"\n\"  -A <alias>\\tExpandiere den angegebenen Alias\\n\"\n\"  -a <file>\\tHngt Datei an die Message an\\n\"\n\"  -b <address>\\tEmpfnger einer unsichtbaren Kopie (Bcc:)\\n\"\n\"  -c <address>\\tEmpfnger einer Kopie (Cc:)\\n\"\n\"  -D\\t\\tGib die Werte aller Variablen aus\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <level>\\tSschreibe Debug-Informationen nach ~/.muttdebug0\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -e <command>\\tMutt-Kommando, nach der Initialisierung ausfhren\\n\"\n\"  -f <file>\\tMailbox, die eingelesen werden soll\\n\"\n\"  -F <file>\\tAlternatives muttrc File.\\n\"\n\"  -H <file>\\tFile, aus dem Header und Body der Mail gelesen werden sollen\\n\"\n\"  -i <file>\\tFile, das in den Body der Message eingebunden werden soll\\n\"\n\"  -m <type>\\tDefault-Mailbox Typ\\n\"\n\"  -n\\t\\tDas Muttrc des Systems ignorieren\\n\"\n\"  -p\\t\\tEine zurckgestellte Nachricht zurckholen\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <variable>\\tFrage die Variable aus der Konfiguration ab\\n\"\n\"  -R\\t\\tMailbox nur zum Lesen ffnen\\n\"\n\"  -s <subj>\\tSubject der Mail (Leerzeichen in Anfhrungsstrichen)\\n\"\n\"  -v\\t\\tVersion und Einstellungen beim Compilieren anzeigen\\n\"\n\"  -x\\t\\tSimuliert mailx beim Verschicken von Mails\\n\"\n\"  -y\\t\\tStarte Mutt mit einer Mailbox aus der `mailboxes' Liste\\n\"\n\"  -z\\t\\tNur starten, wenn neue Nachrichten in der Mailbox liegen\\n\"\n\"  -Z\\t\\tffne erste Mailbox mit neuen Nachrichten oder beenden\\n\"\n\"  -h\\t\\tDiese Hilfe\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Einstellungen bei der Compilierung:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Kann Terminal nicht initialisieren.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Fehler: Wert '%s' ist ungltig fr -d.\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Debugging auf Ebene %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG war beim Kompilieren nicht definiert.  Ignoriert.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s existiert nicht. Neu anlegen?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Kann %s nicht anlegen: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Fehler beim Parsen von mailto: Link\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Keine Empfnger angegeben.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: Kann Datei nicht anhngen.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Keine Mailbox mit neuen Nachrichten.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Keine Eingangs-Mailboxen definiert.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Mailbox ist leer.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Lese %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Mailbox fehlerhaft!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Mailbox wurde zerstrt!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Fataler Fehler, konnte Mailbox nicht erneut ffnen!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Kann Mailbox nicht fr exklusiven Zugriff sperren!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: Mailbox verndert, aber Nachrichten unverndert! (bitte Bug melden)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Schreibe %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Speichere nderungen...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Konnte nicht schreiben! Speichere Teil-Mailbox in %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Konnte Mailbox nicht erneut ffnen!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"ffne Mailbox erneut...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Springe zu: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Ungltige Indexnummer.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Keine Eintrge\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Sie knnen nicht weiter nach unten gehen.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Sie knnen nicht weiter nach oben gehen.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Sie sind auf der ersten Seite.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Sie sind auf der letzten Seite.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Sie sind auf dem letzten Eintrag.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Sie sind auf dem ersten Eintrag\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Suche nach: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Suche rckwrts nach: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Nicht gefunden.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Keine markierten Eintrge.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"In diesem Men kann nicht gesucht werden.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Springen in Dialogen ist nicht mglich.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Markieren wird nicht untersttzt.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Durchsuche %s...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"Konnte Nachricht nicht auf Festplatte speichern\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): kann Zeitstempel der Datei nicht setzen\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Unbekanntes SASL Profil\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Fehler beim Aufbau der SASL Verbindung\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Fehler beim Setzen der SASL Sicherheitsparameter\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Fehler beim Setzen der externen SASL Sicherheitstrke\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Fehler beim Setzen des externen SASL Benutzernamens\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Verbindung zu %s beendet\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL ist nicht verfgbar.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"\\\"Preconnect\\\" Kommando fehlgeschlagen.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Fehler bei Verbindung mit %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Ungltige IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Schlage %s nach...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Kann Host \\\"%s\\\" nicht finden\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Verbinde zu %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Kann keine Verbindung zu %s aufbauen (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Nicht gengend Entropie auf diesem System gefunden\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Sammle Entropie fr Zufallsgenerator: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s hat unsichere Zugriffsrechte!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL deaktiviert, weil nicht gengend Entropie zur Verfgung steht\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"Ein-/Ausgabe Fehler\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL fehlgeschlagen: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Kann kein Zertifikat vom Server erhalten\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"SSL Verbindung unter Verwendung von %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"unbekannt\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[kann nicht berechnet werden]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[ungltiges Datum]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Zertifikat des Servers ist noch nicht gltig\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Zertifikat des Servers ist abgelaufen\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"Kann Subject des Zertifikats nicht ermitteln\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"Kann Common Name des Zertifikats nicht ermitteln\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"Zertifikat-Inhaber stimmt nicht mit Rechnername %s berein\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Prfung des Rechnernames in Zertifikat gescheitert: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Dieses Zertifikat gehrt zu:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Dieses Zertifikat wurde ausgegeben von:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Dieses Zertifikat ist gltig\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"    von %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     an %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Fingerabdruck: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"SSL Zertifikatprfung (Zertifikat %d von %d in Kette)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(z)urckweisen, (e)inmal akzeptieren, (i)mmer akzeptieren\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"zei\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(z)urckweisen, (e)inmal akzeptieren\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ze\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Warnung: Konnte Zertifikat nicht speichern\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Zertifikat gespeichert\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Fehler: kein TLS Socket offen\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Alle verfgbaren TLS/SSL Protokolle sind deaktiviert\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL/TLS Verbindung unter Verwendung von %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Fehler beim Initialisieren von gnutls Zertifikatdaten\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Fehler beim Verarbeiten der Zertifikatdaten\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"Warnung: Server-Zertifikat wurde mit unsicherem Algorithmus signiert\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1 Fingerabdruck: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5 Fingerabdruck: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"WARNUNG: Zertifikat des Servers ist noch nicht gltig\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"WARNUNG: Zertifikat des Servers ist abgelaufen\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"WARNUNG: Zertifikat des Servers wurde zurckgezogen\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"WARNUNG: Hostname des Servers entspricht nicht dem Zertifikat\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"WARNUNG: Aussteller des Zertifikats ist keine CA\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Fehler beim Prfen des Zertifikats (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Zertifikat ist kein X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Verbinde zu \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Tunnel zu %s liefert Fehler %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Tunnel-Fehler bei Verbindung mit %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Datei ist ein Verzeichnis, darin abspeichern? [(j)a, (n)ein, (a)lle]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"jna\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Datei ist ein Verzeichnis, darin abspeichern?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Datei in diesem Verzeichnis: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Datei existiert, (u)eberschreiben, (a)nhngen, a(b)brechen?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"uab\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Kann Nachricht nicht in POP Mailbox schreiben.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Nachricht an %s anhngen?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s ist keine Mailbox!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Lock-Datei fr %s entfernen?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Kann %s nicht (dot-)locken.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Konnte fcntl-Lock nicht innerhalb akzeptabler Zeit erhalten.\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Warte auf fcntl-Lock... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Konnte flock-Lock nicht innerhalb akzeptabler Zeit erhalten.\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Warte auf flock-Versuch... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Kann %s nicht locken.\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Kann Mailbox %s nicht synchronisieren!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Verschiebe gelesene Nachrichten nach %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Entferne %d als gelscht markierte Nachrichten?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Entferne %d als gelscht markierte Nachrichten?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Verschiebe gelesene Nachrichten nach %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Mailbox unverndert.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d behalten, %d verschoben, %d gelscht.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d behalten, %d gelscht.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Drcken Sie '%s', um Schreib-Modus ein-/auszuschalten\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Benutzen Sie 'toggle-write', um Schreib-Modus zu reaktivieren\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Mailbox ist als unschreibbar markiert. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Checkpoint in der Mailbox gesetzt.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Kann Nachricht nicht schreiben\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Integer berlauf -- kann keinen Speicher belegen.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"S.zurck\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"S.vor\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Anhnge betr.\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Nchste Nachr.\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Das Ende der Nachricht wird angezeigt.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Der Beginn der Nachricht wird angezeigt.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Hilfe wird bereits angezeigt.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Kein weiterer zitierter Text.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Kein weiterer eigener Text nach zitiertem Text.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"Mehrteilige Nachricht hat keinen \\\"boundary\\\"-Parameter!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Fehler in Ausdruck: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Leerer Ausdruck\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Ungltiger Tag: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Ungltiger Monat: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Ungltiges relatives Datum: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"Fehler in Muster bei: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"Fehlender Parameter\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"Unpassende Klammern: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: Ungltiger Muster-Modifikator\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: Wird in diesem Modus nicht untersttzt.\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"Fehlender Parameter\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"Unpassende Klammern: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"Leeres Muster\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"Fehler: Unbekannter Muster-Operator %d (Bitte Bug melden).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Compiliere Suchmuster...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Fhre Kommando aus...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Keine Nachrichten haben Kriterium erfllt.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Suche...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Suche hat Ende erreicht, ohne Treffer zu erzielen.\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Suche hat Anfang erreicht, ohne Treffer zu erzielen.\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Suche unterbrochen.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"PGP-Mantra eingeben:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP-Mantra vergessen.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Fehler: Kann keinen PGP-Prozess erzeugen! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ende der PGP-Ausgabe --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fehler: Konnte PGP-Subprozess nicht erzeugen! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Entschlsselung gescheitert\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Kann PGP-Subprozess nicht erzeugen!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Kann PGP nicht aufrufen\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, %s, (k)ein PGP? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)nline\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, %s, (k)ein PGP? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, %s, (k)ein PGP? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"vsabpku\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, %s, (k)ein PGP? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"vsabpku\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, %s, (k)ein PGP? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"vsabpku\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, %s, (k)ein PGP? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"vsabpku\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Hole PGP Schlssel...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\"Alle passenden Schlssel sind veraltet, zurckgezogen oder deaktiviert.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP-Schlssel, die zu <%s> passen.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP-Schlssel, die zu \\\"%s\\\" passen.\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Kann /dev/null nicht ffnen\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP Schlssel %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Das Kommando TOP wird vom Server nicht untersttzt.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Kann Header nicht in temporre Datei schreiben!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Kommando UIDL wird vom Server nicht untersttzt.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"\"\n\"%d Nachrichten verloren gegangen. Versuche Sie die Mailbox neu zu ffnen.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s ist ein ungltiger POP Pfad\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Hole Liste der Nachrichten...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Kann Nachricht nicht in temporre Datei schreiben!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Markiere Nachrichten zum Lschen...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Prfe auf neue Nachrichten...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"Es wurde kein POP-Server definiert.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Keine neuen Nachrichten auf dem POP-Server.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Lsche Nachrichten auf dem Server?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Lese neue Nachrichten (%d Bytes)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Fehler beim Versuch, die Mailbox zu schreiben!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d von %d Nachrichten gelesen]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Server hat Verbindung beendet!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Authentifiziere (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"POP Zeitstempel ist ungltig!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Authentifiziere (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP Authentifizierung fehlgeschlagen.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Kommando USER wird vom Server nicht untersttzt.\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Ungltige POP URL: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Kann Nachrichten nicht auf dem Server belassen.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Fehler beim Verbinden mit dem Server: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Beende Verbindung zum POP-Server...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"berprfe Nachrichten-Indexe...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Verbindung unterbrochen. Verbindung zum POP-Server wiederherstellen?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Zurckgestelle Nachrichten\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Keine zurckgestellten Nachrichten.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Unzulssiger Crypto Header\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Unzulssiger S/MIME Header\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Entschlssle Nachricht...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Entschlsselung gescheitert.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Neue Abfrage\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Kurznamen erzeugen\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Suchen\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Warte auf Antwort...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Kein Abfragekommando definiert.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Abfrage\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Abfrage: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Abfrage: '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Filtern\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Drucke\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Speichere...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Anhang gespeichert.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"WARNUNG!  Datei %s existiert, berschreiben?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Anhang gefiltert.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtere durch: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"bergebe an (pipe): \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Kann %s Anhnge nicht drucken!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Drucke markierte Anhnge?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Drucke Anhang?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Kann verschlsselte Nachricht nicht entschlsseln!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Anhnge\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Es sind keine Teile zur Anzeige vorhanden!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Kann Dateianhang nicht vom POP-Server lschen.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Kann Anhnge aus verschlsselten Nachrichten nicht lschen.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Kann Anhnge aus verschlsselten Nachrichten nicht lschen.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Kann nur aus mehrteiligen Anhngen lschen.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Sie knnen nur message/rfc822-Anhnge erneut versenden.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Fehler beim Weiterleiten der Nachricht!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Fehler beim Weiterleiten der Nachrichten!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Kann temporre Datei %s nicht ffnen.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Als Anhnge weiterleiten?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Nicht alle markierten Anhnge dekodierbar. MIME fr den Rest verwenden? \"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Zum Weiterleiten in MIME-Anhang einpacken?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Kann %s nicht anlegen.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Es sind keine Nachrichten markiert.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Keine Mailing-Listen gefunden!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Nicht alle markierten Anhnge dekodierbar. MIME fr den Rest verwenden?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Anhngen\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Einfgen\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Lschen\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Kann die \\\"type2.list\\\" fr Mixmaster nicht holen!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Whle eine Remailer Kette aus.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"\"\n\"Fehler: %s kann nicht als letzter Remailer einer Kette verwendet werden.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Eine Mixmaster-Kette kann maximal %d Elemente enthalten.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Die Remailer-Kette ist bereits leer.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Sie haben bereits das erste Element der Kette ausgewhlt.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Sie haben bereits das letzte Element der Kette ausgewhlt.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster untersttzt weder Cc: noch Bcc:\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Setzen sie die Variable \\\"hostname\\\" richtig, wenn Sie Mixmaster verwenden!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Fehler %d beim Versand der Nachricht.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Fehler beim Versand der Nachricht.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Ungltiger Eintrag fr Typ %s in \\\"%s\\\", Zeile %d.\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Kein Mailcap-Pfad definiert.\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"Kann keinen Mailcap-Eintrag fr %s finden.\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: Zu wenige Parameter.\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: Zu viele Parameter.\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"Fehler: score: Ungltige Zahl\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Kein Betreff, abbrechen?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Kein Betreff, breche ab.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Antworte an %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Antworte an %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Keine markierten Nachrichten sichtbar!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Nachricht in Antwort zitieren?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Binde zitierte Nachricht ein...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Konnte nicht alle gewnschten Nachrichten zitieren!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Als Anhang weiterleiten?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Bereite Nachricht zum Weiterleiten vor...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Zurckgestellte Nachricht weiterbearbeiten?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Weitergeleitete Nachricht editieren?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Unvernderte Nachricht verwerfen?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Unvernderte Nachricht verworfen.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Nachricht zurckgestellt.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Es wurden keine Empfnger angegeben!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Es wurden keine Empfnger angegeben!\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Kein Betreff, Versand abbrechen?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Kein Betreff.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Verschicke Nachricht...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Anhnge in Fcc-Mailbox speichern?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Konnte Nachricht nicht verschicken.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Nachricht verschickt.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Verschicke im Hintergrund.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Kein boundary-Parameter gefunden! (bitte Bug melden)\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s existiert nicht mehr!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s ist keine normale Datei.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Konnte %s nicht ffnen.\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Fehler %d beim Versand der Nachricht (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Ausgabe des Auslieferungs-Prozesses\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Ungltige IDN %s bei der Vorbereitung von Resent-From.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s... Abbruch.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Signal %s... Abbruch.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Signal %d... Abbruch.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"S/MIME-Mantra eingeben:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Vertr.wrd\"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Geprft   \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Ungeprft \"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Veraltet  \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Zurckgez.\"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Ungltig  \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Unbekannt \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME Zertifikate, die zu \\\"%s\\\" passen.\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"Diese ID ist ungltig.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"KeyID eingeben: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Kein (gltiges) Zertifikat fr %s gefunden.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Fehler: Kann keinen OpenSSL Prozess erzeugen!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"keine Zertifikat-Datei\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"keine Mailbox\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Keine Ausgabe von OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\"Kann nicht signieren: Kein Schlssel angegeben. Verwenden Sie \\\"sign. als\\\".\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Kann OpenSSL-Unterprozess nicht erzeugen!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ende der OpenSSL-Ausgabe --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Fehler: Kann keinen OpenSSL-Unterprozess erzeugen! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Die folgenden Daten sind S/MIME-verschlsselt --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Die folgenden Daten sind S/MIME signiert --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Ende der S/MIME-verschlsselten Daten --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Ende der S/MIME signierten Daten --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (v)erschl., (s)ign., verschl. (m)it, sign. (a)ls, (b)eides, (k)eins? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (v)erschl., (s)ign., verschl. (m)it, sign. (a)ls, (b)eides, (k)eins? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"vsmabkc\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (v)erschl., (s)ign., verschl. (m)it, sign. (a)ls, (b)eides, (k)eins? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"vsmabkc\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Whle Algorithmus: 1: DES, 2: RC2, 3: AES, oder (u)nverschlsselt? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drau\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SMTP Verbindung fehlgeschlagen: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SMTP Verbindung fehlgeschlagen: Kann %s nicht ffnen\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"Keine Absenderadresse angegeben\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"SMTP Verbindung fehlgeschlagen: Lesefehler\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"SMTP Verbindung fehlgeschlagen: Schreibfehler\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Ungltige Serverantwort\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Ungltige SMTP URL: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP Server untersttzt keine Authentifizierung\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP Authentifizierung bentigt SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"%s Authentifizierung fehlgeschlagen, versuche nchste Methode\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL Authentifizierung fehlgeschlagen\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Sortiere Mailbox...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Sortierfunktion nicht gefunden! (bitte Bug melden)\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(keine Mailbox)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Bezugsnachricht ist in dieser begrenzten Sicht nicht sichtbar.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Bezugsnachricht ist nicht verfgbar.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"Leere Funktion\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"Ende der beedingten Ausfhrung (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"Erzwinge Ansicht des Anhangs mittels mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"Zeige Anhang als Text an\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Schalte Anzeige von Teilen ein/aus\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"Gehe zum Ende der Seite\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"Versende Nachricht erneut an anderen Empfnger\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"Whle eine neue Datei in diesem Verzeichnis aus\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"Zeige Datei an\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"Zeige den Namen der derzeit ausgewhlten Datei\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"Abonniere aktuelle Mailbox (nur fr IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"Kndige Abonnement der aktuellen Mailbox (nur fr IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"Umschalter: Ansicht aller/der abonnierten Mailboxen (nur fr IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"Liste Mailboxen mit neuen Nachrichten\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"Wechsle Verzeichnisse\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"berprfe Mailboxen auf neue Nachrichten\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"Hnge Datei(en) an diese Nachricht an\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"Hnge Nachricht(en) an diese Nachricht an\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"Editiere die BCC-Liste\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"Editiere die CC-Liste\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"Editiere Beschreibung des Anhangs\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"Editiere Kodierung des Anhangs\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"Whle Datei, in die die Nachricht kopiert werden soll\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"Editiere die anzuhngende Datei\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"Editiere das From-Feld\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"Editiere Nachricht (einschlielich Kopf)\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"Editiere Nachricht\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"Editiere Anhang mittels mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"Editiere Reply-To-Feld\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"Editiere Betreff dieser Nachricht (Subject)\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"Editiere Empfngerliste (To)\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"Erzeuge eine neue Mailbox (nur fr IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"Editiere Typ des Anhangs\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"Erzeuge temporre Kopie dieses Anhangs\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"Rechtschreibprfung via ispell\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"Erzeuge neues Attachment via mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"Schalte Kodierung dieses Anhangs um\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"Stelle Nachricht zum spteren Versand zurck\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"Benenne angehngte Datei um\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"Verschicke Nachricht\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"Schalte Verwendbarkeit um: Inline/Anhang\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"Whle, ob Datei nach Versand gelscht wird\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"Aktualisiere Kodierungsinformation eines Anhangs\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"Schreibe Nachricht in Mailbox\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"Kopiere Nachricht in Datei/Mailbox\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"Erzeuge Adressbucheintrag fr Absender\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"Bewege Eintrag zum unteren Ende des Bildschirms\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"Bewege Eintrag zur Bildschirmmitte\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"Bewege Eintrag zum Bildschirmanfang\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"Erzeuge decodierte Kopie (text/plain)\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"Erzeuge decodierte Kopie (text/plain) und lsche\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"Lsche aktuellen Eintrag\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"Lsche die aktuelle Mailbox (nur fr IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"Lsche alle Nachrichten im Diskussionsfadenteil\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"Lsche alle Nachrichten im Diskussionsfaden\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"Zeige komplette Absenderadresse\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"Zeige Nachricht an und schalte zwischen allen/wichtigen Headern um\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"Zeige Nachricht an\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"Editiere \\\"rohe\\\" Nachricht\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"Lsche Zeichen vor dem Cursor\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"Bewege Cursor ein Zeichen nach links\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"Springe zum Anfang des Wortes\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"Springe zum Zeilenanfang\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"Rotiere unter den Eingangs-Mailboxen\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"Vervollstndige Dateinamen oder Kurznamen\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"Vervollstndige Adresse mittels Abfrage (query)\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"Lsche das Zeichen unter dem Cursor\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"Springe zum Zeilenende\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"Bewege den Cursor ein Zeichen nach rechts\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"Springe zum Ende des Wortes\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"Gehe in der Liste frherer Eingaben nach unten\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"Gehe in der Liste frherer Eingaben nach oben\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"Lsche bis Ende der Zeile\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"Lsche vom Cursor bis zum Ende des Wortes\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"Lsche Zeile\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"Lsche Wort vor Cursor\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"bernehme nchste Taste unverndert\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"Ersetze Zeichen unter dem Cursor mit vorhergehendem\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"kapitalisiere das Wort (Anfang gro, Rest klein)\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"konvertiere Wort in Kleinbuchstaben\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"konvertiere Wort in Grobuchstaben\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"Gib ein muttrc-Kommando ein\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"Gib Dateimaske ein\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"Men verlassen\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"Filtere Anhang durch Shell-Kommando\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"Gehe zum ersten Eintrag\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"Schalte 'Wichtig'-Markierung der Nachricht um\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"Leite Nachricht mit Kommentar weiter\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"Whle den aktuellen Eintrag aus\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"Antworte an alle Empfnger\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"Gehe 1/2 Seite nach unten\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"Gehe 1/2 Seite nach oben\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"Dieser Bildschirm\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"Springe zu einer Index-Nummer\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"Springe zum letzten Eintrag\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"Antworte an Mailing-Listen\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"Fhre Makro aus\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"Erzeuge neue Nachricht\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"Zerlege Diskussionsfaden in zwei\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"ffne eine andere Mailbox\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"ffne eine andere Mailbox im Nur-Lesen-Modus\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"Entferne einen Status-Indikator\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"Lsche Nachrichten nach Muster\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"Hole Nachrichten vom IMAP-Server\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"Hole Nachrichten vom POP-Server\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"Springe zu erster Nachricht\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"Springe zu letzter Nachricht\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"Whle anzuzeigende Nachrichten mit Muster aus\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"Markierte Nachrichten mit der aktuellen verbinden\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"ffne nchste Mailbox mit neuen Nachrichten\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"Springe zur nchsten neuen Nachricht\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"Springe zur nchsten neuen oder ungelesenen Nachricht\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"Springe zum nchsten Diskussionsfadenteil\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"Springe zum nchsten Diskussionsfaden\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"Springe zur nchsten ungelschten Nachricht\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"Springe zur nchsten ungelesenen Nachricht\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"Springe zur Bezugsnachricht im Diskussionsfaden\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"Springe zum vorigen Diskussionsfaden\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"Springe zum vorigen Diskussionsfadenteil\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"Springe zur vorigen ungelschten Nachricht\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"Springe zur vorigen neuen Nachricht\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"Springe zur vorigen neuen oder ungelesenen Nachricht\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"Springe zur vorigen ungelesenen Nachricht\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"Markiere den aktuellen Diskussionsfaden als gelesen\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"Markiere den aktuellen Diskussionsfadenteil als gelesen\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"Setze Statusindikator einer Nachricht\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"Speichere nderungen in Mailbox\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"Markiere Nachrichten nach Muster\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"entferne Lschmarkierung nach Muster\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"Entferne Markierung nach Muster\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"Gehe zur Seitenmitte\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"Gehe zum nchsten Eintrag\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"Gehe eine Zeile nach unten\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"Gehe zur nchsten Seite\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"Springe zum Ende der Nachricht\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"Schalte Anzeige von zitiertem Text ein/aus\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"bergehe zitierten Text\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"Springe zum Nachrichtenanfang\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"Bearbeite (pipe) Nachricht/Anhang mit Shell-Kommando\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"Gehe zum vorigen Eintrag\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"Gehe eine Zeile nach oben\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"Gehe zur vorigen Seite\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"Drucke aktuellen Eintrag\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"Externe Adressenabfrage\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"Hnge neue Abfrageergebnisse an\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"Speichere nderungen in Mailbox und beende das Programm\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"Bearbeite eine zurckgestellte Nachricht\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"Erzeuge Bildschirmanzeige neu\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{intern}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"benenne die aktuelle Mailbox um (nur fr IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"Beantworte Nachricht\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"Verwende aktuelle Nachricht als Vorlage fr neue Nachricht\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"Speichere Nachricht/Anhang in Mailbox/Datei\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"Suche nach regulrem Ausdruck\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"Suche rckwrts nach regulrem Ausdruck\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"Suche nchsten Treffer\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"Suche nchsten Treffer in umgekehrter Richtung\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"Schalte Suchtreffer-Hervorhebung ein/aus\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"Rufe Kommando in Shell auf\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"Sortiere Nachrichten\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"Sortiere Nachrichten in umgekehrter Reihenfolge\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"Markiere aktuellen Eintrag\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"Wende nchste Funktion auf markierte Nachrichten an\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"Wende nchste Funktion NUR auf markierte Nachrichten an\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"Markiere aktuellen Diskussionsfadenteil\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"Markiere aktuellen Diskussionsfaden\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"Setze/entferne den \\\"neu\\\"-Indikator einer Nachricht\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"Schalte Sichern von nderungen ein/aus\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"Schalte zwischen Mailboxen und allen Dateien um\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"Springe zum Anfang der Seite\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"Entferne Lschmarkierung vom aktuellen Eintrag\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"Entferne Lschmarkierung von allen Nachrichten im Diskussionsfaden\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"Entferne Lschmarkierung von allen Nachrichten im Diskussionsfadenteil\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"Zeige Versionsnummer an\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"Zeige Anhang, wenn ntig via Mailcap\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"Zeige MIME-Anhnge\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"Zeige Tastatur-Code einer Taste\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"Zeige derzeit aktives Begrenzungsmuster\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"Kollabiere/expandiere aktuellen Diskussionsfaden\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"Kollabiere/expandiere alle Diskussionsfden\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"Hnge ffentlichen PGP-Schlssel an\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"Zeige PGP-Optionen\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"Verschicke ffentlichen PGP-Schlssel\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"Prfe ffentlichen PGP-Schlssel\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"Zeige Nutzer-ID zu Schlssel an\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"Suche nach klassischem PGP\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Akzeptiere die erstellte Kette\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Hnge einen Remailer an die Kette an\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Fge einen Remailer in die Kette ein\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Lsche einen Remailer aus der Kette\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Whle das vorhergehende Element der Kette aus\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Whle das nchste Element der Kette aus\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"Verschicke die Nachricht ber eine Mixmaster Remailer Kette\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"Erzeuge dechiffrierte Kopie und lsche\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"Erzeuge dechiffrierte Kopie\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"Entferne Mantra(s) aus Speicher\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"Extrahiere untersttzte ffentliche Schlssel\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"Zeige S/MIME Optionen\"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"Nachricht(en) lschen\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" in dieser begrenzten Ansicht\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"Nachricht lschen\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"Editiere Nachricht\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"Fehler in Ausdruck.\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Interner Fehler. Bitte <roessler@does-not-exist.org> informieren.\"\n\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Warnung: Nachricht hat keine From: Kopfzeile\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Fehler: Fehlerhafte PGP/MIME-Nachricht! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Benutze GPGME Backend, obwohl gpg-agent nicht luft\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Fehler: multipart/encrypted ohne \\\"protocol\\\"-Parameter!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID %s ist ungeprft. Mchten Sie sie fr %s verwenden?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Benutze (nicht vertrauenswrdige!) ID %s fr %s?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Benutze ID = %s fr %s?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"Warnung: Sie vertrauen ID %s noch nicht. (Taste drcken fr weiter)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"Keine Ausgabe von OpenSSL..\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Warnung: Zwischenzertifikat nicht gefunden.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Klartext\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\tbehandle folgende Parameter als Adressen, auch wenn sie mit\\n\"\n#~ \"\\t\\teinem Bindestrich beginnen. Bei Verwendung von -a mit mehreren\\n\"\n#~ \"\\t\\tDateinamen ist -- zwingend notwendig\"\n\n#~ msgid \"esabifc\"\n#~ msgstr \"vsabikc\"\n"
  },
  {
    "path": "po/el.po",
    "content": "# Hellenic support for mutt by\n#\n# Copyright (C) 1999-2002 Fanis Dokianakis <madf@hellug.gr>\n# Corrections from\n# Nikos Mayrogiannopoulos <nmav@hellug.gr>\n# Simos Xenitellis <S.Xenitellis@rhbnc.ac.uk>\n# kromJx <kromJx@crosswinds.net>\n# ta_panta_rei <ta_panta_rei@flashmail.com>\n#\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt-1.5.7i\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2005-02-01 00:01GMT+2\\n\"\n\"Last-Translator: Dokianakis Fanis <madf@hellug.gr>\\n\"\n\"Language-Team: Greek <EL@li.org>\\n\"\n\"Language: el\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=ISO-8859-7\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"   %s: \"\n\n#\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"   %s@%s: \"\n\n#\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"\"\n\n#\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"\"\n\n#\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"\"\n\n#\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"\"\n\n#\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"\"\n\n#\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"   !\"\n\n#\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"\"\n\n#\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \" : \"\n\n#\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"       !\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \":       . ;\"\n\n#\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \": \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \": '%s'     IDN.\"\n\n#\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \" : \"\n\n#\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] ;\"\n\n#\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"  : \"\n\n#\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"    \"\n\n#\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"  .\"\n\n#\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"    \"\n\n#\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"   nametemplate, ;\"\n\n#\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"    mailcap   %%s\"\n\n#\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"     \\\"%s\\\"!\"\n\n#\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"         .\"\n\n#\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"         \"\n\n#\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"  .\"\n\n#\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"  mailcap   %s,   .\"\n\n#\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"  mailcap Edit   %%s\"\n\n#\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"   mailcap      %s\"\n\n#\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"    Mailcap.   .\"\n\n#\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"  MIME   .   .\"\n\n#\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"  \"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- \"\n\n#\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- \"\n\n#\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"  \"\n\n#\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \" !\"\n\n#\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"      !\"\n\n#\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \" \"\n\n#\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"\"\n\n#\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \" %s   .\"\n\n#\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \" [%d]\"\n\n#\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \" [%s],  : %s\"\n\n#\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \" [%s],  : %s\"\n\n#\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"   \"\n\n#\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"       \"\n\n#\n# recvattach.c:1065\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"       IMAP\"\n\n#\n# recvattach.c:1065\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"       IMAP\"\n\n#\n# recvattach.c:1065\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"       IMAP\"\n\n#\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"  \"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"   \\\"%s\\\";\"\n\n#\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"  .\"\n\n#\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"   .\"\n\n#\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"  :\"\n\n#\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"     .\"\n\n#\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \" : \"\n\n#\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"   (d), (a), (z)  \"\n\"(n);\"\n\n#\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"  (d), (a), (z)  (n);\"\n\n#\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dazn\"\n\n#\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"  : \"\n\n#\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"   \"\n\n#\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"    \"\n\n#\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"   \"\n\n#\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s:     \"\n\n#\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s:    \"\n\n#\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s:    \"\n\n#\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s:        \"\n\n#\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s:   \"\n\n#\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \" .\"\n\n#\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \":   \"\n\n#\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \":  \"\n\n#\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s:    \"\n\n#\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"  \"\n\n#\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"  \"\n\n#\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"   ' \"\n\n#\n# commands.c:92\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"  PGP  ;\"\n\n#\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"   !\"\n\n#\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"   \"\n\n#\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"   .\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"  S/MIME  .\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"    S/MIME     .\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \":       .\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"  S/MIME  .\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"  PGP  .\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"  PGP  .\"\n\n#\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \": \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"  : \"\n\n#\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"   : \"\n\n#\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"     !\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"   IDN: '%s'\"\n\n#\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"   %s\"\n\n#\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"   %s\"\n\n#\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"   .\"\n\n#\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"   .\"\n\n#\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"  .\"\n\n#\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"  .\"\n\n#\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"   \"\n\n#\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"  : \"\n\n#\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"    .\"\n\n#\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \" ;\"\n\n#\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"   ;\"\n\n#\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"  \"\n\n#\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"  \"\n\n#\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"  \"\n\n#\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"  \"\n\n#\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"- (d)/(f)/(r)/(s)/(o)/(t)/(u)/(z)/(c)/\"\n\"s(p)am;: \"\n\n#\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\" (d)/(f)/(r)/(s)/(o)/(t)/(u)/(z)/(c)/\"\n\"s(p)am;: \"\n\n#\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrsotuzcp\"\n\n#\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \" : \"\n\n#\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"-%s  \"\n\n#\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"-%s  \"\n\n#\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"-%s  \"\n\n#\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"-%s  \"\n\n#\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s  \"\n\n#\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s  \"\n\n#\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" \"\n\n#\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"  %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"  %s   ;\"\n\n#\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \" Content-Type   %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"     %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \" \"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"\"\n\n#\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"  .\"\n\n#\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"\"\n\n#\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"\"\n\n#\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \" \"\n\n#\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"\"\n\n#\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"  .\"\n\n#\n# compose.c:103\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \", \"\n\n#\n# compose.c:105\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"\"\n\n#\n# compose.c:107\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"( )\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\n#, fuzzy\nmsgid \" (S/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \"  : \"\n\n#\n# compose.c:116\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<'>\"\n\n#\n# compose.c:105\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \" : \"\n\n#\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \" %s [#%d]   !\"\n\n#\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \" %s [#%d] .   ;\"\n\n#\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- \"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \": '%s'     IDN.\"\n\n#\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"      .\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"   IDN  \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"  ...\"\n\n#\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"   %s!\"\n\n#\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"      \"\n\n#\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"   !\"\n\n#\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"      .\"\n\n#\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"      !\"\n\n#\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \" !\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"      .\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"     .\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"    .\"\n\n#\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"  .\"\n\n#\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"   ;\"\n\n#\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \" : \"\n\n#\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"     %s: %s\"\n\n#\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \" : \"\n\n#\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \" Content-Type    base/sub\"\n\n#\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \" Content-Type %s\"\n\n#\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"   %s\"\n\n#\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"    \"\n\n#\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"      ;\"\n\n#\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"    \"\n\n#\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"   %s ...\"\n\n#\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"  .\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \" S/MIME   .    ; \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \" PGP   .    ; \"\n\n#\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"   : %s\"\n\n#\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"   : %s\"\n\n#\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"   : %s\"\n\n#\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"   : %s\"\n\n#\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"   \"\n\n#\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"   : %s\"\n\n#\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"   : %s\"\n\n#\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\n#, fuzzy\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \":       .\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"    \"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \" SSL   .\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \": %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"  %s;\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"   : %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#\n# pgp.c:682\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--    --]\\n\"\n\n#\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- :    ! --]\\n\"\n\n#\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"   : %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#\n# pgp.c:353\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--   PGP --]\\n\"\n\"\\n\"\n\n#\n# pgp.c:355\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[--     PGP --]\\n\"\n\n#\n# pgp.c:357\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--   PGP  --]\\n\"\n\"\\n\"\n\n#\n# pgp.c:459\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[--   PGP --]\\n\"\n\n#\n# pgp.c:461\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[--     PGP --]\\n\"\n\n#\n# pgp.c:463\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[--   PGP  --]\\n\"\n\n#\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :         PGP! --]\\n\"\n\"\\n\"\n\n#\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- :    ! --]\\n\"\n\n#\n# pgp.c:980\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--       PGP/MIME --]\\n\"\n\"\\n\"\n\n#\n# pgp.c:980\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--       PGP/MIME --]\\n\"\n\"\\n\"\n\n#\n# pgp.c:988\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[--     PGP/MIME --]\\n\"\n\n#\n# pgp.c:988\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[--     PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"  PGP  .\"\n\n#\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"   .\"\n\n#\n# pgp.c:676\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"[--       S/MIME --]\\n\"\n\n#\n# pgp.c:980\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"[--       S/MIME --]\\n\"\n\n#\n# pgp.c:682\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     S/MIME --]\\n\"\n\n#\n# pgp.c:988\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"    \"\n\n#\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"  : %s\"\n\n#\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"  : %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#\n# compose.c:105\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \"  \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#\n# pgpkey.c:236\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"ID : 0x%s\"\n\n#: crypt-gpgme.c:3533\n#, fuzzy\nmsgid \"[Revoked]\"\nmsgstr \"   \"\n\n#\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"   \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"  %s...\"\n\n#\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"     : %s\"\n\n#\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"   : %s\\n\"\n\n#\n# pgpkey.c:236\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"ID : 0x%s\"\n\n#\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"SSL : %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"      ,   .\"\n\n#\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \" \"\n\n#\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \" \"\n\n#\n# pgpkey.c:178\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"  \"\n\n#\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \" S/MIME  \\\"%s\\\".\"\n\n#\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \" PGP  \\\"%s\\\".\"\n\n#\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"  S/MIME \\\"%s\\\".\"\n\n#\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \" PGP  \\\"%s\\\".\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"\"\n\"       //.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \" ID  //.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \" ID    .\"\n\n#\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \" ID   .\"\n\n#\n# pgpkey.c:259\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \" ID    .\"\n\n#\n# pgpkey.c:262\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s      ;\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"    \\\"%s\\\"...\"\n\n#\n# pgp.c:1194\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"  keyID = \\\"%s\\\"   %s;\"\n\n#\n# pgp.c:1200\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \" keyID   %s: \"\n\n#\n# pgpkey.c:369\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"   ID  : \"\n\n#\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"   : %s\"\n\n#\n# pgpkey.c:416\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \" PGP %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#\n# compose.c:132\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME (e), (s), .(a), (b)+, %s,  (c); \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#\n# compose.c:132\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (e), (s), .(a), (b)+, %s,  (c); \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#\n# compose.c:132\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"S/MIME (e), (s), .(a), (b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"eswabfc\"\n\n#\n# compose.c:132\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP (e), (s), .(a), (b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"eswabfc\"\n\n#\n# compose.c:132\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"S/MIME (e), (s), .(a), (b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"eswabfc\"\n\n#\n# compose.c:132\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"PGP (e), (s), .(a), (b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"eswabfc\"\n\n#\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \" : \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"         .\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \"( : %c)\"\n\n#\n# pgp.c:207\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s  %s --]\\n\"\n\n#\n# pgp.c:146\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \" (-)-  .\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\"        .   PGP/\"\n\"MIME;\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#\n# commands.c:87 commands.c:95 pgp.c:1373 pgpkey.c:220\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"  PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\"        .   PGP/\"\n\"MIME;\"\n\n#\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"   .\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"   S/MIME    .\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"   PGP...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"   S/MIME...\\n\"\n\n#\n# handler.c:1378\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :  /  %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :  / ! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :   %s%s  --]\\n\"\n\"\\n\"\n\n#\n# pgp.c:676\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--      --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :   . --]\\n\"\n\"\\n\"\n\n#\n# pgp.c:682\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--    --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#\n# commands.c:87 commands.c:95 pgp.c:1373 pgpkey.c:220\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"  S/MIME...\"\n\n#\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"y()\"\n\n#\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"n()\"\n\n#\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"   Mutt;\"\n\n#\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \" \"\n\n#\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"     ...\"\n\n#\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \"('?'  ): \"\n\n#\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"  .\"\n\n#\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"     .\"\n\n#\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"     -.\"\n\n#\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"   .\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"\"\n\"         !\"\n\n#\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"           .\"\n\n#\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"      .\"\n\n#\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"\"\n\n#\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"\"\n\n#\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"\"\n\n#\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"\"\n\n#\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"\"\n\n#\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"\"\n\"   .      \"\n\n#\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"     .\"\n\n#\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \" .\"\n\n#\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"  : \"\n\n#\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"      .\"\n\n#\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"     .\"\n\n#\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"   .\"\n\n#\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"  : \"\n\n#\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"    .\"\n\n#\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \": %s\"\n\n#\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"   : \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"   Mutt;\"\n\n#\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"    : \"\n\n#\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"     : \"\n\n#\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"       : \"\n\n#\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"    IMAP...\"\n\n#\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"       \"\n\n#\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"  \"\n\n#\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"      .\"\n\n#\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \" %s   .\"\n\n#\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"   Mutt  ;\"\n\n#\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"     .\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"      \"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"    .\"\n\n#\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"          \"\n\n#\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"   \"\n\n#\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"          \"\n\n#\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"    \"\n\n#\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"  \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"   .\"\n\n#\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"     .\"\n\n#\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"   .\"\n\n#\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"   \"\n\n#\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"     \"\n\n#\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"   .\"\n\n#\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\t       ~\\n\"\n\"~b \\t    Bcc: \\n\"\n\"~c \\t    Cc: \\n\"\n\"~f \\t  \\n\"\n\"~F \\t    ~f,     \\n\"\n\"~h\\t\\t  \\n\"\n\"~m \\t    \\n\"\n\"~M \\t    ~m,     \\n\"\n\"~p\\t\\t  \\n\"\n\"~q\\t\\t       \\n\"\n\"~r \\t\\t    \\n\"\n\"~t \\t    To: \\n\"\n\"~u\\t\\t   \\n\"\n\"~v\\t\\t     $visual editor\\n\"\n\"~w \\t\\t    \\n\"\n\"~x\\t\\t       \\n\"\n\"~?\\t\\t  \\n\"\n\".\\t\\t       \\n\"\n\n#\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\t       ~\\n\"\n\"~b \\t    Bcc: \\n\"\n\"~c \\t    Cc: \\n\"\n\"~f \\t  \\n\"\n\"~F \\t    ~f,     \\n\"\n\"~h\\t\\t  \\n\"\n\"~m \\t    \\n\"\n\"~M \\t    ~m,     \\n\"\n\"~p\\t\\t  \\n\"\n\"~q\\t\\t       \\n\"\n\"~r \\t\\t    \\n\"\n\"~t \\t    To: \\n\"\n\"~u\\t\\t   \\n\"\n\"~v\\t\\t     $visual editor\\n\"\n\"~w \\t\\t    \\n\"\n\"~x\\t\\t       \\n\"\n\"~?\\t\\t  \\n\"\n\".\\t\\t       \\n\"\n\n#\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d:    .\\n\"\n\n#\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(    .     )\\n\"\n\n#\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \" .\\n\"\n\n#\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"  :\\n\"\n\n#\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"()\\n\"\n\n#\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"    .\\n\"\n\n#\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"    .\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"   IDN  %s: '%s'\\n\"\n\n#\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s:    (~?  )\\n\"\n\n#\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"   : %s\"\n\n#\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"    : %s\"\n\n#\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"    : %s\"\n\n#\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"    !\"\n\n#\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"   !\"\n\n#\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"    : %s\"\n\n#\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"   : %s\"\n\n#\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \".   : %s\"\n\n#\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \" \"\n\n#\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \" \"\n\n#\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- :        Multipart/Alternative! \"\n\"--]\\n\"\n\n#\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[--  #%d\"\n\n#\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- : %s/%s, : %s, : %s --]\\n\"\n\n#: handler.c:1281\n#, fuzzy\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \":       .\"\n\n#\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Autoview   %s --]\\n\"\n\n#\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"   autoview: %s\"\n\n#\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[--    %s --]\\n\"\n\n#\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Autoview    %s --]\\n\"\n\n#\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- :  /-    access-type --]\\n\"\n\n#\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[--   %s/%s  \"\n\n#\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"( %s bytes) \"\n\n#\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"  --]\\n\"\n\n#\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[--  %s --]\\n\"\n\n#\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- : %s --]\\n\"\n\n#\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[--   %s/%s   , --]\\n\"\n\n#\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[--       --]\\n\"\n\"[-- . --]\\n\"\n\n#\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[--    access-type %s   --]\\n\"\n\n#\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"   !\"\n\n#\n# handler.c:1378\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \":  /   \"\n\n#\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[--   %s/%s  \"\n\n#\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[--  %s/%s   \"\n\n#\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(  '%s'      )\"\n\n#\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(  'view-attachments'     !\"\n\n#\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s:     \"\n\n#\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \":      \"\n\n#\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<>\"\n\n#\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\" :\\n\"\n\"\\n\"\n\n#\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"  :\\n\"\n\"\\n\"\n\n#\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"   %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook:  unhook *    hook.\"\n\n#\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook:   hook: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook:    %s    %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"   .\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \" ()...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"   .\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \" (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \" CRAM-MD5 .\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \" (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \" GSSAPI .\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \" LOGIN     .\"\n\n#\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"  ...\"\n\n#\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"    .\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \" (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \" SASL .\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s     IMAP\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"  ...\"\n\n#\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"   \"\n\n#\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \" : \"\n\n#\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"     .\"\n\n#\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"  .\"\n\n#\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \" : \"\n\n#\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"SSL : %s\"\n\n#\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"  .\"\n\n#\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"  \"\n\n#\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"SSL : %s\"\n\n#\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"    %s...\"\n\n#\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"\"\n\"   IMAP  .  Mutt     .\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"   TLS;\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"   TLS\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"\"\n\n#\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \" %s...\"\n\n#\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"      \"\n\n#\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"  %s;\"\n\n#\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \" \"\n\n#\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \" %d  ...\"\n\n#\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"   ... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"     !\"\n\n#\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"    ...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE \"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"  \"\n\n#\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"  %s...\"\n\n#\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"  %s...\"\n\n#\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"  %s...\"\n\n#\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"  %s...\"\n\n#\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"         IMAP.\"\n\n#\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"    %s\"\n\n#\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"  ... [%d/%d]\"\n\n#\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"    ... [%d/%d]\"\n\n#\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \" ...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"     .   .\"\n\n#\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"  ...\"\n\n#\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \" %d   %s...\"\n\n#\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"  %d  %s ...\"\n\n#\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \";\"\n\n#\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"      .\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"  : %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam:      \"\n\n#\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam:      \"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"\"\n\":    IDN '%s'   '%s'.\\n\"\n\n#\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"    \"\n\n#\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"    \"\n\n#\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"    \"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \":  \"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"\"\n\":    IDN '%s'   '%s'.\\n\"\n\n#\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"   \"\n\n#\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s:   \"\n\n#\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s):   regexp: %s\\n\"\n\n#\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s:  \"\n\n#\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"      \"\n\n#\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"      \"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \" %s  \"\n\n#\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \" %s   \"\n\n#\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"    : %s\"\n\n#\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s:    \"\n\n#\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s:   \"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s:   \"\n\n#\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s:  .\"\n\n#\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s:  \"\n\n#\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"  %s,  %d: %s\"\n\n#\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source:   %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \":       %s\"\n\n#\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source:   %s\"\n\n#\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source:   \"\n\n#\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s:  \"\n\n#\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"   : %s\\n\"\n\n#\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"      (home directory)\"\n\n#\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"     \"\n\n#\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"     \"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"  \"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"  .\"\n\n#\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"    .\"\n\n#\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"    .  '%s'  .\"\n\n#\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push:   \"\n\n#\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s:    \"\n\n#\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"  \"\n\n#\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind:   \"\n\n#\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s:     \"\n\n#\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro:   \"\n\n#\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro:   \"\n\n#\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec:  \"\n\n#\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s:    \"\n\n#\n# pgp.c:1200\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"  (^G  ): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \" = %s,  = %o,  = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"  --   !\"\n\n#\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"  !\"\n\n#\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"     developers,  mail  <mutt-dev@mutt.\"\n\"org>.\\n\"\n\"        flea(1).\\n\"\n\n#\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2002 Michael R. Elkins  .\\n\"\n\" Mutt    ;    `mutt -\"\n\"vv'.\\n\"\n\" Mutt   ,      \"\n\"\\n\"\n\"  ;  `mutt -vv'  .\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\": mutt [ -nRyzZ ] [ -e <> ] [ -F <> ] [ -m <> ] [ -f \"\n\"<>]\\n\"\n\"       mutt [ -nR ] [ -e <> ] [ -F <> ] -Q <>[ -Q \"\n\"<> ] [...]\\n\"\n\"       mutt [ -nx ] [ -e <> ] [ -a <> ] [ -F <> ] [ -H \"\n\"<> ] [ -i <> ] [ -s <> ] [ -b <> ] [ -c <> ] \"\n\"<> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <> ] [ -F <> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\":\\n\"\n\"  -A <alias>\\t   \\n\"\n\"  -a <>\\t      \\n\"\n\"  -b <>\\t   -- (BCC)\\n\"\n\"  -c <>\\t   - (CC)\\n\"\n\"  -e <>\\t        \\n\"\n\"  -f <>\\t    \\n\"\n\"  -F <>\\t    muttrc\\n\"\n\"  -H <>\\t         \"\n\"\\n\"\n\"  -i <>\\t     Mutt    \"\n\" \\n\"\n\"\\n\"\n\"  -m <>\\t    \\n\"\n\"  -n\\t\\t  Mutt     Muttrc  \\n\"\n\"  -p\\t\\t   \\n\"\n\"  -Q <>\\t( )    \\n\"\n\"  -R\\t\\t     -\\n\"\n\"  -s <>\\t   (    )\\n\"\n\"  -v\\t\\t        \\n\"\n\"  -x\\t\\t    mailx\\n\"\n\"  -y\\t\\t      `'\\n\"\n\"  -z\\t\\t       \\n\"\n\"  -Z\\t\\t      ,    \\n\"\n\"  -h\\t\\t   \"\n\n#\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\": mutt [ -nRyzZ ] [ -e <> ] [ -F <> ] [ -m <> ] [ -f \"\n\"<>]\\n\"\n\"       mutt [ -nR ] [ -e <> ] [ -F <> ] -Q <>[ -Q \"\n\"<> ] [...]\\n\"\n\"       mutt [ -nx ] [ -e <> ] [ -a <> ] [ -F <> ] [ -H \"\n\"<> ] [ -i <> ] [ -s <> ] [ -b <> ] [ -c <> ] \"\n\"<> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <> ] [ -F <> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\":\\n\"\n\"  -A <alias>\\t   \\n\"\n\"  -a <>\\t      \\n\"\n\"  -b <>\\t   -- (BCC)\\n\"\n\"  -c <>\\t   - (CC)\\n\"\n\"  -e <>\\t        \\n\"\n\"  -f <>\\t    \\n\"\n\"  -F <>\\t    muttrc\\n\"\n\"  -H <>\\t         \"\n\"\\n\"\n\"  -i <>\\t     Mutt    \"\n\" \\n\"\n\"\\n\"\n\"  -m <>\\t    \\n\"\n\"  -n\\t\\t  Mutt     Muttrc  \\n\"\n\"  -p\\t\\t   \\n\"\n\"  -Q <>\\t( )    \\n\"\n\"  -R\\t\\t     -\\n\"\n\"  -s <>\\t   (    )\\n\"\n\"  -v\\t\\t        \\n\"\n\"  -x\\t\\t    mailx\\n\"\n\"  -y\\t\\t      `'\\n\"\n\"  -z\\t\\t       \\n\"\n\"  -Z\\t\\t      ,    \\n\"\n\"  -h\\t\\t   \"\n\n#\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\" :\"\n\n#\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"     .\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \": '%s'     IDN.\"\n\n#\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"   %d.\\n\"\n\n#\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \" DEBUG       compile. .\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \" %s  . ;\"\n\n#\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"   %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"   .\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s:    .\\n\"\n\n#\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"      .\"\n\n#\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"    .\"\n\n#\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"   .\"\n\n#\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \" %s...\"\n\n#\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"   !\"\n\n#\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"   !\"\n\n#\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \" !    !\"\n\n#\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"   !\"\n\n#\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync:  mbox  ,    !\\n\"\n\"(   )\"\n\n#\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \" %s...\"\n\n#\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"  ...\"\n\n#\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"  !      %s\"\n\n#\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"   !\"\n\n#\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"  ...\"\n\n#\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \" : \"\n\n#\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"   \"\n\n#\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \" \"\n\n#\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"    .\"\n\n#\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"    .\"\n\n#\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"   .\"\n\n#\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"   .\"\n\n#\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"   .\"\n\n#\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"   .\"\n\n#\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \" : \"\n\n#\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"  : \"\n\n#\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \" .\"\n\n#\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"  .\"\n\n#\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"       .\"\n\n#\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"      .\"\n\n#\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"  .\"\n\n#\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \" %s...\"\n\n#\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"   .\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message():     \"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"   : %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"    %s\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \" SSL   .\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"  \"\n\n#\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"     %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"   IDN \\\"%s\\\".\"\n\n#\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"  %s...\"\n\n#\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"    \\\"%s\\\"\"\n\n#\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"  %s...\"\n\n#\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"   %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"       \"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \" : %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \" %s   !\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \" SSL    \"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"I/O \"\n\n#\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL : %s\"\n\n#\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"      \"\n\n#\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \" SSL   %s (%s)\"\n\n#\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"\"\n\n#\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[ ]\"\n\n#\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[  ]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"       \"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"    \"\n\n#\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"      \"\n\n#\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"      \"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"    S/MIME     .\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"  \"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"    :\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"     :\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"    \"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"     %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \": %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r), (o)  , (a) \"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"roa\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r), (o)  \"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ro\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \":   \"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"  \"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \" SSL   %s (%s)\"\n\n#\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"     .\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \": %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \": %s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"       \"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"    \"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"    \"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\n#, fuzzy\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"       \"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \"  \"\n\n#\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"  %s...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"     %s (%s)\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"\"\n\"   ,   ; [(y), (n), (a)]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"yna\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"   ,   ;\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"  :\"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"  , (o)  , (a), (c);\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"oac\"\n\n#\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"     POP .\"\n\n#\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"   %s;\"\n\n#\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \" %s   !\"\n\n#\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"   ,   %s;\"\n\n#\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \" dotlock  %s.\\n\"\n\n#\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"         fcntl!\"\n\n#\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"    fcntl... %d\"\n\n#\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"        flock!\"\n\n#\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"   flock... %d\"\n\n#\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"   %s\\n\"\n\n#\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"    %s!\"\n\n#\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"    %s;\"\n\n#\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \" %d  ;\"\n\n#\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \" %d  ;\"\n\n#\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"    %s...\"\n\n#\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"     \"\n\n#\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d , %d , %d .\"\n\n#\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d , %d .\"\n\n#\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" '%s'     !\"\n\n#\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"  'toggle-write'     !\"\n\n#\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"     . %s\"\n\n#\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"  .\"\n\n#\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"   \"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"  --   .\"\n\n#\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"\"\n\n#\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"\"\n\n#\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"\"\n\n#\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"\"\n\n#\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"    .\"\n\n#\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"    .\"\n\n#\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"   .\"\n\n#\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"   .\"\n\n#\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"       .\"\n\n#\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"      !\"\n\n#\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"  : %s\"\n\n#\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"  \"\n\n#\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"    : %s\"\n\n#\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"  : %s\"\n\n#\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"   : %s\"\n\n#\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"   : %s\"\n\n#\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \" \"\n\n#\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \" /: %s\"\n\n#\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c:   \"\n\n#\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \" %c:      \"\n\n#\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \" \"\n\n#\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \" /: %s\"\n\n#\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \" /\"\n\n#\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \":   %d (   ).\"\n\n#\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"  ...\"\n\n#\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"    ...\"\n\n#\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"     .\"\n\n#\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"...\"\n\n#\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"        \"\n\n#\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"        \"\n\n#\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"  .\"\n\n#\n# pgp.c:130\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"  - PGP:\"\n\n#\n# pgp.c:146\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \" - PGP  .\"\n\n#\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- :     PGP! --]\\n\"\n\n#\n# pgp.c:669 pgp.c:894\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--    PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#\n# pgp.c:865\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :     PGP! --0]\\n\"\n\"\\n\"\n\n#\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"  .\"\n\n#\n# pgp.c:1070\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"   PGP!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"   PGP\"\n\n#\n# compose.c:132\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (e), (s), .(a), (b)+, %s,  (c); \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i) \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#\n# compose.c:132\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (e), (s), .(a), (b)+, %s,  (c); \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#\n# compose.c:132\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP (e), (s), .(a), (b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"eswabfc\"\n\n#\n# compose.c:132\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP (e), (s), .(a), (b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"eswabfc\"\n\n#\n# compose.c:132\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP (e), (s), .(a), (b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"eswabfc\"\n\n#\n# compose.c:132\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP (e), (s), .(a), (b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"eswabfc\"\n\n#\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"  PGP...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"      ,   .\"\n\n#\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \" PGP  <%s>.\"\n\n#\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \" PGP  \\\"%s\\\".\"\n\n#\n# pgpkey.c:210 pgpkey.c:387\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"  /dev/null\"\n\n#\n# pgpkey.c:416\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \" PGP %s.\"\n\n#\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"  TOP     .\"\n\n#\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"     !\"\n\n#\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"  UIDL     .\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"     .   .\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s    POP \"\n\n#\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"  ...\"\n\n#\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"     !\"\n\n#\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \" %d  ...\"\n\n#\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"   ...\"\n\n#\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \" POP host  .\"\n\n#\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"    POP .\"\n\n#\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"    ;\"\n\n#\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"   (%d bytes)...\"\n\n#\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"     \"\n\n#\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d  %d  ]\"\n\n#\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"     !\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \" (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \" (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \" APOP .\"\n\n#\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"  USER     .\"\n\n#\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"    \"\n\n#\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"     .\"\n\n#\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"     : %s\"\n\n#\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"    IMAP...\"\n\n#\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"   ...\"\n\n#\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \" .    POP;\"\n\n#\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \" \"\n\n#\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"   .\"\n\n#\n# postpone.c:338 postpone.c:358 postpone.c:367\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"  PGP\"\n\n#\n# postpone.c:338 postpone.c:358 postpone.c:367\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"  S/MIME\"\n\n#\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \" ...\"\n\n#\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"  .\"\n\n#\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \" \"\n\n#\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \" \"\n\n#\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"\"\n\n#\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \" ...\"\n\n#\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"    .\"\n\n#\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"\"\n\n#\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \": \"\n\n#\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \" '%s'\"\n\n#\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"\"\n\n#\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"\"\n\n#\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"...\"\n\n#\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"  .\"\n\n#\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"!       %s, ;\"\n\n#\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"   .\"\n\n#\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \" : \"\n\n#\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \" : \"\n\n#\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"      %s !\"\n\n#\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \" / /;\"\n\n#\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \" ;\"\n\n#\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"    !\"\n\n#\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"\"\n\n#\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"      .\"\n\n#\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"      POP.\"\n\n#\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"\"\n\"       .\"\n\n#\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"\"\n\"       .\"\n\n#\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"     .\"\n\n#\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"    / rfc822\"\n\n#\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"     !\"\n\n#\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"     !\"\n\n#\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"     %s.\"\n\n#\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"  ;\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"     . -MIME \"\n\" ;\"\n\n#\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"  MIME;\"\n\n#\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"   %s.\"\n\n#\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"   .\"\n\n#\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"   !\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"     . MIME-\"\n\"encapsulate  ;\"\n\n#\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"\"\n\n#\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"   type2.list  mixmaster!\"\n\n#\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"   .\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"\"\n\":  %s         .\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"  Mixmaster    %d .\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"     .\"\n\n#\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"       .\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"       .\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \" Mixmaster   Cc  Bcc .\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"          \"\n\"  mixmaster!\"\n\n#\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"   ,    %d.\\n\"\n\n#\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"     .\"\n\n#\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"      %s  \\\"%s\\\"  %d\"\n\n#\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"   mailcap\"\n\n#\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"  mailcap    %s  \"\n\n#\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score:   \"\n\n#\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score:   \"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"  ,  ;\"\n\n#\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"  , .\"\n\n#\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"  %s%s;\"\n\n#\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"  %s%s;\"\n\n#\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"     !\"\n\n#\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"    ;\"\n\n#\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"  ...\"\n\n#\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"      !\"\n\n#\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"  ;\"\n\n#\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"   ...\"\n\n#\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"  ;\"\n\n#\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"  ;\"\n\n#\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"    ;\"\n\n#\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"    .\"\n\n#\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"  .\"\n\n#\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"   !\"\n\n#\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"  .\"\n\n#\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"  ,  ;\"\n\n#\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"  .\"\n\n#\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \" ...\"\n\n#\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"    \"\n\n#\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"   .\"\n\n#\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"  .\"\n\n#\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"  .\"\n\n#\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"   ! [   ]\"\n\n#\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \" %s   !\"\n\n#\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \" %s    .\"\n\n#\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"   %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"    ,    %d (%s).\"\n\n#\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"   \"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"\"\n\"   IDN %s      \"\n\"-.\"\n\n#\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  .\\n\"\n\n#\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"  %s...  .\\n\"\n\n#\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"  %d...  .\\n\"\n\n#\n# pgp.c:130\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"  - S/MIME:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"   \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"  \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \" \"\n\n#\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"   \"\n\n#\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"    \"\n\n#\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"   \"\n\n#\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"  S/MIME \\\"%s\\\".\"\n\n#\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \" ID   .\"\n\n#\n# pgp.c:1200\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"  keyID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"  ()    %s.\"\n\n#\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \":    OpenSSL!\"\n\n#\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"  \"\n\n#\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \" \"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"   OpenSSL..\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \" .    .  .\"\n\n#\n# pgp.c:1070\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"   OpenSSL!\"\n\n#\n# pgp.c:669 pgp.c:894\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[--    OpenSSL --]\\n\"\n\"\\n\"\n\n#\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- :    OpenSSL! --]\\n\"\n\n#\n# pgp.c:980\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[--       S/MIME --]\\n\"\n\n#\n# pgp.c:676\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[--       S/MIME --]\\n\"\n\n#\n# pgp.c:988\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     S/MIME --]\\n\"\n\n#\n# pgp.c:682\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--     S/MIME --]\\n\"\n\n#\n# compose.c:132\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (e),(s),(w).,.(a),(b)+, %s,  (c); \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#\n# compose.c:132\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (e),(s),(w).,.(a),(b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"eswabfc\"\n\n#\n# compose.c:132\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e),(s),(w).,.(a),(b)+, %s,  (c); \"\n\n#\n# compose.c:133\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"eswabfc\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SSL : %s\"\n\n#\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SSL : %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"    \"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \" GSSAPI .\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \" SASL .\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \" SASL .\"\n\n#\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \" ...\"\n\n#\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"\"\n\"    ! [   ]\"\n\n#\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"( )\"\n\n#\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"          \"\n\n#\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"     .\"\n\n#\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"    (noop)\"\n\n#\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"       mailcap\"\n\n#\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"       \"\n\n#\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"       \"\n\n#\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"  \"\n\n#\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"      \"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"    (IMAP )\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"     (IMAP )\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"  /   (IMAP )\"\n\n#\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \" \"\n\n#\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \" /   \"\n\n#\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \" /    \"\n\n#\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \" /    \"\n\n#\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"   BCC\"\n\n#\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"   CC\"\n\n#\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"  -  \"\n\n#\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"        \"\n\n#\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"   from\"\n\n#\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"  \"\n\n#\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"     mailcap\"\n\n#\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"   Reply-To\"\n\n#\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"   TO\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"    (IMAP )\"\n\n#\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"      ispell\"\n\n#\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"     mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"/   \"\n\n#\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"     /\"\n\n#\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"       ,  \"\n\n#\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"     //\"\n\n#\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"  (text/plain) \"\n\n#\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"  (text/plain)   \"\n\n#\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"    (IMAP )\"\n\n#\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"  \"\n\n#\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"  <<>> \"\n\n#\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"       \"\n\n#\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"       \"\n\n#\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"          \"\n\n#\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"          \"\n\n#\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"         \"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"   muttrc\"\n\n#\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"   ''  \"\n\n#\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \" 1/2    \"\n\n#\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \" 1/2    \"\n\n#\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"  \"\n\n#\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"  \"\n\n#\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"      -\"\n\n#\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"       /\"\n\n#\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"      IMAP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"     POP\"\n\n#\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"        /\"\n\n#\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"   : \"\n\n#\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"      .\"\n\n#\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"       \"\n\n#\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"       \"\n\n#\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"       /\"\n\n#\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"\"\n\" (undelete)       /\"\n\n#\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"\"\n\"          /\"\n\n#\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"    quoted \"\n\n#\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"    quoted \"\n\n#\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"  /    \"\n\n#\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"       \"\n\n#\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"    (IMAP )\"\n\n#\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"        \"\n\n#\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \" /   \"\n\n#\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"       \"\n\n#\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"  \"\n\n#\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"       \"\n\n#\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"  ''  \"\n\n#\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"         \"\n\n#\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"   \"\n\n#\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"      \"\n\n#\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"     Mutt   \"\n\n#\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"\"\n\"       mailcap\"\n\n#\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"   MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"     \"\n\n#\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"/   \"\n\n#\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"/   \"\n\n#\n# keymap_defs.h:158\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"    PGP\"\n\n#\n# keymap_defs.h:159\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"   PGP\"\n\n#\n# keymap_defs.h:162\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"   PGP\"\n\n#\n# keymap_defs.h:163\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"    PGP\"\n\n#\n# keymap_defs.h:164\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"    pgp\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"       Mixmaster\"\n\n#\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"    \"\n\n#\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"  \"\n\n#\n# keymap_defs.h:161\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"  (-)    \"\n\n#\n# keymap_defs.h:160\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"     \"\n\n#\n# keymap_defs.h:159\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"   S/MIME\"\n\n#\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"   .\"\n\n#\n#~ msgid \" in this limited view\"\n#~ msgstr \"    \"\n\n#\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"   .\"\n\n#\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"  \"\n\n#\n#~ msgid \"error in expression\"\n#~ msgstr \"  \"\n\n#\n# pgp.c:801\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \" .  <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \":       .\"\n\n#\n# pgp.c:958\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- :   PGP/MIME! --]\\n\"\n#~ \"\\n\"\n\n#\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"\"\n#~ \":  /    !\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \" ID %s   .       %s ;\"\n\n#\n# pgp.c:1194\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"  ( ) ID %s   %s \"\n\n#\n# pgp.c:1194\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"  ID = %s   %s ;\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \":      ID %s. (.  \"\n#~ \")\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"   OpenSSL..\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \":    .\"\n\n#\n#~ msgid \"Clear\"\n#~ msgstr \"\"\n\n#\n# compose.c:133\n#~ msgid \"esabifc\"\n#~ msgstr \"esabifc\"\n\n#\n#~ msgid \"No search pattern.\"\n#~ msgstr \"  .\"\n\n#\n#~ msgid \"Reverse search: \"\n#~ msgstr \" : \"\n\n#\n#~ msgid \"Search: \"\n#~ msgstr \":\"\n\n#\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"     .\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"  SSL\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"  SSL\"\n\n#\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \" namespaces...\"\n\n#\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \": mutt [ -nRyzZ ] [ -e <> ] [ -F <> ] [ -m <> ] [ -\"\n#~ \"f <>]\\n\"\n#~ \"       mutt [ -nR ] [ -e <> ] [ -F <> ] -Q <>[ -Q \"\n#~ \"<> ] [...]\\n\"\n#~ \"       mutt [ -nx ] [ -e <> ] [ -a <> ] [ -F <> ] [ -H \"\n#~ \"<> ] [ -i <> ] [ -s <> ] [ -b <> ] [ -c <> ] \"\n#~ \"<> [ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <> ] [ -F <> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \":\\n\"\n#~ \"  -A <alias>\\t   \\n\"\n#~ \"  -a <>\\t      \\n\"\n#~ \"  -b <>\\t   -- (BCC)\\n\"\n#~ \"  -c <>\\t   - (CC)\\n\"\n#~ \"  -e <>\\t        \\n\"\n#~ \"  -f <>\\t    \\n\"\n#~ \"  -F <>\\t    muttrc\\n\"\n#~ \"  -H <>\\t         \"\n#~ \"\\n\"\n#~ \"  -i <>\\t     Mutt    \"\n#~ \" \\n\"\n#~ \"\\n\"\n#~ \"  -m <>\\t    \\n\"\n#~ \"  -n\\t\\t  Mutt     Muttrc  \\n\"\n#~ \"  -p\\t\\t   \\n\"\n#~ \"  -Q <>\\t( )    \\n\"\n#~ \"  -R\\t\\t     -\\n\"\n#~ \"  -s <>\\t   (    )\\n\"\n#~ \"  -v\\t\\t        \\n\"\n#~ \"  -x\\t\\t    mailx\\n\"\n#~ \"  -y\\t\\t      `'\\n\"\n#~ \"  -z\\t\\t       \\n\"\n#~ \"  -Z\\t\\t      ,    \\n\"\n#~ \"  -h\\t\\t   \"\n\n#\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"    'important'   POP.\"\n\n#\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"     POP.\"\n\n#\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \" %s... %d (%d%%)\"\n\n#\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \" ... %d (%d%%)\"\n\n#\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \" %s... %d\"\n\n#\n# commands.c:87 commands.c:95 pgp.c:1373 pgpkey.c:220\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"  pgp...\"\n\n#\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \" .        !\"\n\n#\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"CLOSE \"\n\n#\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2002 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2002 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2002 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"        ,\\n\"\n#~ \",  .\\n\"\n#~ \"\\n\"\n#~ \"     .    \\n\"\n#~ \"/         GNU   \"\n#~ \"\\n\"\n#~ \"       (Free Software\\n\"\n#~ \"Foundation),      ,  (' )\\n\"\n#~ \"  .\\n\"\n#~ \"\\n\"\n#~ \"          ,\\n\"\n#~ \"   .       \\n\"\n#~ \"     .  \\n\"\n#~ \"GNU      .\\n\"\n#~ \"\\n\"\n#~ \"        GNU   \\n\"\n#~ \"   .  ,   Free Software \\n\"\n#~ \"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (f)orget it? \"\n#~ msgstr \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128,  (f); \"\n\n#~ msgid \"12345f\"\n#~ msgstr \"12345f\"\n\n#\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"   .\"\n\n#\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"   .\"\n\n#~ msgid \"Unexpected response received from server: %s\"\n#~ msgstr \"     : %s\"\n\n#\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"    / IMAP    \"\n\n#\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"    PGP;\"\n\n#\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"  %s  : %s\"\n\n#\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s:    \"\n\n#~ msgid \"unspecified protocol error\"\n#~ msgstr \"   \"\n\n#\n# commands.c:87 commands.c:95 pgp.c:1373 pgpkey.c:220\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"  OpenSSL...\"\n\n#\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"   %s...;\"\n\n#\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"   %s...;\"\n\n#\n# compose.c:133\n#~ msgid \"ewsabf\"\n#~ msgstr \"ewsabf\"\n"
  },
  {
    "path": "po/eo.po",
    "content": "# Mesaĝoj por la retpoŝta programo 'Mutt'.\n# This file is distributed under the same license as the mutt package.\n#\n# Edmund GRIMLEY EVANS <edmundo@rano.org>, 2000, 2001, 2002, 2003, 2007.\n# Benno Schulenberg <benno@vertaalt.nl>, 2015, 2016.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt 1.6.0\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2016-03-24 15:09+0100\\n\"\n\"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\\n\"\n\"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\\n\"\n\"Language: eo\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Generator: Lokalize 1.0\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Uzantonomo ĉe %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Pasvorto por %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Fino\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Forviŝi\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Malforviŝi\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Elekto\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Helpo\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Vi ne havas adresaron!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Adresaro\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Aldonu nomon: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"En la adresaro jam estas nomo kun tiu adreso!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Averto: Ĉi tiu nomo eble ne funkcios.  Ĉu ripari ĝin?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adreso: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Eraro: '%s' estas malbona IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Plena nomo: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Ĉu akcepti?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Skribi al dosiero: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Eraro dum legado de adresaro-dosiero\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Adreso aldonita.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Eraro dum alsalto en adresaro-dosiero\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Nomŝablono ne estas plenumebla.  Ĉu daŭrigi?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"\\\"compose\\\" en Mailcap-dosiero postulas %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Eraro dum ruligo de \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Malsukcesis malfermi dosieron por analizi ĉapaĵojn.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Malsukcesis malfermi dosieron por forigi ĉapaĵojn.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Malsukcesis renomi dosieron.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"\"\n\"En la Mailcap-dosiero mankas \\\"compose\\\" por %s; malplena dosiero estas \"\n\"kreita.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"\\\"edit\\\" en Mailcap-dosiero postulas %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"En la Mailcap-dosiero mankas \\\"edit\\\" por %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Neniu Mailcap-regulo kongruas.  Traktas kiel tekston.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME-speco ne difinita.  Ne eblas vidigi parton.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Ne eblas krei filtrilon.\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Komando: %-20.20s  Priskribo: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Komando: %-30.30s  Parto: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Parto: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---Parto: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Ne eblas krei filtrilon\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Skriberaro!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Mi ne scias presi tion!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Listo\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Masko\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s ne estas dosierujo.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Poŝtfakoj [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Abonita [%s], Dosieromasko: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Dosierujo [%s], Dosieromasko: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Ne eblas aldoni dosierujon!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Neniu dosiero kongruas kun la dosieromasko\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Kreado funkcias nur ĉe IMAP-poŝtfakoj\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Renomado funkcias nur ĉe IMAP-poŝtfakoj\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Forviŝado funkcias nur ĉe IMAP-poŝtfakoj\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Ne eblas forviŝi radikan poŝtujon\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Ĉu vere forviŝi la poŝtfakon \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Poŝtfako forviŝita.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Poŝtfako ne forviŝita.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Iri al la dosierujo: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Eraro dum legado de dosierujo.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Dosieromasko: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Inversa ordigo laŭ (d)ato, (a)lfabete, (g)rando, aŭ (n)e ordigi? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Ordigo laŭ (d)ato, (a)lfabete, (g)rando, aŭ (n)e ordigi? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dagn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nova dosieronomo: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Ne eblas rigardi dosierujon\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Eraro dum vidigo de dosiero\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Nova mesaĝo en \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: terminalo ne kapablas je koloro\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: koloro ne ekzistas\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: objekto ne ekzistas\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: komando validas nur por indeksaj, korpaj, kaj ĉapaj objektoj\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: nesufiĉe da argumentoj\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Mankas argumentoj.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: nesufiĉe da argumentoj\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: nesufiĉe da argumentoj\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: nekonata trajto\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"nesufiĉe da argumentoj\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"tro da argumentoj\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"implicitaj koloroj ne funkcias\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Ĉu kontroli PGP-subskribon?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Ne eblis krei dumtempan dosieron!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Ne eblas krei vidig-filtrilon\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Ne eblis kopii mesaĝon\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME-subskribo estis sukcese kontrolita.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Posedanto de S/MIME-atestilo ne kongruas kun sendinto.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Averto: Parto de ĉi tiu mesaĝo ne estis subskribita.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME-subskribo NE povis esti kontrolita.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP-subskribo estas sukcese kontrolita.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP-subskribo NE povis esti kontrolita.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Komando: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Averto: mesaĝo malhavas 'From:'-ĉapaĵon\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Redirekti mesaĝon al: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Redirekti markitajn mesaĝojn al: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Eraro dum analizo de adreso!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Malbona IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Redirekti mesaĝon al %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Redirekti mesaĝojn al %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Mesaĝo ne redirektita.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Mesaĝoj ne redirektitaj.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Mesaĝo redirektita.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Mesaĝoj redirektitaj.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Ne eblas krei filtrilprocezon\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Filtri per komando: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Neniu pres-komando estas difinita.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Ĉu presi mesaĝon?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Ĉu presi markitajn mesaĝojn?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Mesaĝo presita\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Mesaĝoj presitaj\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Ne eblis presi mesaĝon\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Ne eblis presi mesaĝojn\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Inverse laŭ (d)ato/d(e)/(r)icevo/(t)emo/(a)l/(f)adeno/(n)eorde/(g)rando/\"\n\"(p)oentoj?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Ordigo laŭ (d)ato/d(e)/(r)icevo/(t)emo/(a)l/(f)adeno/(n)eorde/(g)rando/\"\n\"(p)oentoj?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dertafngp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Ŝelkomando: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Malkodita skribi%s al poŝtfako\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Malkodita kopii%s al poŝtfako\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Malĉifrita skribi%s al poŝtfako\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Malĉifrita kopii%s al poŝtfako\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Skribi%s al poŝtfako\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Kopii%s al poŝtfako\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" markitajn\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Kopias al %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Ĉu konverti al %s ĉe sendado?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type ŝanĝita al %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Signaro ŝanĝita al %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"ne konvertiĝas\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"konvertiĝas\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Mankas mesaĝopartoj.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Sendi\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Interrompi\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Aldoni dosieron\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Priskribo\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"Ne subtenatas\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Subskribi, Ĉifri\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Ĉifri\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Subskribi\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"Nenio\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (enteksta PGP)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \" (OppEnc-moduso)\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" subskribi kiel: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<implicite>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Ĉifri per: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] ne plu ekzistas!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] modifita.  Ĉu aktualigi kodadon?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Partoj\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Averto: '%s' estas malbona IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Vi ne povas forviŝi la solan parton.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Malbona IDN en \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Aldonas la elektitajn dosierojn...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Ne eblas aldoni %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Malfermu poŝtfakon por aldoni mesaĝon el ĝi\"\n\n#: compose.c:762\n#, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Ne eblas malfermi poŝtfakon %s\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Ne estas mesaĝoj en tiu poŝtfako.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Marku la mesaĝojn kiujn vi volas aldoni!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Ne eblas aldoni!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Rekodado efikas nur al tekstaj partoj.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Ĉi tiu parto ne estos konvertita.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Ĉi tiu parto estos konvertita.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Nevalida kodado.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Ĉu skribi kopion de ĉi tiu mesaĝo?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Renomi al: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Ne eblas ekzameni la dosieron %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Nova dosiero: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type havas la formon bazo/subspeco\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Nekonata Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Ne eblas krei dosieron %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Malsukcesis krei kunsendaĵon\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Ĉu prokrasti ĉi tiun mesaĝon?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Skribi mesaĝon al poŝtfako\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Skribas mesaĝon al %s...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Mesaĝo skribita.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME jam elektita.  Ĉu nuligi kaj daŭrigi? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP jam elektita.  Ĉu nuligi kaj daŭrigi? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"eraro en kreado de gpgme-kunteksto: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"eraro en funkciigo de CMS-protokolo: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"eraro en kreado de gpgme-datenobjekto: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"eraro en asignado por datenobjekto: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"eraro en rebobenado de datenobjekto: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"eraro en legado de datenobjekto: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Ne eblas krei dumtempan dosieron\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"eraro en aldonado de ricevonto '%s': %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"sekreta ŝlosilo '%s' ne trovita: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"plursenca specifo de sekreta ŝlosilo '%s'\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"eraro en elekto de sekreta ŝlosilo '%s': %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"eraro en elektado de PKA-subskribo-notacio: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"eraro en ĉifrado de datenoj: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"eraro en subskribado de datenoj: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\"$pgp_sign_as estas malŝaltita kaj neniu defaŭlta ŝlosilo indikatas en ~/.\"\n\"gnupg/gpg.conf\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Averto: Unu el la ŝlosiloj estas revokita\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Averto: La ŝlosilo uzita por krei la subskribon eksvalidiĝis je: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Averto: Almenaŭ unu atestila ŝlosilo eksvalidiĝis\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Averto: La subskribo eksvalidiĝis je: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Ne eblas kontroli pro mankanta ŝlosilo aŭ atestilo\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL ne disponeblas\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"Disponebla CRL estas tro malnova\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Politika postulo ne estis plenumita\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Sistemeraro okazis\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"AVERTO: PKA-registro ne kongruas kun adreso de subskribinto: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"PKA-kontrolita adreso de subskribinto estas: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Fingrospuro: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"AVERTO: Ni havas NENIAN indikon, ĉu la ŝlosilo apartenas al la persono \"\n\"nomita supre\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"AVERTO: La ŝlosilo NE APARTENAS al la persono nomita supre\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"AVERTO: NE estas certe ke la ŝlosilo apartenas al la persono nomita supre\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"alinome: \"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"Ŝlosil-ID \"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"kreita: \"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Eraro en akirado de ŝlosilinformo por ŝlosil-ID %s: %s\\n\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"Bona subskribo de:\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"*MALBONA* subskribo de:\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Problema subskribo de:\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"         senvalidiĝas: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Komenco de subskribinformo --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Eraro: kontrolado malsukcesis: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Komenco de notacio (subskribo de: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Fino de notacio ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fino de subskribo-informoj --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Eraro: malĉifrado malsukcesis: %s --]\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Eraro dum eltiro de ŝlosildatenoj!\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Eraro: malĉifrado/kontrolado malsukcesis: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Eraro: datenkopiado malsukcesis\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"[-- KOMENCO DE PGP-MESAĜO --]\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- KOMENCO DE PUBLIKA PGP-ŜLOSILO --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- KOMENCO DE PGP-SUBSKRIBITA MESAĜO --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- FINO DE PGP-MESAĜO --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- FINO DE PUBLIKA PGP-ŜLOSILO --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- FINO DE PGP-SUBSKRIBITA MESAĜO --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Eraro: ne eblas trovi komencon de PGP-mesaĝo! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Eraro: ne eblas krei dumtempan dosieron! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- La sekvaj datenoj estas PGP/MIME-subskribitaj kaj -ĉifritaj --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- La sekvaj datenoj estas PGP/MIME-ĉifritaj --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Fino de PGP/MIME-subskribitaj kaj -ĉifritaj datenoj --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Fino de PGP/MIME-ĉifritaj datenoj --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP-mesaĝo estis sukcese malĉifrita.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Ne eblis malĉifri PGP-mesaĝon\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- La sekvaj datenoj estas S/MIME-subskribitaj --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- La sekvaj datenoj estas S/MIME-ĉifritaj --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Fino de S/MIME-subskribitaj datenoj --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Fino de S/MIME-ĉifritaj datenoj --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Ne eblas montri ĉi tiun ID (nekonata kodado)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Ne eblas montri ĉi tiun ID (nevalida kodado)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Ne eblas montri ĉi tiun ID (nevalida DN)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" alinome ..: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Nomo ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Nevalida]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Valida de .: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Valida ĝis : %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Ŝlosilspeco: %s, %lu-bita %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Ŝlosiluzado: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"ĉifrado\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"subskribo\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"atestado\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Seri-numero: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Eldonita de: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Subŝlosilo : 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Revokite]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Eksvalidiĝinte]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Malŝaltita]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Kolektas datenojn...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Eraro dum trovado de eldoninto-ŝlosilo: %s\\n\"\n\n#: crypt-gpgme.c:3675\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Eraro: atestado-ĉeno tro longas -- haltas ĉi tie\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Key ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new() malsukcesis: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start() malsukcesis: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next() malsukcesis: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Ĉiuj kongruaj ŝlosiloj estas eksvalidiĝintaj/revokitaj.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Eliri  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Elekti  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Kontroli ŝlosilon  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP- kaj S/MIME-ŝlosiloj kongruaj\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"PGP-ŝlosiloj kongruaj\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME-ŝlosiloj kongruaj\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"ŝlosiloj kongruaj\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Ĉi tiu ŝlosilo ne estas uzebla: eksvalidiĝinta/malŝaltita/revokita.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID estas eksvalidiĝinta/malŝaltita/revokita.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"ID havas nedifinitan validecon.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"ID ne estas valida.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"ID estas nur iomete valida.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Ĉu vi vere volas uzi la ŝlosilon?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Serĉas ŝlosilojn kiuj kongruas kun \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Ĉu uzi keyID = \\\"%s\\\" por %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Donu keyID por %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Bonvolu doni la ŝlosilidentigilon: \"\n\n#: crypt-gpgme.c:4614\n#, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Eraro dum eksportado de ŝlosilo: %s\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP-ŝlosilo 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"GPGME: OpenPGP-protokolo ne disponeblas\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"GPGME: CMS-protokolo ne disponeblas\"\n\n#: crypt-gpgme.c:4721\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (s)ubskribi, subskribi (k)iel, (p)gp, (f)orgesi, aŭ ne (o)ppenc-\"\n\"moduso? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"skpffo\"\n\n#: crypt-gpgme.c:4731\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (s)ubskribi, subskribi (k)iel, s/(m)ime, (f)orgesi, aŭ ne (o)ppenc-\"\n\"moduso? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"skmffo\"\n\n#: crypt-gpgme.c:4744\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME ĉ(i)fri, (s)ubskribi, (k)iel, (a)mbaŭ, (p)gp, (f)or, aŭ (o)ppenc-\"\n\"moduso? \"\n\n#: crypt-gpgme.c:4745\nmsgid \"esabpfco\"\nmsgstr \"iskapffo\"\n\n#: crypt-gpgme.c:4750\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP ĉ(i)fri, (s)ubskribi, (k)iel, (a)mbaŭ, s/(m)ime, (f)or, aŭ (o)ppenc-\"\n\"moduso? \"\n\n#: crypt-gpgme.c:4751\nmsgid \"esabmfco\"\nmsgstr \"iskamffo\"\n\n#: crypt-gpgme.c:4762\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME ĉ(i)fri, (s)ubskribi, subskribi (k)iel, (a)mbaŭ, \\\"(p)gp\\\", aŭ \"\n\"(f)orgesi? \"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"iskapff\"\n\n#: crypt-gpgme.c:4768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP ĉ(i)fri, (s)ubskribi, subskribi (k)iel, (a)mbaŭ, \\\"s/(m)ime\\\", aŭ \"\n\"(f)orgesi? \"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"iskamff\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Subskribi kiel: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Malsukcesis kontroli sendinton\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Malsukcesis eltrovi sendinton\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (nuna horo: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s eligo sekvas%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Pasfrazo(j) forgesita(j).\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Ne eblas uzi PGP kun aldonaĵoj.  Ĉu refali al PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"Mesaĝo ne sendita: ne eblas uzi enteksta PGP kun aldonaĵoj.\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Alvokas PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Ne eblas sendi mesaĝon entekste.  Ĉu refali al PGP/MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Mesaĝo ne sendita.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"S/MIME-mesaĝoj sen informoj pri enhavo ne funkcias.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Provas eltiri PGP-ŝlosilojn...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Provas eltiri S/MIME-atestilojn...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Eraro: nekonata multipart/signed-protokolo %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Eraro: malĝusta strukturo de multipart/signed! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Averto: ne eblas kontroli %s/%s-subskribojn. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- La sekvaj datenoj estas subskribitaj --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Averto: ne eblas trovi subskribon. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fino de subskribitaj datenoj --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\\\"crypt_use_gpgme\\\" petita, sed ne konstruita kun GPGME\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Alvokas S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"jes\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"ne\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Ĉu eliri el Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"nekonata eraro\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Premu klavon por daŭrigi...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' por listo): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Neniu poŝtfako estas malfermita.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Ne estas mesaĝoj.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Poŝtfako estas nurlega.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funkcio nepermesata dum elektado de aldonoj.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Malestas videblaj mesaĝoj.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"%s: operacio ne permesiĝas de ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Ne eblas ŝanĝi skribostaton ĉe nurlega poŝtfako!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Ŝanĝoj al poŝtfako estos skribitaj ĉe eliro.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Ŝanĝoj al poŝtfako ne estos skribitaj.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Fini\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Skribi\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Nova mesaĝo\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Respondi\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Respondi al grupo\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Poŝtfako estis modifita de ekstere.  Flagoj povas esti malĝustaj.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Nova mesaĝo en ĉi tiu poŝtfako\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Poŝtfako estis modifita de ekstere.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Mankas markitaj mesaĝoj.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Nenio farenda.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Salti al mesaĝo: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Argumento devas esti mesaĝnumero.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Tiu mesaĝo ne estas videbla.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Nevalida mesaĝnumero.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Ne eblas forviŝi mesaĝo(j)n\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Forviŝi mesaĝojn laŭ la ŝablono: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Nenia ŝablono estas aktiva.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Ŝablono: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Limigi al mesaĝoj laŭ la ŝablono: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Por vidi ĉiujn mesaĝojn, limigu al \\\"all\\\".\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Ĉu eliri el Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Marki mesaĝojn laŭ la ŝablono: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Ne eblas malforviŝi mesaĝo(j)n\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Malforviŝi mesaĝojn laŭ la ŝablono: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Malmarki mesaĝojn laŭ la ŝablono: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Elsalutis el IMAP-serviloj.\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Malfermi poŝtfakon nurlege\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Malfermi poŝtfakon\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Neniu poŝtfako havas novan poŝton.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s ne estas poŝtfako.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Eliri el Mutt sen skribi?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Fadenoj ne estas ŝaltitaj.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Fadeno rompiĝis\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"Ne eblas rompi fadenon; mesaĝo ne estas parto de fadeno\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"Ne eblas ligi fadenojn\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Neniu 'Message-ID:'-ĉapaĵo disponeblas por ligi fadenon\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Unue, bonvolu marki mesaĝon por ligi ĝin ĉi tie\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Fadenoj ligitaj\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Neniu fadeno ligita\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Vi estas ĉe la lasta mesaĝo.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Malestas malforviŝitaj mesaĝoj.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Vi estas ĉe la unua mesaĝo.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Serĉo rekomencis ĉe la komenco.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Serĉo rekomencis ĉe la fino.\"\n\n#: curs_main.c:1608\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Malestas novaj mesaĝoj en ĉi tiu limigita rigardo.\"\n\n#: curs_main.c:1610\nmsgid \"No new messages.\"\nmsgstr \"Malestas novaj mesaĝoj.\"\n\n#: curs_main.c:1615\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Malestas nelegitaj mesaĝoj en ĉi tiu limigita rigardo.\"\n\n#: curs_main.c:1617\nmsgid \"No unread messages.\"\nmsgstr \"Malestas nelegitaj mesaĝoj.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\nmsgid \"Cannot flag message\"\nmsgstr \"Ne eblas flagi mesaĝon\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"Ne eblas (mal)ŝalti \\\"nova\\\"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Ne restas fadenoj.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Vi estas ĉe la unua fadeno.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Fadeno enhavas nelegitajn mesaĝojn.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\nmsgid \"Cannot delete message\"\nmsgstr \"Ne eblas forviŝi mesaĝon\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\nmsgid \"Cannot edit message\"\nmsgstr \"Ne eblas redakti mesaĝon\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"Ne eblas marki mesaĝo(j)n kiel legita(j)n\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\nmsgid \"Cannot undelete message\"\nmsgstr \"Ne eblas malforviŝi mesaĝon\"\n\n#: edit.c:41\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tenŝovi linion kiu komenciĝas per unuopa ~\\n\"\n\"~b adresoj\\taldoni adresojn al la linio Bcc:\\n\"\n\"~c adresoj\\taldoni adresojn al la linio Cc:\\n\"\n\"~f mesaĝoj\\tinkluzivi mesaĝojn\\n\"\n\"~F mesaĝoj\\tsame kiel ~f, sed inkluzivi ankaŭ la ĉapon\\n\"\n\"~h\\t\\tredakti la mesaĝoĉapon\\n\"\n\"~m mesaĝoj\\tinkluzivi kaj citi mesaĝojn\\n\"\n\"~M mesaĝoj\\tsame kiel ~m, sed inkluzivi ankaŭ la ĉapojn\\n\"\n\"~p\\t\\tpresi la mesaĝon\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tskribi la dosieron kaj eliri el la redaktilo\\n\"\n\"~r dosiero\\tlegi dosieron en la redaktilon\\n\"\n\"~t adresoj\\taldoni adresojn al la linio To:\\n\"\n\"~u\\t\\tredakti la antaŭan linion denove\\n\"\n\"~v\\t\\tredakti mesaĝon per la redaktilo $visual\\n\"\n\"~w dosiero\\tskribi mesaĝon al dosiero\\n\"\n\"~x\\t\\tforĵeti ŝanĝojn kaj eliri el la redaktilo\\n\"\n\"~?\\t\\tvidi ĉi tiun informon\\n\"\n\".\\t\\tsola en linio finas la enigon\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: nevalida mesaĝnumero.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Finu mesaĝon per . sur propra linio)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Mankas poŝtfako.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Mesaĝo enhavas:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(daŭrigi)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"mankas dosieronomo.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Nul linioj en mesaĝo.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Malbona IDN en %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: nekonata redaktokomando (~? por helpo)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"Ne eblis krei dumtempan poŝtfakon: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"Ne eblis skribi al dumtempa poŝtfako: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"Ne eblis stumpigi dumtempan poŝtfakon: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Mesaĝodosiero estas malplena!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Mesaĝo ne modifita!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Ne eblas malfermi mesaĝodosieron: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Ne eblas aldoni al poŝtfako: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Eraro.  Konservas dumtempan dosieron: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Ŝalti flagon\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Malŝalti flagon\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- Eraro: Neniu parto de Multipart/Alternative estis montrebla! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Parto #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Speco: %s/%s, Kodado: %s, Grando: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Unu aŭ pluraj partoj de ĉi tiu mesaĝo ne montriĝeblas\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Aŭtomata vidigo per %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Alvokas aŭtomatan vidigon per: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Ne eblas ruli %s. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Erareligo de %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"[-- Eraro: parto message/external ne havas parametro access-type --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Ĉi tiu %s/%s-parto \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(grando %s bitokoj) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"estas forviŝita --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- je %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- nomo: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Ĉi tiu %s/%s-parto ne estas inkluzivita, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"[-- kaj la indikita ekstera fonto eksvalidiĝis. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- kaj Mutt ne kapablas je la indikita alirmaniero %s. --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Ne eblas malfermi dumtempan dosieron!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Eraro: multipart/signed ne havas parametron 'protocol'!\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Ĉi tiu estas parto \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s ne estas konata \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(uzu '%s' por vidigi ĉi tiun parton)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(bezonas klavodifinon por 'view-attachments'!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: ne eblas aldoni dosieron\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ERARO: bonvolu raporti ĉi tiun cimon\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<NEKONATA>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Ĝeneralaj klavodifinoj:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Funkcioj kiuj ne havas klavodifinon:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Helpo por %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Malbona strukturo de histori-dosiero (linio %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"fulmklavo '^' por nuna poŝtfako malŝaltiĝis\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"poŝtfaka fulmklavo malvolvis al vaka regulesprimo\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Ne eblas fari unhook * de en hoko.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: nekonata speco de hook: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: Ne eblas forviŝi %s de en %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Nenia rajtiĝilo disponeblas\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Rajtiĝas (anonime)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonima rajtiĝo malsukcesis.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Rajtiĝas (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5-rajtiĝo malsukcesis.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Rajtiĝas (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI-rajtiĝo malsukcesis.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN estas malŝaltita ĉe ĉi tiu servilo.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Salutas...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Saluto malsukcesis.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Rajtiĝas (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL-rajtiĝo malsukcesis.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s ne estas valida IMAP-vojo\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Prenas liston de poŝtfakoj...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Poŝtfako ne ekzistas\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Krei poŝtfakon: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Poŝtfako devas havi nomon.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Poŝtfako kreita.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Renomi poŝtfakon %s al: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Renomado malsukcesis: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Poŝtfako renomita.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Poŝtfako fermita\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"CREATE malsukcesis: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Fermas la konekton al %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Ĉi tiu IMAP-servilo estas antikva.  Mutt ne funkcias kun ĝi.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Ĉu sekura konekto per TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Ne eblis negoci TLS-konekton\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Ĉifrata konekto ne disponeblas\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Elektas %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Eraro dum malfermado de poŝtfako\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Ĉu krei %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Forviŝo malsukcesis\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Markas %d mesaĝojn kiel forviŝitajn...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Skribas ŝanĝitajn mesaĝojn... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Eraro dum skribado de flagoj.  Ĉu tamen fermi?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Eraro dum skribado de flagoj\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Forviŝas mesaĝojn de la servilo...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE malsukcesis\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Ĉaposerĉo sen ĉaponomo: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Malbona nomo por poŝtfako\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Abonas %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Malabonas %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Abonas %s\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Malabonis %s\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Ne eblas preni ĉapojn de ĉi tiu versio de IMAP-servilo.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Ne eblis krei dumtempan dosieron %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Pritaksas staplon...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Prenas mesaĝoĉapojn...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Prenas mesaĝon...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"La mesaĝindekso estas malĝusta.  Provu remalfermi la poŝtfakon.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Alŝutas mesaĝon...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Kopias %d mesaĝojn al %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Kopias mesaĝon %d al %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Ĉu daŭrigi?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Ne disponeblas en ĉi tiu menuo.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Malbona regulesprimo: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Malsufiĉaj subesprimoj por spamŝablono\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: neniu ŝablono kongruas\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: neniu ŝablono kongruas\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%s-grupo: mankas -rx aŭ -addr.\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%s-grupo: averto: malbona IDN '%s'.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"attachments: mankas dispozicio\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"attachments: nevalida dispozicio\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"unattachments: mankas dispozicio\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"unattachments: nevalida dispozicio\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"adresaro: mankas adreso\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Averto: Malbona IDN '%s' en adreso '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"nevalida ĉaplinio\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: nekonata ordigmaniero\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): eraro en regula esprimo: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: nekonata variablo\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"reset: prefikso ne permesata\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"reset: valoro ne permesata\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Uzmaniero:  set variablo=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s estas enŝaltita\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s estas malŝaltita\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Nevalida valoro por opcio %s: \\\"%s\\\"\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: nevalida poŝtfakospeco\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: nevalida valoro (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"aranĝa eraro\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"troo de nombro\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: nevalida valoro\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: Nekonata speco.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: nekonata speco\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Eraro en %s, linio %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: eraroj en %s\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: legado ĉesis pro tro da eraroj en %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: eraro ĉe %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: tro da argumentoj\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: nekonata komando\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Eraro en komandlinio: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"ne eblas eltrovi la hejmdosierujon\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"ne eblas eltrovi la uzantonomo\"\n\n#: init.c:2970\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"ne eblas eltrovi la komputilretnomo per 'uname()'\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: mankas gruponomo\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"nesufiĉe da argumentoj\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"Makrooj estas nuntempe malŝaltitaj.\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Cirkla makroo trovita.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Klavo ne estas difinita.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Klavo ne estas difinita.  Premu '%s' por helpo.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: tro da argumentoj\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: nekonata menuo\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"malplena klavoserio\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: tro da argumentoj\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: nekonata funkcio\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: malplena klavoserio\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: tro da argumentoj\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: mankas argumentoj\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: funkcio ne ekzistas\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Donu ŝlosilojn (^G por nuligi): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Signo = %s, Okume = %o, Dekume = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Entjera troo -- ne eblas asigni memoron!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Mankas sufiĉa memoro!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Por kontakti la kreantojn, bonvolu skribi al <mutt-dev@mutt.org>.\\n\"\n\"Por raporti cimon, bonvolu iri al http://bugs.mutt.org/.\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Kopirajto (C) 1996-2016 Michael R. Elkins kaj aliaj.\\n\"\n\"Mutt venas kun ABSOLUTE NENIA GARANTIO; por detaloj tajpu 'mutt -vv'.\\n\"\n\"Mutt estas libera programo, kaj vi rajtas pludoni kopiojn\\n\"\n\"sub difinitaj kondiĉoj; tajpu 'mutt -vv' por detaloj.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Kopirajto (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Kopirajto (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Kopirajto (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Kopirajto (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Kopirajto (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Kopirajto (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Kopirajto (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Kopirajto (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Kopirajto (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Multaj aliaj homoj ne menciitaj ĉi tie kontribuis programliniojn,\\n\"\n\"riparojn, kaj sugestojn.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    Ĉi tiu programo estas libera; vi povas pludoni kopiojn kaj modifi\\n\"\n\"    ĝin sub la kondiĉoj de la Ĝenerala Publika Rajtigilo de GNU,\\n\"\n\"    kiel tio estas eldonita de Free Software Foundation; aŭ versio 2\\n\"\n\"    de la Rajtigilo, aŭ (laŭ via elekto) iu sekva versio.\\n\"\n\"\\n\"\n\"    Ĉi tiu programo estas disdonita kun la espero ke ĝi estos utila,\\n\"\n\"    sed SEN IA AJN GARANTIO; eĉ sen la implicita garantio de\\n\"\n\"    KOMERCA KVALITO aŭ ADEKVATECO POR DIFINITA CELO. Vidu la\\n\"\n\"    Ĝeneralan Publikan Rajtigilon de GNU por pli da detaloj.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    Vi devus esti ricevinta kopion de la Ĝenerala Publika Rajtigilo de\\n\"\n\"    GNU kun ĉi tiu programo; se ne, skribu al Free Software Foundation,\\n\"\n\"    Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, Usono.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"Uzmanieroj: mutt [<opcioj>] [-z] [-f <dosiero> | -yZ]\\n\"\n\"            mutt [<opcioj>] [-Ex] [-Hi <dosiero>] [-s <temo>] [-bc \"\n\"<adreso>]\\n\"\n\"                 [-a <dosiero> [...] --] <adreso> [...]\\n\"\n\"            mutt [<opcioj>] [-x] [-s <temo>] [-bc <adreso>]\\n\"\n\"                 [-a <dosiero> [...] --] <adreso> [...] < mesaĝo\\n\"\n\"            mutt [<opcioj>] -p\\n\"\n\"            mutt [<opcioj>] -A <nomo> [...]\\n\"\n\"            mutt [<opcioj>] -Q <variablo> [...]\\n\"\n\"            mutt [<opcioj>] -D\\n\"\n\"            mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"Opcioj:\\n\"\n\"  -A <nomo>      traduki la nomon per la adresaro\\n\"\n\"  -a <dosiero> [...] --\\n\"\n\"                 aldoni dosiero(j)n al la mesaĝo\\n\"\n\"  -b <adreso>    specifi adreson por blinda kopio (BCC)\\n\"\n\"  -c <adreso>    specifi adreson por kopio (CC)\\n\"\n\"  -D             montri en ĉefeligujo la valorojn de ĉiuj variabloj\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <nivelo>    skribi sencimigan eligon al ~/.muttdebug0\"\n\n#: main.c:137\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -E\\t\\tredakti la malnetaĵon (-H) aŭ la inkluzivitan dosieron (-i)\\n\"\n\"  -e <komando>   specifi komandon por ruligi post la starto\\n\"\n\"  -f <dosiero>   specifi la poŝtfakon por malfermi\\n\"\n\"  -F <dosiero>   specifi alian dosieron muttrc\\n\"\n\"  -H <dosiero>   specifi malnetan dosieron por legi la ĉapon kaj korpon\\n\"\n\"  -i <dosiero>   specifi dosieron kiun Mutt inkluzivu en la respondo\\n\"\n\"  -m <speco>     specifi implicitan specon de poŝtfako\\n\"\n\"  -n             indikas al Mutt ne legi la sisteman dosieron Muttrc\\n\"\n\"  -p             revoki prokrastitan mesaĝon\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <variablo>  pridemandi la valoron de agordo-variablo\\n\"\n\"  -R             malfermi poŝtfakon nurlege\\n\"\n\"  -s <temo>      specifi temlinion (en citiloj, se ĝi enhavas spacetojn)\\n\"\n\"  -v             montri version kaj parametrojn de la tradukaĵo\\n\"\n\"  -x             imiti la sendreĝimon de mailx\\n\"\n\"  -y             elekti poŝtfakon specifitan en via listo 'mailboxes'\\n\"\n\"  -z             eliri tuj, se ne estas mesaĝoj en la poŝtfako\\n\"\n\"  -Z             malfermi la unuan poŝtfakon kun nova mesaĝo; eliri tuj, se \"\n\"mankas\\n\"\n\"  -h             doni ĉi tiun helpmesaĝon\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Parametroj de la tradukaĵo:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Eraro dum startigo de la terminalo.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Eraro: valoro '%s' ne validas por '-d'.\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Sencimigo ĉe la nivelo %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG ne estis difinita por la tradukado.  Ignoriĝas.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s ne ekzistas.  Ĉu krei ĝin?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Ne eblas krei %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Malsukcesis analizi 'mailto:'-ligon\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Nenia ricevonto specifita.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"Ne eblas uzi opcio '-E' kun ĉefenigujo\\n\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: ne eblas aldoni dosieron.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Mankas poŝtfako kun nova poŝto.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Neniu enir-poŝtfako estas difinita.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Poŝtfako estas malplena.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Legiĝas %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Poŝtfako estas fuŝita!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Poŝtfako fuŝiĝis!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Fatala eraro!  Ne eblis remalfermi poŝtfakon!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Ne eblis ŝlosi poŝtfakon!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: mbox modifita, sed mankas modifitaj mesaĝoj! (Raportu ĉi tiun cimon.)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Skribiĝas %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Skribiĝas ŝanĝoj...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Skribo malsukcesis!  Skribis partan poŝtfakon al %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Ne eblis remalfermi poŝtfakon!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Remalfermas poŝtfakon...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Salti al: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Nevalida indeksnumero.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Neniaj registroj.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Ne eblas rulumi pli malsupren.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Ne eblas rulumi pli supren.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Ĉi tiu estas la unua paĝo.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Ĉi tiu estas la lasta paĝo.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Ĉi tiu estas la lasta elemento.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Ĉi tiu estas la unua elemento.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Serĉi pri: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Inversa serĉo pri: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Ne trovita.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Mankas markitaj registroj.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Serĉo ne eblas por ĉi tiu menuo.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Saltado ne funkcias ĉe dialogoj.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Markado ne funkcias.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Traserĉas %s...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"Ne eblis elbufrigi mesaĝon al disko\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): ne eblas ŝanĝi tempon de dosiero\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Nekonata SASL-profilo\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Eraro en asignado de SASL-konekto\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Eraro dum agordo de SASL-sekureco-trajtoj\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Eraro dum agordo de SASL-sekureco-forto\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Eraro dum agordo de ekstera uzantonomo de SASL\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Konekto al %s fermita\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL ne disponeblas.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Antaŭkonekta komando malsukcesis.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Eraro dum komunikado kun %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Malbona IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Serĉas pri %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Ne eblis trovi la servilon \\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Konektiĝas al %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Ne eblis konektiĝi al %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Ne trovis sufiĉe da entropio en via sistemo\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Plenigas entropiujon: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s havas malsekurajn permesojn!\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL malŝaltita pro manko de entropio\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"eraro ĉe legado aŭ skribado\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL malsukcesis: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Ne eblas akiri SSL-atestilon\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"%s-konekto per %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Nekonata\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[ne eblas kalkuli]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[nevalida dato]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Atestilo de servilo ankoraŭ ne validas\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Atestilo de servilo estas eksvalidiĝinta\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"ne eblas akiri atestilan temon\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"ne eblas akiri atestilan normalan nomon\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"posedanto de atestilo ne kongruas kun komputilretnomo %s\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Malsukcesis kontrolo de gastiganta atestilo: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Ĉi tiu atestilo apartenas al:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Ĉi tiu atestilo estis eldonita de:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Ĉi tiu atestilo estas valida\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"     de %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     al %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Fingrospuro: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"Kontrolo de SSL-atestilo (%d de %d en ĉeno)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(m)alakcepti, akcepti (u)nufoje, (a)kcepti ĉiam\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"mua\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(m)alakcepti, akcepti (u)nufoje\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"mu\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Averto: Ne eblis skribi atestilon\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Atestilo skribita\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Eraro: neniu TLS-konekto malfermita\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Ĉiuj disponeblaj protokoloj por TLS/SSL-konekto malŝaltitaj\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"Rekta elekto de ĉifra algoritmo per $ssl_ciphers ne subtenatas\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL/TLS-konekto per %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Eraro dum starigo de gnutls-atestilo-datenoj\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Eraro dum traktado de atestilodatenoj\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"Averto: servila atestilo estas subskribita kun malsekura algoritmo\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1-fingrospuro: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5-fingrospuro: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"AVERTO: Atestilo de servilo ankoraŭ ne validas\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"AVERTO: Atestilo de servilo estas eksvalidiĝinta\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"AVERTO: Atestilo de servilo estas revokita\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"AVERTO: Nomo de serviloj ne kongruas kun atestilo\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"AVERTO: Subskribinto de servilo-atestilo ne estas CA\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Eraro dum kontrolo de atestilo (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Atestilo ne estas X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Konektiĝas per \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Tunelo al %s donis eraron %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Tuneleraro dum komunikado kun %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Dosiero estas dosierujo; ĉu skribi sub ĝi? [(j)es, (n)e, ĉ(i)uj]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"jni\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Tio estas dosierujo; ĉu skribi dosieron en ĝi?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Dosiero en dosierujo: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Dosiero ekzistas; ĉu (s)urskribi, (a)ldoni, aŭ (n)uligi?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"san\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Ne eblas skribi mesaĝon al POP-poŝtfako.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Ĉu aldoni mesaĝojn al %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s ne estas poŝtfako!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Tro da ŝlosoj; ĉu forigi la ŝloson por %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Ne eblas ŝlosi %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Tro da tempo pasis dum provado akiri fcntl-ŝloson!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Atendas fcntl-ŝloson... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Tro da tempo pasis dum provado akiri flock-ŝloson!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Atendas flock-ŝloson... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Ne eblis ŝlosi %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Ne eblis aktualigi la poŝtfakon %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Ĉu movi legitajn mesaĝojn al %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Ĉu forpurigi %d forviŝitan mesaĝon?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Ĉu forpurigi %d forviŝitajn mesaĝojn?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Movas legitajn mesaĝojn al %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Poŝtfako estas neŝanĝita.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d retenite, %d movite, %d forviŝite.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d retenite, %d forviŝite.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Premu '%s' por (mal)ŝalti skribon\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Uzu 'toggle-write' por reebligi skribon!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Poŝtfako estas markita kiel neskribebla. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Poŝtfako sinkronigita.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Ne eblas skribi mesaĝon\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Entjera troo -- ne eblas asigni memoron.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"AntPĝ\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"SekvPĝ\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Vidi Partojn\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Sekva\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Fino de mesaĝo estas montrita.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Vi estas ĉe la komenco de la mesaĝo\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Helpo estas nun montrata.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Ne plu da citita teksto.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Ne plu da necitita teksto post citita teksto.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"Plurparta mesaĝo ne havas limparametron!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Eraro en esprimo: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Malplena esprimo\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Nevalida tago de monato: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Nevalida monato: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Nevalida relativa dato: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"eraro en ŝablono ĉe: %s\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"mankas ŝablono: %s\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"krampoj ne kongruas: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: nevalida ŝablona modifilo\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: ne funkcias en ĉi tiu reĝimo\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"parametro mankas\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"krampoj ne kongruas: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"malplena ŝablono\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"eraro: nekonata funkcio %d (raportu ĉi tiun cimon)\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Tradukiĝas serĉŝablono...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Ruliĝas komando je trafataj mesaĝoj...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Mankas mesaĝoj kiuj plenumas la kondiĉojn.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Serĉas...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Serĉo atingis la finon sen trovi trafon\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Serĉo atingis la komencon sen trovi trafon\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Serĉo interrompita.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Donu PGP-pasfrazon:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP-pasfrazo forgesita.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Eraro: ne eblas krei PGP-subprocezon! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fino de PGP-eligo --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"*Programeraro*.  Bonvolu raporti.\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Eraro: ne eblas krei PGP-subprocezon! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Malĉifro malsukcesis\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Ne eblas malfermi PGP-subprocezon!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Ne eblas alvoki PGP\"\n\n#: pgp.c:1730\n#, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (s)ubskribi, subskribi (k)iel, %s, (f)orgesi, aŭ ne (o)ppenc-moduso? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/MIM(e)\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(e)nteksta\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"skffoe\"\n\n#: pgp.c:1742\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (s)ubskribi, subskribi (k)iel, (f)orgesi, aŭ ne (o)ppenc-moduso? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"skffo\"\n\n#: pgp.c:1760\n#, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP ĉ(i)fri, (s)ubskribi, (k)iel, (a)mbaŭ, %s, (f)or, aŭ (o)ppenc-moduso? \"\n\n#: pgp.c:1763\nmsgid \"esabfcoi\"\nmsgstr \"iskaffoe\"\n\n#: pgp.c:1768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"PGP ĉ(i)fri, (s)ubskribi, subskribi (k)iel, (a)mbaŭ, (f)or, aŭ (o)ppenc-\"\n\"moduso? \"\n\n#: pgp.c:1769\nmsgid \"esabfco\"\nmsgstr \"iskaffo\"\n\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"PGP ĉ(i)fri, (s)ubskribi, subskribi (k)iel, (a)mbaŭ, %s, aŭ (f)orgesi? \"\n\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"iskaffe\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP ĉ(i)fri, (s)ubskribi, subskribi (k)iel, (a)mbaŭ, aŭ (f)orgesi? \"\n\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"iskaff\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Prenas PGP-ŝlosilon...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\"Ĉiuj kongruaj ŝlosiloj estas eksvalidiĝintaj, revokitaj, aŭ malŝaltitaj.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP-ŝlosiloj kiuj kongruas kun <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP-ŝlosiloj kiuj kongruas kun \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Ne eblas malfermi /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP-ŝlosilo %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Servilo ne havas la komandon TOP.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Ne eblas skribi la ĉapaĵon al dumtempa dosiero!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Servilo ne havas la komandon UIDL.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d mesaĝoj perdiĝis.  Provu remalfermi la poŝtfakon.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s ne estas valida POP-vojo\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Prenas liston de mesaĝoj...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Ne eblas skribi mesaĝon al dumtempa dosiero!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Markas mesaĝojn kiel forviŝitajn...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Kontrolas pri novaj mesaĝoj...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP-servilo ne estas difinita.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Malestas novaj mesaĝoj en POP-poŝtfako.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Ĉu forviŝi mesaĝojn de servilo?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Legas novajn mesaĝojn (%d bitokojn)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Eraro dum skribado de poŝtfako!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d el %d mesaĝoj legitaj]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Servilo fermis la konekton!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Rajtiĝas (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"POP-horstampo malvalidas!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Rajtiĝas (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP-rajtiĝo malsukcesis.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Servilo ne havas la komandon USER.\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Nevalida POP-adreso: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Ne eblas lasi mesaĝojn ĉe la servilo.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Eraro dum konektiĝo al servilo: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Fermas la konekton al POP-servilo...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Kontrolas mesaĝindeksojn...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Konekto perdita.  Ĉu rekonekti al POP-servilo?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Prokrastitaj Mesaĝoj\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Malestas prokrastitaj mesaĝoj.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Nevalida kripto-ĉapo\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Nevalida S/MIME-ĉapo\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Malĉifras mesaĝon...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Malĉifro malsukcesis.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nova Demando\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Aldoni Nomon\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Serĉi\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Atendas respondon...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Demandokomando ne difinita.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Demando\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Demando: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Demando '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Tubo\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Presi\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Skribas...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Parto skribita.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"AVERTO!  Vi estas surskribonta %s; ĉu daŭrigi?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Parto filtrita.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtri tra: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Trakti per: \"\n\n#: recvattach.c:710\n#, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Mi ne scias kiel presi %s-partojn!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Ĉu presi markitajn partojn?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Ĉu presi parton?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Ne eblas malĉifri ĉifritan mesaĝon!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Partoj\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Mankas subpartoj por montri!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Ne eblas forviŝi parton de POP-servilo.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Mutt ne kapablas forviŝi partojn el ĉifrita mesaĝo.\"\n\n#: recvattach.c:1132\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Forviŝi partojn el ĉifrita mesaĝo eble malvalidigas la subskribon.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Mutt kapablas forviŝi nur multipart-partojn.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Vi povas redirekti nur message/rfc822-partojn.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Eraro dum redirektado de mesaĝo!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Eraro dum redirektado de mesaĝoj!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Ne eblas malfermi dumtempan dosieron %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Ĉu plusendi kiel kunsendaĵojn?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"Ne eblas malkodi ĉiujn markitajn partojn.  Ĉu MIME-plusendi la aliajn?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Ĉu plusendi MIME-pakita?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Ne eblas krei %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Ne eblas trovi markitajn mesaĝojn.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Neniu dissendolisto trovita!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"Ne eblas malkodi ĉiujn markitajn partojn.  Ĉu MIME-paki la aliajn?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Aldoni\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Enŝovi\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Forviŝi\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"Bone\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Ne eblas preni type2.list de mixmaster!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Elekti plusendiloĉenon.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Eraro: %s ne estas uzebla kiel la fina plusendilo de ĉeno.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster-ĉenoj estas limigitaj al %d elementoj.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"La plusendiloĉeno estas jam malplena.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Vi jam elektis la unuan elementon de la ĉeno.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Vi jam elektis la lastan elementon de la ĉeno.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster ne akceptas la kampon Cc aŭ Bcc en la ĉapo.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"Bonvolu doni ĝustan valoron al \\\"hostname\\\" kiam vi uzas mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Eraro dum sendado de mesaĝo; ido finis per %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Eraro dum sendado de mesaĝo.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Malĝuste strukturita elemento por speco %s en \\\"%s\\\" linio %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Neniu mailcap-vojo specifita\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"mailcap-regulo por speco %s ne trovita\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: nesufiĉe da argumentoj\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: tro da argumentoj\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"Eraro: score: nevalida nombro\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Mankas temlinio; ĉu nuligi?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Mankas temlinio; eliras.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Ĉu respondi al %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Ĉu respondi grupe al %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Neniuj markitaj mesaĝoj estas videblaj!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Ĉu inkluzivi mesaĝon en respondo?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Inkluzivas cititan mesaĝon...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Ne eblis inkluzivi ĉiujn petitajn mesaĝojn!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Ĉu plusendi kiel kunsendaĵon?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Pretigas plusenditan mesaĝon...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Ĉu revoki prokrastitan mesaĝon?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Ĉu redakti plusendatan mesaĝon?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Ĉu nuligi nemodifitan mesaĝon?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Nemodifita mesaĝon nuligita\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Mesaĝo prokrastita.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Neniu ricevanto estas specifita!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Neniuj ricevantoj estis specifitaj.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Mankas temlinio; ĉu haltigi sendon?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Temlinio ne specifita.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Sendas mesaĝon...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Ĉu konservi parton en Fcc?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Ne eblis sendi la mesaĝon.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Mesaĝo sendita.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Sendas en fono.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Nenia limparametro trovita! (Raportu ĉi tiun cimon.)\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s ne plu ekzistas!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s ne estas normala dosiero.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Ne eblas malfermi %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"Necesas difini $sendmail por povi sendi retpoŝton.\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Eraro dum sendado de mesaĝo; ido finis per %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Eligo de la liverprocezo\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Malbona IDN %s dum kreado de resent-from.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Eliras.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Ricevis %s...  Eliras.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Ricevis signalon %d...  Eliras.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Donu S/MIME-pasfrazon:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Fidate        \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Kontrolite    \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Nekontrolite  \"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Eksvalidiĝinte\"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Revokite      \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Nevalida      \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Nekonate      \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME-atestiloj kiuj kongruas kun \\\"%s\\\".\"\n\n#: smime.c:472\nmsgid \"ID is not trusted.\"\nmsgstr \"ID ne fidatas.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Donu keyID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Nenia (valida) atestilo trovita por %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Eraro: ne povis krei OpenSSL-subprocezon!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"mankas 'certfile'\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"mankas poŝtfako\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Nenia eliro de OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"Ne eblas subskribi: neniu ŝlosilo specifita.  Uzu \\\"subskribi kiel\\\".\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Ne eblas malfermi OpenSSL-subprocezon!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fino de OpenSSL-eligo --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Eraro: ne eblas krei OpenSSL-subprocezon! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- La sekvaj datenoj estas S/MIME-ĉifritaj --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- La sekvaj datenoj estas S/MIME-subskribitaj --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fino de S/MIME-ĉifritaj datenoj. --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fino de S/MIME-subskribitaj datenoj. --]\\n\"\n\n# Atentu -- mi ŝanĝis la ordon, sed la literoj devas sekvi la originalan.\n#: smime.c:2109\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (s)ubskribi, (k)iel, ĉifri (p)er, (f)orgesi, aŭ ne (o)ppenc-moduso? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"spkffo\"\n\n# Atentu -- mi ŝanĝis la ordon, sed la literoj devas sekvi la originalan.\n#: smime.c:2123\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME ĉ(i)fri, (p)er, (s)ubskribi, (k)iel, (a)mbaŭ, (f)or, aŭ (o)ppenc-\"\n\"moduso? \"\n\n#: smime.c:2124\nmsgid \"eswabfco\"\nmsgstr \"ispkaffo\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME ĉ(i)fri, (s)ubskribi, ĉifri (p)er, subskribi (k)iel, (a)mbaŭ, aŭ \"\n\"(f)orgesi? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"ispkaff\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Elekti algoritmofamilion: 1: DES, 2: RC2, 3: AES, aŭ (f)orgesi? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"draf\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triobla-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SMTP-konekto malsukcesis: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SMTP-konekto malsukcesis: ne povis malfermi %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"Neniu 'de'-adreso indikatas\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"SMTP-konekto malsukcesis: legeraro\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"SMTP-konekto malsukcesis: skriberaro\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Nevalida respondo de servilo\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Nevalida SMTP-adreso: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP-servilo ne akceptas rajtiĝon\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP-rajtiĝo bezonas SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"%s-rajtiĝo malsukcesis; provante sekvan metodon\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL-rajtiĝo malsukcesis\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Ordigas poŝtfakon...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Ne eblis trovi ordigfunkcion! (Raportu ĉi tiun cimon.)\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(mankas poŝtfako)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Patra mesaĝo ne estas videbla en ĉi tiu limigita rigardo.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Patra mesaĝo ne estas havebla.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"malplena funkcio\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"fino de kondiĉa rulo (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"devigi vidigon de parto per mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"vidigi parton kiel tekston\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"ŝalti aŭ malŝalti montradon de subpartoj\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"iri al fino de paĝo\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"redirekti mesaĝon al alia adreso\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"elekti novan dosieron en ĉi tiu dosierujo\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"vidigi dosieron\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"montri la nomon de la elektita dosiero\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"aboni ĉi tiun poŝtfakon (nur IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"malaboni ĉi tiun poŝtfakon (nur IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"elekti, ĉu vidi ĉiujn, aŭ nur abonitajn poŝtfakojn (nur IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"listigi poŝtfakojn kun nova mesaĝo\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"ŝanĝi la dosierujon\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"kontroli poŝtfakojn pri novaj mesaĝoj\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"aldoni dosiero(j)n al ĉi tiu mesaĝo\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"aldoni mesaĝo(j)n al ĉi tiu mesaĝo\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"redakti la BCC-liston\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"redakti la CC-liston\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"redakti priskribon de parto\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"redakti kodadon de parto\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"donu dosieron, al kiu la mesaĝo estu skribita\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"redakti la dosieron aldonotan\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"redakti la From-kampon\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"redakti la mesaĝon kun ĉapo\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"redakti la mesaĝon\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"redakti parton, uzante mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"redakti la kampon Reply-To\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"redakti la temlinion de le mesaĝo\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"redakti la liston de ricevontoj\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"krei novan poŝtfakon (nur IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"redakti MIME-enhavospecon de parto\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"akiri dumtempan kopion de parto\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"apliki ispell al la mesaĝo\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"verki novan parton per mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"ŝalti aŭ malŝalti rekodadon de ĉi tiu parto\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"skribi ĉi tiun mesaĝon por sendi ĝin poste\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"renomi/movi aldonitan dosieron\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"sendi la mesaĝon\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"ŝalti dispozicion inter \\\"inline\\\" kaj \\\"attachment\\\"\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"elekti ĉu forviŝi la dosieron post sendado\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"aktualigi la kodadon de parto\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"skribi la mesaĝon al poŝtfako\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"kopii mesaĝon al dosiero/poŝtfako\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"aldoni sendinton al adresaro\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"movi registron al fino de ekrano\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"movi registron al mezo de ekrano\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"movi registron al komenco de ekrano\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"fari malkoditan kopion (text/plain)\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"fari malkoditan kopion (text/plain) kaj forviŝi\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"forviŝi registron\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"forviŝi ĉi tiun poŝtfakon (nur IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"forviŝi ĉiujn mesaĝojn en subfadeno\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"forviŝi ĉiujn mesaĝojn en fadeno\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"montri plenan adreson de sendinto\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"montri mesaĝon kaj (mal)ŝalti montradon de plena ĉapo\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"montri mesaĝon\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"redakti la krudan mesaĝon\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"forviŝi la signon antaŭ la tajpmontrilo\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"movi la tajpmontrilon unu signon maldekstren\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"movi la tajpmontrilon al la komenco de la vorto\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"salti al la komenco de la linio\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"rondiri tra enir-poŝtfakoj\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"kompletigi dosieronomon aŭ nomon el la adresaro\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"kompletigi adreson kun demando\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"forviŝi la signon sub la tajpmontrilo\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"salti al la fino de la linio\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"movi la tajpmontrilon unu signon dekstren\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"movi la tajpmontrilon al la fino de la vorto\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"rulumi malsupren tra la histori-listo\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"rulumi supren tra la histori-listo\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"forviŝi signojn de la tajpmontrilo ĝis linifino\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"forviŝi signojn de la tajpmontrilo ĝis fino de la vorto\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"forviŝi ĉiujn signojn en la linio\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"forviŝi la vorton antaŭ la tajpmontrilo\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"citi la sekvontan klavopremon\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"interŝanĝi la signon sub la tajpmontrilo kun la antaŭa\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"majuskligi la vorton\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"konverti la vorton al minuskloj\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"konverti la vorton al majuskloj\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"enigi muttrc-komandon\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"enigi dosierŝablonon\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"eliri el ĉi tiu menuo\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtri parton tra ŝelkomando\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"iri al la unua registro\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"ŝanĝi la flagon 'grava' de mesaĝo\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"plusendi mesaĝon kun komentoj\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"elekti la aktualan registron\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"respondi al ĉiuj ricevintoj\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"rulumi malsupren duonon de paĝo\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"rulumi supren duonon de paĝo\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"ĉi tiu ekrano\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"salti al indeksnumero\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"iri al la lasta registro\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"respondi al specifita dissendolisto\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"ruligi makroon\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"verki novan mesaĝon\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"duigi la fadenon\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"malfermi alian poŝtfakon\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"malfermi alian poŝtfakon nurlege\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"malŝalti flagon ĉe mesaĝo\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"forviŝi mesaĝojn laŭ ŝablono\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"devigi prenadon de mesaĝoj de IMAP-servilo\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"elsaluti el ĉiuj IMAP-serviloj\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"elŝuti mesaĝojn de POP-servilo\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"iri al la unua mesaĝo\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"iri al la lasta mesaĝo\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"montri nur la mesaĝojn kiuj kongruas kun ŝablono\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"ligi markitan mesaĝon al ĉi tiu\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"malfermi sekvan poŝtfakon kun nova poŝto\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"salti al la unua nova mesaĝo\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"salti al la sekva nova aŭ nelegita mesaĝo\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"salti al la sekva subfadeno\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"salti al la sekva fadeno\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"salti al la sekva malforviŝita mesaĝo\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"salti al la sekva nelegita mesaĝo\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"salti al patra mesaĝo en fadeno\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"salti al la antaŭa fadeno\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"salti al la antaŭa subfadeno\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"salti al la antaŭa malforviŝita mesaĝo\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"salti al la antaŭa nova mesaĝo\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"salti al la antaŭa nova aŭ nelegita mesaĝo\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"salti al la antaŭa nelegita mesaĝo\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"marki la aktualan fadenon kiel legitan\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"marki la aktualan subfadenon kiel legitan\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"ŝalti flagon ĉe mesaĝo\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"skribi ŝanĝojn al poŝtfako\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"marki mesaĝojn laŭ ŝablono\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"malforviŝi mesaĝojn laŭ ŝablono\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"malmarki mesaĝojn laŭ ŝablono\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"iri al la mezo de la paĝo\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"iri al la sekva registro\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"rulumi malsupren unu linion\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"iri al la sekva paĝo\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"salti al la fino de la mesaĝo\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"ŝalti aŭ malŝalti montradon de citita teksto\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"supersalti cititan tekston\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"salti al la komenco de mesaĝo\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"trakti mesaĝon/parton per ŝelkomando\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"iri al la antaŭa registro\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"rulumi supren unu linion\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"iri al la antaŭa paĝo\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"presi la aktualan registron\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"demandi eksteran programon pri adresoj\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"aldoni novajn demandrezultojn al jamaj rezultoj\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"skribi ŝanĝojn al poŝtfako kaj eliri\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"revoki prokrastitan mesaĝon\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"rekrei la enhavon de la ekrano\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{interna}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"renomi ĉi tiun poŝtfakon (nur IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"respondi al mesaĝo\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"uzi ĉi tiun mesaĝon kiel modelon por nova mesaĝo\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"skribi mesaĝon/parton al poŝtfako/dosiero\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"serĉi pri regula esprimo\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"serĉi malantaŭen per regula esprimo\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"serĉi pri la sekva trafo\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"serĉi pri la sekva trafo en la mala direkto\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"ŝalti aŭ malŝalti alikolorigon de serĉŝablono\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"alvoki komandon en subŝelo\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"ordigi mesaĝojn\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"ordigi mesaĝojn en inversa ordo\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"marki la aktualan registron\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"apliki la sekvan komandon al ĉiuj markitaj mesaĝoj\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"apliki la sekvan funkcion NUR al markitaj mesaĝoj\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"marki la aktualan subfadenon\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"marki la aktualan fadenon\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"ŝanĝi la flagon 'nova' de mesaĝo\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"(mal)ŝalti, ĉu la poŝtfako estos reskribita\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"(mal)ŝali, ĉu vidi poŝtfakojn aŭ ĉiujn dosierojn\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"iri al la supro de la paĝo\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"malforviŝi la aktualan registron\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"malforviŝi ĉiujn mesaĝojn en fadeno\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"malforviŝi ĉiujn mesaĝojn en subfadeno\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"montri la version kaj daton de Mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"vidigi parton, per mailcap se necesas\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"montri MIME-partojn\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"montri la klavokodon por klavopremo\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"montri la aktivan limigŝablonon\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"(mal)kolapsigi la aktualan fadenon\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"(mal)kolapsigi ĉiujn fadenojn\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"aldoni publikan PGP-ŝlosilon\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"montri PGP-funkciojn\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"sendi publikan PGP-ŝlosilon\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"kontroli publikan PGP-ŝlosilon\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"vidi la uzant-identigilon de la ŝlosilo\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"kontroli pri klasika PGP\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Akcepti la konstruitan ĉenon\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Aldoni plusendilon al la ĉeno\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Enŝovi plusendilon en la ĉenon\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Forviŝi plusendilon el la ĉeno\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Elekti la antaŭan elementon de la ĉeno\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Elekti la sekvan elementon de la ĉeno\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"Sendi la mesaĝon tra mixmaster-plusendiloĉeno\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"fari malĉifritan kopion kaj forviŝi\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"fari malĉifritan kopion\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"forviŝi pasfrazo(j)n el memoro\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"eltiri publikajn ŝlosilojn\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"montri S/MIME-funkciojn\"\n\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Averto: mesaĝo ne enhavas 'From:'-ĉapaĵon\"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"forviŝi mesaĝo(j)n\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" en ĉi tiu limigita rigardo\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"forviŝi mesaĝon\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"redakti mesaĝon\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"eraro en esprimo\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Interna eraro.  Informu al <roessler@does-not-exist.org>.\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Eraro: misformita PGP/MIME-mesaĝo! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Uzas GPGME-malantaŭon, kvankam neniu gpg-agent rulas\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Eraro: multipart/encrypted ne havas parametron protocol!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"Identigilo %s estas nekontrolita. Ĉu vi volas uzi ĝin por %s?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Ĉu uzi (nefidatan!) identigilon %s por %s?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Ĉu uzi identigilon %s por %s?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Averto: Vi ankoraŭ ne decidis fidi identigilon %s. (ajna klavo por \"\n#~ \"daŭrigi)\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Averto: intera atestilo ne trovita.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Neĉifrita\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \" --\\t\\ttrakti restantajn argumentojn kiel adresojn, eĉ komenciĝantajn per \"\n#~ \"streko\\n\"\n#~ \"\\t\\tse -a estas uzata kun pluraj dosiernomoj, -- estas deviga\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Mankas serĉŝablono.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Inversa serĉo: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Serĉo: \"\n\n#~ msgid \"            created: \"\n#~ msgstr \"           kreita:\"\n\n#~ msgid \"*BAD* signature claimed to be from: \"\n#~ msgstr \"*MALBONA* subskribo laŭpretende de: \"\n\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Eraro dum kontrolado de subskribo\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"Kontrolo de SSL-atestilo\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"Kontrolo de TLS/SSL-atestilo\"\n\n#~ msgid \"SASL failed to get local IP address\"\n#~ msgstr \"SASL malsukcesis akiri lokan IP-adreson\"\n\n#~ msgid \"SASL failed to parse local IP address\"\n#~ msgstr \"SASL malsukcesis analizi lokan IP-adreson\"\n\n#~ msgid \"SASL failed to get remote IP address\"\n#~ msgstr \"SASL malsukcesis akiri foran IP-adreson\"\n\n#~ msgid \"SASL failed to parse remote IP address\"\n#~ msgstr \"SASL malsukcesis analizi foran IP-adreson\"\n"
  },
  {
    "path": "po/es.po",
    "content": "# Spanish translation of mutt\n# Copyright (C) 1999-2001 Boris Wesslowski <Boris@Wesslowski.com>\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt 1.4\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2001-06-08 19:44+02:00\\n\"\n\"Last-Translator: Boris Wesslowski <Boris@Wesslowski.com>\\n\"\n\"Language-Team: -\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=ISO-8859-1\\n\"\n\"Content-Transfer-Encoding: 8-bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Nombre de usuario en %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Contrasea para %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Salir\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Sup.\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Recuperar\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Seleccionar\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Ayuda\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"No tiene nombres en la libreta!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Libreta\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Nombre corto: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Este nombre ya est definido en la libreta!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Direccin: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Nombre: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Aceptar?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Guardar en archivo: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Error al tratar de mostrar el archivo\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Direccin aadida.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Error al tratar de mostrar el archivo\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"No se pudo encontrar el nombre, continuar?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"La entrada \\\"compose\\\" en el archivo Mailcap requiere %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Error al ejecutar \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Error al abrir el archivo para leer las cabeceras.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Error al abrir el archivo para quitar las cabeceras.\"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \"Error al abrir el archivo para leer las cabeceras.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"\"\n\"Falta la entrada \\\"compose\\\" de mailcap para %s, creando archivo vaco.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"La entrada \\\"edit\\\" en el archivo Mailcap requiere %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Falta la entrada \\\"edit\\\" para %s en el archivo Mailcap\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"\"\n\"No hay una entrada correspondiente en el archivo mailcap. Viendo como texto.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"Tipo MIME no definido.  No se puede mostrar el archivo adjunto.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"No se pudo crear el filtro\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Archivos adjuntos\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Archivos adjuntos\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"No se pudo crear filtro\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Error de escritura!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"No s cmo se imprime eso!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Directorio\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Patrn\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s no es un directorio.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Buzones [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Suscrito [%s], patrn de archivos: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Directorio [%s], patrn de archivos: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"No se puede adjuntar un directorio!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Ningn archivo coincide con el patrn\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Crear slo est soportado para buzones IMAP\"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Crear slo est soportado para buzones IMAP\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Suprimir slo est soportado para buzones IMAP\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"No se pudo crear el filtro\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Realmente quiere suprimir el buzn \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"El buzn fue suprimido.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"El buzn no fue suprimido.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Cambiar directorio a:\"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Error leyendo directorio.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Patrn de archivos: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"rden inverso por (f)echa, (t)amao, (a)lfabticamente o (s)in rden? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Ordenar por (f)echa, (t)amao, (a)lfabticamente o (s)in rden? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"fats\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nombre del nuevo archivo: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"No se puede mostrar el directorio\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Error al tratar de mostrar el archivo\"\n\n#: buffy.c:504\n#, fuzzy\nmsgid \"New mail in \"\nmsgstr \"Correo nuevo en %s.\"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: color no soportado por la terminal\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: color desconocido\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: objeto desconocido\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: comando slo vlido para objetos en el ndice\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: parmetros insuficientes\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Faltan parmetros.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: faltan parmetros\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: faltan parmetros\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: atributo desconocido\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"Faltan parmetros\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"Demasiados parmetros\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"No hay soporte para colores estndar\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Verificar firma PGP?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"No se pudo crear el archivo temporal!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"No se pudo crear el filtro de muestra\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"No se pudo copiar el mensaje\"\n\n#: commands.c:189\n#, fuzzy\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"Firma S/MIME verificada con xito.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\n#, fuzzy\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"Firma S/MIME NO pudo ser verificada.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"Firma PGP verificada con xito.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"Firma PGP NO pudo ser verificada.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Comando: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Rebotar mensaje a: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Rebotar mensajes marcados a: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Direccin errnea!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Rebotar mensaje a %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Rebotar mensajes a %s\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Message not bounced.\"\nmsgstr \"Mensaje rebotado.\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Messages not bounced.\"\nmsgstr \"Mensajes rebotados.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Mensaje rebotado.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Mensajes rebotados.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"No se pudo crear el proceso del filtro\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Redirigir el mensaje al comando:\"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"No ha sido definida la rden de impresin.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Impimir mensaje?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Imprimir mensajes marcados?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Mensaje impreso\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Mensajes impresos\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"El mensaje no pudo ser imprimido\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Los mensajes no pudieron ser imprimidos\"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"rden-rev fech(a)/d(e)/(r)ece/a(s)nto/(p)ara/(h)ilo/(n)ada/ta(m)a/punta(j): \"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"rden fech(a)/d(e)/(r)ecep/a(s)unto/(p)ara/(h)ilo/(n)ada/ta(m)ao/punta(j)e: \"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"aersphnmj\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Comando de shell: \"\n\n#: commands.c:741\n#, fuzzy, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"%s%s en buzn\"\n\n#: commands.c:742\n#, fuzzy, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"%s%s en buzn\"\n\n#: commands.c:743\n#, fuzzy, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"%s%s en buzn\"\n\n#: commands.c:744\n#, fuzzy, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"%s%s en buzn\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s%s en buzn\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s%s en buzn\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" marcado\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Copiando a %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Convertir a %s al mandar?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type cambiado a %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"El mapa de caracteres fue cambiado a %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"dejando sin convertir\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"convirtiendo\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"No hay archivos adjuntos.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Mandar\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Abortar\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Adjuntar archivo\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Descrip\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Marcar no est soportado.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Firmar, cifrar\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Cifrar\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Firmar\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"(continuar)\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" firmar como: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<por defecto>\"\n\n#: compose.c:165\n#, fuzzy\nmsgid \"Encrypt with: \"\nmsgstr \"Cifrar\"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] ya no existe!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] modificado. Rehacer codificacin?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Archivos adjuntos\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"No puede borrar la nica pieza.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Adjuntando archivos seleccionados...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Imposible adjuntar %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Abrir buzn para adjuntar mensaje de\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Imposible bloquear buzn!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"No hay mensajes en esa carpeta.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Marque el mensaje que quiere adjuntar.\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Imposible adjuntar!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Recodificado slo afecta archivos adjuntos de tipo texto.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"El archivo adjunto actual no ser convertido.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"El archivo adjunto actual ser convertido.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"La codificacin no es vlida.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Guardar una copia de este mensaje?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Renombrar a: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, fuzzy, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"No se pudo encontrar en disco: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Archivo nuevo: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type es de la forma base/subtipo\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Content-Type %s desconocido\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"No se pudo creal el archivo %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Lo que tenemos aqu es un fallo al producir el archivo a adjuntar\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Posponer el mensaje?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Guardar mensaje en el buzn\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Escribiendo mensaje en %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Mensaje escrito.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"No se pudo crear archivo temporal\"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Certificado del servidor ha expirado\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"SSL no est disponible.\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \"Huella: %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Crear %s?\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Error en lnea de comando: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin de datos firmados --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Error: no se pudo cear archivo temporal! --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PRINCIPIO DEL MENSAJE PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PRINCIPIO DEL BLOQUE DE CLAVES PBLICAS PGP --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PRINCIPIO DEL MENSAJE FIRMADO CON PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\n#, fuzzy\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- FIN DEL MENSAJE PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- FIN DEL BLOQUE DE CLAVES PBLICAS PGP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\n#, fuzzy\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- FIN DEL MENSAJE FIRMADO CON PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: no se encontr el principio del mensaje PGP! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Error: no se pudo cear archivo temporal! --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Lo siguiente est cifrado con PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Lo siguiente est cifrado con PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin de datos cifrados con PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\n#, fuzzy\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin de datos cifrados con PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"Firma PGP verificada con xito.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"No se pudo copiar el mensaje\"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Los siguientes datos estn firmados --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Lo siguiente est cifrado con S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin de datos firmados --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin de datos cifrados con S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"Mes invlido: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Mes invlido: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Mes invlido: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"Cifrar\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \"El certificado fue guardado\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Key ID: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"Salir  \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"Conectando a %s...\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Error al conectar al servidor: %s\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Error en lnea de comando: %s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Key ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"CLOSE fall\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Todas las llaves que coinciden estn marcadas expiradas/revocadas.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Salir  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Seleccionar  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Verificar clave  \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Claves S/MIME que coinciden con \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"Claves PGP que coinciden con \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"Claves S/MIME que coinciden con \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"Claves PGP que coinciden con \\\"%s\\\".\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, fuzzy, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s [%s]\\n\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, fuzzy, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s [%s]\\n\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Esta clave no se puede usar: expirada/desactivada/revocada.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\n#, fuzzy\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"Esta clave est expirada/desactivada/revocada\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\n#, fuzzy\nmsgid \"ID is not valid.\"\nmsgstr \"Esta ID no es de confianza.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\n#, fuzzy\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Esta ID es marginalmente de confianza.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Realmente quiere utilizar la llave?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Buscando claves que coincidan con \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Usar keyID = \\\"%s\\\" para %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Entre keyID para %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Por favor entre la identificacin de la clave: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"error en patrn en: %s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Clave PGP %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"dicon\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"dicon\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"dicon\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"dicon\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Firmar como: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"Error al abrir el archivo para leer las cabeceras.\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \"\"\n\n#: crypt.c:74\n#, fuzzy, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Salida de PGP a continuacin (tiempo actual: %c) --]\\n\"\n\n#: crypt.c:89\n#, fuzzy\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Contrasea PGP olvidada.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Invocando PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Mensaje no enviado.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: Protocolo multipart/signed %s desconocido! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: Estructura multipart/signed inconsistente! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Advertencia: No se pudieron verificar %s/%s firmas. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Los siguientes datos estn firmados --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Advertencia: No se pudieron encontrar firmas. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin de datos firmados --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Invocando S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"s\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"no\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Salir de Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"error desconocido\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Presione una tecla para continuar...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' para lista): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Ningn buzn est abierto.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"No hay mensajes.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"El buzn es de slo lectura.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funcin no permitida en el modo de adjuntar mensaje.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"No hay mensajes visibles.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"No se puede cambiar a escritura un buzn de slo lectura!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Los cambios al buzn seran escritos al salir del mismo.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Los cambios al buzn no sern escritos.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Salir\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Guardar\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Nuevo\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Responder\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grupo\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Buzn fue modificado.  Los indicadores pueden estar mal.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Correo nuevo en este buzn.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Buzn fue modificado externamente.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"No hay mensajes marcados.\"\n\n#: curs_main.c:731 menu.c:907\n#, fuzzy\nmsgid \"Nothing to do.\"\nmsgstr \"Conectando a %s...\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Saltar a mensaje: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Argumento tiene que ser un nmero de mensaje.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Ese mensaje no es visible.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Nmero de mensaje errneo.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"No hay mensajes sin suprimir.\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Suprimir mensajes que coincidan con: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"No hay patrn limitante activo.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Lmite: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Limitar a mensajes que coincidan con: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Salir de Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Marcar mensajes que coincidan con: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"No hay mensajes sin suprimir.\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"No suprimir mensajes que coincidan con: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Desmarcar mensajes que coincidan con: \"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Cerrando conexin al servidor IMAP...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Abrir buzn en modo de slo lectura\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Abrir buzn\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Ningn buzn con correo nuevo.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s no es un buzn.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Salir de Mutt sin guardar?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"La muestra por hilos no est activada.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"guardar este mensaje para enviarlo despus\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Est en el ltimo mensaje.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"No hay mensajes sin suprimir.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Est en el primer mensaje.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"La bsqueda volvi a empezar desde arriba.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"La bsqueda volvi a empezar desde abajo.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"El mensaje anterior no es visible en vista limitada\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"No hay mensajes nuevos\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"El mensaje anterior no es visible en vista limitada\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"No hay mensajes sin leer\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"mostrar el mensaje\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"No hay mas hilos.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Ya est en el primer hilo.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"El hilo contiene mensajes sin leer.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"No hay mensajes sin suprimir.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"No se pudo escribir el mensaje\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"saltar al mensaje anterior en el hilo\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"No hay mensajes sin suprimir.\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tRengln empieza con una tilde.\\n\"\n\"~b usuarios\\taadir usuarios al campoBcc:\\n\"\n\"~c usuarios\\taadir usuarios al camp Cc:\\n\"\n\"~f mensajes\\tincluir mensajes.\\n\"\n\"~F mensajes\\tlo mismo que ~f, pero con el encabezado.\\n\"\n\"~h\\t\\teditar el encabezado del mensaje.\\n\"\n\"~m mensajes\\tincluir y citar mensajes.\\n\"\n\"~M mensajes\\tlo mismo que ~m, pero con el encabezado.\\n\"\n\"~p\\t\\timprimir el mensaje.\\n\"\n\"~q\\t\\tguardar archivo y salir del editor.\\n\"\n\"~r archivo\\t\\tleer un archivo con el editor.\\n\"\n\"~t usuarios\\taadir usuarios al campo To:\\n\"\n\"~u\\t\\teditar el rengln anterior.\\n\"\n\"~v\\t\\teditar mensaje con el editor definido en $visual .\\n\"\n\"~w archivo\\tescribir mensaje a un archivo.\\n\"\n\"~x\\t\\tcancelar cambios y salir del editor.\\n\"\n\"~?\\t\\teste mensaje.\\n\"\n\".\\t\\tslo en un rengln finaliza la entrada.\\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\tRengln empieza con una tilde.\\n\"\n\"~b usuarios\\taadir usuarios al campoBcc:\\n\"\n\"~c usuarios\\taadir usuarios al camp Cc:\\n\"\n\"~f mensajes\\tincluir mensajes.\\n\"\n\"~F mensajes\\tlo mismo que ~f, pero con el encabezado.\\n\"\n\"~h\\t\\teditar el encabezado del mensaje.\\n\"\n\"~m mensajes\\tincluir y citar mensajes.\\n\"\n\"~M mensajes\\tlo mismo que ~m, pero con el encabezado.\\n\"\n\"~p\\t\\timprimir el mensaje.\\n\"\n\"~q\\t\\tguardar archivo y salir del editor.\\n\"\n\"~r archivo\\t\\tleer un archivo con el editor.\\n\"\n\"~t usuarios\\taadir usuarios al campo To:\\n\"\n\"~u\\t\\teditar el rengln anterior.\\n\"\n\"~v\\t\\teditar mensaje con el editor definido en $visual .\\n\"\n\"~w archivo\\tescribir mensaje a un archivo.\\n\"\n\"~x\\t\\tcancelar cambios y salir del editor.\\n\"\n\"~?\\t\\teste mensaje.\\n\"\n\".\\t\\tslo en un rengln finaliza la entrada.\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: nmero de mensaje errneo.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Termine el mensaje con un . slo en un rengln)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"No hay buzn.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Mensaje contiene:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(continuar)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"falta el nombre del archivo.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"No hay renglones en el mensaje.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: comando de editor deconocido (~? para ayuda)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"no se pudo crear la carpeta temporal: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"no se pudo escribir la carpeta temporal: %s\"\n\n#: editmsg.c:110\n#, fuzzy, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"no se pudo escribir la carpeta temporal: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"El archivo del mensaje est vaco!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"El mensaje no fue modificado!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"No se pudo abrir el archivo del mensaje: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"No se pudo agregar a la carpeta: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Error. Preservando el archivo temporal: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Poner indicador\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Quitar indicador\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Error: no se pudo mostrar ninguna parte de multipart/alternative! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Archivo adjunto #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Tipo: %s/%s, codificacin: %s, tamao: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Automuestra usando %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Invocando comando de automuestra: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- No se puede ejecutar %s. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Error al ejecutar %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Error: Contenido message/external no tiene parmetro acces-type --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Este archivo adjunto %s/%s \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(tamao %s bytes) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"ha sido suprimido --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- el %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- nombre: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, fuzzy, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Este archivo adjunto %s/%s \"\n\n#: handler.c:1500\n#, fuzzy\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- Este archivo adjunto %s/%s no est incluido --]\\n\"\n\"[-- y la fuente externa indicada ha expirado. --]\\n\"\n\n#: handler.c:1518\n#, fuzzy, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"\"\n\"[-- Este archivo adjunto %s/%s no est incluido --]\\n\"\n\"[-- y el tipo de acceso indicado %s no est soportado --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Imposible abrir archivo temporal!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Error: multipart/signed no tiene protocolo.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Este archivo adjunto %s/%s \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s no est soportado \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(use '%s' para ver esta parte)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(necesita 'view-attachments' enlazado a una tecla)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: imposible adjuntar archivo\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ERROR: por favor reporte este fallo\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<DESCONOCIDO>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Enlaces genricos:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Funciones sin enlazar:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Ayuda para %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: No se puede desenganchar * desde dentro de un gancho.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: tipo de gancho desconocido: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: No se puede suprimir un %s desde dentro de un %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Falta un mtodo de verificacin de autentidad\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Verificando autentidad (annimo)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Autentidad annima fall.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Verificando autentidad (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"Verificacin de autentidad CRAM-MD5 fall.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Verificando autentidad (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"Verificacin de autentidad GSSAPI fall.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN desactivado en este servidor.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Entrando...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"El login fall.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, fuzzy, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Verificando autentidad (APOP)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"Verificacin de autentidad SASL fall.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Consiguiendo lista de carpetas...\"\n\n#: imap/browse.c:189\n#, fuzzy\nmsgid \"No such folder\"\nmsgstr \"%s: color desconocido\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Crear buzn: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"El buzn tiene que tener un nombre.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Buzn creado.\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Crear buzn: \"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"CLOSE fall\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"Buzn creado.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Buzn cerrado\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"CLOSE fall\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Cerrando conexin a %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Este servidor IMAP es ancestral. Mutt no puede trabajar con el.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Asegurar conexin con TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"No se pudo negociar una conexin TLS\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Seleccionando %s...\"\n\n#: imap/imap.c:756\n#, fuzzy\nmsgid \"Error opening mailbox\"\nmsgstr \"Error al escribir el buzn!\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Crear %s?\"\n\n#: imap/imap.c:1183\n#, fuzzy\nmsgid \"Expunge failed\"\nmsgstr \"CLOSE fall\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Marcando %d mensajes como suprimidos...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Guardando indicadores de estado de mensajes... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"Direccin errnea!\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Eliminando mensajes del servidor...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\n#, fuzzy\nmsgid \"Bad mailbox name\"\nmsgstr \"Crear buzn: \"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Suscribiendo a %s...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Desuscribiendo de %s...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Suscribiendo a %s...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Desuscribiendo de %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"\"\n\"No se pueden recoger cabeceras de mensajes de esta versin de servidor IMAP.\"\n\n#: imap/message.c:108\n#, fuzzy, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"No se pudo crear el archivo temporal!\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"Consiguiendo cabeceras de mensajes... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"Consiguiendo cabeceras de mensajes... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Consiguiendo mensaje...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"El ndice de mensajes es incorrecto. Intente reabrir el buzn.\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"Subiendo mensaje ...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Copiando %d mensajes a %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Copiando mensaje %d a %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Continuar?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"No disponible en este men.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \"marcar mensajes que coincidan con un patrn\"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"quitar marca de los mensajes que coincidan con un patrn\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"editar la descripcin del archivo adjunto\"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"editar la descripcin del archivo adjunto\"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"editar la descripcin del archivo adjunto\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: sin direccin\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"encabezado errneo\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: rden desconocido\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): error en expresin regular: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: variable desconocida\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"prefijo es ilegal con reset\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"valor es ilegal con reset\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s est activada\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s no est activada\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Da invlido del mes: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: tipo de buzn invlido\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: valor invlido\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: valor invlido\"\n\n#: init.c:2183\n#, fuzzy, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: tipo desconocido\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: tipo desconocido\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Error en %s, rengln %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: errores en %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: lectura fue cancelada por demasiados errores en %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: errores en %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: demasiados parmetros\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: comando desconocido\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Error en lnea de comando: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"imposible determinar el directorio del usuario\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"imposible determinar nombre del usuario\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"imposible determinar nombre del usuario\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"Faltan parmetros\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Bucle de macros detectado.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"La tecla no tiene enlace a una funcin.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Tecla sin enlace. Presione '%s' para obtener ayuda.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: demasiados parmetros\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: men desconocido\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"sequencia de teclas vaca\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: demasiados parmetros\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: funcin deconocida\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: sequencia de teclas vaca\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: demasiados parmetros\"\n\n#: keymap.c:1091\n#, fuzzy\nmsgid \"exec: no arguments\"\nmsgstr \"exec: faltan parmetros\"\n\n#: keymap.c:1111\n#, fuzzy, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: funcin deconocida\"\n\n#: keymap.c:1132\n#, fuzzy\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Entre keyID para %s: \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Sin memoria!\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Para contactar a los desarrolladores mande un mensaje a <mutt-dev@mutt.\"\n\"org>.\\n\"\n\"Para reportar un fallo use la utilera flea(1) por favor.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2001 Michael R. Elkins y otros.\\n\"\n\"Mutt viene con ABSOLUTAMENTE NINGUNA GARANTA; para obtener detalles\\n\"\n\"teclee `mutt -vv'. Mutt es software libre, puede redistribuirlo\\n\"\n\"bajo ciertas condiciones; teclee `mutt -vv' para ms detalles.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"uso: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <arch> ] [ -m <tipo> ] [ -f <arch> ]\\n\"\n\"     mutt [ -nx ] [ -e <cmd> ] [ -a <arch> ] [ -F <arch> ] [ -H <arch> ] [ -\"\n\"i <arch> ] [ -s <asunto> ] [ -b <dir> ] [ -c <dir> ] <dir> [ ... ]\\n\"\n\"     mutt [ -n ] [ -e <cmd> ] [ -F <archivo> ] -p\\n\"\n\"     mutt -v[v]\\n\"\n\"\\n\"\n\"opciones:\\n\"\n\"  -a <archivo>\\taadir un archivo al mensaje\\n\"\n\"  -b <direccin>\\tespecifica una direccin para enviar copia ciega (BCC)\\n\"\n\"  -c <direccin>\\tespecifica una direccin para enviar copia (CC)\\n\"\n\"  -e <comando>\\tespecifica un comando a ser ejecutado al empezar\\n\"\n\"  -f <archivo>\\tespecifica un buzn a leer\\n\"\n\"  -F <archivo>\\tespecifica un archivo muttrc alterno\\n\"\n\"  -H <archivo>\\tespecifica un archivo para obtener una cabecera\\n\"\n\"  -i <archivo>\\tespecifica un archivo a incluir en la respuesta\\n\"\n\"  -m <tipo>\\tespecifica un tipo de buzn\\n\"\n\"  -n\\t\\tproduce que Mutt no lea el archivo Muttrc del sistema\\n\"\n\"  -p\\t\\tcontinuar un mensaje pospuesto\\n\"\n\"  -R\\t\\tabrir un buzn en modo de solo-lectura\\n\"\n\"  -s <asunto>\\tespecifica el asunto (necesita comillas si contiene \"\n\"espacios)\\n\"\n\"  -v\\t\\tmuestra versin y opciones definidas al compilar\\n\"\n\"  -x\\t\\tsimula el modo de envo mailx\\n\"\n\"  -y\\t\\tselecciona un buzn especificado en su lista `mailboxes'\\n\"\n\"  -z\\t\\tsalir inmediatamente si no hay mensajes en el buzn\\n\"\n\"  -Z\\t\\tabrir la primera carpeta con mensajes nuevos, salir si no hay\\n\"\n\"  -h\\t\\teste mensaje de ayuda\"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"uso: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <arch> ] [ -m <tipo> ] [ -f <arch> ]\\n\"\n\"     mutt [ -nx ] [ -e <cmd> ] [ -a <arch> ] [ -F <arch> ] [ -H <arch> ] [ -\"\n\"i <arch> ] [ -s <asunto> ] [ -b <dir> ] [ -c <dir> ] <dir> [ ... ]\\n\"\n\"     mutt [ -n ] [ -e <cmd> ] [ -F <archivo> ] -p\\n\"\n\"     mutt -v[v]\\n\"\n\"\\n\"\n\"opciones:\\n\"\n\"  -a <archivo>\\taadir un archivo al mensaje\\n\"\n\"  -b <direccin>\\tespecifica una direccin para enviar copia ciega (BCC)\\n\"\n\"  -c <direccin>\\tespecifica una direccin para enviar copia (CC)\\n\"\n\"  -e <comando>\\tespecifica un comando a ser ejecutado al empezar\\n\"\n\"  -f <archivo>\\tespecifica un buzn a leer\\n\"\n\"  -F <archivo>\\tespecifica un archivo muttrc alterno\\n\"\n\"  -H <archivo>\\tespecifica un archivo para obtener una cabecera\\n\"\n\"  -i <archivo>\\tespecifica un archivo a incluir en la respuesta\\n\"\n\"  -m <tipo>\\tespecifica un tipo de buzn\\n\"\n\"  -n\\t\\tproduce que Mutt no lea el archivo Muttrc del sistema\\n\"\n\"  -p\\t\\tcontinuar un mensaje pospuesto\\n\"\n\"  -R\\t\\tabrir un buzn en modo de solo-lectura\\n\"\n\"  -s <asunto>\\tespecifica el asunto (necesita comillas si contiene \"\n\"espacios)\\n\"\n\"  -v\\t\\tmuestra versin y opciones definidas al compilar\\n\"\n\"  -x\\t\\tsimula el modo de envo mailx\\n\"\n\"  -y\\t\\tselecciona un buzn especificado en su lista `mailboxes'\\n\"\n\"  -z\\t\\tsalir inmediatamente si no hay mensajes en el buzn\\n\"\n\"  -Z\\t\\tabrir la primera carpeta con mensajes nuevos, salir si no hay\\n\"\n\"  -h\\t\\teste mensaje de ayuda\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Opciones especificadas al compilar:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Error al inicializar la terminal.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Modo debug a nivel %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG no fue definido al compilar.  Ignorado.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s no existe. Crearlo?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"No se pudo crear %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"No hay destinatario.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: imposible adjuntar archivo.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Ningn buzn con correo nuevo.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Ningn buzn de entrada fue definido.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"El buzn est vaco.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Leyendo %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"El buzn est corrupto!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"El buzn fue corrupto!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Error fatal! No se pudo reabrir el buzn!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Imposible bloquear buzn!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: buzn modificado, pero sin mensajes modificados! (reporte este fallo)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Escribiendo %s...\"\n\n#: mbox.c:962\n#, fuzzy\nmsgid \"Committing changes...\"\nmsgstr \"Compilando patrn de bsqueda...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"La escritura fall! Buzn parcial fue guardado en %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Imposible reabrir buzn!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Reabriendo buzn...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Saltar a: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Nmero de ndice invlido.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"No hay entradas.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Ya no puede bajar ms.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Ya no puede subir ms.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Est en la primera pgina.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Est en la ltima pgina.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Est en la ltima entrada.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Est en la primera entrada.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Buscar por: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Buscar en sentido opuesto: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"No fue encontrado.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"No hay entradas marcadas.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"No puede buscar en este men.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Saltar no est implementado para dilogos.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Marcar no est soportado.\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Seleccionando %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"No se pudo enviar el mensaje.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"error en patrn en: %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Conexin a %s cerrada\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL no est disponible.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"La rden anterior a la conexin fall.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Error al hablar con %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Buscando %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"No se encontr la direccin del servidor %s\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Conectando a %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"No se pudo conectar a %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"No se pudo encontrar suficiente entropa en su sistema\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Llenando repositorio de entropa: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s tiene derechos inseguros!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL fue desactivado por la falta de entropa\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"\"\n\n#: mutt_ssl.c:418\n#, fuzzy, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"CLOSE fall\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Imposible recoger el certificado de la contraparte\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"Conectando por SSL con %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Desconocido\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[imposible calcular]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[fecha invlida]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Certificado del servidor todava no es vlido\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Certificado del servidor ha expirado\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Imposible recoger el certificado de la contraparte\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Imposible recoger el certificado de la contraparte\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"El certificado fue guardado\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Este certificado pertenece a:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Este certificado fue producido por:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Este certificado es vlido\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   de %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     a %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Huella: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r)echazar, aceptar (u)na vez, (a)ceptar siempre\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"rua\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r)echazar, aceptar (u)na vez\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ru\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Advertencia: no se pudo guardar el certificado\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"El certificado fue guardado\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"Conectando por SSL con %s (%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Error al inicializar la terminal.\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Huella: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Huella: %s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"Certificado del servidor todava no es vlido\"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"Certificado del servidor ha expirado\"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"Certificado del servidor ha expirado\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\n#, fuzzy\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"Certificado del servidor todava no es vlido\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \"El certificado fue guardado\"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Conectando a %s...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Error al hablar con %s (%s)\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\n#, fuzzy\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Archivo es un directorio, guardar en l?\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Archivo es un directorio, guardar en l?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Archivo bajo directorio: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"El archivo existe, (s)obreescribir, (a)gregar o (c)ancelar?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"sac\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"No se puede guardar un mensaje en un buzn POP.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Agregar mensajes a %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s no es un buzn!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Cuenta de bloqueo excedida, quitar bloqueo de %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"No se pudo bloquear %s con dotlock.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Bloqueo fcntl tard demasiado!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Esperando bloqueo fcntl... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Bloqueo flock tard demasiado!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Esperando bloqueo flock... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"No se pudo bloquear %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"No se pudo sincronizar el buzn %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Mover mensajes leidos a %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Expulsar %d mensaje suprimido?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Expulsar %d mensajes suprimidos?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Moviendo mensajes ledos a %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Buzn sin cambios.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"quedan %d, %d movidos, %d suprimidos.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"quedan %d, %d suprimidos.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \"Presione '%s' para cambiar escritura\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Use 'toggle-write' para activar escritura!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Buzn est marcado inescribible. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"El buzn fue marcado.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"No se pudo escribir el mensaje\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"PgAnt\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"PrxPg\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Adjuntos\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Sig.\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"El final del mensaje est siendo mostrado.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"El principio del mensaje est siendo mostrado.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"La ayuda est siendo mostrada.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"No hay mas texto citado.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"No hay mas texto sin citar bajo el texto citado.\"\n\n# boundary es un parmetro definido por el estndar MIME\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"mensaje multiparte no tiene parmetro boundary!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Error en expresin: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"error en expresin\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Da invlido del mes: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Mes invlido: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Fecha relativa incorrecta: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"error en patrn en: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"falta un parmetro\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"parntesis sin contraparte: %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: comando invlido\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: no soportado en este modo\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"falta un parmetro\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"parntesis sin contraparte: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"patrn vaco\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"error: op %d desconocida (reporte este error).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Compilando patrn de bsqueda...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Ejecutando comando en mensajes que coinciden...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Ningn mensaje responde al criterio dado.\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"Guardando...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"La bsqueda lleg al final sin encontrar nada.\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"La bsqueda lleg al principio sin encontrar nada.\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Bsqueda interrumpida.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Entre contrasea PGP:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Contrasea PGP olvidada.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Error: imposible crear subproceso PGP! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fin de salida PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: imposible crear subproceso PGP! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"El login fall.\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"No se pudo abrir subproceso PGP!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"No se pudo invocar PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"dicon\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"dicon\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"dicon\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s, inc(l)uido, o ca(n)celar? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"dicon\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Recogiendo clave PGP...\"\n\n#: pgpkey.c:491\n#, fuzzy\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Todas las llaves que coinciden estn marcadas expiradas/revocadas.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"Claves PGP que coinciden con <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"Claves PGP que coinciden con \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"No se pudo abrir /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Clave PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"La rden TOP no es soportada por el servidor.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"No se pudo escribir la cabecera al archivo temporal!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"La rden UIDL no es soportada por el servidor.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"El ndice de mensajes es incorrecto. Intente reabrir el buzn.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Consiguiendo la lista de mensajes...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"No se pudo escribir el mensaje al archivo temporal!\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"Marcando %d mensajes como suprimidos...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Revisando si hay mensajes nuevos...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"El servidor POP no fue definido.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"No hay correo nuevo en el buzn POP.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Suprimir mensajes del servidor?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Leyendo mensajes nuevos (%d bytes)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Error al escribir el buzn!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d de %d mensajes ledos]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"El servidor cerr la connecin!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Verificando autentidad (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Verificando autentidad (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"Verificacin de autentidad APOP fall.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"La rden USER no es soportada por el servidor.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Mes invlido: %s\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"No es posible dejar los mensajes en el servidor.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Error al conectar al servidor: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Cerrando conexin al servidor POP...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Verificando ndice de mensajes...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Conexin perdida. Reconectar al servidor POP?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Mensajes pospuestos\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"No hay mensajes pospuestos.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"Cabecera PGP illegal\"\n\n#: postpone.c:496\n#, fuzzy\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Cabecera S/MIME illegal\"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"Consiguiendo mensaje...\"\n\n#: postpone.c:592\n#, fuzzy\nmsgid \"Decryption failed.\"\nmsgstr \"El login fall.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nueva indagacin\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Producir nombre corto\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Buscar\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Esperando respuesta...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"El comando de indagacin no fue definido.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Indagacin\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Indagar: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Indagar '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Redirigir\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Imprimir\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Guardando...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Archivo adjunto guardado.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"Atencin!  Est a punto de sobreescribir %s, continuar?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Archivo adjunto filtrado.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtrar a travs de: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Redirigir a: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"No s cmo imprimir archivos adjuntos %s!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Imprimir archivo(s) adjunto(s) marcado(s)?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Imprimir archivo adjunto?\"\n\n#: recvattach.c:1009\n#, fuzzy\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"No fue encontrado ningn mensaje marcado.\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Archivos adjuntos\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"No hay subpartes para mostrar!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"No se puede suprimir un archivo adjunto del servidor POP.\"\n\n#: recvattach.c:1126\n#, fuzzy\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Suprimir archivos adjuntos de mensajes PGP no es soportado.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Suprimir archivos adjuntos de mensajes PGP no es soportado.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Suprimir slo es soportado con archivos adjuntos tipo multiparte.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Solo puede rebotar partes tipo message/rfc822.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing message!\"\nmsgstr \"Error al enviar el mensaje.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing messages!\"\nmsgstr \"Error al enviar el mensaje.\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"No se pudo abrir el archivo temporal %s\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Adelatar como archivos adjuntos?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"No se pudieron decodificar todos los archivos adjuntos marcados.  Adelantar \"\n\"los otros por MIME?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Adelantar con encapsulado MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"No se pudo crear %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"No fue encontrado ningn mensaje marcado.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Ninguna lista de correo encontrada!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"No se pudieron decodificar todos los archivos adjuntos marcados.  \"\n\"Encapsular los otros por MIME?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Adjuntar\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Insertar\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Suprimir\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"Aceptar\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"No se pudo obtener el type2.list del mixmaster!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Seleccionar una cadena de remailers.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Error: %s no puede ser usado como remailer final de una cadena.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Las cadenas mixmaster estn limitadas a %d elementos.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"La cadena de remailers ya est vaca.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Ya tiene el primer elemento de la cadena seleccionado.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Ya tiene el ltimo elemento de la cadena seleccionado.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster no acepta cabeceras Cc or Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Por favor ajuste la variable hostname a un valor correcto si usa mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Error al enviar mensaje, proceso hijo termin %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Error al enviar el mensaje.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Entrada mal formateada para el tipo %s en \\\"%s\\\" rengln %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Ruta para mailcap no especificada\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"Entrada mailcap para tipo %s no encontrada\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: faltan parmetros\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: demasiados parmetros\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Sin asunto, cancelar?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Sin asunto, cancelando.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Responder a %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Responder a %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"No hay mensajes marcados visibles!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Incluir mensaje en respuesta?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Incluyendo mensaje citado...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"No se pudieron incluir todos los mensajes pedidos!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Adelatar como archivo adjunto?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Preparando mensaje reenviado...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Continuar mensaje pospuesto?\"\n\n#: send.c:1426\n#, fuzzy\nmsgid \"Edit forwarded message?\"\nmsgstr \"Preparando mensaje reenviado...\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Cancelar mensaje sin cambios?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Mensaje sin cambios cancelado.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Mensaje pospuesto.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"No especific destinatarios!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"No especific destinatarios.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Falta el asunto, cancelar envo?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Asunto no fue especificado.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Enviando mensaje...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"mostrar archivos adjuntos como texto\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"No se pudo enviar el mensaje.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Mensaje enviado.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Enviando en un proceso en segundo plano.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"El parmetro lmite no fue encontrado. [reporte este error]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s ya no existe!\"\n\n#: sendlib.c:878\n#, fuzzy, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s no es un buzn.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"No se pudo abrir %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Error al enviar mensaje, proceso hijo termin %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Salida del proceso de reparticin de correo\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Saliendo.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"\\\"%s\\\" recibido...  Saliendo.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Seal %d recibida...  Saliendo.\\n\"\n\n#: smime.c:141\n#, fuzzy\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Entre contrasea S/MIME:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"\"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"\"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"\"\n\n#: smime.c:388\n#, fuzzy\nmsgid \"Expired   \"\nmsgstr \"Salir  \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"\"\n\n#: smime.c:394\n#, fuzzy\nmsgid \"Invalid   \"\nmsgstr \"Mes invlido: %s\"\n\n#: smime.c:397\n#, fuzzy\nmsgid \"Unknown   \"\nmsgstr \"Desconocido\"\n\n#: smime.c:429\n#, fuzzy, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Claves S/MIME que coinciden con \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"Esta ID no es de confianza.\"\n\n#: smime.c:761\n#, fuzzy\nmsgid \"Enter keyID: \"\nmsgstr \"Entre keyID para %s: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\n#, fuzzy\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"[-- Error: imposible crear subproceso OpenSSL! --]\\n\"\n\n#: smime.c:1320\n#, fuzzy\nmsgid \"no certfile\"\nmsgstr \"No se pudo crear el filtro\"\n\n#: smime.c:1323\n#, fuzzy\nmsgid \"no mbox\"\nmsgstr \"(ningn buzn)\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\n#, fuzzy\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"No se pudo abrir subproceso OpenSSL!\"\n\n#: smime.c:1791 smime.c:1914\n#, fuzzy\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fin de salida OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\n#, fuzzy\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Error: imposible crear subproceso OpenSSL! --]\\n\"\n\n#: smime.c:1918\n#, fuzzy\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"\"\n\"[-- Lo siguiente est cifrado con S/MIME --]\\n\"\n\"\\n\"\n\n#: smime.c:1921\n#, fuzzy\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"\"\n\"[-- Los siguientes datos estn firmados --]\\n\"\n\"\\n\"\n\n#: smime.c:1985\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin de datos cifrados con S/MIME --]\\n\"\n\n#: smime.c:1987\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin de datos firmados --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s o ca(n)celar? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s o ca(n)celar? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"dicon\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"co(d)ificar, f(i)rmar (c)omo, amb(o)s o ca(n)celar? \"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"dicon\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"CLOSE fall\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"CLOSE fall\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Mes invlido: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"Verificacin de autentidad GSSAPI fall.\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"Verificacin de autentidad SASL fall.\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"Verificacin de autentidad SASL fall.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Ordenando buzn...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"No se pudo encontrar la funcin para ordenar! [reporte este fallo]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(ningn buzn)\"\n\n#: thread.c:1095\n#, fuzzy\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"El mensaje anterior no es visible en vista limitada\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"El mensaje anterior no est disponible.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"operacin nula\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"forzar la muestra de archivos adjuntos usando mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"mostrar archivos adjuntos como texto\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Cambiar muestra de subpartes\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"ir al final de la pgina\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"reenviar el mensaje a otro usuario\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"seleccione un archivo nuevo en este directorio\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"ver archivo\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"mostrar el nombre del archivo seleccionado\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"suscribir al buzn actual (slo IMAP)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"desuscribir al buzn actual (slo IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"cambiar entre ver todos los buzones o slo los suscritos (slo IMAP)\"\n\n#: ../keymap_alldefs.h:18\n#, fuzzy\nmsgid \"list mailboxes with new mail\"\nmsgstr \"Ningn buzn con correo nuevo.\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"cambiar directorio\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"revisar buzones por correo nuevo\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"adjuntar archivo(s) a este mensaje\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"adjuntar mensaje(s) a este mensaje\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"editar el campo BCC\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"editar el campo CC\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"editar la descripcin del archivo adjunto\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"editar la codificacin del archivo adjunto\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"guardar copia de este mensaje en archivo\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"editar el archivo a ser adjunto\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"editar el campo de from\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"editar el mensaje con cabecera\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"editar el mensaje\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"editar el archivo adjunto usando la entrada mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"editar el campo Reply-To\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"editar el asunto de este mensaje (subject)\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"editar el campo TO\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"crear un buzn nuevo (slo IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"editar el tipo de archivo adjunto\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"producir copia temporal del archivo adjunto\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"Correccin ortogrfica via ispell\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"producir archivo a adjuntar usando entrada mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"marcar/desmarcar este archivo adjunto para ser recodificado\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"guardar este mensaje para enviarlo despus\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"renombrar/mover un archivo adjunto\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"enviar el mensaje\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"cambiar disposicin entre incluido/archivo adjunto\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"cambiar si el archivo adjunto es suprimido despus de enviarlo\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"refrescar la informacin de codificado del archivo adjunto\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"guardar el mensaje en un buzn\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"copiar un mensaje a un archivo/buzn\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"crear una entrada en la libreta con los datos del mensaje actual\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"mover entrada hasta abajo en la pantalla\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"mover entrada al centro de la pantalla\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"mover entrada hasta arriba en la pantalla\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"crear copia decodificada (text/plain)\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"crear copia decodificada (text/plain) y suprimir\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"suprimir\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"suprimir el buzn actual (slo IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"suprimir todos los mensajes en este subhilo\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"suprimir todos los mensajes en este hilo\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"mostrar direccin completa del autor\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"mostrar mensaje y cambiar la muestra de todos los encabezados\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"mostrar el mensaje\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"editar el mensaje completo\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"suprimir el caracter anterior al cursor\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"mover el cursor un caracter a la izquierda\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"mover el cursor al principio de la palabra\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"saltar al principio del rengln\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"cambiar entre buzones de entrada\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"completar nombres de archivos o nombres en libreta\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"completar direccin con pregunta\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"suprimir el caracter bajo el cursor\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"saltar al final del rengln\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"mover el cursor un caracter a la derecha\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"mover el cursor al final de la palabra\"\n\n#: ../keymap_alldefs.h:75\n#, fuzzy\nmsgid \"scroll down through the history list\"\nmsgstr \"mover hacia atrs en el historial de comandos\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"mover hacia atrs en el historial de comandos\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"suprimir caracteres desde el cursor hasta el final del rengln\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"suprimir caracteres desde el cursor hasta el final de la palabra\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"suprimir todos lod caracteres en el rengln\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"suprimir la palabra anterior al cursor\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"marcar como cita la prxima tecla\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"transponer el caracter bajo el cursor con el anterior\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"capitalizar la palabra\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"convertir la palabra a minsculas\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"convertir la palabra a maysculas\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"entrar comando de muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"entrar un patrn de archivos\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"salir de este men\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtrar archivos adjuntos con un comando de shell\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"mover la primera entrada\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"marcar/desmarcar el mensaje como 'importante'\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"Reenviar el mensaje con comentrarios\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"seleccionar la entrada actual\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"responder a todos los destinatarios\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"media pgina hacia abajo\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"media pgina hacia arriba\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"esta pantalla\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"saltar a un nmero del ndice\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"ir a la ltima entrada\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"responder a la lista de correo\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"ejecutar un macro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"escribir un mensaje nuevo\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"abrir otro buzn\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"abrir otro buzn en modo de slo lectura\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"quitarle un indicador a un mensaje\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"suprimir mensajes que coincidan con un patrn\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"forzar el obtener correo de un servidor IMAP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"obtener correo de un servidor POP\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"ir al primer mensaje\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"ir al ltimo mensaje\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"mostrar slo mensajes que coincidan con un patrn\"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"Rebotar mensajes marcados a: \"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Ningn buzn con correo nuevo.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"saltar al prximo mensaje nuevo\"\n\n#: ../keymap_alldefs.h:117\n#, fuzzy\nmsgid \"jump to the next new or unread message\"\nmsgstr \"saltar al prximo mensaje sin leer\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"saltar al prximo subhilo\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"saltar al prximo hilo\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"ir al prximo mensaje no borrado\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"saltar al prximo mensaje sin leer\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"saltar al mensaje anterior en el hilo\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"saltar al hilo anterior\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"saltar al subhilo anterior\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"ir al mensaje no borrado anterior\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"saltar al mensaje nuevo anterior\"\n\n#: ../keymap_alldefs.h:127\n#, fuzzy\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"saltar al mensaje sin leer anterior\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"saltar al mensaje sin leer anterior\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"marcar el hilo actual como ledo\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"marcar el subhilo actual como ledo\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"ponerle un indicador a un mensaje\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"guardar cabios al buzn\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"marcar mensajes que coincidan con un patrn\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"restaurar mensajes que coincidan con un patrn\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"quitar marca de los mensajes que coincidan con un patrn\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"ir al centro de la pgina\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"ir a la prxima entrada\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"bajar un rengln\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"ir a la prxima pgina\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"saltar al final del mensaje\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"cambiar muestra del texto citado\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"saltar atrs del texto citado\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"saltar al principio del mensaje\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"filtrar mensaje/archivo adjunto via un comando de shell\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"ir a la entrada anterior\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"subir un rengln\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"ir a la pgina anterior\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"imprimir la entrada actual\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"Obtener direcciones de un programa externo\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"agregar nuevos resultados de la bsqueda a anteriores\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"guardar cambios al buzn y salir\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"reeditar mensaje pospuesto\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"refrescar la pantalla\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{interno}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"suprimir el buzn actual (slo IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"responder a un mensaje\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"usar el mensaje actual como base para uno nuevo\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"guardar mensaje/archivo adjunto en un archivo\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"buscar con una expresin regular\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"buscar con una expresin regular hacia atrs\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"buscar prxima coincidencia\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"buscar prxima coincidencia en direccin opuesta\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"cambiar coloracin de patrn de bsqueda\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"invocar comando en un subshell\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"ordenar mensajes\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"ordenar mensajes en rden inverso\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"marcar la entrada actual\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"aplicar la prxima funcin a los mensajes marcados\"\n\n#: ../keymap_alldefs.h:169\n#, fuzzy\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"aplicar la prxima funcin a los mensajes marcados\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"marcar el subhilo actual\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"marcar el hilo actual\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"cambiar el indicador de 'nuevo' de un mensaje\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"cambiar si los cambios del buzn sern guardados\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"cambiar entre ver buzones o todos los archivos al navegar\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"ir al principio de la pgina\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"restaurar la entrada actual\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"restaurar todos los mensajes del hilo\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"restaurar todos los mensajes del subhilo\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"mostrar el nmero de versin y fecha de Mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"mostrar archivo adjunto usando entrada mailcap si es necesario\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"mostrar archivos adjuntos tipo MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"mostrar patrn de limitacin activo\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"colapsar/expander hilo actual\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"colapsar/expander todos los hilos\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"adjuntar clave PGP pblica\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"mostrar opciones PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"enviar clave PGP pblica\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"verificar clave PGP pblica\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"mostrar la identificacin del usuario de la clave\"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"verificar presencia de un pgp clsico\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Aceptar la cadena construida\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Agregar un remailer a la cadena\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Poner un remailer en la cadena\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Suprimir un remailer de la cadena\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Seleccionar el elemento anterior en la cadena\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Seleccionar el siguiente elemento en la cadena\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"enviar el mensaje a travs de una cadena de remailers mixmaster\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"crear copia descifrada y suprimir \"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"crear copia descifrada\"\n\n#: ../keymap_alldefs.h:201\n#, fuzzy\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"borrar contrasea PGP de la memoria\"\n\n#: ../keymap_alldefs.h:202\n#, fuzzy\nmsgid \"extract supported public keys\"\nmsgstr \"extraer claves PGP pblicas\"\n\n#: ../keymap_alldefs.h:203\n#, fuzzy\nmsgid \"show S/MIME options\"\nmsgstr \"mostrar opciones S/MIME\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"No hay mensajes sin suprimir.\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" en esta vista limitada\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"No hay mensajes sin suprimir.\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"editar el mensaje\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"error en expresin\"\n\n#, fuzzy\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Error interno. Informe a <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"saltar al mensaje anterior en el hilo\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Error: mensaje PGP/MIME mal formado! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Error: multipart/encrypted no tiene parmetro de protocolo!\"\n\n#, fuzzy\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Usar keyID = \\\"%s\\\" para %s?\"\n\n#, fuzzy\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Usar keyID = \\\"%s\\\" para %s?\"\n\n#, fuzzy\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Advertencia: no se pudo guardar el certificado\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"En claro\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"dicoln\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Nada que buscar.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Buscar hacia atrs: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Buscar: \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Error al enviar el mensaje.\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"Prueba del certificado SSL\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"Prueba del certificado SSL\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Consiguiendo espacio de nombres...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"uso: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <arch> ] [ -m <tipo> ] [ -f \"\n#~ \"<arch> ]\\n\"\n#~ \"     mutt [ -nx ] [ -e <cmd> ] [ -a <arch> ] [ -F <arch> ] [ -H <arch> ] \"\n#~ \"[ -i <arch> ] [ -s <asunto> ] [ -b <dir> ] [ -c <dir> ] <dir> [ ... ]\\n\"\n#~ \"     mutt [ -n ] [ -e <cmd> ] [ -F <archivo> ] -p\\n\"\n#~ \"     mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"opciones:\\n\"\n#~ \"  -a <archivo>\\taadir un archivo al mensaje\\n\"\n#~ \"  -b <direccin>\\tespecifica una direccin para enviar copia ciega (BCC)\\n\"\n#~ \"  -c <direccin>\\tespecifica una direccin para enviar copia (CC)\\n\"\n#~ \"  -e <comando>\\tespecifica un comando a ser ejecutado al empezar\\n\"\n#~ \"  -f <archivo>\\tespecifica un buzn a leer\\n\"\n#~ \"  -F <archivo>\\tespecifica un archivo muttrc alterno\\n\"\n#~ \"  -H <archivo>\\tespecifica un archivo para obtener una cabecera\\n\"\n#~ \"  -i <archivo>\\tespecifica un archivo a incluir en la respuesta\\n\"\n#~ \"  -m <tipo>\\tespecifica un tipo de buzn\\n\"\n#~ \"  -n\\t\\tproduce que Mutt no lea el archivo Muttrc del sistema\\n\"\n#~ \"  -p\\t\\tcontinuar un mensaje pospuesto\\n\"\n#~ \"  -R\\t\\tabrir un buzn en modo de solo-lectura\\n\"\n#~ \"  -s <asunto>\\tespecifica el asunto (necesita comillas si contiene \"\n#~ \"espacios)\\n\"\n#~ \"  -v\\t\\tmuestra versin y opciones definidas al compilar\\n\"\n#~ \"  -x\\t\\tsimula el modo de envo mailx\\n\"\n#~ \"  -y\\t\\tselecciona un buzn especificado en su lista `mailboxes'\\n\"\n#~ \"  -z\\t\\tsalir inmediatamente si no hay mensajes en el buzn\\n\"\n#~ \"  -Z\\t\\tabrir la primera carpeta con mensajes nuevos, salir si no hay\\n\"\n#~ \"  -h\\t\\teste mensaje de ayuda\"\n\n#, fuzzy\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"No se pueden editar mensajes en el servidor POP.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"No se pueden editar mensajes en el servidor POP.\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"Leyendo %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Guardando mensajes... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"Leyendo %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Invocando pgp...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Error fatal!  La cuenta de mensajes no est sincronizada.\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"CLOSE fall\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2001 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"Copyright (C) 1996-2001 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2001 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2001 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2001 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2001 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2001 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Muchos otros no mencionados aqui contribuyeron mucho cdigo,\\n\"\n#~ \"mejoras y sugerencias.\\n\"\n#~ \"\\n\"\n#~ \"La traduccin al espaol fue hecha por Boris Wesslowski <Boris@Wesslowski.\"\n#~ \"com>.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"La primera entrada est siendo mostrada.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"La ltima entrada est siendo mostrada.\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"No es posible agregar a buzones IMAP en este servidor.\"\n\n#, fuzzy\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"Crear un mensaje de tipo application/pgp?\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"No se pudo encontrar en disco: %s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s no es un buzn.\"\n\n#, fuzzy\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"Invocando OpenSSL...\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"Rebotar mensaje a %s...?\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"Rebotar mensajes a %s...?\"\n\n#, fuzzy\n#~ msgid \"ewsabf\"\n#~ msgstr \"dicon\"\n\n#, fuzzy\n#~ msgid \"Certificate *NOT* added.\"\n#~ msgstr \"El certificado fue guardado\"\n\n#, fuzzy\n#~ msgid \"This ID's validity level is undefined.\"\n#~ msgstr \"El nivel de confianza de esta ID no est definido.\"\n\n#~ msgid \"Decode-save\"\n#~ msgstr \"Guardar decodificado\"\n\n#~ msgid \"Decode-copy\"\n#~ msgstr \"Copiar decodificado\"\n\n#~ msgid \"Decrypt-save\"\n#~ msgstr \"Guardar descifrado\"\n\n#~ msgid \"Decrypt-copy\"\n#~ msgstr \"Copiar descifrado\"\n\n#~ msgid \"Copy\"\n#~ msgstr \"Copiar\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"[-- End of PGP output --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"[-- Fin de salida PGP --]\\n\"\n#~ \"\\n\"\n\n#, fuzzy\n#~ msgid \"Can't stat %s.\"\n#~ msgstr \"No se pudo encontrar en disco: %s\"\n\n#~ msgid \"%s: no such command\"\n#~ msgstr \"%s: comando desconocido\"\n\n#~ msgid \"Authentication method is unknown.\"\n#~ msgstr \"Mtodo de verificacin de autentidad desconocido.\"\n"
  },
  {
    "path": "po/et.po",
    "content": "# Estonian translations for mutt.\n# Copyright (C) 2001 Free Software Foundation, Inc.\n# Toomas Soome <tsoome@muhv.pri.ee>, 2002.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt 1.5.2\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2002-12-09 17:19+02:00\\n\"\n\"Last-Translator: Toomas Soome <tsoome@muhv.pri.ee>\\n\"\n\"Language-Team: Estonian <et@li.org>\\n\"\n\"Language: et\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=ISO-8859-15\\n\"\n\"Content-Transfer-Encoding: 8-bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Kasutajanimi serveril %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"%s@%s parool: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Vlju\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Kustuta\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Taasta\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Vali\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Appi\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Tei pole hdnimesid!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Hdnimed\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Hdnimeks: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Teil on juba selle nimeline hdnimi!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Hoiatus: See hdnimi ei pruugi toimida. Parandan?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Aadress: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Isiku nimi: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Nus?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Salvestan faili: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Viga faili vaatamisel\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Hdnimi on lisatud.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Viga faili vaatamisel\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Nimemuster ei sobi, jtkan?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Mailcap koostamise kirje nuab %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Viga \\\"%s\\\" kivitamisel!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Faili avamine piste analsiks ebannestus.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Faili avamine piste eemaldamiseks ebannestus.\"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \"Faili avamine piste analsiks ebannestus.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Mailcap koostamise kirjet %s jaoks puudub, loon thja faili.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Mailcap toimeta kirje nuab %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Mailcap toimeta kirjet %s jaoks ei ole.\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Sobivat mailcap kirjet pole. Ksitlen tekstina.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME tp ei ole defineeritud. Lisa ei saa vaadata.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Filtri loomine ebannestus\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Lisad\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Lisad\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Ei nnestu luua filtrit\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Viga kirjutamisel!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Ma ei tea, kuidas seda trkkida!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Chdir\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Mask\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s ei ole kataloog.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Postkastid [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Tellitud [%s], faili mask: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Kataloog [%s], failimask: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Kataloogi ei saa lisada!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Maskile vastavaid faile ei ole\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Luua saab ainult IMAP postkaste\"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Luua saab ainult IMAP postkaste\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Kustutada saab ainult IMAP postkaste\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"Filtri loomine ebannestus\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Kas testi kustutada postkast \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Postkast on kustutatud.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Postkasti ei kustutatud.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Mine kataloogi: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Viga kataloogi skaneerimisel.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Failimask: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"Jrjestan tagurpidi (k)uup., (t)hest., (s)uuruse jrgi vi (e)i jrjesta? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Jrjestan (k)uup., (t)hest., (s)uuruse jrgi vi (e)i jrjesta? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"ktse\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Uus failinimi: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Kataloogi ei saa vaadata\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Viga faili vaatamisel\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Uus kiri kaustas \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: terminal ei toeta vrve\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s. sellist vrvi ei ole\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: sellist objekti ei ole\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: ksk kehtib ainult indekseeritud objektiga\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: liiga vhe argumente\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Puuduvad argumendid.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: liiga vhe argumente\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: liiga vhe argumente\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s. sellist atribuuti pole\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"liiga vhe argumente\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"liiga palju argumente\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"vaikimisi vrve ei toetata\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Kontrollin PGP allkirja?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Ei nnestu luua ajutist faili!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Filtri loomine ebannestus\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Teadet ei nnestu kopeerida.\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME allkiri on edukalt kontrollitud.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"S/MIME sertifikaadi omanik ei ole kirja saatja.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME allkirja EI NNESTU kontrollida.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP allkiri on edukalt kontrollitud.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP allkirja EI NNESTU kontrollida.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Ksklus: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Peegelda teade aadressile: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Peegelda mrgitud teated aadressile: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Viga aadressi analsimisel!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Peegelda teade aadressile %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Peegelda teated aadressile %s\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Message not bounced.\"\nmsgstr \"Teade on peegeldatud.\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Messages not bounced.\"\nmsgstr \"Teated on peegeldatud.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Teade on peegeldatud.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Teated on peegeldatud.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Filterprotsessi loomine ebannestus\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Toruga ksule: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Trkkimise ksklust ei ole defineeritud.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Trkin teate?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Trkin mrgitud teated?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Teade on trkitud\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Teated on trkitud\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Teadet ei saa trkkida\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Teateid ei saa trkkida\"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore?: \"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore?: \"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrsotuzc\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Ksurea ksk: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Dekodeeri-salvesta%s postkasti\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Dekodeeri-kopeeri%s postkasti\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Dekrpti-salvesta%s postkasti\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Dekrpti-kopeeri%s postkasti\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Salvesta%s postkasti\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Kopeeri%s postkasti\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" mrgitud\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Kopeerin kausta %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Teisendan saatmisel kooditabelisse %s?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Sisu tbiks on nd %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Kooditabeliks on nd %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"ei teisenda\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"teisendan\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Lisasid ei ole.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Saada\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Katkesta\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Lisa fail\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Kirjeldus\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Mrkimist ei toetata.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Allkirjasta, krpti\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Krpti\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Allkirjasta\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"(jtka)\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" allkirjasta kui: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<vaikimisi>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Krpti kasutades: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] ei eksisteeri!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] muudeti. Uuendan kodeerimist?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Lisad\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Ainukest lisa ei saa kustutada.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Lisan valitud failid...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"%s ei nnestu lisada!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Avage postkast, millest lisada teade\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Postkasti ei saa lukustada!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Selles kaustas ei ole teateid.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Mrkige teada, mida soovite lisada!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Ei nnestu lisada!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"mberkodeerimine puudutab ainult tekstilisasid.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Kesolevat lisa ei teisendata.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Kesolev lisa teisendatakse.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Vigane kodeering.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Salvestan sellest teatest koopia?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Uus nimi: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Ei saa lugeda %s atribuute: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Uus fail: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type on kujul baas/alam\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Tundmatu Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Faili %s ei saa luua\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"See mis siin nd on, on viga lisa loomisel\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Panen teate postitusootele?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Kirjuta teade postkasti\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Kirjutan teate faili %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Teade on kirjutatud.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME on juba valitud. Puhasta ja jtka ? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP on juba valitud. Puhasta ja jtka ? \"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Ei nnestu avada ajutist faili\"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Serveri sertifikaat on aegunud\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"SSL ei ole kasutatav.\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \"Srmejlg: %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Loon %s?\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Viga ksureal: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Allkirjastatud info lpp --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Viga: ajutise faili loomine ebannestus! --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"viga mustris: %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP TEATE ALGUS --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP AVALIKU VTME BLOKI ALGUS --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP ALLKIRJASTATUD TEATE ALGUS --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- PGP TEATE LPP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP AVALIKU VTME BLOKI LPP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- PGP ALLKIRJASTATUD TEATE LPP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Viga: ei suuda leida PGP teate algust! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Viga: ajutise faili loomine ebannestus! --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Jrgneb PGP/MIME krptitud info --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Jrgneb PGP/MIME krptitud info --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME krptitud info lpp --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME krptitud info lpp --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP allkiri on edukalt kontrollitud.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Teadet ei nnestu kopeerida.\"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"[-- Jrgneb S/MIME allkirjastatud info --]\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"[-- Jrgneb S/MIME krptitud info --]\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME Allkirjastatud info lpp --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME krptitud info lpp --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"Vigane    \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Vigane kuu: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Vigane kuu: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"Krpti\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \"Sertifikaat on salvestatud\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Vtme ID: 0x%s\"\n\n#: crypt-gpgme.c:3533\n#, fuzzy\nmsgid \"[Revoked]\"\nmsgstr \"Thistatud \"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"Aegunud   \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"hendus serverisse %s...\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Viga serveriga henduse loomisel: %s\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Viga ksureal: %s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Vtme ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"SSL ebannestus: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Kik sobivad vtmed on mrgitud aegunuks/thistatuks.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Vlju  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Vali  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Vtme kontroll  \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP vtmed, mis sisaldavad \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"PGP vtmed, mis sisaldavad \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME sertifikaadid, mis sisaldavad \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"PGP vtmed, mis sisaldavad \\\"%s\\\".\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Seda vtit ei saa kasutada: aegunud/blokeeritud/thistatud.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID on aegunud/blokeeritud/thistatud.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"ID kehtivuse vrtus ei ole defineeritud.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"ID ei ole kehtiv.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"ID on ainult osaliselt kehtiv.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Kas te soovite seda vtit testi kasutada?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Otsin vtmeid, mis sisaldavad \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Kasutan kasutajat = \\\"%s\\\" teatel %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Sisestage kasutaja teatele %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Palun sisestage vtme ID: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"viga mustris: %s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP Vti %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"kaimu\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"kaimu\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"kaimu\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"kaimu\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Allkirjasta kui: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"Faili avamine piste analsiks ebannestus.\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (praegune aeg: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- jrgneb %s vljund%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Parool(id) on unustatud.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Kivitan PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Kirja ei saadetud.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"Sisu vihjeta S/MIME teateid ei toetata.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Proovin eraldada PGP vtmed...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Proovin eraldada S/MIME sertifikaadid...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Viga: Tundmatu multipart/signed protokoll %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Viga: Vigane multipart/signed struktuur! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hoiatus: Me ai saa kontrollida %s/%s allkirju. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Jrgnev info on allkirjastatud --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hoiatus: Ei leia htegi allkirja. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Allkirjastatud info lpp --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Kivitan S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"jah\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"ei\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Vljuda Muttist?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"tundmatu viga\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Jtkamiseks vajutage klahvi...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' annab loendi): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Avatud postkaste pole.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Teateid ei ole.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Postkast on ainult lugemiseks.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funktsioon ei ole teate lisamise moodis lubatud.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Nhtavaid teateid pole.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Ainult lugemiseks postkastil ei saa kirjutamist llitada!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Muudatused kaustas salvestatakse kaustast vljumisel.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Muudatusi kaustas ei kirjutata.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Vlju\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Salvesta\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Kiri\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Vasta\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grupp\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Postkasti on vliselt muudetud. Lipud vivad olla valed.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Selles postkastis on uus kiri.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Postkasti on vliselt muudetud.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Mrgitud teateid pole.\"\n\n#: curs_main.c:731 menu.c:907\n#, fuzzy\nmsgid \"Nothing to do.\"\nmsgstr \"hendus serverisse %s...\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Hppa teatele: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Argument peab olema teate number.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"See teate ei ole nhtav.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Vigane teate number.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Kustutamata teateid pole.\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Kustuta teated mustriga: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Kehtivat piirangumustrit ei ole.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Piirang: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Piirdu teadetega mustriga: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Vljun Muttist?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Mrgi teated mustriga: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Kustutamata teateid pole.\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Taasta teated mustriga: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Vta mrk teadetelt mustriga: \"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Sulen henduse IMAP serveriga...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Avan postkasti ainult lugemiseks\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Avan postkasti\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Uute teadetega postkaste ei ole.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s ei ole postkast.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Vljun Muttist salvestamata?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Teemad ei ole lubatud.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"salvesta teade hilisemaks saatmiseks\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Te olete viimasel teatel.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Kustutamata teateid pole.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Te olete esimesel teatel.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Otsing pras algusest tagasi.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Otsing pras lpust tagasi.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Vanem teade ei ole selles piiratud vaates nhtav.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Uusi teateid pole\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Vanem teade ei ole selles piiratud vaates nhtav.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Lugemata teateid pole\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"nita teadet\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Rohkem teemasid pole.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Te olete esimesel teemal.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Teema sisaldab lugemata teateid.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"Kustutamata teateid pole.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Teadet ei nnestu kirjutada\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"hppa teema vanemteatele\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"Kustutamata teateid pole.\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tlisa rida, mis algab smboliga ~\\n\"\n\"~b kasutajad\\tlisa kasutajad Bcc: vljale\\n\"\n\"~c kasutajad\\tlisa kasutajad Cc: vljale\\n\"\n\"~f teated\\tlisa teated\\n\"\n\"~F teated\\tsama kui ~f, lisa ka pised\\n\"\n\"~h\\t\\ttoimeta teate pist\\n\"\n\"~m teated\\tlisa ja tsiteeri teateid\\n\"\n\"~M teated\\tsama kui ~m, lisa ka pised\\n\"\n\"~p\\t\\ttrki teade\\n\"\n\"~q\\t\\tkirjuta fail ja vlju toimetist\\n\"\n\"~r fail\\t\\tloe toimetisse fail\\n\"\n\"~t kasutajad\\tlisa kasutajad To: vljale\\n\"\n\"~u\\t\\tthista eelmine rida\\n\"\n\"~v\\t\\ttoimeta teadet $visual toimetiga\\n\"\n\"~w fail\\t\\tkirjuta teade faili\\n\"\n\"~x\\t\\tkatkesta muudatused ja vlju toimetist\\n\"\n\"~?\\t\\tsee teade\\n\"\n\".\\t\\tksinda real lpetab sisendi\\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\tlisa rida, mis algab smboliga ~\\n\"\n\"~b kasutajad\\tlisa kasutajad Bcc: vljale\\n\"\n\"~c kasutajad\\tlisa kasutajad Cc: vljale\\n\"\n\"~f teated\\tlisa teated\\n\"\n\"~F teated\\tsama kui ~f, lisa ka pised\\n\"\n\"~h\\t\\ttoimeta teate pist\\n\"\n\"~m teated\\tlisa ja tsiteeri teateid\\n\"\n\"~M teated\\tsama kui ~m, lisa ka pised\\n\"\n\"~p\\t\\ttrki teade\\n\"\n\"~q\\t\\tkirjuta fail ja vlju toimetist\\n\"\n\"~r fail\\t\\tloe toimetisse fail\\n\"\n\"~t kasutajad\\tlisa kasutajad To: vljale\\n\"\n\"~u\\t\\tthista eelmine rida\\n\"\n\"~v\\t\\ttoimeta teadet $visual toimetiga\\n\"\n\"~w fail\\t\\tkirjuta teade faili\\n\"\n\"~x\\t\\tkatkesta muudatused ja vlju toimetist\\n\"\n\"~?\\t\\tsee teade\\n\"\n\".\\t\\tksinda real lpetab sisendi\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: vigane teate number.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Teate lpetab rida, milles on ainult .)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Postkasti pole.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Teade sisaldab:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(jtka)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"failinimi puudub.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Teates pole ridu.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: tundmatu toimeti ksk (~? annab abiinfot)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"ajutise kausta loomine ebannestus: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"ei nnestu kirjutada ajutisse kausta: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"ajutist kausta ei nnestu lhendada: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Teate fail on thi!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Teadet ei muudetud!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Teate faili ei saa avada: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Kausta ei saa lisada: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Viga. Silitan ajutise faili: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Sea lipp\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Eemalda lipp\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- Viga:  Multipart/Alternative osasid ei saa nidata! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Lisa #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Tp: %s/%s, Kodeering: %s, Maht: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Autovaade kasutades %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Kivitan autovaate kskluse: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- %s ei saa kivitada.--]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Autovaate %s stderr --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"[-- Viga: message/external-body juurdepsu parameeter puudub --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- See %s/%s lisa \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(maht %s baiti) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"on kustutatud --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- nimi: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Seda %s/%s lisa ei ole kaasatud, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"[-- ja nidatud vline allikas on aegunud --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- ja nidatud juurdepsu tpi %s ei toetata --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Ajutise faili avamine ebannestus!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Viga: multipart/signed teatel puudub protokoll.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- See %s/%s lisa \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s ei toetata \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(selle osa vaatamiseks kasutage '%s')\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"('view-attachments' peab olema klahviga seotud!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: faili lisamine ebannestus\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"VIGA: Palun teatage sellest veast\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<TUNDMATU>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"ldised seosed:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Sidumata funktsioonid:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"%s abiinfo\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: seose sees ei saa unhook * kasutada.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: tundmatu seose tp: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: %s ei saa %s seest kustutada.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Autentikaatoreid pole\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Autentimine (anonmne)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonmne autentimine ebannestus.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Autentimine (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 autentimine ebannestus.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Autentimine (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI autentimine ebannestus.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN on sellel serveril blokeeritud.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Meldin...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Meldimine ebannestus.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, fuzzy, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Autentimine (APOP)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL autentimine ebannestus.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s on vigane IMAP tee\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Laen kaustade nimekirja...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Sellist vrvi ei ole\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Loon postkasti: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Postkastil peab olema nimi.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Postkast on loodud.\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Loon postkasti: \"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"SSL ebannestus: %s\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"Postkast on loodud.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Postkast on suletud\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"SSL ebannestus: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Sulen hendust serveriga %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"See IMAP server on iganenud. Mutt ei tta sellega.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Turvan henduse TLS protokolliga?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"TLS hendust ei nnestu kokku leppida\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Valin %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Viga postkasti avamisel!\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Loon %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Kustutamine ebannestus.\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"mrgin %d teadet kustutatuks...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Salvestan teadete olekud... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"Viga aadressi analsimisel!\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Kustutan serveril teateid...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE ebannestus\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Halb nimi postkastile\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Tellin %s...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Loobun kaustast %s...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Tellin %s...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Loobun kaustast %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Sellest IMAP serverist ei saa piseid laadida.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Ajutise faili %s loomine ebannestus\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"Laen teadete piseid... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"Laen teadete piseid... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Laen teadet...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"Teadete indeks on vigane. Proovige postkasti uuesti avada.\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"Saadan teadet ...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Kopeerin %d teadet kausta %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Kopeerin teadet %d kausta %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Jtkan?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Ei ole selles mens kasutatav.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \"mrgi mustrile vastavad teated\"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"eemalda mrk mustrile vastavatelt teadetelt\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"toimeta lisa kirjeldust\"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"toimeta lisa kirjeldust\"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"toimeta lisa kirjeldust\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: aadress puudub\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"vigane pisevli\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: tundmatu jrjestamise meetod\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): vigane regexp: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: tundmatu muutuja\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"reset ksuga ei ole prefiks lubatud\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"reset ksuga ei ole vrtus lubatud\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s on seatud\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s ei ole seatud\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Vigane kuupev: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: vigane postkasti tp\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: vigane vrtus\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: vigane vrtus\"\n\n#: init.c:2183\n#, fuzzy, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: tundmatu tp\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: tundmatu tp\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Viga failis %s, real %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: vead failis %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: lugemine katkestati, kuna %s on liialt vigane\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: viga kohal %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: liiga palju argumente\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: tundmatu ksk\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Viga ksureal: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"ei leia kodukataloogi\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"ei suuda tuvastada kasutajanime\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"ei suuda tuvastada kasutajanime\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"liiga vhe argumente\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Tuvastasin makros tskli.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Klahv ei ole seotud.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Klahv ei ole seotud. Abiinfo saamiseks vajutage '%s'.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: liiga palju argumente\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: sellist mend ei ole\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"thi klahvijrjend\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: iiga palju argumente\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: sellist funktsiooni tabelis ei ole\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"makro: thi klahvijrjend\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"makro: liiga palju argumente\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: argumente pole\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: sellist funktsiooni pole\"\n\n#: keymap.c:1132\n#, fuzzy\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Sisestage kasutaja teatele %s: \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Mlu on otsas!\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Arendajatega kontakteerumiseks saatke palun kiri aadressil <mutt-dev@mutt.\"\n\"org>.\\n\"\n\"Veast teatamiseks kasutage palun ksku flea(1).\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Autoriigus (C) 1996-2002 Michael R. Elkins ja teised.\\n\"\n\"Mutt ei paku MITTE MINGISUGUSEID GARANTIISID; detailid ksuga `mutt -vv'.\\n\"\n\"Mutt on vaba tarkvara ja te vite seda teatud tingimustel levitada;\\n\"\n\"detailsemat infot saate ksuga `mutt -vv'.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"kasutage: mutt [ -nRyzZ ] [ -e <ksk> ] [ -F <fail> ] [ -m <tp> ]\\n\"\n\"               [ -f <fail> ]\\n\"\n\"          mutt [ -nR ] [ -e <ksk> ] [ -F <fail> ] -Q <pring>\\n\"\n\"               [ -Q <pring> ] [...]\\n\"\n\"          mutt [ -nR ] [ -e <ksk> ] [ -F <fail> ] -A <hdnimi>\\n\"\n\"               [ -A <hdnimi> ] [...]\\n\"\n\"          mutt [ -nx ] [ -e <ksk> ] [ -a <fail> ] [ -F <fail> ] [ -H \"\n\"<fail> ]\\n\"\n\"               [ -i <fail> ] [ -s <teema> ] [ -b <aadr> ] [ -c <aadr> ]\\n\"\n\"               <aadr> [ ... ]\\n\"\n\"          mutt [ -n ] [ -e <ksk> ] [ -F <fail> ] -p\\n\"\n\"          mutt -v[v]\\n\"\n\"\\n\"\n\"vtmed:\\n\"\n\"  -A <hdnimi>\\tavalda antud hdnimi\\n\"\n\"  -a <fail>\\tlisa teatele fail\\n\"\n\"  -b <aadress>\\tmra pimekoopia (BCC) aadress\\n\"\n\"  -c <aadress>\\tmra koopia (CC) aadress\\n\"\n\"  -e <ksk>\\tkivita peale algvrtutamist ksk\\n\"\n\"  -f <fail>\\tmillist postkasti lugeda\\n\"\n\"  -F <fail>\\tmra alternatiivne muttrc fail\\n\"\n\"  -H <fail>\\tmra piste mustandi fail\\n\"\n\"  -i <fail>\\tfail mida mutt peab vastamisel lisama\\n\"\n\"  -m <tp>\\tmta vaikimisi postkasti tp\\n\"\n\"  -n\\t\\tra loe ssteemset Muttrc faili\\n\"\n\"  -p\\t\\tlae postitusootel teade\\n\"\n\"  -Q <muutuja>\\tloe seadete muutuja\\n\"\n\"  -R\\t\\tava postkast ainult lugemiseks\\n\"\n\"  -s <teema>\\tmra teate teema (jutumrkides, kui on mitmesnaline)\\n\"\n\"  -v\\t\\tnita versiooni ja kompileerimis-aegseid mranguid\\n\"\n\"  -x\\t\\tsimuleeri mailx saatmise moodi\\n\"\n\"  -y\\t\\tvali postkast teie 'postkastide' loendist\\n\"\n\"  -z\\t\\tvlju kohe, kui postkastis pole uusi teateid\\n\"\n\"  -Z\\t\\tava esimene kaust uue teatega, vlju kohe, kui pole\\n\"\n\"  -h\\t\\tesita see abiinfo\"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"kasutage: mutt [ -nRyzZ ] [ -e <ksk> ] [ -F <fail> ] [ -m <tp> ]\\n\"\n\"               [ -f <fail> ]\\n\"\n\"          mutt [ -nR ] [ -e <ksk> ] [ -F <fail> ] -Q <pring>\\n\"\n\"               [ -Q <pring> ] [...]\\n\"\n\"          mutt [ -nR ] [ -e <ksk> ] [ -F <fail> ] -A <hdnimi>\\n\"\n\"               [ -A <hdnimi> ] [...]\\n\"\n\"          mutt [ -nx ] [ -e <ksk> ] [ -a <fail> ] [ -F <fail> ] [ -H \"\n\"<fail> ]\\n\"\n\"               [ -i <fail> ] [ -s <teema> ] [ -b <aadr> ] [ -c <aadr> ]\\n\"\n\"               <aadr> [ ... ]\\n\"\n\"          mutt [ -n ] [ -e <ksk> ] [ -F <fail> ] -p\\n\"\n\"          mutt -v[v]\\n\"\n\"\\n\"\n\"vtmed:\\n\"\n\"  -A <hdnimi>\\tavalda antud hdnimi\\n\"\n\"  -a <fail>\\tlisa teatele fail\\n\"\n\"  -b <aadress>\\tmra pimekoopia (BCC) aadress\\n\"\n\"  -c <aadress>\\tmra koopia (CC) aadress\\n\"\n\"  -e <ksk>\\tkivita peale algvrtutamist ksk\\n\"\n\"  -f <fail>\\tmillist postkasti lugeda\\n\"\n\"  -F <fail>\\tmra alternatiivne muttrc fail\\n\"\n\"  -H <fail>\\tmra piste mustandi fail\\n\"\n\"  -i <fail>\\tfail mida mutt peab vastamisel lisama\\n\"\n\"  -m <tp>\\tmta vaikimisi postkasti tp\\n\"\n\"  -n\\t\\tra loe ssteemset Muttrc faili\\n\"\n\"  -p\\t\\tlae postitusootel teade\\n\"\n\"  -Q <muutuja>\\tloe seadete muutuja\\n\"\n\"  -R\\t\\tava postkast ainult lugemiseks\\n\"\n\"  -s <teema>\\tmra teate teema (jutumrkides, kui on mitmesnaline)\\n\"\n\"  -v\\t\\tnita versiooni ja kompileerimis-aegseid mranguid\\n\"\n\"  -x\\t\\tsimuleeri mailx saatmise moodi\\n\"\n\"  -y\\t\\tvali postkast teie 'postkastide' loendist\\n\"\n\"  -z\\t\\tvlju kohe, kui postkastis pole uusi teateid\\n\"\n\"  -Z\\t\\tava esimene kaust uue teatega, vlju kohe, kui pole\\n\"\n\"  -h\\t\\tesita see abiinfo\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Kompileerimise vtmed:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Viga terminali initsialiseerimisel.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Silumise tase %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG ei ole kompileerimise ajal defineeritud. Ignoreerin.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s ei ole. Loon selle?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"%s ei saa luua: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Saajaid ei ole mratud.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: faili ei saa lisada.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Uute teadetega postkaste ei ole.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Sissetulevate kirjade postkaste ei ole mratud.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Postkast on thi.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Loen %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Postkast on riknenud!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Postkast oli riknenud!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Fataalne viga! Postkasti ei nnestu uuesti avada!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Postkasti ei saa lukustada!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: mbox on muudetud, aga muudetud teateid ei ole! (teatage sellest veast)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Kirjutan %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Kinnitan muutused...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Kirjutamine ebannestus! Osaline postkast salvestatud faili %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Postkasti ei nnestu uuesti avada!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Avan postkasti uuesti...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Hppa: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Vigane indeksi number.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Kirjeid pole.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Enam allapoole ei saa kerida.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Enam lespoole ei saa kerida.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Te olete esimesel lehel.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Te olete viimasel lehel.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Te olete viimasel kirjel.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Te olete esimesel kirjel.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Otsi: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Otsi tagurpidi: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Ei leitud.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Mrgitud kirjeid pole.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Selles mens ei ole otsimist realiseeritud.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"hppamine ei ole dialoogidele realiseeritud.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Mrkimist ei toetata.\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Valin %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Teadet ei nnestu saata.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): ei nnestu seada faili aegu\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"viga mustris: %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"hendus serveriga %s suleti\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL ei ole kasutatav.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Preconnect ksklus ebannestus\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Viga serveriga %s suhtlemisel (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Otsin serverit %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Ei leia masina \\\"%s\\\" aadressi\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"hendus serverisse %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Serveriga %s ei nnestu hendust luua (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Teie ssteemis ei ole piisavalt entroopiat\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Kogun entroopiat: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s omab ebaturvalisi igusi!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"Entroopia nappuse tttu on SSL kasutamine blokeeritud\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"S/V viga\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL ebannestus: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Ei nnestu saada partneri sertifikaati\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"SSL hendus kasutades %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Tundmatu\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[arvutamine ei nnestu]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[vigane kuupev]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Serveri sertifikaat ei ole veel kehtiv\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Serveri sertifikaat on aegunud\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Ei nnestu saada partneri sertifikaati\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Ei nnestu saada partneri sertifikaati\"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"S/MIME sertifikaadi omanik ei ole kirja saatja.\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Sertifikaat on salvestatud\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Selle serveri omanik on:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Selle sertifikaadi vljastas:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"See sertifikaat on kehtiv\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   alates %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     kuni %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Srmejlg: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(k)eeldu, (n)ustu korra, nustu (a)alati\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"kna\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(k)eeldu, (n)ustu korra\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"kn\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Hoiatus: Sertifikaati ei saa salvestada\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Sertifikaat on salvestatud\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL hendus kasutades %s (%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Viga terminali initsialiseerimisel.\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Srmejlg: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Srmejlg: %s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"Serveri sertifikaat ei ole veel kehtiv\"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"Serveri sertifikaat on aegunud\"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"Serveri sertifikaat on aegunud\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\n#, fuzzy\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"Serveri sertifikaat ei ole veel kehtiv\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \"Sertifikaat on salvestatud\"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"hendus serverisse %s...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Viga serveriga %s suhtlemisel (%s)\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\n#, fuzzy\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Fail on kataloog, salvestan sinna?\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Fail on kataloog, salvestan sinna?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Fail kataloogis: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Fail on olemas, (k)irjutan le, (l)isan vi ka(t)kestan?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"klt\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Teadet ei saa POP postkasti salvestada.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Lisan teated kausta %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s ei ole postkast!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Lukustamise arv on letatud, eemaldan %s lukufaili? \"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"%s punktfailiga lukustamine ei nnestu.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"fcntl luku seadmine aegus!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Ootan fcntl lukku... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"flock luku seadmine aegus!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Ootan flock lukku... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"%s ei saa lukustada\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Postkasti %s ei nnestu snkroniseerida!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Tstan loetud teated postkasti %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Eemaldan %d kustutatud teate?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Eemaldan %d kustutatud teadet?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Tstan loetud teated kausta %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Postkasti ei muudetud.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d silitatud, %d tstetud, %d kustutatud.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d silitatud, %d kustutatud.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \"Kirjutamise llitamiseks vajutage '%s'\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Kirjutamise uuesti lubamiseks kasutage 'toggle-write'!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Postkast on mrgitud mittekirjutatavaks. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Postkast on kontrollitud.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Teadet ei nnestu kirjutada\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"EelmLk\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"JrgmLm\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Vaata lisa\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Jrgm.\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Teate lpp on nidatud.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Teate algus on nidatud.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Te loete praegu abiinfot.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Rohkem tsiteetitud teksti pole.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Tsiteeritud teksiti jrel rohkem teksti ei ole.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"mitmeosalisel teatel puudub eraldaja!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Viga avaldises: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"viga avaldises\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Vigane kuupev: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Vigane kuu: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Vigane suhteline kuupev: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"viga mustris: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"parameeter puudub\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"sulud ei klapi: %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: vigane ksklus\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: ei toetata selles moodis\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"parameeter puudub\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"sulud ei klapi: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"thi muster\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"viga: tundmatu op %d (teatage sellest veast).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Kompileerin otsingumustrit...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Kivitan leitud teadetel ksu...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"htegi mustrile vastavat teadet ei leitud.\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"Salvestan...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Otsing judis midagi leidmata lppu\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Otsing judis midagi leidmata algusse\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Otsing katkestati.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Sisestage PGP parool:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP parool on unustatud.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Viga: ei nnestu luua PGP alamprotsessi! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP vljundi lpp --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Viga: PGP alamprotsessi loomine ei nnestu! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"Dekrptimine ebannestus.\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"PGP protsessi loomine ebannestus!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"PGP kivitamine ei nnestu\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"kaimu\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"kaimu\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"kaimu\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"PGP (k)rpti, (a)llkiri, allk. ku(i), (m)lemad, k(e)hasse, vi (u)nusta? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"kaimu\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Laen PGP vtit...\"\n\n#: pgpkey.c:491\n#, fuzzy\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Kik sobivad vtmed on mrgitud aegunuks/thistatuks.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP vtmed, mis sisaldavad <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP vtmed, mis sisaldavad \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"/dev/null ei saa avada\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP Vti %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Server ei toeta ksklust TOP.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Pist ei nnestu ajutissse faili kirjutada!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Server ei toeta UIDL ksklust.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"Teadete indeks on vigane. Proovige postkasti uuesti avada.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s on vigane POP tee\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Laen teadete nimekirja...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Teadet ei nnestu ajutisse faili kirjutada!\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"mrgin %d teadet kustutatuks...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Kontrollin, kas on uusi teateid...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP serverit ei ole mratud.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Uusi teateid POP postkastis pole.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Kustutan teated serverist?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Loen uusi teateid (%d baiti)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Viga postkasti kirjutamisel!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d/%d teadet loetud]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Server sulges henduse!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Autentimine (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Autentimine (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP autentimine ebannestus.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Server ei toeta ksklust USER.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Vigane    \"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Teateid ei nnestu sererile jtta.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Viga serveriga henduse loomisel: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Sulen henduse POP serveriga...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Kontrollin teadete indekseid ...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"hendus katkes. Taastan henduse POP serveriga?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Postitusootel teated\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Postitusootel teateid pole\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"Vigane PGP pis\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Vigane S/MIME pis\"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"Laen teadet...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Dekrptimine ebannestus.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Uus pring\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Loo alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Otsi\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Ootan vastust...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Pringuksku ei ole defineeritud.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Pring\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Pring: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Pring '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Toru\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Trki\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Salvestan...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Lisa on salvestatud.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"HOIATUS: Te olete le kirjutamas faili %s, jtkan?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Lisa on filtreeritud.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtreeri lbi: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Toru ksule: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Ma ei tea, kuidas trkkida %s lisasid!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Trkin mrgitud lisa(d)?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Trkin lisa?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Krpteeritud teadet ei nnestu lahti krpteerida!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Lisad\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Osasid, mida nidata, ei ole!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Lisasid ei saa POP serverilt kustutada.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Krpteeritud teadetest ei saa lisasid eemaldada.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Krpteeritud teadetest ei saa lisasid eemaldada.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Kustutada saab ainult mitmeosalise teate lisasid.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Peegeldada saab ainult message/rfc822 osi.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing message!\"\nmsgstr \"Viga teate saatmisel.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing messages!\"\nmsgstr \"Viga teate saatmisel.\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Ajutist faili %s ei saa avada.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Edasta lisadena?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Kiki mrgitud lisasid ei saa dekodeerida. Edastan lejnud MIME formaadis?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Edastan MIME pakina?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"%s loomine ebannestus.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Ei leia htegi mrgitud teadet.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Postiloendeid pole!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Kiki mrgitud lisasid ei saa dekodeerida. Kapseldan lejnud MIME formaati?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Lppu\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Lisa\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Kustuta\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Mixmaster type2.list laadimine ei nnestu!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Valige vahendajate ahel.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Viga: %s ei saa ahela viimase vahendajana kasutada.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster ahelad on piiratud %d lliga.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Vahendajate ahel on juba thi.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Te olete ahela esimese lli juba valinud.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Te olete ahela viimase lli juba valinud.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster ei toeta Cc vi Bcc piseid.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Mixmaster kasutamisel omistage palun hostname muutujale korrektne vrtus!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Viga teate saatmisel, alamprotsess lpetas koodiga %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Viga teate saatmisel.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Vigaselt formaaditud kirje tbile %s faili \\\"%s\\\" real %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Mailcap tee ei ole mratud\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"Tbil %s puudub mailcap kirje\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: liiga vhe argumente\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: liiga palju argumente\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Teema puudub, katkestan?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Teema puudub, katkestan.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Vastan aadressile %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Vastus aadressile %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Mrgitud teateid ei ole nha!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Kaasan vastuses teate?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Tsiteerin teadet...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Kiki soovitud teateid ei nnestu kaasata!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Edasta lisadena?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Valmistan edastatavat teadet...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Laen postitusootel teate?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Toimetan edastatavat teadet?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Katkestan muutmata teate?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Katkestasin muutmata teate saatmise.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Teade jeti postitusootele.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Kirja saajaid pole mratud!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Kirja saajaid ei mratud!\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Teema puudub, katkestan saatmise?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Teema puudub.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Saadan teadet...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"vaata lisa tekstina\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Teadet ei nnestu saata.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Teade on saadetud.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Saadan taustal.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Eraldaja puudub! [teatage sellest veast]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s ei ole enam!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s ei ole tavaline fail.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"%s ei saa avada\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Viga teate saatmisel, alamprotsess lpetas %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Vljund saatmise protsessist\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Vljun.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Sain %s...  Vljun.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Sain signaali %d...  Vljun.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Sisestage S/MIME parool:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Usaldatud \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Kontrollitud \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Kontrollimata\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Aegunud   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Thistatud \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Vigane    \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Tundmatu  \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME sertifikaadid, mis sisaldavad \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"ID ei ole kehtiv.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Sisestage vtme ID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"%s jaoks puudub kehtiv sertifikaat.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Viga: ei nnestu luua OpenSSL alamprotsessi!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"sertifikaadi faili pole\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"pole postkast\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"OpenSSL vljundit pole...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"OpenSSL protsessi avamine ebannestus!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- OpenSSL vljundi lpp --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Viga: ei nnestu luua OpenSSL alamprotsessi! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Jrgneb S/MIME krptitud info --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Jrgneb S/MIME allkirjastatud info --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME krptitud info lpp --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME Allkirjastatud info lpp --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME (k)rpti, (a)llkiri, allk. ku(i), (m)lemad vi (u)nusta? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"S/MIME (k)rpti, (a)llkiri, allk. ku(i), (m)lemad vi (u)nusta? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"kaimu\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"S/MIME (k)rpti, (a)llkiri, allk. ku(i), (m)lemad vi (u)nusta? \"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"kaimu\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SSL ebannestus: %s\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SSL ebannestus: %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Vigane    \"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"GSSAPI autentimine ebannestus.\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"SASL autentimine ebannestus.\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL autentimine ebannestus.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Jrjestan teateid...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Ei leia jrjestamisfunktsiooni! [teatage sellest veast]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(pole postkast)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Vanem teade ei ole selles piiratud vaates nhtav.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Vanem teade ei ole kttesaadav.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"thi operatsioon\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"vaata lisa mailcap vahendusel\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"vaata lisa tekstina\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Llita osade nitamist\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"liigu lehe lppu\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"saada teade edasi teisele kasutajale\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"valige sellest kataloogist uus fail\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"vaata faili\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"nita praegu valitud faili nime\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"telli jooksev postkast (ainult IMAP)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"loobu jooksvast postkastist (ainult IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"llita kikide/tellitud kaustade vaatamine (ainult IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"nita uute teadetega postkaste\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"vaheta kataloogi\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"kontrolli uusi kirju postkastides\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"lisa sellele teatele fail(e)\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"lisa sellele teatele teateid\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"toimeta BCC nimekirja\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"toimeta CC nimekirja\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"toimeta lisa kirjeldust\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"toimeta lisa kodeeringut\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"sisestage failinimi, kuhu salvestada selle teate koopia\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"toimeta lisatavat faili\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"toimeta from vlja\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"toimeta teadet koos pisega\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"toimeta teadet\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"toimeta lisa kasutades mailcap kirjet\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"toimeta Reply-To vlja\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"toimeta selle teate teemat\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"toimeta TO nimekirja\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"loo uus postkast (ainult IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"muuda lisa sisu tpi\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"loo lisast ajutine koopia\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"kivita teatel ispell\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"loo mailcap kirjet kasutades uus lisa\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"llita selle lisa mberkodeerimine\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"salvesta teade hilisemaks saatmiseks\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"tsta/nimeta lisatud fail mber\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"saada teade\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"llita paigutust kehasse/lisasse\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"llita faili kustutamist peale saatmist\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"uuenda teate kodeerimise infot\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"kirjuta teade kausta\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"koleeri teade faili/postkasti\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"loo teate saatjale alias\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"liiguta kirje ekraanil alla\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"liiguta kirje ekraanil keskele\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"liiguta kirje ekraanil les\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"tee avatud (text/plain) koopia\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"tee avatud (text/plain) koopia ja kustuta\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"kustuta jooksev kirje\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"kustuta jooksev postkast (ainult IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"kustuta kik teated alamteemas\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"kustuta kik teated teemas\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"esita saatja tielik aadress\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"nita teadet ja llita pise nitamist\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"nita teadet\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"toimeta kogu teadet\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"kustuta smbol kursori eest\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"liiguta kursorit smbol vasakule\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"tsta kursor sna algusse\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"hppa rea algusse\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"vaheta sissetulevaid postkaste\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"tienda failinime vi aliast\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"tienda aadressi pringuga\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"kustuta smbol kursori alt\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"hppa realppu\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"liiguta kursorit smbol paremale\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"tsta kursor sna lppu\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"keri ajaloos alla\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"keri ajaloos les\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"kustuta smbolid kursorist realpuni\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"kustuta smbolid kursorist sna lpuni\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"kustuta real kik smbolid\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"kustuta sna kursori eest\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"kvoodi jrgmine klahvivajutus\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"vaheta kursori all olev smbol kursorile eelnevaga\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"sna algab suurthega\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"teisenda thed snas vikethtedeks\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"teisenda thed snas suurthtedeks\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"sisestage muttrc ksk\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"sisestage faili mask\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"vlju sellest menst\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtreeri lisa lbi vlisksu\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"liigu esimesele kirjele\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"llita teate 'thtsuse' lippu\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"edasta teade kommentaaridega\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"vali jooksev kirje\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"vasta kikidele\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"keri pool leheklge alla\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"keri pool leheklge les\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"see ekraan\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"hppa indeksi numbrile\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"liigu viimasele kirjele\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"vasta mratud postiloendile\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"kivita makro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"koosta uus e-posti teade\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"ava teine kaust\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"ava teine kaust ainult lugemiseks\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"puhasta teate olekulipp\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"kustuta mustrile vastavad teated\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"lae kiri IMAP serverilt\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"lae kiri POP serverilt\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"liigu esimesele teatele\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"liigu viimasele teatele\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"nita ainult mustrile vastavaid teateid\"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"Peegelda mrgitud teated aadressile: \"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Uute teadetega postkaste ei ole.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"hppa jrgmisele uuele teatele\"\n\n#: ../keymap_alldefs.h:117\n#, fuzzy\nmsgid \"jump to the next new or unread message\"\nmsgstr \"hppa jrgmisele lugemata teatele\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"hppa jrgmisele alamteemale\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"hppa jrgmisele teemale\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"liigu jrgmisele kustutamata teatele\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"hppa jrgmisele lugemata teatele\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"hppa teema vanemteatele\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"hppa eelmisele teemale\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"hppa eelmisele alamteemale\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"liigu eelmisele kustutamata teatele\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"hppa eelmisele uuele teatele\"\n\n#: ../keymap_alldefs.h:127\n#, fuzzy\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"hppa eelmisele lugemata teatele\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"hppa eelmisele lugemata teatele\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"mrgi jooksev teema loetuks\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"mrgi jooksev alamteema loetuks\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"sea teate olekulipp\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"salvesta postkasti muutused\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"mrgi mustrile vastavad teated\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"taasta mustrile vastavad teated\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"eemalda mrk mustrile vastavatelt teadetelt\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"liigu lehe keskele\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"liigu jrgmisele kirjele\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"keri ks rida alla\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"liigu jrgmisele lehele\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"hppa teate lppu\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"llita tsiteeritud teksti nitamist\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"liigu tsiteeritud teksti lppu\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"hppa teate algusse\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"saada teade/lisa ksu sisendisse\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"liigu eelmisele kirjele\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"keri ks rida les\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"liigu eelmisele lehele\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"trki jooksev kirje\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"otsi aadresse vlise programmiga\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"lisa uue pringu tulemused olemasolevatele\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"salvesta postkasti muutused ja vlju\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"vta postitusootel teade\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"puhasta ja joonista ekraan uuesti\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{sisemine}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"kustuta jooksev postkast (ainult IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"vasta teatele\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"vta teade aluseks uuele\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"salvesta teade/lisa faili\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"otsi regulaaravaldist\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"otsi regulaaravaldist tagaspidi\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"otsi jrgmist\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"otsi jrgmist vastasuunas\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"llita otsingumustri vrvimine\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"kivita ksk ksuinterpretaatoris\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"jrjesta teated\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"jrjesta teated tagurpidi\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"mrgi jooksev kirje\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"kasuta funktsiooni mrgitud teadetel\"\n\n#: ../keymap_alldefs.h:169\n#, fuzzy\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"kasuta funktsiooni mrgitud teadetel\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"mrgi jooksev alamteema\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"mrgi jooksev teema\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"llita teate 'vrskuse' lippu\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"llita postkasti lekirjutatamist\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"llita kas brausida ainult postkaste vi kiki faile\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"liigu lehe algusse\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"taasta jooksev kirje\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"taasta kik teema teated\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"taasta kik alamteema teated\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"nita Mutti versiooni ja kuupeva\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"vaata lisa kasutades vajadusel mailcap kirjet\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"nita MIME lisasid\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"nita praegu kehtivat piirangu mustrit\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"ava/sule jooksev teema\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"ava/sule kik teemad\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"lisa PGP avalik vti\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"nita PGP vtmeid\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"saada PGP avalik vti\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"kontrolli PGP avalikku vtit\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"vaata vtme kasutaja identifikaatorit\"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"kontrolli klassikalise pgp olemasolu\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Aktsepteeri koostatud ahelaga\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Lisa edasisaatja ahela lppu\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Lisa edasisaatja ahelasse\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Eemalda edasisaatja ahelast\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Vali ahela eelmine element\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Vali ahela jrgmine element\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"saada teade lbi mixmaster vahendajate ahela\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"loo avateksti koopia ja kustuta\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"loo avateksti koopia\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"eemalda parool(id) mlust\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"eralda toetatud avalikud vtmed\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"nita S/MIME vtmeid\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"Kustutamata teateid pole.\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" selles piiratud vaates\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"Kustutamata teateid pole.\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"toimeta teadet\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"viga avaldises\"\n\n#, fuzzy\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Sisemine viga. Informeerige <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"hppa teema vanemteatele\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Viga: vigane PGP/MIME teade! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Viga: multipart/encrypted teatel puudub protokolli parameeter!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID %s pole kontrollitud. Kas soovite seda ikka %s jaoks kasutada ?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Kasutan (mitteusaldatavat!) ID %s %s jaoks?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Kasutan ID %s %s jaoks?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Hoiatus: Te pole veel otsustanud usaldada ID %s. (jtkamiseks suvaline \"\n#~ \"klahv)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"OpenSSL vljundit pole...\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Hoiatus: vahepealset sertifikaati pole.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Puhas\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"kaimeu\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Otsingumuster puudub.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"tagurpidi otsing: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Otsing: \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Viga teate saatmisel.\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"SSL Sertifikaadi kontroll\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"SSL Sertifikaadi kontroll\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Laen nimeruumid...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"kasutage: mutt [ -nRyzZ ] [ -e <ksk> ] [ -F <fail> ] [ -m <tp> ]\\n\"\n#~ \"               [ -f <fail> ]\\n\"\n#~ \"          mutt [ -nR ] [ -e <ksk> ] [ -F <fail> ] -Q <pring>\\n\"\n#~ \"               [ -Q <pring> ] [...]\\n\"\n#~ \"          mutt [ -nR ] [ -e <ksk> ] [ -F <fail> ] -A <hdnimi>\\n\"\n#~ \"               [ -A <hdnimi> ] [...]\\n\"\n#~ \"          mutt [ -nx ] [ -e <ksk> ] [ -a <fail> ] [ -F <fail> ] [ -H \"\n#~ \"<fail> ]\\n\"\n#~ \"               [ -i <fail> ] [ -s <teema> ] [ -b <aadr> ] [ -c <aadr> ]\\n\"\n#~ \"               <aadr> [ ... ]\\n\"\n#~ \"          mutt [ -n ] [ -e <ksk> ] [ -F <fail> ] -p\\n\"\n#~ \"          mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"vtmed:\\n\"\n#~ \"  -A <hdnimi>\\tavalda antud hdnimi\\n\"\n#~ \"  -a <fail>\\tlisa teatele fail\\n\"\n#~ \"  -b <aadress>\\tmra pimekoopia (BCC) aadress\\n\"\n#~ \"  -c <aadress>\\tmra koopia (CC) aadress\\n\"\n#~ \"  -e <ksk>\\tkivita peale algvrtutamist ksk\\n\"\n#~ \"  -f <fail>\\tmillist postkasti lugeda\\n\"\n#~ \"  -F <fail>\\tmra alternatiivne muttrc fail\\n\"\n#~ \"  -H <fail>\\tmra piste mustandi fail\\n\"\n#~ \"  -i <fail>\\tfail mida mutt peab vastamisel lisama\\n\"\n#~ \"  -m <tp>\\tmta vaikimisi postkasti tp\\n\"\n#~ \"  -n\\t\\tra loe ssteemset Muttrc faili\\n\"\n#~ \"  -p\\t\\tlae postitusootel teade\\n\"\n#~ \"  -Q <muutuja>\\tloe seadete muutuja\\n\"\n#~ \"  -R\\t\\tava postkast ainult lugemiseks\\n\"\n#~ \"  -s <teema>\\tmra teate teema (jutumrkides, kui on mitmesnaline)\\n\"\n#~ \"  -v\\t\\tnita versiooni ja kompileerimis-aegseid mranguid\\n\"\n#~ \"  -x\\t\\tsimuleeri mailx saatmise moodi\\n\"\n#~ \"  -y\\t\\tvali postkast teie 'postkastide' loendist\\n\"\n#~ \"  -z\\t\\tvlju kohe, kui postkastis pole uusi teateid\\n\"\n#~ \"  -Z\\t\\tava esimene kaust uue teatega, vlju kohe, kui pole\\n\"\n#~ \"  -h\\t\\tesita see abiinfo\"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"POP serveril ei saa muuta lippu 'important' (thtis).\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"POP serveril ei saa teadet toimetada.\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"Loen %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Kirjutan teateid... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"Loen %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Kivitan pgp...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Fataalne viga. Teadete arv ei ole snkroonis!\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"CLOSE ebannestus.\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Autoriigus (C) 1996-2002 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"Autoriigus (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Autoriigus (C) 1997-2002 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Autoriigus (C) 1998-2002 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Autoriigus (C) 1999-2002 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Autoriigus (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Autoriigus (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Paljud siin mainimata inimesed on saatnud koodi, parandusi ja soovitusi.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n\n#~ msgid \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (f)orget it? \"\n#~ msgstr \"1: DES, 2: 3DES, 3: RC2-40, 4: RC2-64, 5: RC2-128 vi (u)nusta? \"\n\n#~ msgid \"12345f\"\n#~ msgstr \"12345u\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"Esimene kirje on nidatud.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"Viimane kirje on nidatud.\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"Sellel serveril ei saa IMAP postkastidele lisada\"\n\n#, fuzzy\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"Loon PGP teade kirja kehas?\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"Ei saa lugeda %s atribuute: %s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s ei ole tavaline fail.\"\n\n#~ msgid \"unspecified protocol error\"\n#~ msgstr \"protokolli viga\"\n\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"Kivitan OpenSSL...\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"Peegelda teade aadressile %s...?\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"Peegelda teated aadressile %s...?\"\n\n#~ msgid \"ewsabf\"\n#~ msgstr \"kaimu\"\n"
  },
  {
    "path": "po/eu.po",
    "content": "# translation of eu.po to Euskara\n# Piarres Beobide  <pi@beobide.net>, 2004, 2005, 2008.\n# Spanish translation of mutt\n# Copyright (C) 1999-2001 Boris Wesslowski <Boris@Wesslowski.com>\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: eu\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2008-05-20 22:39+0200\\n\"\n\"Last-Translator: Piarres Beobide <pi@beobide.net>\\n\"\n\"Language-Team: Euskara <debian-l10n-basque@lists.debian.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=ISO-8859-1\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Generator: KBabel 1.11.4\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"%s -n erabiltzaile izena: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"%s@%s-ren pasahitza: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Irten\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Ezab\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Desezabatu\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Hautatu\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Laguntza\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Ez duzu aliasik!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Aliasak\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Aliasa sortu: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Izen honekin baduzu ezarritako ezizena bat!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Kontuz: ezizena izen honek ez du funtzionatuko.  Konpondu?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Helbidea: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Errorea: '%s' IDN okerra da.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Pertsona izena: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Onartu?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Gorde fitxategian: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Errorea ezizen fitxategia irakurtzean\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Ezizena gehiturik.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Errorea ezizen fitxategian bilatzean\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Ezin da txantiloi izena aurkitu, jarraitu?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Mailcap konposaketa sarrerak hau behar du %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Errorea \\\"%s\\\" abiarazten!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Huts buruak analizatzeko fitxategia irekitzerakoan.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Huts buruak kentzeko fitxategia irekitzerakoan.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Huts fitxategia berrizendatzerakoan.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"%s-rentza ez dago mailcap sorrera sarrerarik, fitxategi hutsa sortzen.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Mailcap edizio sarrerak %%s behar du\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Ez dago mailcap edizio sarrerarik %s-rentzat\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Ez da pareko mailcap sarrerarik aurkitu.  Testu bezala bistarazten.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME mota ezarri gabe.  Ezin da gehigarria erakutsi.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Ezin da iragazkia sortu\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Gehigarriak\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Gehigarriak\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Ezin da iragazkia sortu\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Idaztean huts!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Ez dakit non inprimatu hau!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Karpetara joan: \"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Maskara\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s ez da karpeta bat.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Postakutxak [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Harpidedun [%s], Fitxategi maskara: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Karpeta [%s], Fitxategi maskara: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Ezin da karpeta bat gehitu!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Ez da fitxategi maskara araberako fitxategirik aurkitu\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"\\\"Create\\\" IMAP posta kutxek bakarrik onartzen dute\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Berrizendaketa IMAP postakutxentzat bakarrik onartzen da\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"\\\"Delete\\\" IMAP posta kutxek bakarrik onartzen dute\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Ezin da erro karpeta ezabatu\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Benetan \\\"%s\\\" postakutxa ezabatu?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Postakutxa ezabatua.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Postakutxa ez da ezabatu.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Karpetara joan: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Errorea karpeta arakatzerakoan.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Fitxategi maskara: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Atzekoz aurrera (d)ataz, (a)lphaz, tamaina(z) edo ez orde(n)atu? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"(d)ataz, (a)lpha, tamaina(z) edo ez orde(n)atu? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"fats\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Fitxategi izen berria: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Ezin da karpeta ikusi\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Errorea fitxategia ikusten saiatzerakoan\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Posta berria \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: kolorea ez du terminalak onartzen\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: ez da kolorea aurkitu\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: ez da objektua aurkitu\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: komandoa sarrera objektutan bakarrik erabili daiteke\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: argumentu gutxiegi\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Ez dira argumentuak aurkitzen.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"kolorea:argumentu gutxiegi\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: argumentu gutxiegi\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: ez da atributua aurkitu\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"argumentu gutxiegi\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"argumentu gehiegi\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"lehenetsitako kolorea ez da onartzen\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"PGP sinadura egiaztatu?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Ezin da behin-behineko fitxategia sortu!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Ezin da bistaratze iragazkia sortu\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Ezin da mezurik kopiatu\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME sinadura arrakastatsuki egiaztaturik.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"S/MIME ziurtagiriaren jabea ez da mezua bidali duena.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Abisua -.Mezu honen zati bat ezin izan da sinatu.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME sinadura EZIN da egiaztatu.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP sinadura arrakastatsuki egiaztaturik.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP sinadura EZIN da egiaztatu.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Komandoa: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Mezuak hona errebotatu: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Markatutako mezuak hona errebotatu: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Errorea helbidea analizatzean!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"IDN Okerra: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Mezua %s-ra errebotatu\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Mezuak %s-ra errebotatu\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Mezua ez da errebotatu.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Mezuak ez dira errebotatu.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Mezua errebotaturik.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Mezuak errebotaturik.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Ezin da iragazki prozesua sortu\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Komandora hodia egin: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Ez da inprimatze komandorik ezarri.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Mezua inprimatu?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Markatutako mezuak inprimatu?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Mezua inprimaturik\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Mezuak inprimaturik\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Ezin da mezua inprimatu\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Ezin dira mezuak inprimatu\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Alderantziz-Ordenatu (d)ata/(j)at/ja(s)/(g)aia/(n)ori/(h)aria/(e)z-ordenatu/\"\n\"(t)amaina/(p)untuak/(z)abor-posta?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Ordenatu (d)ata/(j)at/ja(s)/(g)aia/(n)ori/(h)aria/(e)z-ordenatu/(t)amaina/\"\n\"(p)untuak/(z)abor-posta?  \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"djsgnhetpz\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Shell komandoa: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Deskodifikatu-gorde%s postakutxan\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Deskodifikatu-kopiatu%s postakutxan\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Desenkriptatu-gorde%s postakutxan\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Desenkriptatu-kopiatu%s postakutxan\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s posta-kutxan gorde\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s posta-kutxan kopiatu\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" markatua\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Hona kopiatzen %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Bidali aurretik %s-ra bihurtu?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Eduki mota %s-ra aldatzen.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Karaktere ezarpena %s-ra aldaturik: %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"ez da bihurtzen\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"bihurtzen\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Ez dago gehigarririk.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Bidali\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Ezeztatu\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Fitxategia gehitu\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Deskrib\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Markatzea ez da onartzen.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Sinatu, Enkriptatu\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Enkriptatu\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Sinatu\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \" (barruan)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\n#, fuzzy\nmsgid \" (S/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" horrela sinatu: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<lehenetsia>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Honekin enkriptatu: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] ez da gehiago existitzen!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] aldaturik. Kodeketea eguneratu?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Gehigarriak\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Kontuz: '%s' IDN okerra da.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Ezin duzu gehigarri bakarra ezabatu.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"IDN okerra \\\"%s\\\"-n: '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Aukeratutako fitxategia gehitzen...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Ezin da %s gehitu!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Bertatik mezu bat gehitzeko postakutxa ireki\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Ezin da postakutxa blokeatu!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Ez dago mezurik karpeta honetan.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Gehitu nahi dituzun mezuak markatu!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Ezin da gehitu!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Gordetzeak mezu gehigarriei bakarrik eragiten die.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Gehigarri hau ezin da bihurtu.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Gehigarri hau bihurtua izango da.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Kodifikazio baliogabea.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Mezu honen kopia gorde?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Honetara berrizendatu: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Ezin egiaztatu %s egoera: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Fitxategi berria: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Eduki-mota base/sub modukoa da\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"%s eduki mota ezezaguna\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Ezin da %s fitxategia sortu\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Hemen duguna gehigarria sortzerakoan huts bat da\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Mezu hau atzeratu?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Mezuak postakutxan gorde\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Mezuak %s-n gordetzen ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Mezua idazten.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME dagoeneko aukeraturik. Garbitu era jarraitu ? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP dagoeneko aukeraturik. Garbitu eta jarraitu ? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"errorea gpgme ingurunea sortzean: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"errorea CMS protokoloa gaitzerakoan: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"errorea gpgme datu objektua sortzerakoan: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"errorea datu objektua esleitzerakoan: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"errorea datu objektua atzera eraman: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"errorea datu objektua irakurtzerakoan: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Ezin da behin-behineko fitxategia sortu\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"errorea `%s' hartzailea gehitzerakoan: %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"ez da `%s' gako sekretua aurkitu: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"`%s' gako sekretu espezifikazio anbiguoa\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"errorea`%s' gako sekretua ezartzerakoan: %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"errorea PKA sinadura notazioa ezartzean: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"errorea datuak enkriptatzerakoan: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"errorea datuak sinatzerakoan: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Abisua: Gakoetako bat errebokatua izan da\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Abisua: sinadura sortzeko erabilitako gakoa iraungitze data: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Abisua: Ziurtagiri bat behintzat iraungi egin da\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Abisua: Sinadura iraungitze data: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Ezin da egiaztatu gakoa edo ziurtagiria falta delako\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL ez da erabilgarri\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"CRL erabilgarria zaharregia da\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Politika behar bat ez da aurkitu\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Sistema errore bat gertatu da\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"KONTUAZ: PKA sarrera ez da sinatzaile helbidearen berdina: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"PKA egiaztaturiko sinatzaile helbidea: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Hatz-marka: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"KONTUZ: EZ dugu ezagutzarik gakoa behean agertzen den pertsonarena dela \"\n\"frogatzen duenik\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"ABISUA: Gakoa ez da aurrerantzean behean agertzen den pertsonarena\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"ABISUA: Ez da egia gakoa aurrerantzean behean agertzen den pertsonarena \"\n\"dela\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Sortu %s?\"\n\n#: crypt-gpgme.c:1462\n#, fuzzy, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Errorea gako argibideak eskuratzen: \"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\n#, fuzzy\nmsgid \"Good signature from:\"\nmsgstr \"Hemendik ondo sinaturik: \"\n\n#: crypt-gpgme.c:1476\n#, fuzzy\nmsgid \"*BAD* signature from:\"\nmsgstr \"Hemendik ondo sinaturik: \"\n\n#: crypt-gpgme.c:1492\n#, fuzzy\nmsgid \"Problem signature from:\"\nmsgstr \"Hemendik ondo sinaturik: \"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\n#, fuzzy\nmsgid \"               expires: \"\nmsgstr \"                ezizena: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Sinadura argibide hasiera --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Errorea: huts egiaztatzerakoan: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Hasiera idazkera (sinadura: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Amaiera idazkera ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Sinadura argibide amaiera --] \\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errorea: desenkriptatzerakoan huts: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Errorea gako argibideak eskuratzen: \"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Errorea: desenkriptazio/egiaztapenak huts egin du: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Errorea: huts datuak kopiatzerakoan\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP MEZU HASIERA --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP PUBLIKO GAKO BLOKE HASIERA --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP SINATUTAKO MEZUAREN HASIERA --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- PGP MEZU BUKAERA--]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP PUBLIKO GAKO BLOKE AMAIERA --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- PGP SINATUTAKO MEZU BUKAERA --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errorea: ezin da PGP mezuaren hasiera aurkitu! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Errorea: ezin da behin-behineko fitxategi sortu! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hurrengo datuak PGP/MIME bidez sinatu eta enkriptaturik daude --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hurrengo datuak PGP/MIME bidez enkriptaturik daude --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME bidez sinatu eta enkriptaturiko datuen amaiera --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME bidez enkriptaturiko datuen amaiera --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP mezua arrakastatsuki desenkriptatu da.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Ezin da PGP mezua desenkriptatu\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- hurrengo datuak S/MIME bidez sinaturik daude --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- hurrengo datuak S/MIME bidez enkriptaturik daude --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- S/MIME bidez sinaturiko datuen amaiera --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- S/MIME bidez enkriptaturiko datuen amaiera --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Ezin da erabiltzaile ID hau bistarazi (kodeketa ezezaguna)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Ezin da erabiltzaile ID hau bistarazi (kodeketa baliogabea)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Ezin da erabiltzaile ID hau bistarazi (DN baliogabea)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" hemen ......: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Izena ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Baliogabea]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Baliozko Nork: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Baliozko Nori ..: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Gako mota ..: %s, %lu bit %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Tekla Erabilera .: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"enkriptazioa\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"sinatzen\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"ziurtapena\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Serial-Zb .: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Emana : \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Azpigakoa ....: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Indargabetua]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Iraungia]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Desgaitua]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Datuak batzen...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Errorea jaulkitzaile gakoa bilatzean: %s\\n\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Errorea: ziurtagiri kate luzeegia - hemen gelditzen\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Gako IDa: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new hutsa: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start hutsa: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next hutsa: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Pareko gako guztiak iraungita/errebokatua bezala markaturik daude.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Irten  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Aukeratu  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Gakoa egiaztatu  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP eta S/MIME gako parekatzea\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"PGP gako parekatzea\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME gako parekatzea\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"gako parekatzea\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Gako hau ezin da erabili: iraungita/desgaitua/errebokatuta.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID-a denboraz kanpo/ezgaitua/ukatua dago.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"ID-ak mugagabeko balioa du.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"ID-a ez da baliozkoa.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"ID bakarrik marginalki erabilgarria da.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%sZihur zaude gakoa erabili nahi duzula?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"\\\"%s\\\" duten gakoen bila...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"ID-gakoa=\\\"%s\\\" %s-rako erabili?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"%s-rako ID-gakoa sartu: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Mesedez sar ezazu gako-ID-a: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Errorea gako argibideak eskuratzen: \"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP Gakoa %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME (e)nkript, (s)ina, sin (a) honela, (b)iak, (p)gp or (g)arbitu?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (e)nkrippt, (s)ina, sin(a)tu hola, (b)iak, s/(m)ime edo (g)abitu?\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"S/MIME (e)nkript, (s)ina, sin (a) honela, (b)iak, (p)gp or (g)arbitu?\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"esabpfg\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP (e)nkrippt, (s)ina, sin(a)tu hola, (b)iak, s/(m)ime edo (g)abitu?\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"esabmfg\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"S/MIME (e)nkript, (s)ina, sin (a) honela, (b)iak, (p)gp or (g)arbitu?\"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"esabpfg\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"PGP (e)nkrippt, (s)ina, sin(a)tu hola, (b)iak, s/(m)ime edo (g)abitu?\"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"esabmfg\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Honela sinatu: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Huts bidaltzailea egiaztatzerakoan\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Ezin izan da biltzailea atzeman\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (uneko ordua:%c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s irteera jarraian%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Pasahitza(k) ahazturik.\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Mezua ezin da erantsia bidali.  PGP/MIME erabiltzea itzuli?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"PGP deitzen...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Mezua ezin da erantsia bidali.  PGP/MIME erabiltzea itzuli?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Eposta ez da bidali.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"S/MIME mezuak ez dira onartzen edukian gomendiorik ez badute.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"PGP-gakoak ateratzen saiatzen...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"S/MIME ziurtagiria ateratzen saiatzen...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errorea: zatianitz/sinatutako protokolo ezezaguna %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errorea: konsistentzi gabeko zatianitz/sinaturiko estruktura! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Kontuz: Ezin dira %s/%s sinadurak egiaztatu. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hurrengo datuak sinaturik daude --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Kontuz: Ez da sinadurarik aurkitu. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Sinatutako datuen amaiera --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\\\"crypt_use_gpgme\\\" ezarria bina ez dago GPGME onarpenik.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"S/MIME deitzen...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"bai\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"ez\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Mutt utzi?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"errore ezezaguna\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Edozein tekla jo jarraitzeko...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" (? zerrendarako): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Ez da postakutxarik irekirik.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Ez daude mezurik.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Irakurketa soileko posta-kutxa.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Mezu-gehitze moduan baimenik gabeko funtzioa.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Ez dago ikus daitekeen mezurik.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, fuzzy, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"Ezin da %s: ACL-ak ez du ekintza onartzen\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Ezin da idazgarritasuna aldatu idaztezina den postakutxa batetan!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Posta-kutxaren aldaketa bertatik irtetean gordeak izango dira.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Karpetako aldaketak ezin dira gorde.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Irten\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Gorde\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Posta\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Erantzun\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Taldea\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Posta-kutxa kanpoaldetik aldaturik.  Banderak gaizki egon litezke.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Eposta berria posta-kutxa honetan.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Postakutxa kanpokoaldetik aldatua.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Ez dago mezu markaturik.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Ez dago ezer egiterik.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Mezura salto egin: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Argumentua mezu zenbaki bat izan behar da.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Mezu hau ez da ikusgarria.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Mezu zenbaki okerra.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"desezabatu mezua(k)\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Horrelako mezuak ezabatu: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Ez da muga patroirik funtzionamenduan.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Muga: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Hau duten mezuetara mugatu: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Mezu guztiak ikusteko, \\\"dena\\\" bezala mugatu.\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Mutt Itxi?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Horrelako mezuak markatu: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"desezabatu mezua(k)\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Hau betetzen duten mezua desezabatu: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Horrelako mezuen marka ezabatzen: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Postakutxa irakurtzeko bakarrik ireki\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Postakutxa ireki\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Ez dago posta berririk duen postakutxarik\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s ez da postakutxa bat.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Mutt gorde gabe itxi?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Hari bihurketa ez dago gaiturik.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Haria apurturik\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\n#, fuzzy\nmsgid \"Cannot link threads\"\nmsgstr \"hariak lotu\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Ez da Mezu-ID burua jaso harira lotzeko\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Lehenengo, markatu mezu bat hemen lotzeko\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Hariak loturik\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Hariak ez dira lotu\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Azkenengo mezuan zaude.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Ez dago desezabatutako mezurik.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Lehenengo mezuan zaude.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Bilaketa berriz hasieratik hasi da.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Bilaketa berriz amaieratik hasi da.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Jatorrizko mezua ez da ikusgarria bistaratze mugatu honetan.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Ez dago mezu berririk\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Jatorrizko mezua ez da ikusgarria bistaratze mugatu honetan.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Ez dago irakurgabeko mezurik\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"markatu mezua\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\n#, fuzzy\nmsgid \"Cannot toggle new\"\nmsgstr \"txandakatu berria\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Ez dago hari gehiagorik.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Lehenengo harian zaude.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Irakurgabeko mezuak dituen haria.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"desezabatu mezua\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Ezin da mezua idatzi\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"markatu mezua(k) irakurri gisa\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"desezabatu mezua\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\ttxertatu ~ soil bat duen lerro bat\\n\"\n\"~b erabiltzaileak\\tgehitu erabiltzaileak Bcc: eremuan\\n\"\n\"~c erabiltzaileak\\tgehitu erabiltzaileak Cc: eremuan\\n\"\n\"~f mezuak\\tmezuak txertatu\\n\"\n\"~F mezuak\\t~f-ren berdina, baina buruak ere txertatuaz\\n\"\n\"~h\\t\\teditatu mezu goiburuak\\n\"\n\"~m mezuak\\ttxertatu eta zitatu mezuak\\n\"\n\"~M mezuak\\t~m-ren berdina, baina buruak ere txertatuaz\\n\"\n\"~p\\t\\tinprimatu mezua\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tidatzi fitxategia eta editorea itxi\\n\"\n\"~r fitx\\t\\tirakurri fitxategi bat editorean\\n\"\n\"~t users\\tgehitu erabiltzaileak Nori: eremuan\\n\"\n\"~u\\t\\tberriz deitu aurreko lerroa\\n\"\n\"~v\\t\\teditatu mezua $visual editorearekin\\n\"\n\"~w fitx\\t\\tidatzi mezu fitxategi batetan\\n\"\n\"~x\\t\\tbaztertu aldaketak eta itxi editorea\\n\"\n\"~?\\t\\tmezu hau\\n\"\n\".\\t\\tbakarrik lerro batetan sarrera amaitzen du\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: mezu zenbaki okerra.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Mezua . bakarreko lerro batekin amaitu)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Ez dago postakutxarik.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Mezuaren edukia:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(jarraitu)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"fitxategi izena ez da aurkitu.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Ez dago lerrorik mezuan.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"%s-n IDN okerra: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: editore komando ezezaguna (~? laguntzarako)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"ezin behin-behineko karpeta sortu: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"ezin da posta behin-behineko karpetan idatzi: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"ezin da behin-behineko ePosta karpeta trinkotu: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Mezu fitxategia hutsik dago!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Mezua aldatu gabe!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Ezin da mezu fitxategia ireki: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Ezin karpetan gehitu: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Errorea. Behin behineko fitxategi gordetzen: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Bandera ezarri\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Bandera ezabatu\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- Errorea:  Ezin da Multipart/Alternative zatirik bistarazi! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Gehigarria #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Mota: %s/%s, Kodifikazioa: %s, Size: %s --]\\n\"\n\n#: handler.c:1281\n#, fuzzy\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Abisua -.Mezu honen zati bat ezin izan da sinatu.\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Autoerkutsi %s erabiliaz --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Autoikusketarako komandoa deitzen: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Ezin da %s abiarazi. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Aurreikusi %s-eko stderr --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Erroreak: mezu/kanpoko edukiak ez du access-type parametrorik --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[--  %s/%s gehigarri hau \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(tamaina %s byte) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"ezabatua izan da --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- %s-an --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- izena: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- %s/%s gehigarria ez dago gehiturik, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- ezarritako kanpoko jatorria denboraz --]\\n\"\n\"[-- kanpo dago. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- eta ezarritako access type %s ez da onartzen --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Ezin da behin-behineko fitxategia ireki!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Errorea: zati anitzeko sinadurak ez du protokolorik.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[--  %s/%s gehigarri hau \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s ez da onartzen \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"('%s' erabili zati hau ikusteko)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(lotu 'view-attachments' tekla bati!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: ezin gehigarria gehitu\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ERROREA: Mesedez zorri honetaz berri eman\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<EZEZAGUNA>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Lotura orokorrak:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Loturagabeko funtzioak:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"%s-rako laguntza\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Okerreko historia fitxategi formatua (%d lerroa)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Ezin da gantxoaren barnekaldetik desengatxatu.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: gantxo mota ezezaguna: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: Ezin da %s bat ezabatu %s baten barnetik.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Ez da autentifikatzailerik aukeran\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Autentifikatzen (anonimoki)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonimoki autentifikatzeak huts egin du.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"(CRAM-MD5) autentifikatzen...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 autentifikazioak huts egin du.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"(GSSAPI) autentifikazioa...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI autentifikazioak huts egin du.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"Zerbitzari honetan saio astea ezgaiturik.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Saio asten...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Huts saioa hasterakoan.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Autentifikazioa (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL egiaztapenak huts egin du.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s baliogabeko IMAP datu bidea da\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Karpeta zerrenda eskuratzen...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Ez da karpeta aurkitu\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Postakutxa sortu: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Postakotxak izen bat eduki behar du.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Postakutxa sortua.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"%s posta-kutxa honela berrizendatu: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Berrizendaketak huts egin du: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Postakutxa berrizendaturik.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Postakutxa itxia\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"SSL hutsa: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"%s-ra konexioak ixten...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"IMAP zerbitzaria aspaldikoa da. Mutt-ek ezin du berarekin lan egin.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"TLS-duen konexio ziurra?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Ezin da TLS konexioa negoziatu\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Enkriptaturiko konexioa ez da erabilgarria\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Aukeratzen %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Postakutxa irekitzean errorea\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Sortu %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Ezabatzea huts\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"%d mezu ezabatuak markatzen...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Aldaturiko mezuak gordetzen... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Erroreak banderak gordetzean. Itxi hala ere?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Errorea banderak gordetzean\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Mezuak zerbitzaritik ezabatzen...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE huts egin du\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Goiburu bilaketa goiburu izen gabe: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Postakutxa izen okerra\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"%s-ra harpidetzen...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"%s-ra harpidetzaz ezabatzen...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"%s-ra harpideturik\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"%s-ra harpidetzaz ezabaturik\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"IMAP zerbitzari bertsio honetatik ezin dira mezuak eskuratu.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Ezin da %s fitxategi tenporala sortu\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Katxea ebaluatzen...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Mezu burukoak eskuratzen...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Mezua eskuratzen...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"Mezu sarrera baliogabekoa. Saia zaitez postakutxa berrirekitzen.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Mezua igotzen...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"%d mezuak %s-ra kopiatzen...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"%d mezua %s-ra kopiatzen...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Jarraitu?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Menu honetan ezin da egin.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Okerreko espresio erregularra: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Ez dago zabor-posta txantiloirako aski azpiespresio\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"zabor-posta: ez da patroia aurkitu\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"ez zabor-posta: ez da patroia aurkitu\"\n\n#: init.c:861\n#, fuzzy, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"-rx edo -helb falta da.\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"Kontuz: '%s' IDN okerra.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"eranskinak: disposiziorik ez\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"eranskinak: disposizio okerra\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"deseranskinak: disposiziorik ez\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"deseranskinak: disposizio okerra\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"ezizena: helbide gabea\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Kontuz: '%s' IDN okerra '%s' ezizenean.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"baliogabeko mezu burua\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: sailkatze modu ezezaguna\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): errorea espresio erregularrean: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: aldagai ezezaguna\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"aurrizkia legezkanpokoa da reset-ekin\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"balioa legezkanpokoa da reset-ekin\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Erabilera: set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s ezarririk dago\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s ezarri gabe dago\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Baliogabeko hilabete eguna: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: posta-kutxa mota okerra\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: balio okerra\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: balio okerra\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s Mota ezezaguna.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: mota ezezaguna\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Errorea %s-n, %d lerroan: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"jatorria: erroreak %s-n\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"jatorria: %s-n akats gehiegiengatik irakurketa ezeztatua\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"jatorria: %s-n errorea\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"jatorria : argumentu gutxiegi\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: komando ezezaguna\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Komando lerroan errorea: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"ezin da \\\"home\\\" karpeta aukeratu\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"ezinda erabiltzaile izena aurkitu\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"ezinda erabiltzaile izena aurkitu\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: ez dago talde izenik\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"argumentu gehiegi\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Makro begizta aurkitua.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Letra ez dago mugaturik.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Letra ez dago mugaturik.  %s jo laguntzarako.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: argumentu gutxiegi\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: ez da menurik\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"baloigabeko sekuentzi gakoa\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind:argumentu gehiegi\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: ez da horrelako funtziorik aurkitu mapan\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: sekuentzi gako hutsa\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"makro: argumentu gutxiegi\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: ez da argumenturik\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: ez da funtziorik\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Sartu gakoak (^G uzteko): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Kar = %s, Zortziko = %o, hamarreko = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Osoko zenbakia iraultzea - ezin da memoria esleitu!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Memoriaz kanpo!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Garatzaileekin harremanetan ipintzeko , idatzi <mutt-dev@mutt.org> \"\n\"helbidera.\\n\"\n\"Programa-errore baten berri emateko joan http://bugs.mutt.org/ helbidera.\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\n#: main.c:75\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2007 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2007 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2008 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"\\n\"\n\"Izendatzen ez diren beste zenbaitek kodea, zuzenketak eta gomendioekin\\n\"\n\"lagundu dute.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\n#, fuzzy\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"erabilera: mutt [<aukerak>] [-z] [-f <fitx> | -yZ]\\n\"\n\"       mutt [<aukerak>] [-x] [-Hi <fitx>] [-s <gaia>] [-bc <helb>] [-a \"\n\"<fitx> [...]] [--] <helb> [...]\\n\"\n\"       mutt [<aukerak>] -p\\n\"\n\"       mutt [<aukerak>] -A <ezizena> [...]\\n\"\n\"       mutt [<aukerak>] -Q <query> [...]\\n\"\n\"       mutt [<aukerak>] -D\\n\"\n\"       mutt -v[v]\\n\"\n\n#: main.c:125\n#, fuzzy\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"aukerak:\\n\"\n\"  -A <ezizena>\\tzabaldu emandako ezizena\\n\"\n\"  -a <fitx>\\terantsi fitxategi bat mezura\\n\"\n\"  -b <helbidea>\\tzehaztu ezkutuko kopiarako (BCC) helbide bat\\n\"\n\"  -c <helbidea>\\tzehaztu kopiarako (CC) helbide bat\\n\"\n\"  -D\\t\\tinprimatu aldagai guztien balioa irteera estandarrean\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <maila>\\tinprimatu arazpen irteera hemen: ~/.muttdebug0\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -e <komandoa>\\tzehaztu abiarazi ondoren exekutatuko den komando bat\\n\"\n\"  -f <fitx>\\tzein posta-kutxa irakurri zehaztu\\n\"\n\"  -F <fitx>\\tbeste muttrc fitxategi bat zehaztu\\n\"\n\"  -H <fitx>\\tzehaztu zirriborro fitxategi bat burua eta gorputza bertatik \"\n\"kopiatzeko\\n\"\n\"  -i <fitx>\\tzehaztu mutt-ek gorputzean txertatu behar duen fitxategi bat\\n\"\n\"  -m <type>\\tzehaztu lehenetsiriko postakutxa mota\\n\"\n\"  -n\\t\\tMutt-ek sistema Muttrc ez irakurtzea eragiten du\\n\"\n\"  -p\\t\\tatzeratutako mezu bat berreskuratzen du\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <aldagaia>\\tgaldezkatu konfigurazio aldagai bat\\n\"\n\"  -R\\t\\tireki postakutxa irakurketa-soileko moduan\\n\"\n\"  -s <gaia>\\tzehaztu gai bat (komatxo artean zuriunerik badu)\\n\"\n\"  -v\\t\\tikusi bertsio eta konpilazio-une definizioak\\n\"\n\"  -x\\t\\tsimulatu mailx bidalketa modua\\n\"\n\"  -y\\t\\tzehaztu postakutxa zehatz zure `postakutxa' zerrendan\\n\"\n\"  -z\\t\\tirten berehala postakutxan mezurik ez badago\\n\"\n\"  -Z\\t\\tireki mezu berri bat duen lehen karpeta, irten batez ez balego\\n\"\n\"  -h\\t\\tlaguntza testu hau\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Konpilazio aukerak:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Errorea terminala abiaraztekoan.\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Errorea: '%s' IDN okerra da.\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"%d. mailan arazten.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG ez dago kopiatzerakoan definiturik.  Alde batetara uzten.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s ez da existitzen. Sortu?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Ezin da %s sortu: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Huts maito: lotura analizatzean\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Ez da jasotzailerik eman.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: ezin da fitxategia txertatu.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Ez dago posta berririk duen postakutxarik.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Ez da sarrera postakutxarik ezarri.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Postakutxa hutsik dago.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"%s irakurtzen...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Postakutxa hondaturik dago!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Postakutxa hondaturik zegoen!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Errore konponezina!  Ezin da postakutxa berrireki!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Ezin da postakutxa blokeatu!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: mbox aldatuta baina ez dira mezuak aldatu! (zorri honen berri eman)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"%s idazten...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Aldaketak eguneratzen...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Idazteak huts egin du!  postakutxa zatia %s-n gorderik\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Ezin da postakutxa berrireki!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Postakutxa berrirekitzen...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Joan hona: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Baliogabeko sarrera zenbakia.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Ez dago sarrerarik.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Ezin duzu hurrunago jaitsi.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Ezin duzu hurrunago igo.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Lehenengo orrialdean zaude.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Azkenengo orrialdean zaude.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Azkenengo sarreran zaude.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Lehenengo sarreran zaude.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Bilatu hau: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Bilatu hau atzetik-aurrera: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Ez da aurkitu.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Ez dago markaturiko sarrerarik.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Menu honek ez du bilaketarik inplementaturik.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Elkarrizketetan ez da saltorik inplementatu.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Markatzea ez da onartzen.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Arakatzen %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Ezin da mezua bidali.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): fitxategian ezin da data ezarri\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"SASL profil ezezaguna\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Errorea SASL konexioa esleitzerakoan\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Errorea SASL segurtasun propietateak ezartzean\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Errorea SASL kanpo segurtasun maila ezartzean\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Errorea SASL kanpo erabiltzaile izena ezartzean\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"%s-rekiko konexioa itxia\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL ez da erabilgarri.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Aurrekonexio komandoak huts egin du.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Errorea %s (%s) komunikatzerakoan\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"IDN okerra \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"%s Bilatzen...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Ezin da \\\"%s\\\" ostalaria aurkitu\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"%s-ra konektatzen...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Ezin da %s (%s)-ra konektatu.\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Huts zure sisteman entropia nahikoak bidaltzerakoan\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Entropia elkarbiltzea betetzen: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s ziurtasun gabeko biamenak ditu!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"Entropia gabezia dela eta SSL ezgaitu egin da\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"S/I errorea\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL hutsa: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Auzolagunengatik ezin da ziurtagiria jaso\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"%s (%s) erabiltzen SSL konexioa\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Ezezaguna\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[ezin da kalkulatu]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[baliogabeko data]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Jadanik zerbitzari ziurtagiria ez da baliozkoa\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Zerbitzariaren ziurtagiria denboraz kanpo dago\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Auzolagunengatik ezin da ziurtagiria jaso\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Auzolagunengatik ezin da ziurtagiria jaso\"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"S/MIME ziurtagiriaren jabea ez da mezua bidali duena.\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Ziurtagiria gordea\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Ziurtagiriaren jabea:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Honek emandako ziurtagiria:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Ziurtagiria hau baliozkoa da\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   %s-tik\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     %s-ra\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Hatz-marka: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(u)katu, behin (o)nartu, (b)etirko onartu\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"uob\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(u)katu, behin (o)nartu\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"uo\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Kontuz: Ezin da ziurtagiria gorde\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Ziurtagiria gordea\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Errorea ez da TLS socket-ik ireki\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"TLS/SSL bidezko protokolo erabilgarri guztiak ezgaiturik\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL/TLS konexioa hau erabiliaz: %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Errorea gnutls ziurtagiri datuak abiaraztean\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Errorea ziurtagiri datuak prozesatzerakoan\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1 Hatz-marka: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5 Hatz-marka: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"ABISUA Zerbitzari ziurtagiria ez baliozkoa dagoeneko\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"ABISUA Zerbitzaria ziurtagiria iraungi egin da\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"ABISUA Zerbitzariaziurtagiria errebokatu egin da\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"ABISUA Zerbitzari ostalari izena ez da ziurtagiriko berdina\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"KONTUZ:: Zerbitzari ziurtagiri sinatzailea ez da CA\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Ziurtagiria egiaztapen errorea (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Ziurtagiria ez da X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"\\\"%s\\\"-rekin konektatzen...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"%s-rako tunelak %d errorea itzuli du (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Tunel errorea %s-rekiko konexioan: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"\"\n\"Fitxategia direktorioa bat da, honen barnean gorde?[(b)ai, (e)z, d(a)na]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"bea\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Fitxategia direktorio bat da, honen barnean gorde?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Direktorio barneko fitxategiak: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Fitxategia existitzen da (b)erridatzi, (g)ehitu edo (e)zeztatu?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"bge\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Ezin da mezua POP postakutxan gorde.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Mezuak %s-ra gehitu?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s ez da postakutxa bat!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Blokeo kontua gainditua, %s-ren blokeoa ezabatu?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Ezin izan da dotlock bidez %s blokeatu.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"fcntl lock itxaroten denbora amaitu da!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"fcntl lock itxaroten... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"flock lock itxaroten denbora amaitu da!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"flock eskuratzea itxaroten... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Ezin da %s blokeatu\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Ezin da %s postakutxa eguneratu!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Irakurritako mezuak %s-ra mugitu?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Ezabatutako %d mezua betirako ezabatu?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Ezabatutako %d mezuak betirako ezabatu?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Irakurritako mezuak %s-ra mugitzen...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Postakutxak ez du aldaketarik.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d utzi, %d mugiturik, %d ezabaturik.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d utzi, %d ezabaturik.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" %s sakatu idatzitarikoa aldatzeko\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"'toogle-write' erabili idazketa berriz gaitzeko!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Postakutxa idaztezin bezala markatuta. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Postakutxa markaturik.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Ezin da mezua idatzi\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Integral gainezkatzea -- ezin da memoria esleitu.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"AurrekoOrria\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"HurrengoOrria\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Ikusi gehigar.\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Hurrengoa\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Mezuaren bukaera erakutsita dago.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Mezuaren hasiera erakutsita dago.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Laguntza erakutsirik dago.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Ez dago gakoarteko testu gehiago.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Ez dago gakogabeko testu gehiago gakoarteko testuaren ondoren.\"\n\n# boundary es un parámetro definido por el estándar MIME\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"zati anitzeko mezuak ez du errebote parametrorik!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Espresioan errorea: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Espresio hutsa\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Baliogabeko hilabete eguna: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Baliogabeko hilabetea: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Data erlatibo baliogabea: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"patroiean akatsa: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"galdutako parametroa\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"parentesiak ez datoz bat: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: patroi eraldatzaile baliogabea\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: ez da onartzen modu honetan\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"galdutako parametroa\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"parentesiak ez datoz bat: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"patroi hutsa\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"errorea:%d aukera ezezaguna (errore honen berri eman).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Bilaketa patroia konpilatzen...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Markaturiko mezuetan komandoa abiarazten...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Ez eskatutako parametroetako mezurik aurkitu.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Bilatzen...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Bilaketa bukaeraraino iritsi da parekorik aurkitu gabe\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Bilaketa hasieraraino iritsi da parekorik aurkitu gabe\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Bilaketa geldiarazirik.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Sar PGP pasahitza:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP pasahitza ahazturik.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Errorea: Ezin da PGP azpiprozesua sortu! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP irteeraren amaiera --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errorea: ezin da PGP azpiprozesua sortu! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Desenkriptazio hutsa\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Ezin da PGP azpiprozesua ireki!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Ezin da PGP deitu\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (e)nkript, (s)ina, sign (a)tu hola, (b)iak, %s, edo (g)arbitu? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)barnean\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (e)nkript, (s)ina, sign (a)tu hola, (b)iak, %s, edo (g)arbitu? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP (e)nkript, (s)ina, sign (a)tu hola, (b)iak, %s, edo (g)arbitu? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"esabpfg\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP (e)nkript, (s)ina, sign (a)tu hola, (b)iak, %s, edo (g)arbitu? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"esabpfg\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP (e)nkript, (s)ina, sign (a)tu hola, (b)iak, %s, edo (g)arbitu? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"esabpfg\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP (e)nkript, (s)ina, sign (a)tu hola, (b)iak, %s, edo (g)arbitu? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"esabpfg\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"PGP gakoa eskuratzen...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\"Aurkitutako gako guztiak denboraz kanpo, errebokatutarik edo ezgaiturik \"\n\"daude.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"aurkitutako PGP gakoak <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"\\\"%s\\\" duten PGP gakoak.\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Ezin da /dev/null ireki\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP Gakoa %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"TOP komandoa ez du zerbitzariak onartzen.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Ezin da burua fitxategi tenporalean gorde!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"UIDL komandoa ez du zerbitzariak onartzen.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"Mezu sarrera baliogabekoa. Saia zaitez postakutxa berrirekitzen.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s ez da baliozko datu-bidea\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Mezuen zerrenda eskuratzen...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Ezin da mezua fitxategi tenporalean gorde!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Mezu ezabatuak markatzen...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Mezu berriak bilatzen...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP ostalaria ez dago ezarririk.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Ez dago posta berririk POP postakutxan.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Zerbitzaritik mezuak ezabatu?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Mezu berriak irakurtzen (%d byte)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Postakutxa idazterakoan errorea!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d-tik %d mezu irakurririk]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Zerbitzariak konexioa itxi du!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Autentifikatzen (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"POP data-marka baliogabea!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Autentifikatzen (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP autentifikazioak huts egin du.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"USER komandoa ez du zerbitzariak onartzen.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Okerreko SMTP URLa: %s\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Ezin dira mezuak zerbitzarian utzi.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Errorea zerbitzariarekin konektatzerakoan: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"POP Zerbitzariarekiko konexioa ixten...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Mezu indizea egiaztatzen...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Konexioa galdua. POP zerbitzariarekiko konexio berrasi?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Atzeratutako mezuak\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Ez da atzeraturiko mezurik.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Kriptografia baliogabeko burukoa\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Baliogabeko S/MIME burukoa\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Mezua desenkriptatzen...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Deskribapenak huts egin du.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Bilaketa berria\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Aliasa egin\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Bilatu\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Erantzunaren zai...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Bilaketa komadoa ezarri gabea.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Bilaketa\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Bilaketa: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Bilaketa '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Hodia\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Inprimatu\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Gordetzen...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Gehigarria gordea.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"KONTUZ!  %s gainetik idaztera zoaz, Jarraitu ?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Gehigarria iragazirik.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Iragazi honen arabera: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Komandora hodia egin: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Ez dakit nola inprimatu %s gehigarriak!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Markaturiko mezua(k) inprimatu?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Gehigarria inprimatu?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Ezin da enkriptaturiko mezua desenkriptratu!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Gehigarriak\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Hemen ez dago erakusteko azpizatirik!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Ezi da gehigarria POP zerbitzaritik ezabatu.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Enkriptaturiko mezuetatik gehigarriak ezabatzea ez da onartzen.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Enkriptaturiko mezuetatik gehigarriak ezabatzea ez da onartzen.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Zati anitzetako gehigarrien ezabaketa bakarrik onartzen da.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Bakarrik message/rfc822 motako zatiak errebota ditzakezu.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Errorea mezua errebotatzerakoan!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Errorea mezuak errebotatzerakoan!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Ezin da %s behin-behineko fitxategia ireki.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Gehigarri bezala berbidali?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Ezin dira markaturiko mezu guztiak deskodifikatu.  Besteak MIME bezala \"\n\"bidali?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"MIME enkapsulaturik berbidali?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Ezin da %s sortu.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Ezin da markaturiko mezurik aurkitu.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Ez da eposta zerrendarik aurkitu!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Ezin dira markaturiko mezu guztiak deskodifikatu.  MIME enkapsulatu besteak?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Gehitu\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Txertatu\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Ezabatu\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"Ados\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Mixmaster-en type2.zerrenda ezin da eskuratu!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Berbidaltze katea aukeratu.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Errorea: %s ezin da katearen azken berbidaltze bezala erabili.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster kateak %d elementuetara mugaturik daude.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Berbidaltzaile katea dagoeneko betea dago.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Zuk dagoeneko kateko lehenengo elementua aukeraturik duzu.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Zuk dagoeneko kateko azkenengo elementua aukeraturik duzu.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Miixmasterrek ez du Cc eta Bcc burukorik onartzen.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"Mesedez ezarri mixmaster erabiltzen denerako ostalari izen egokia!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Errorea mezua bidaltzerakoan, azpiprozesua uzten %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Errorea mezua bidaltzerakoan.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Gaizki eratutako %s motako sarrera \\\"%s\\\"-n %d lerroan\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Ez da mailcap bidea ezarri\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"ez da aurkitu %s motako mailcap sarrerarik\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: argumentu gutxiegi\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: argumentu gehiegi\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Ez du gairik, ezeztatu?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Ez du gairik, ezeztatzen.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"%s%s-ra erantzun?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Jarraitu %s%s-ra?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Ez da markatutako mezu ikusgarririk!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Erantzunean mezua gehitu?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Markaturiko mezua gehitzen...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Ezin dira eskaturiko mezu guztiak gehitu!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Gehigarri gisa berbidali?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Berbidalketa mezua prestatzen...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Atzeraturiko mezuak hartu?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Berbidalitako mezua editatu?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Aldatugabeko mezua ezeztatu?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Aldatugabeko mezua ezeztatuta.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Mezua atzeraturik.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Ez da hartzailerik eman!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Ez zen hartzailerik eman.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Ez dago gairik, bidalketa ezeztatzen?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Ez da gairik ezarri.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Mezua bidaltzen...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"gehigarriak testua balira ikusi\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Ezin da mezua bidali.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Mezua bidalirik.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Bigarren planoan bidaltzen.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Ez da birbidalketa parametroa aurkitu! [errore honen berri eman]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s ez da gehiago existitzen!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s ez da fitxategi erregularra.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Ezin da %s ireki\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Errorea mezua bidaltzerakoan, azpiprozesua irteten %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Postaketa prozesuaren irteera\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"%s berbidalketa inprimakia prestatzerakoan IDN okerra.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Irteten.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Mozten %s...  Uzten.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Mozte seinalea %d...  Irteten.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Sartu S/MIME pasahitza:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Fidagarria   \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Egiaztaturik  \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Egiaztatu gabea\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Denboraz kanpo   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Errebokaturik   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Baliogabea        \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Ezezaguna   \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME ziurtagiria aurkiturik \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"ID-a ez da baliozkoa.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"IDgakoa sartu: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Ez da (baliozko) ziurtagiririk aurkitu %s-rentzat.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Errorea: Ezin da OpenSSL azpiprozesua sortu!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"ziurtagiri gabea\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"ez dago postakutxarik\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Ez dago irteerarik OpenSSL-tik...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"Ezin da sinatu. Ez da gakorik ezarri. Honela sinatu erabili.\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Ezin da OpenSSL azpiprozesua ireki!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- OpenSSL irteeraren bukaera --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Errorea: Ezin da OpenSSL azpiprozesua sortu!--]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Honako datu hauek S/MIME enkriptatutik daude --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Hurrengo datu hauek S/MIME sinaturik daude --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME enkriptaturiko duen amaiera --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME sinatutako datuen amaiera. --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (s)inatu, enript (h)onez, sinatu hol(a), (b)iak) edo \"\n\"(g)arbitu? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (s)inatu, enript (h)onez, sinatu hol(a), (b)iak) edo \"\n\"(g)arbitu? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"eshabfc\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (s)inatu, enript (h)onez, sinatu hol(a), (b)iak) edo \"\n\"(g)arbitu? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"eshabfc\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Hautatu algoritmo familia: 1: DES, 2: RC2, 3: AES, edo (g)arbitu? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drag\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: DES-Hirukoitza \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dh\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SMTP saioak huts egin du: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SMTP saioak huts egin du: ezin da %s ireki\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"SMTP saioak huts egin du: irakurketa errorea\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"SMTP saioak huts egin du: idazketa errorea\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Okerreko SMTP URLa: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP zerbitzariak ez du autentifikazioa onartzen\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP autentifikazioak SASL behar du\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"SASL egiaztapenak huts egin du\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL egiaztapenak huts egin du\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Postakutxa ordenatzen...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Ezin da ordenatze funtzioa aurkitu! [zorri honen berri eman]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(ez dago postakutxarik)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Jatorrizko mezua ez da ikusgarria bistaratze mugatu honetan.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Aurreko mezua ez da eskuragarri.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"operazio baloigabea\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"balizko exekuzio amaiera (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"gehigarria mailcap erabiliaz erakustea derrigortu\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"gehigarriak testua balira ikusi\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Azpizatien erakustaldia txandakatu\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"orrialdearen azkenera mugitu\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"mezua beste erabiltzaile bati birbidali\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"aukeratu fitxategi berria karpeta honetan\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"fitxategia ikusi\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"une honetan aukeratutako fitxategi izena erakutsi\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"une honetako posta-kutxan harpidetza egin (IMAP bakarrik)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"une honetako posta-kutxan harpidetza ezabatu (IMAP bakarrik)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"\"\n\"denak/harpidetutako postakutxen (IMAP bakarrik) erakustaldia txandakatu\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"posta berria duten posta-kutxen zerrenda\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"karpetak aldatu\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"posta-kutxak eposta berrien bila arakatu\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"fitxategia(k) erantsi mezu honetara\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"mezua(k) erantsi mezu honetara\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"BCC zerrenda editatu\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"CC zerrenda editatu\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"gehigarri deskribapena editatu\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"gehigarriaren transferentzi kodifikazioa editatu\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"mezu honen kopia egingo den fitxategia sartu\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"gehitu behar den fitxategia editatu\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"nondik parametroa editatu\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"mezua buruekin editatu\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"mezua editatu\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"mailcap sarrera erabiliaz gehigarria editatu\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"erantzun-honi eremua aldatu\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"mezu honen gaia editatu\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"Nori zerrenda editatu\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"posta-kutxa berria sortu (IMAP bakarrik)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"gehigarriaren eduki mota editatu\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"eskuratu gehigarriaren behin-behineko kopia\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"ispell abiarazi mezu honetan\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"mailcap sarrera erabiliaz gehigarri berria sortu\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"txandakatu gehigarri honen gordetzea\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"mezu hau beranduago bidaltzeko gorde\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"gehituriko fitxategia ezabatu/berrizendatu\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"bidali mezua\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"mezua/gehigarriaren artean kokalekua aldatu\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"bidali aurretik gehigarria ezabatua baldin bada aldatu\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"gehigarriaren kodeaketa argibideak eguneratu\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"mezua karpeta batetan gorde\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"fitxategi/postakutxa batetara kopiatu mezua\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"mezuaren bidaltzailearentzat ezizena berria sortu\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"sarrera pantailaren bukaerara mugitu\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"sarrera pantailaren erdira mugitu\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"sarrera pantailaren goikaldera mugitu\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"enkriptatu gabeko (testu/laua) kopia\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"enkriptatu gabeko (testu/laua) kopia egin eta ezabatu\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"uneko sarrera ezabatu\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"uneko posta-kutxa ezabatu (IMAP bakarrik)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"azpihari honetako mezuak ezabatu\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"hari honetako mezu guztiak ezabatu\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"bidaltzailearen helbide osoa erakutsi\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"mezua erakutsi eta buru guztien erakustaldia aldatu\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"mezua erakutsi\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"mezu laua editatu\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"kurtsorearen aurrean dagoen karakterra ezabatu\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"kurtsorea karaktere bat ezkerraldera mugitu\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"kurtsorea hitzaren hasierara mugitu\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"lerroaren hasierara salto egin\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"sarrera posta-kutxen artean aldatu\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"fitxategi izen edo ezizena bete\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"galderarekin osatu helbidea\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"kurtsorearen azpian dagoen karakterra ezabatu\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"lerroaren bukaerara salto egin\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"kurtsorea karaktere bat eskuinaldera mugitu\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"kurtsorea hitzaren bukaerara mugitu\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"historia zerrendan atzera mugitu\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"historia zerrendan aurrera mugitu\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"kurtsoretik lerro bukaerara dauden karakterrak ezabatu\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"kurtsoretik hitzaren bukaerara dauden karakterrak ezabatu\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"lerro honetako karaktere guziak ezabatu\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"kurtsorearen aurrean dagoen hitza ezabatu\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"sakatzen den hurrengo tekla markatu\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"kurtsorearen azpiko karakterra aurrekoarekin irauli\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"hitza kapitalizatu\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"hitza minuskuletara bihurtu\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"hitza maiuskuletara bihurtu\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"sar muttrc komandoa\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"fitxategi maskara sartu\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"menu hau utzi\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"sheel komando bidezko gehigarri iragazkia\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"lehenengo sarrerara mugitu\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"mezuen bandera garrantzitsuak txandakatu\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"birbidali mezua iruzkinekin\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"uneko sarrera aukeratu\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"denei erantzun\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"orrialde erdia jaitsi\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"orrialde erdia igo\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"leiho hau\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"joan sarrera zenbakira\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"azkenengo sarrerara salto egin\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"emandako eposta zerrendara erantzun\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"macro bat abiarazi\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"eposta mezu berri bat idatzi\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"haria bitan zatitu\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"beste karpeta bat ireki\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"irakurketa soilerako beste karpeta bat ireki\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"mezuaren egoera bandera ezabatu\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"emandako patroiaren araberako mezuak ezabatu\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"IMAP zerbitzari batetatik ePosta jasotzea behartu\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"POP zerbitzaritik ePosta jaso\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"lehenengo mezura joan\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"azkenengo mezura joan\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"emandako patroia betetzen duten mezuak bakarrik erakutsi\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"lotu markaturiko mezua honetara\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"ireki posta berria duen hurrengo postakutxa\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"hurrengo mezu berrira joan\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"hurrengo mezu berri edo irakurgabera joan\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"hurrengo azpiharira joan\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"hurrengo harira joan\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"hurrengo ezabatu gabeko mezura joan\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"hurrengo irakurgabeko mezura joan\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"hariko goiko mezura joan\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"aurreko harira joan\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"aurreko harirazpira joan\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"ezabatugabeko hurrengo mezura joan\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"aurreko mezu berrira joan\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"aurreko mezu berri edo irakurgabera joan\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"aurreko mezu irakurgabera joan\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"uneko haria irakurria bezala markatu\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"uneko azpiharia irakurria bezala markatu\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"egoera bandera ezarri mezuari\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"postakutxaren aldaketak gorde\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"emandako patroiaren araberako mezuak markatu\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"emandako patroiaren araberako mezuak berreskuratu\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"emandako patroiaren araberako mezuak desmarkatu\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"orriaren erdira joan\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"hurrengo sarrerara joan\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"lerro bat jaitsi\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"hurrengo orrialdera joan\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"mezuaren bukaerara joan\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"gako arteko testuaren erakustaldia aldatu\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"gako arteko testuaren atzera salto egin\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"mezuaren hasierara joan\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"mezua/gehigarria shell komando batetara bideratu\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"aurreko sarrerara joan\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"lerro bat igo\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"aurreko orrialdera joan\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"uneko sarrera inprimatu\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"galdetu kanpoko aplikazioari helbidea lortzeko\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"emaitza hauei bilaketa berriaren emaitzak gehitu\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"aldaketak postakutxan gorde eta utzi\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"atzeratiutako mezua berriz hartu\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"pantaila garbitu eta berriz marraztu\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{barnekoa}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"uneko postakutxa berrizendatu (IMAP soilik)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"mezuari erantzuna\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"unekoa mezu berri bat egiteko txantiloi gisa erabili\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"mezua/gehigarria fitxategi batetan gorde\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"espresio erregular bat bilatu\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"espresio erregular baten bidez atzeraka bilatu\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"hurrengo parekatzera joan\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"beste zentzuan hurrengoa parekatzea bilatu\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"bilaketa patroiaren kolorea txandakatu\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"komando bat subshell batetan deitu\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"mezuak ordenatu\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"mezuak atzekoz aurrera ordenatu\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"uneko sarrera markatu\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"markatutako mezuei funtzio hau aplikatu\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"hurrengo funtzioa BAKARRIK markaturiko mezuetan erabili\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"uneko azpiharia markatu\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"uneko haria markatu\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"mezuaren 'berria' bandera aldatu\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"posta-kutxaren datuak berritzen direnean aldatu\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"postakutxak eta artxibo guztien ikustaldia aldatu\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"orriaren goikaldera joan\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"uneko sarrera berreskuratu\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"hariko mezu guztiak berreskuratu\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"azpihariko mezu guztiak berreskuratu\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"Mutt bertsio zenbakia eta data erakutsi\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"gehigarria erakutsi beharrezkoa balitz mailcap sarrera erabiliaz\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"MIME gehigarriak ikusi\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"zanpatutako teklaren tekla-kodea erakutsi\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"unean gaitutako patroiaren muga erakutsi\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"uneko haria zabaldu/trinkotu\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"hari guztiak zabaldu/trinkotu\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"PGP gako publikoa gehitu\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"PGP aukerak ikusi\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"PGP gako publikoa epostaz bidali\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"PGP gako publikoa egiaztatu\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"gakoaren erabiltzaile id-a erakutsi\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"PGP klasiko bila arakatu\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Eratutako katea onartu\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Kateari berbidaltze bat gehitu\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Kateari berbidaltze bat gehitu\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Kateari berbidaltze bat ezabatu\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Katearen aurreko elementua aukeratu\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Katearen hurrengo elementua aukeratu\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"mixmaster berbidalketa katearen bidez bidali mezua\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"enkriptatu gabeko kopia egin eta ezabatu\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"enkriptatu gabeko kopia egin\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"pasahitza(k) memoriatik ezabatu\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"onartutako gako publikoak atera\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"S/MIME aukerak ikusi\"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"ezabatu mezua(k)\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" ikuspen mugatu honetan\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"ezabatu mezua\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"editatu mezua\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"errorea espresioan\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Barne arazoa. Berri eman <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Abisua -.Mezu honen zati bat ezin izan da sinatu.\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Errorea: gaizki eratutako PGP/MIME mezua! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"GPGME interfazea erabiltzen, gpg-agent ez dagoenez abiaraziririk\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Errorea: zati anitzeko sinadurak ez du protokoloparametrorik.\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"%s IDa egiaztatu gabe dago. Berau %s-rako erabiltzea nahi al duzu ?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Erabili (segurtasun gabeko!) %s ID-a %s-rentzat ?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"ID %s erabili %s-rentzat ?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Kontuz: Oraindik ez duzu erabaki kofidantzako ID %s-a. (edozein tekla \"\n#~ \"jarraitzeko)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"Ez dago OpenSSL irteerarik..\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Kontuz: biderdiko ziurtagiria ezin da aurkitu.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Garbitu\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\terabili geratzen diren argumentuak helbidea bezala nahiz '-' \"\n#~ \"batez hasi\\n\"\n#~ \"\\t\\t-a fitxategi-izen anitzez erabiltzean -- erabiltzea beharrezkoa da\"\n\n#~ msgid \"esabifc\"\n#~ msgstr \"esabifg\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Ez da bilaketa patroia aurkitu.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Bilatu atzetik aurrera: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Bilatu: \"\n\n#~ msgid \"            created: \"\n#~ msgstr \"            sortua: \"\n\n#~ msgid \"*BAD* signature claimed to be from: \"\n#~ msgstr \"*OKERREKO* sinadurak hemengoa dela dio: \"\n\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Errorea sinadura egiaztatzerakoan\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"SSL Ziurtagiri arakatzea\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"TLS/SSL Ziurtagiria egiaztapena\"\n"
  },
  {
    "path": "po/fr.po",
    "content": "# French messages for Mutt.\n# Copyright (C) 1998-2016 Marc Baudoin <babafou@babafou.eu.org>, Vincent Lefevre <vincent@vinc17.net>\n# Marc Baudoin <babafou@babafou.eu.org>, Vincent Lefevre <vincent@vinc17.net>, 1998-2016\n#\n# Note [VL]. In case you need it, you may find the latest temporary version\n#            at this URL:   https://www.vinc17.net/mutt/fr.po\n#\n# Traductions possibles de \"timestamp\":\n# _ horodatage\n#   * http://drupalfr.org/forum/traduction/16-coherence_de_traduction\n#   * page man en français de touch(1)\n#   * page man en français de fetchmail\n# _ timbre à date\n#   * http://abcdrfc.free.fr/rfc-vf/rfc1939.html\n# Je n'ai pas traduit \"aka\" car la traduction \"alias\" peut ici prêter à\n# confusion, de même que \"pseudo\". Et maintenant \"aka\" est aussi utilisé\n# en français (cf Wikipédia).\n#\n# , fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt 1.6.0\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2016-03-21 01:29+0100\\n\"\n\"Last-Translator: Vincent Lefevre <vincent@vinc17.net>\\n\"\n\"Language-Team: Vincent Lefevre <vincent@vinc17.net>\\n\"\n\"Language: fr\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Nom d'utilisateur sur %s : \"\n\n# , c-format\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Mot de passe pour %s@%s : \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Quitter\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Effacer\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Récup\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Sélectionner\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Aide\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Vous n'avez pas défini d'alias !\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Alias\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Créer l'alias : \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Vous avez déjà défini un alias ayant ce nom !\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Attention : ce nom d'alias peut ne pas fonctionner. Corriger ?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adresse : \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Erreur : '%s' est un mauvais IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Nom de la personne : \"\n\n# , c-format\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Accepter ?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Sauver dans le fichier : \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Erreur en lisant le fichier d'alias\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Alias ajouté.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Erreur en se repositionnant (seek) dans le fichier d'alias\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Ne correspond pas au nametemplate, continuer ?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"L'entrée compose du fichier mailcap nécessite %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Erreur en exécutant \\\"%s\\\" !\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Échec d'ouverture du fichier pour analyser les en-têtes.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Échec d'ouverture du fichier pour enlever les en-têtes.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Échec de renommage du fichier.\"\n\n# , c-format\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Pas d'entrée compose pour %s dans mailcap, création d'un fichier vide.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"L'entrée Edit du fichier mailcap nécessite %%s\"\n\n# , c-format\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Pas d'entrée edit pour %s dans mailcap\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Pas d'entrée mailcap correspondante. Visualisation en texte.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"Type MIME non défini. Impossible de visualiser l'attachement.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Impossible de créer le filtre\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Commande: %-20.20s Description: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Commande: %-30.30s Attachement: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Attachement: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---Attachement: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Impossible de créer le filtre\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Erreur d'écriture !\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Je ne sais pas comment imprimer ceci !\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Changement de répertoire\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Masque\"\n\n# , c-format\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s n'est pas un répertoire.\"\n\n# , c-format\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Boîtes aux lettres [%d]\"\n\n# , c-format\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Abonné [%s], masque de fichier : %s\"\n\n# , c-format\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Répertoire [%s], masque de fichier : %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Impossible d'attacher un répertoire !\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Aucun fichier ne correspond au masque\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"La création n'est supportée que pour les boîtes aux lettres IMAP\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Le renommage n'est supporté que pour les boîtes aux lettres IMAP\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"La suppression n'est supportée que pour les boîtes aux lettres IMAP\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Impossible de supprimer le dossier racine\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Voulez-vous vraiment supprimer la boîte aux lettres \\\"%s\\\" ?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Boîte aux lettres supprimée.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Boîte aux lettres non supprimée.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Changement de répertoire vers : \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Erreur de lecture du répertoire.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Masque de fichier : \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Tri inverse par (d)ate, (a)lphabétique, (t)aille ou (n)e pas trier ? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Tri par (d)ate, (a)lphabétique, (t)aille ou (n)e pas trier ? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"datn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nouveau nom de fichier : \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Impossible de visualiser un répertoire\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Erreur en essayant de visualiser le fichier\"\n\n# , c-format\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Nouveau(x) message(s) dans \"\n\n# , c-format\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s : couleur non disponible sur ce terminal\"\n\n# , c-format\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s : cette couleur n'existe pas\"\n\n# , c-format\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s : cet objet n'existe pas\"\n\n# , c-format\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s : commande valide uniquement pour les objets index, body et header\"\n\n# , c-format\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s : pas assez d'arguments\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Arguments manquants.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color : pas assez d'arguments\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono : pas assez d'arguments\"\n\n# , c-format\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s : cet attribut n'existe pas\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"pas assez d'arguments\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"trop d'arguments\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"La couleur default n'est pas disponible\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Vérifier la signature PGP ?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Impossible de créer le fichier temporaire !\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Impossible de créer le filtre d'affichage\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Impossible de copier le message\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"Signature S/MIME vérifiée avec succès.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Le propriétaire du certificat S/MIME ne correspond pas à l'expéditeur.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Attention ! Une partie de ce message n'a pas été signée.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"La signature S/MIME n'a PAS pu être vérifiée.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"Signature PGP vérifiée avec succès.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"La signature PGP n'a PAS pu être vérifiée.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Commande : \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Attention : le message ne contient pas d'en-tête From:\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Renvoyer le message à : \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Renvoyer les messages marqués à : \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Erreur de décodage de l'adresse !\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Mauvais IDN : '%s'\"\n\n# , c-format\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Renvoyer le message à %s\"\n\n# , c-format\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Renvoyer les messages à %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Message non renvoyé.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Messages non renvoyés.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Message renvoyé.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Messages renvoyés.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Impossible de créer le processus filtrant\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Passer à la commande : \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Aucune commande d'impression n'a été définie.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Imprimer le message ?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Imprimer les messages marqués ?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Message imprimé\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Messages imprimés\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Le message n'a pas pu être imprimé\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Les messages n'ont pas pu être imprimés\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Tri inv (d)at/(a)ut/(r)eçu/(o)bj/de(s)t/d(i)sc/(n)on/(t)aille/s(c)or/\"\n\"s(p)am ? : \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Tri (d)ate/(a)ut/(r)eçu/(o)bj/de(s)t/d(i)sc/(n)on/(t)aille/s(c)ore/\"\n\"s(p)am ? : \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"darosintcp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Commande shell : \"\n\n# , c-format\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Décoder-sauver%s vers une BAL\"\n\n# , c-format\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Décoder-copier%s vers une BAL\"\n\n# , c-format\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Déchiffrer-sauver%s vers une BAL\"\n\n# , c-format\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Déchiffrer-copier%s vers une BAL\"\n\n# , c-format\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Sauver%s vers une BAL\"\n\n# , c-format\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Copier%s vers une BAL\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" les messages marqués\"\n\n# , c-format\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Copie vers %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Convertir en %s à l'envoi ?\"\n\n# , c-format\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type changé à %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Jeu de caractères changé à %s ; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"pas de conversion\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"conversion\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Il n'y a pas d'attachements.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Envoyer\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Abandonner\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Attacher fichier\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Description\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"Non supportée\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Signer, Chiffrer\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Chiffrer\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Signer\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"Aucune\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (PGP en ligne)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \" (mode OppEnc)\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" signer en tant que : \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<défaut>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Chiffrer avec : \"\n\n# , c-format\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] n'existe plus !\"\n\n# , c-format\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] modifié. Mise à jour du codage ?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Attachements\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Attention : '%s' est un mauvais IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Vous ne pouvez pas supprimer l'unique attachement.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Mauvais IDN dans « %s » : '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"J'attache les fichiers sélectionnés...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Impossible d'attacher %s !\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Ouvrir une BAL d'où attacher un message\"\n\n#: compose.c:762\n#, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Impossible d'ouvrir la BAL %s\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Aucun message dans ce dossier.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Marquez les messages que vous voulez attacher !\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Impossible d'attacher !\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Le recodage affecte uniquement les attachements textuels.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"L'attachement courant ne sera pas converti.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"L'attachement courant sera converti.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Codage invalide.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Sauver une copie de ce message ?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Renommer en : \"\n\n# , c-format\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Impossible d'obtenir le statut de %s : %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Nouveau fichier : \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type est de la forme base/sous\"\n\n# , c-format\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Content-Type %s inconnu\"\n\n# , c-format\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Impossible de créer le fichier %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Nous sommes en présence d'un échec de fabrication d'un attachement\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Ajourner ce message ?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Écrire le message dans la boîte aux lettres\"\n\n# , c-format\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Écriture du message dans %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Message écrit.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME déjà sélectionné. Effacer & continuer ? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP déjà sélectionné. Effacer & continuer ? \"\n\n# , c-format\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"erreur lors de la création du contexte gpgme : %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"erreur lors de l'activation du protocole CMS : %s\\n\"\n\n# , c-format\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"erreur lors de la création de l'objet gpgme : %s\\n\"\n\n# , c-format\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"erreur lors de l'allocation de l'objet : %s\\n\"\n\n# , c-format\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"erreur lors du retour au début de l'objet : %s\\n\"\n\n# , c-format\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"erreur lors de la lecture de l'objet : %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Impossible de créer le fichier temporaire\"\n\n# , c-format\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"erreur lors de l'ajout du destinataire « %s » : %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"clé secrète « %s » non trouvée : %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"spécification de la clé secrète « %s » ambiguë\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"erreur lors de la mise en place de la clé secrète « %s » : %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"erreur lors de la mise en place de la note de signature PKA : %s\\n\"\n\n# , c-format\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"erreur lors du chiffrage des données : %s\\n\"\n\n# , c-format\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"erreur lors de la signature des données : %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\"$pgp_sign_as non renseigné et pas de clé par défaut dans ~/.gnupg/gpg.conf\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Attention ! Une des clés a été révoquée\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Attention ! La clé utilisée pour créer la signature a expiré à :\"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Attention ! Au moins une clé de certification a expiré\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Attention ! La signature a expiré à :\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Impossible de vérifier par suite d'une clé ou certificat manquant\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"La CRL n'est pas disponible.\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"La CRL disponible est trop ancienne\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Désaccord avec une partie de la politique\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Une erreur système s'est produite\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\"ATTENTION : l'entrée PKA ne correspond pas à l'adresse du signataire : \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"L'adresse du signataire vérifiée par PKA est : \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Empreinte : \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"ATTENTION ! Nous n'avons AUCUNE indication informant si la clé appartient à \"\n\"la personne nommée ci-dessus\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"ATTENTION ! La clé N'APPARTIENT PAS à la personne nommée ci-dessus\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"ATTENTION ! Il n'est PAS certain que la clé appartienne à la personne nommée \"\n\"ci-dessus\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"aka : \"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"ID de la clé \"\n\n# , c-format\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"créée : \"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Erreur en récupérant les infos de la clé pour l'ID %s : %s\\n\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"Bonne signature de :\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"*MAUVAISE* signature de :\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Signature problématique de :\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"                    expire : \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Début des informations sur la signature --]\\n\"\n\n# , c-format\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Erreur : la vérification a échoué : %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Début de la note (signature par : %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Fin de la note ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fin des informations sur la signature --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erreur : le déchiffrage a échoué : %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Erreur d'extraction des données de la clé !\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Erreur : le déchiffrage/vérification a échoué : %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Erreur : la copie des données a échoué\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- DÉBUT DE MESSAGE PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- DÉBUT DE BLOC DE CLÉ PUBLIQUE PGP --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- DÉBUT DE MESSAGE SIGNÉ PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- FIN DE MESSAGE PGP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- FIN DE BLOC DE CLÉ PUBLIQUE PGP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- FIN DE MESSAGE SIGNÉ PGP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erreur : impossible de trouver le début du message PGP ! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Erreur : impossible de créer le fichier temporaire ! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les données suivantes sont signées et chiffrées avec PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les données suivantes sont chiffrées avec PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Fin des données signées et chiffrées avec PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Fin des données chiffrées avec PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"Message PGP déchiffré avec succès.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Impossible de déchiffrer le message PGP\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les données suivantes sont signées avec S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les données suivantes sont chiffrées avec S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Fin des données signées avec S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Fin des données chiffrées avec S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Impossible d'afficher cet ID d'utilisateur (encodage inconnu)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Impossible d'afficher cet ID d'utilisateur (encodage invalide)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Impossible d'afficher cet ID d'utilisateur (DN invalide)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"alias ......: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Nom ........: \"\n\n# , c-format\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Invalide]\"\n\n# , c-format\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"From valide : %s\\n\"\n\n# , c-format\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"To valide ..: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Type de clé : %s, %lu bits %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Utilisation : \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"chiffrage\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"signature\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"certification\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"N° de série : 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Publiée par : \"\n\n# , c-format\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Sous-clé ...: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Révoquée]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Expirée]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Désactivée]\"\n\n# , c-format\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Récupération des données...\"\n\n# , c-format\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Erreur en cherchant la clé de l'émetteur : %s\\n\"\n\n#: crypt-gpgme.c:3675\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Erreur : chaîne de certification trop longue - on arrête ici\\n\"\n\n# , c-format\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"ID de la clé : 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new a échoué : %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start a échoué : %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next a échoué : %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Toutes les clés correspondantes sont marquées expirées/révoquées.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Quitter  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Sélectionner  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Vérifier clé  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"clés PGP et S/MIME correspondant à\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"clés PGP correspondant à\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"clés S/MIME correspondant à\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"clés correspondant à\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Cette clé ne peut pas être utilisée : expirée/désactivée/révoquée.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"L'ID est expiré/désactivé/révoqué.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"L'ID a une validité indéfinie.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"L'ID n'est pas valide.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"L'ID n'est que peu valide.\"\n\n# , c-format\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Voulez-vous vraiment utiliser la clé ?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Recherche des clés correspondant à \\\"%s\\\"...\"\n\n# , c-format\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Utiliser keyID = \\\"%s\\\" pour %s ?\"\n\n# , c-format\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Entrez keyID pour %s : \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Veuillez entrer l'ID de la clé : \"\n\n#: crypt-gpgme.c:4614\n#, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Erreur à l'export de la clé : %s\\n\"\n\n# , c-format\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Clé PGP 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"GPGME : protocole OpenPGP non disponible\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"GPGME : protocole CMS non disponible\"\n\n#: crypt-gpgme.c:4721\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"Signer s/mime, En tant que, Pgp, Rien, ou mode Oppenc inactif ? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"seprro\"\n\n#: crypt-gpgme.c:4731\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"Signer pgp, En tant que, s/Mime, Rien, ou mode Oppenc inactif ? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"semrro\"\n\n#: crypt-gpgme.c:4744\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"Chiffrer s/mime, Signer, En tant que, les Deux, Pgp, Rien, ou mode Oppenc ? \"\n\n#: crypt-gpgme.c:4745\nmsgid \"esabpfco\"\nmsgstr \"csedprro\"\n\n#: crypt-gpgme.c:4750\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"Chiffrer pgp, Signer, En tant que, les Deux, s/Mime, Rien, ou mode Oppenc ? \"\n\n#: crypt-gpgme.c:4751\nmsgid \"esabmfco\"\nmsgstr \"csedmrro\"\n\n#: crypt-gpgme.c:4762\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"Chiffrer s/mime, Signer, En tant que, les Deux, Pgp, ou Rien ? \"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"csedprr\"\n\n#: crypt-gpgme.c:4768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"Chiffrer pgp, Signer, En tant que, les Deux, s/Mime, ou Rien ? \"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"csedmrr\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Signer en tant que : \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Impossible de vérifier l'expéditeur\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Impossible de trouver l'expéditeur\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (heure courante : %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- La sortie %s suit%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Phrase(s) de passe oubliée(s).\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"PGP en ligne est impossible avec des attachements. Utiliser PGP/MIME ?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\"Message non envoyé : PGP en ligne est impossible avec des attachements.\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Appel de PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Le message ne peut pas être envoyé en ligne. Utiliser PGP/MIME ?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Message non envoyé.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\"Les messages S/MIME sans indication sur le contenu ne sont pas supportés.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Tentative d'extraction de clés PGP...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Tentative d'extraction de certificats S/MIME...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erreur : Protocole multipart/signed %s inconnu ! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erreur : Structure multipart/signed incohérente ! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Attention : les signatures %s/%s ne peuvent pas être vérifiées. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Les données suivantes sont signées --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Attention : Impossible de trouver des signatures. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin des données signées --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\\\"crypt_use_gpgme\\\" positionné mais non construit avec support GPGME.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Appel de S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"oui\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"non\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Quitter Mutt ?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"erreur inconnue\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Appuyez sur une touche pour continuer...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' pour avoir la liste) : \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Aucune boîte aux lettres n'est ouverte.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Il n'y a pas de messages.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"La boîte aux lettres est en lecture seule.\"\n\n# , c-format\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Fonction non autorisée en mode attach-message.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Pas de messages visibles.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"%s : opération non permise par les ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"\"\n\"Impossible de rendre inscriptible une boîte aux lettres en lecture seule !\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Les modifications du dossier seront enregistrées à sa sortie.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Les modifications du dossier ne seront pas enregistrées.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Quitter\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Sauver\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Message\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Répondre\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Groupe\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"\"\n\"Boîte aux lettres modifiée extérieurement. Les indicateurs peuvent être faux.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Nouveau(x) message(s) dans cette boîte aux lettres.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"La boîte aux lettres a été modifiée extérieurement.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Pas de messages marqués.\"\n\n# , c-format\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Rien à faire.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Aller au message : \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"L'argument doit être un numéro de message.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Ce message n'est pas visible.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Numéro de message invalide.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Impossible d'effacer le(s) message(s)\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Effacer les messages correspondant à : \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Aucun motif de limite n'est en vigueur.\"\n\n# , c-format\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Limite : %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Limiter aux messages correspondant à : \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Pour voir tous les messages, limiter à \\\"all\\\".\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Quitter Mutt ?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Marquer les messages correspondant à : \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Impossible de récupérer le(s) message(s)\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Récupérer les messages correspondant à : \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Démarquer les messages correspondant à : \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Déconnecté des serveurs IMAP.\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Ouvre la boîte aux lettres en lecture seule\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Ouvre la boîte aux lettres\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Pas de boîte aux lettres avec des nouveaux messages\"\n\n# , c-format\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s n'est pas une boîte aux lettres.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Quitter Mutt sans sauvegarder ?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"L'affichage des discussions n'est pas activé.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Discussion cassée\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\"La discussion ne peut pas être cassée, le message n'est pas dans une \"\n\"discussion\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"Impossible de lier les discussions\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Pas d'en-tête Message-ID: disponible pour lier la discussion\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"D'abord, veuillez marquer un message à lier ici\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Discussions liées\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Pas de discussion liée\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Vous êtes sur le dernier message.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Pas de message non effacé.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Vous êtes sur le premier message.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"La recherche est repartie du début.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"La recherche est repartie de la fin.\"\n\n#: curs_main.c:1608\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Pas de nouveaux messages dans cette vue limitée.\"\n\n#: curs_main.c:1610\nmsgid \"No new messages.\"\nmsgstr \"Pas de nouveaux messages.\"\n\n#: curs_main.c:1615\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Pas de messages non lus dans cette vue limitée.\"\n\n#: curs_main.c:1617\nmsgid \"No unread messages.\"\nmsgstr \"Pas de messages non lus.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\nmsgid \"Cannot flag message\"\nmsgstr \"Impossible de marquer le message\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"Impossible d'inverser l'indic. 'nouveau'\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Pas d'autres discussions.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Vous êtes sur la première discussion.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Cette discussion contient des messages non-lus.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\nmsgid \"Cannot delete message\"\nmsgstr \"Impossible d'effacer le message\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\nmsgid \"Cannot edit message\"\nmsgstr \"Impossible d'éditer le message\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"Impossible de marquer le(s) message(s) comme lu(s)\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\nmsgid \"Cannot undelete message\"\nmsgstr \"Impossible de récupérer le message\"\n\n#: edit.c:41\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tinsère une ligne commençant par un unique ~\\n\"\n\"~b utilisateurs\\tajoute des utilisateurs au champ Bcc:\\n\"\n\"~c utilisateurs\\tajoute des utilisateurs au champ Cc:\\n\"\n\"~f messages\\tinclut des messages\\n\"\n\"~F messages\\tidentique à ~f, mais inclut également les en-têtes\\n\"\n\"~h\\t\\tédite l'en-tête du message\\n\"\n\"~m messages\\tinclut et cite les messages\\n\"\n\"~M messages\\tidentique à ~m, mais inclut les en-têtes\\n\"\n\"~p\\t\\timprime le message\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tsauvegarde le fichier et quitte l'éditeur\\n\"\n\"~r fichier\\tlit un fichier dans l'éditeur\\n\"\n\"~t utilisateurs\\tajoute des utilisateurs au champ To:\\n\"\n\"~u\\t\\tduplique la ligne précédente\\n\"\n\"~v\\t\\tédite le message avec l'éditeur défini dans $visual\\n\"\n\"~w fichier\\tsauvegarde le message dans un fichier\\n\"\n\"~x\\t\\tabandonne les modifications et quitte l'éditeur\\n\"\n\"~?\\t\\tce message\\n\"\n\".\\t\\tseul sur une ligne, termine la saisie\\n\"\n\n# , c-format\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d : numéro de message invalide.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Veuillez terminer le message par un . en début de ligne)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Pas de boîte aux lettres.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Le message contient :\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(continuer)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"nom de fichier manquant.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Pas de lignes dans le message.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Mauvais IDN dans %s : '%s'\\n\"\n\n# , c-format\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s : commande d'éditeur inconnue (~? pour l'aide)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"impossible de créer le dossier temporaire : %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"impossible d'écrire dans le dossier temporaire : %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"impossible de tronquer le dossier temporaire : %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Le fichier contenant le message est vide !\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Message non modifié !\"\n\n# , c-format\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Impossible d'ouvrir le fichier : %s\"\n\n# , c-format\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Impossible d'ajouter au dossier : %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Erreur. On préserve le fichier temporaire : %s\"\n\n# , c-format\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Positionner l'indicateur\"\n\n# , c-format\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Effacer l'indicateur\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Erreur : Aucune partie du Multipart/Alternative n'a pu être affichée ! \"\n\"--]\\n\"\n\n# , c-format\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Attachement #%d\"\n\n# , c-format\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Type : %s/%s, Codage : %s, Taille : %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Une ou plusieurs parties de ce message n'ont pas pu être affichées\"\n\n# , c-format\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Visualisation automatique en utilisant %s --]\\n\"\n\n# , c-format\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Invocation de la commande de visualisation automatique : %s\"\n\n# , c-format\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Impossible d'exécuter %s. --]\\n\"\n\n# , c-format\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Visualisation automatique stderr de %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Erreur : message/external-body n'a pas de paramètre access-type --]\\n\"\n\n# , c-format\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Cet attachement %s/%s \"\n\n# , c-format\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(taille %s octets) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"a été effacé --]\\n\"\n\n# , c-format\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- le %s --]\\n\"\n\n# , c-format\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- nom : %s --]\\n\"\n\n# , c-format\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Cet attachement %s/%s n'est pas inclus, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"[-- et la source externe indiquée a expiré. --]\\n\"\n\n# , c-format\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- et l'access-type %s indiqué n'est pas supporté --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Impossible d'ouvrir le fichier temporaire !\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Erreur : multipart/signed n'a pas de protocole.\"\n\n# , c-format\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Ceci est un attachement \"\n\n# , c-format\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s n'est pas disponible \"\n\n# , c-format\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(utilisez '%s' pour voir cette partie)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(la fonction 'view-attachments' doit être affectée à une touche !)\"\n\n# , c-format\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s : impossible d'attacher le fichier\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ERREUR : veuillez signaler ce problème\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<INCONNU>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Affectations génériques :\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Fonctions non affectées :\\n\"\n\"\\n\"\n\n# , c-format\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Aide pour %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Mauvais format de fichier d'historique (ligne %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"le raccourci de boîte aux lettres courante '^' n'a pas de valeur\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\"le raccourci de boîte aux lettres a donné une expression rationnelle vide\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook : impossible de faire un unhook * à l'intérieur d'un hook.\"\n\n# , c-format\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook : type hook inconnu : %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook : impossible de supprimer un %s à l'intérieur d'un %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Pas d'authentificateurs disponibles\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Authentification (anonyme)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"L'authentification anonyme a échoué.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Authentification (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"L'authentification CRAM-MD5 a échoué.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Authentification (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"L'authentification GSSAPI a échoué.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN désactivée sur ce serveur.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Connexion...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"La connexion a échoué.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Authentification (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"L'authentification SASL a échoué.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s n'est pas un chemin IMAP valide\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Récupération de la liste des dossiers...\"\n\n# , c-format\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Ce dossier n'existe pas\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Créer la boîte aux lettres : \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"La boîte aux lettres doit avoir un nom.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Boîte aux lettres créée.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Renommer la boîte aux lettres %s en : \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Le renommage a échoué : %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Boîte aux lettres renommée.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Boîte aux lettres fermée\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"CREATE a échoué : %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Fermeture de la connexion à %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Ce serveur IMAP est trop ancien. Mutt ne marche pas avec.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Connexion sécurisée avec TLS ?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Impossible de négocier la connexion TLS\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Connexion chiffrée non disponible\"\n\n# , c-format\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Sélection de %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Erreur à l'ouverture de la boîte aux lettres\"\n\n# , c-format\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Créer %s ?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Expunge a échoué\"\n\n# , c-format\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Marquage de %d messages à effacer...\"\n\n# , c-format\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"La sauvegarde a changé des messages... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Erreur en sauvant les indicateurs. Fermer tout de même ?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Erreur en sauvant les indicateurs\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Effacement des messages sur le serveur...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox : EXPUNGE a échoué\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Recherche d'en-tête sans nom d'en-tête : %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Mauvaise boîte aux lettres\"\n\n# , c-format\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Abonnement à %s...\"\n\n# , c-format\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Désabonnement de %s...\"\n\n# , c-format\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Abonné à %s\"\n\n# , c-format\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Désabonné de %s\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"\"\n\"Impossible de récupérer les en-têtes à partir de cette version du serveur \"\n\"IMAP.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Impossible de créer le fichier temporaire %s\"\n\n# , c-format\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Évaluation du cache...\"\n\n# , c-format\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Récupération des en-têtes des messages...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Récupération du message...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"\"\n\"L'index du message est incorrect. Essayez de rouvrir la boîte aux lettres.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Chargement du message...\"\n\n# , c-format\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Copie de %d messages dans %s...\"\n\n# , c-format\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Copie du message %d dans %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Continuer ?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Non disponible dans ce menu.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Mauvaise expression rationnelle : %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Pas assez de sous-expressions pour la chaîne de format de spam\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam : pas de motif correspondant\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam : pas de motif correspondant\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%sgroup : il manque un -rx ou -addr.\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%sgroup : attention : mauvais IDN '%s'.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"attachments : pas de disposition\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"attachments : disposition invalide\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"unattachments : pas de disposition\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"unattachments : disposition invalide\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias : pas d'adresse\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Attention : mauvais IDN '%s' dans l'alias '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"en-tête invalide\"\n\n# , c-format\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s : méthode de tri inconnue\"\n\n# , c-format\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s) : erreur dans l'expression rationnelle : %s\\n\"\n\n# , c-format\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s : variable inconnue\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"ce préfixe est illégal avec reset\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"cette valeur est illégale avec reset\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Usage : set variable=yes|no\"\n\n# , c-format\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s est positionné\"\n\n# , c-format\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s n'est pas positionné\"\n\n# , c-format\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Valeur invalide pour l'option %s : \\\"%s\\\"\"\n\n# , c-format\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s : type de boîte aux lettres invalide\"\n\n# , c-format\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s : valeur invalide (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"erreur de format\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"nombre trop grand\"\n\n# , c-format\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s : valeur invalide\"\n\n# , c-format\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s : type inconnu.\"\n\n# , c-format\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s : type inconnu\"\n\n# , c-format\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Erreur dans %s, ligne %d : %s\"\n\n# , c-format\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source : erreurs dans %s\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source : lecture interrompue car trop d'erreurs dans %s\"\n\n# , c-format\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source : erreur dans %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source : trop d'arguments\"\n\n# , c-format\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s : commande inconnue\"\n\n# , c-format\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Erreur dans la ligne de commande : %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"impossible de déterminer le répertoire personnel\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"impossible de déterminer le nom d'utilisateur\"\n\n#: init.c:2970\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"impossible de déterminer nodename via uname()\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: pas de nom de groupe\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"à court d'arguments\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"Les macros sont actuellement désactivées.\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Boucle de macro détectée.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Cette touche n'est pas affectée.\"\n\n# , c-format\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Cette touche n'est pas affectée. Tapez '%s' pour avoir l'aide.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push : trop d'arguments\"\n\n# , c-format\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s : ce menu n'existe pas\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"séquence de touches nulle\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind : trop d'arguments\"\n\n# , c-format\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s : cette fonction n'existe pas dans la table\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro : séquence de touches vide\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro : trop d'arguments\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec : pas d'arguments\"\n\n# , c-format\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s : cette fonction n'existe pas\"\n\n# , c-format\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Entrez des touches (^G pour abandonner) : \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Caractère = %s, Octal = %o, Decimal = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"\"\n\"Dépassement de capacité sur entier -- impossible d'allouer la mémoire !\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Plus de mémoire !\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Pour contacter les développeurs, veuillez écrire à <mutt-dev@mutt.org>.\\n\"\n\"Pour signaler un bug, veuillez aller sur http://bugs.mutt.org/.\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins et autres.\\n\"\n\"Mutt ne fournit ABSOLUMENT AUCUNE GARANTIE ; pour les détails tapez `mutt -\"\n\"vv'.\\n\"\n\"Mutt est un logiciel libre, et vous êtes libre de le redistribuer\\n\"\n\"sous certaines conditions ; tapez `mutt -vv' pour les détails.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"De nombreuses autres personnes non mentionnées ici ont fourni\\n\"\n\"du code, des corrections et des suggestions.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou\\n\"\n\"    le modifier sous les termes de la GNU General Public License telle que\\n\"\n\"    publiée par la Free Software Foundation ; que ce soit la version 2 de\\n\"\n\"    la licence, ou (selon votre choix) une version plus récente.\\n\"\n\"\\n\"\n\"    Ce programme est distribué avec l'espoir qu'il soit utile,\\n\"\n\"    mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de\\n\"\n\"    QUALITÉ MARCHANDE ou d'ADÉQUATION À UN BESOIN PARTICULIER. Référez-vous\\n\"\n\"    à la GNU General Public License pour plus de détails.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    Vous devez avoir reçu un exemplaire de la GNU General Public License\\n\"\n\"    avec ce programme ; si ce n'est pas le cas, écrivez à la Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"usage : mutt [<options>] [-z] [-f <fichier> | -yZ]\\n\"\n\"        mutt [<options>] [-Ex] [-Hi <fichier>] [-s <objet>] [-bc <adresse>] \"\n\"[-a <fichier> [...] --] <adresse> [...]\\n\"\n\"        mutt [<options>] [-x] [-s <objet>] [-bc <adresse>] [-a <fichier> \"\n\"[...] --] <adresse> [...] < message\\n\"\n\"        mutt [<options>] -p\\n\"\n\"        mutt [<options>] -A <alias> [...]\\n\"\n\"        mutt [<options>] -Q <requête> [...]\\n\"\n\"        mutt [<options>] -D\\n\"\n\"        mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"options :\\n\"\n\"  -A <alias>\\tdéveloppe l'alias mentionné\\n\"\n\"  -a <fich> [...] --\\tattache un ou plusieurs fichiers à ce message\\n\"\n\"\\t\\tla liste des fichiers doit se terminer par la séquence \\\"--\\\"\\n\"\n\"  -b <adresse>\\tspécifie une adresse à mettre en copie aveugle (BCC)\\n\"\n\"  -c <adresse>\\tspécifie une adresse à mettre en copie (CC)\\n\"\n\"  -D\\t\\técrit la valeur de toutes les variables sur stdout\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <niveau>\\técrit les infos de débuggage dans ~/.muttdebug0\"\n\n#: main.c:137\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -E\\t\\téditer le fichier brouillon (-H) ou d'inclusion (-i)\\n\"\n\"  -e <commande>\\tspécifier une commande à exécuter après l'initialisation\\n\"\n\"  -f <fich>\\tspécifier quelle boîte aux lettres lire\\n\"\n\"  -F <fich>\\tspécifier un fichier muttrc alternatif\\n\"\n\"  -H <fich>\\tspécifier un fichier de brouillon d'où lire en-têtes et corps\\n\"\n\"  -i <fich>\\tspécifier un fichier que Mutt doit inclure dans le corps\\n\"\n\"  -m <type>\\tspécifier un type de boîte aux lettres par défaut\\n\"\n\"  -n\\t\\tfait que Mutt ne lit pas le fichier Muttrc système\\n\"\n\"  -p\\t\\trappeler un message ajourné\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <variable>\\tdemande la valeur d'une variable de configuration\\n\"\n\"  -R\\t\\touvre la boîte aux lettres en mode lecture seule\\n\"\n\"  -s <obj>\\tspécifie un objet (entre guillemets s'il contient des espaces)\\n\"\n\"  -v\\t\\taffiche la version et les définitions de compilation\\n\"\n\"  -x\\t\\tsimule le mode d'envoi mailx\\n\"\n\"  -y\\t\\tsélectionne une BAL spécifiée dans votre liste `mailboxes'\\n\"\n\"  -z\\t\\tquitte immédiatement si pas de nouveau message dans la BAL\\n\"\n\"  -Z\\t\\touvre le premier dossier ayant un nouveau message, quitte sinon\\n\"\n\"  -h\\t\\tce message d'aide\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Options de compilation :\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Erreur d'initialisation du terminal.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Erreur : la valeur '%s' est invalide pour -d.\\n\"\n\n# , c-format\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Débuggage au niveau %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG n'a pas été défini à la compilation. Ignoré.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s n'existe pas. Le créer ?\"\n\n# , c-format\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Impossible de créer %s : %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Impossible d'analyser le lien mailto:\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Pas de destinataire spécifié.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"Impossible d'utiliser l'option -E avec stdin\\n\"\n\n# , c-format\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s : impossible d'attacher le fichier.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Pas de boîte aux lettres avec des nouveaux messages.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Pas de boîtes aux lettres recevant du courrier définies.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"La boîte aux lettres est vide.\"\n\n# , c-format\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Lecture de %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"La boîte aux lettres est altérée !\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"La boîte aux lettres a été altérée !\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Erreur fatale ! La boîte aux lettres n'a pas pu être réouverte !\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Impossible de verrouiller la boîte aux lettres !\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"sync : BAL modifiée, mais pas de message modifié ! (signalez ce bug)\"\n\n# , c-format\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Écriture de %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Écriture des changements...\"\n\n# , c-format\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Erreur d'écriture ! Boîte aux lettres partielle sauvée dans %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"La boîte aux lettres n'a pas pu être réouverte !\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Réouverture de la boîte aux lettres...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Aller à : \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Numéro d'index invalide.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Pas d'entrées.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Défilement vers le bas impossible.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Défilement vers le haut impossible.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Vous êtes sur la première page.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Vous êtes sur la dernière page.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Vous êtes sur la dernière entrée.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Vous êtes sur la première entrée.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Rechercher : \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Rechercher en arrière : \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Non trouvé.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Pas d'entrées marquées.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"La recherche n'est pas implémentée pour ce menu.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Le saut n'est pas implémenté pour les dialogues.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Le marquage n'est pas supporté.\"\n\n# , c-format\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Lecture de %s...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"Impossible de recopier le message physiquement sur le disque (flush)\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message() : impossible de fixer l'heure du fichier\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Profil SASL inconnu\"\n\n# , c-format\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Erreur lors de l'allocation de la connexion SASL\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Erreur lors de la mise en place des propriétés de sécurité SASL\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Erreur lors de la mise en place de la force de sécurité externe\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Erreur lors de la mise en place du nom d'utilisateur externe\"\n\n# , c-format\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Connexion à %s fermée\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL n'est pas disponible.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"La commande Preconnect a échoué.\"\n\n# , c-format\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Erreur en parlant à %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Mauvais IDN « %s ».\"\n\n# , c-format\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Recherche de %s...\"\n\n# , c-format\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Impossible de trouver la machine \\\"%s\\\"\"\n\n# , c-format\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Connexion à %s...\"\n\n# , c-format\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Impossible de se connecter à %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Impossible de trouver assez d'entropie sur votre système\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Remplissage du tas d'entropie : %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s a des droits d'accès peu sûrs !\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL désactivé par manque d'entropie\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"erreur d'E/S\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL a échoué : %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Impossible d'obtenir le certificat de la machine distante\"\n\n# , c-format\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"Connexion %s utilisant %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Inconnu\"\n\n# , c-format\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[impossible de calculer]\"\n\n# , c-format\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[date invalide]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Le certificat du serveur n'est pas encore valide\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Le certificat du serveur a expiré\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"impossible d'obtenir le détenteur du certificat (subject)\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"impossible d'obtenir le nom du détenteur du certificat (CN)\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"le propriétaire du certificat ne correspond pas au nom %s\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Échec de vérification de machine : %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Ce certificat appartient à :\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Ce certificat a été émis par :\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Ce certificat est valide\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"     de %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"      à %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Empreinte : %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"Vérification du certificat SSL (certificat %d sur %d dans la chaîne)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r)ejeter, accepter (u)ne fois, (a)ccepter toujours\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"rua\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r)ejeter, accepter (u)ne fois\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ru\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Attention : le certificat n'a pas pu être sauvé\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Certificat sauvé\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Erreur : pas de socket TLS ouverte\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\"Tous les protocoles disponibles pour une connexion TLS/SSL sont désactivés\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\"Sélection de suite cryptographique explicite via $ssl_ciphers non supportée\"\n\n# , c-format\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"Connexion SSL/TLS utilisant %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Erreur d'initialisation des données du certificat gnutls\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Erreur de traitement des données du certificat\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\"Attention : le certificat du serveur a été signé avec un algorithme peu sûr\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Empreinte SHA1 : %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Empreinte MD5 : %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"ATTENTION ! Le certificat du serveur n'est pas encore valide\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"ATTENTION ! Le certificat du serveur a expiré\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"ATTENTION ! Le certificat du serveur a été révoqué\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"ATTENTION ! Le nom du serveur ne correspond pas au certificat\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"ATTENTION ! Le signataire du certificat du serveur n'est pas un CA\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Erreur de vérification du certificat (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Le certificat n'est pas de type X.509\"\n\n# , c-format\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Connexion avec \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Le tunnel vers %s a renvoyé l'erreur %d (%s)\"\n\n# , c-format\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Erreur de tunnel en parlant à %s : %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"\"\n\"Le fichier est un répertoire, sauver dans celui-ci ? [(o)ui, (n)on, (t)ous]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"ont\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Le fichier est un répertoire, sauver dans celui-ci ?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Fichier dans le répertoire : \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Le fichier existe, écras(e)r, (c)oncaténer ou (a)nnuler ?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"eca\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Impossible de sauver le message dans la boîte aux lettres POP.\"\n\n# , c-format\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Ajouter les messages à %s ?\"\n\n# , c-format\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s n'est pas une boîte aux lettres !\"\n\n# , c-format\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Nombre d'essais de verrouillage dépassé, enlever le verrou pour %s ?\"\n\n# , c-format\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Impossible de verrouiller %s avec dotlock.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Délai dépassé lors de la tentative de verrouillage fcntl !\"\n\n# , c-format\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Attente du verrouillage fcntl... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Délai dépassé lors de la tentative de verrouillage flock !\"\n\n# , c-format\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Attente de la tentative de flock... %d\"\n\n# , c-format\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Impossible de verrouiller %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Impossible de synchroniser la boîte aux lettres %s !\"\n\n# , c-format\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Déplacer les messages lus dans %s ?\"\n\n# , c-format\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Effacer %d message(s) marqué(s) à effacer ?\"\n\n# , c-format\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Effacer %d message(s) marqué(s) à effacer ?\"\n\n# , c-format\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Déplacement des messages lus dans %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"La boîte aux lettres est inchangée.\"\n\n# , c-format\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d gardé(s), %d déplacé(s), %d effacé(s).\"\n\n# , c-format\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d gardé(s), %d effacé(s).\"\n\n# , c-format\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Appuyez sur '%s' pour inverser l'écriture autorisée\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Utilisez 'toggle-write' pour réautoriser l'écriture !\"\n\n# , c-format\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"La boîte aux lettres est protégée contre l'écriture. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Boîte aux lettres vérifiée.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Impossible d'écrire le message\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Dépassement de capacité sur entier -- impossible d'allouer la mémoire.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"PgPréc\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"PgSuiv\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Voir attach.\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Suivant\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"La fin du message est affichée.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Le début du message est affiché.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"L'aide est actuellement affichée.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Il n'y a plus de texte cité.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Il n'y a plus de texte non cité après le texte cité.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"le message multipart n'a pas de paramètre boundary !\"\n\n# , c-format\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Erreur dans l'expression : %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Expression vide\"\n\n# , c-format\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Quantième invalide : %s\"\n\n# , c-format\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Mois invalide : %s\"\n\n# , c-format\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Date relative invalide : %s\"\n\n# , c-format\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"erreur dans le motif à : %s\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"motif manquant : %s\"\n\n# , c-format\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"parenthésage incorrect : %s\"\n\n# , c-format\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c : modificateur de motif invalide\"\n\n# , c-format\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c : non supporté dans ce mode\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"paramètre manquant\"\n\n# , c-format\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"parenthésage incorrect : %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"motif vide\"\n\n# , c-format\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"erreur : opération inconnue %d (signalez cette erreur).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Compilation du motif de recherche...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Exécution de la commande sur les messages correspondants...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Aucun message ne correspond au critère.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Recherche...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Fin atteinte sans rien avoir trouvé\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Début atteint sans rien avoir trouvé\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Recherche interrompue.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Entrez la phrase de passe PGP :\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Phrase de passe PGP oubliée.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Erreur : impossible de créer le sous-processus PGP ! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fin de sortie PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"Erreur interne. Veuillez soumettre un rapport de bug.\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erreur : impossible de créer un sous-processus PGP ! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Le déchiffrage a échoué\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Impossible d'ouvrir le sous-processus PGP !\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Impossible d'invoquer PGP\"\n\n#: pgp.c:1730\n#, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"Signer pgp, En tant que, format %s, Rien, ou mode Oppenc inactif ? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"pgp/mIme\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"en lIgne\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"serroi\"\n\n#: pgp.c:1742\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"Signer pgp, En tant que, Rien, ou mode Oppenc inactif ? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"serro\"\n\n#: pgp.c:1760\n#, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"Chiffrer pgp, Signer, En tant que, les Deux, format %s, Rien, ou Oppenc ? \"\n\n#: pgp.c:1763\nmsgid \"esabfcoi\"\nmsgstr \"csedrroi\"\n\n#: pgp.c:1768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"Chiffrer pgp, Signer, En tant que, les Deux, Rien, ou mode Oppenc ? \"\n\n#: pgp.c:1769\nmsgid \"esabfco\"\nmsgstr \"csedrro\"\n\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"Chiffrer pgp, Signer, En tant que, les Deux, format %s, ou Rien ? \"\n\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"csedrri\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"Chiffrer pgp, Signer, En tant que, les Deux, ou Rien ? \"\n\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"csedrr\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Récupération de la clé PGP...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\"Toutes les clés correspondantes sont expirées, révoquées, ou désactivées.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"Clés PGP correspondant à <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"Clés PGP correspondant à \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Impossible d'ouvrir /dev/null\"\n\n# , c-format\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Clé PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"La commande TOP n'est pas supportée par le serveur.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Impossible d'écrire l'en-tête dans le fichier temporaire !\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"La commande UIDL n'est pas supportée par le serveur.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d messages ont été perdus. Essayez de rouvrir la boîte aux lettres.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s est un chemin POP invalide\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Récupération de la liste des messages...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Impossible d'écrire le message dans le fichier temporaire !\"\n\n# , c-format\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Marquage des messages à effacer...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Recherche de nouveaux messages...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"Le serveur POP n'est pas défini.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Aucun nouveau message dans la boîte aux lettres POP.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Effacer les messages sur le serveur ?\"\n\n# , c-format\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Lecture de nouveaux messages (%d octets)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Erreur à l'écriture de la boîte aux lettres !\"\n\n# , c-format\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d messages lus sur %d]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Le serveur a fermé la connexion !\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Authentification (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"L'horodatage POP est invalide !\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Authentification (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"L'authentification APOP a échoué.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"La commande USER n'est pas supportée par le serveur.\"\n\n# , c-format\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"URL POP invalide : %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Impossible de laisser les messages sur le serveur.\"\n\n# , c-format\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Erreur de connexion au serveur : %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Fermeture de la connexion au serveur POP...\"\n\n# , c-format\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Vérification des index des messages...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Connexion perdue. Se reconnecter au serveur POP ?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Messages ajournés\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Pas de message ajourné.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"En-tête crypto illégal\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"En-tête S/MIME illégal\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Déchiffrage du message...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Le déchiffrage a échoué.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nouvelle requête\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Créer un alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Rechercher\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Attente de la réponse...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Commande de requête non définie.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Requête\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Requête : \"\n\n# , c-format\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Requête '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Pipe\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Imprimer\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"On sauve...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Attachement sauvé.\"\n\n# , c-format\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"ATTENTION ! Vous allez écraser %s, continuer ?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Attachement filtré.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtrer avec : \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Passer à la commande : \"\n\n# , c-format\n#: recvattach.c:710\n#, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Je ne sais pas comment imprimer %s attachements !\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Imprimer l(es) attachement(s) marqué(s) ?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Imprimer l'attachement ?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Impossible de déchiffrer le message chiffré !\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Attachements\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Il n'y a pas de sous-parties à montrer !\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Impossible d'effacer l'attachement depuis le serveur POP.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"L'effacement d'attachements de messages chiffrés n'est pas supporté.\"\n\n#: recvattach.c:1132\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"\"\n\"L'effacement d'attachements de messages signés peut invalider la signature.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Seul l'effacement d'attachements multipart est supporté.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Vous ne pouvez renvoyer que des parties message/rfc822.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Erreur en renvoyant le message !\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Erreur en renvoyant les messages !\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Impossible d'ouvrir le fichier temporaire %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Faire suivre sous forme d'attachements ?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Impossible de décoder tous les attachements marqués. Faire suivre les \"\n\"autres ?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Faire suivre en MIME encapsulé ?\"\n\n# , c-format\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Impossible de créer %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Aucun message marqué n'a pu être trouvé.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Pas de liste de diffusion trouvée !\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Impossible de décoder ts les attachements marqués. MIME-encapsuler les \"\n\"autres ?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Ajouter\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Insérer\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Retirer\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Impossible d'obtenir le type2.list du mixmaster !\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Sélectionner une chaîne de redistributeurs de courrier.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Erreur : %s ne peut pas être utilisé comme redistributeur final.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Les chaînes mixmaster sont limitées à %d éléments.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"La chaîne de redistributeurs de courrier est déjà vide.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Le premier élément de la chaîne est déjà sélectionné.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Le dernier élément de la chaîne est déjà sélectionné.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Le mixmaster n'accepte pas les en-têtes Cc et Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Donnez une valeur correcte à hostname quand vous utilisez le mixmaster !\"\n\n# , c-format\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Erreur en envoyant le message, fils terminé avec le code %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Erreur en envoyant le message.\"\n\n# , c-format\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Entrée incorrectement formatée pour le type %s dans \\\"%s\\\" ligne %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Pas de chemin mailcap spécifié\"\n\n# , c-format\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"Entrée mailcap pour le type %s non trouvée\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score : pas assez d'arguments\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score : trop d'arguments\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"Erreur : score : nombre invalide\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Pas d'objet (Subject), abandonner ?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Pas d'objet (Subject), abandon.\"\n\n# , c-format\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Répondre à %s%s ?\"\n\n# , c-format\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Suivi de la discussion à %s%s ?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Pas de messages marqués visibles !\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Inclure le message dans la réponse ?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Inclusion du message cité...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Tous les messages demandés n'ont pas pu être inclus !\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Faire suivre sous forme d'attachement ?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Préparation du message à faire suivre...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Rappeler un message ajourné ?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Éditer le message à faire suivre ?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Message non modifié. Abandonner ?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Message non modifié. Abandon.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Message ajourné.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Aucun destinataire spécifié !\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Aucun destinataire spécifié.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Pas d'objet (Subject), abandonner l'envoi ?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Pas d'objet (Subject) spécifié.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Envoi du message...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Sauver les attachements dans Fcc ?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Impossible d'envoyer le message.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Message envoyé.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Envoi en tâche de fond.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Pas de paramètre boundary trouvé !  [signalez cette erreur]\"\n\n# , c-format\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s n'existe plus !\"\n\n# , c-format\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s n'est pas un fichier ordinaire.\"\n\n# , c-format\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Impossible d'ouvrir %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"$sendmail doit avoir une valeur pour pouvoir envoyer du courrier.\"\n\n# , c-format\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Erreur en envoyant le message, fils terminé avec le code %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Sortie du processus de livraison\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Mauvais IDN %s lors de la préparation du resent-from.\"\n\n# , c-format\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s... On quitte.\\n\"\n\n# , c-format\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Erreur %s... On quitte.\\n\"\n\n# , c-format\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Signal %d... On quitte.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Entrez la phrase de passe S/MIME :\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"De confiance\"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Vérifiée    \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Non vérifiée\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Expirée     \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Révoquée    \"\n\n# , c-format\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Invalide    \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Inconnue    \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Certificats S/MIME correspondant à \\\"%s\\\".\"\n\n#: smime.c:472\nmsgid \"ID is not trusted.\"\nmsgstr \"L'ID n'est pas de confiance.\"\n\n# , c-format\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Entrez keyID : \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Pas de certificat (valide) trouvé pour %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Erreur : impossible de créer le sous-processus OpenSSL !\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"pas de certfile\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"pas de BAL\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Pas de sortie pour OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\"Impossible de signer : pas de clé spécifiée. Utilisez « Signer en tant que ».\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Impossible d'ouvrir le sous-processus OpenSSL !\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fin de sortie OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Erreur : impossible de créer le sous-processus OpenSSL ! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Les données suivantes sont chiffrées avec S/MIME --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Les données suivantes sont signées avec S/MIME --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin des données chiffrées avec S/MIME. --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin des données signées avec S/MIME. --]\\n\"\n\n#: smime.c:2109\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"Signer s/mime, chiffer Avec, signer En tant que, Rien, ou Oppenc inactif ? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"saerro\"\n\n#: smime.c:2123\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"Ch. s/mime, Signer, ch. Avec, signer En tant que, les Deux, Rien, ou \"\n\"Oppenc ? \"\n\n#: smime.c:2124\nmsgid \"eswabfco\"\nmsgstr \"csaedrro\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"Chiffrer s/mime, Signer, ch. Avec, signer En tant que, les Deux, ou Rien ? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"csaedrr\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\"Choisissez une famille d'algo : 1: DES, 2: RC2, 3: AES, ou (e)ffacer ? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drae\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"La session SMTP a échoué : %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"La session SMTP a échoué : impossible d'ouvrir %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"Pas d'adresse from donnée\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"La session SMTP a échoué : erreur de lecture\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"La session SMTP a échoué : erreur d'écriture\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Réponse du serveur invalide\"\n\n# , c-format\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"URL SMTP invalide : %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"Le serveur SMTP ne supporte pas l'authentification\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"L'authentification SMTP nécessite SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"L'authentification %s a échoué, essayons la méthode suivante\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"L'authentification SASL a échoué\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Tri de la boîte aux lettres...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Fonction de tri non trouvée ! [signalez ce bug]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(pas de boîte aux lettres)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Le message père n'est pas visible dans cette vue limitée.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Le message père n'est pas disponible.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"opération nulle\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"fin d'exécution conditionnelle (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"\"\n\"forcer la visualisation d'un attachment en utilisant le fichier mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"visualiser un attachment en tant que texte\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Inverser l'affichage des sous-parties\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"se déplacer en bas de la page\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"renvoyer un message à un autre utilisateur\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"sélectionner un nouveau fichier dans ce répertoire\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"visualiser le fichier\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"afficher le nom du fichier sélectionné actuellement\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"s'abonner à la BAL courante (IMAP seulement)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"se désabonner de la BAL courante (IMAP seulement)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"\"\n\"changer entre voir toutes les BAL/voir les BAL abonnées (IMAP seulement)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"lister les BAL ayant de nouveaux messages\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"changer de répertoires\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"vérifier la présence de nouveaux messages dans les BAL\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"attacher des fichiers à ce message\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"attacher des messages à ce message\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"éditer la liste BCC\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"éditer la liste CC\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"éditer la description de l'attachement\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"éditer le transfer-encoding de l'attachement\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"entrer le nom d'un fichier dans lequel sauver une copie de ce message\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"éditer le fichier à attacher\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"éditer le champ from\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"éditer le message avec ses en-têtes\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"éditer le message\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"éditer l'attachement en utilisant l'entrée mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"éditer le champ Reply-To\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"éditer l'objet (Subject) de ce message\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"éditer la liste TO\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"créer une nouvelle BAL (IMAP seulement)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"éditer le content-type de l'attachement\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"obtenir une copie temporaire d'un attachement\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"lancer ispell sur le message\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"composer un nouvel attachement en utilisant l'entrée mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"inverser le recodage de cet attachement\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"sauvegarder ce message pour l'envoyer plus tard\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"renommer/déplacer un fichier attaché\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"envoyer le message\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"changer la disposition (en ligne/attachement)\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"changer l'option de suppression de fichier après envoi\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"mettre à jour les informations de codage d'un attachement\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"écrire le message dans un dossier\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"copier un message dans un fichier ou une BAL\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"créer un alias à partir de l'expéditeur d'un message\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"déplacer l'entrée au bas de l'écran\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"déplacer l'entrée au milieu de l'écran\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"déplacer l'entrée en haut de l'écran\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"faire une copie décodée (text/plain)\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"faire une copie décodée (text/plain) et effacer\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"effacer l'entrée courante\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"supprimer la BAL courante (IMAP seulement)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"effacer tous les messages dans la sous-discussion\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"effacer tous les messages dans la discussion\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"afficher l'adresse complète de l'expéditeur\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"afficher le message et inverser la restriction des en-têtes\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"afficher un message\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"éditer le message brut\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"effacer le caractère situé devant le curseur\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"déplacer le curseur d'un caractère vers la gauche\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"déplacer le curseur au début du mot\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"aller au début de la ligne\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"parcourir les boîtes aux lettres recevant du courrier\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"compléter un nom de fichier ou un alias\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"compléter une adresse grâce à une requête\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"effacer le caractère situé sous le curseur\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"aller à la fin de la ligne\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"déplacer le curseur d'un caractère vers la droite\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"déplacer le curseur à la fin du mot\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"redescendre dans l'historique\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"remonter dans l'historique\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"effacer la fin de la ligne à partir du curseur\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"effacer la fin du mot à partir du curseur\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"effacer tous les caractères de la ligne\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"effacer le mot situé devant le curseur\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"entrer le caractère correspondant à la prochaine touche\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"échanger le caractère situé sous le curseur avec le précédent\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"capitaliser le mot\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"convertir le mot en minuscules\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"convertir le mot en majuscules\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"entrer une commande muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"entrer un masque de fichier\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"sortir de ce menu\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtrer un attachement au moyen d'une commande shell\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"se déplacer sur la première entrée\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"modifier l'indicateur 'important' d'un message\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"faire suivre un message avec des commentaires\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"sélectionner l'entrée courante\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"répondre à tous les destinataires\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"descendre d'1/2 page\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"remonter d'1/2 page\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"cet écran\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"aller à un numéro d'index\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"aller à la dernière entrée\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"répondre à la liste spécifiée\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"exécuter une macro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"composer un nouveau message\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"casser la discussion en deux\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"ouvrir un dossier différent\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"ouvrir un dossier différent en lecture seule\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"effacer un indicateur de statut d'un message\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"effacer les messages correspondant à un motif\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"forcer la récupération du courrier depuis un serveur IMAP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"se déconnecter de tous les serveurs IMAP\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"récupérer le courrier depuis un serveur POP\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"aller au premier message\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"aller au dernier message\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"afficher seulement les messages correspondant à un motif\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"lier le message marqué au message courant\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"ouvrir la boîte aux lettres avec de nouveaux messages suivante\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"aller au nouveau message suivant\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"aller au message nouveau ou non lu suivant\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"aller à la sous-discussion suivante\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"aller à la discussion suivante\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"aller au message non effacé suivant\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"aller au message non lu suivant\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"aller au message père dans la discussion\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"aller à la discussion précédente\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"aller à la sous-discussion précédente\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"aller au message non effacé précédent\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"aller au nouveau message précédent\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"aller au message nouveau ou non lu précédent\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"aller au message non lu précédent\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"marquer la discussion courante comme lue\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"marquer la sous-discussion courante comme lue\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"mettre un indicateur d'état sur un message\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"sauver les modifications de la boîte aux lettres\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"marquer les messages correspondant à un motif\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"récupérer les messages correspondant à un motif\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"démarquer les messages correspondant à un motif\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"aller au milieu de la page\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"aller à l'entrée suivante\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"descendre d'une ligne\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"aller à la page suivante\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"aller à la fin du message\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"inverser l'affichage du texte cité\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"sauter le texte cité\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"aller au début du message\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"passer le message/l'attachement à une commande shell\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"aller à l'entrée précédente\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"remonter d'une ligne\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"aller à la page précédente\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"imprimer l'entrée courante\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"demander des adresses à un programme externe\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"ajouter les nouveaux résultats de la requête aux résultats courants\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"sauver les modifications de la boîte aux lettres et quitter\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"rappeler un message ajourné\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"effacer l'écran et réafficher\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{interne}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"renommer la BAL courante (IMAP seulement)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"répondre à un message\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"utiliser le message courant comme modèle pour un nouveau message\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"\"\n\"sauver le message/l'attachement dans une boîte aux lettres ou un fichier\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"rechercher une expression rationnelle\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"rechercher en arrière une expression rationnelle\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"rechercher la prochaine occurrence\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"rechercher la prochaine occurrence dans la direction opposée\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"inverser la coloration du motif de recherche\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"exécuter une commande dans un sous-shell\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"trier les messages\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"trier les messages dans l'ordre inverse\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"marquer l'entrée courante\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"appliquer la prochaine fonction aux messages marqués\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"appliquer la prochaine fonction SEULEMENT aux messages marqués\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"marquer la sous-discussion courante\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"marquer la discussion courante\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"inverser l'indicateur 'nouveau' d'un message\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"changer l'option de mise à jour de la boîte aux lettres\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"changer entre l'affichage des BAL et celui de tous les fichiers\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"aller en haut de la page\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"récupérer l'entrée courante\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"récupérer tous les messages de la discussion\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"récupérer tous les messages de la sous-discussion\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"afficher la version de Mutt (numéro et date)\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"visualiser l'attachement en utilisant l'entrée mailcap si nécessaire\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"afficher les attachements MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"afficher le code d'une touche enfoncée\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"afficher le motif de limitation actuel\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"comprimer/décomprimer la discussion courante\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"comprimer/décomprimer toutes les discussions\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"attacher une clé publique PGP\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"afficher les options PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"envoyer une clé publique PGP\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"vérifier une clé publique PGP\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"afficher le numéro d'utilisateur de la clé\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"reconnaissance PGP classique\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Accepter la chaîne construite\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Ajouter un redistributeur de courrier à la fin de la chaîne\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Insérer un redistributeur de courrier dans la chaîne\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Retirer un redistributeur de courrier de la chaîne\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Sélectionner l'élément précédent de la chaîne\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Sélectionner l'élément suivant de la chaîne\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"\"\n\"envoyer le message dans une chaîne de redistributeurs de courrier mixmaster\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"faire une copie déchiffrée et effacer\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"faire une copie déchiffrée\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"effacer les phrases de passe de la mémoire\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"extraire les clés publiques supportées\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"afficher les options S/MIME\"\n"
  },
  {
    "path": "po/ga.po",
    "content": "# Irish translations for mutt.\n# Copyright (C) 2003 Free Software Foundation, Inc.\n# Kevin Patrick Scannell <scannell@SLU.EDU>, 2005, 2006.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt 1.5.12\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2006-10-16 14:22-0500\\n\"\n\"Last-Translator: Kevin Patrick Scannell <scannell@SLU.EDU>\\n\"\n\"Language-Team: Irish <ga@li.org>\\n\"\n\"Language: ga\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=ISO-8859-1\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Ainm sideora ag %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Focal faire do %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Scoir\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Scr\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"DScr\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Roghnaigh\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Cabhair\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Nl aon ailias agat!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Ailiasanna\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Ailias: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"T an t-ailias seo agat cheana fin!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"\"\n\"Rabhadh: Is fidir nach n-oibreoidh an t-ailias seo i gceart.  Ceartaigh?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Seoladh: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Earrid: Is drochIDN  '%s'.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Ainm pearsanta: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Glac Leis?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Sbhil go comhad: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Earrid ag iarraidh comhad a scrd\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Cuireadh an t-ailias leis.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Earrid ag iarraidh comhad a scrd\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"N fidir ainmtheimplad comhoirinach a fhil; lean ar aghaidh?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"T g le %%s in iontril chumtha Mailcap\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Earrid agus \\\"%s\\\"  rith!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Norbh fhidir comhad a oscailt chun ceanntsca a pharsil.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Norbh fhidir comhad a oscailt chun ceanntsca a struipeil.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Theip ar athainmni comhaid.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Nl aon iontril chumadra mailcap do %s, comhad folamh  chruth.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"T g le %%s in iontril Eagair Mailcap\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Nl aon iontril eagair mailcap do %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Nor aimsodh iontril chomhoirinach mailcap.  Fach air mar thacs.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"T an cinel MIME gan sainmhni.  N fidir an t-iatn a lamh.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"N fidir an scagaire a chruth\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Iatin\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Iatin\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"N fidir an scagaire a chruth\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Fadhb i rith scrofa!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"N fhadaim priontil!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Chdir\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Masc\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"N comhadlann  %s.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Bosca Poist [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Liostilte [%s], Masc comhaid: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Comhadlann [%s], Masc comhaid: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"N fidir comhadlann a cheangal!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Nl aon chomhad comhoirinach leis an mhasc chomhaid\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"N fidir cruth ach le bosca poist IMAP\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"N fidir athainmni ach le bosca poist IMAP\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"N fidir scriosadh ach le bosca poist IMAP\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"N fidir an scagaire a chruth\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Scrios bosca poist \\\"%s\\\" i ndirre?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Scriosadh an bosca.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Nor scriosadh an bosca.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Chdir go: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Earrid agus comhadlann  scanadh.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Masc Comhaid: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"Srtil droim ar ais de rir (d)ta, (a)ibtre, (m)id, n (n) srtil? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Srtil de rir (d)ta, (a)ibtre, (m)id, n (n) srtil? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"damn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Ainm comhaid nua: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"N fidir comhadlann a scrd\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Earrid ag iarraidh comhad a scrd\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Post nua i \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: nl dathanna ar fil leis an teirminal seo\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: nl a leithid de dhath ann\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: nl a leithid de rud ann\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: is fidir an t-ord seo a sid le rada innacs amhin\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: nl go leor argint ann\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Argint ar iarraidh.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: nl go leor argint ann\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: nl go leor argint ann\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: nl a leithid d'aitreabid ann\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"nl go leor argint ann\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"an iomarca argint\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"nl na dathanna ramhshocraithe ar fil\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Foraigh sni PGP?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Norbh fhidir comhad sealadach a chruth!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"N fidir scagaire taispena a chruth\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Norbh fhidir teachtaireacht a chipeil\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"Bh an sni S/MIME foraithe.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Nl inir an teastais S/MIME comhoirinach leis an seoltir.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Rabhadh: Nor snodh cuid den teachtaireacht seo.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"Norbh fhidir an sni S/MIME a fhor.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"Bh an sni PGP foraithe.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"Norbh fhidir an sni PGP a fhor.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Ord: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Scinn teachtaireacht go: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Scinn teachtaireachta clibeilte go: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Earrid agus seoladh  pharsil!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"DrochIDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Scinn teachtaireacht go %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Scinn teachtaireachta go %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Nor scinneadh an teachtaireacht.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Nor scinneadh na teachtaireachta.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Scinneadh an teachtaireacht.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Scinneadh na teachtaireachta.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"N fidir priseas a chruth chun scagadh a dhanamh\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Popa go dt an t-ord: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Nl aon ord priontla sainmhnithe.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Priontil teachtaireacht?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Priontil teachtaireachta clibeilte?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Priontilte\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Priontilte\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Norbh fhidir an teachtaireacht a phriontil\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Norbh fhidir na teachtaireachta a phriontil\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"DroimArAis (d)ta/()/(f)g/(b)har/(g)o/s(n)ith/d(s)hrt/(m)id/s(c)r/\"\n\"s(p)am?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Srtil (d)ta/()/(f)g/(b)har/(g)o/s(n)ith/d(s)hrt/(m)id/s(c)r/\"\n\"s(p)am?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfbgnsmcp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Ord blaoisce: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Dchdaigh-sbhil%s go bosca poist\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Dchdaigh-cipeil%s go bosca poist\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Dchriptigh-sbhil%s go bosca poist\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Dchriptigh-cipeil%s go bosca poist\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Sbhil%s go dt an bosca poist\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Cipeil%s go dt an bosca poist\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" clibeilte\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \" chipeil go %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Tiontaigh go %s agus  sheoladh?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Athraodh Content-Type go %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Athraodh an tacar carachtar go %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"gan tiont\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \" tiont\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Nl aon iatn ann.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Seol\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Tobscoir\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Iatn\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Cur Sos\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Nl clibeil le fil.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Snigh, Criptigh\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Criptigh\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Snigh\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \" (inlne)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\n#, fuzzy\nmsgid \" (S/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" snigh mar: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<ramhshocraithe>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Criptigh le: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"nl %s [#%d] ann nos m!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"Mionathraodh %s [#%d]. Nuashonraigh a ionchd?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Iatin\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Rabhadh: is drochIDN '%s'.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"N fidir leat an t-iatn amhin a scriosadh.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"DrochIDN i \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Comhaid roghnaithe  gceangal...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"N fidir %s a cheangal!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Oscail an bosca poist as a gceanglidh t teachtaireacht\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"N fidir an bosca poist a chur faoi ghlas!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Nl aon teachtaireacht san fhillten sin.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Clibeil na teachtaireachta le ceangal!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"N fidir a cheangal!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Tann ath-ionchd i bhfeidhm ar iatin tacs amhin.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"N thiontfar an t-iatn reatha.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Tiontfar an t-iatn reatha.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Ionchd neamhbhail.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Sbhil cip den teachtaireacht seo?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Athainmnigh go: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"n fidir %s a `stat': %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Comhad nua: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Is san fhoirm base/sub  Content-Type\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Content-Type anaithnid %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"N fidir an comhad %s a chruth\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"N fidir iatn a chruth\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Cuir an teachtaireacht ar athl?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Scrobh teachtaireacht sa bhosca poist\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Teachtaireacht  scrobh i %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Teachtaireacht scrofa.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME roghnaithe cheana.  Glan agus lean ar aghaidh? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP roghnaithe cheana.  Glan agus lean ar aghaidh? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"earrid agus comhthacs gpgme  chruth: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"earrid agus prtacal CMS  chumas: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"earrid agus rad gpgme  chruth: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"earrid agus rad  dhileadh: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"earrid agus rad  atochras: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"earrid agus rad  lamh: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"N fidir comhad sealadach a chruth\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"earrid agus faighteoir `%s'  chur leis: %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"eochair rnda `%s' gan aimsi: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"sonr dbhroch d'eochair rnda `%s'\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"earrid agus eochair rnda  shocr `%s': %s\\n\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"Earrid agus eolas faoin eochair  fhil: \"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"earrid agus sonra  gcripti: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"earrid agus sonra  sni: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Rabhadh: Clghaireadh ceann amhin de na heochracha\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Rabhadh: D'imigh an eochair lena gcruthaodh an sni as feidhm ar: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Rabhadh: D'imigh eochair amhin deimhnithe as feidhm, ar a laghad\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Rabhadh: D'imigh an sni as feidhm ar: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"N fidir for de bharr eochair n teastas ar iarraidh\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"Nl an CRL ar fil\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"T an CRL le fil rshean\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Nor freastalaodh ar riachtanas polasa\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Tharla earrid chrais\"\n\n#: crypt-gpgme.c:1240\n#, fuzzy\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"RABHADH: Nl stainm an fhreastala comhoirinach leis an teastas.\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Marlorg: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"RABHADH: Nl fianaise AR BITH againn go bhfuil an eochair ag an duine \"\n\"ainmnithe thuas\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"RABHADH: NL an eochair ag an duine ainmnithe thuas\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"RABHADH: NL m cinnte go bhfuil an eochair ag an duine ainmnithe thuas\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Cruthaigh %s?\"\n\n#: crypt-gpgme.c:1462\n#, fuzzy, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Earrid agus eolas faoin eochair  fhil: \"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\n#, fuzzy\nmsgid \"Good signature from:\"\nmsgstr \"Sni maith : \"\n\n#: crypt-gpgme.c:1476\n#, fuzzy\nmsgid \"*BAD* signature from:\"\nmsgstr \"Sni maith : \"\n\n#: crypt-gpgme.c:1492\n#, fuzzy\nmsgid \"Problem signature from:\"\nmsgstr \"Sni maith : \"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\n#, fuzzy\nmsgid \"               expires: \"\nmsgstr \"ar a dtugtar freisin: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Tos ar eolas faoin sni --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Earrid: theip ar fhor: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Tos na Nodaireachta (snithe ag: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Deireadh na Nodaireachta ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Deireadh an eolais faoin sni --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Earrid: theip ar dhchripti: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Earrid agus eolas faoin eochair  fhil: \"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Earrid: theip ar dhchripti/fhor: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Earrid: theip ar chipeil na sonra\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- TOSACH TEACHTAIREACHTA PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- TOSAIGH BLOC NA hEOCHRACH POIBL PGP --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- TOSACH TEACHTAIREACHTA PGP SNITHE --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- DEIREADH TEACHTAIREACHTA PGP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- CROCH BHLOC NA hEOCHRACH POIBL PGP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- DEIREADH NA TEACHTAIREACHTA SNITHE PGP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Earrid: norbh fhidir tosach na teachtaireachta PGP a aimsi! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Earrid: n fidir comhad sealadach a chruth! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Is snithe agus criptithe le PGP/MIME iad na sonra seo a leanas --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Is criptithe le PGP/MIME iad na sonra seo a leanas --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Deireadh na sonra snithe agus criptithe le PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Deireadh na sonra criptithe le PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"D'irigh le dchripti na teachtaireachta PGP.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Norbh fhidir an teachtaireacht PGP a dhchripti\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Is snithe le S/MIME iad na sonra seo a leanas --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Is criptithe le S/MIME iad na sonra seo a leanas --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Deireadh na sonra snithe le S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Deireadh na sonra criptithe le S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\"[N fidir an t-aitheantas sideora a thaispeint (ionchd anaithnid)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\"[N fidir an t-aitheantas sideora a thaispeint (ionchd neamhbhail)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[N fidir an t-aitheantas sideora a thaispeint (DN neamhbhail)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" ar a dtugtar freisin ...:\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Ainm ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Neamhbhail]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Bail  : %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Bail Go ..: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Cinel na hEochrach ..: %s, %lu giotn %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"sid Eochrach .: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"criptichn\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"sni\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"deimhni\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Sraithuimhir .: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Eisithe Ag .: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Fo-eochair ....: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Clghairthe]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[As Feidhm]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Dchumasaithe]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Sonra  mbaili...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Earrid agus eochair an eisitheora  aimsi: %s\\n\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Earrid: slabhra rfhada deimhnithe -  stopadh anseo\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Aitheantas na heochrach: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"Theip ar gpgme_new: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"theip ar gpgme_op_keylist_start: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"theip ar gpgme_op_keylist_next: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"T gach eochair chomhoirinach marcilte mar as feidhm/clghairthe.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Scoir   \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Roghnaigh  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Seiceil eochair  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Eochracha PGP agus S/MIME at comhoirinach le\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"Eochracha PGP at comhoirinach le\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"Eochracha S/MIME at comhoirinach le\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"eochracha at comhoirinach le\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"N fidir an eochair seo a sid: as feidhm/dchumasaithe/clghairthe.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"T an t-aitheantas as feidhm/dchumasaithe/clghairthe.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"Aitheantas gan bailocht chinnte.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"Nl an t-aitheantas bail.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Is ar igean at an t-aitheantas bail.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s An bhfuil t cinnte gur mhaith leat an eochair seo a sid?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Ag cuardach ar eochracha at comhoirinach le \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"sid aitheantas eochrach = \\\"%s\\\" le haghaidh %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Iontril aitheantas eochrach le haghaidh %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Iontril aitheantas na heochrach, le do thoil: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Earrid agus eolas faoin eochair  fhil: \"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Eochair PGP %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME (c)ript, (s)nigh, snigh (m)ar, (a)raon, (p)gp, n (g)lan?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (c)ript, (s)nigh, snigh (m)ar, (a)raon, s/m(i)me, n (g)lan?\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"S/MIME (c)ript, (s)nigh, snigh (m)ar, (a)raon, (p)gp, n (g)lan?\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"csmapg\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP (c)ript, (s)nigh, snigh (m)ar, (a)raon, s/m(i)me, n (g)lan?\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"csmaig\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"S/MIME (c)ript, (s)nigh, snigh (m)ar, (a)raon, (p)gp, n (g)lan?\"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"csmapg\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"PGP (c)ript, (s)nigh, snigh (m)ar, (a)raon, s/m(i)me, n (g)lan?\"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"csmaig\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Snigh mar: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Theip ar fhor an tseoltra\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Theip ar dhanamh amach an tseoltra\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (an t-am anois: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- an t-aschur %s:%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Rinneadh dearmad ar an bhfrsa faire.\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"N fidir an teachtaireacht a sheoladh inlne.  sid PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"PGP  thos...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"N fidir an teachtaireacht a sheoladh inlne.  sid PGP/MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Nor seoladh an post.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\"N ghlacann le teachtaireachta S/MIME gan leideanna maidir lena n-inneachar.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Ag baint triail as eochracha PGP a bhaint amach...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Ag baint triail as teastais S/MIME a bhaint amach...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Earrid: Prtacal anaithnid multipart/signed %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Earrid: Struchtr neamhrireach multipart/signed! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Rabhadh: N fidir %s/%s sni a fhor. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Is snithe iad na sonra seo a leanas --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Rabhadh: N fidir aon sni a aimsi. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Deireadh na sonra snithe --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\"t \\\"crypt_use_gpgme\\\" socraithe ach nor tiomsaodh le tacaocht GPGME.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"S/MIME  thos...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"is sea\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"n hea\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Scoir Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"earrid anaithnid\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Brigh eochair ar bith chun leanint...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' le haghaidh liosta): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Nl aon bhosca poist oscailte.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Nl aon teachtaireacht ann.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"T an bosca poist inlite amhin.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"N cheadatear an fheidhm seo sa mhd iatin.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Nl aon teachtaireacht le feiceil.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"N fidir 'scrobh' a scorn ar bhosca poist inlite amhin!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Scrobhfar na hathruithe agus an fillten  dhnadh.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"N scrobhfar na hathruithe.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Scoir\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Sbhil\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Post\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Freagair\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grpa\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"\"\n\"Mionathraodh an bosca poist go seachtrach.  Is fidir go bhfuil bratacha \"\n\"mchearta ann.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Post nua sa bhosca seo.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Mionathraodh an bosca poist go seachtrach.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Nl aon teachtaireacht chlibeilte.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Nl faic le danamh.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Lim go teachtaireacht: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Caithfidh an argint a bheith ina huimhir theachtaireachta.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Nl an teachtaireacht sin infheicthe.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Uimhir neamhbhail theachtaireachta.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Nl aon teachtaireacht nach scriosta.\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Scrios teachtaireachta at comhoirinach le: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Nl aon phatrn teorannaithe i bhfeidhm.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Teorainn: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Teorannaigh go teachtaireachta at comhoirinach le: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Chun gach teachtaireacht a fheiceil, socraigh teorainn mar \\\"all\\\".\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Scoir Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Clibeil teachtaireachta at comhoirinach le: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Nl aon teachtaireacht nach scriosta.\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Dscrios teachtaireachta at comhoirinach le: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Dchlibeil teachtaireachta at comhoirinach le: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Oscail bosca poist i md inlite amhin\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Oscail bosca poist\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Nl aon bhosca le romhphost nua.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"N bosca poist  %s.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"irigh as Mutt gan sbhil?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Snithe gan cumas.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Snithe briste\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Gan cheanntsc `Message-ID:'; n fidir an snithe a nasc\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Ar dts, clibeil teachtaireacht le nascadh anseo\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Snitheanna nasctha\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Nor nascadh snithe\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"An teachtaireacht deiridh.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Nl aon teachtaireacht nach scriosta.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"An chad teachtaireacht.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Thimfhill an cuardach go dt an barr.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Thimfhill an cuardach go dt an bun.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Nl an mhthair-theachtaireacht infheicthe san amharc srianta seo.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Nl aon teachtaireacht nua\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Nl an mhthair-theachtaireacht infheicthe san amharc srianta seo.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Nl aon teachtaireacht gan lamh\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"taispein teachtaireacht\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Nl aon snithe eile.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Is  seo an chad snithe.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"T teachtaireachta gan lamh sa snithe seo.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"Nl aon teachtaireacht nach scriosta.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"N fidir teachtaireacht a scrobh \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"lim go mthair-theachtaireacht sa snithe\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"Nl aon teachtaireacht nach scriosta.\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tionsigh lne le ~ aonair i dtosach\\n\"\n\"~b sideoir\\tcuir sideoir leis an rimse Bcc:\\n\"\n\"~c sideoir\\tcuir sideoir leis an rimse Cc:\\n\"\n\"~f tchta\\tcuir teachtaireachta san ireamh\\n\"\n\"~F tchta\\tar comhbhr le ~f, ach le ceanntsca\\n\"\n\"~h\\t\\tcuir an ceanntsc in eagar\\n\"\n\"~m tchta\\tcuir tchta athfhriotail san ireamh\\n\"\n\"~M tchta\\tar comhbhr le ~m, ach le ceanntsca\\n\"\n\"~p\\t\\tpriontil an teachtaireacht\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tscrobh an comhad agus scoir\\n\"\n\"~r comhad\\t\\tligh comhad isteach san eagarthir\\n\"\n\"~t sideoir\\tcuir sideoir leis an rimse To:\\n\"\n\"~u\\t\\taisghair an lne roimhe seo\\n\"\n\"~v\\t\\tcuir an tcht in eagar le heagarthir $visual\\n\"\n\"~w comhad\\t\\tscrobh tcht i gcomhad\\n\"\n\"~x\\t\\ttobscoir, n sbhil na hathruithe\\n\"\n\"~?\\t\\tan teachtaireacht seo\\n\"\n\".\\t\\tar lne leis fin chun ionchur a stopadh\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: uimhir theachtaireachta neamhbhail.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Cuir an teachtaireacht i gcrch le . ar lne leis fin amhin)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Nl aon bhosca poist.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Sa teachtaireacht:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(lean ar aghaidh)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"ainm comhaid ar iarraidh.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Nl aon lne sa teachtaireacht.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"DrochIDN i %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: ord anaithnid eagarthra (~? = cabhair)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"n fidir fillten sealadach a chruth: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"norbh fhidir fillten poist shealadach a chruth: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"norbh fhidir fillten poist shealadach a theascadh: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"T an comhad teachtaireachta folamh!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Teachtaireacht gan athr!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Norbh fhidir an comhad teachtaireachta a oscailt: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"N fidir aon rud a iarcheangal leis an fhillten: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Earrid.  Ag caomhn an chomhaid shealadaigh: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Socraigh bratach\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Glan bratach\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Earrid:  Norbh fhidir aon chuid de Multipart/Alternative a \"\n\"thaispeint! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Iatn #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Cinel: %s/%s, Ionchd: %s, Mid: %s --]\\n\"\n\n#: handler.c:1281\n#, fuzzy\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Rabhadh: Nor snodh cuid den teachtaireacht seo.\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Uathamharc le %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Ord uathamhairc  rith: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- N fidir %s a rith. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Uathamharc ar stderr de %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Earrid: nl aon pharaimadar den chinel rochtana ag message/external-\"\n\"body --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Bh an t-iatn seo %s/%s \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(mid %s beart) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"scriosta --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- ar %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- ainm: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Nor cuireadh an t-iatn seo %s/%s san ireamh, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- agus t an fhoinse sheachtrach sainithe --]\\n\"\n\"[-- i ndiaidh dul as feidhm. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- agus n ghlacann leis an chinel shainithe rochtana %s --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Norbh fhidir an comhad sealadach a oscailt!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Earrid: Nl aon phrtacal le haghaidh multipart/signed.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Bh an t-iatn seo %s/%s \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s gan tacaocht \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(bain sid as '%s' chun na pirte seo a fheiceil)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(n folir 'view-attachments' a cheangal le heochair!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: n fidir comhad a cheangal\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"Earrid: seol tuairisc fhabht, le do thoil\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<ANAITHNID>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Ceangail ghinearlta:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Feidhmeanna gan cheangal:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Cabhair le %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: N cheadatear unhook * isteach i hook.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: cinel anaithnid crca: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: N fidir %s a scriosadh taobh istigh de %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Nl aon fhordheimhneoir ar fil\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \" fhordheimhni (gan ainm)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Theip ar fhordheimhni gan ainm.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \" fhordheimhni (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"Theip ar fhordheimhni CRAM-MD5.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \" fhordheimhni (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"Theip ar fhordheimhni GSSAPI.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"Dchumasaodh LOGIN ar an fhreastala seo.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Logil isteach...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Theip ar logil isteach.\"\n\n# %s is the method, not what's being authenticated I think\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \" fhordheimhni (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"Theip ar fhordheimhni SASL.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"T %s neamhbhail mar chonair IMAP\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Liosta fillten  fhil...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Nl a leithid d'fhillten ann\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Cruthaigh bosca poist: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"N folir ainm a thabhairt ar an mbosca.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Cruthaodh bosca poist.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Athainmnigh bosca poist %s go: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Theip ar athainmni: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Athainmnodh an bosca poist.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Dnadh bosca poist\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"Theip ar SSL: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Nasc le %s  dhnadh...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Freastala rsa IMAP. N oibronn Mutt leis.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Nasc daingean le TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Norbh fhidir nasc TLS a shocr\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Nl nasc criptithe ar fil\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"%s  roghn...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Earrid ag oscailt an bhosca poist\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Cruthaigh %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Theip ar scriosadh\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Ag marcil %d teachtaireacht mar scriosta...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Teachtaireachta athraithe  sbhil... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Earrid agus bratacha  sbhil. Dn mar sin fin?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Earrid agus bratacha  sbhil\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Teachtaireachta  scriosadh n fhreastala...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: Theip ar scriosadh\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Cuardach ceanntisc gan ainm an cheanntisc: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Drochainm ar bhosca poist\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Ag liostil le %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Ag dliostil  %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Liostilte le %s\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Dliostilte  %s\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"N fidir na ceanntsca a fhil  fhreastala IMAP den leagan seo.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Norbh fhidir comhad sealadach %s a chruth\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"Taisce  scrd... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"Ceanntsca na dteachtaireachta  bhfil... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Teachtaireacht  fil...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"\"\n\"T innacs na dteachtaireachta mcheart. Bain triail as an mbosca poist a \"\n\"athoscailt.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Teachtaireacht  huaslucht...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"%d teachtaireacht  gcipeil go %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Teachtaireacht %d  cipeil go %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Lean ar aghaidh?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"N ar fil sa roghchlr seo.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Slonn ionadaochta neamhbhail: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: nl aon phatrn comhoirinach ann\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: nl aon phatrn comhoirinach ann\"\n\n#: init.c:861\n#, fuzzy, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"-rx n -addr ar iarraidh.\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"Rabhadh: DrochIDN '%s'.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"iatin: gan chiri\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"iatin: ciri neamhbhail\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"d-iatin: gan chiri\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"d-iatin: ciri neamhbhail\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"ailias: gan seoladh\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Rabhadh: DrochIDN '%s' san ailias '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"rimse cheanntisc neamhbhail\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: modh shrtla anaithnid\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): earrid i regexp: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: athrg anaithnid\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"n cheadatear an rimr le hathshocr\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"n cheadatear an luach le hathshocr\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s socraithe\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s gan socr\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"L neamhbhail na mosa: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: cinel bosca poist neamhbhail\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: luach neamhbhail\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: luach neamhbhail\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: Cinel anaithnid.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: cinel anaithnid\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Earrid i %s, lne %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: earrid i %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: an iomarca earrid i %s, ag tobscor\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: earrid ag %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: an iomarca argint\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: ord anaithnid\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Earrid ar lne ordaithe: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"n fidir an chomhadlann bhaile a aimsi\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"n fidir an t-ainm sideora a aimsi\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"n fidir an t-ainm sideora a aimsi\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: gan ainm grpa\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"nl go leor argint ann\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Braitheadh lb i macra.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Eochair gan cheangal.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Eochair gan cheangal.  Brigh '%s' chun cabhr a fhil.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: an iomarca argint\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: nl a leithid de roghchlr ann\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"seicheamh neamhbhail\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: an iomarca argint\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: nl a leithid d'fheidhm sa mhapa\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macra: seicheamh folamh eochrach\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: an iomarca argint\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: nl aon argint\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: nl a leithid d'fheidhm ann\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Iontril eochracha (^G chun scor):\"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Car = %s, Ochtnrtha = %o, Deachlach = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Slnuimhir thar maoil -- n fidir cuimhne a dhileadh!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Cuimhne dithe!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Chun dul i dteagmhil leis na forbrir, seol romhphost\\n\"\n\"chuig <mutt-dev@mutt.org> le do thoil.  Chun tuairisc ar fhabht\\n\"\n\"a chur in il dinn, tabhair cuairt ar http://bugs.mutt.org/.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright  1996-2006 Michael R. Elkins agus daoine eile.\\n\"\n\"Nl barnta AR BITH le Mutt; iontril `mutt -vv' chun tuilleadh\\n\"\n\"eolais a fhil.  Is saorbhogearra  Mutt: is fidir leat \\n\"\n\"a athdhileadh, agus filte, ach de rir coinnollacha irithe.\\n\"\n\"Iontril `mutt -vv' chun tuilleadh eolais a fhil.\\n\"\n\n#: main.c:75\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright  1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright  1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright  1997-2006 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright  1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright  1999-2006 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright  1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright  2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"\\n\"\n\"Thug neart daoine eile cd, ceartchin, agus molta dinn.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    Is saorbhogearra  an clr seo; is fidir leat  a scaipeadh agus/n\\n\"\n\"    a athr de rir na gcoinnollacha den GNU General Public License mar \"\n\"at\\n\"\n\"    foilsithe ag an Free Software Foundation; faoi leagan 2 den cheadnas,\\n\"\n\"    n (ms mian leat) aon leagan nos dana.\\n\"\n\"\\n\"\n\"    Scaiptear an clr seo le sil go mbeidh s isiil, ach GAN AON \"\n\"BARNTA;\\n\"\n\"    go fi gan an barntas intuigthe d'INDOLTACHT n FEILINACHT D'FHEIDHM\\n\"\n\"    AR LEITH.  Fach ar an GNU General Public License chun nos m\\n\"\n\"    sonra a fhil.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    Ba chir go mbeife tar is cip den GNU General Public License a fhil\\n\"\n\"    in ineacht leis an gclr seo; mura bhfuair, scrobh chuig an Free\\n\"\n\"    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\\n\"\n\"    Boston, MA 02110-1301 USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\n#, fuzzy\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"roghanna:\\n\"\n\"  -A <ailias>\\tleathnaigh an t-ailias sonraithe\\n\"\n\"  -a <comhad>\\tcuir iatn leis an teachtaireacht\\n\"\n\"  -b <seoladh>\\tsonraigh seoladh BCC\\n\"\n\"  -c <seoladh>\\tsonraigh seoladh CC\\n\"\n\"  -D\\t\\tpriontil luach de gach athrg go stdout\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <leibhal>\\tscrobh aschur dfhabhtaithe i ~/.muttdebug0\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -e <ord>\\tsonraigh ord le rith i ndiaidh an tsaithe\\n\"\n\"  -f <comhad>\\tsonraigh an bosca poist le lamh\\n\"\n\"  -F <comhad>\\tsonraigh comhad muttrc mar mhalairt\\n\"\n\"  -H <comhad>\\tsonraigh comhad drachta na litear an ceanntsc\\n\"\n\"  -i <comhad>\\tsonraigh comhad le cur sa phromhthacs\\n\"\n\"  -m <cinel>\\tramhshocraigh cinel bosca poist\\n\"\n\"  -n\\t\\tn ligh Muttrc an chrais\\n\"\n\"  -p\\t\\tathghair teachtaireacht at ar athl\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <athrg>\\tiarratas ar athrg chumraochta\\n\"\n\"  -R\\t\\toscail bosca poist sa mhd inlite amhin\\n\"\n\"  -s <bhar>\\tsonraigh an t-bhar (le comhartha athfhriotail m t sps \"\n\"ann)\\n\"\n\"  -v\\t\\ttaispein an leagan agus athrga ag am tiomsaithe\\n\"\n\"  -x\\t\\tinsamhail an md seolta mailx\\n\"\n\"  -y\\t\\troghnaigh bosca poist as do liosta\\n\"\n\"  -z\\t\\tscoir lom lithreach mura bhfuil aon teachtaireacht sa bhosca\\n\"\n\"  -Z\\t\\toscail an chad fhillten le tcht nua, scoir mura bhfuil ceann ann\\n\"\n\"  -h\\t\\tan chabhair seo\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Roghanna tiomsaithe:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Earrid agus teirminal  ths.\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Earrid: Is drochIDN  '%s'.\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Leibhal dfhabhtaithe = %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"\"\n\"Nor sonraodh an athrg DEBUG le linn tiomsaithe.  Rinneadh neamhshuim \"\n\"air.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"Nl a leithid de %s ann.  Cruthaigh?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"N fidir %s a chruth: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Nor sonraodh aon fhaighteoir.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: n fidir an comhad a cheangal.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Nl aon bhosca le romhphost nua.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Nl aon bhosca isteach socraithe agat.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"T an bosca poist folamh.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"%s  lamh...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"T an bosca poist truaillithe!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Truaillodh an bosca poist!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Earrid mharfach!  N fidir an bosca poist a athoscailt!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"N fidir an bosca poist a chur faoi ghlas!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: mionathraodh mbox, ach nor mionathraodh aon teachtaireacht! (seol \"\n\"tuairisc fhabht)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"%s  scrobh...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Athruithe  gcur i bhfeidhm...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Theip ar scrobh!  Sbhladh bosca poist neamhiomln i %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Norbh fhidir an bosca poist a athoscailt!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Bosca poist  athoscailt...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Tigh go: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Uimhir innacs neamhbhail.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Nl aon iontril ann.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"N fidir leat scroll sos nos m.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"N fidir leat scroll suas nos m.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Ar an chad leathanach.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Ar an leathanach deireanach.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Ar an iontril dheireanach.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Ar an chad iontril.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Dan cuardach ar: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Dan cuardach droim ar ais ar: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Ar iarraidh.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Nl aon iontril chlibeilte.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Nl cuardach le fil sa roghchlr seo.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"N fidir a lim i ndialga.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Nl clibeil le fil.\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"%s  roghn...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Norbh fhidir an teachtaireacht a sheoladh.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): n fidir an t-am a shocr ar chomhad\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"earrid agus rad  dhileadh: %s\\n\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Nasc le %s dnta\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"Nl SSL ar fil.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Theip ar ord ramhnaisc.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Earrid i rith danamh teagmhil le %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"DrochIDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"%s  chuardach...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Norbh fhidir dul i dteagmhil leis an stromhaire \\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Ag dul i dteagmhil le %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Norbh fhidir dul i dteagmhil le %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Nl go leor eantrpacht ar fil ar do chras-sa\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Linn eantrpachta  lonadh: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"Ceadanna neamhdhaingne ar %s!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"Dchumasaodh SSL de bharr easpa eantrpachta\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"Earrid I/A\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"Theip ar SSL: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Norbh fhidir an teastas a fhil n gcomhghleaca\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"Nasc SSL le %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Anaithnid\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[n fidir a romh]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[dta neamhbhail]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"T an teastas neamhbhail fs\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"T an teastas as feidhm\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Norbh fhidir an teastas a fhil n gcomhghleaca\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Norbh fhidir an teastas a fhil n gcomhghleaca\"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"Nl inir an teastais S/MIME comhoirinach leis an seoltir.\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Sbhladh an teastas\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"T an teastas seo ag:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Bh an teastas seo eisithe ag:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"T an teastas bail\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"    %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     go %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Marlorg: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(d)iltaigh, glac leis (u)air amhin, gl(a)c leis i gcna\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"dua\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(d)iltaigh, glac leis (u)air amhin\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"du\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Rabhadh: N fidir an teastas a shbhil\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Sbhladh an teastas\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Earrid: nl aon soicad oscailte TLS\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Dchumasaodh gach prtacal at le fil le haghaidh naisc TLS/SSL\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"Nasc SSL/TLS le %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Earrid agus sonra teastais gnutls  dts\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Earrid agus sonra an teastais  bpriseil\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Marlorg SHA1: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Marlorg MD5: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"RABHADH: Nl teastas an fhreastala bail fs\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"RABHADH: T teastas an fhreastala as feidhm\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"RABHADH: Clghaireadh an teastas freastala\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"RABHADH: Nl stainm an fhreastala comhoirinach leis an teastas.\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"RABHADH: N CA  snitheoir an teastais\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Earrid agus teastas  fhor (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"N X.509  an teastas\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Ag dul i dteagmhil le \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"D'fhill tolln %s earrid %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Earrid tollin i rith danamh teagmhil le %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"\"\n\"Is comhadlann  an comhad seo, sbhil fithi? [(s)bhil, (n) sbhil, \"\n\"(u)ile]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"snu\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Is comhadlann  an comhad seo, sbhil fithi?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Comhad faoin chomhadlann: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"T an comhad ann cheana, (f)orscrobh, c(u)ir leis, n (c)ealaigh?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"fuc\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"N fidir teachtaireacht a shbhil i mbosca poist POP.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Iarcheangail teachtaireachta le %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"N bosca poist %s!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Sraodh lon na nglas, bain glas do %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"N fidir %s a phoncghlasil.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Thar am agus glas fcntl  dhanamh!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Ag feitheamh le glas fcntl... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Thar am agus glas flock  dhanamh!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Ag feitheamh le hiarracht flock... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Norbh fhidir %s a ghlasil\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Norbh fhidir an bosca poist %s a shioncrn!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Bog na teachtaireachta lite go %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Glan %d teachtaireacht scriosta?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Glan %d teachtaireacht scriosta?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Teachtaireachta lite  mbogadh go %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Bosca poist gan athr.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d coinnithe, %d aistrithe, %d scriosta.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d coinnithe, %d scriosta.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Brigh '%s' chun md scrofa a scorn\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Bain sid as 'toggle-write' chun an md scrofa a athchumas!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"T an bosca poist marcilte \\\"neamh-inscrofa\\\". %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Seicphointeladh an bosca poist.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"N fidir teachtaireacht a scrobh \"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Slnuimhir thar maoil -- n fidir cuimhne a dhileadh.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"Suas \"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"Sos \"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Iatin\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Ar Aghaidh\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Seo  bun na teachtaireachta.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Seo  barr na teachtaireachta.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Cabhair  taispeint faoi lthair.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Nl a thuilleadh tacs athfhriotail ann.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Nl a thuilleadh tacs gan athfhriotal tar is tacs athfhriotail.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"teachtaireacht ilchodach gan paraimadar teoranta!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Earrid i slonn: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Slonn folamh\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"L neamhbhail na mosa: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"M neamhbhail: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Dta coibhneasta neamhbhail: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"earrid i slonn ag: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"paraimadar ar iarraidh\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"libn gan meaitseil: %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: ord neamhbhail\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: nl s ar fil sa mhd seo\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"paraimadar ar iarraidh\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"libn gan meaitseil: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"slonn folamh\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"earrid: op anaithnid %d (seol tuairisc fhabht).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Patrn cuardaigh  thioms...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Ord  rith ar theachtaireachta comhoirinacha...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"N raibh aon teachtaireacht chomhoirinach.\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \" Shbhil...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Bhuail an cuardach an bun gan teaghrn comhoirinach\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Bhuail an cuardach an barr gan teaghrn comhoirinach\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Idirbhriseadh an cuardach.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Iontril frsa faire PGP:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Rinneadh dearmad ar an bhfrsa faire PGP.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Earrid: n fidir fo-phriseas PGP a chruth! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Deireadh an aschuir PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Earrid: n fidir fo-phriseas PGP a chruth! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Theip ar dhchripti\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"N fidir fo-phriseas PGP a oscailt!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"N fidir PGP a thos\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (c)ript, (s)nigh, snigh (m)ar, (a)raon, %s, n (n) dan? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)nlne\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (c)ript, (s)nigh, snigh (m)ar, (a)raon, %s, n (n) dan? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP (c)ript, (s)nigh, snigh (m)ar, (a)raon, %s, n (n) dan? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"csmapg\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP (c)ript, (s)nigh, snigh (m)ar, (a)raon, %s, n (n) dan? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"csmapg\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP (c)ript, (s)nigh, snigh (m)ar, (a)raon, %s, n (n) dan? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"csmapg\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP (c)ript, (s)nigh, snigh (m)ar, (a)raon, %s, n (n) dan? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"csmapg\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Eochair PGP  fil...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\"T gach eochair chomhoirinach as feidhm, clghairthe, n dchumasaithe.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"Eochracha PGP at comhoirinach le <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"Eochracha PGP at comhoirinach le \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"N fidir /dev/null a oscailt\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Eochair PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"N ghlacann an freastala leis an ord TOP.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"n fidir ceanntsc a scrobh chuig comhad sealadach!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"N ghlacann an freastala leis an ord UIDL.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"\"\n\"T innacs na dteachtaireachta mcheart. Bain triail as an mbosca poist a \"\n\"athoscailt.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s: is conair POP neamhbhail\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Liosta teachtaireachta  fhil...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"n fidir teachtaireacht a scrobh i gcomhad sealadach!\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"Ag marcil %d teachtaireacht mar scriosta...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Ag seiceil do theachtaireachta nua...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"n bhfuarthas an t-stromhaire POP.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Nl aon phost nua sa bhosca POP.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Scrios teachtaireachta n fhreastala?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Teachtaireachta nua  lamh (%d beart)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Earrid agus bosca poist  scrobh!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [ladh %d as %d teachtaireacht]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Dhn an freastala an nasc!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \" fhordheimhni (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \" fhordheimhni (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"Theip ar fhordheimhni APOP.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"N ghlacann an freastala leis an ord USER.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Neamhbhail  \"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"N fidir teachtaireachta a fhgil ar an bhfreastala.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Earrid ag nascadh leis an bhfreastala: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Nasc leis an bhfreastala POP  dhnadh...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Innacsanna na dteachtaireachta  bhfor...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Cailleadh an nasc. Athnasc leis an bhfreastala POP?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Teachtaireachta Ar Athl\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Nl aon teachtaireacht ar athl.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Ceanntsc neamhcheadaithe criptithe\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Ceanntsc neamhcheadaithe S/MIME\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Teachtaireacht  dchripti...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Theip ar dhchripti.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Iarratas Nua\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Dan Ailias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Cuardaigh\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Ag feitheamh le freagra...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Nl aon ord iarratais sainmhnithe.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Iarratas\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Iarratas: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Iarratas '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Popa\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Priontil\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \" Shbhil...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Sbhladh an t-iatn.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"RABHADH!  T t ar t %s a fhorscrobh, lean ar aghaidh?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Scagadh an t-iatn.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Scagaire: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Popa go: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"N eol dom conas a phriontil iatin %s!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Priontil iat(i)n c(h)libeilte?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Priontil iatn?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"N fidir teachtaireacht chriptithe a dhchripti!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Iatin\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Nl aon fophirt le taispeint!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"N fidir an t-iatn a scriosadh n fhreastala POP.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"N cheadatear iatin a bheith scriosta  theachtaireachta criptithe.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"N cheadatear iatin a bheith scriosta  theachtaireachta criptithe.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"N cheadatear ach iatin ilphirt a bheith scriosta.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"N cheadatear ach pirteanna message/rfc822 a scinneadh.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Earrid agus teachtaireacht  scinneadh!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Earrid agus teachtaireachta  scinneadh!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"N fidir an comhad sealadach %s a oscailt.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Seol iad ar aghaidh mar iatin?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"N fidir gach iatn clibeilte a dhchd.  Cuir na cinn eile ar aghaidh \"\n\"mar MIME?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Cuir ar aghaidh, cuachta mar MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"N fidir %s a chruth.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"N fidir aon teachtaireacht chlibeilte a aimsi.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Nor aimsodh aon liosta postla!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"N fidir gach iatn clibeilte a dhchd.  Cuach na cinn eile mar MIME?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Iarcheangail\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Ionsigh\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Scrios\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"N fidir type2.list ag mixmaster a fhil!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Roghnaigh slabhra athphostir.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Earrid: n fidir %s a sid mar an t-athphostir deiridh i slabhra.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"N cheadatear ach %d ball i slabhra \\\"mixmaster\\\".\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"T an slabhra athphostir folamh cheana fin.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"T an chad bhall slabhra roghnaithe agat cheana.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"T ball deiridh an slabhra roghnaithe agat cheana.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"N ghlacann \\\"mixmaster\\\" le ceanntsca Cc n Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Socraigh an athrg stainm go cu le do thoil le linn sid \\\"mixmaster\\\"!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"\"\n\"Earrid agus teachtaireacht  seoladh, scoir an macphriseas le stdas %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Earrid agus teachtaireacht  seoladh.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Iontril mhchumtha don chinel %s i \\\"%s\\\", lne %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Nor sonraodh conair mailcap\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"nor aimsodh iontril mailcap don chinel %s\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: nl go leor argint ann\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: an iomarca argint\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Nor sonraodh aon bhar, tobscoir?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Gan bhar,  thobscor.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Tabhair freagra ar %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Teachtaireacht leantach go %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Nl aon teachtaireacht chlibeilte le feiceil!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Cuir an teachtaireacht isteach sa fhreagra?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Teachtaireacht athfhriotail san ireamh...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Norbh fhidir gach teachtaireacht iarrtha a chur sa fhreagra!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Seol  ar aghaidh mar iatn?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Teachtaireacht curtha ar aghaidh  hullmh...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Athghlaoigh teachtaireacht a bh curtha ar athl?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Cuir teachtaireacht in eagar roimh  a chur ar aghaidh?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Tobscoir an teachtaireacht seo (gan athr)?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Tobscoireadh teachtaireacht gan athr.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Cuireadh an teachtaireacht ar athl.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Nl aon fhaighteoir ann!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Nor sonraodh aon fhaighteoir.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Nor sonraodh aon bhar, tobscoir?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Nor sonraodh aon bhar.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Teachtaireacht  seoladh...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"fach ar an iatn mar thacs\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Norbh fhidir an teachtaireacht a sheoladh.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Seoladh an teachtaireacht.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \" seoladh sa chlra.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Nor aimsodh paraimadar teorann! [seol tuairisc fhabht]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"Nl %s ann nos m!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"N gnthchomhad %s.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Norbh fhidir %s a oscailt\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"\"\n\"Earrid agus teachtaireacht  seoladh, scoir an macphriseas le stdas %d \"\n\"(%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Aschur an phrisis seolta\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"DrochIDN %s agus resent-from  ullmh.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Ag scor.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Fuarthas %s...  Ag scor.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Fuarthas comhartha %d...  Ag scor.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Iontril frsa faire S/MIME:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Iontaofa     \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Foraithe    \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Gan for    \"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"As Feidhm    \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Clghairthe  \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Neamhbhail  \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Anaithnid    \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Teastais S/MIME at comhoirinach le \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"Nl an t-aitheantas bail.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Iontril aitheantas na heochrach: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Nor aimsodh aon teastas (bail) do %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Earrid: n fidir fo-phriseas OpenSSL a chruth!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"gan comhad teastais\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"gan mbox\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Gan aschur  OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"N fidir  a shni: Nor sonraodh eochair. sid \\\"Snigh Mar\\\".\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"N fidir fo-phriseas OpenSSL a oscailt!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Deireadh an aschuir OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Earrid: n fidir fo-phriseas OpenSSL a chruth! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Is criptithe mar S/MIME iad na sonra seo a leanas --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Is snithe mar S/MIME iad na sonra seo a leanas --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Deireadh na sonra criptithe mar S/MIME. --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Deireadh na sonra snithe mar S/MIME. --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (c)riptigh, (s)nigh, criptigh (l)e, snigh (m)ar, (a)raon, (n) \"\n\"dan? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (c)riptigh, (s)nigh, criptigh (l)e, snigh (m)ar, (a)raon, (n) \"\n\"dan? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"cslmafn\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (c)riptigh, (s)nigh, criptigh (l)e, snigh (m)ar, (a)raon, (n) \"\n\"dan? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"cslmafn\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Roghnaigh clann algartaim: 1: DES, 2: RC2, 3: AES, or (g)lan? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drag\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Theip ar athainmni: %s\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Theip ar athainmni: %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Neamhbhail  \"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"Theip ar fhordheimhni GSSAPI.\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"Theip ar fhordheimhni SASL.\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"Theip ar fhordheimhni SASL.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Bosca poist  shrtil...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Norbh fhidir feidhm shrtla a aimsi! [seol tuairisc fhabht]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(gan bosca poist)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Nl an mhthair-theachtaireacht infheicthe san amharc srianta seo.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Nl an mhthair-theachtaireacht ar fil.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"oibrocht nialasach\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"deireadh an reatha choinnollaigh (no-op)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"amharc ar iatn tr sid mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"fach ar an iatn mar thacs\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Scornaigh taispeint na bhfophirteanna\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"tigh go bun an leathanaigh\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"athsheol teachtaireacht go hsideoir eile\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"roghnaigh comhad nua sa chomhadlann seo\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"fach ar chomhad\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"taispein ainm an chomhaid at roghnaithe faoi lthair\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"liostil leis an mbosca poist reatha (IMAP amhin)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"dliostil leis an mbosca poist reatha (IMAP amhin)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"\"\n\"scornaigh c acu gach bosca n bosca liostilte amhin a thaispentar \"\n\"(IMAP amhin)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"taispein na bosca le post nua\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"athraigh an chomhadlann\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"seiceil bosca do phost nua\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"ceangail comha(i)d leis an teachtaireacht seo\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"ceangail teachtaireacht(a) leis an teachtaireacht seo\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"cuir an liosta BCC in eagar\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"cuir an liosta CC in eagar\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"cuir cur sos an iatin in eagar\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"cuir transfer-encoding an iatin in eagar\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"iontril comhad ina sbhlfar cip den teachtaireacht seo\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"cuir an comhad le ceangal in eagar\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"cuir an rimse \\\"\\\" in eagar\\\"\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"cuir an teachtaireacht in eagar le ceanntsca\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"cuir an teachtaireacht in eagar\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"cuir an t-iatn in eagar le hiontril mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"cuir an rimse \\\"Reply-To\\\" in eagar\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"cuir an t-bhar teachtaireachta in eagar\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"cuir an liosta \\\"TO\\\" in eagar\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"cruthaigh bosca poist nua (IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"cuir content type an iatin in eagar\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"faigh cip shealadach d'iatn\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"rith ispell ar an teachtaireacht\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"cum iatn nua le hiontril mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"scornaigh ath-ionchd an iatin seo\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"sbhil an teachtaireacht seo chun  a sheoladh ar ball\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"athainmnigh/bog comhad ceangailte\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"seol an teachtaireacht\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"scornaigh idir inlne/iatn\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"\"\n\"scornaigh c acu a scriosfar comhad tar is  a sheoladh, n nach scriosfar\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"nuashonraigh eolas faoi ionchd an iatin\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"scrobh teachtaireacht i bhfillten\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"cipeil teachtaireacht go comhad/bosca poist\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"cruthaigh ailias do sheoltir\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"bog iontril go bun an scilein\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"bog iontril go lr an scilein\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"bog iontril go barr an scilein\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"dan cip dhchdaithe (text/plain)\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"dan cip dhchdaithe (text/plain) agus scrios\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"scrios an iontril reatha\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"scrios an bosca poist reatha (IMAP amhin)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"scrios gach teachtaireacht san fhoshnithe\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"scrios gach teachtaireacht sa snithe\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"taispein seoladh iomln an tseoltra\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"taispein teachtaireacht agus scornaigh na ceanntsca\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"taispein teachtaireacht\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"cuir an teachtaireacht amh in eagar\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"scrios an carachtar i ndiaidh an chrsra\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"bog an crsir aon charachtar amhin ar chl\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"bog an crsir go ts an fhocail\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"lim go ts na lne\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"bog tr na bosca isteach\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"comhlnaigh ainm comhaid n ailias\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"comhlnaigh seoladh le hiarratas\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"scrios an carachtar faoin chrsir\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"lim go deireadh an lne\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"bog an crsir aon charachtar amhin ar dheis\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"bog an crsir go deireadh an fhocail\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"scrollaigh sos trd an stair\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"scrollaigh suas trd an stair\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"scrios carachtair n chrsir go deireadh an lne\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"scrios carachtair n chrsir go deireadh an fhocail\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"scrios gach carachtar ar an lne\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"scrios an focal i ndiaidh an chrsra\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"cuir an chad charachtar eile clscrofa idir comhartha athfhriotail\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"malartaigh an carachtar faoin chrsir agus an ceann roimhe\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"scrobh an focal le ceannlitir\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"tiontaigh an focal go cs ochtair\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"tiontaigh an focal go cs uachtair\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"iontril ord muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"iontril masc comhaid\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"scoir an roghchlr seo\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"scag iatn le hord blaoisce\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"tigh go dt an chad iontril\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"scornaigh an bhratach 'important' ar theachtaireacht\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"seol teachtaireacht ar aghaidh le nta sa bhreis\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"roghnaigh an iontril reatha\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"seol freagra chuig gach faighteoir\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"scrollaigh sos leath de leathanach\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"scrollaigh suas leath de leathanach\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"an scilen seo\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"tigh go treoiruimhir\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"tigh go dt an iontril dheireanach\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"seol freagra chuig liosta sonraithe romhphoist\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"rith macra\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"cum teachtaireacht nua romhphoist\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"bris an snithe ina dh phirt\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"oscail fillten eile\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"oscail fillten eile sa mhd inlite amhin\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"glan bratach stdais  theachtaireacht\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"scrios teachtaireachta at comhoirinach le patrn\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"faigh romhphost n fhreastala IMAP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"faigh romhphost  fhreastala POP\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"tigh go dt an chad teachtaireacht\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"tigh go dt an teachtaireacht dheireanach\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"n taispein ach na teachtaireachta at comhoirinach le patrn\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"nasc teachtaireacht chlibeilte leis an cheann reatha\"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Nl aon bhosca le romhphost nua.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"lim go dt an chad teachtaireacht nua eile\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"lim go dt an chad teachtaireacht nua/neamhlite eile\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"lim go dt an chad fhoshnithe eile\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"tigh go dt an chad snithe eile\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"tigh go dt an chad teachtaireacht eile nach scriosta\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"lim go dt an chad teachtaireacht neamhlite eile\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"lim go mthair-theachtaireacht sa snithe\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"lim go dt an snithe roimhe seo\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"lim go dt an fhoshnithe roimhe seo\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"tigh go dt an teachtaireacht nach scriosta roimhe seo\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"lim go dt an teachtaireacht nua roimhe seo\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"lim go dt an teachtaireacht nua/neamhlite roimhe seo\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"lim go dt an teachtaireacht neamhlite roimhe seo\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"marcil an snithe reatha \\\"lite\\\"\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"marcil an fhoshnithe reatha \\\"lite\\\"\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"socraigh bratach stdais ar theachtaireacht\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"sbhil athruithe ar bhosca poist\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"clibeil teachtaireachta at comhoirinach le patrn\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"dscrios teachtaireachta at comhoirinach le patrn\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"dchlibeil teachtaireachta at comhoirinach le patrn\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"tigh go lr an leathanaigh\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"tigh go dt an chad iontril eile\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"scrollaigh aon lne sos\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"tigh go dt an chad leathanach eile\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"lim go bun na teachtaireachta\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"\"\n\"scornaigh c acu a thaispentar tacs athfhriotail n nach dtaispentar\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"gabh thar thacs athfhriotail\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"lim go barr na teachtaireachta\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"popa teachtaireacht/iatn go hord blaoisce\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"tigh go dt an iontril roimhe seo\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"scrollaigh aon lne suas\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"tigh go dt an leathanach roimhe seo\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"priontil an iontril reatha\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"b ag iarraidh seolta  chlr seachtrach\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"iarcheangail tortha an iarratais nua leis na tortha reatha\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"sbhil athruithe ar bhosca poist agus scoir\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"athghlaoigh teachtaireacht a bh curtha ar athl\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"glan an scilen agus ataispein\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{inmhenach}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"athainmnigh an bosca poist reatha (IMAP amhin)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"tabhair freagra ar theachtaireacht\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"sid an teachtaireacht reatha mar theimplad do cheann nua\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"sbhil teachtaireacht/iatn go comhad\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"dan cuardach ar shlonn ionadaochta\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"dan cuardach ar gcl ar shlonn ionadaochta\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"dan cuardach ars\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"dan cuardach ars, ach sa treo eile\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"scornaigh aibhsi an phatrin cuardaigh\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"rith ord i bhfobhlaosc\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"srtil teachtaireachta\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"srtil teachtaireachta san ord droim ar ais\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"clibeil an iontril reatha\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"cuir an chad fheidhm eile i bhfeidhm ar theachtaireachta clibeilte\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"\"\n\"cuir an chad fheidhm eile i bhfeidhm ar theachtaireachta clibeilte AMHIN\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"clibeil an fhoshnithe reatha\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"clibeil an snithe reatha\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"scornaigh bratach 'nua' ar theachtaireacht\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"scornaigh c acu an mbeidh an bosca athscrofa, n nach mbeidh\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"scornaigh c acu bosca poist n comhaid a bhrabhslfar\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"tigh go dt an barr\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"dscrios an iontril reatha\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"dscrios gach teachtaireacht sa snithe\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"dscrios gach teachtaireacht san fhoshnithe\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"taispein an uimhir leagain Mutt agus an dta\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"amharc ar iatn le hiontril mailcap, ms g\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"taispein iatin MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"taispein an cd at bainte le heochairbhr\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"taispein an patrn teorannaithe at i bhfeidhm\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"laghdaigh/leathnaigh an snithe reatha\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"laghdaigh/leathnaigh gach snithe\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"ceangail eochair phoibl PGP\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"taispein roghanna PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"seol eochair phoibl PGP\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"foraigh eochair phoibl PGP\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"amharc ar aitheantas sideora na heochrach\"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"seiceil le haghaidh pgp clasaiceach\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Glac leis an slabhra cruthaithe\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Iarcheangail athphostir leis an slabhra\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Ionsigh athphostir isteach sa slabhra\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Scrios athphostir as an slabhra\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Roghnaigh an ball roimhe seo n slabhra\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Roghnaigh an chad bhall eile n slabhra\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"seol an teachtaireacht tr shlabhra athphostir \\\"mixmaster\\\"\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"dan cip dhchriptithe agus scrios\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"dan cip dhchriptithe\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"bnaigh frsa() faire as cuimhne\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"bain na heochracha poibl le tacaocht amach\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"taispein roghanna S/MIME\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"Nl aon teachtaireacht nach scriosta.\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" san amharc teoranta seo\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"Nl aon teachtaireacht nach scriosta.\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"cuir an teachtaireacht in eagar\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"earrid i slonn\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Earrid inmhenach. Cuir in il do <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Rabhadh: Nor snodh cuid den teachtaireacht seo.\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Earrid: teachtaireacht mhchumtha PGP/MIME! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Inneall GPGME in sid, c nach bhfuil gpg-agent ag rith\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"\"\n#~ \"Earrid: Nl aon pharaimadar prtacail le haghaidh multipart/encrypted!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"Aitheantas %s gan for. An mian leat  a sid le haghaidh %s?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Bain sid as aitheantas (neamhiontaofa!) %s le haghaidh %s?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Bain sid as aitheantas %s le haghaidh %s ?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Rabhadh: Go dt seo nor chuir t muinn in aitheantas %s. (eochair ar \"\n#~ \"bith le leanint ar aghaidh)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"Gan aschur  OpenSSL..\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Rabhadh: Teastas idirmhenach gan aimsi.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Glan\"\n\n#~ msgid \"esabifc\"\n#~ msgstr \"csmaifn\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Gan patrn cuardaigh.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Cuardach droim ar ais: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Cuardaigh: \"\n\n#~ msgid \"            created: \"\n#~ msgstr \"          cruthaithe: \"\n\n#~ msgid \"*BAD* signature claimed to be from: \"\n#~ msgstr \"*DROCH*shni a dhearbhatear a bheith : \"\n\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Earrid agus an sni  sheiceil\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"Seiceil Teastais SSL\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"Seiceil Teastais TLS/SSL\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Ainmspsanna  bhfil...\"\n\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"sid: mutt [-nRyzZ] [-e <ord>] [-F <comhad>] [-m <cinel>] [-f \"\n#~ \"<comhad>]\\n\"\n#~ \"       mutt [-nR] [-e <ord>] [-F <comhad>] -Q <iarr> [-Q <iarr>] [...]\\n\"\n#~ \"       mutt [-nR] [-e <ord>] [-F <comhad>] -A <ailias> [-A <ailias>] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [-nR] [-e <ord>] [-F <comhad>] -D\\n\"\n#~ \"       mutt [-nx] [-e <ord>] [-a <comhad>] [-F <comhad>] [-H <comhad>] [-\"\n#~ \"i <comhad>] [-s <bhar>] [-b <seoladh>] [-c <seoladh>] <seoladh> [...]\\n\"\n#~ \"       mutt [-n] [-e <ord>] [-F <comhad>] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"N fidir an bhratach 'important' a athr ar fhreastala POP.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"N fidir teachtaireacht a chur in eagar ar fhreastala POP.\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Earrid mharfach.  Is as sioncrn lon na dteachtaireachta!\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"%s  lamh... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Teachtaireachta  scrobh... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"%s  lamh... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"PGP  thos...\"\n\n#~ msgid \"Checking mailbox subscriptions\"\n#~ msgstr \"Sntiis bhosca poist  seiceil\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"Theip ar dhnadh\"\n\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, \"\n#~ \"USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright  1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright  1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright  1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright  1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright  1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright  1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright  2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Thug go leor daoine eile cd, ceartchin, agus comhairle go leor dinn.\\n\"\n#~ \"\\n\"\n#~ \"Is saorbhogearra  an romhchlr seo; is fidir leat  a scaipeadh agus/\"\n#~ \"n\\n\"\n#~ \"a athr de rir na gcoinnollacha den GNU General Public License mar at\\n\"\n#~ \"foilsithe ag an Free Software Foundation; faoi leagan 2 den cheadnas,\\n\"\n#~ \"n (ms mian leat) aon leagan nos dana.\\n\"\n#~ \"\\n\"\n#~ \"Scaiptear an romhchlr seo le sil go mbeidh s isiil,\\n\"\n#~ \"ach GAN AON BARNTA; go fi gan an barntas intuigthe\\n\"\n#~ \"d'INDOLTACHT n FEILINACHT D'FHEIDHM AR LEITH.  Fach ar an\\n\"\n#~ \"GNU General Public License chun nos m sonra a fhil.\\n\"\n#~ \"\\n\"\n#~ \"Ba chir go mbeife tar is cip den GNU General Public License a fhil \"\n#~ \"in\\n\"\n#~ \"ineacht leis an romhchlr seo; mura bhfuair, scrobh chuig an Free \"\n#~ \"Software\\n\"\n#~ \"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, \"\n#~ \"USA.\\n\"\n\n#~ msgid \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (f)orget it? \"\n#~ msgstr \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, n (n) dan? \"\n\n#~ msgid \"12345f\"\n#~ msgstr \"12345n\"\n\n#~ msgid \"Unexpected response received from server: %s\"\n#~ msgstr \"Fuarthas freagra gan choinne n fhreastala: %s\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"N fidir a chur le bosca IMAP ag an fhreastala seo\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"An chad iontril.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"An iontril dheireanach.\"\n"
  },
  {
    "path": "po/gl.po",
    "content": "# GALICIAN TRANSLATION OF MUTT\n# Copyright (C) 1999 Roberto Suarez Soto <ask4it@bigfoot.com>\n# Roberto Suarez Soto <ask4it@bigfoot.com>, 1999-2001.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt 1.3\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2001-04-22 22:05+0200\\n\"\n\"Last-Translator: Roberto Suarez Soto <ask4it@bigfoot.com>\\n\"\n\"Language-Team: Galician <trasno@ceu.fi.udc.es>\\n\"\n\"Language: gl\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=iso-8859-1\\n\"\n\"Content-Transfer-Encoding: 8-bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Nome de usuario en %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Contrasinal para %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Sar\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Borrar\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Recuperar\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Seleccionar\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Axuda\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Non ts aliases definidas!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Aliases\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Alias como: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Xa ts un alias definido con ese nome!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Enderezo: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Nome persoal: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Aceptar?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Gardar a ficheiro: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Erro lendo mensaxe!\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Alias engadido.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Erro intentando ver ficheiro\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Non se puido atopa-lo nome, continuar?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"A entrada \\\"compose\\\" no ficheiro Mailcap require %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Erro executando \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Fallo  abri-lo ficheiro para analiza-las cabeceiras.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Fallo  abri-lo ficheiro para quitar as cabeceiras\"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \"Fallo  abri-lo ficheiro para analiza-las cabeceiras.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"\"\n\"Non hai entrada \\\"compose\\\"  para %sno ficheiro Mailcap, creando\\n\"\n\" ficheiro vaco.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"A entrada \\\"Edit\\\" do ficheiro Mailcap require %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Non hai entrada \\\"edit\\\" no ficheiro Mailcap para %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"\"\n\"Non se atopou ningunha entrada coincidente no ficheiro mailcap.Vendo como \"\n\"texto\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"Tipo MIME non definido. Non se pode ver-lo ficheiro adxunto.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Non se puido crea-lo filtro\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Adxuntos\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Adxuntos\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Non podo crea-lo filtro\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Fallo de escritura!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Non lle sei cmo imprimir iso!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Directorio\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Mscara\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s non  un directorio.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Buzns [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Subscrito [%s], mscara de ficheiro: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Directorio [%s], mscara de ficheiro: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Non  posible adxuntar un directorio\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Non hai ficheiros que coincidan coa mscara\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"A operacin 'Crear' est soportada s en buzns IMAP\"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"A operacin 'Crear' est soportada s en buzns IMAP\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"A operacin 'Borrar' est soportada s en buzns IMAP\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"Non se puido crea-lo filtro\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Seguro de borra-lo buzn \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Buzn borrado.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Buzn non borrado.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Cambiar directorio a: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Erro lendo directorio.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Mscara de ficheiro: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Ordear inversamente por (d)ata, (a)lfabeto, (t)amao ou (s)en orden?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Ordear por (d)ata, (a)lfabeto, (t)amao ou (s)en orden?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dats\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Novo nome de ficheiro: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Non  posible ver un directorio\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Erro intentando ver ficheiro\"\n\n#: buffy.c:504\n#, fuzzy\nmsgid \"New mail in \"\nmsgstr \"Novo correo en %s.\"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: color non soportado polo terminal\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: non hai tal color\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: non hai tal obxeto\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: comando vlido s para o obxeto \\\"ndice\\\"\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: parmetros insuficientes\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Faltan parmetros.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: parmetros insuficientes\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: parmetros insuficientes\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: non hai tal atributo\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"parmetros insuficientes\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"demasiados parmetros\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"colores por defecto non soportados\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Verificar firma PGP?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Non foi posible crear o ficheiro temporal!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Non foi posible crea-lo filtro de visualizacin\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Non foi posible copia-la mensaxe.\"\n\n#: commands.c:189\n#, fuzzy\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"Sinatura S/MIME verificada con xito.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\n#, fuzzy\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"Non foi posible verifica-la sinatura S/MIME.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"Sinatura PGP verificada con xito.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"Non foi posible verifica-la sinatura PGP.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Comando: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Rebotar mensaxe a: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Rebotar mensaxes marcadas a: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Erro analizando enderezo!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Rebotar mensaxe a %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Rebotar mensaxes a %s\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Message not bounced.\"\nmsgstr \"Mensaxe rebotada.\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Messages not bounced.\"\nmsgstr \"Mensaxes rebotadas.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Mensaxe rebotada.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Mensaxes rebotadas.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\n#, fuzzy\nmsgid \"Can't create filter process\"\nmsgstr \"Non podo crea-lo filtro\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Canalizar  comando: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Non foi definido ningn comando de impresin.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Imprimir mensaxe?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Imprimir mensaxes marcadas?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Mensaxe impresa\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Mensaxes impresas\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Non foi posible imprimi-la mensaxe\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Non foi posible imprimi-las mensaxes\"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Ordear-inv (d)ata/d(e)/(r)ecb/(t)ema/(p)ara/(f)o/(n)ada/t(a)m/p(u)nt: \"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"Ordear (d)ata/d(e)/(r)ecb/(t)ema/(p)ara/(f)o/(n)ada/t(a)m/p(u)nt: \"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"dertpfnau\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Comando de shell: \"\n\n#: commands.c:741\n#, fuzzy, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"%s%s  buzn\"\n\n#: commands.c:742\n#, fuzzy, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"%s%s  buzn\"\n\n#: commands.c:743\n#, fuzzy, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"%s%s  buzn\"\n\n#: commands.c:744\n#, fuzzy, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"%s%s  buzn\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s%s  buzn\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s%s  buzn\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" marcado\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Copiando a %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Tipo de contido cambiado a %s...\"\n\n#: commands.c:950\n#, fuzzy, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"O xogo de caracteres foi cambiado a %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"\"\n\n#\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Non hai ficheiros adxuntos.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Enviar\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Cancelar\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Adxuntar ficheiro\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Descrip\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"O marcado non est soportado.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Firmar, Encriptar\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Encriptar\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Firmar\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"(seguir)\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" firmar como: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<por defecto>\"\n\n#: compose.c:165\n#, fuzzy\nmsgid \"Encrypt with: \"\nmsgstr \"Encriptar\"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] xa non existe!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] modificado. Actualizar codificacin?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Adxuntos\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Non podes borra-lo nico adxunto.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Adxuntando ficheiros seleccionados ...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Non foi posible adxuntar %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Abrir buzn do que adxuntar mensaxe\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Imposible bloquea-lo buzn!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Non hai mensaxes nese buzn.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Marca as mensaxes que queres adxuntar!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Non foi posible adxuntar!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"A recodificacin s afecta s adxuntos de texto.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"O adxunto actual non ser convertido.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"O adxunto actual ser convertido\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Codificacin invlida.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Gardar unha copia desta mensaxe?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Cambiar nome a: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, fuzzy, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Non foi atopado: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Novo ficheiro: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type  da forma base/subtipo\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Non coezo  Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Non fun capaz de crea-lo ficheiro %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"O que temos aqu  un fallo  face-lo adxunto\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Pospr esta mensaxe?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Escribir mensaxe  buzn\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Escribindo mensaxe a %s...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Mensaxe escrita.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Non podo crea-lo ficheiro temporal\"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"O certificado do servidor expirou\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"SSL non est accesible.\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \"Fingerprint: %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Crear %s?\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Erro na lia de comando: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin dos datos asinados --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Erro: fin de ficheiro inesperado! --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- COMEZA A MESAXE PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- COMEZA O BLOQUE DE CHAVE PBLICA PGP --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- COMEZA A MESAXE FIRMADA CON PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\n#, fuzzy\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- FIN DA MESAXE PGP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- FIN DO BLOQUE DE CHAVE PBLICA PGP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\n#, fuzzy\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- FIN DA MESAXE FIRMADA CON PGP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erro: non se atopou o comezo da mensaxe PGP! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Erro: non foi posible crea-lo ficheiro temporal! --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os datos a continuacin estn encriptados con PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os datos a continuacin estn encriptados con PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin dos datos con encriptacin PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\n#, fuzzy\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin dos datos con encriptacin PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"Sinatura PGP verificada con xito.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Non foi posible copia-la mensaxe.\"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os datos a continuacin estn asinados --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os datos a continuacin estn encriptados con S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin dos datos asinados --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin dos datos con encriptacin S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"Mes invlido: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Mes invlido: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Mes invlido: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"Encriptar\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \"Certificado gardado\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Key ID: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"Sar  \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"Conectando con %s...\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Erro  conectar c servidor: %s\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Erro na lia de comando: %s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Key ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"O login fallou.\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Tdalas chaves coincidintes estn marcadas como expiradas/revocadas.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Sar  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Seleccionar  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Comprobar chave  \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Chaves S/MIME coincidintes con \\\"%s\\\"\"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"Chaves PGP coincidintes con \\\"%s\\\"\"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"Chaves S/MIME coincidintes con \\\"%s\\\"\"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"Chaves PGP coincidintes con \\\"%s\\\"\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, fuzzy, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s [%s]\\n\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, fuzzy, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s [%s]\\n\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Esta chave non pode ser usada: expirada/deshabilitada/revocada.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\n#, fuzzy\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"Este ID expirou/foi deshabilitado/foi revocado\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\n#, fuzzy\nmsgid \"ID is not valid.\"\nmsgstr \"Este ID non  de confianza.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\n#, fuzzy\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Este ID  de confianza marxinal.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Est seguro de querer usa-la chave?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Buscando chaves que coincidan con \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Usa-lo keyID = \\\"%s\\\" para %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Introduza keyID para %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Introduza o key ID: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"erro no patrn en: %s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Chave PGP %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"efcao\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"efcao\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"efcao\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"efcao\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Firmar como: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"Fallo  abri-lo ficheiro para analiza-las cabeceiras.\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \"\"\n\n#: crypt.c:74\n#, fuzzy, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Sada PGP a continuacin (hora actual: %c) --]\\n\"\n\n#: crypt.c:89\n#, fuzzy\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Contrasinal PGP esquecido.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Chamando  PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Mensaxe non enviada.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"[-- Erro: protocolo multiparte/asinado %s descoecido --]\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"[-- Erro: estructura multiparte/asinada inconsistente --]\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Atencin: non  posible verificar sinaturas %s/%s --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os datos a continuacin estn asinados --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Atencin: non se atoparon sinaturas. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin dos datos asinados --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Chamando  S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"s\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"non\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Sar de Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"erro descoecido\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Pulsa calquera tecla para seguir...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \"('?' para lista): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Non hai buzns abertos.\"\n\n#\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Non hai mensaxes.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"O buzn  de s lectura.\"\n\n#\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funcin non permitida no modo \\\"adxuntar-mensaxe\\\".\"\n\n#: curs_main.c:56\n#, fuzzy\nmsgid \"No visible messages.\"\nmsgstr \"Non hai novas mensaxes\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Non se pode cambiar a escritura un buzn de s lectura!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Os cambios  buzn sern escritos  sada da carpeta.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Os cambios  carpeta non sern gardados.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Sar\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Gardar\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Nova\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Responder\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grupo\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"O buzn foi modificado externamente. Os indicadores poden ser errneos\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Novo correo neste buzn.\"\n\n#: curs_main.c:578\n#, fuzzy\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"O buzn foi modificado externamente. Os indicadores poden ser errneos\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Non hai mensaxes marcadas.\"\n\n#: curs_main.c:731 menu.c:907\n#, fuzzy\nmsgid \"Nothing to do.\"\nmsgstr \"Conectando con %s...\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Saltar  mensaxe: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"O parmetro debe ser un nmero de mensaxe.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Esa mensaxe non  visible.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Nmero de mensaxe invlido.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Non hai mensaxes recuperadas.\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Borrar as mensaxes que coincidan con: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Non hai patrn limitante efectivo.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Lmite: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Limitar s mensaxes que coincidan con: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Sar de Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Marcar as mensaxes que coincidan con: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Non hai mensaxes recuperadas.\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Recuperar as mensaxes que coincidan con: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Desmarcar as mensaxes que coincidan con: \"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Pechando conexin  servidor IMAP...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Abrir buzn en modo de s lectura\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Abrir buzn\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Non hai buzns con novo correo.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s non  un buzn.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Sar de Mutt sen gardar?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Enfiamento non habilitado.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"gardar esta mensaxe para mandar logo\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Est na ltima mensaxe.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Non hai mensaxes recuperadas.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Est na primeira mensaxe.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"A bsqueda volveu  principio.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"A bsqueda volveu  final.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"A mensaxe pai non  visible na vista limitada.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Non hai novas mensaxes\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"A mensaxe pai non  visible na vista limitada.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Non hai mensaxes sen ler\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"amosar unha mensaxe\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Non hai mis fos\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Est no primeiro fo\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"O fo contn mensaxes sen ler.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"Non hai mensaxes recuperadas.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Non foi posible escribi-la mensaxe\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"saltar  mensaxe pai no fo\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"Non hai mensaxes recuperadas.\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tinsertar unha lia comezando cun nico ~\\n\"\n\"~b usuarios\\tengadir usuarios  campo Bcc:\\n\"\n\"~c usuarios\\tengadir usuarios  campo Cc:\\n\"\n\"~f mensaxes\\tincluir mensaxes\\n\"\n\"~F mensaxes\\tmesmo que ~f, mais tamn incluir cabeceiras\\n\"\n\"~h\\t\\tedita-la cabeceira da mensaxe\\n\"\n\"~m mensaxes\\tincluir e citar mensaxes\\n\"\n\"~M mensaxes\\tcomo ~m, mais tamn incluir cabeceiras\\n\"\n\"~p\\t\\timprimi-la mensaxe\\n\"\n\"~q\\t\\tescribir ficheiro e sar do editor\\n\"\n\"~r ficheiro\\t\\tler un ficheiro  editor\\n\"\n\"~t usuarios\\tengadir usuarios  campo Para: \\n\"\n\"~u\\t\\treedita-la lia anterior\\n\"\n\"~v\\t\\tedita-la mensaxe c editor $visual\\n\"\n\"~w ficheiro\\t\\tescribir mensaxes  ficheiro\\n\"\n\"~x\\t\\tcancelar cambios e sar do editor\\n\"\n\"~?\\t\\testa mensaxe\\n\"\n\".\\t\\tnunha lia, de seu, acaba a entrada\\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\tinsertar unha lia comezando cun nico ~\\n\"\n\"~b usuarios\\tengadir usuarios  campo Bcc:\\n\"\n\"~c usuarios\\tengadir usuarios  campo Cc:\\n\"\n\"~f mensaxes\\tincluir mensaxes\\n\"\n\"~F mensaxes\\tmesmo que ~f, mais tamn incluir cabeceiras\\n\"\n\"~h\\t\\tedita-la cabeceira da mensaxe\\n\"\n\"~m mensaxes\\tincluir e citar mensaxes\\n\"\n\"~M mensaxes\\tcomo ~m, mais tamn incluir cabeceiras\\n\"\n\"~p\\t\\timprimi-la mensaxe\\n\"\n\"~q\\t\\tescribir ficheiro e sar do editor\\n\"\n\"~r ficheiro\\t\\tler un ficheiro  editor\\n\"\n\"~t usuarios\\tengadir usuarios  campo Para: \\n\"\n\"~u\\t\\treedita-la lia anterior\\n\"\n\"~v\\t\\tedita-la mensaxe c editor $visual\\n\"\n\"~w ficheiro\\t\\tescribir mensaxes  ficheiro\\n\"\n\"~x\\t\\tcancelar cambios e sar do editor\\n\"\n\"~?\\t\\testa mensaxe\\n\"\n\".\\t\\tnunha lia, de seu, acaba a entrada\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: nmero de mensaxe non vlido.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Un '.' de seu nunha lia remata a mensaxe)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Non hai buzn.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"A mensaxe contn:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(seguir)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"falta o nome do ficheiro.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Non hai lias na mensaxe.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: comando de editor descoecido (~? para axuda)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"Non foi posible crea-la carpeta temporal: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"Non foi posible crea-lo buzn temporal: %s\"\n\n#: editmsg.c:110\n#, fuzzy, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"Non foi posible crea-lo buzn temporal: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"A mensaxe est valeira!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Mensaxe non modificada.\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Non foi posible abri-lo ficheiro da mensaxe: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Non foi posible engadir  carpeta: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Erro. Conservando ficheiro temporal: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Pr indicador\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Limpar indicador\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Erro: Non foi posible amosar ningunha parte de Multipart/\"\n\"Alternative!--]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Adxunto #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Tipo: %s/%s, Codificacin: %s, Tamao: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Automostra usando %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Chamando  comando de automostra: %s\"\n\n#: handler.c:1366\n#, fuzzy, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- o %s --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Automostra da stderr de %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"[-- Erro: mensaxe/corpo externo non ten parmetro \\\"access-type\\\"--]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Este adxunto %s/%s \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(tamao %s bytes) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"foi borrado --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- o %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- nome: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, fuzzy, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Este adxunto %s/%s \"\n\n#: handler.c:1500\n#, fuzzy\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- Este adxunto %s/%s non est incluido --]\\n\"\n\"[-- e a fonte externa indicada expirou--]\\n\"\n\n#: handler.c:1518\n#, fuzzy, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"\"\n\"[-- Este adxunto %s/%s non est incluido, --]\\n\"\n\"[-- e o \\\"access-type\\\" %s indicado non est soportado --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Non foi posible abri-lo ficheiro temporal!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Erro: multipart/signed non ten protocolo.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Este adxunto %s/%s \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s non est soportado \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(use '%s' para ver esta parte)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(cmpre que 'view-attachments' est vinculado a unha tecla!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: non foi posible adxuntar ficheiro\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ERRO: por favor, informe deste fallo\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<DESCOECIDO>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Vnculos xerais:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Funcins sen vnculo:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Axuda sobre %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Non  posible facer 'unhook *' dentro doutro hook.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: tipo descoecido: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: non  posible borrar un %s dende dentro dun %s\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\n#, fuzzy\nmsgid \"No authenticators available\"\nmsgstr \"Autenticacin SASL fallida.\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Autenticando como annimo ...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Autenticacin annima fallida.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Autenticando (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"Autenticacin CRAM-MD5 fallida.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Autenticando (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"Autenticacin GSSAPI fallida.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN deshabilitado neste servidor.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Comezando secuencia de login ...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"O login fallou.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, fuzzy, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Autenticando (APOP)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"Autenticacin SASL fallida.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Recollendo lista de carpetas...\"\n\n#: imap/browse.c:189\n#, fuzzy\nmsgid \"No such folder\"\nmsgstr \"%s: non hai tal color\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Crear buzn:\"\n\n#: imap/browse.c:283 imap/browse.c:338\n#, fuzzy\nmsgid \"Mailbox must have a name.\"\nmsgstr \"O buzn non cambiou.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Buzn creado.\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Crear buzn:\"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"O login fallou.\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"Buzn creado.\"\n\n#: imap/command.c:446\n#, fuzzy\nmsgid \"Mailbox closed\"\nmsgstr \"Buzn borrado.\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"O login fallou.\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Pechando conexin con %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Este servidor IMAP  moi vello. Mutt non traballa con el.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Usar conexin segura con TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"\"\n\n#: imap/imap.c:459 pop_lib.c:336\n#, fuzzy\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Chave da sesin encriptada\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Seleccionando %s...\"\n\n#: imap/imap.c:756\n#, fuzzy\nmsgid \"Error opening mailbox\"\nmsgstr \"Erro cando se estaba a escribi-lo buzn!\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Crear %s?\"\n\n#: imap/imap.c:1183\n#, fuzzy\nmsgid \"Expunge failed\"\nmsgstr \"O login fallou.\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Marcando %d mensaxes borradas ...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Gardando indicadores de estado da mensaxe... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"Erro analizando enderezo!\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Borrando mensaxes do servidor...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\n#, fuzzy\nmsgid \"Bad mailbox name\"\nmsgstr \"Crear buzn:\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Subscribindo a %s...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Borrando a subscripcin con %s...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Subscribindo a %s...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Borrando a subscripcin con %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Non foi posible recoller cabeceiras da versin de IMAP do servidor\"\n\n#: imap/message.c:108\n#, fuzzy, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Non foi posible crear o ficheiro temporal!\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"Recollendo cabeceiras de mensaxes... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"Recollendo cabeceiras de mensaxes... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Recollendo mensaxe...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"O ndice de mensaxes  incorrecto. Tente reabri-lo buzn.\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"Enviando mensaxe ...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Copiando %d mensaxes a %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Copiando mensaxe %d a %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Seguir?\"\n\n#\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Non dispoible neste men.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \"marcar mensaxes coincidintes cun patrn\"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"quitar marca a mensaxes coincidintes cun patrn\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"edita-la descripcin do adxunto\"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"edita-la descripcin do adxunto\"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"edita-la descripcin do adxunto\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: sen enderezo\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"campo de cabeceira invlido\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: mtodo de ordeacin descoecido\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): erro en regexp: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: variable descoecida\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"prefixo ilegal con reset\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"valor ilegal con reset\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s est activada\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s non est activada\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Da do mes invlido: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: tipo de buzn invlido\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: valor invlido\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: valor invlido\"\n\n#: init.c:2183\n#, fuzzy, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: tipo descoecido\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: tipo descoecido\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Erro en %s, lia %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: erros en %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: a lectura foi abortada por haber demasiados erros in %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: erro en %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: demasiados parmetros\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: comando descoecido\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Erro na lia de comando: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"non foi posible determina-lo directorio \\\"home\\\"\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"non foi posible determina-lo nome de usuario\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"non foi posible determina-lo nome de usuario\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"parmetros insuficientes\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Bucle de macro detectado.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"A tecla non est vinculada.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"A tecla non est vinculada. Pulsa '%s' para axuda.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: demasiados parmetros\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: non hai tal men\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"secuencia de teclas nula\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: demasiados argumentos\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: funcin descoecida\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: secuencia de teclas baleira\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: demasiados parmetros\"\n\n#: keymap.c:1091\n#, fuzzy\nmsgid \"exec: no arguments\"\nmsgstr \"exec: parmetros insuficientes\"\n\n#: keymap.c:1111\n#, fuzzy, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: funcin descoecida\"\n\n#: keymap.c:1132\n#, fuzzy\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Introduza keyID para %s: \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Memoria agotada!\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Para prse en contacto cs desenvolvedores, manda unha mensaxe a <mutt-\"\n\"dev@mutt.org>.\\n\"\n\"Para informar dun fallo, use a utilidade flea(1).\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-9 de Michael R. Elkins and others.\\n\"\n\"Mutt vn sen NINGN TIPO DE GARANTIA; para ve-los detalles, escriba `mutt -\"\n\"vv'.\\n\"\n\"Mutt  software libre, e vostede  benvido cando desexe redistribuilo \\n\"\n\"baixo certas condicins; escriba `mutt -vv' para ve-losdetalles.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"uso: mutt [ -nRzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f <file> ]\\n\"\n\"       mutt [ -nx ] [ -e <cmd> ] [ -a <ficheiro> ] [ -F <ficheiro> ]\\n\"\n\" [ -H <ficheiro> ] [ -i <ficheiro> ] [ -s <tema> ] [ -b <enderz> ] [ -c \"\n\"<enderz> ] <enderz> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <cmd> ] [ -F <ficheiro> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"options:\\n\"\n\"  -a <ficheiro>\\tadxuntar un ficheiro  mensaxe\\n\"\n\"  -b <enderezo>\\tespecificar un enderezo para carbon-copy cego (BCC)\\n\"\n\"  -c <enderezo>\\tespecificar un enderezo para carbon-copy (CC)\\n\"\n\"  -e <comando>\\tespecificar un comando a executar despois do inicio\\n\"\n\"  -f <ficheiro>\\tespecificar que buzn ler\\n\"\n\"  -F <ficheiro>\\tespecificar un ficheiro muttrc alternativo\\n\"\n\"  -H <ficheiro>\\tespecificar un ficheiro borrador do que le-la cabeceira\\n\"\n\"  -i <ficheiro>\\tespecificar un ficheiro que Mutt deber incluir na \"\n\"resposta\\n\"\n\"  -m <tipo>\\tespecificar un tipo de buzn por defecto\\n\"\n\"  -n\\t\\tfai que Mutt non lea o Muttrc do sistema\\n\"\n\"  -p\\t\\teditar unha mensaxe posposta\\n\"\n\"  -R\\t\\tabrir un buzn en modo de s lectura\\n\"\n\"  -s <tema>\\tespecificar un tema (debe ir entre comillas se ten espacios)\\n\"\n\"  -v\\t\\tamosa-la versin e las definicins en tempo de compilacin\\n\"\n\"  -x\\t\\tsimula-lo modo de envo de mailx\\n\"\n\"  -y\\t\\tseleccionar un buzn especificado na sa lista de buzns\\n\"\n\"  -z\\t\\tsalir de contado se non quedan mensaxes no buzn\\n\"\n\"  -Z\\t\\tabri-la primeira carpeta con algunha mensaxe nova, sar de contado \"\n\"si non hai tal\\n\"\n\"  -h\\t\\testa mensaxe de axuda\"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"uso: mutt [ -nRzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f <file> ]\\n\"\n\"       mutt [ -nx ] [ -e <cmd> ] [ -a <ficheiro> ] [ -F <ficheiro> ]\\n\"\n\" [ -H <ficheiro> ] [ -i <ficheiro> ] [ -s <tema> ] [ -b <enderz> ] [ -c \"\n\"<enderz> ] <enderz> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <cmd> ] [ -F <ficheiro> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"options:\\n\"\n\"  -a <ficheiro>\\tadxuntar un ficheiro  mensaxe\\n\"\n\"  -b <enderezo>\\tespecificar un enderezo para carbon-copy cego (BCC)\\n\"\n\"  -c <enderezo>\\tespecificar un enderezo para carbon-copy (CC)\\n\"\n\"  -e <comando>\\tespecificar un comando a executar despois do inicio\\n\"\n\"  -f <ficheiro>\\tespecificar que buzn ler\\n\"\n\"  -F <ficheiro>\\tespecificar un ficheiro muttrc alternativo\\n\"\n\"  -H <ficheiro>\\tespecificar un ficheiro borrador do que le-la cabeceira\\n\"\n\"  -i <ficheiro>\\tespecificar un ficheiro que Mutt deber incluir na \"\n\"resposta\\n\"\n\"  -m <tipo>\\tespecificar un tipo de buzn por defecto\\n\"\n\"  -n\\t\\tfai que Mutt non lea o Muttrc do sistema\\n\"\n\"  -p\\t\\teditar unha mensaxe posposta\\n\"\n\"  -R\\t\\tabrir un buzn en modo de s lectura\\n\"\n\"  -s <tema>\\tespecificar un tema (debe ir entre comillas se ten espacios)\\n\"\n\"  -v\\t\\tamosa-la versin e las definicins en tempo de compilacin\\n\"\n\"  -x\\t\\tsimula-lo modo de envo de mailx\\n\"\n\"  -y\\t\\tseleccionar un buzn especificado na sa lista de buzns\\n\"\n\"  -z\\t\\tsalir de contado se non quedan mensaxes no buzn\\n\"\n\"  -Z\\t\\tabri-la primeira carpeta con algunha mensaxe nova, sar de contado \"\n\"si non hai tal\\n\"\n\"  -h\\t\\testa mensaxe de axuda\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Opcins de compilacin:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Error iniciando terminal.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Depurando a nivel %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"\"\n\"A opcin \\\"DEBUG\\\" non foi especificada durante a compilacin. Ignorado.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s non existe. Desexa crealo?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Non foi posible crear %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Non foi especificado ningn destinatario.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: non foi posible adxuntar ficheiro.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Non hai buzns con novo correo.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Non se definiron buzns para correo entrante.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"O buzn est valeiro.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Lendo %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"O buzn est corrupto!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"O buzn foi corrompido!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Erro fatal! Non foi posible reabri-lo buzn!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Imposible bloquea-lo buzn!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: buzn modificado, mais non hai mensaxes modificadas! (informe deste \"\n\"fallo)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Escribindo %s...\"\n\n#: mbox.c:962\n#, fuzzy\nmsgid \"Committing changes...\"\nmsgstr \"Compilando patrn de bsqueda...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Fallou a escritura! Gardado buzn parcialmente a %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Non foi posible reabri-lo buzn!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Reabrindo buzn...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Saltar a: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Nmero de ndice invlido.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Non hai entradas.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Non  posible moverse mis abaixo.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Non  posible moverse mis arriba.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Est na primeira pxina.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Est na derradeira pxina.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Est na derradeira entrada.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Est na primeira entrada.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Bsqueda de: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Bsqueda inversa de: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Non se atopou.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Non hai entradas marcadas.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"A bsqueda non est implementada neste men.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"O salto non est implementado nos dilogos.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"O marcado non est soportado.\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Seleccionando %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Non foi posible envia-la mensaxe.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"erro no patrn en: %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, fuzzy, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Fallou a conexin con %s.\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL non est accesible.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"O comando de preconexin fallou.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, fuzzy, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Erro  conectar c servidor: %s\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Buscando %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Non foi posible atopa-lo servidor \\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Conectando con %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Non foi posible conectar con %s (%s)\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Non hai entropa abondo no seu sistema\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Enchendo pozo de entropa: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s ten permisos inseguros.\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL foi deshabilitado debido  falta de entropa.\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"\"\n\n#: mutt_ssl.c:418\n#, fuzzy, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"O login fallou.\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Non foi posible obter un certificado do outro extremo\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"Conectando mediante SSL usando %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Descoecido\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[imposible calcular]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[ data incorrecta ]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"O certificado do servidor non  anda vlido\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"O certificado do servidor expirou\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Non foi posible obter un certificado do outro extremo\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Non foi posible obter un certificado do outro extremo\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Certificado gardado\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Este certificado pertence a:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Este certificado foi emitido por:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Este certificado  vlido\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   de %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     a %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Fingerprint: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r)exeitar, aceptar (e)sta vez, (a)ceptar sempre\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"rea\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r)exeitar, aceptar (e)sta vez\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"re\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Atencin: non foi posible garda-lo certificado\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Certificado gardado\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"Conectando mediante SSL usando %s (%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Error iniciando terminal.\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Fingerprint: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Fingerprint: %s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"O certificado do servidor non  anda vlido\"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"O certificado do servidor expirou\"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"O certificado do servidor expirou\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\n#, fuzzy\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"O certificado do servidor non  anda vlido\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \"Certificado gardado\"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Conectando con %s...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Erro  conectar c servidor: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\n#, fuzzy\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"O ficheiro  un directorio, gardar nel?\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"O ficheiro  un directorio, gardar nel?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Ficheiro no directorio: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"O ficheiro existe, (s)obreescribir, (e)ngadir ou (c)ancelar?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"sec\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Non foi posible garda-la mensaxe no buzn POP.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"engadir mensaxes a %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s non  un buzn!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Excedeuse a conta de bloqueos, borrar bloqueo para %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Non se pode bloquear %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Tempo de espera excedido cando se tentaba face-lo bloqueo fcntl!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Agardando polo bloqueo fcntl... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Tempo de espera excedido cando se tentaba face-lo bloqueo flock!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Agardando polo intento de flock... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Non foi posible bloquear %s.\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Non foi posible sincroniza-lo buzn %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Mover mensaxes lidas a %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Purgar %d mensaxe marcada como borrada?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Purgar %d mensaxes marcadas como borradas?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Movendo mensaxes lidas a %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"O buzn non cambiou.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d conservados, %d movidos, %d borrados.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d conservados, %d borrados.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Pulse '%s' para cambiar a modo escritura\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Use 'toggle-write' para restablece-lo modo escritura!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"O buzn est marcado como non escribible. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Buzn marcado para comprobacin.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Non foi posible escribi-la mensaxe\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"PxAnt\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"SegPx\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Ver adxunto\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Seguinte\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Amosase o final da mensaxe.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Amosase o principio da mensaxe.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Estase a amosa-la axuda\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Non hai mis texto citado.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Non hai mis texto sen citar despois do texto citado.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"A mensaxe multiparte non ten parmetro \\\"boundary\\\"!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Erro na expresin: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"erro na expresin\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Da do mes invlido: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Mes invlido: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Data relativa incorrecta: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"erro no patrn en: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"falta un parmetro\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"parntese sen contraparte: %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: comando invlido\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: non est soportado neste modo\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"falta un parmetro\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"parntese sen contraparte: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"patrn valeiro\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"erro: operador descoecido %d (informe deste erro).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Compilando patrn de bsqueda...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Executando comando nas mensaxes coincidintes...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Non hai mensaxes que coincidan co criterio.\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"Gardando...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"A bsqueda cheou  final sen atopar coincidencias\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"A bsqueda chegou  comezo sen atopar coincidencia\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Bsqueda interrompida.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Introduza o contrasinal PGP:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Contrasinal PGP esquecido.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Erro: non foi posible crear subproceso PGP! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"[-- Fin da sada PGP --]\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erro: non foi posible crear un subproceso PGP! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"O login fallou.\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Non foi posible abri-lo subproceso PGP!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Non foi posible invocar  PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"efcao\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"efcao\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"efcao\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (i)nterior, ou (o)lvidar? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"efcao\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Recollendo chave PGP...\"\n\n#: pgpkey.c:491\n#, fuzzy\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Tdalas chaves coincidintes estn marcadas como expiradas/revocadas.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"Chaves PGP coincidintes con <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"Chaves PGP coincidintes con \\\"%s\\\"\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Non foi posible abrir /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Chave PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"O comando TOP non est soportado polo servidor.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Non foi posible escribi-la cabeceira  ficheiro temporal\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"O comando UIDL non est soportado polo servidor.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"O ndice de mensaxes  incorrecto. Tente reabri-lo buzn.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Recollendo a lista de mensaxes...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Non foi posible escribi-la mensaxe  ficheiro temporal\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"Marcando %d mensaxes borradas ...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Buscando novas mensaxes...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"O servidor POP non est definido\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Non hai novo correo no buzn POP.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Borra-las mensaxes do servidor?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Lendo novas mensaxes (%d bytes)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Erro cando se estaba a escribi-lo buzn!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d de %d mensaxes lidas]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"O servidor pechou a conexin!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Autenticando (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Autenticando (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"Autenticacin APOP fallida.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"O comando USER non est soportado polo servidor.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Mes invlido: %s\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Non foi posible deixa-las mensaxes no servidor.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Erro  conectar c servidor: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Pechando conexin c servidor POP...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Verificando os ndices de mensaxes...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Perdeuse a conexin. Volver a conectar  servidor POP?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Mensaxes pospostas\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Non hai mensaxes pospostas.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"Cabeceira PGP ilegal\"\n\n#: postpone.c:496\n#, fuzzy\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Cabeceira S/MIME ilegal\"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"Recollendo mensaxe...\"\n\n#: postpone.c:592\n#, fuzzy\nmsgid \"Decryption failed.\"\nmsgstr \"O login fallou.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nova consulta\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Facer alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Bsqueda\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Agardando resposta...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Comando de consulta non definido.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Consulta\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Consulta: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Consulta '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Canalizar\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Imprimir\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Gardando...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Adxunto gardado.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"ATENCION! Est a punto de sobreescribir %s, seguir?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Adxunto filtrado.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtrar a travs de: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Canalizar a: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Non sei cmo imprimir adxuntos %s!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Imprimi-la(s) mensaxe(s) marcada(s)?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Imprimir adxunto?\"\n\n#: recvattach.c:1009\n#, fuzzy\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Non foi posible atopar ningunha mensaxe marcada.\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Adxuntos\"\n\n#\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Non hai subpartes que amosar.\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Non  posible borrar un adxunto do servidor POP.\"\n\n#: recvattach.c:1126\n#, fuzzy\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"O borrado de adxuntos de mensaxes PGP non est soportado.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"O borrado de adxuntos de mensaxes PGP non est soportado.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"S o borrado de adxuntos de mensaxes multiparte est soportado.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Somentes podes rebotar partes \\\"message/rfc822\\\"\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing message!\"\nmsgstr \"Erro enviando a mensaxe.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing messages!\"\nmsgstr \"Erro enviando a mensaxe.\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Non foi posible abri-lo ficheiro temporal %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Reenviar mensaxes coma adxuntos?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Non foi posible decodificar tdolos adxuntos marcados.\\n\"\n\"Remitir con MIME os outros?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Facer \\\"forward\\\" con encapsulamento MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Non foi posible crear %s\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Non foi posible atopar ningunha mensaxe marcada.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Non se atoparon listas de correo!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Non foi posible decodificar tdolos adxuntos marcados.\\n\"\n\"Remitir con MIME os outros?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Engadir\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Insertar\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Borrar\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"Ok\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Non foi posible recolle-lo 'type2.list' do mixmaster.\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Seleccionar unha cadea de remailers.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Erro: %s non pode ser usado como remailer final dunha cadea.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"As cadeas mixmaster estn limitadas a %d elementos.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"A cadea de remailers xa est valeira.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"O primeiro elemento da cadea xa est seleccionado.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"O derradeiro elemento da cadea xa est seleccionado.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"O mixmaster non acepta cabeceiras Cc ou Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Por favor, use un valor correcto da variable 'hostname' cando use o \"\n\"mixmaster.\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Erro enviando mensaxe, o proceso fillo sau con %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Erro enviando a mensaxe.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Entrada malformada para o tipo %s en \\\"%s\\\" lia %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Non se especificou unha ruta de mailcap\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"non se atopou unha entrada mailcap para o tipo %s\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: insuficientes parmetros\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: demasiados parmetros\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Non hai tema, cancelar?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Non hai tema, cancelando.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Responder a %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Responder a %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Non hai mensaxes marcadas que sexan visibles!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Inclui-la mensaxe na resposta?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Incluindo mensaxe citada...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Non foi posible incluir tdalas mensaxes requeridas!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Remitir como adxunto?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Preparando mensaxe remitida ...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Editar mensaxe posposta?\"\n\n#: send.c:1426\n#, fuzzy\nmsgid \"Edit forwarded message?\"\nmsgstr \"Preparando mensaxe remitida ...\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Cancelar mensaxe sen modificar?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Mensaxe sen modificar cancelada.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Mensaxe posposta.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Non se especificaron destinatarios!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Non se especificaron destinatarios.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Non hai tema, cancela-lo envo?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Non se especificou tema.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Enviando mensaxe...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"ver adxunto como texto\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Non foi posible envia-la mensaxe.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Mensaxe enviada.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Mandando en segundo plano.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Non se atopout parmetro \\\"boundary\\\"! [informe deste erro]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"Xa non existe %s!\"\n\n#: sendlib.c:878\n#, fuzzy, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s non  un buzn.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Non foi posible abrir %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Erro enviando mensaxe, o proceso fillo sau con %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Sada do proceso de distribucin\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"Atrapado %s... Sando.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Atrapado %s... Sando.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Atrapado sinal %d... Sando.\\n\"\n\n#: smime.c:141\n#, fuzzy\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Introduza o contrasinal S/MIME:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"\"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"\"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"\"\n\n#: smime.c:388\n#, fuzzy\nmsgid \"Expired   \"\nmsgstr \"Sar  \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"\"\n\n#: smime.c:394\n#, fuzzy\nmsgid \"Invalid   \"\nmsgstr \"Mes invlido: %s\"\n\n#: smime.c:397\n#, fuzzy\nmsgid \"Unknown   \"\nmsgstr \"Descoecido\"\n\n#: smime.c:429\n#, fuzzy, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Chaves S/MIME coincidintes con \\\"%s\\\"\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"Este ID non  de confianza.\"\n\n#: smime.c:761\n#, fuzzy\nmsgid \"Enter keyID: \"\nmsgstr \"Introduza keyID para %s: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\n#, fuzzy\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"[-- Erro: non foi posible crear subproceso OpenSSL! --]\\n\"\n\n#: smime.c:1320\n#, fuzzy\nmsgid \"no certfile\"\nmsgstr \"Non se puido crea-lo filtro\"\n\n#: smime.c:1323\n#, fuzzy\nmsgid \"no mbox\"\nmsgstr \"(non hai buzn)\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\n#, fuzzy\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Non foi posible abri-lo subproceso OpenSSL!\"\n\n#: smime.c:1791 smime.c:1914\n#, fuzzy\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"[-- Fin da sada OpenSSL --]\\n\"\n\n#: smime.c:1873 smime.c:1884\n#, fuzzy\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Erro: non foi posible crear subproceso OpenSSL! --]\\n\"\n\n#: smime.c:1918\n#, fuzzy\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"\"\n\"[-- Os datos a continuacin estn encriptados con S/MIME --]\\n\"\n\"\\n\"\n\n#: smime.c:1921\n#, fuzzy\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"\"\n\"[-- Os datos a continuacin estn asinados --]\\n\"\n\"\\n\"\n\n#: smime.c:1985\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin dos datos con encriptacin S/MIME --]\\n\"\n\n#: smime.c:1987\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fin dos datos asinados --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas ou (o)lvidar? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas ou (o)lvidar? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"efcao\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas ou (o)lvidar? \"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"efcao\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"O login fallou.\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"O login fallou.\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Mes invlido: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"Autenticacin GSSAPI fallida.\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"Autenticacin SASL fallida.\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"Autenticacin SASL fallida.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Ordeando buzn...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Non foi atopada unha funcin de ordeacin! [informe deste fallo]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(non hai buzn)\"\n\n#: thread.c:1095\n#, fuzzy\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"A mensaxe pai non  visible na vista limitada.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"A mensaxe pai non  accesible.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"operacin nula\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"forzar amosa do adxunto usando mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"ver adxunto como texto\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Cambia-la visualizacin das subpartes\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"mover  final da pxina\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"volver a manda-la mensaxe a outro usuario\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"seleccionar un novo ficheiro neste directorio\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"ver ficheiro\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"ve-lo nome do ficheiro seleccioado actualmente\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"subscribir  buzn actual (s IMAP)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"borra-la subscripcin  buzn actual (s IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"cambiar entre ver todos e ver s os buzns subscritos (s IMAP)\"\n\n#: ../keymap_alldefs.h:18\n#, fuzzy\nmsgid \"list mailboxes with new mail\"\nmsgstr \"Non hai buzns con novo correo.\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"cambiar directorios\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"comprobar se hai novo correo nos buzns\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"adxuntar ficheiro(s) a esta mensaxe\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"adxuntar mensaxe(s) a esta mensaxe\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"edita-la lista de BCC\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"edita-la lista CC\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"edita-la descripcin do adxunto\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"edita-lo \\\"transfer-encoding\\\" do adxunto\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"introducir un ficheiro no que gardar unha copia da mensaxe\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"edita-lo ficheiro a adxuntar\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"edita-lo campo \\\"De\\\"\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"edita-la mensaxe con cabeceiras\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"edita-la mensaxe\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"edita-lo adxunto usando a entrada mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"edita-lo campo Responder-A\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"edita-lo tema desta mensaxe\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"edita-a lista do Para\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"crear un novo buzn (s IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"edita-lo tipo de contido do adxunto\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"coller unha copia temporal do adxunto\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"executar ispell na mensaxe\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"compr novo adxunto usando a entrada mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"cambia-la recodificacin deste adxunto\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"gardar esta mensaxe para mandar logo\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"renomear/mover un ficheiro adxunto\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"envia-la mensaxe\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"cambia-la disposicin entre interior/adxunto\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"cambiar a opcin de borra-lo ficheiro logo de mandalo\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"actualiza-la informacin de codificacin dun adxunto\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"escribi-la mensaxe a unha carpeta\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"copiar unha mensaxe a un ficheiro/buzn\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"crear un alias do remitente dunha mensaxe\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"mover entrada  final da pantalla\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"mover entrada  medio da pantalla\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"mover entrada  principio da pantalla\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"facer copia descodificada (texto plano)\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"facer copia descodificada (texto plano) e borrar\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"borra-la entrada actual\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"borra-lo buzn actual (s IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"borrar tdalas mensaxes no subfo\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"borrar tdalas mensaxes no fo\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"amosa-lo enderezo completo do remitente\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"amosa-la mensaxe e cambia-lo filtrado de cabeceiras\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"amosar unha mensaxe\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"edita-la mensaxe en cru\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"borra-lo carcter en fronte do cursor\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"move-lo cursor un carcter  esquerda\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"move-lo cursor  comezo da palabra\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"saltar  comezo de lia\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"cambiar entre buzns de entrada\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"nome de ficheiro completo ou alias\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"enderezo completo con consulta\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"borra-lo carcter baixo o cursor\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"saltar  final da lia\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"move-lo cursor un carcter  dereita\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"move-lo cursor  final da palabra\"\n\n#: ../keymap_alldefs.h:75\n#, fuzzy\nmsgid \"scroll down through the history list\"\nmsgstr \"moverse cara atrs na lista do historial\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"moverse cara atrs na lista do historial\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"borra-los caracteres dende o cursor ata o fin da lia\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"borra-los caracteres dende o cursor ata o fin da palabra\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"borrar tdolos caracteres da lia\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"borra-la palabra en fronte do cursor\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"cita-la vindeira tecla pulsada\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"intercambia-lo caracter baixo o cursor c anterior\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"pasa-la primeira letra da palabra a maisculas\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"converti-la palabra a minsculas\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"converti-la palabra a maisculas\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"introducir un comando do muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"introducir unha mscara de ficheiro\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"sar deste men\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtrar adxunto a travs dun comando shell\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"moverse  primeira entrada\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"cambia-lo indicador de 'importante' dunha mensaxe\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"reenvia-la mensaxe con comentarios\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"selecciona-la entrada actual\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"responder a tdolos destinatarios\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"moverse 1/2 pxina cara abaixo\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"moverse 1/2 pxina cara arriba\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"esta pantalla\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"saltar a un nmero do ndice\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"moverse  ltima entrada\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"responder  lista de correo especificada\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"executar unha macro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"compr unha nova mensaxe\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"abrir unha carpeta diferente\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"abrir unha carpeta diferente en modo de s lectura\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"limpar a marca de estado dunha mensaxe\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"borrar mensaxes coincidentes cun patrn\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"forza-la recollida de correo desde un servidor IMAP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"recoller correo dun servidor POP\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"moverse  primeira mensaxe\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"moverse  ltima mensaxe\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"amosar s mensaxes que coincidan cun patrn\"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"Rebotar mensaxes marcadas a: \"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Non hai buzns con novo correo.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"saltar  vindeira nova mensaxe\"\n\n#: ../keymap_alldefs.h:117\n#, fuzzy\nmsgid \"jump to the next new or unread message\"\nmsgstr \"saltar  vindeira mensaxe recuperada\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"saltar  vindeiro subfo\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"saltar  vindeiro fo\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"moverse  vindeira mensaxe recuperada\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"saltar  vindeira mensaxe recuperada\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"saltar  mensaxe pai no fo\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"saltar  fo anterior\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"saltar  subfo anterior\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"moverse  anterior mensaxe recuperada\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"saltar  vindeira mensaxe nova\"\n\n#: ../keymap_alldefs.h:127\n#, fuzzy\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"saltar  anterior mensaxe non lida\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"saltar  anterior mensaxe non lida\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"marca-lo fo actual como lido\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"marca-lo subfo actual como lido\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"pr un indicador de estado nunha mensaxe\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"gardar cambios  buzn\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"marcar mensaxes coincidintes cun patrn\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"recuperar mensaxes coincidindo cun patrn\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"quitar marca a mensaxes coincidintes cun patrn\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"moverse  medio da pxina\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"moverse  vindeira entrada\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"avanzar unha lia\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"moverse  vindeira pxina\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"saltar  final da mensaxe\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"cambiar a visualizacin do texto citado\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"saltar o texto citado\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"saltar  comezo da mensaxe\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"canalizar mensaxe/adxunto a un comando de shell\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"moverse  entrada anterior\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"retroceder unha lia\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"moverse  vindeira pxina\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"imprimi-la entrada actual\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"consultar o enderezo a un programa externo\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"engadir os resultados da nova consulta s resultados actuais\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"gardar cambios  buzn e sar\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"reeditar unha mensaxe posposta\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"limpar e redibuxa-la pantalla\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{interno}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"borra-lo buzn actual (s IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"responder a unha mensaxe\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"usa-la mensaxe actual como patrn para unha nova\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"gardar mensaxe/adxunto a un ficheiro\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"buscar unha expresin regular\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"buscar unha expresin regular cara atrs\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"busca-la vindeira coincidencia\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"busca-la vindeira coincidencia en direccin oposta\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"cambia-la coloracin do patrn de bsqueda\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"chamar a un comando nun subshell\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"ordear mensaxes\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"ordear mensaxes en orden inverso\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"marca-la entrada actual\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"aplica-la vindeira funcin s mensaxes marcadas\"\n\n#: ../keymap_alldefs.h:169\n#, fuzzy\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"aplica-la vindeira funcin s mensaxes marcadas\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"marca-lo subfo actual\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"marca-lo fo actual\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"cambia-lo indicador de 'novo' dunha mensaxe\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"cambia-la opcin de reescribir/non-reescribi-lo buzn\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"cambia-la opcin de ver buzns/tdolos ficheiros\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"moverse  comezo da pxina\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"recupera-la entrada actual\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"recuperar tdalas mensaxes en fo\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"recuperar tdalas mensaxes en subfo\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"amosa-lo nmero e data de versin de Mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"ver adxunto usando a entrada de mailcap se cmpre\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"amosar adxuntos MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"amosar o patrn limitante actual\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"colapsar/expandir fo actual\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"colapsar/expandir tdolos fos\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"adxuntar unha chave pblica PGP\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"amosa-las opcins PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"enviar por correo unha chave pblica PGP\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"verificar unha chave pblica PGP\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"ve-la identificacin de usuario da chave\"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"verificar para pgp clsico\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Acepta-la cadea construida\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Engadir un remailer  cadea\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Insertar un remailer na cadea\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Borrar un remailer da cadea\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Selecciona-lo anterior elemento da cadea\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Selecciona-lo vindeiro elemento da cadea\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"envia-la mensaxe a travs dunha cadea de remailers mixmaster\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"facer unha copia desencriptada e borrar\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"facer unha copia desencriptada\"\n\n#: ../keymap_alldefs.h:201\n#, fuzzy\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"borra-lo contrasinal PGP de memoria\"\n\n#: ../keymap_alldefs.h:202\n#, fuzzy\nmsgid \"extract supported public keys\"\nmsgstr \"extraer chaves pblicas PGP\"\n\n#: ../keymap_alldefs.h:203\n#, fuzzy\nmsgid \"show S/MIME options\"\nmsgstr \"amosa-las opcins S/MIME\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"Non hai mensaxes recuperadas.\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" nesta vista limitada\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"Non hai mensaxes recuperadas.\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"edita-la mensaxe\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"erro na expresin\"\n\n#, fuzzy\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Erro interno. Informe a <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"saltar  mensaxe pai no fo\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Erro: mensaxe PGP/MIME mal formada! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Erro: multipart/encrypted non ten parmetro de protocolo!\"\n\n#, fuzzy\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Usa-lo keyID = \\\"%s\\\" para %s?\"\n\n#, fuzzy\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Usa-lo keyID = \\\"%s\\\" para %s?\"\n\n#, fuzzy\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Atencin: non foi posible garda-lo certificado\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Limpar\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"efcaio\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Non hai patrn de bsqueda.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Bsqueda inversa: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Bsqueda: \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Erro enviando a mensaxe.\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"Comprobacin do certificado SSL\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"Comprobacin do certificado SSL\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Recollendo entornos de nomes...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"uso: mutt [ -nRzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <ficheiro> ] [ -F <ficheiro> ]\\n\"\n#~ \" [ -H <ficheiro> ] [ -i <ficheiro> ] [ -s <tema> ] [ -b <enderz> ] [ -c \"\n#~ \"<enderz> ] <enderz> [ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <ficheiro> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"options:\\n\"\n#~ \"  -a <ficheiro>\\tadxuntar un ficheiro  mensaxe\\n\"\n#~ \"  -b <enderezo>\\tespecificar un enderezo para carbon-copy cego (BCC)\\n\"\n#~ \"  -c <enderezo>\\tespecificar un enderezo para carbon-copy (CC)\\n\"\n#~ \"  -e <comando>\\tespecificar un comando a executar despois do inicio\\n\"\n#~ \"  -f <ficheiro>\\tespecificar que buzn ler\\n\"\n#~ \"  -F <ficheiro>\\tespecificar un ficheiro muttrc alternativo\\n\"\n#~ \"  -H <ficheiro>\\tespecificar un ficheiro borrador do que le-la cabeceira\\n\"\n#~ \"  -i <ficheiro>\\tespecificar un ficheiro que Mutt deber incluir na \"\n#~ \"resposta\\n\"\n#~ \"  -m <tipo>\\tespecificar un tipo de buzn por defecto\\n\"\n#~ \"  -n\\t\\tfai que Mutt non lea o Muttrc do sistema\\n\"\n#~ \"  -p\\t\\teditar unha mensaxe posposta\\n\"\n#~ \"  -R\\t\\tabrir un buzn en modo de s lectura\\n\"\n#~ \"  -s <tema>\\tespecificar un tema (debe ir entre comillas se ten \"\n#~ \"espacios)\\n\"\n#~ \"  -v\\t\\tamosa-la versin e las definicins en tempo de compilacin\\n\"\n#~ \"  -x\\t\\tsimula-lo modo de envo de mailx\\n\"\n#~ \"  -y\\t\\tseleccionar un buzn especificado na sa lista de buzns\\n\"\n#~ \"  -z\\t\\tsalir de contado se non quedan mensaxes no buzn\\n\"\n#~ \"  -Z\\t\\tabri-la primeira carpeta con algunha mensaxe nova, sar de \"\n#~ \"contado si non hai tal\\n\"\n#~ \"  -h\\t\\testa mensaxe de axuda\"\n\n#, fuzzy\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"Non  posible editar unha mensaxe no servidor POP.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"Non  posible editar unha mensaxe no servidor POP.\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"Lendo %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Escribindo mensaxes... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"Lendo %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Chamando  PGP...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Erro fatal. A conta de mensaxes non est sincronizada!\"\n\n#, fuzzy\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"O login fallou.\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2001 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"Copyright (C) 1996-2001 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2001 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2001 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2001 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2001 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2001 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Moita xente non mencionada aqu colaborou con unha morea de cdigo,\\n\"\n#~ \"amaos, e suxerencias.\\n\"\n#~ \"\\n\"\n#~ \"    Este programa  software libre; pode redistribuilo e/ou modificalo\\n\"\n#~ \"    baixo os trminos da Licencia Pblica Xeral de GNU, tal e como foi\\n\"\n#~ \"    publicada pola Free Software Foundation; tanto a versin 2 da\\n\"\n#~ \"    licencia, ou ( seu gusto) outra versin posterior.\\n\"\n#~ \"\\n\"\n#~ \"    Este programa  distribuido na esperanza de que sexa til,\\n\"\n#~ \"    mais SEN GARANTA DE NINGN TIPO; incluso sen a garanta implcita\\n\"\n#~ \"    de MERCANTIBILIDADE ou AXEITAMENTE PARA ALGN PROPSITO PARTICULAR.\\n\"\n#~ \"    Mire a Licencia General de GNU para mis informacin.\\n\"\n#~ \"\\n\"\n#~ \"    Debera haber recibido unha copia da Licencia Pblica Xeral de GNU\\n\"\n#~ \"    xunto deste programa; se non foi as, escriba  Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"Amosase a primeira entrada.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"Amosase a derradeira entrada.\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"Non  posible engadir s buzns IMAP deste servidor\"\n\n#, fuzzy\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"Crear unha mensaxe aplicacin/pgp?\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"Non foi atopado: %s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s non  un buzn.\"\n\n#, fuzzy\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"Chamando  OpenSSL...\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"Rebotar mensaxe a %s...?\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"Rebotar mensaxes a %s...?\"\n\n#, fuzzy\n#~ msgid \"ewsabf\"\n#~ msgstr \"efcao\"\n\n#, fuzzy\n#~ msgid \"Certificate *NOT* added.\"\n#~ msgstr \"Certificado gardado\"\n\n#, fuzzy\n#~ msgid \"This ID's validity level is undefined.\"\n#~ msgstr \"O nivel de confianza deste ID est sen definir.\"\n\n#~ msgid \"Decode-save\"\n#~ msgstr \"Descodificar-gardar\"\n\n#~ msgid \"Decode-copy\"\n#~ msgstr \"Descodificar-copiar\"\n\n#~ msgid \"Decrypt-save\"\n#~ msgstr \"Desencriptar-gardar\"\n\n#~ msgid \"Decrypt-copy\"\n#~ msgstr \"Desencriptar-copiar\"\n\n#~ msgid \"Copy\"\n#~ msgstr \"Copiar\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"[-- End of PGP output --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"[-- Fin da sada PGP --]\\n\"\n#~ \"\\n\"\n\n#, fuzzy\n#~ msgid \"Can't stat %s.\"\n#~ msgstr \"Non foi atopado: %s\"\n\n#~ msgid \"%s: no such command\"\n#~ msgstr \"%s: non hai tal comando\"\n\n#~ msgid \"Authentication method is unknown.\"\n#~ msgstr \"O mtodo de autenticacin  descoecido.\"\n\n#, fuzzy\n#~ msgid \"Creating mailboxes is not yet supported.\"\n#~ msgstr \"O marcado non est soportado.\"\n\n#, fuzzy\n#~ msgid \"Can't open %s: %s.\"\n#~ msgstr \"Non foi atopado: %s\"\n\n#~ msgid \"MIC algorithm: \"\n#~ msgstr \"Algoritmo MIC: \"\n\n#~ msgid \"This doesn't make sense if you don't want to sign the message.\"\n#~ msgstr \"Isto non  moi sensato se non queres firma-la mensaxe.\"\n\n#~ msgid \"Unknown MIC algorithm, valid ones are: pgp-md5, pgp-sha1, pgp-rmd160\"\n#~ msgstr \"\"\n#~ \"Algoritmo MIC descoecido, os vlidos son: pgp-md5, pgp-sha1, pgp-rmd160\"\n\n#~ msgid \"IMAP Username: \"\n#~ msgstr \"Usuario IMAP: \"\n\n#, fuzzy\n#~ msgid \"CRAM key for %s@%s: \"\n#~ msgstr \"Introduza keyID para %s: \"\n\n#~ msgid \"Reopening mailbox... %s\"\n#~ msgstr \"Reabrindo buzn... %s\"\n\n#~ msgid \"Closing mailbox...\"\n#~ msgstr \"Pechando buzn...\"\n\n#~ msgid \"Sending APPEND command ...\"\n#~ msgstr \"Enviando comando APPEND...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"SHA1 implementation Copyright (C) 1995-1997 Eric A. Young <eay@cryptsoft.\"\n#~ \"com>\\n\"\n#~ \"\\n\"\n#~ \"    Redistribution and use in source and binary forms, with or without\\n\"\n#~ \"    modification, are permitted under certain conditions.\\n\"\n#~ \"\\n\"\n#~ \"    The SHA1 implementation comes AS IS, and ANY EXPRESS OR IMPLIED\\n\"\n#~ \"    WARRANTIES, including, but not limited to, the implied warranties of\\n\"\n#~ \"    merchantability and fitness for a particular purpose ARE DISCLAIMED.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the full distribution terms\\n\"\n#~ \"    along with this program; if not, write to the program's developers.\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Implementacin SHA1 Copyright (C) 1995-7 Eric A. Young <eay@cryptosoft.\"\n#~ \"com>\\n\"\n#~ \"    A redistribucin e uso na sa forma de fontes e binarios, con ou sin\\n\"\n#~ \"    modificacin, estn permitidas baixo certas condicins.\\n\"\n#~ \"\\n\"\n#~ \"    A implementacin de SHA1 ven TAL CUAL, e CALQUERA GARANTIA EXPRESA \"\n#~ \"OU\\n\"\n#~ \"    IMPLICADA, incluindo, mais non limitada a, as garantas implcitas \"\n#~ \"de\\n\"\n#~ \"    comercializacin e adaptacin a un propsito particular SON\\n\"\n#~ \"    DESCARGADAS.\\n\"\n\n#~ msgid \"POP Password: \"\n#~ msgstr \"Contrasinal POP: \"\n\n#~ msgid \"No POP username is defined.\"\n#~ msgstr \"Non foi definido nome de usuario POP.\"\n\n#, fuzzy\n#~ msgid \"Reading new message (%d bytes)...\"\n#~ msgstr \"Lendo %d nova mensaxe (%d butes)...\"\n\n#, fuzzy\n#~ msgid \"%s [%d message read]\"\n#~ msgstr \"%s [%d mensaxes lidas]\"\n\n#~ msgid \"Attachment saved\"\n#~ msgstr \"Adxunto gardado\"\n\n#~ msgid \"Compose\"\n#~ msgstr \"Compr\"\n\n#~ msgid \"move to the last undelete message\"\n#~ msgstr \"moverse  ltima mensaxe recuperada\"\n\n#~ msgid \"return to the main-menu\"\n#~ msgstr \"voltar  men principal\"\n\n#~ msgid \"ignoring empty header field: %s\"\n#~ msgstr \"ignorando campo de cabeceira valeiro: %s\"\n\n#~ msgid \"imap_error(): unexpected response in %s: %s\\n\"\n#~ msgstr \"imap_erro(): resposta inesperada en %s: %s\\n\"\n\n#\n#~ msgid \"IMAP folder browsing is not currently supported\"\n#~ msgstr \"A navegacin de carpetas IMAP non est soportada actualmente\"\n\n#~ msgid \"Can't open your secret key ring!\"\n#~ msgstr \"Non fun capaz de abri-lo teu anel secreto de chaves!\"\n\n#~ msgid \"An unkown PGP version was defined for signing.\"\n#~ msgstr \"Foi definida unha versin descoecida de PGP para firmar.\"\n\n#~ msgid \"===== Attachments =====\"\n#~ msgstr \"====== Adxuntos =====\"\n\n#\n#~ msgid \"Sending CREATE command ...\"\n#~ msgstr \"Enviando comando CREATE...\"\n\n#~ msgid \"Unknown PGP version \\\"%s\\\".\"\n#~ msgstr \"Versin de PGP descoecida \\\"%s\\\".\"\n\n#~ msgid \"\"\n#~ \"[-- Error: this message does not comply with the PGP/MIME specification! \"\n#~ \"--]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Erro: esta mensaxe non compre coas especificacins PGP/MIME! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"reserved\"\n#~ msgstr \"reservado\"\n\n#~ msgid \"Signature Packet\"\n#~ msgstr \"Paquete da firma\"\n\n#~ msgid \"Conventionally Encrypted Session Key Packet\"\n#~ msgstr \"Paquete da sesin encriptada convencionalmente\"\n\n#~ msgid \"One-Pass Signature Packet\"\n#~ msgstr \"Paquete de firma \\\"One-Pass\\\"\"\n\n#~ msgid \"Secret Key Packet\"\n#~ msgstr \"Paquete de chave secreta\"\n\n#~ msgid \"Public Key Packet\"\n#~ msgstr \"Paquete de chave pblica\"\n\n#~ msgid \"Secret Subkey Packet\"\n#~ msgstr \"Paquete de subchave secreta\"\n\n#~ msgid \"Compressed Data Packet\"\n#~ msgstr \"Paquete de datos comprimidos\"\n\n#~ msgid \"Symmetrically Encrypted Data Packet\"\n#~ msgstr \"Paquete de data encriptada simtricamente\"\n\n#~ msgid \"Marker Packet\"\n#~ msgstr \"Paquete marcador\"\n\n#~ msgid \"Literal Data Packet\"\n#~ msgstr \"Paquete de datos literales\"\n\n#~ msgid \"Trust Packet\"\n#~ msgstr \"Paquete de confianza\"\n\n#~ msgid \"Name Packet\"\n#~ msgstr \"Paquete de nome\"\n\n#~ msgid \"Subkey Packet\"\n#~ msgstr \"Paquete de subchave\"\n\n#~ msgid \"Reserved\"\n#~ msgstr \"Reservado\"\n\n#~ msgid \"Comment Packet\"\n#~ msgstr \"Paquete de comentario\"\n\n#~ msgid \"Message edited. Really send?\"\n#~ msgstr \"Mensaxe editada. Enviar de verdad?\"\n\n#~ msgid \"Saved output of child process to %s.\\n\"\n#~ msgstr \"Gardada sada do proceso fillo a %s.\\n\"\n"
  },
  {
    "path": "po/hu.po",
    "content": "# Hungarian translation for Mutt.\n# Copyright (C) 2000-2001 Free Software Foundation, Inc.\n# Lszl Kiss <kissl@eptan.efe.hu>, 2000-2001;\n# Szabolcs Horvth <horvaths@fi.inf.elte.hu>, 2001-2003.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 1.5.4i\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2003-08-01 13:56+0000\\n\"\n\"Last-Translator: Szabolcs Horvth <horvaths@fi.inf.elte.hu>\\n\"\n\"Language-Team: LME Magyaritasok Lista <magyar@lists.linux.hu>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=iso-8859-2\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"%s azonost: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"%s@%s jelszava: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Kilp\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Trl\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Visszallt\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Vlaszt\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Sg\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Nincs bejegyzs a cmjegyzkben!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Cmjegyzk\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"lnv: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Mr van bejegyzs ilyen lnvvel!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Figyelmeztets: Ez az lnv lehet, hogy nem mkdik.  Javtsam?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Cm: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Hiba: '%s' hibs IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Nv: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Rendben?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Ments fjlba: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Hiba a fjl megjelentskor\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Cm bejegyezve.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Hiba a fjl megjelentskor\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Nem felel meg a nvmintnak, tovbb?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"A mailcap-ba \\\"compose\\\" bejegyzs szksges %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Hiba a(z) \\\"%s\\\" futtatsakor!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Fjl megnyitsi hiba a fejlc vizsglatakor.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Fjl megnyitsi hiba a fejlc eltvoltskor.\"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \"Fjl megnyitsi hiba a fejlc vizsglatakor.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"\"\n\"Nincs mailcap \\\"compose\\\" bejegyzs a(z) %s esetre, res fjl ltrehozsa.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"A mailcap-ba \\\"edit\\\" bejegyzs szksges %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Nincs \\\"edit\\\" bejegyzs a mailcap-ban a(z) %s esetre\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Nincs megfelel mailcap bejegyzs. Megjelents szvegknt.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"A MIME tpus nincs definilva. A mellklet nem jelenthet meg.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Nem lehet szrt ltrehozni.\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Mellkletek\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Mellkletek\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Szrt nem lehet ltrehozni\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"rsi hiba!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Nem ismert, hogy ezt hogyan kell kinyomtatni!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Knyvtrvlts\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Maszk\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"A(z) %s nem knyvtr.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Postafikok [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Felrt [%s], Fjlmaszk: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Knyvtr [%s], Fjlmaszk: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Knyvtr nem csatolhat!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Nincs a fjlmaszknak megfelel fjl\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Csak IMAP postafikok ltrehozsa tmogatott\"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Csak IMAP postafikok ltrehozsa tmogatott\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Csak IMAP postafikok trlse tmogatott\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"Nem lehet szrt ltrehozni.\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Valban trli a \\\"%s\\\" postafikot?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Postafik trlve.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"A postafik nem lett trlve.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Knyvtr: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Hiba a knyvtr beolvassakor.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Fjlmaszk: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Fordtott rendezs (d)tum, (n)v, (m)ret szerint vagy (r)endezetlen?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Rendezs (d)tum, (n)v, (m)ret szerint vagy (r)endezetlen?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dnmr\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Az j fjl neve: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"A knyvtr nem jelenthet meg\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Hiba a fjl megjelentskor\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"j levl: \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: a terminl ltal nem tmogatott szn\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: nincs ilyen szn\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: nincs ilyen objektum\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: a parancs csak index objektumra rvnyes\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: tl kevs paramter\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Hinyz paramter.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: tl kevs paramter\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: tl kevs paramter\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: nincs ilyen attribtum\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"tl kevs paramter\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"tl sok paramter\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"az alaprtelmezett sznek nem tmogatottak\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Ellenrizzk a PGP alrst?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Nem lehet tmeneti fjlt ltrehozni!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Nem lehet megjelent szrt ltrehozni.\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"A levelet nem tudtam msolni\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME alrs sikeresen ellenrizve.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Az S/MIME tanstvny tulajdonosa nem egyezik a kldvel. \"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"Az S/MIME alrst NEM tudtam ellenrizni.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"A PGP alrs sikeresen ellenrizve.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"A PGP alrst NEM tudtam ellenrizni.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Parancs: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Levl visszakldse. Cmzett: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Kijellt levelek visszakldse. Cmzett: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Hibs cm!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Hibs IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Levl visszakldse %s rszre\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Levl visszakldse %s rszre\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"A levl nem lett visszakldve.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"A levl nem lett visszakldve.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Levl visszakldve.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Levl visszakldve.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Szrfolyamatot nem lehet ltrehozni\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Parancs, aminek tovbbt: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Nincs nyomtatsi parancs megadva.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Kinyomtatod a levelet?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Kinyomtatod a kijellt leveleket?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Levl kinyomtatva\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Levl kinyomtatva\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"A levelet nem tudtam kinyomtatni\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"A leveleket nem tudtam kinyomtatni\"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Fordtva rendez Dtum/Felad/rK/trGy/Cmzett/Tma/Rendetlen/Mret/\"\n\"Pontszm: \"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Rendez Dtum/Felad/rKezs/trGy/Cmzett/Tma/Rendezetlen/Mret/Pontszm: \"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfkgctrmp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Shell parancs: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Dekdols-ments%s postafikba\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Dekdols-msols%s postafikba\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Visszafejts-ments%s postafikba\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Visszafejts-msols%s postafikba\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Ments%s postafikba\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Msols%s postafikba\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" kijellt\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Msols a(z) %s-ba...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"talaktsam %s formtumra kldskor?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Tartalom-tpus megvltoztatva %s-ra.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Karakterkszlet belltva: %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"nem alaktom t\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"talaktom\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Nincs mellklet.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Kld\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Mgse\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Fjl csatols\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Lers\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Kijells nem tmogatott.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Alr, Titkost\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Titkost\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Alr\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"(tovbb)\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" alr mint: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<alapeset>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Titkosts: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] tovbb nem ltezik!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] mdostva. Frisstsk a kdolst?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Mellkletek\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Figyelmeztets: '%s' hibs IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Az egyetlen mellklet nem trlhet.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Hibs IDN \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"A kivlasztott fjlok csatolsa...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"%s nem csatolhat!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Postafik megnyitsa levl csatolshoz\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Nem tudom zrolni a postafikot!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Nincs levl ebben a postafikban.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Jelld ki a csatoland levelet!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Nem lehet csatolni!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Az jrakdols csak a szveg mellkleteket rinti.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Ez a mellklet nem lesz konvertlva.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Ez a mellklet konvertlva lesz.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"rvnytelen kdols.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Mented egy msolatt a levlnek?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"tnevezs: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"%s nem olvashat: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"j fjl: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"A tartalom-tpus alap-/altpus formj.\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"%s ismeretlen tartalom-tpus\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Nem lehet a(z) %s fjlt ltrehozni\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Hiba a mellklet csatolsakor\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Eltegyk a levelet ksbbre?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Levl mentse postafikba\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Levl mentse %s-ba ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Levl elmentve.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME mr ki van jellve. Trls & folytats ?\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP mr ki van jellve. Trls & folytats ?\"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Nem lehet ideiglenes fjlt ltrehozni\"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"A szerver tanstvnya lejrt\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"SSL nem elrhet.\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \"Ujjlenyomat: %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"%s ltrehozsa?\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Hibs parancssor: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Alrt adat vge --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Hiba: nem lehet ltrehozni az ideiglenes fjlt! --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP LEVL KEZDDIK --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP NYILVNOS KULCS KEZDDIK --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP ALRT LEVL KEZDDIK --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- PGP LEVL VGE --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP NYILVNOS KULCS VGE --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- PGP ALRT LEVL VGE --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hiba: nem tallhat a PGP levl kezdete! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Hiba: nem lehet ltrehozni az ideiglenes fjlt! --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- A kvetkez adat PGP/MIME-vel titkostott --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- A kvetkez adat PGP/MIME-vel titkostott --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME titkostott adat vge --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME titkostott adat vge --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"A PGP alrs sikeresen ellenrizve.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"A levelet nem tudtam msolni\"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"[-- A kvetkez adatok S/MIME-vel al vannak rva --]\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"[-- A kvetkez adat S/MIME-vel titkostott --]\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME alrt adat vge --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME titkostott adat vge. --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"rvnytelen   \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"rvnytelen hnap: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"rvnytelen hnap: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"Titkost\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \"A tanstvny elmentve\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Kulcs ID: 0x%s\"\n\n#: crypt-gpgme.c:3533\n#, fuzzy\nmsgid \"[Revoked]\"\nmsgstr \"Visszavont    \"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"Lejrt        \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"Kapcsolds %s-hez...\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Hiba a szerverre val csatlakozs kzben: %s\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Hibs parancssor: %s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Kulcs ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"SSL sikertelen: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Minden illeszked kulcs lejrt/letiltott/visszavont.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Kilp  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Vlaszt  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Kulcs ellenrzse  \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP kulcsok egyeznek \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"PGP kulcsok egyeznek \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME kulcsok egyeznek \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"PGP kulcsok egyeznek \\\"%s\\\".\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Ez a kulcs nem hasznlhat: lejrt/letiltott/visszahvott.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID lejrt/letiltott/visszavont.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"ID-nek nincs meghatrozva az rvnyessge.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"Az ID nem rvnyes.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Az ID csak rszlegesen rvnyes.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Valban szeretnd hasznlni ezt a kulcsot?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Egyez \\\"%s\\\" kulcsok keresse...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Hasznljam a kulcsID = \\\"%s\\\" ehhez: %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Add meg a kulcsID-t %s-hoz: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Krlek rd be a kulcs ID-t: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"hiba a mintban: %s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP Kulcs %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"tapmsg\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"tapmsg\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"tapmsg\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"tapmsg\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Alr mint: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"Fjl megnyitsi hiba a fejlc vizsglatakor.\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (pontos id: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s kimenet kvetkezik%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Jelsz elfelejtve.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"PGP betlts...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"A levl nem lett elkldve.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"Tartalom-tmutats nlkli S/MIME zenetek nem tmogatottak.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"PGP kulcsok kibontsa...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"S/MIME tanstvnyok kibontsa...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hiba: Ismeretlen tbbrszes/alrt protokoll %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hiba: Ellentmond tbbrszes/alrt struktra! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Figyelmeztets: Nem tudtam leellenrizni a %s/%s alrsokat. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- A kvetkez adatok al vannak rva --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Figyelmeztets: Nem talltam egy alrst sem. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Alrt adat vge --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"S/MIME betlts...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"igen\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"nem\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Kilpsz a Mutt-bl?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"ismeretlen hiba\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Nyomj le egy billentyt a folytatshoz...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' lista): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Nincs megnyitott postafik.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Nincs levl.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"A postafik csak olvashat.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"A funkci levl-csatols mdban le van tiltva.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Nincs lthat levl.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"A csak olvashat postafikba nem lehet rni!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"\"\n\"A postafik mdostsai a postafikbl trtn kilpskor lesznek elmentve.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"A postafik mdostsai nem lesznek elmentve.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Kilp\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Ment\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Levl\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Vlasz\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Csoport\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"A postafikot ms program mdostotta. A jelzk hibsak lehetnek.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"j levl rkezett a postafikba.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"A postafikot ms program mdostotta.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Nincs kijellt levl.\"\n\n#: curs_main.c:731 menu.c:907\n#, fuzzy\nmsgid \"Nothing to do.\"\nmsgstr \"Kapcsolds %s-hez...\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Levlre ugrs: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"A paramternek levlszmnak kell lennie.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Ez a levl nem lthat.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"rvnytelen levlszm.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Nincs visszalltott levl.\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"A mintra illeszked levelek trlse: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"A szr mintnak nincs hatsa.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Szkts: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Minta a levelek szktshez: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Kilpsz a Muttbl?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Minta a levelek kijellshez: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Nincs visszalltott levl.\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Minta a levelek visszalltshoz: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Minta a levlkijells megszntetshez:\"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"IMAP kapcsolat lezrsa...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Postafik megnyitsa csak olvassra\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Postafik megnyitsa\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Nincs j levl egyik postafikban sem.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"A(z) %s nem egy postafik.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Kilpsz a Muttbl ments nll?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"A tmzs le van tiltva.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"zenet elmentse ksbbi kldshez\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Ez az utols levl.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Nincs visszalltott levl.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Ez az els levl.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Keress az elejtl.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Keress a vgtl.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"A nyitzenet nem lthat a szktett nzetben.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Nincs j levl\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"A nyitzenet nem lthat a szktett nzetben.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Nincs olvasatlan levl\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"zenet megjelentse\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Nincs tbb tma.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Ez az els tma.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"A tmban olvasatlan levelek vannak.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"Nincs visszalltott levl.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Nem lehet rni a levelet\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"ugrs a levl elzmnyre ebben a tmban\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"Nincs visszalltott levl.\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tbeszr egy '~'-al kezdd sort\\n\"\n\"~b cmzett\\thozzads a Bcc: (Titkos msolat:) mezhz\\n\"\n\"~c cmzett\\thozzads a Cc: (Msolat:) mezhz\\n\"\n\"~f levelek\\tlevelek beszrsa\\n\"\n\"~F levelek\\tmint az ~f, de az levlfejlcet is beszrja\\n\"\n\"~h\\t\\tlevl fejlcnek szerkesztse\\n\"\n\"~m leveleket\\tidzett levelek beszrsa\\n\"\n\"~M levelek\\tmint az ~m, de az levlfejlcet is beszrja\\n\"\n\"~p\\t\\tlevl kinyomtatsa\\n\"\n\"~q\\t\\tfjl mentse s kilps az editorbl\\n\"\n\"~r fjl\\t\\tfjl beolvassa az editorba\\n\"\n\"~t cmzett\\thozzads a To: (Cmzett:) mezhz\\n\"\n\"~u\\t\\taz utols sor visszahvsa\\n\"\n\"~v\\t\\tlevl szerkesztse a $visual editorral\\n\"\n\"~w fjl\\t\\tlevl mentse fjlba\\n\"\n\"~x\\t\\tvltoztatsok megszaktsa s kilps az editorbl\\n\"\n\"~?\\t\\tez az zenet\\n\"\n\".\\t\\tha egyedl ll a sorban befejezi a bevitelt\\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\tbeszr egy '~'-al kezdd sort\\n\"\n\"~b cmzett\\thozzads a Bcc: (Titkos msolat:) mezhz\\n\"\n\"~c cmzett\\thozzads a Cc: (Msolat:) mezhz\\n\"\n\"~f levelek\\tlevelek beszrsa\\n\"\n\"~F levelek\\tmint az ~f, de az levlfejlcet is beszrja\\n\"\n\"~h\\t\\tlevl fejlcnek szerkesztse\\n\"\n\"~m leveleket\\tidzett levelek beszrsa\\n\"\n\"~M levelek\\tmint az ~m, de az levlfejlcet is beszrja\\n\"\n\"~p\\t\\tlevl kinyomtatsa\\n\"\n\"~q\\t\\tfjl mentse s kilps az editorbl\\n\"\n\"~r fjl\\t\\tfjl beolvassa az editorba\\n\"\n\"~t cmzett\\thozzads a To: (Cmzett:) mezhz\\n\"\n\"~u\\t\\taz utols sor visszahvsa\\n\"\n\"~v\\t\\tlevl szerkesztse a $visual editorral\\n\"\n\"~w fjl\\t\\tlevl mentse fjlba\\n\"\n\"~x\\t\\tvltoztatsok megszaktsa s kilps az editorbl\\n\"\n\"~?\\t\\tez az zenet\\n\"\n\".\\t\\tha egyedl ll a sorban befejezi a bevitelt\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: rvnytelen levlszm.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Levl befejezse egyetlen '.'-ot tartalmaz sorral)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Nincs postafik.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Levl tartalom:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(tovbb)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"hinyz fjlnv.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Nincsenek sorok a levlben.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Hibs IDN a kvetkezben: %s '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: ismeretlen editor parancs (~? sg)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"%s ideiglenes postafik nem hozhat ltre\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"nem lehet rni a(z) %s ideiglenes postafikba\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"nem lehet levgni a(z) %s ideiglenes postafikbl\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"A levlfjl res!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"A levl nem lett mdostva!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"A(z) %s levlfjl res\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Nem lehet hozzfzni a(z) %s postafikhoz\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Hiba a(z) %s ideiglenes fjl mentsekor\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Jelz belltsa\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Jelz trlse\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- Hiba:  Egy Tbbrszes/Alternatv rsz sem jelenthet meg! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Mellklet #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Tpus: %s/%s, Kdols: %s, Mret: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Automatikus megjelents a(z) %s segtsgvel --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Megjelent parancs indtsa: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Nem futtathat: %s --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- A(z) %s hiba kimenete --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Hiba: az zenetnek/kls-trzsnek nincs elrsi-tpus paramtere --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Ez a %s/%s mellklet \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(mrete %s bjt)\"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \" trlve lett --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- %s-on --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- nv: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- A %s/%s mellklet nincs begyazva, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- s a jelzett kls forrs --]\\n\"\n\"[-- megsznt. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- s a jelzett elrsi-tpus, %s nincs tmogatva --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Nem lehet megnyitni tmeneti fjlt!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Hiba: a tbbrszes/alrt rszhez nincs protokoll megadva.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Ez a %s/%s mellklet \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s nincs tmogatva \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(E rsz megjelentshez hasznlja a(z) '%s'-t)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(a melllet megtekintshez billenty lenyoms szksges!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: nem lehet csatolni a fjlt\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"HIBA: krlek jelezd ezt a hibt a fejlesztknek\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<ISMERETLEN>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Alap billentykombincik:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Billentykombinci nlkli parancsok:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Sg: %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Nem lehet 'unhook *'-ot vgrehajtani hook parancsbl.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"hozzrendels trlse: ismeretlen hozzrendelsi tpus: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: %s-t nem lehet trlni a kvetkezbl: %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Egyetlen azonost sem rhet el\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Azonosts (anonymous)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonymous azonosts nem sikerlt.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Azonosts (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 azonosts nem sikerlt.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Azonosts (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI azonosts nem sikerlt.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"A LOGIN parancsot letiltottk ezen a szerveren.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Bejelentkezs...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Sikertelen bejelentkezs.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, fuzzy, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Azonosts (APOP)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL azonosts nem sikerlt.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s rvnytelen IMAP tvonal\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Postafikok listjnak letltse...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Nincs ilyen postafik\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Postafik ltrehozsa: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"A postafiknak nevet kell adni.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Postafik ltrehozva.\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Postafik ltrehozsa: \"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"SSL sikertelen: %s\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"Postafik ltrehozva.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Postafik lezrva\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"SSL sikertelen: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"%s kapcsolat lezrsa...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Ez az IMAP kiszolgl nagyon rgi. A Mutt nem tud egyttmkdni vele.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Biztonsgos TLS kapcsolat?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Nem lehetett megtrgyalni a TLS kapcsolatot\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"%s vlasztsa...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Hiba a postafik megnyitsaor\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"%s ltrehozsa?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Sikertelen trls\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"%d levl megjellse trltnek...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"llapotjelzk mentse... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"Hibs cm!\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Levelek trlse a szerverrl...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE sikertelen\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Hibs postafik nv\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"%s felrsa...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"%s lersa...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"%s felrsa...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"%s lersa...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Nem lehet a fejlceket letlteni ezen verzij IMAP szerverrl\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Nem lehet a %s tmeneti fjlt ltrehozni\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"Levlfejlcek letltse... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"Levlfejlcek letltse... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Levl letltse...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"\"\n\"A levelek tartalomjegyzke hibs. Prbld megnyitni jra a postafikot.\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"Levl feltltse...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"%d levl msolsa a %s postafikba...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"%d levl msolsa %s-ba ...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Folytatod?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Nem elrhet ebben a menben.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \"levelek kijellse mintra illesztssel\"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"kijells megszntetse mintra illesztssel\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"Figyelmeztets: Hibs IDN '%s' a '%s' lnvben.\\n\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"mellklet-lers szerkesztse\"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"mellklet-lers szerkesztse\"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"mellklet-lers szerkesztse\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"cmjegyzk: nincs cm\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Figyelmeztets: Hibs IDN '%s' a '%s' lnvben.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"rvnytelen mez a fejlcben\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: ismeretlen rendezsi md\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): hibs regulris kifejezs: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: ismeretlen vltoz\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"\\\"reset\\\"-nl nem adhat meg eltag\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"\\\"reset\\\"-nl nem adhat meg rtk\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s belltva\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s belltsa trlve\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"rvnytelen a hnap napja: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: rvnytelen postafik tpus\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: rvnytelen rtk\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: rvnytelen rtk\"\n\n#: init.c:2183\n#, fuzzy, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: ismeretlen tpus\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: ismeretlen tpus\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Hiba a %s-ban, sor %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: hiba a %s fjlban\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: az olvass megszakadt, a %s fjlban tl sok a hiba\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: hiba a %s-nl\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: tl sok paramter\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: ismeretlen parancs\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Hibs parancssor: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"meghatrozhatatlan felhasznli knyvtr\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"meghatrozhatatlan felhasznlnv\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"meghatrozhatatlan felhasznlnv\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"tl kevs paramter\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Vgtelen ciklus a makrban.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"A billentyhz nincs funkci rendelve.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"A billentyhz nincs funkci rendelve. A sghoz nyomd meg a '%s'-t.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: tl sok paramter\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: nincs ilyen men\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"res billentyzet-szekvencia\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: tl sok paramter\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: ismeretlen funkci\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: res billentyzet-szekvencia\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: tl sok paramter\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: nincs paramter\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: nincs ilyen funkci\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Add meg a kulcsokat (^G megszakts): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Karakter = %s, Oktlis = %o, Decimlis = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Elfogyott a memria!\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"A fejlesztkkel a <mutt-dev@mutt.org> cmen veheted fel a kapcsolatot.\\n\"\n\"Hiba jelentshez krlek hasznld a flea(1) programot.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2002 Michael R. Elkins s sokan msok.\\n\"\n\"A Mutt-ra SEMMIFLE GARANCIA NINCS; a rszletekrt rd be: `mutt -vv'.\\n\"\n\"A Mutt szabad szoftver, s terjesztheted az albbi felttelek\\n\"\n\"szerint; rd be a `mutt -vv'-t a rszletekrt.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"hasznlat:\\n\"\n\"     mutt [ -nRyzZ ] [ -e <par.> ] [ -F <fjl> ] [ -m <tpus> ] [ -f \"\n\"<fjl> ]\\n\"\n\"     mutt [ -nR ] [ -e <par.> ] [ -F <fjl> ] -Q <krd.> [ -Q <krd.> ] \"\n\"[...]\\n\"\n\"     mutt [ -nR ] [ -e <par.> ] [ -F <fjl> ] -A <lnv> [ -A <lnv> ] \"\n\"[...]\\n\"\n\"     mutt [ -nx ] [ -e <par.> ] [ -a <fjl> ] [ -F <fjl> ] [ -H <fjl> ]\\n\"\n\"\\t[ -i <fjl> ] [ -s <trgy> ] [ -b <cmek> ] [ -c <cmek> ] <cmek>\\n\"\n\"\\t[ ... ]\\n\"\n\"     mutt [ -n ] [ -e <par.> ] [ -F <fjl> ] -p\\n\"\n\"     mutt -v[v]\\n\"\n\"\\n\"\n\"paramterek:\\n\"\n\"  -A <lnv>\\trvid nv kifejtse\\n\"\n\"  -a <fjl>\\tfjl csatolsa a levlhez\\n\"\n\"  -b <cm>\\trejtett msolatot (BCC) kld a megadott cmre\\n\"\n\"  -c <cm>\\tmsolatot (CC) kld a megadott cmre\\n\"\n\"  -e <parancs>\\tmegadott parancs vgrehajtsa inicializls utn\\n\"\n\"  -f <fjl>\\tbetltend leveleslda megadsa\\n\"\n\"  -F <fjl>\\talternatv muttrc fjl hasznlata\\n\"\n\"  -H <fjl>\\tvzlat (draft) fjl megadsa, amibl a fejlcet s\\n\"\n\"\\t\\ta trzset kell beolvasni\\n\"\n\"  -i <fjl>\\tvlasz esetn a Mutt beleteszi ezt a fjlt a vlaszba\\n\"\n\"  -m <tpus>\\taz alaprtelmezett postafik tpusnak megadsa\\n\"\n\"  -n\\t\\ta Mutt nem fogja beolvasni a rendszerre vonatkoz Muttrc-t\\n\"\n\"  -p\\t\\telhalasztott levl visszahvsa\\n\"\n\"  -Q <vltoz>\\tkonfigurcis belltsa lekrdezse\\n\"\n\"  -R\\t\\tpostafik megnyitsa csak olvashat mdban\\n\"\n\"  -s <trgy>\\ttrgy megadsa (idzjelek kz kell tenni, ha van benne \"\n\"szkz)\\n\"\n\"  -v\\t\\tverziszm s fordtsi opcik mutatsa\\n\"\n\"  -x\\t\\tmailx klds szimullsa\\n\"\n\"  -y\\t\\tpostafik megadsa a `mailboxes' listbl\\n\"\n\"  -z\\t\\tkilp rgtn, ha nincs j levl a postafikban\\n\"\n\"  -Z\\t\\tmegnyitja az els olyan postafikot, amiben j levl van (ha nincs, \"\n\"kilp)\\n\"\n\"  -h\\t\\tkirja ezt az zenetet\"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"hasznlat:\\n\"\n\"     mutt [ -nRyzZ ] [ -e <par.> ] [ -F <fjl> ] [ -m <tpus> ] [ -f \"\n\"<fjl> ]\\n\"\n\"     mutt [ -nR ] [ -e <par.> ] [ -F <fjl> ] -Q <krd.> [ -Q <krd.> ] \"\n\"[...]\\n\"\n\"     mutt [ -nR ] [ -e <par.> ] [ -F <fjl> ] -A <lnv> [ -A <lnv> ] \"\n\"[...]\\n\"\n\"     mutt [ -nx ] [ -e <par.> ] [ -a <fjl> ] [ -F <fjl> ] [ -H <fjl> ]\\n\"\n\"\\t[ -i <fjl> ] [ -s <trgy> ] [ -b <cmek> ] [ -c <cmek> ] <cmek>\\n\"\n\"\\t[ ... ]\\n\"\n\"     mutt [ -n ] [ -e <par.> ] [ -F <fjl> ] -p\\n\"\n\"     mutt -v[v]\\n\"\n\"\\n\"\n\"paramterek:\\n\"\n\"  -A <lnv>\\trvid nv kifejtse\\n\"\n\"  -a <fjl>\\tfjl csatolsa a levlhez\\n\"\n\"  -b <cm>\\trejtett msolatot (BCC) kld a megadott cmre\\n\"\n\"  -c <cm>\\tmsolatot (CC) kld a megadott cmre\\n\"\n\"  -e <parancs>\\tmegadott parancs vgrehajtsa inicializls utn\\n\"\n\"  -f <fjl>\\tbetltend leveleslda megadsa\\n\"\n\"  -F <fjl>\\talternatv muttrc fjl hasznlata\\n\"\n\"  -H <fjl>\\tvzlat (draft) fjl megadsa, amibl a fejlcet s\\n\"\n\"\\t\\ta trzset kell beolvasni\\n\"\n\"  -i <fjl>\\tvlasz esetn a Mutt beleteszi ezt a fjlt a vlaszba\\n\"\n\"  -m <tpus>\\taz alaprtelmezett postafik tpusnak megadsa\\n\"\n\"  -n\\t\\ta Mutt nem fogja beolvasni a rendszerre vonatkoz Muttrc-t\\n\"\n\"  -p\\t\\telhalasztott levl visszahvsa\\n\"\n\"  -Q <vltoz>\\tkonfigurcis belltsa lekrdezse\\n\"\n\"  -R\\t\\tpostafik megnyitsa csak olvashat mdban\\n\"\n\"  -s <trgy>\\ttrgy megadsa (idzjelek kz kell tenni, ha van benne \"\n\"szkz)\\n\"\n\"  -v\\t\\tverziszm s fordtsi opcik mutatsa\\n\"\n\"  -x\\t\\tmailx klds szimullsa\\n\"\n\"  -y\\t\\tpostafik megadsa a `mailboxes' listbl\\n\"\n\"  -z\\t\\tkilp rgtn, ha nincs j levl a postafikban\\n\"\n\"  -Z\\t\\tmegnyitja az els olyan postafikot, amiben j levl van (ha nincs, \"\n\"kilp)\\n\"\n\"  -h\\t\\tkirja ezt az zenetet\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Fordtsi opcik:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Hiba a terminl inicializlsakor.\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Hiba: '%s' hibs IDN.\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Hibakvets szintje: %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"\"\n\"A HIBAKVETS nem volt engedlyezve fordtskor.  Figyelmen kvl hagyva.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s nem ltezik. Ltrehozzam?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Nem tudom ltrehozni %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Nincs cmzett megadva.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: nem tudom csatolni a fjlt.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Nincs j levl egyik postafikban sem.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Nincs bejv postafik megadva.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"A postafik res.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"%s olvassa...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"A postafik megsrlt!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"A postafik megsrlt!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Vgzetes hiba!  A postafikot nem lehet jra megnyitni!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Nem tudom zrolni a postafikot!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: mbox megvltozott, de nincs mdostott levl! (jelentsd ezt a hibt)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"%s rsa...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Vltozsok mentse...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"rs nem sikerlt!  Rszleges postafikot elmentettem a(z) %s fjlba\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Nem lehetett jra megnyitni a postafikot!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Postafik jra megnyitsa...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Ugrs: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"rvnytelen indexszm.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Nincsenek bejegyzsek.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Nem lehet tovbb lefel scrollozni.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Nem lehet tovbb felfel scrollozni.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Ez az els oldal.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Ez az utols oldal.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Az utols bejegyzsen vagy.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Az els bejegyzsen vagy.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Keress: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Keress visszafel: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Nem tallhat.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Nincsenek kijellt bejegyzsek.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"A keress nincs megrva ehhez a menhz.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Az ugrs funkci nincs megrva ehhez a menhz.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Kijells nem tmogatott.\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"%s vlasztsa...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Nem tudtam a levelet elkldeni.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message (): a fjlid belltsa nem sikerlt\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"hiba a mintban: %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"%s kapcsolat lezrva\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL nem elrhet.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"A \\\"preconnect\\\" parancs nem sikerlt.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Hiba a %s kapcsolat kzben (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Hibs IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"%s feloldsa...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"A \\\"%s\\\" host nem tallhat.\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Kapcsolds %s-hez...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"%s-hoz nem lehet kapcsoldni (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Nem talltam elg entrpit ezen a rendszeren\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Entrpit szerzek a vletlenszmgenertorhoz: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s jogai nem biztonsgosak!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"Entrpia hiny miatt az SSL letiltva\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"I/O hiba\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL sikertelen: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"A szervertl nem lehet tanustvnyt kapni\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"SSL kapcsolds a(z) %s hasznlatval (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Ismeretlen\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[nem kiszmthat]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[rvnytelen dtum]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"A szerver tanstvnya mg nem rvnyes\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"A szerver tanstvnya lejrt\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"A szervertl nem lehet tanustvnyt kapni\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"A szervertl nem lehet tanustvnyt kapni\"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"Az S/MIME tanstvny tulajdonosa nem egyezik a kldvel. \"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"A tanstvny elmentve\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Akire a tanustvny vonatkozik:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"A tanustvnyt killtotta:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Ez a tanstvny rvnyes\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   kezdete: %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     vge: %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Ujjlenyomat: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(v)isszautast, (e)gyszer elfogad, (m)indig elfogad\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"vem\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(v)isszautast, (e)gyszer elfogad\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ve\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Figyelmeztets: A tanstvny nem menthet\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"A tanstvny elmentve\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL kapcsolds a(z) %s hasznlatval (%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Hiba a terminl inicializlsakor.\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Ujjlenyomat: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Ujjlenyomat: %s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"A szerver tanstvnya mg nem rvnyes\"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"A szerver tanstvnya lejrt\"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"A szerver tanstvnya lejrt\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\n#, fuzzy\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"A szerver tanstvnya mg nem rvnyes\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \"A tanstvny elmentve\"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Kapcsolds %s-hez...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Hiba a %s kapcsolat kzben (%s)\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\n#, fuzzy\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"A fjl egy knyvtr, elmentsem ebbe a knyvtrba?\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"A fjl egy knyvtr, elmentsem ebbe a knyvtrba?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Knyvtrbeli fjlok: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"A fjl ltezik, (f)ellrjam, (h)ozzfzzem, vagy (m)gsem?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"fhm\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Levelet nem lehet menteni POP postafikba.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Levelek hozzfzse %s postafikhoz?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"A %s nem postafik!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"A lock szmll tlhaladt, eltvoltsam a(z) %s lockfjlt?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Nem lehet dotlock-olni: %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Lejrt a maximlis vrakozsi id az fcntl lock-ra!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Vrakozs az fcntl lock-ra... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Lejrt a maximlis vrakozsi id az flock lock-ra!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Vrakozs az flock-ra... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Nem lehet lockolni %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"A %s postafikot nem tudtam szinkronizlni!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Az olvasott leveleket mozgassam a %s postafikba?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Trljem a %d trltnek jellt levelet?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Trljem a %d trltnek jellt levelet?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Olvasott levelek mozgatsa a %s postafikba...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Postafik vltozatlan.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d megtartva, %d tmozgatva, %d trlve.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d megtartva, %d trlve.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Nyomd meg a '%s' gombot az rs ki/bekapcsolshoz\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Hasznld a 'toggle-write'-ot az rs jra engedlyezshez!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"A postafikot megjelltem nem rhatnak. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"A postafik ellenrizve.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Nem lehet rni a levelet\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"ElzO\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"KvO\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Mellklet\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Kv.\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Ez az zenet vge.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Ez az zenet eleje.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"A sg mr meg van jelentve.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Nincs tbb idzett szveg.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Nincs nem idzett szveg az idzett szveg utn.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"a tbbrszes zenetnek nincs hatrol paramtere!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Hiba a kifejezsben: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"hiba a kifejezsben\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"rvnytelen a hnap napja: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"rvnytelen hnap: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"rvnytelen viszonylagos hnap: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"hiba a mintban: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"hinyz paramter\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"nem megegyez zrjelek: %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: rvnytelen parancs\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: nincs tmogatva ebben a mdban\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"hinyz paramter\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"nem megegyez zrjelek: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"res minta\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"hiba: ismeretlen operandus %d (jelentsd ezt a hibt).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Keressi minta fordtsa...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Parancs vgrehajtsa az egyez leveleken...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Nincs a kritriumnak megfelel levl.\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"Ments...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"A keres elrte a vgt, s nem tallt egyezst\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"A keres elrte az elejt, s nem tallt egyezst\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Keress megszaktva.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Krlek rd be a PGP jelszavadat: \"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP jelsz elfelejtve.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Hiba: nem lehet ltrehozni a PGP alfolyamatot! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP kimenet vge --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hiba: nem lehet a PGP alfolyamatot ltrehozni! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"Visszafejts sikertelen.\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"PGP alfolyamatot nem lehet megnyitni\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"PGP-t nem tudom meghvni\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"tapmsg\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"PGP (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"tapmsg\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"PGP (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"tapmsg\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"PGP (t)itkost, (a)lr, alr (m)int, titkost (s) alr, (b)egyazott, \"\n\"m(g)se? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"tapmsg\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"PGP kulcs leszedse...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Minden illeszked kulcs lejrt/letiltott/visszavont.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP kulcsok egyeznek <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP kulcsok egyeznek \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Nem lehet a /dev/null-t megnyitni\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP Kulcs %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"A TOP parancsot nem tmogatja a szerver.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Nem lehet rni az ideiglenes fjlba!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Az UIDL parancsot nem tmogatja a szerver.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"\"\n\"A levelek tartalomjegyzke hibs. Prbld megnyitni jra a postafikot.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s rvnytelen POP tvonal\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"zenetek listjnak letltse...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Nem lehet a levelet belerni az ideiglenes fjlba!\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"%d levl megjellse trltnek...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"j levelek letltse...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP szerver nincs megadva.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Nincs j levl a POP postafikban.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Levelek trlse a szerverrl?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"j levelek olvassa (%d bytes)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Hiba a postafik rsakor!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d/%d levl beolvasva]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"A szerver lezrta a kapcsolatot!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Azonosts (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Azonosts (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP azonosts sikertelen.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"A USER parancsot nem ismeri ez a kiszolgl.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"rvnytelen   \"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Nem lehet a leveleket a szerveren hagyni.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Hiba a szerverre val csatlakozs kzben: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"POP kapcsolat lezrsa...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Levelek tartalomjegyzknek ellenrzse...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"A kapcsolatot elveszett. jracsatlakozik a POP kiszolglhoz?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Elhalasztott levelek\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Nincsenek elhalasztott levelek.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"rvnytelen PGP fejlc\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"rvnytelen S/MIME fejlc\"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"Levl letltse...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Visszafejts sikertelen.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"j lekrdezs\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"lnv\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Keress\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Vrakozs a vlaszra...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"A lekrdezs parancs nincs megadva.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Lekrdezs\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Lekrdezs: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"'%s' lekrdezse\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"tkld\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Nyomtat\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Ments...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"A mellklet elmentve.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"FIGYELMEZTETS!  %s-t fellrsra kszlsz, folytatod?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Mellklet szrve.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Szrn keresztl: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"tkld: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Nem tudom hogyan kell nyomtatni a(z) %s csatolst!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Kinyomtassam a kijellt mellklet(ek)et?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Kinyomtassam a mellkletet?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Nem tudtam visszafejteni a titkostott zenetet!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Mellkletek\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Nincsenek mutathat rszek!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"POP kiszolgln nem lehet mellkletet trlni.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Mellkletek trlse kdolt zenetbl nem tmogatott.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Mellkletek trlse kdolt zenetbl nem tmogatott.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Tbbrszes csatolsoknl csak a trls tmogatott.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Csak levl/rfc222 rszeket lehet visszakldeni.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Hiba a levl jrakldsekor.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Hiba a levelek jrakldsekor.\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Nem tudtam megnyitni a(z) %s ideiglenes fjlt.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Tovbbts mellkletknt?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Nem lehet kibontani minden kijellt mellkletet. A tbbit MIME kdolva \"\n\"kldd?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Tovbbklds MIME kdolssal?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Nem tudtam ltrehozni: %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Nem tallhat egyetlen kijellt levl sem.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Nincs levelezlista!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Nem tudom az sszes kijellt mellkletet visszaalaktani.  A tbbit MIME-\"\n\"kdolod?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Hozzfzs\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Beszrs\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Trls\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Nem lehet beolvasni a mixmaster type2.list-jt!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Vlaszd ki az jrakld lncot.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Hiba: %s-t nem lehet hasznlni a lnc utols jrakldjeknt.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"A Mixmaster lnc maximlisan %d elembl llhat.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Az jrakld lnc mr res.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Mr ki van vlasztva a lnc els eleme.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Mr ki van vlasztva a lnc utols eleme.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"A Mixmaster nem fogadja el a Cc vagy a Bcc fejlceket.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Krlek lltsd be a hostname vltozt a megfelel rtkre, ha mixmastert \"\n\"hasznlsz!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Hiba a levl elkldsekor, a gyermek folyamat kilpett: %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Hiba a levl elkldsekor.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"\"\n\"Nem megfelelen formzott bejegyzs a(z) %s tpushoz a(z) \\\"%s\\\" fjl %d. \"\n\"sorban\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Nincs mailcap tvonal megadva\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"mailcap bejegyzs a(z) %s tpushoz nem tallhat\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: tl kevs paramter\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: tl sok paramter\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Nincs trgy megadva, megszaktod?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Nincs trgy megadva, megszaktom.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Vlasz a %s%s cmre?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Vlasz a %s%s cmre?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Nincs lthat, kijelt levl!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Levl beillesztse a vlaszba?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Idzett levl beillesztse...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Nem tudtam az sszes krt levelet beilleszteni!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Tovbbts mellkletknt?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Tovbbtott levl elksztse...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Elhalasztott levl jrahvsa?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Tovbbtott levl szerkesztse?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Megszaktod a nem mdostott levelet?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Nem mdostott levelet megszaktottam.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"A levl el lett halasztva.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Nincs cmzett megadva!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Nem volt cmzett megadva.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Nincs trgy, megszaktsam a kldst?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Nincs trgy megadva.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Levl elkldse...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"mellklet megtekintse szvegknt\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Nem tudtam a levelet elkldeni.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Levl elkldve.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Klds a httrben.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Nem tallhat hatrol paramter! [jelentsd ezt a hibt]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s tbb nem ltezik!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s nem egy hagyomnyos fjl.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"%s nem nyithat meg\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Hiba a levl elkldse kzben, a gyermek folyamat kilpett: %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"A kzbest folyamat kimenete\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Hibs IDN %s a resent-from mez elksztsekor\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Kilps.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"%s-t kaptam...  Kilpek.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"%d jelzst kaptam...  Kilpek.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Krlek rd be az S/MIME jelszavadat: \"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Megbzhat    \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Ellenrztt   \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Ellenrizetlen\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Lejrt        \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Visszavont    \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"rvnytelen   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Ismeretlen    \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME kulcsok egyeznek \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"Az ID nem rvnyes.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Add meg a kulcsID-t: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Nem tallhat (rvnyes) tanstvny ehhez: %s\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Hiba: nem lehet ltrehozni az OpenSSL alfolyamatot!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"nincs tanstvnyfjl\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"nincs postafik\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Nincs kimenet az OpenSSLtl...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"OpenSSL alfolyamatot nem lehet megnyitni!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- OpenSSL kimenet vge --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Hiba: nem lehet ltrehozni az OpenSSL alfolyamatot! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- A kvetkez adat S/MIME-vel titkostott --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- A kvetkez adatok S/MIME-vel al vannak rva --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME titkostott adat vge. --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME alrt adat vge --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (t)itkost, (a)lr, titkost (p)rg, alr (m)int, titkost (s) \"\n\"alr, m(g)se? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (t)itkost, (a)lr, titkost (p)rg, alr (m)int, titkost (s) \"\n\"alr, m(g)se? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"tapmsg\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (t)itkost, (a)lr, titkost (p)rg, alr (m)int, titkost (s) \"\n\"alr, m(g)se? \"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"tapmsg\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SSL sikertelen: %s\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SSL sikertelen: %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"rvnytelen   \"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"GSSAPI azonosts nem sikerlt.\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"SASL azonosts nem sikerlt.\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL azonosts nem sikerlt.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Postafik rendezse...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Nincs meg a rendez fggvny! [krlek jelentsd ezt a hibt]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(nincs postafik)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"A nyitzenet nem lthat a szktett nzetben.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"A nyitzenet nem ll rendelkezsre.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"res mvelet\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"mellklet megtekintse mailcap segtsgvel\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"mellklet megtekintse szvegknt\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Tovbbi rszek mutatsa/elrejtse\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"ugrs az oldal aljra\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"levl jrakldse egy msik felhasznlnak\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"vlassz egy j fjlt ebben a knyvtrban\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"fjl megtekintse\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"kijellt fjl nevnek mutatsa\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"aktulis postafik felrsa (csak IMAP)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"aktulis postafik lersa (csak IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"vlts az sszes/felrt postafik nzetek kztt (csak IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"j levelet tartalmaz postafikok\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"knyvtr vlts\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"j levl keresse a postafikokban\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"fjl(ok) csatolsa ezen zenethez\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"zenet(ek) csatolsa ezen zenethez\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"Rejtett msolatot kap (BCC) lista szerkesztse\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"Msolatot kap lista (CC) szerkesztse\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"mellklet-lers szerkesztse\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"mellklet tviteli-kdols szerkesztse\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"adj meg egy fjlnevet, ahova a levl msolatt elmentem\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"csatoland fjl szerkesztse\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"felad mez szerkesztse\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"zenet szerkesztse fejlcekkel egytt\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"zenet szerkesztse\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"mellklet szerkesztse a mailcap bejegyzs hasznlatval\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"Vlaszcm szerkesztse\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"levl trgynak szerkesztse\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"Cmzett lista (TO) szerkesztse\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"j postafik ltrehozsa (csak IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"mellklet tartalom-tpusnak szerkesztse\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"ideiglenes msolat ksztse a mellkletrl\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"levl ellenrzse ispell-el\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"j mellklet sszelltsa a mailcap bejegyzssel segtsgvel\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"ezen mellklet jrakdolsa\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"zenet elmentse ksbbi kldshez\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"csatolt fjl tnevezse/mozgatsa\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"zenet elkldse\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"vlts begyazs/csatols kztt\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"fjl trlse/meghagysa klds utn\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"mellklet kdolsi informciinak frisstse\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"zenet rsa postafikba\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"zenet msolsa fjlba/postafikba\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"lnv ltrehozsa a feladhoz\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"lapozs a kperny aljra\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"lapozs a kperny kzepre\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"lapozs a kperny tetejre\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"visszafejtett (sima szveges) msolat ksztse\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"visszafejtett (sima szveges) msolat ksztse s trls\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"aktulis bejegyzs trlse\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"aktulis postafik trlse (csak IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"tmarsz sszes zenetnek trlse\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"tma sszes zenetnek trlse\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"a felad teljes cmnek mutatsa\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"zenet megjelentse s a teljes fejlc ki/bekapcsolsa\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"zenet megjelentse\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"nyers zenet szerkesztse\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"a kurzor eltti karakter trlse\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"kurzor mozgatsa egy karakterrel balra\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"kurzor mozgatsa a sz elejre\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"ugrs a sor elejre\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"bejv postafikok krbejrsa\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"teljes fjlnv vagy lnv\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"teljes cm lekrdezssel\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"kurzoron ll karakter trlse\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"ugrs a sor vgre\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"kurzor mozgatsa egy karakterrel jobbra\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"kurzor mozgatsa a sz vgre\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"lapozs lefel az elzmnyekben\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"lapozs felfel az elzmnyekben\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"karakterek trlse a sor vgig\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"karakterek trlse a sz vgig\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"karakter trlse a sorban\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"a kurzor eltti sz trlse\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"a kvetkez kulcs idzse\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"az elz s az aktulis karakter cserje\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"sz nagy kezdbetss alaktsa\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"sz kisbetss alaktsa\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"sz nagybetss alaktsa\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"adj meg egy muttrc parancsot\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"adj meg egy fjlmaszkot\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"kilps ebbl a menbl\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"mellklet szrse egy shell parancson keresztl\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"ugrs az els bejegyzsre\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"zenet 'fontos' jelzjnek lltsa\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"zenet tovbbtsa kommentekkel\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"aktulis bejegyzs kijellse\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"vlasz az sszes cmzettnek\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"fl oldal lapozs lefel\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"fl oldal lapozs felfel\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"ez a kperny\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"ugrs sorszmra\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"ugrs az utols bejegyzsre\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"vlasz a megadott levelezlistra\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"makr vgrehajtsa\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"j levl szerkesztse\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"ms postafik megnyitsa\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"ms postafik megnyitsa csak olvassra\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"levl-llapotjelz trlse\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"mintra illeszked levelek trlse\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"knyszertett levlletlts az IMAP kiszolglrl\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"levelek trlse POP kiszolglrl\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"ugrs az els levlre\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"ugrs az utols levlre\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"csak a mintra illeszked levelek mutatsa\"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"Kijellt levelek visszakldse. Cmzett: \"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Nincs j levl egyik postafikban sem.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"ugrs a kvetkez j levlre\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"ugrs a kvetkez j vagy olvasatlan levlre\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"ugrs a kvetkez tmarszre\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"ugrs a kvetkez tmra\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"ugrs a kvetkez visszalltott levlre\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"ugrs a kvetkez olvasatlan levlre\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"ugrs a levl elzmnyre ebben a tmban\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"ugrs az elz tmra\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"ugrs az elz tmarszre\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"ugrs az elz visszalltott levlre\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"ugrs az elz j levlre\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"ugrs az elz j vagy olvasatlan levlre\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"ugrs az elz olvasatlan levlre\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"tma jellse olvasottnak\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"tmarsz jellse olvasottnak\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"levl-llapotjelz belltsa\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"ments postafikba\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"levelek kijellse mintra illesztssel\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"levelek visszalltsa mintra illesztssel\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"kijells megszntetse mintra illesztssel\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"mozgats az oldal kzepre\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"mozgats a kvetkez bejegyzsre\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"mozgs egy sorral lejjebb\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"ugrs a kvetkez oldalra\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"ugrs az zenet aljra\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"idzett szveg mutatsa/elrejtse\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"idzett szveg tlpse\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"ugrs az zenet tetejre\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"zenet/mellklet tadsa csvn shell parancsnak\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"ugrs az elz bejegyzsre\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"mozgs egy sorral feljebb\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"ugrs az elz oldalra\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"bejegyzs nyomtatsa\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"cmek lekrdezse kls program segtsgvel\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"j lekrdezs eredmnynek hozzfzse az eddigiekhez\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"vltozsok mentse s kilps\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"elhalasztott levl jrahvsa\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"kperny trlse s jrarajzolsa\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"(bels)\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"aktulis postafik trlse (csak IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"vlasz a levlre\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"levl sablonknt hasznlata egy j levlhez\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"levl/mellklet mentse fjlba\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"regulris kifejezs keresse\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"regulris kifejezs keresse visszafel\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"keress tovbb\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"keress visszafel\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"keresett minta sznezse ki/be\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"parancs vgrehajtsa rsz-shellben\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"zenetek rendezse\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"zenetek rendezse fordtott sorrendben\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"bejegyzs megjellse\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"csoportos mvelet vgrehajts a kijellt zenetekre\"\n\n#: ../keymap_alldefs.h:169\n#, fuzzy\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"csoportos mvelet vgrehajts a kijellt zenetekre\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"tmarsz megjellse\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"tma megjellse\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"levl 'j' jelzjnek lltsa\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"a postafik jrarsnak ki/bekapcsolsa\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"vlts a csak postafikok/sszes fjl bngszse kztt\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"ugrs az oldal tetejre\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"aktulis bejegyzs visszalltsa\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"a tma sszes levelnek visszalltsa\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"a tmarsz sszes levelnek visszalltsa\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"a Mutt verzijnak s dtumnak megjelentse\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"mellklet mutatsa mailcap bejegyzs hasznlatval, ha szksges\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"MIME mellkletek mutatsa\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"billentylets kdjnak mutatsa\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"aktulis szrminta mutatsa\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"tma kinyitsa/bezrsa\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"sszes tma kinyitsa/bezrsa\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"PGP nyilvnos kulcs csatolsa\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"PGP paramterek mutatsa\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"PGP nyilvnos kulcs elkldse\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"PGP nyilvnos kulcs ellenrzse\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"a kulcstulajdonos azonostjnak megtekintse\"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"klasszikus php keresse\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"sszelltott lnc elfogadsa\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"jrakld hozzfzse a lnchoz\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"jrakld beszrsa a lncba\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"jrakld trlse a lncbl\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"A lnc elz elemnek kijellse\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"A lnc kvetkez elemnek kijellse\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"zenet kldse egy mixmaster jrakld lncon keresztl\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"visszafejtett msolat ksztse s trls\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"visszafejtett msolat ksztse\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"jelsz trlse a memribl\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"tmogatott nyilvnos kulcsok kibontsa\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"S/MIME opcik mutatsa\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"Nincs visszalltott levl.\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" ebben a szktett megjelentsben\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"Nincs visszalltott levl.\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"zenet szerkesztse\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"hiba a kifejezsben\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Bels hiba. Krlek rtestsd <roessler@does-not-exist.org>-t.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"ugrs a levl elzmnyre ebben a tmban\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Hiba: hibs PGP/MIME levl! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Hiba: a tbbrszes/kdolt rsz protokoll paramtere hinyzik!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID %s ellenrizetlen. Szeretnd hasznlni a kvetkezhz: %s ?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"ID %s (ellenrizetlen!) hasznlata ehhez: %s?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"ID %s hasznlata ehhez: %s?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Figyelem: nem dnttted el, hogy megbzhat-e az albbi ID: %s. \"\n#~ \"(billenty)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"Nincs kimenet az OpenSSLtl...\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Figyelmeztets: kztes tanstvny nem tallhat.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Nincs\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"tamsbg\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Nincs keressi minta.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Keress visszafel: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Keress: \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Hiba a levl elkldsekor.\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"SSL Tanstvny ellenrzs\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"SSL Tanstvny ellenrzs\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Nvterek letltse...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"hasznlat:\\n\"\n#~ \"     mutt [ -nRyzZ ] [ -e <par.> ] [ -F <fjl> ] [ -m <tpus> ] [ -f \"\n#~ \"<fjl> ]\\n\"\n#~ \"     mutt [ -nR ] [ -e <par.> ] [ -F <fjl> ] -Q <krd.> [ -Q <krd.> ] \"\n#~ \"[...]\\n\"\n#~ \"     mutt [ -nR ] [ -e <par.> ] [ -F <fjl> ] -A <lnv> [ -A <lnv> ] \"\n#~ \"[...]\\n\"\n#~ \"     mutt [ -nx ] [ -e <par.> ] [ -a <fjl> ] [ -F <fjl> ] [ -H \"\n#~ \"<fjl> ]\\n\"\n#~ \"\\t[ -i <fjl> ] [ -s <trgy> ] [ -b <cmek> ] [ -c <cmek> ] <cmek>\\n\"\n#~ \"\\t[ ... ]\\n\"\n#~ \"     mutt [ -n ] [ -e <par.> ] [ -F <fjl> ] -p\\n\"\n#~ \"     mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"paramterek:\\n\"\n#~ \"  -A <lnv>\\trvid nv kifejtse\\n\"\n#~ \"  -a <fjl>\\tfjl csatolsa a levlhez\\n\"\n#~ \"  -b <cm>\\trejtett msolatot (BCC) kld a megadott cmre\\n\"\n#~ \"  -c <cm>\\tmsolatot (CC) kld a megadott cmre\\n\"\n#~ \"  -e <parancs>\\tmegadott parancs vgrehajtsa inicializls utn\\n\"\n#~ \"  -f <fjl>\\tbetltend leveleslda megadsa\\n\"\n#~ \"  -F <fjl>\\talternatv muttrc fjl hasznlata\\n\"\n#~ \"  -H <fjl>\\tvzlat (draft) fjl megadsa, amibl a fejlcet s\\n\"\n#~ \"\\t\\ta trzset kell beolvasni\\n\"\n#~ \"  -i <fjl>\\tvlasz esetn a Mutt beleteszi ezt a fjlt a vlaszba\\n\"\n#~ \"  -m <tpus>\\taz alaprtelmezett postafik tpusnak megadsa\\n\"\n#~ \"  -n\\t\\ta Mutt nem fogja beolvasni a rendszerre vonatkoz Muttrc-t\\n\"\n#~ \"  -p\\t\\telhalasztott levl visszahvsa\\n\"\n#~ \"  -Q <vltoz>\\tkonfigurcis belltsa lekrdezse\\n\"\n#~ \"  -R\\t\\tpostafik megnyitsa csak olvashat mdban\\n\"\n#~ \"  -s <trgy>\\ttrgy megadsa (idzjelek kz kell tenni, ha van benne \"\n#~ \"szkz)\\n\"\n#~ \"  -v\\t\\tverziszm s fordtsi opcik mutatsa\\n\"\n#~ \"  -x\\t\\tmailx klds szimullsa\\n\"\n#~ \"  -y\\t\\tpostafik megadsa a `mailboxes' listbl\\n\"\n#~ \"  -z\\t\\tkilp rgtn, ha nincs j levl a postafikban\\n\"\n#~ \"  -Z\\t\\tmegnyitja az els olyan postafikot, amiben j levl van (ha \"\n#~ \"nincs, kilp)\\n\"\n#~ \"  -h\\t\\tkirja ezt az zenetet\"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"A POP kiszolgln nem lehet a 'fontos' jelzt lltani.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"A POP kiszolgln nem lehet szerkeszteni a levelet.\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"%s olvassa... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Levelek rsa... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"%s olvassa... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"pgp hvsa...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Vgzetes hiba.  Az zenetszmll nincs szinkronban.\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"Sikertelen CLOSE\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2002 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2002 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2002 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Sokan msok (akik itt nincsenek felsorolva) programrszekkel,\\n\"\n#~ \"javtsokkal, tlettekkel jrultak hozz a Mutt-hoz.\\n\"\n#~ \"\\n\"\n#~ \"    Ez a program szabad szoftver; terjesztheted s/vagy mdosthatod\\n\"\n#~ \"    a Szabad Szoftver Alaptvny ltal kiadott GNU General Public \"\n#~ \"License\\n\"\n#~ \"    (a license msodik, vagy annl ksbbi verzijnak) felttelei \"\n#~ \"szerint.\\n\"\n#~ \"\\n\"\n#~ \"    Ezt a programot abban a szellemben terjesztjk, hogy hasznos,\\n\"\n#~ \"    de NINCS SEMMIFLE GARANCIA; nincs burkolt garancia a \"\n#~ \"FORGALOMKPESSG\\n\"\n#~ \"    vagy a HELYESSG SZAVATOSSGRA EGY SAJTSGOS HASZNLATKOR.\\n\"\n#~ \"    Olvasd el a GNU General Public License-t a tovbbi informcikrt.\\n\"\n#~ \"\\n\"\n#~ \"    Ezzel a programmal meg kellett kapnod a GNU General Public License\\n\"\n#~ \"    msolatt; ha nem, rj a Szabad Szoftver Alaptvnynak: Free \"\n#~ \"Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n\n#~ msgid \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (f)orget it? \"\n#~ msgstr \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, vagy (m)gse? \"\n\n#~ msgid \"12345f\"\n#~ msgstr \"12345m\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"Az els bejegyzs lthat.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"Az utols bejegyzs lthat.\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"Ezen a szerveren az IMAP postafikokhoz nem lehet hozzfzni\"\n\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"Hagyomnyos (begyazott) PGP zenet ksztse?\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"%s nem olvashat: %s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s nem egy hagyomnyos fjl.\"\n\n#~ msgid \"unspecified protocol error\"\n#~ msgstr \"ismeretlen protokoll hiba\"\n"
  },
  {
    "path": "po/id.po",
    "content": "# translation of id.po to Indonesian\n#\n# http://www.linux.or.id\n#\n# Ronny Haryanto <ronny-mutt-po-file@haryan.to>, 1999-2007.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 1.5.17\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2007-11-07 10:39+1100\\n\"\n\"Last-Translator: Ronny Haryanto <ronny@haryan.to>\\n\"\n\"Language-Team: Indonesian <web@linux.or.id>\\n\"\n\"Language: id\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=ISO-8859-1\\n\"\n\"Content-Transfer-Encoding: 7bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Nama user di %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Password utk %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Keluar\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Hapus\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Nggak jadi hapus\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Pilih\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Bantuan\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Anda tidak punya kumpulan alias!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Kumpulan alias\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Alias sebagai: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Anda telah punya alias dengan nama tersebut!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Perhatian: Nama alias ini mungkin tidak akan bekerja. Betulkan?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Alamat: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Error: IDN '%s' tidak benar.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Nama lengkap: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Sudah betul?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Simpan ke file: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Gagal menampilkan file\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Alias telah ditambahkan.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Gagal menampilkan file\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Tidak cocok dengan nametemplate, lanjutkan?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"'compose' di file mailcap membutuhkan %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Gagal menjalankan \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Gagal membuka file untuk menge-parse headers.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Gagal membuka file untuk menghapus headers.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Gagal mengganti nama file.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"\"\n\"'compose' di file mailcap tidak ditemukan untuk %s, membuat file kosong.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"'Edit' di file mailcap membutuhkan %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"'Edit' di file mailcap tidak ditemukan untuk %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Tidak ada jenis yang cocok di file mailcap. Ditampilkan sebagai teks.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"Jenis MIME tidak didefinisikan. Tidak bisa melihat lampiran.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Tidak bisa membuat filter\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Lampiran\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Lampiran\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Tidak bisa membuat filter\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Gagal menulis!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Saya tidak tahu bagaimana mencetak itu!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Pindah dir\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Mask\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s bukan direktori.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Kotak surat [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Berlangganan [%s], File mask: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Direktori [%s], File mask: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Tidak bisa melampirkan sebuah direktori\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Tidak ada file yang sesuai dengan mask\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Pembuatan hanya didukung untuk kotak surat jenis IMAP.\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Penggantian nama hanya didukung untuk kotak surat jenis IMAP.\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Penghapusan hanya didukung untuk kotak surat jenis IMAP.\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Tidak bisa menghapus kotak surat utama\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Yakin hapus kotak surat \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Kotak surat telah dihapus.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Kotak surat tidak dihapus.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Pindah dir ke: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Gagal membaca direktori.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"File Mask: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"Urut terbalik berdasarkan (t)anggal, (a)bjad, (u)kuran atau (n)ggak diurut? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Urut berdasarkan (t)anggal, (a)bjad, (u)kuran atau (n)ggak diurut? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"taun\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nama file baru: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Tidak bisa menampilkan sebuah direktori\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Gagal menampilkan file\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Surat baru di \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: warna tidak didukung oleh term\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: tidak ada warna begitu\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: tidak ada objek begitu\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: perintah hanya untuk objek indeks\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: parameternya kurang\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Parameter tidak ditemukan\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: parameternya kurang\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: parameternya kurang\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: tidak ada atribut begitu\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"parameternya kurang\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"parameternya terlalu banyak\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"warna default tidak didukung\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Periksa tandatangan PGP?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Tidak bisa membuat file sementara!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Tidak bisa membuat tampilan filter\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Tidak bisa menyalin surat\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"Tanda tangan S/MIME berhasil diverifikasi.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Pemilik sertifikat S/MIME tidak sesuai dg pengirim.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Perhatian: Sebagian dari pesan ini belum ditandatangani.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"Tanda tangan S/MIME TIDAK berhasil diverifikasi.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"Tanda tangan PGP berhasil diverifikasi.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"Tanda tangan PGP TIDAK berhasil diverifikasi.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Perintah: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Bounce surat ke: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Bounce surat yang telah ditandai ke: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Gagal menguraikan alamat!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"IDN salah: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Bounce surat ke %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Bounce surat-surat ke %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Surat tidak dibounce.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Surat-surat tidak dibounce.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Surat telah dibounce.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Surat-surat telah dibounce.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Tidak bisa membuat proses filter\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Pipe ke perintah: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Perintah untuk mencetak belum didefinisikan.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Cetak surat?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Cetak surat-surat yang ditandai?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Surat telah dicetak\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Surat-surat telah dicetak\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Surat tidak dapat dicetak\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Surat-surat tidak dapat dicetak\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Urut terbalik tan(g)gal/d(a)ri/t(e)rima/(s)ubj/(k)e/(t)hread/(n)ggak urut/\"\n\"(u)kuran/n(i)lai/s(p)am?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Urut tan(g)gal/d(a)ri/t(e)rima/(s)ubj/(k)e/(t)hread/(n)ggak urut/(u)kuran/\"\n\"n(i)lai/s(p)am?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"gaesktnuip\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Perintah shell: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Urai-simpan%s ke kotak surat\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Urai-salin%s ke kotak surat\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Dekripsi-simpan%s ke kotak surat\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Dekripsi-salin%s ke kotak surat\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Simpan%s ke kotak surat\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Salin%s ke kotak surat\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" telah ditandai\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Sedang menyalin ke %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Ubah ke %s saat mengirim?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type diubah ke %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Character set diubah ke %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"tidak melakukan konversi\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"melakukan konversi\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Tidak ada lampiran.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Kirim\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Batal\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Lampirkan file\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Ket\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Penandaan tidak didukung.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Tandatangan, Enkrip\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Enkrip\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Tandatangan\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \" (inline)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\n#, fuzzy\nmsgid \" (S/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" tandatangan sebagai: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<default>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Enkrip dengan: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] sudah tidak ada!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] telah diubah. Update encoding?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Lampiran\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Perhatian: IDN '%s' tidak benar.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Tidak bisa menghapus satu-satunya lampiran.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"IDN di \\\"%s\\\" tidak benar: '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Melampirkan file-file yang dipilih...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Tidak bisa melampirkan %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Buka kotak surat untuk mengambil lampiran\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Tidak bisa mengunci kotak surat!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Tidak ada surat di kotak tersebut.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Tandai surat-surat yang mau dilampirkan!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Tidak bisa dilampirkan!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Peng-coding-an ulang hanya berpengaruh terhadap lampiran teks.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Lampiran yg dipilih tidak akan dikonersi.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Lampiran yg dipilih akan dikonversi.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Encoding tidak betul.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Simpan salinan dari surat ini?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Ganti nama ke: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Tidak bisa stat %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"File baru: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type harus dalam format jenis-dasar/sub-jenis\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Content-Type %s tak dikenali\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Tidak bisa membuat file %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Gagal membuat lampiran, nih...\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Tunda surat ini?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Simpan surat ke kotak surat\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Menyimpan surat ke %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Surat telah disimpan.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME sudah dipilih. Bersihkan & lanjut ? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP sudah dipilih. Bersihkan & lanjut ? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"error saat membuat konteks gpgme: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"error saat mengaktifkan protokol CMS: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"error saat membuat objek data gpgme: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"error saat mengalokasikan objek data: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"error saat me-rewind objek data: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"error saat membaca objek data: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Tidak bisa membuat file sementara\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"error saat menambah penerima `%s': %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"kunci rahasia `%s' tidak ditemukan: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"lebih dari satu kunci rahasia yang cocok dengan `%s'\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"error saat memasang `%s' sebagai kunci rahasia: %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"kesalahan mengatur notasi tanda tangan PKA: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"error saat mengenkripsi data: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"error saat menandatangani data: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Perhatian: Salah satu kunci telah dicabut.\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\"Perhatian: Kunci yg digunakan utk membuat tandatangan telah kadaluwarsa \"\n\"pada: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Perhatian: Minimal satu sertifikat sudah kadaluwarsa\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Perhatian: Tandatangan sudah kadaluwarsa pada: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\"Tidak bisa memverifikasi karena kunci atau sertifikat tidak ditemukan\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL tidak tersedia.\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"CRL yang tersedia sudah terlalu tua/lama\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Salah satu persyaratan kebijaksanaan tidak terpenuhi\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Telah terjadi suatu kesalahan di sistem\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"PERHATIAN: Masukan PKA tidak cocok dengan alamat penandatangan: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"Alamat penandatangan PKA yang sudah diverifikasi adalah: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Cap jari: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"PERHATIAN: TIDAK ada indikasi bahwa kunci tersebut dimiliki oleh orang yang \"\n\"namanya tertera di atas\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\"PERHATIAN: Kunci tersebut TIDAK dimiliki oleh oleh orang yang namanya \"\n\"tertera di atas\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"PERHATIAN: TIDAK bisa dipastikan bahwa kunci tersebut dimiliki oleh orang \"\n\"yang namanya tertera di atas\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Buat %s?\"\n\n#: crypt-gpgme.c:1462\n#, fuzzy, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Error saat mengambil informasi tentang kunci: \"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\n#, fuzzy\nmsgid \"Good signature from:\"\nmsgstr \"Tandatangan valid dari: \"\n\n#: crypt-gpgme.c:1476\n#, fuzzy\nmsgid \"*BAD* signature from:\"\nmsgstr \"Tandatangan valid dari: \"\n\n#: crypt-gpgme.c:1492\n#, fuzzy\nmsgid \"Problem signature from:\"\nmsgstr \"Tandatangan valid dari: \"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\n#, fuzzy\nmsgid \"               expires: \"\nmsgstr \"                alias: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Awal informasi tandatangan --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Error: verifikasi gagal: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Awal Notasi (tandatangan oleh: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Akhir Notasi ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Akhir informasi tandatangan --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: dekripsi gagal: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Error saat mengambil informasi tentang kunci: \"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Error: dekripsi/verifikasi gagal: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Error: penyalinan data gagal\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- AWAL SURAT PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- AWAL PGP PUBLIC KEY BLOCK --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- AWAL SURAT DG TANDATANGAN PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- AKHIR PESAN PGP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- AKHIR PGP PUBLIC KEY BLOCK --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- AKHIR PESAN DG TANDATANGAN PGP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: tidak tahu dimana surat PGP dimulai! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Error: tidak bisa membuat file sementara! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Data berikut ditandatangani dan dienkripsi dg PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Data berikut dienkripsi dg PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Akhir data yang ditandatangani dan dienkripsi dg PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Akhir data yang dienkripsi dg PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"Surat PGP berhasil didekrip.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Tidak bisa mendekripsi surat PGP\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Data berikut ditandatangani dg S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Data berikut dienkripsi dg S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Akhir data yg ditandatangani dg S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Akhir data yang dienkripsi dg S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Tidak bisa menampilkan user ID ini (encoding tidak diketahui)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Tidak bisa menampilkan user ID ini (encoding tidak valid)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Tidak bisa menampilkan user ID ini (DN tidak valid)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" alias.....: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Nama ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Tidak valid]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Berlaku Dari..: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Berlaku Sampai: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Jenis Kunci: %s, %lu bit %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Penggunaan Kunci: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"enkripsi\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"menandatangani\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"sertifikasi\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Nomer Seri .: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Dikeluarkan oleh: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Sub kunci..: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Dicabut]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Kadaluwarsa]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Tidak aktif]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Mengumpulkan data ...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Error saat mencari kunci yg mengeluarkan: %s\\n\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Error: rantai sertifikasi terlalu panjang - berhenti di sini\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Identifikasi kunci: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new gagal: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start gagal: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next gagal: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Semua kunci yang cocok ditandai kadaluwarsa/dicabut.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Keluar  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Pilih  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Cek key  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Kunci-kunci PGP dan S/MIME cocok\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"Kunci-kunci PGP cocok\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"Kunci-kunci S/MIME cocok\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"kunci-kunci cocok\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Kunci ini tidak dapat digunakan: kadaluwarsa/disabled/dicabut.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID telah kadaluwarsa/disabled/dicabut.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"Validitas ID tidak terdifinisikan.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"ID tidak valid.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"ID hanya valid secara marginal.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Anda yakin mau menggunakan kunci tsb?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Mencari kunci yg cocok dengan \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Gunakan keyID = '%s' untuk %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Masukkan keyID untuk %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Masukkan key ID: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Error saat mengambil informasi tentang kunci: \"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Kunci PGP %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, (p)gp atau \"\n\"(b)ersih? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, s/(m)ime atau \"\n\"(b)ersih? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, (p)gp atau \"\n\"(b)ersih? \"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"etsdplb\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, s/(m)ime atau \"\n\"(b)ersih? \"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"etsdmlb\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, (p)gp atau \"\n\"(b)ersih? \"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"etsdplb\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, s/(m)ime atau \"\n\"(b)ersih? \"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"etsdmlb\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Tandatangani sebagai: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Gagal memverifikasi pengirim\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Gagal menentukan pengirim\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (waktu skrg: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Keluaran dari %s%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Passphrase sudah dilupakan.\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Pesan tdk bisa dikirim inline. Gunakan PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Memanggil PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Pesan tdk bisa dikirim inline. Gunakan PGP/MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Surat tidak dikirim.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"Surat2 S/MIME tanpa hints pada isi tidak didukung.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Mencoba mengekstrak kunci2 PGP...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Mencoba mengekstrak sertifikat2 S/MIME...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: Protokol multipart/signed %s tidak dikenal! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: Struktur multipart/signed tidak konsisten! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Warning: Tidak dapat mem-verifikasi tandatangan %s/%s. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Data berikut ini ditandatangani --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Warning: Tidak dapat menemukan tandatangan. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Akhir data yang ditandatangani --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\\\"crypt_use_gpgme\\\" diset tapi tidak ada dukungan GPGME.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Memanggil S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"ya\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"nggak\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Keluar dari Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"eh..eh.. napa nih?\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Tekan sembarang tombol untuk lanjut...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' utk lihat daftar): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Tidak ada kotak surat yang terbuka.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Tidak ada surat.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Kotak surat hanya bisa dibaca.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Fungsi ini tidak diperbolehkan pada mode pelampiran-surat\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Tidak ada surat yg bisa dilihat.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, fuzzy, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"Tidak dapat %s: tidak diijinkan oleh ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Kotak surat read-only, tidak bisa toggle write!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Perubahan ke folder akan dilakukan saat keluar dari folder.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Perubahan ke folder tidak akan dilakukan.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Keluar\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Simpan\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Surat\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Balas\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grup\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"\"\n\"Kotak surat diobok-obok oleh program lain. Tanda-tanda surat mungkin tidak \"\n\"tepat.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Surat baru di kotak ini.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Kotak surat diobok-obok oleh program lain.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Tidak ada surat yang ditandai.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Gak ngapa-ngapain.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Ke surat no: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Parameter harus berupa nomer surat.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Surat itu tidak bisa dilihat.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Tidak ada nomer begitu.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"tidak jadi hapus surat(-surat)\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Hapus surat-surat yang: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Pola batas (limit pattern) tidak ditentukan.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \" Batas: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Hanya surat-surat yang: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Utk melihat semua pesan, batasi dengan \\\"semua\\\".\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Keluar dari Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Tandai surat-surat yang: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"tidak jadi hapus surat(-surat)\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Tidak jadi hapus surat-surat yang: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Tidak jadi tandai surat-surat yang: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Buka kotak surat dengan mode read-only\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Buka kotak surat\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Tidak ada kotak surat dengan surat baru.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s bukan kotak surat.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Keluar dari Mutt tanpa menyimpan?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Tidak disetting untuk melakukan threading.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Thread dipecah\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\n#, fuzzy\nmsgid \"Cannot link threads\"\nmsgstr \"hubungkan thread\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Tidak ada header Message-ID: tersedia utk menghubungkan thread\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Pertama, tandai sebuah surat utk dihubungkan ke sini\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Thread dihubungkan\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Tidak ada thread yg dihubungkan\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Anda sudah di surat yang terakhir.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Tidak ada surat yang tidak jadi dihapus.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Anda sudah di surat yang pertama.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Pencarian kembali ke atas.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Pencarian kembali ke bawah.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Surat induk tidak bisa dilihat di tampilan terbatas ini.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Tidak ada surat baru\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Surat induk tidak bisa dilihat di tampilan terbatas ini.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Tidak ada surat yang belum dibaca\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"tandai surat\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\n#, fuzzy\nmsgid \"Cannot toggle new\"\nmsgstr \"tandai/tidak baru\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Tidak ada thread lagi.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Anda di thread yang pertama.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Thread berisi surat yang belum dibaca.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"tidak jadi hapus surat\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Tidak dapat menulis surat\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"loncat ke surat induk di thread ini\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"tidak jadi hapus surat\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tmasukkan baris yang dimulai dengan ~\\n\"\n\"~b users\\ttambahkan users ke kolom Bcc:\\n\"\n\"~c users\\ttambahkan users ke kolom Cc:\\n\"\n\"~f surat2\\tsertakan surat2\\n\"\n\"~F surat2\\tsama seperti ~f, tapi juga menyertakan headers\\n\"\n\"~h\\t\\tedit header surat\\n\"\n\"~m surat2\\tmenyertakan dan mengutip surat2\\n\"\n\"~M surat2\\tsama seperti ~m, tapi menyertakan headers\\n\"\n\"~p\\t\\tcetak surat\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\ttulis file dan keluar dari editor\\n\"\n\"~r file\\t\\tbaca file ke editor\\n\"\n\"~t users\\ttambahkan users ke kolom To:\\n\"\n\"~u\\t\\tpanggil baris sebelumnya\\n\"\n\"~v\\t\\tedit surat dengan editor $visual\\n\"\n\"~w file\\t\\tsimpan surat ke file\\n\"\n\"~x\\t\\tbatalkan perubahan dan keluar dari editor\\n\"\n\"~?\\t\\tpesan ini\\n\"\n\".\\t\\tdi satu baris sendiri menyudahi input\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: bukan nomer surat yang betul.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Akhiri surat dengan . di satu baris sendiri)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Tidak ada kotak surat.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Surat berisi:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(lanjut)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"nama file tidak ditemukan.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Tidak ada sebaris pun di dalam surat.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"IDN di %s tidak benar: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: perintah editor tidak dikenali (~? utk bantuan)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"Tidak bisa membuat kotak surat sementara: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"Tidak bisa membuat kotak surat sementara: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"tidak bisa memotong kotak surat sementara: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Surat kosong!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Surat tidak diubah!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Tidak bisa membuka file surat: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Tidak bisa menambah ke kotak surat: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Error. Menyimpan file sementara: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Tandai\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Batal ditandai\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Error: Tidak ada bagian Multipart/Alternative yg bisa ditampilkan! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Lampiran #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Jenis: %s/%s, Encoding: %s, Ukuran: %s --]\\n\"\n\n#: handler.c:1281\n#, fuzzy\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Perhatian: Sebagian dari pesan ini belum ditandatangani.\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Tampil-otomatis dengan %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Menjalankan perintah tampil-otomatis: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Tidak bisa menjalankan %s. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Stderr dari tampil-otomatis %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Error:  message/external-body tidak punya parameter access-type --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Lampiran %s/%s ini \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(ukuran %s bytes) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"telah dihapus --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- pada %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- nama: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Lampiran %s/%s ini tidak disertakan, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- dan sumber eksternal yg disebutkan telah --]\\n\"\n\"[-- kadaluwarsa. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- dan tipe akses %s tsb tidak didukung --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Tidak bisa membuka file sementara!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Error: multipart/signed tidak punya protokol.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Lampiran %s/%s ini \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s tidak didukung \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(gunakan '%s' untuk melihat bagian ini)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(tombol untuk 'view-attachments' belum ditentukan!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: tidak bisa melampirkan file\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ERROR: harap laporkan bug ini\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<GAK TAU>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Penentuan tombol generik:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Fungsi-fungsi yang belum ditentukan tombolnya:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Bantuan utk %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Format berkas sejarah salah (baris %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Tidak dapat melakukan unhook * dari hook.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: jenis tidak dikenali: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: Tidak dapat menghapus %s dari %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Tidak ada pengauthentikasi yg bisa digunakan\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Mengauthentikasi (anonim)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Authentikasi anonim gagal.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Mengauthentikasi (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"Authentikasi CRAM-MD5 gagal.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Mengauthentikasi (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"Authentikasi GSSAPI gagal.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN tidak diaktifkan di server ini.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Sedang login...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Login gagal.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Mengauthentikasi (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"Authentikasi SASL gagal.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s bukan path IMAP yang valid\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Mengambil daftar kotak surat...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Tidak ada folder itu\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Membuat kotak surat: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Kotak surat harus punya nama.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Kotak surat telah dibuat.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Ganti nama kotak surat %s ke: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Penggantian nama gagal: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Kotak surat telah diganti namanya.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Kotak surat telah ditutup.\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"SSL gagal: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Menutup hubungan ke %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"IMAP server ini sudah kuno. Mutt tidak bisa menggunakannya.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Gunakan hubungan aman dg TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Tidak dapat negosiasi hubungan TLS\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Hubungan terenkripsi tidak tersedia\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Memilih %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Error saat membuka kotak surat\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Buat %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Penghapusan gagal\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Menandai %d surat-surat \\\"dihapus\\\"...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Menyimpan surat2 yg berubah... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Gagal menyimpan flags. Tetap mau ditutup aja?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Gagal menyimpan flags\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Menghapus surat-surat di server...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE (hapus) gagal\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Pencarian header tanpa nama header: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Nama kotak surat yg buruk\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Berlangganan ke %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Berhenti langganan dari %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Berlangganan ke %s...\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Berhenti langganan dari %s\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Tidak dapat mengambil header dari IMAP server versi ini.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Tidak bisa membuat file sementara %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Memeriksa cache...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Mengambil header surat...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Mengambil surat...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"Index dari surat tidak benar. Cobalah membuka kembali kotak surat tsb.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Meletakkan surat ...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Menyalin %d surat ke %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Menyalin surat %d ke %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Lanjutkan?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Tidak ada di menu ini.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Regexp tidak benar: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Subekspresi untuk template spam kurang\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: tidak ada pola yg cocok\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: tidak ada pola yg cocok\"\n\n#: init.c:861\n#, fuzzy, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"Tidak ada -rx atau -addr.\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"Perhatian: IDN '%s' tidak benar.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"lampiran: tidak ada disposisi\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"lampiran: disposisi tidak benar\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"bukan lampiran: tidak ada disposisi\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"bukan lampiran: disposisi tidak benar\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: tidak ada alamat email\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Perhatian: IDN '%s' di alias '%s' tidak benar.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"kolom header tidak dikenali\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: metoda pengurutan tidak dikenali\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): error pada regexp: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: variable tidak diketahui\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"prefix tidak diperbolehkan dengan reset\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"nilai tidak diperbolehkan dengan reset\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Penggunaan: set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s hidup\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s mati\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Tidak tanggal: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: jenis kotak surat tidak dikenali\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: nilai tidak betul\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: nilai tidak betul\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: Jenis tidak dikenali.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: jenis tidak dikenali\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Error di %s, baris %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: errors di %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: pembacaan dibatalkan sebab terlalu banyak error di %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: error pada %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: parameter terlalu banyak\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: perintah tidak dikenali\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Error di baris perintah: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"tidak bisa menentukan home direktori\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"tidak bisa menentukan username\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"tidak bisa menentukan username\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: tidak ada nama group\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"parameternya kurang\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Loop macro terdeteksi.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Tombol itu tidak ditentukan untuk apa.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Tombol itu tidak ditentukan untuk apa. Tekan '%s' utk bantuan.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: parameter terlalu banyak\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: tidak ada menu begitu\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"urutan tombol kosong\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: parameter terlalu banyak\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: tidak ada fungsi begitu di map\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: urutan tombol kosong\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: parameter terlalu banyak\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: tidak ada parameter\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: tidak ada fungsi begitu\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Masukkan kunci-kunci (^G utk batal): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Kar = %s, Oktal = %o, Desimal = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Integer overflow -- tidak bisa mengalokasikan memori!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Buset, memory abis!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Untuk menghubungi developers, kirim email ke <mutt-dev@mutt.org>.\\n\"\n\"Untuk melaporkan bug, mohon kunjungi http://bugs.mutt.org/.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Hak Cipta (C) 1996-2007 Michael R. Elkins dan kawan-kawan.\\n\"\n\"Mutt TIDAK menyertakan jaminan dalam bentuk apapun; baca 'mutt -vv'.\\n\"\n\"Mutt adalah software bebas, anda diperbolehkan utk menyebarluaskannya\\n\"\n\"dengan beberapa persyaratan; baca 'mutt -vv' utk jelasnya.\\n\"\n\n#: main.c:75\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Hak Cipta (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n\"Hak Cipta (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Hak Cipta (C) 1997-2007 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Hak Cipta (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Hak Cipta (C) 1999-2007 Brendan Cully <brendan@kublai.com>\\n\"\n\"Hak Cipta (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Hak Cipta (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"\\n\"\n\"Banyak lagi yg tidak disebutkan disini telah menyumbangkan kode, perbaikan,\\n\"\n\"dan saran.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\n#, fuzzy\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"opsi:\\n\"\n\"  -A <alias>\\tekspansi alias\\n\"\n\"  -a <file>\\tlampirkan file ke surat\\n\"\n\"  -b <alamat>\\talamat blind carbon-copy (BCC)\\n\"\n\"  -c <alamat>\\talamat carbon-copy (CC)\\n\"\n\"  -D\\t\\ttampilkan semua nilai variabel ke stdout\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \" -d <level>\\tcatat keluaran debugging ke ~/.muttdebug0\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -e <perintah>\\tperintah yang dijalankan setelah inisialisasi\\n\"\n\"  -f <file>\\tkotak surat yang dibaca\\n\"\n\"  -F <file>\\tfile muttrc alternatif\\n\"\n\"  -H <file>\\tfile draft sebagai sumber header dan badan\\n\"\n\"  -i <file>\\tfile yang disertakan dalam badan surat\\n\"\n\"  -m <jenis>\\tjenis kotak surat yang digunakan\\n\"\n\"  -n\\t\\tmenyuruh Mutt untuk tidak membaca Muttrc dari sistem\\n\"\n\"  -p\\t\\tlanjutkan surat yang ditunda\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <variabel>\\tmelakukan query thd suatu variabel konfigurasi\\n\"\n\"  -R\\t\\tbuka kotak surat dengan modus baca-saja\\n\"\n\"  -s <subj>\\tsubjek surat (harus dikutip jika mengandung spasi)\\n\"\n\"  -v\\t\\ttunjukkan versi dan definisi saat compile\\n\"\n\"  -x\\t\\tsimulasi mailx untuk mengirim surat\\n\"\n\"  -y\\t\\tpilih kotak surat yg ada di daftar `mailboxes'\\n\"\n\"  -z\\t\\tlangsung keluar jika tidak ada surat di kotak surat\\n\"\n\"  -Z\\t\\tbuka folder pertama dg surat baru, langsung keluar jika tidak ada\\n\"\n\"  -h\\t\\tpesan bantuan ini\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Opsi2 saat kompilasi:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Gagal menginisialisasi terminal.\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Error: IDN '%s' tidak benar.\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Melakukan debug tingkat %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG tidak digunakan saat compile. Cuek.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s tidak ada. Buat?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Tidak bisa membuat %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Tidak ada penerima yang disebutkan.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: tidak bisa melampirkan file.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Tidak ada kotak surat dengan surat baru.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Tidak ada kotak surat incoming yang didefinisikan.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Kotak surat kosong.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Membaca %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Kotak surat kacau!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Kotak surat diobok-obok sampe kacau!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Fatal error! Tidak bisa membuka kembali kotak surat!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Tidak bisa mengunci kotak surat!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: mbox diubah, tapi tidak ada surat yang berubah! (laporkan bug ini)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Menulis %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Melakukan perubahan...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Gagal menulis! Sebagian dari kotak surat disimpan ke %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Tidak bisa membuka kembali mailbox!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Membuka kembali kotak surat...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Ke: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Nomer indeks tidak betul.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Tidak ada entry.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Sudah tidak bisa geser lagi. Jebol nanti.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Sudah tidak bisa geser lagi. Jebol nanti.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Anda di halaman pertama.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Anda di halaman terakhir.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Anda di entry terakhir.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Anda di entry pertama.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Cari: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Cari mundur: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Tidak ketemu.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Tidak ada entry yang ditandai.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Pencarian tidak bisa dilakukan untuk menu ini.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Pelompatan tidak diimplementasikan untuk dialogs.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Penandaan tidak didukung.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Memindai %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Tidak bisa mengirim surat.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): tidak dapat mengeset waktu pada file\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Profil SASL tidak diketahui\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Gagal mengalokasikan koneksi SASL\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Gagal mengeset detil keamanan SASL\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Gagal mengeset tingkat keamanan eksternal SASL\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Gagal mengeset nama pengguna eksternal SASL\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Hubungan ke %s ditutup.\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL tidak tersedia.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Perintah pra-koneksi gagal.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Kesalahan waktu menghubungi ke server %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"IDN \\\"%s\\\" tidak benar.\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Mencari %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Tidak dapat menemukan host \\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Menghubungi %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Tidak bisa berhubungan ke %s (%s)\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Gagal menemukan cukup entropy di sistem anda\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Mengisi pool entropy: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s mempunyai permissions yang tidak aman!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL tidak dapat digunakan karena kekurangan entropy\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"Kesalahan I/O\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL gagal: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Tidak bisa mengambil sertifikat\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"Hubungan SSL menggunakan %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Tidak diketahui\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[tidak bisa melakukan penghitungan]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[tanggal tidak betul]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Sertifikat server belum sah\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Sertifikat server sudah kadaluwarsa\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Tidak bisa mengambil sertifikat\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Tidak bisa mengambil sertifikat\"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"Pemilik sertifikat S/MIME tidak sesuai dg pengirim.\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Sertifikat telah disimpan\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Sertifikat ini dimiliki oleh:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Sertifikat ini dikeluarkan oleh:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Sertifikat ini sah\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   dari %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     ke %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Cap jari: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(t)olak, terima (s)ekali, terima selal(u)\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"tsu\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(t)olak, terima (s)ekali\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ts\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Warning: Tidak dapat menyimpan sertifikat\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Sertifikat telah disimpan\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Error: tidak ada socket TLS terbuka\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Semua protokol yg tersedia utk TLS/SSL tidak aktif\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"Hubungan SSL menggunakan %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Gagal menginisialisasi data sertifikat gnutls\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Gagal memproses data sertifikat\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Cap jari SHA1: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Cap jari MD5: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"PERHATIAN: Sertifikat server masih belum valid\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"PERHATIAN: Sertifikat server sudah kadaluwarsa\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"PERHATIAN: Sertifikat server sudah dicabut\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"PERHATIAN: Nama host server tidak cocok dengan sertifikat\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"PERHATIAN: Penandatangan sertifikat server bukan CA\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Error verifikasi sertifikat (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Sertifikat bukan X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Menghubungi \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Tunnel ke %s menghasilkan error %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Kesalahan tunnel saat berbicara dg %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"\"\n\"File adalah sebuah direktori, simpan di dalamnya? [(y)a, (t)idak, (s)emua]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"yts\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"File adalah sebuah direktori, simpan di dalamnya?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"File di dalam direktori: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"File sudah ada, (t)impa, t(a)mbahkan, atau (b)atal?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"tab\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Tidak bisa menyimpan surat ke kotak surat POP\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Tambahkan surat-surat ke %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s bukan kotak surat!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Jumlah lock terlalu banyak, hapus lock untuk %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Tidak bisa men-dotlock %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Terlalu lama menunggu waktu mencoba fcntl lock!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Menunggu fcntl lock... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Terlalu lama menunggu waktu mencoba flock!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Menunggu flock... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Tidak bisa mengunci %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Tidak bisa mensinkronisasi kotak surat %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Pindahkan surat-surat yang sudah dibaca ke %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Benar-benar hapus %d surat yang ditandai akan dihapus?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Benar-benar hapus %d surat yang ditandai akan dihapus?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Pindahkan surat-surat yang sudah dibaca ke %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Kotak surat tidak berubah.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d disimpan, %d dipindahkan, %d dihapus.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d disimpan, %d dihapus.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \"Tekan '%s' untuk mengeset bisa/tidak menulis\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Gunakan 'toggle-write' supaya bisa menulis lagi!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Kotak surat ditandai tidak boleh ditulisi. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Kotak surat telah di-checkpoint.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Tidak dapat menulis surat\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Integer overflow -- tidak bisa mengalokasikan memori.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"HlmnSblm\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"HlmnBrkt\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Lampiran\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Brkt\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Sudah paling bawah.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Sudah paling atas.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Bantuan sedang ditampilkan.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Tidak ada lagi teks kutipan.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Tidak ada lagi teks yang tidak dikutp setelah teks kutipan.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"surat multi bagian tidak punya parameter batas!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Kesalahan pada ekspresi: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Ekspresi kosong\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Tidak tanggal: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Tidak ada bulan: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Bulan relatif tidak benar: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"error pada kriteria pada: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"parameter tidak ada\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"tanda kurung tidak klop: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: pengubah pola tidak valid\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: tidak didukung pada mode ini\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"parameter tidak ada\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"tanda kurung tidak klop: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"kriteria kosong\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"error: %d tidak dikenali (laporkan error ini).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Menyusun kriteria pencarian...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Menjalankan perintah terhadap surat-surat yang cocok...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Tidak ada surat yang memenuhi kriteria.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Mencari...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Sudah dicari sampe bawah, tapi tidak ketemu\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Sudah dicari sampe atas, tapi tidak ketemu\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Pencarian dibatalkan.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Masukkan passphrase PGP: \"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Passphrase PGP sudah dilupakan.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Error: tidak bisa membuat subproses utk PGP! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Akhir keluaran PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: tidak bisa membuat subproses PGP! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Dekripsi gagal\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Tidak bisa membuka subproses PGP!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Tidak dapat menjalankan PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, %s, (b)ersih? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)nline\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, %s, (b)ersih? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, %s, (b)ersih? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"etsdplb\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, %s, (b)ersih? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"etsdplb\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, %s, (b)ersih? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"etsdplb\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, %s, (b)ersih? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"etsdplb\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Mengambil PGP key...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Semua kunci yang cocok telah kadaluwarsa, dicabut, atau disabled.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP keys yg cocok dg <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP keys yg cocok dg \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Tidak bisa membuka /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Kunci PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Perintah TOP tidak didukung oleh server.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Tidak bisa menulis header ke file sementara!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Perintah UIDL tidak didukung oleh server.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"Index dari surat tidak benar. Cobalah membuka kembali kotak surat tsb.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s bukan path POP yang valid\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Mengambil daftar surat...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Tidak bisa menulis surat ke file sementara!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Menandai surat-surat \\\"dihapus\\\"...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Memeriksa surat baru...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"Nama server POP tidak diketahui.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Tidak ada surat baru di kotak surat POP.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Hapus surat-surat dari server?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Membaca surat-surat baru (%d bytes)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Error saat menulis ke kotak surat!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d dari %d surat dibaca]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Server menutup hubungan!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Mengauthentikasi (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"Tanda waktu POP tidak valid!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Mengauthentikasi (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"Authentikasi APOP gagal.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Perintah USER tidak didukung oleh server.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"URL SMTP tidak valid: %s\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Tidak bisa meninggalkan surat-surat di server.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Kesalahan waktu menghubungi ke server: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Menutup hubungan ke server POP...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Memverifikasi indeks surat...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Hubungan terputus. Hubungi kembali server POP?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Surat-surat tertunda\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Tidak ada surat yg ditunda.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Header crypto tidak betul\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"S/MIME header tidak betul\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Mendekripsi surat...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Dekripsi gagal.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Query Baru\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Buat Alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Cari\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Menunggu respons...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Perintah query tidak diketahui.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Query\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Query: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Query '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Pipa\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Cetak\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Menyimpan...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Lampiran telah disimpan.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"PERHATIAN! Anda akan menimpa %s, lanjut?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Lampiran telah difilter.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filter melalui: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Pipe ke: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Saya tidak tahu bagaimana mencetak lampiran %s!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Cetak lampiran yang ditandai?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Cetak lampiran?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Tidak dapat men-decrypt surat ini!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Lampiran\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Tidak ada sub-bagian yg bisa ditampilkan!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Tidak bisa menghapus lampiran dari server POP.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Penghapusan lampiran dari surat yg dienkripsi tidak didukung.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Penghapusan lampiran dari surat yg dienkripsi tidak didukung.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Hanya penghapusan lampiran dari surat multi bagian yang didukung.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Anda hanya dapat menge-bounce bagian-bagian 'message/rfc822'.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Gagal menge-bounce surat!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Gagal menge-bounce surat-surat!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Tidak bisa membuka file sementara %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Forward sebagai lampiran?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Tidak dapat menguraikan semua lampiran yang ditandai. MIME-forward yg \"\n\"lainnya?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Forward dalam MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Tidak bisa membuat %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Tidak dapat menemukan surat yang ditandai.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Tidak ada mailing list yang ditemukan!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Tidak dapat menguraikan semua lampiran yang ditandai. Ubah yg lainnya ke \"\n\"MIME?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Tambahkan\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Masukkan\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Hapus\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Tidak dapat mengambil type2.list milik mixmaster!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Pilih rangkaian remailer.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Error: %s tidak dapat digunakan sebagai akhir rangkaian remailer.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Rangkaian mixmaster dibatasi hingga %d elemen.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Rangkaian remailer sudah kosong.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Anda sudah memilih awal rangkaian.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Anda sudah memilih akhir rangkaian.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster tidak menerima header Cc maupun Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"Mohon variabel hostname diisi dengan benar jika menggunakan mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Error mengirimkan surat, proses keluar dengan kode %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Gagal mengirim surat.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Entry utk jenis %s di '%s' baris %d tidak diformat dengan benar\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Path untuk mailcap tidak diketahui\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"entry mailcap untuk jenis %s tidak ditemukan\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: parameternya kurang\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: parameternya terlalu banyak\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Tidak ada subjek, batal?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Tidak ada subjek, batal.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Balas ke %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Balas ke %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Tidak ada surat yang ditandai yang kelihatan!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Sertakan surat asli di surat balasan?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Menyertakan surat terkutip...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Tidak bisa menyertakan semua surat yang diminta!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Forward sebagai lampiran?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Mempersiapkan surat yg diforward...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Lanjutkan surat yang ditunda sebelumnya?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Edit surat yg diforward?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Batalkan surat yang tidak diubah?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Surat yang tidak diubah dibatalkan.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Surat ditunda.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Tidak ada penerima yang disebutkan!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Tidak ada penerima yang disebutkan.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Tidak ada subjek, batalkan pengiriman?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Tidak ada subjek.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Mengirim surat...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"tampilkan lampiran sebagai teks\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Tidak bisa mengirim surat.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Surat telah dikirim.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Mengirim di latar belakang.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Tidak ada parameter batas yang bisa ditemukan! [laporkan error ini]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s tidak ada lagi!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s bukan file biasa.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Tidak bisa membuka %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Error mengirimkan surat, proses keluar dengan kode %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Keluaran dari proses pengiriman\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"IDN %s pada saat mempersiapkan resent-from tidak benar.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Keluar.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"%s tertangkap... Keluar.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Sinyal %d tertangkap... Keluar.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Masukkan passphrase S/MIME: \"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Dipercaya \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Sudah verif.\"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Blm verif.\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Kadaluwarsa\"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Dicabut   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Tdk valid \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Tdk diketahui\"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Sertifikat2 S/MIME yg cocok dg \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"ID tidak valid.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Masukkan keyID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Tidak ditemukan sertifikat (yg valid) utk %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Error: tidak bisa membuat subproses utk OpenSSL!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"tdk ada certfile\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"tdk ada mbox\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Tdk ada keluaran dr OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"Tdk bisa tandatangan: Kunci tdk diberikan. Gunakan Tandatangan Sbg.\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Tidak bisa membuka subproses OpenSSL!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Akhir keluaran OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Error: tidak bisa membuat subproses utk OpenSSL! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Data berikut dienkripsi dg S/MIME --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Data berikut ditandatangani dg S/MIME --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Akhir data yang dienkripsi dg S/MIME. --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Akhir data yg ditandatangani dg S/MIME. --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, enkrip d(g), tandatangan (s)bg, ke(d)uanya, \"\n\"atau (b)ersih? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, enkrip d(g), tandatangan (s)bg, ke(d)uanya, \"\n\"atau (b)ersih? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"etgsdlb\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e)nkrip, (t)andatangan, enkrip d(g), tandatangan (s)bg, ke(d)uanya, \"\n\"atau (b)ersih? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"etgsdlb\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Pilih algoritma: 1: DES, 2: RC2, 3: AES, atau (b)atal? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drab\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Sesi SMTP gagal: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Sesi SMTP gagal: tidak dapat membuka %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"Sesi SMTP gagal: kesalahan pembacaan\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"Sesi SMTP gagal: kesalahan penulisan\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"URL SMTP tidak valid: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"Server SMTP tidak mendukung authentikasi\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"Authentikasi SMTP membutuhkan SASL\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"Authentikasi SASL gagal\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"Authentikasi SASL gagal\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Mengurutkan surat-surat...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Tidak bisa menemukan fungsi pengurutan! [laporkan bug ini]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(tidak ada kotak surat)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Surat induk tidak bisa dilihat di tampilan terbatas ini.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Surat induk tidak ada.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"null operation\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"akhir eksekusi bersyarat (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"paksa menampilkan lampiran menggunakan mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"tampilkan lampiran sebagai teks\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Tampilkan atau tidak sub-bagian\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"ke akhir halaman\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"kirim surat ke user lain\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"pilih file baru di direktori ini\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"tampilkan file\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"tampilkan nama file yang sedang dipilih\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"berlangganan ke kotak surat ini (untuk IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"berhenti langganan dari kotak surat ini (untuk IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"tampilkan semua kotak surat atau hanya yang langganan? (untuk IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"tampilkan daftar kotak surat dengan surat baru\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"pindah direktori\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"periksa kotak surat apakah ada surat baru\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"lampirkan file ke surat ini\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"lampirkan surat lain ke surat ini\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"edit daftar BCC\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"edit daftar CC\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"edit keterangan lampiran\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"edit transfer-encoding dari lampiran\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"masukkan nama file di mana salinan surat ini mau disimpan\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"edit file yang akan dilampirkan\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"edit kolom From\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"edit surat berikut dengan headers\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"edit surat\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"edit lampiran berdasarkan mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"edit kolom Reply-To\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"edit subjek dari surat ini\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"edit daftar TO\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"buat kotak surat baru (untuk IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"edit jenis isi (content-type) lampiran\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"ambil salinan sementara dari lampiran\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"jalankan ispell ke surat\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"buat lampiran berdasarkan mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"peng-coding-an ulang dari lampiran ini\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"simpan surat ini untuk dikirim nanti\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"ganti nama/pindahkan file lampiran\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"kirim suratnya\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"penampilan inline atau sebagai attachment\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"hapus atau tidak setelah suratnya dikirim\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"betulkan encoding info dari lampiran\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"simpan surat ke sebuah folder\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"simpan surat ke file/kotak surat\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"buat alias dari pengirim surat\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"pindahkan entry ke akhir layar\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"pindahkan entry ke tengah layar\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"pindahkan entry ke awal layar\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"buat salinan (text/plain) yang sudah di-decode\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"buat salinan (text/plain) yang sudah di-decode dan hapus\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"hapus entry ini\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"hapus kotak surat ini (untuk IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"hapus semua surat di subthread\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"hapus semua surat di thread\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"tampilkan alamat lengkap pengirim\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"tampilkan surat dan pilih penghapusan header\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"tampilkan surat\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"edit keseluruhan surat\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"hapus karakter di depan kursor\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"pindahkan kursor satu karakter ke kanan\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"ke awal kata\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"ke awal baris\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"cycle antara kotak surat yang menerima surat\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"lengkapi nama file atau alias\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"lengkapi alamat dengan query\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"hapus karakter di bawah kursor\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"ke akhir baris\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"pindahkan kursor satu karakter ke kanan\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"pindahkan kursor ke akhir kata\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"scroll daftar history ke bawah\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"scroll daftar history ke atas\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"hapus dari kursor sampai akhir baris\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"hapus dari kursor sampai akhir kata\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"hapus baris\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"hapus kata di depan kursor\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"kutip tombol yang akan ditekan berikut\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"tukar karakter di bawah kursor dg yg sebelumnya\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"ubah kata ke huruf kapital\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"ubah kata ke huruf kecil\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"ubah kata ke huruf besar\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"menjalankan perintah muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"menentukan file mask\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"keluar dari menu ini\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"mem-filter lampiran melalui perintah shell\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"ke entry pertama\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"menandai surat penting atau tidak ('important' flag)\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"forward surat dengan komentar\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"pilih entry ini\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"balas ke semua penerima\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"geser ke bawah setengah layar\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"geser ke atas setengah layar\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"layar ini\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"ke nomer indeks\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"ke entry terakhir\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"balas ke mailing list yang disebut\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"menjalankan macro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"menulis surat baru\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"pecahkan thread jadi dua\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"membuka folder lain\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"membuka folder lain dengan mode read-only\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"bersihkan suatu tanda status pada surat\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"hapus surat yang cocok dengan suatu kriteria\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"paksa mengambil surat dari server IMAP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"mengambil surat dari server POP\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"ke surat pertama\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"ke surat terakhir\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"hanya tunjukkan surat yang cocok dengan suatu kriteria\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"hubungkan surat yang telah ditandai ke yang sedang dipilih\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"buka kotak surat dengan surat baru\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"ke surat berikutnya yang baru\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"ke surat berikutnya yang baru atau belum dibaca\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"ke subthread berikutnya\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"ke thread berikutnya\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"ke surat berikutnya yang tidak dihapus\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"ke surat berikutnya yang belum dibaca\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"loncat ke surat induk di thread ini\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"ke thread sebelumnya\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"ke subthread sebelumnya\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"ke surat sebelumnya yang tidak dihapus\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"ke surat sebelumnya yang baru\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"ke surat sebelumnya yang baru atau belum dibaca\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"ke surat sebelumnya yang belum dibaca\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"tandai thread ini 'sudah dibaca'\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"tandai subthread ini 'sudah dibaca'\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"tandai status dari surat\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"simpan perubahan ke kotak surat\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"tandai surat-surat yang cocok dengan kriteria\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"tidak jadi menghapus surat-surat yang cocok dengan kriteria\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"tidak jadi menandai surat-surat yang cocok dengan kriteria\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"ke tengah halaman\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"ke entry berikutnya\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"geser ke bawah satu baris\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"ke halaman berikutnya\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"ke akhir surat\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"tampilkan atau tidak teks yang dikutip\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"lompati setelah teks yang dikutip\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"ke awal surat\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"pipe surat/lampiran ke perintah shell\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"ke entry sebelumnya\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"geser ke atas satu baris\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"ke halaman sebelumnya\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"cetak entry ini\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"gunakan program lain untuk mencari alamat\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"tambahkan hasil pencarian baru ke hasil yang sudah ada\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"simpan perubahan ke kotak surat dan keluar\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"lanjutkan surat yang ditunda\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"bersihkan layar dan redraw\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{jerohan}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"ganti nama kotak surat ini (untuk IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"balas surat\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"gunakan surat ini sebagai template\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"simpan surat/lampiran ke suatu file\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"cari dengan regular expression\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"cari mundur dengan regular expression\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"cari yang cocok berikutnya\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"cari mundur yang cocok berikutnya\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"diwarnai atau tidak jika ketemu\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"jalankan perintah di subshell\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"urutkan surat-surat\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"urutkan terbalik surat-surat\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"tandai entry ini\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"lakukan fungsi berikutnya ke surat-surat yang ditandai\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"lakukan fungsi berikutnya HANYA ke surat-surat yang ditandai\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"tandai subthread ini\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"tandai thread ini\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"tandai atau tidak sebuah surat 'baru'\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"apakah kotak surat akan ditulis ulang\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"apakah menjelajahi kotak-kotak surat saja atau semua file\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"ke awal halaman\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"tidak jadi hapus entry ini\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"tidak jadi hapus semua surat di thread\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"tidak jadi hapus semua surat di subthread\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"tunjukkan versi dan tanggal dari Mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"tampilkan lampiran berdasarkan mailcap jika perlu\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"tampilkan lampiran MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"tampilkan keycode untuk penekanan tombol\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"tampilkan kriteria batas yang sedang aktif\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"collapse/uncollapse thread ini\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"collapse/uncollapse semua thread\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"lampirkan PGP public key\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"tunjukan opsi2 PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"kirim PGP public key lewat surat\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"periksa PGP public key\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"tampilkan user ID dari key\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"periksa PGP klasik\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Terima rangkaian yang dibentuk\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Tambahkan remailer ke rangkaian\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Sisipkan remailer ke rangkaian\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Hapus remailer dari rangkaian\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Pilih elemen sebelumnya dalam rangkaian\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Pilih elemen berikutnya dalam rangkaian\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"kirim surat melalui sebuah rangkaian remailer mixmaster\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"buat salinan yang sudah di-decrypt dan hapus\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"buat salinan yang sudah di-decrypt\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"hapus passphrase dari memory\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"ekstrak kunci2 publik yg didukung\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"tunjukan opsi2 S/MIME\"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"hapus surat(-surat)\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" di tampilan terbatas ini\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"hapus surat\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"edit surat\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"kesalahan pada ekspresi\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Internal error. Beritahukan kepada <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Perhatian: Sebagian dari pesan ini belum ditandatangani.\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Error: surat PGP/MIME tidak dalam format yg betul! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Menggunakan backend GPGME, walaupun tdk ada gpg-agent yg berjalan\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Error: multipart/encrypted tidak punya parameter protokol!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID %s belum diverifikasi. Yakin mau digunakan utk %s ?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Gunakan ID (belum dipercaya!) %s utk %s ?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Gunakan ID %s utk %s ?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Warning: Anda belum memutuskan utk mempercayai ID %s. (sembarang utk \"\n#~ \"lanjut)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"Tdk ada keluaran dr OpenSSL\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Warning: Sertifikat intermediate tdk ditemukan.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Polos\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\tanggap sisa argumen sebagai alamat bahkan jika dimulai dengan \"\n#~ \"dash\\n\"\n#~ \"\\t\\tketika menggunakan -a dengan banyak berkas menggunakan -- adalah \"\n#~ \"keharusan\"\n\n#~ msgid \"esabifc\"\n#~ msgstr \"etsdilb\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Tidak ada kriteria pencarian.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Cari mundur: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Cari: \"\n\n#~ msgid \"            created: \"\n#~ msgstr \"            dibuat: \"\n\n#~ msgid \"*BAD* signature claimed to be from: \"\n#~ msgstr \"Tandatangan *TIDAK* valid diklaim seakan-akan dari: \"\n\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Error saat mengecek tandatangan\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"Cek sertifikat SSL\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"Cek Sertifikat TLS/SSL\"\n\n#~ msgid \"SASL failed to get local IP address\"\n#~ msgstr \"SASL gagal mendapatkan alamat IP lokal\"\n\n#~ msgid \"SASL failed to parse local IP address\"\n#~ msgstr \"SASL gagal membaca alamat IP lokal\"\n\n#~ msgid \"SASL failed to get remote IP address\"\n#~ msgstr \"SASL gagal mendapatkan alamat IP remote\"\n\n#~ msgid \"SASL failed to parse remote IP address\"\n#~ msgstr \"SASL gagal membaca alamat IP remote\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Mencari namespaces...\"\n\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"penggunaan: mutt [ -nRyzZ ] [ -e <perintah> ] [ -F <file> ] [ -m \"\n#~ \"<jenis> ] [ -f <file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <perintah> ] [ -F <file> ] -Q <query> [ -Q \"\n#~ \"<query> ] [...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <perintah> ] [ -F <file> ] -A <alias> [ -A \"\n#~ \"<alias> ] [...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <perintah> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <perintah> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <alamat> ] [ -c <alamat> ] \"\n#~ \"<alamat> [ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <perintah> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"Tidak bisa mengubah tanda 'penting' di server POP.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"Tidak bisa menyunting surat di server POP\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"Membaca %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Menulis surat-surat... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"Membaca %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Menjalankan PGP...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Fatal error. Jumlah surat tidak konsisten dengan server!\"\n"
  },
  {
    "path": "po/it.po",
    "content": "# Translation for mutt.\n# Copyright (C) 1998-2001 Marco d'Itri\n# Marco d'Itri <md@linux.it>, 2000.\n# $Id$\n#\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt-1.5.21\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2012-05-25 22:14+0200\\n\"\n\"Last-Translator: Marco Paolone <marcopaolone@gmail.com>\\n\"\n\"Language-Team: none\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8-bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Nome utente su %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Password per %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Esci\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Canc\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"DeCanc\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Seleziona\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Aiuto\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Non ci sono alias!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Alias\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Crea l'alias: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"È già stato definito un alias con questo nome!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Attenzione: il nome di questo alias può non funzionare. Correggerlo?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Indirizzo: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Errore: '%s' non è un IDN valido.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Nome della persona: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Confermare?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Salva nel file: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Errore nella lettura del file degli alias\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Alias aggiunto.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Errore nella ricerca nel file degli alias\"\n\n# FIXME\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Il nametemplate non corrisponde, continuare?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"La voce compose di mailcap richiede %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Errore eseguendo \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Errore nell'apertura del file per analizzare gli header.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Errore nell'apertura del file per rimuovere gli header.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Errore nel rinominare il file.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Manca la voce compose di mailcap per %s, creo un file vuoto.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"La voce edit di mailcap richiede %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Manca la voce edit di mailcap per %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"\"\n\"Non è stata trovata la voce di mailcap corrispondente.  Visualizzo come \"\n\"testo.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"Tipo MIME non definito.  Impossibile visualizzare l'allegato.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Impossibile creare il filtro\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Comando: %-20.20s Descrizione: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Comando: %-30.30s Allegato: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Allegato: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---Allegato: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Impossibile creare il filtro\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Errore di scrittura!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Non so come stamparlo!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"CambiaDir\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Maschera\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s non è una directory.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Mailbox [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Iscritto [%s], maschera del file: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Directory [%s], Maschera dei file: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Impossibile allegare una directory!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Non ci sono file corrispondenti alla maschera\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"È possibile creare solo mailbox IMAP\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"È possibile rinominare solo mailbox IMAP\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"È possibile cancellare solo mailbox IMAP\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Impossibile eliminare la cartella radice\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Cancellare davvero la mailbox \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Mailbox cancellata.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Mailbox non cancellata.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Cambia directory in: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Errore nella lettura della directory.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Maschera dei file: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"Ordino al contrario per (d)ata, (a)lfabetico, dimensioni(z) o (n)ulla? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Ordino per (d)ata, (a)lfabetico, dimensioni(z) o (n)ulla? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dazn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nuovo nome del file: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Impossibile vedere una directory\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"C'è stato un errore nella visualizzazione del file\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Nuova posta in \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: il colore non è gestito dal terminale\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: colore inesistente\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: oggetto inesistente\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: comando valido solo per gli oggetti index, body, header\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: troppo pochi argomenti\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Mancano dei parametri.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: troppo pochi argomenti\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: troppo pochi argomenti\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: attributo inesistente\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"troppo pochi argomenti\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"troppi argomenti\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"i colori predefiniti non sono gestiti\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Verifico la firma PGP?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Impossibile creare il file temporaneo!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Impossibile creare il filtro di visualizzazione\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Impossibile copiare il messaggio\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"Firma S/MIME verificata con successo.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Il proprietario del certificato S/MIME non corrisponde al mittente.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Attenzione: una parte di questo messaggio non è stata firmata.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"Non è stato possibile verificare la firma S/MIME.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"Firma PGP verificata con successo.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"Non è stato possibile verificare la firma PGP.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Comando: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Attenzione: il messaggio non contiene alcun header From:\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Rimbalza il messaggio a: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Rimbalza i messaggi segnati a: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Errore nella lettura dell'indirizzo!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"IDN non valido: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Rimbalza il messaggio a %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Rimbalza i messaggi a %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Messaggio non rimbalzato.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Messaggi non rimbalzati.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Messaggio rimbalzato.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Messaggi rimbalzati.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Impossibile creare il processo filtro\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Apri una pipe con il comando: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Non è stato definito un comando di stampa.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Stampare il messaggio?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Stampare i messaggi segnati?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Messaggio stampato\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Messaggi stampati\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Impossibile stampare il messaggio\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Impossibile stampare i messaggi\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Comando della shell: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Decodifica e salva nella mailbox%s\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Decodifica e copia nella mailbox%s\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Decifra e salva nella mailbox%s\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Decifra e copia nella mailbox%s\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Salva nella mailbox%s\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Copia nella mailbox%s\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" i messaggi segnati\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Copio in %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Convertire in %s al momento dell'invio?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Il Content-Type è stato cambiato in %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Il set di caratteri è stato cambiato in %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"non convertito\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"convertito\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Non ci sono allegati.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Spedisci\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Abbandona\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Allega un file\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Descr\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"Non supportato\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Firma, Crittografa\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Crittografa\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Firma\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"Nessuno\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (PGP in linea)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" firma come: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<predefinito>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Cifra con: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] non esiste più!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] è stato modificato. Aggiornare la codifica?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Allegati\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Attenzione: '%s' non è un IDN valido.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Non si può cancellare l'unico allegato.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"IDN non valido in \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Allego i file selezionati...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Impossibile allegare %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Aprire la mailbox da cui allegare il messaggio\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Impossibile bloccare la mailbox!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"In questo folder non ci sono messaggi.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Segnare i messaggi da allegare!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Impossibile allegare!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"La ricodifica ha effetti solo sugli allegati di testo.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"L'allegato corrente non sarà convertito.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"L'allegato corrente sarà convertito.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Codifica non valida.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Salvare una copia di questo messaggio?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Rinomina in: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Impossibile eseguire lo stat di %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Nuovo file: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type non è nella forma base/sub\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Content-Type %s sconosciuto\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Impossibile creare il file %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Quel che abbiamo qui è l'impossibilità di fare un allegato\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Rimandare a dopo questo messaggio?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Salva il messaggio nella mailbox\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Scrittura del messaggio in %s...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Messaggio scritto.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME già selezionato. Annullare & continuare? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP già selezionato. Annullare & continuare? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"errore nella creazione del contesto gpgme: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"errore nell'abilitazione del protocollo CMS: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Impossibile creare il file temporaneo\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"errore nell'aggiunta dell'indirizzo `%s': %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"chiave segreta `%s' non trovata: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"specifica della chiave segreta `%s' ambigua\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"errore nell'impostazione della chiave segreta `%s': %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"errore nell'impostare la notazione della firma PKA: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"errore nella cifratura dei dati: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"errore nel firmare i dati: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Attenzione: una delle chiavi è stata revocata\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Attenzione: la chiave usata per creare la firma è scaduta il: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Attenzione: almeno una chiave di certificato è scaduta\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Attenzione: la firma è scaduta il: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Impossibile verificare a causa di chiave o certificato mancante\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"La CRL non è disponibile\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"La CRL disponibile è deprecata\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Si è verificato un errore di sistema\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"ATTENZIONE: la voce PKA non corrisponde all'indirizzo del firmatario: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"L'indirizzo del firmatario verificato PKA è: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Fingerprint: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"ATTENZIONE: Non abbiamo NESSUNA indicazione che la chiave appartenga alla \"\n\"persona citata\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"ATTENZIONE: la chiave NON APPARTIENE alla persona citata\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"ATTENZIONE: NON è certo che la chiave appartenga alla persona citata\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"alias: \"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"creato: \"\n\n#: crypt-gpgme.c:1462\n#, fuzzy, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Errore nel prelevare le informazioni sulla chiave: \"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"Firma valida da:\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"Firma *NON VALIDA* da:\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Problema con la firma da:\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"               scade: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Inizio dei dati firmati --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Errore: verifica fallita: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Inizio notazione (firma di %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Fine notazione ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fine dei dati firmati --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errore: decifratura fallita: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Errore nell'estrazione dei dati della chiave!\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Errore: decifratura/verifica fallita: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Errore: copia dei dati fallita\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- INIZIO DEL MESSAGGIO PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- INIZIO DEL BLOCCO DELLA CHIAVE PUBBLICA --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- INIZIO DEL MESSAGGIO FIRMATO CON PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- FINE DEL MESSAGGIO PGP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- FINE DEL BLOCCO DELLA CHIAVE PUBBLICA --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- FINE DEL MESSAGGIO FIRMATO CON PGP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errore: impossibile trovare l'inizio del messaggio di PGP! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Errore: impossibile creare il file temporaneo! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- I seguenti dati sono firmati e cifrati con PGP/MIME  --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- I seguenti dati sono cifrati con PGP/MIME  --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Fine dei dati firmati e cifrati con PGP/MIME  --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Fine dei dati cifrati con PGP/MIME  --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"Messaggio PGP decifrato con successo.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Impossibile decifrare il messaggio PGP\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- I seguenti dati sono firmati con S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- I seguenti dati sono cifrati con S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Fine dei dati firmati com S/MIME. --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Fine dei dati cifrati con S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Impossibile mostrare questo ID utente (codifica sconosciuta)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Impossibile mostrare questo ID utente (codifica non valida)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Impossibile mostrare questo ID utente (DN non valido)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" alias ......: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Nome ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Non valido]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Valido da : %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Valido fino a ..: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Tipo di chiave ..: %s, %lu bit %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Uso della chiave .: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"cifratura\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"firma\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"certificazione\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Numero di serie .: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Emesso da .: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Subkey ....: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Revocato]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Scaduto]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Disabilitato]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Raccolta dei dati...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Errore nella ricerca dell'emittente della chiave: %s\\n\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Errore: catena di certificazione troppo lunga - stop\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Key ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpg_new fallito: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start fallito: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next fallito: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Tutte le chiavi corrispondenti sono scadute/revocate.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Esci  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Seleziona  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Controlla chiave  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Chiavi PGP e S/MIME corrispondenti\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"Chiavi PGP corrispondenti\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"Chiavi S/MIME corrispondenti\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"Chiavi corrispondenti\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Questa chiave non può essere usata: è scaduta/disabilitata/revocata.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"L'ID è scaduto/disabilitato/revocato.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"L'ID ha validità indefinita.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"L'ID non è valido.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"L'ID è solo marginalmente valido.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Vuoi veramente usare questa chiave?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Ricerca chiavi corrispondenti a \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Uso il keyID \\\"%s\\\" per %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Inserisci il keyID per %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Inserire il key ID: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Errore nell'estrazione dei dati della chiave!\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Chiave PGP %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME cifra(e), firma(s), firma (c)ome, entram(b)i, (p)gp, annullare(c)?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP: cifra(e), firma(s), firma (c)ome, entram(b)i, s/(m)ime, annullare(c)?\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME cifra(e), firma(s), firma (c)ome, entram(b)i, (p)gp, annullare(c)?\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"esabpfc\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP: cifra(e), firma(s), firma (c)ome, entram(b)i, s/(m)ime, annullare(c)?\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"esabmfc\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME cifra(e), firma(s), firma (c)ome, entram(b)i, (p)gp, annullare(c)?\"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"esabpfc\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP: cifra(e), firma(s), firma (c)ome, entram(b)i, s/(m)ime, annullare(c)?\"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"esabmfc\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Firma come: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Errore nella verifica del mittente\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Errore nel rilevamento del mittente\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (orario attuale: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Segue l'output di %s%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Passphrase dimenticata/e.\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Il messaggio non può essere inviato in linea.  Riutilizzare PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Eseguo PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Il messaggio non può essere inviato in linea.  Riutilizzare PGP/MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Il messaggio non è stato inviato.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"I messaggi S/MIME senza suggerimenti del contenuto non sono gestiti.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Cerco di estrarre le chiavi PGP...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Cerco di estrarre i certificati S/MIME...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errore: protocollo multipart/signed %s sconosciuto! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errore: struttura multipart/signed incoerente! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Attenzione: impossibile verificare firme %s/%s. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- I seguenti dati sono firmati --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Attenzione: non è stata trovata alcuna firma. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fine dei dati firmati --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\"\\\"crypt_use_gpgme\\\" impostato ma non compilato con il supporto a GPGME.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Richiamo S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"sì\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"no\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Uscire da mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"errore sconosciuto\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Premere un tasto per continuare...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' per la lista): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Nessuna mailbox aperta.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Non ci sono messaggi.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"La mailbox è di sola lettura.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funzione non permessa nella modalità attach-message.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Non ci sono messaggi visibili.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, fuzzy, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"Impossibile %s: operazione non permessa dalle ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Impossibile (dis)abilitare la scrittura a una mailbox di sola lettura!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"I cambiamenti al folder saranno scritti all'uscita dal folder.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"I cambiamenti al folder non saranno scritti.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Esci\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Salva\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Mail\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Rispondi\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Gruppo\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"\"\n\"La mailbox è stata modificata dall'esterno.  I flag possono essere sbagliati.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"C'è nuova posta in questa mailbox.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"La mailbox è stata modificata dall'esterno.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Nessun messaggio segnato.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Niente da fare.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Salta al messaggio: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"L'argomento deve essere il numero di un messaggio.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Questo messaggio non è visibile.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Numero del messaggio non valido.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"ripristina messaggio(i)\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Cancella i messaggi corrispondenti a: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Non è attivo alcun modello limitatore.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Limita: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Limita ai messaggi corrispondenti a: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Per visualizzare tutti i messaggi, limitare ad \\\"all\\\".\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Uscire da Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Segna i messaggi corrispondenti a: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"ripristina messaggio(i)\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Ripristina i messaggi corrispondenti a: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Togli il segno ai messaggi corrispondenti a: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Sessione con i server IMAP terminata.\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Apri la mailbox in sola lettura\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Apri la mailbox\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Nessuna mailbox con nuova posta.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s non è una mailbox.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Uscire da Mutt senza salvare?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Il threading non è attivo.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Thread corrotto\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\"Il thread non può essere corrotto, il messaggio non fa parte di un thread\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\n#, fuzzy\nmsgid \"Cannot link threads\"\nmsgstr \"collega thread\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Nessun header Message-ID: disponibile per collegare il thread\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Segnare prima il messaggio da collegare qui\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Thread collegati\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Nessun thread collegato\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Sei all'ultimo messaggio.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Nessun messaggio ripristinato.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Sei al primo messaggio.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"La ricerca è ritornata all'inizio.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"La ricerca è ritornata al fondo.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Il messaggio padre non è visibil in questa visualizzazione limitata.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Non ci sono nuovi messaggi\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Il messaggio padre non è visibil in questa visualizzazione limitata.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Non ci sono messaggi non letti\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"aggiungi flag al messaggio\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\n#, fuzzy\nmsgid \"Cannot toggle new\"\nmsgstr \"(dis)abilita nuovo\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Non ci sono altri thread.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Sei al primo thread.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Il thread contiene messaggi non letti.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"ripristina messaggio\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Impossibile scrivere il messaggio\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"segna messaggio(i) come letto(i)\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"ripristina messaggio\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tinserisci una linea che inizia con un solo ~\\n\"\n\"~b utenti\\taggiungi utenti al campo Bcc:\\n\"\n\"~c utenti\\taggiungi utenti al campo Cc:\\n\"\n\"~f messaggi\\tincludi dei messaggi\\n\"\n\"~F messaggi\\tcome ~f, ma include anche gli header\\n\"\n\"~h\\t\\tmodifica gli header del messaggio\\n\"\n\"~m messaggi\\tincludi e cita dei messaggi\\n\"\n\"~Mmessaggi\\tcome ~m, ma include anche gli header\\n\"\n\"~p\\t\\tstampa il messaggio\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tscrivi il file e abbandona l'editor\\n\"\n\"~r file\\t\\tleggi un file nell'editor\\n\"\n\"~t utenti\\taggiungi utenti al campo To:\\n\"\n\"~u\\t\\trichiama la linea precedente\\n\"\n\"~v\\t\\tmodifica il messaggio con il $VISUAL editor\\n\"\n\"~w file\\t\\tscrivi il messaggio nel file\\n\"\n\"~x\\t\\tabbandona i cambiamenti e lascia l'editor\\n\"\n\"~?\\t\\tquesto messaggio\\n\"\n\"~.\\t\\tda solo su una linea termina l'input\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: numero del messaggio non valido.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Termina il messaggio con un . su una linea da solo)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Nessuna mailbox.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Il messaggio contiene:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(continua)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"manca il nome del file.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Non ci sono linee nel messaggio.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"IDN non valido in %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: comando dell'editor sconosciuto (~? per l'aiuto)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"impossibile creare il folder temporaneo: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"impossibile scrivere il folder temporaneo: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"impossibile troncare il folder temporaneo: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Il file del messaggio è vuoto!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Messaggio non modificato!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Impossibile aprire il file del messaggio: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Impossibile accodare al folder: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Errore. Preservato il file temporaneo: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Imposta il flag\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Cancella il flag\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Errore: impossibile visualizzare ogni parte di multipart/alternative! \"\n\"--]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Allegato #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Tipo: %s/%s, Codifica: %s, Dimensioni: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Uno o più parti di questo messaggio potrebbero non essere mostrate\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Visualizzato automaticamente con %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Richiamo il comando di autovisualizzazione: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Impossibile eseguire %s. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- stderr dell'autoview di %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Errore: message/external-body non ha un parametro access-type --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Questo allegato %s/%s \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(dimensioni %s byte) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"è stato cancellato -- ]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- su %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- nome: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Questo allegato %s/%s non è incluso, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- e l'origine esterna indicata è --]\\n\"\n\"[-- scaduta. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- e il l'access-type %s indicato non è gestito --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Impossibile aprire il file temporaneo!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Errore: multipart/signed non ha protocollo.\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Questo è un allegato \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s non è gestito \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(usa '%s' per vederlo)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"('view-attachments' deve essere assegnato a un tasto!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: impossibile allegare il file\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ERRORE: per favore segnalare questo bug\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<SCONOSCIUTO>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Assegnazioni generiche:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Funzioni non assegnate:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Aiuto per %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Formato del file della cronologia errato (riga %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: impossibile usare unhook * dentro un hook.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: tipo di hook sconosciuto: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: impossibile cancellare un %s dentro un %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Non ci sono autenticatori disponibili.\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Autenticazione in corso (anonimo)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"L'autenticazione anonima è fallita.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Autenticazione in corso (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"Autenticazione CRAM-MD5 fallita.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Autenticazione in corso (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"Autenticazione GSSAPI fallita.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN non è abilitato su questo server.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Faccio il login...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Login fallito.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Autenticazione in corso (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"Autenticazione SASL fallita.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s non è un percorso IMAP valido\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Scarico la lista dei folder...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Folder inesistente\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Crea la mailbox: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"La mailbox deve avere un nome.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Mailbox creata.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Rinomina la mailbox %s in: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Impossibile rinominare: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Mailbox rinominata.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Mailbox chiusa\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"CREATE fallito: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Chiusura della connessione a %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Questo server IMAP è troppo vecchio, mutt non può usarlo.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Vuoi usare TLS per rendere sicura la connessione?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Impossibile negoziare la connessione TLS\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Connessione cifrata non disponibile\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Seleziono %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Errore durante l'apertura della mailbox\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Creare %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Expunge fallito\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Segno cancellati %d messaggi...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Salvataggio dei messaggi modificati... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Errore nel salvare le flag. Chiudere comunque?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Errore nel salvataggio delle flag\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Cancellazione dei messaggi dal server...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE fallito\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Ricerca header senza nome dell'header: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Nome della mailbox non valido\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Iscrizione a %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Rimozione della sottoscrizione da %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Iscritto a %s\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Sottoscrizione rimossa da %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Impossibile scaricare gli header da questa versione del server IMAP.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Impossibile creare il file temporaneo %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Analisi della cache...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Scaricamento header dei messaggi...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Scaricamento messaggio...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"L'indice dei messaggi non è corretto; provare a riaprire la mailbox.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Invio messaggio...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Copia di %d messaggi in %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Copia messaggio %d in %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Continuare?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Non disponibile in questo menù.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Espressione regolare errata: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: nessun modello corrispondente\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: nessun modello corrispondente\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%sgroup: -rx o -addr mancanti.\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%sgroup: attenzione: ID '%s' errato.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"allegati: nessuna disposizione\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"allegati: disposizione non valida\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: nessun indirizzo\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Attenzione: l'IDN '%s' nell'alias '%s' non è valido.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"Campo dell'header non valido\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: metodo di ordinamento sconosciuto\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): errore nella regexp: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: variabile sconosciuta\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"prefix non è consentito con reset\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"value non è consentito con reset\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Uso: set variabile=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s è attivo\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s non è attivo\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Valore per l'opzione %s non valido: \\\"%s\\\"\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: tipo di mailbox non valido\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: valore non valido (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"errore formato\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: valore non valido\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: tipo sconosciuto.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: tipo sconosciuto\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Errore in %s, linea %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: errori in %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: lettura terminata a causa di troppi errori in %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: errore in %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: troppi argomenti\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: comando sconosciuto\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Errore nella riga di comando: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"impossibile determinare la home directory\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"impossibile determinare l'username\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"impossibile determinare l'username\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: nessun nome per il gruppo\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Individuato un loop di macro.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Il tasto non è assegnato.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Il tasto non è assegnato.  Premere '%s' per l'aiuto.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: troppi argomenti\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: menù inesistente\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"sequenza di tasti nulla\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: troppi argomenti\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: la funzione non è nella mappa\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: sequenza di tasti nulla\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: troppi argomenti\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: non ci sono argomenti\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: la funzione non esiste\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Inserisci i tasti (^G per annullare): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Car = %s, Ottale = %o, Decimale = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Overflow intero.-- impossibile allocare memoria!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Memoria esaurita!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Per contattare gli sviluppatori scrivere a <mutt-dev@mutt.org>.\\n\"\n\"Per segnalare un bug, visitare http://bugs.mutt.org/.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2009 Michael R. Elkins e altri.\\n\"\n\"Mutt non ha ALCUNA GARANZIA; usare `mutt -vv' per i dettagli.\\n\"\n\"Mutt è software libero e sei invitato a ridistribuirlo\\n\"\n\"sotto certe condizioni; scrivere `mutt -vv' per i dettagli.\\n\"\n\n#: main.c:75\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2007 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2008 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2009 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"\\n\"\n\"Molti altri non citati qui hanno contribuito con codice,\\n\"\n\"correzioni e suggerimenti.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\n#, fuzzy\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"usage: mutt [<opzioni>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<opzioni>] [-x] [-Hi <file>] [-s <oggetto>] [-bc <indir>] [-a \"\n\"<file> [...] --] <indir> [...]\\n\"\n\"       mutt [<opzioni>] [-x] [-s <oggetto>] [-bc <indir>] [-a <file> [...] \"\n\"--] <addr> [...] < messaggio\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"opzioni:\\n\"\n\"  -A <alias>\\tespande l'alias indicato\\n\"\n\"  -a <file>[...]  --\\tallega uno o più file al messaggio\\n\"\n\"\\t\\tla lista di file va terminata con la sequenza \\\"--\\\"\\n\"\n\"  -b <indir>\\tindirizzo in blind carbon copy (BCC)\\n\"\n\"  -c <indir>\\tindirizzo in carbon copy (CC)\\n\"\n\"  -D\\t\\tstampa il valore di tutte le variabile sullo standard output\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <livello>\\tregistra l'output di debug in ~/.muttdebug0\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -e <comando>\\tcomando da eseguire dopo l'inizializzazione\\n\"\n\"  -f <file>\\tspecificaquale mailbox leggere\\n\"\n\"  -F <file>\\tspecifica un file muttrc alternativo\\n\"\n\"  -H <file>\\tspecifica un file di esempio da cui leggere header e body\\n\"\n\"  -i <file>\\tspecifica un file che mutt dovrebbe includere nella risposta\\n\"\n\"  -m <tipo>\\tspecifica il tipo di mailbox predefinita\\n\"\n\"  -n\\t\\tdisabilita la lettura del Muttrc di sistema\\n\"\n\"  -p\\t\\trichiama un messaggio rimandato\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <variabile>\\tinterroga una variabile di configurazione\\n\"\n\"  -R\\t\\tapre la mailbox in sola lettura\\n\"\n\"  -s <sogg>\\tspecifica il Subject (deve essere tra apici se ha spazi)\\n\"\n\"  -v\\t\\tmostra la versione e le definizioni della compilazione\\n\"\n\"  -x\\t\\tsimula la modalità invio di mailx\\n\"\n\"  -y\\t\\tseleziona una mailbox specificata nella lista `mailboxes'\\n\"\n\"  -z\\t\\tesce immediatamente se non ci sono messaggi nella mailbox\\n\"\n\"  -Z\\t\\tapre il primo folder con un nuovo messaggio, esce se non ce ne sono\\n\"\n\"  -h\\t\\tquesto messaggio di aiuto\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Opzioni di compilazione:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Errore nell'inizializzazione del terminale.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Errore: il valore '%s' non è valido per -d.\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Debugging al livello %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG non è stato definito durante la compilazione.  Ignorato.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s non esiste. Crearlo?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Impossibile creare %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Impossibile analizzare il collegamento mailto:\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Nessun destinatario specificato.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: impossibile allegare il file.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Nessuna mailbox con nuova posta.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Non è stata definita una mailbox di ingresso.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"La mailbox è vuota.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Lettura di %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"La mailbox è rovinata!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"La mailbox è stata rovinata!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Errore fatale!  Impossibile riaprire la mailbox!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Impossibile bloccare la mailbox!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"sync: mbox modified, but no modified messages! (segnala questo bug)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Scrittura di %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Applico i cambiamenti...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Scrittura fallita!  Salvo la mailbox parziale in %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Impossibile riaprire la mailbox!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Riapro la mailbox...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Salta a: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Numero dell'indice non valido.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Nessuna voce.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Non puoi spostarti più in basso.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Non puoi spostarti più in alto.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Sei alla prima pagina.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Sei all'ultima pagina.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Sei all'ultima voce.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Sei alla prima voce.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Cerca: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Cerca all'indietro: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Non trovato.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Nessuna voce segnata.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"In questo menù la ricerca non è stata implementata.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"I salti non sono implementati per i dialog.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Non è possibile segnare un messaggio.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Scansione di %s...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"Impossibile salvare il messaggio su disco\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message():·impossibile impostare l'orario del file\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Profilo SASL sconosciuto\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Errore nell'allocare la connessione SASL\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Errore nell'impostare le proprietà di sicurezza SASL\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Errore nell'impostare il nome utente SASL esterno\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Connessione a %s chiusa.\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL non è disponibile.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Comando di preconnessione fallito.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Errore di comunicazione con %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"IDN \\\"%s\\\" non valido.\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Ricerca di %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Impossibile trovare l'host \\\"%s\\\".\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Connessione a %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Impossibile connettersi a %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Impossibile trovare abbastanza entropia nel sistema\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Riempimento del pool di entropia: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s ha permessi insicuri!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL disabilitato a causa della mancanza di entropia\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"errore di I/O\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL fallito: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Impossibile ottenere il certificato dal peer\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"Connessione SSL con %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Sconosciuto\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[impossibile da calcolare]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[data non valida]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Il certificato del server non è ancora valido\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Il certificato del server è scaduto\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"impossibile ottenere il soggetto del certificato\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"Impossibile ottenere il nome comune del certificato\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"il proprietario del certificato non corrisponde al nome host %s\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Verifica nome host del certificato fallita: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Questo certificato appartiene a:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Questo certificato è stato emesso da:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Questo certificato è valido\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   da %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     a %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Fingerprint: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"Verifica del certificato SSL (certificato %d di %d nella catena)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r)ifiuta, accetta questa v(o)lta, (a)ccetta sempre\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"roa\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r)ifiuta, accetta questa v(o)lta\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ro\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Attenzione: impossibile salvare il certificato\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Certificato salvato\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Errore: nessun socket TLS aperto\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Disabilitati tutti i protocolli di connessione disponibili per TLS/SSL\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"Connessione SSL/TLS con %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Errore nell'inizializzazione dei dati del certificato gnutls\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Errore nell'analisi dei dati del certificato\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\"Attenzione: il certificato del server è stato firmato con un algoritmo non \"\n\"sicuro\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Fingerprint SHA1: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Fingerprint MD5: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"ATTENZIONE: il certificato del server non è ancora valido\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"ATTENZIONE: il certificato del server è scaduto\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"ATTENZIONE: il certificato del server è stato revocato\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"ATTENZIONE: il nome host del server non corrisponde al certificato\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"\"\n\"ATTENZIONE: il firmatario del certificato del server non è una CA valida\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Errore nella verifica del certificato (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Il certificato non è X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Connessione a \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Il tunnel verso %s ha restituito l'errore %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Errore del tunnel nella comunicazione con %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Il file è una directory, salvare all'interno? [(s)ì, (n)o, (t)utti]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"snt\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Il file è una directory, salvare all'interno?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"File nella directory: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"\"\n\"Il file esiste, s(o)vrascrivere, (a)ccodare, o (c)ancellare l'operazione?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"oac\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Impossibile salvare il messaggio nella mailbox POP.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Accodo i messaggi a %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s non è una mailbox!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Tentati troppi lock, rimuovere il lock di %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Impossibile fare un dotlock su %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Timeout scaduto durante il tentativo di lock fcntl!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"In attesa del lock fcntl... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Timeout scaduto durante il tentativo di lock flock!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"In attesa del lock flock... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Impossibile fare il lock di %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Impossibile sincronizzare la mailbox %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Spostare i messaggi letti in %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Eliminare %d messaggio cancellato?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Eliminare %d messaggi cancellati?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Spostamento dei messaggi letti in %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"La mailbox non è stata modificata.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d tenuti, %d spostati, %d cancellati.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d tenuti, %d cancellati.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Premere '%s' per (dis)abilitare la scrittura\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Usare 'toggle-write' per riabilitare la scrittura!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"La mailbox è indicata non scrivibile. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Effettuato il checkpoint della mailbox.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Impossibile scrivere il messaggio\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Overflow intero -- impossibile allocare memoria.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"PgPrec\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"PgSucc\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Vedi Allegato\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Succ\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Il messaggio finisce qui.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"L'inizio del messaggio è questo.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"L'help è questo.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Non c'è altro testo citato.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Non c'è altro testo non citato dopo quello citato.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"il messaggio multipart non ha il parametro boundary!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Errore nell'espressione: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Espressione vuota\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Giorno del mese non valido: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Mese non valido: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Data relativa non valida: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"errore nel modello in: %s\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"modello mancante: %s\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"parentesi fuori posto: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: modello per il modificatore non valido\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: non gestito in questa modalità\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"parametro mancante\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"parentesi fuori posto: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"modello vuoto\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"errore: unknown op %d (segnala questo errore).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Compilo il modello da cercare...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Eseguo il comando sui messaggi corrispondenti...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Nessun messaggio corrisponde al criterio.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Ricerca...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"La ricerca è arrivata in fondo senza trovare una corrispondenza\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"La ricerca è arrivata all'inizio senza trovare una corrispondenza\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Ricerca interrotta.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Inserisci la passphrase di PGP:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Passphrase di PGP dimenticata.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Errore: impossibile creare il sottoprocesso PGP --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fine dell'output di PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Errore: non è stato possibile creare un sottoprocesso PGP! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Decifratura fallita\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Impossibile aprire il sottoprocesso PGP!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Impossibile eseguire PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP: cifra(e), firma(s), firma (c)ome, entram(b)i, formato %s, (a)nnullare? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)n linea\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP: cifra(e), firma(s), firma (c)ome, entram(b)i, (a)nnullare? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP: cifra(e), firma(s), firma (c)ome, entram(b)i, formato %s, (a)nnullare? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"esabfci\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP: cifra(e), firma(s), firma (c)ome, entram(b)i, (a)nnullare? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"esabfc\"\n\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"PGP: cifra(e), firma(s), firma (c)ome, entram(b)i, formato %s, (a)nnullare? \"\n\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"esabfci\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP: cifra(e), firma(s), firma (c)ome, entram(b)i, (a)nnullare? \"\n\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"esabfc\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Prendo la chiave PGP...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Tutte le chiavi corrispondenti sono scadute, revocate o disattivate.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"Chiavi PGP corrispondenti a <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"Chiavi PGP corrispondenti a \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Impossibile aprire /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Chiave PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Il comando TOP non è gestito dal server.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Impossibile scrivere l'header nel file temporaneo!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Il comando UIDL non è gestito dal server.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d messaggi sono andati persi. Tentativo di riaprire la mailbox.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s non è un percorso POP valido\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Prendo la lista dei messaggi...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Impossibile scrivere il messaggio nel file temporaneo!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Segno i messaggi come cancellati...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Verifica nuovi messaggi...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"L'host POP non è stato definito.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Non c'è nuova posta nella mailbox POP.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Cancellare i messaggi dal server?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Lettura dei nuovi messaggi (%d byte)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Errore durante la scrittura della mailbox!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d messaggi letti su %d]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Il server ha chiuso la connessione!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Autenticazione in corso (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"Marca temporale POP non valida!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Autenticazione in corso (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"Autenticazione APOP fallita.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Il comando USER non è gestito dal server.\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"URL del server POP non valido: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Impossibile lasciare i messaggi sul server.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Errore nella connessione al server: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Chiusura della connessione al server POP...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Verifica degli indici dei messaggi...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Connessione persa. Riconnettersi al server POP?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Messaggi rimandati\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Non ci sono messaggi rimandati.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Header crittografico non consentito\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Header S/MIME non consentito\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Decifratura messaggio...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Decifratura fallita.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nuova ricerca\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Crea un alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Cerca\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"In attesa di risposta...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Il comando della ricerca non è definito.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Ricerca\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Cerca: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Ricerca '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Pipe\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Stampa\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Salvataggio...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Allegato salvato.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"ATTENZIONE!  %s sta per essere sovrascritto, continuare?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Allegato filtrato.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtra attraverso: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Manda con una pipe a: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Non so come stampare %s allegati!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Stampare gli allegati segnati?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Stampare l'allegato?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Impossibile decifrare il messaggio cifrato!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Allegati\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Non ci sono sottoparti da visualizzare!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Impossibile cancellare l'allegato dal server POP\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"La cancellazione di allegati da messaggi cifrati non è gestita.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"La cancellazione di allegati da messaggi cifrati non è gestita.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"È gestita solo la cancellazione degli allegati multiparte.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Puoi rimbalzare solo parti message/rfc822.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Errore durante l'invio del messaggio!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Errore durante l'invio del messaggio!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Impossibile aprire il file temporaneo %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Inoltro come allegati?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Impossibile decodificare tutti gli allegati segnati. Uso MIME per gli altri?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Inoltro incapsulato in MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Impossibile creare %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Non ci sono messaggi segnati.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Non è stata trovata alcuna mailing list!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Impossibile decodificare tutti gli allegati segnati. Uso MIME per gli altri?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Accoda\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Inserisce\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Cancella\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Non trovo type2.list di mixmaster!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Seleziona una catena di remailer.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Errore: %s non può essere usato come remailer finale di una catena.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Le catene mixmaster sono limitate a %d elementi.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"La catena di remailer è già vuota.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Hai già selezionato il primo elemento della catena.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Hai già selezionato l'ultimo elemento della catena.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster non accetta header Cc o Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Impostare la variabile hostname ad un valore corretto quando si usa \"\n\"mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Errore nell'invio del messaggio, il figlio è uscito con %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Errore durante l'invio del messaggio.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Voce impropriamente formattata per il tipo %s in \\\"%s\\\", linea %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Il percorso di mailcap non è stato specificato\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"La voce di mailcap per il tipo %s non è stata trovata\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: troppo pochi argomenti\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: troppi argomenti\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"Errore: score: numero non valido\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Nessun oggetto, abbandonare?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Nessun oggetto, abbandonato.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Rispondere a %s%s?\"\n\n# FIXME - come tradurre questo messaggio?\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Inviare un Follow-up a %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Non è visibile alcun messaggio segnato!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Includo il messaggio nella risposta?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Includo il messaggio citato...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Non ho potuto includere tutti i messaggi richiesti!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Inoltro come allegato?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Preparo il messaggio inoltrato...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Richiamare il messaggio rimandato?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Modificare il messaggio da inoltrare?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Abbandonare il messaggio non modificato?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Ho abbandonato il messaggio non modificato.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Il messaggio è stato rimandato.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Non sono stati specificati destinatari!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Non sono stati specificati destinatari.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Nessun oggetto, abbandonare l'invio?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Non è stato specificato un oggetto.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Invio il messaggio...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Salvare l'allegato in Fcc?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Impossibile spedire il messaggio.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Messaggio spedito.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Invio in background.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Nessun parametro limite trovato! [segnalare questo errore]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s non esiste più!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s non è un file regolare.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Impossibile aprire %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Errore nell'invio del messaggio, il figlio è uscito con %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Output del processo di consegna\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Trovato l'IDN %s non valido preparando l'header resent-from\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  in uscita.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Catturato %s...  in uscita.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Catturato il segnale %d...  in uscita.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Inserisci la passphrase per S/MIME:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Fidato   \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Verificato  \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Non verificato\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Scaduto   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Revocato   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Non valido   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Sconosciuto   \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Certificati S/MIME corrispondenti a \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"L'ID non è valido.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Inserire il keyID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Non è stato trovato un certificato (valido) per %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Errore: impossibile creare il sottoprocesso di OpenSSL!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"manca il file del certificato\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"manca la mailbox\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Nessun output da OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"Impossibile firmare: nessuna chiave specificata. Usare Firma come.\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Impossibile aprire il sottoprocesso di OpenSSL!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fine dell'output di OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Errore: impossibile creare il sottoprocesso di OpenSSL! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- I seguenti dati sono cifrati con S/MIME --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- I seguenti dati sono firmati con S/MIME --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fine dei dati cifrati con S/MIME --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fine dei dati firmati com S/MIME. --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME cifra(e), firma(s), cifra come(w), firma (c)ome, entram(b)i, \"\n\"(a)nnullare? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME cifra(e), firma(s), cifra come(w), firma (c)ome, entram(b)i, \"\n\"(a)nnullare? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"eswabfc\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME cifra(e), firma(s), cifra come(w), firma (c)ome, entram(b)i, \"\n\"(a)nnullare? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"eswabfc\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\"Scegliere la famiglia dell'algoritmo: 1: DES, 2: RC2, 3: AES o annullare(c)? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drac\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Sessione SMTP fallita: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Sessione SMTP fallita: impossibile aprire %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"Nessun indirizzo \\\"from\\\" fornito\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"Sessione SMTP fallita: errore di lettura\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"Sessione SMTP fallita: errore di scrittura\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Risposta del server non valida\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"URL del server SMTP non valido: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"Il server SMTP non supporta l'autenticazione\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"L'autenticazione SMTP richiede SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"autenticazione %s fallita, tentativo col metodo successivo\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"Autenticazione SASL fallita\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Ordinamento della mailbox...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Impossibile trovare la funzione di ordinamento! [segnala questo bug]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(nessuna mailbox)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Il messaggio padre non è visibil in questa visualizzazione limitata.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Il messaggio padre non è disponibile.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"operazione nulla\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"fine dell'esecuzione condizionata (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"forza la visualizzazione dell'allegato usando mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"visualizza l'allegato come se fosse testo\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"(dis)attiva la visualizzazione delle sottoparti\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"spostati in fondo alla pagina\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"rispedisci un messaggio a un altro utente\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"seleziona un nuovo file in questa directory\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"guarda il file\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"mostra il nome del file attualmente selezionato\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"iscrizione alla mailbox corrente (solo IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"rimuove sottoscrizione dalla mailbox corrente (solo IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"mostra tutte le mailbox/solo sottoscritte (solo IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"elenca le mailbox con nuova posta\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"cambia directory\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"controlla se c'è nuova posta nella mailbox\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"allega uno o più file a questo messaggio\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"allega uno o più messaggi a questo messaggio\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"modifica la lista dei BCC\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"modifica la lista dei CC\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"modifica la descrizione dell'allegato\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"modifica il transfer-encoding dell'allegato\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"inserisci un file in cui salvare una coppia di questo messagio\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"modifica il file da allegare\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"modifica il campo from\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"modifica il messaggio insieme agli header\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"modifica il messaggio\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"modifica l'allegato usando la voce di mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"modifica il campo Reply-To\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"modifica il Subject di questo messaggio\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"modifica la lista dei TO\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"crea una nuova mailbox (solo IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"modifica il tipo di allegato\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"prendi una copia temporanea di un allegato\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"esegui ispell sul messaggio\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"componi un nuovo allegato usando la voce di mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"(dis)abilita la ricodifica di questo allegato\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"salva questo messaggio per inviarlo in seguito\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"rinomina/sposta un file allegato\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"spedisce il messaggio\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"cambia la disposizione tra inline e attachment\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"(dis)attiva se cancellare il file dopo averlo spedito\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"aggiorna le informazioni sulla codifica di un allegato\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"scrivi il messaggio in un folder\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"copia un messaggio in un file/mailbox\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"crea un alias dal mittente del messaggio\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"muovi la voce in fondo allo schermo\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"muovi al voce in mezzo allo schermo\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"muovi la voce all'inizio dello schermo\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"fai una copia decodificata (text/plain)\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"fai una copia decodificata (text/plain) e cancellalo\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"cancella la voce corrente\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"cancella la mailbox corrente (solo IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"cancella tutti i messaggi nel subthread\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"cancella tutti i messaggi nel thread\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"visualizza l'indirizzo completo del mittente\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"visualizza il messaggio e (dis)attiva la rimozione degli header\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"visualizza un messaggio\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"modifica il messaggio grezzo\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"cancella il carattere davanti al cursore\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"sposta il cursore di un carattere a sinistra\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"sposta il cursore all'inizio della parola\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"salta all'inizio della riga\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"passa alla mailbox di ingresso successiva\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"completa il nome del file o l'alias\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"completa l'indirizzo con una ricerca\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"cancella il carattere sotto il cursore\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"salta alla fine della riga\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"sposta il cursore di un carattere a destra\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"sposta il cursore alla fine della parola\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"spostati in basso attraverso l'history\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"spostati in alto attraverso l'history\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"cancella i caratteri dal cursore alla fine della riga\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"cancella i caratteri dal cursore alla fine della parola\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"cancella tutti i caratteri sulla riga\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"cancella la parola davanti al cursore\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"proteggi il successivo tasto digitato\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"scambia il carattere sotto il cursore con il precedente\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"rendi maiuscola la prima lettera\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"rendi minuscola la parola\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"rendi maiuscola la parola\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"inserisci un comando di muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"inserisci la maschera dei file\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"esci da questo menù\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtra l'allegato attraverso un comando della shell\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"spostati alla prima voce\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"(dis)attiva il flag 'importante' del messaggio\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"inoltra un messaggio con i commenti\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"seleziona la voce corrente\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"rispondi a tutti i destinatari\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"sposta verso il basso di 1/2 pagina\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"sposta verso l'alto di 1/2 pagina\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"questo schermo\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"salta a un numero dell'indice\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"spostati all'ultima voce\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"rispondi alla mailing list indicata\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"esegui una macro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"componi un nuovo messaggio\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"dividi il thread in due parti\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"apri un altro folder\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"apri un altro folder in sola lettura\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"cancella il flag di stato da un messaggio\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"cancella i messaggi corrispondenti al modello\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"recupera la posta dal server IMAP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"termina la sessione con tutti i server IMAP\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"recupera la posta dal server POP\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"spostati al primo messaggio\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"spostati all'ultimo messaggio\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"mostra solo i messaggi corrispondenti al modello\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"collega il messaggio segnato con quello attuale\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"apri la mailbox successiva con nuova posta\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"salta al successivo nuovo messaggio\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"salta al successivo messaggio nuovo o non letto\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"salta al subthread successivo\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"salta al thread successivo\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"salta al messaggio de-cancellato successivo\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"salta al successivo messaggio non letto\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"salta al messaggio padre nel thread\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"salta al thread precedente\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"salta al thread seguente\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"salta al precedente messaggio de-cancellato\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"salta al precedente messaggio nuovo\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"salta al precedente messaggio nuovo o non letto\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"salta al precedente messaggio non letto\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"segna il thread corrente come già letto\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"segna il subthread corrente come già letto\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"imposta un flag di stato su un messaggio\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"salva i cambiamenti nella mailbox\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"segna i messaggi corrispondenti al modello\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"de-cancella i messaggi corrispondenti al modello\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"togli il segno ai messaggi corrispondenti al modello\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"spostati in mezzo alla pagina\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"spostati alla voce successiva\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"spostati una riga in basso\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"spostati alla pagina successiva\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"salta in fondo al messaggio\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"(dis)attiva la visualizzazione del testo citato\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"salta oltre il testo citato\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"salta all'inizio del messaggio\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"manda un messaggio/allegato a un comando della shell con una pipe\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"spostati alla voce precedente\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"spostati in alto di una riga\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"spostati alla pagina precedente\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"stampa la voce corrente\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"chiedi gli indirizzi a un programma esterno\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"aggiungi i risultati della nuova ricerca ai risultati attuali\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"salva i cambiamenti alla mailbox ed esci\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"richiama un messaggio rimandato\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"cancella e ridisegna lo schermo\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{internal}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"rinomina la mailbox corrente (solo IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"rispondi a un messaggio\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"usa il messaggio corrente come modello per uno nuovo\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"salva messaggio/allegato in una mailbox/file\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"cerca una espressione regolare\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"cerca all'indietro una espressione regolare\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"cerca la successiva corrispondenza\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"cerca la successiva corrispondenza nella direzione opposta\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"(dis)attiva la colorazione del modello cercato\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"esegui un comando in una subshell\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"ordina i messaggi\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"ordina i messaggi in ordine inverso\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"segna la voce corrente\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"applica la funzione successiva ai messaggi segnati\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"applica la successiva funzione SOLO ai messaggi segnati\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"segna il subthread corrente\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"segna il thread corrente\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"(dis)attiva il flag 'nuovo' di un messaggio\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"(dis)attiva se la mailbox sarà riscritta\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"(dis)attiva se visualizzare le mailbox o tutti i file\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"spostati all'inizio della pagina\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"de-cancella la voce corrente\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"de-cancella tutti i messaggi nel thread\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"de-cancella tutti i messaggi nel subthread\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"mostra il numero di versione e la data di Mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"visualizza l'allegato usando se necessario la voce di mailcap\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"mostra gli allegati MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"mostra il keycode per un tasto premuto\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"mostra il modello limitatore attivo\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"(de)comprimi il thread corrente\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"(de)comprimi tutti i thread\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"allega una chiave pubblica PGP\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"mostra le opzioni PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"spedisci una chiave pubblica PGP\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"verifica una chiave pubblica PGP\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"visualizza la chiave dell'user id\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"controlla firma PGP tradizionale\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Accetta la catena costruita\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Accoda un remailer alla catena\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Inserisce un remailer nella catena\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Elimina un remailer dalla catena\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Seleziona l'elemento precedente della catena\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Seleziona il successivo elemento della catena\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"invia il messaggio attraverso una catena di remailer mixmaster\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"fai una copia decodificata e cancellalo\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"fai una copia decodificata\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"cancella la/le passphrase dalla memoria\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"estra le chiavi pubbliche PGP\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"mostra le opzioni S/MIME\"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"elimina messaggio(i)\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" in questa visualizzazione limitata\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"elimina messaggio\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"modifica messaggio\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"errore nell'espressione\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Errore interno. Informare <roessler@does-not-exist.org>.\"\n\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Attenzione: il messaggio non ha un header From:\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Errore: impossibile trovare l'inizio del messaggio di PGP! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Errore: multipart/encrypted non ha il parametro protocol!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"L'ID %s non è verificato. Vuoi usarlo per %s?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Usare l'ID %s (non fidato!) per %s?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Uso l'ID %s per %s?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Attenzione: non è stato ancora deciso se dare fiducia all'ID %s. (un \"\n#~ \"tasto per continuare)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"Nessun output da OpenSSL.\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Attenzione: certificato intermedio non trovato.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Normale\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"escbia\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Nessun modello di ricerca.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Cerca all'indietro: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Cerca: \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Errore nel controllo della firma\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"Controllo del certificato SSL\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"Controllo del certificato SSL\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Scarico i namespace...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"uso: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <tipo> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"····· ·mutt·[·-nR·]·[·-e·<cmd>·]·[·-F·<file>·]·-Q·<query>·[·-\"\n#~ \"Q·<query>·]·[...]\\n\"\n#~ \"·······mutt·[·-nR·]·[·-e·<cmd>·]·[·-F·<file>·]·-A·<alias>·[·-\"\n#~ \"A·<alias>·]·[...]\\n\"\n#~ \"·······mutt·[·-nx·]·[·-e·<cmd>·]·[·-a·<file>·]·[·-F·<file>·]·[·-\"\n#~ \"H·<file>·]·[·-i·<file>·]·[·-s·<subj>·]·[·-b·<indir>·]·[·-\"\n#~ \"c·<indir>·]·<indir>·[·...·]\\n\"\n#~ \"·······mutt·[·-n·]·[·-e·<cmd>·]·[·-F·<file>·]·-p\\n\"\n#~ \"·······mutt·-v[v]\\n\"\n#~ \"\\n\"\n#~ \"opzioni\\n\"\n#~ \"  -A <alias>\\tespande l'alias indicato\\n\"\n#~ \"  -a <file>\\tallega un file al messaggio\\n\"\n#~ \"  -b <indir>\\tindirizzo in blind carbon copy (BCC)\\n\"\n#~ \"  -c <indir>\\tindirizzo in carbon copy (CC)\\n\"\n#~ \"  -e <cmd>\\tcomando da eseguire dopo l'inizializzazione\\n\"\n#~ \"  -f <file>\\tquale mailbox leggere\\n\"\n#~ \"  -F <file>\\tun file muttrc alternativo\\n\"\n#~ \"  -H <file>\\tun file di esempio da cui leggere gli header\\n\"\n#~ \"  -i <file>\\tun file che mutt dovrebbe includere nella risposta\\n\"\n#~ \"  -m <tipo>\\til tipo di mailbox predefinita\\n\"\n#~ \"  -n\\t\\tdisabilita la lettura del Muttrc di sistema\\n\"\n#~ \"  -p\\t\\trichiama un messaggio rimandato\\n\"\n#~ \"  -R\\t\\tapri la mailbox in sola lettura\\n\"\n#~ \"  -s <sogg>\\tspecifica il Subject (deve essere tra apici se ha spazi)\\n\"\n#~ \"  -v\\t\\tmostra la versione e le definizioni della compilazione\\n\"\n#~ \"  -x\\t\\tsimula la modalità invio di mailx\\n\"\n#~ \"  -y\\t\\tseleziona una mailbox specificata nella lista `mailboxes'\\n\"\n#~ \"  -z\\t\\tesce immediatamente se non ci sono messaggi nella mailbox\\n\"\n#~ \"  -Z\\t\\tapre il primo folder con un nuovo messaggio, esce se non ce ne \"\n#~ \"sono\\n\"\n#~ \"  -h\\t\\tquesto messaggio di aiuto\"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"Impossibile cambiare il flag \\\"importante\\\" sul server POP.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"Impossibile modificare i messaggi sul server POP.\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"Leggo %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Scrivo i messaggi... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"Leggo %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Eseguo PGP...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Errore fatale. Il numero dei messaggi non è sincronizzato!\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"CLOSE fallito\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2002 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2002 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2002 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2002 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Molti altri non menzionati qui hanno contribuito con codice, correzioni\\n\"\n#~ \"e suggerimenti.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n\n#~ msgid \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (f)orget it? \"\n#~ msgstr \"\"\n#~ \"1: DES, 2: Triplo DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (a)nnullare? \"\n\n#~ msgid \"12345f\"\n#~ msgstr \"12345a\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"La prima voce è questa.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"L'ultima voce è questa.\"\n\n#~ msgid \"Unexpected response received from server: %s\"\n#~ msgstr \"È stata ricevuta dal server una risposta inattesa: %s\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"Impossibile accodare alle mailbox IMAP di questo server\"\n\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"Creare un messaggio PGP tradizionale (inline)?\"\n\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"%s: stat: %s\"\n\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s: non è un file regolare\"\n\n#~ msgid \"unspecified protocol error\"\n#~ msgstr \"errore del protocollo non precisato\"\n"
  },
  {
    "path": "po/ja.po",
    "content": "# Japanese messages for Mutt.\n# Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2011, 2013, 2015, 2016 mutt-j ML members.\n# FIRST AUTHOR Kikutani Makoto <kikutani@Galaxy.net>, 1999.\n# 2nd AUTHOR OOTA,Toshiya <ribbon@users.sourceforge.net>, 2002.\n#  (with TAKAHASHI Tamotsu <ttakah@lapis.plala.or.jp>, 2003, 2004, 2005, 2007, 2008, 2009, 2011, 2013, 2015, 2016).\n# oota toshiya <ribbon@users.sourceforge.net>, 2008, 2011.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 1.5.24\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2016-03-20 15:22+0900\\n\"\n\"Last-Translator: TAKAHASHI Tamotsu <ttakah@lapis.plala.or.jp>\\n\"\n\"Language-Team: mutt-j <mutt-j-users@lists.osdn.me>\\n\"\n\"Language: Japanese\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=EUC-JP\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"%s Υ桼̾: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"%s@%s Υѥ: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"ä\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"إ\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"̾ʤ!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"̾\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"̾: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Ǥˤ̾̾!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"ٹ: ̾ưʤ⤷ʤ?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"ɥ쥹: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"顼: '%s'  IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Ŀ̾: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] λ?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"¸ե: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"̾եɤ߽Ф顼\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"̾ɲä\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"̾եüХ顼\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"̾Υƥץ졼Ȥ˰פʤ³?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Mailcap Խȥ %%s ɬ\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"\\\"%s\\\" ¹ԥ顼!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"إåϤΤΥե륪ץ˼ԡ\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"إåΤΥե륪ץ˼ԡ\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"եΥ͡ (ư) ˼ԡ\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"%s Τ mailcap Խȥ꤬ʤΤǶե\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Mailcap Խȥˤ %%s ɬ\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"%s Τ mailcap Խȥ꤬ʤ\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"mailcap ˰ץȥ꤬ʤƥȤȤɽ档\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME ƤʤźեեɽǤʤ\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"ե륿Ǥʤ\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---ޥ: %-20.20s : %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---ޥ: %-30.30s źեե: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---źեե: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---źեե: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"ե륿Ǥʤ\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"񤭹߼!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"ɤΤ褦˰뤫!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"ǥ쥯ȥѹ\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"ޥ\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s ϥǥ쥯ȥǤϤʤ\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"᡼ܥå [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \" [%s], եޥ: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"ǥ쥯ȥ [%s], եޥ: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"ǥ쥯ȥźդǤʤ!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"եޥ˰פե뤬ʤ\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"ǽ IMAP ᡼ܥåΤߤΥݡ\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"͡ (ư) ǽ IMAP ᡼ܥåΤߤΥݡ\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"ǽ IMAP ᡼ܥåΤߤΥݡ\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"롼ȥեϺǤʤ\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"˥᡼ܥå \\\"%s\\\" ?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"᡼ܥåϺ줿\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"᡼ܥåϺʤä\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"ǥ쥯ȥѹ: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"ǥ쥯ȥΥ󥨥顼\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"եޥ: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"ս (d:, a:ABC, z:, n:󤷤ʤ)\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \" (d:, a:ABC, z:, n:󤷤ʤ)\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dazn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"ե̾: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"ǥ쥯ȥϱǤʤ\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"ե顼\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"᡼뤢: \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \" %s ϤüǤϥݡȤƤʤ\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s ȤϤʤ\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s Ȥ֥ȤϤʤ\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"ޥ %s ϥǥåܥǥإåˤΤͭ\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: ʤ\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"ʤ\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: ʤ\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: ʤ\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s Ȥ°Ϥʤ\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"ʤ\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"¿\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"ͤοݡȤƤʤ\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"PGP ̾򸡾?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"եǤʤä!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"ɽѥե륿Ǥʤ\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"å򥳥ԡǤʤä\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME ̾θڤ\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"S/MIME ͭԤԤ˰פʤ\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"ٹ: åΰϽ̾Ƥʤ\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME ̾ϸڤǤʤä\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP ̾θڤ\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP ̾ϸڤǤʤä\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"ޥ: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"ٹ: å From: إåʤ\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"åκ: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"դåκ: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"ɥ쥹ϥ顼!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \" IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"%s إå\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"%s إå\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"åϺʤä\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"åϺʤä\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"å\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"å\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"ե륿ץǤʤ\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"ޥɤؤΥѥ: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"ޥɤ̤\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"å?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"դå?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"åϰ줿\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"åϰ줿\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"åϰǤʤä\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"åϰǤʤä\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"ս (d: f: r: s: o: t: u:̵ z: c: p:\"\n\")\"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\" (d: f: r: s: o: t: u:̵ z: c: p:ѥ)\"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrsotuzcp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"륳ޥ: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"%s᡼ܥå˥ǥɤ¸\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"%s᡼ܥå˥ǥɤƥԡ\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"%s᡼ܥå沽¸\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"%s᡼ܥå沽ƥԡ\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s᡼ܥå¸\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s᡼ܥå˥ԡ\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \"դå\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"%s ˥ԡ...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \" %s Ѵ?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type %s ѹ\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"ʸåȤ %s ѹ; %s\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"Ѵʤ\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"Ѵ\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"źեե뤬ʤ\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"եź\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"ݡȤƤʤ\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"̾ + Ź沽\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Ź沽\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"̾\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"ʤ\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (饤 PGP)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \" (¸Ź)\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \"    ̾: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"  Ź沽: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] ϤϤ¸ߤʤ!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] ѹ줿󥳡ɹ?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- źեե\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"ٹ: '%s'  IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"ͣźեեƤϤʤ\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"\\\"%s\\\"  IDN: '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"򤵤줿եź...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"%s źդǤʤ!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Υåźդ뤿˥᡼ܥå򥪡ץ\"\n\n#: compose.c:762\n#, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"᡼ܥå %s ץǤʤ\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Υեˤϥåʤ\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"źդå˥դ!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"źդǤʤ!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"ѴϥƥȷźեեˤΤͭ\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"ߤźեեѴʤ\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"ߤźեեѴ롣\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"ʥ󥳡ˡ\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"ΥåΥԡ¸?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"͡ (ư) : \"\n\n# system call  stat() °ĴפƤ\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"%s °ĴǤʤ: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"ե: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type  base/sub Ȥˤ뤳\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"%s  Content-Type\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"ե %s Ǥʤ\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Ĥޤźեեκ˼ԤȤȤ\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Υå񤭤α?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"å᡼ܥå˽񤭹\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"å %s ˽񤭹...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"åϽ񤭹ޤ줿\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME 򤵤Ƥ롣Ʒ³?\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP 򤵤Ƥ롣Ʒ³?\"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"gpgme ƥȺ顼: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"CMS ץȥ뵯ư顼: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"gpgme ǡ֥Ⱥ顼: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"ǡ֥ȳƥ顼: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"ǡ֥ȴᤷ顼: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"ǡ֥ɤ߽Ф顼: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"եǤʤ\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \" %s ɲäǥ顼: %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"̩ %s դʤ: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"̩λ꤬ޤ: %s\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"̩ %s ˥顼: %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"PKA ̾ɽˡꥨ顼: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"ǡŹ沽顼: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"ǡ̾顼: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"$pgp_sign_as ̤ǡ기 ~/.gnupg/gpg.conf ˻ꤵƤʤ\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"ٹ: ѴѤߤθ\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"ٹ: ̾ϴڤ: ¤ \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"ٹ: ʤȤĤξǸڤ\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"ٹ: ̾ڤ: ¤ \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"­ˤꡢڤǤʤ\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL ѤǤʤ\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"ѤǤ CRL ϸŤ\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"ݥꥷξ郎ʤä\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"ƥ२顼ȯ\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"ٹ: PKA ȥ꤬̾ԥɥ쥹Ȱפʤ: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"PKA Ǹڤ줿̾ԥɥ쥹: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"ե󥬡ץ: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"ٹ: θ嵭οʪΤΤɤ򼨤ڵϰڤʤ\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"ٹ: θϾ嵭οʪΤΤǤϤʤ!\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"ٹ: θμ¤˾嵭οʪΤΤȤϸʤ\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"̾: \"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"ID \"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \": \"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"ID %s θμ顼: %s\\n\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"̾:\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"**** ̾:\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Τ̾:\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \": \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- ̾󳫻 --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"顼: ڤ˼Ԥ: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** ᳫ (%s ν̾˴ؤ) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Ὢλ ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ̾λ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 顼: 沽˼Ԥ: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"ǡХ顼!\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"顼: 沽/ڤԤ: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"顼: ǡΥԡ˼Ԥ\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP å --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP ֥å --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP ̾å --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- PGPåλ --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP ֥åλ --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- PGP ̾åλ --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 顼: PGP åγȯǤʤä! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- 顼: եǤʤä! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ʲΥǡ PGP/MIME ǽ̾ӰŹ沽Ƥ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ʲΥǡ PGP/MIME ǰŹ沽Ƥ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME ̾ӰŹ沽ǡλ --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME Ź沽ǡλ --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP å沽\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"PGP å沽Ǥʤä\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ʲΥǡ S/MIME ǽ̾Ƥ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ʲΥǡ S/MIME ǰŹ沽Ƥ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- S/MIME ̾ǡλ --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- S/MIME Ź沽ǡλ --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Υ桼 ID ɽǤʤ (ʸɤ)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Υ桼 ID ɽǤʤ (ʸɤ)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Υ桼 ID ɽǤʤ (DN )]\"\n\n# \"ꥢֹ\" ==  6 ʸ\n# \"ե󥬡ץ\" ==  9 ʸ\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" ̾ ............: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"̾ .............: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"ȯ .........: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"ͭ .........: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \" ...........: %s, %lu ӥå %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"ǽ ...........: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"Ź沽\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"̾\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"ꥢֹ .....: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"ȯԼ ...........: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \" .............: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[ѴѤ]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[ڤ]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Բ]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"ǡ...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"ȯԼԸμ顼: %s\\n\"\n\n#: crypt-gpgme.c:3675\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"顼: ϢĹ - ǤƤ\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \" ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new : %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start : %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next : %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"פϤ٤ƴڤ줫ѴѤߡ\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"λ  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"פ PGP  S/MIME \"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"פ PGP \"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"פ S/MIME \"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"פ븰\"\n\n# \"<hoge@example.org> ˰פ S/MIME \"\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"<%2$s> %1$s\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%2$sפ%1$s\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"θϴڤ줫ԲĤѴѤߤΤᡢȤʤ\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID ϴڤ줫ԲĤѴѤߡ\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"ID Ͽ٤̤\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"ID ϿѤƤʤ\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"ID ϤƿѤƤ롣\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s ˤθ?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"\\\"%s\\\" ˰פ븰򸡺...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \" ID = \\\"%s\\\"  %s ˻Ȥ?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"%s θ ID : \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \" ID : \"\n\n#: crypt-gpgme.c:4614\n#, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Х顼: %s\\n\"\n\n#  export   MIME  description ʤ\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP Key 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"GPGME: OpenPGP ץȥ뤬ѤǤʤ\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"GPGME: CMS ץȥ뤬ѤǤʤ\"\n\n#: crypt-gpgme.c:4721\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME s:̾, a:̾, p:PGP, c:ʤ, o:¸Ź楪 \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"sapfco\"\n\n#: crypt-gpgme.c:4731\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP s:̾, a:̾, m:S/MIME, c:ʤ, o:¸Ź楪 \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"samfco\"\n\n# 80-columns ˥ꥮꤪޤ뤫\n#: crypt-gpgme.c:4744\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME e:Ź沽, s:̾, a:̾, b:Ź+̾, p:PGP, c:ʤ, o:¸\"\n\" \"\n\n#: crypt-gpgme.c:4745\nmsgid \"esabpfco\"\nmsgstr \"esabpfco\"\n\n#: crypt-gpgme.c:4750\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP e:Ź沽, s:̾, a:̾, b:Ź+̾, m:S/MIME, c:ʤ, o:¸\"\n\" \"\n\n#: crypt-gpgme.c:4751\nmsgid \"esabmfco\"\nmsgstr \"esabmfco\"\n\n#: crypt-gpgme.c:4762\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"S/MIME e:Ź沽, s:̾, a:̾, b:Ź+̾, p:PGP, c:ʤ \"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"esabpfc\"\n\n#: crypt-gpgme.c:4768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"PGP e:Ź沽, s:̾, a:̾, b:Ź+̾, m:S/MIME, c:ʤ \"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"esabmfc\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"̾˻Ȥ: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Ԥθڤ˼Ԥ\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Ԥμ̤˼Ԥ\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (߻: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s Ϥϰʲ̤%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"ѥե졼٤ƥ꤫õ줿\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"źեե뤬ȥ饤 PGP ˤǤʤPGP/MIME Ȥ?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\"᡼ʤä: źեե뤬ȥ饤 PGP ˤǤʤ\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"PGP ư...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"å򥤥饤ǤʤPGP/MIME Ȥ?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"᡼ʤä\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"ƥҥȤΤʤ S/MIME å̤ݡȡ\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"PGP Ÿ...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"S/MIME Ÿ...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 顼:  multipart/signed ץȥ %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 顼: multipart/signed ¤̷⤷Ƥ! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ٹ:  Mutt Ǥ %s/%s ̾򸡾ڤǤʤ --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ʲΥǡϽ̾Ƥ --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ٹ: Ĥ̾򸡽ФǤʤä --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- ̾ǡλ --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\"\\\"crypt_use_gpgme\\\" ꤵƤ뤬 GPGME ݡդǥӥɤƤ\"\n\"\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"S/MIME ư...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"yes\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"no\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Mutt ȴ?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"ʥ顼\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"³ˤϲ...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \"('?' ǰ): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Ƥ᡼ܥåʤ\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"åʤ\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"᡼ܥåɤ߽Фѡ\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"εǽϥåźե⡼ɤǤϵĤƤʤ\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Ļåʤ\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"%s:  ACL ǵĤƤʤ\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"ɤ߽Фѥ᡼ܥåǤѹν񤭹ߤؤǤʤ!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"եæл˥եؤѹ񤭹ޤ롣\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"եؤѹϽ񤭹ޤʤ\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"¸\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"᡼\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"ֿ\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"ֿ\"\n\n# ʲǽפȽʤȤΤ褦˻פƤޤΤѹ\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"᡼ܥåѹ줿ե饰ΤǤʤ⤷ʤ\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Υ᡼ܥå˿᡼롣\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"᡼ܥåѹ줿\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"դåʤ\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"⤷ʤ\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"åֹ: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"ϥåֹǤʤФʤʤ\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"ΥåϲĻǤϤʤ\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"ʥåֹ档\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\nmsgid \"Cannot delete message(s)\"\nmsgstr \"åǤʤ\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"å뤿Υѥ: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"ͭ¥ѥϤʤ\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"¥ѥ: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"åɽ¤ѥ: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"å򤹤٤Ƹˤ¤ \\\"all\\\" ˤ롣\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Mutt ?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"å˥դ뤿Υѥ: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"åκ֤Ǥʤ\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"åκ뤿Υѥ: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"åΥ򳰤Υѥ: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"IMAP ФȤ\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"ɤ߽Фѥ⡼ɤǥ᡼ܥå򥪡ץ\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"᡼ܥå򥪡ץ\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"᡼Τ᡼ܥåϤʤ\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s ϥ᡼ܥåǤϤʤ\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"¸ʤ Mutt ȴ?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"åɽͭˤʤäƤʤ\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"åɤ줿\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"åɤ򳰤ʤååɤΰǤϤʤ\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"åɤĤʤʤ\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Message-ID إåѤǤʤΤǥåɤĤʤʤ\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"ˡؤĤʤå˥դƤ\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"åɤĤʤä\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"åɤϤĤʤʤä\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Ǥ˺ǸΥå\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"̤åʤ\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Ǥ˺ǽΥå\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"ϰ־ä\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"ϰֲä\"\n\n#: curs_main.c:1608\nmsgid \"No new messages in this limited view.\"\nmsgstr \"¤줿ɽϰϤˤϿåʤ\"\n\n#: curs_main.c:1610\nmsgid \"No new messages.\"\nmsgstr \"åʤ\"\n\n#: curs_main.c:1615\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"¤줿ɽϰϤˤ̤ɥåʤ\"\n\n#: curs_main.c:1617\nmsgid \"No unread messages.\"\nmsgstr \"̤ɥåʤ\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\nmsgid \"Cannot flag message\"\nmsgstr \"å˥ե饰Ǥʤ\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"ե饰ؤǤʤ\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"⤦åɤʤ\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Ǥ˺ǽΥåɡ\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"å̤ɥå롣\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\nmsgid \"Cannot delete message\"\nmsgstr \"åǤʤ\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\nmsgid \"Cannot edit message\"\nmsgstr \"åԽǤʤ\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"åɤ˥ޡǤʤ\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\nmsgid \"Cannot undelete message\"\nmsgstr \"åκ֤Ǥʤ\"\n\n#: edit.c:41\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tԤ ~ ǻϤޤȤκǽ ~ \\n\"\n\"~b users\\tBcc: եɤ˥桼ɲ\\n\"\n\"~c users\\tCc: եɤ˥桼ɲ\\n\"\n\"~f messages\\tå\\n\"\n\"~F messages\\tإåޤ뤳Ȥ ~f Ʊ\\n\"\n\"~h\\t\\tåإåԽ\\n\"\n\"~m messages\\tåѤΰ٤˼\\n\"\n\"~M messages\\tإåޤ뤳Ȥ ~m Ʊ\\n\"\n\"~p\\t\\tå\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tեؽ񤭹ǥǥλ\\n\"\n\"~r file\\t\\tǥ˥եɤ߽Ф\\n\"\n\"~t users\\tTo: եɤ˥桼ɲ\\n\"\n\"~u\\t\\tιԤƸƽФ\\n\"\n\"~v\\t\\t$visual ǥǥåԽ\\n\"\n\"~w file\\t\\tåե˽񤭹\\n\"\n\"~x\\t\\tѹߤƥǥλ\\n\"\n\"~?\\t\\tΥå\\n\"\n\".\\t\\tʸΤߤιԤϤλ\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d ʥåֹ档\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(åνλ . ΤߤιԤ)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"᡼ܥåλ꤬ʤ\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"å:\\n\"\n\n# åƤɽλ˽ФΤ̿Ȼפ\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(³)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"ե̾λ꤬ʤ\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"åƤԤʤ\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"%s  IDN: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s ʥǥޥ (~? ǥإ)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"եǤʤä: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"᡼ե˽񤭹ʤä: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"᡼եκǸιԤäʤä: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"åե뤬!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"åѹƤʤ!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"åե򥪡ץǤʤ: %s\"\n\n# %s  strerror(errno) Τ褦Ǥ롣\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"եɲäǤʤ: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"顼ե %s ݴ\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"ե饰\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"ե饰\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- 顼: ɤ Multipart/Alternative ѡȤɽǤʤä! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- źեե #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- : %s/%s, 󥳡ˡ: %s, : %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"åΰɽǤʤä\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- %s Ȥäưɽ --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"ưɽޥ %s ư\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- %s ¹ԤǤʤ --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- %s ɸ२顼Ϥưɽ --]\\n\"\n\n# ֻפäɬסϤߤǤʤǤ\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- 顼: message/external-body  access-type ѥ᡼λ꤬ʤ --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[--  %s/%s źեե\"\n\n# ԤˤޤʤȵΤǡ֥פ򤱤äꤷ\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(%s Х)\"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"ϺѤ --]\\n\"\n\n# ϡ֤Υեϡ˺ѤߡפȤΤ\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- (%s ˺) --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- ̾: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[--  %s/%s źեեϴޤޤƤ餺 --]\\n\"\n\n# ԤˤƤפȻפΤʤġ\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- ġꤵ줿Υϴ¤ --]\\n\"\n\"[-- λƤ롣 --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- ġꤵ줿 access-type %s ̤ݡ --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"ե򥪡ץǤʤ!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"顼: multipart/signed ˥ץȥ뤬ʤ\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- źեե \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s ̤ݡ \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(ΥѡȤɽˤ '%s' )\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"( 'view-attachments' Ƥɬפ!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: եźդǤʤ\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"顼: ΥХݡȤ\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"ŪʥХ:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"̤Хɤεǽ:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"%s Υإ\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"ե (%d )\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"ߤΥ᡼ܥå̤ʤΤ˵ '^' ȤäƤ\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"᡼ܥå楷硼ȥåȤɽŸ\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: եå⤫ unhook * Ǥʤ\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: %s ʥեå\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: %s  %s ⤫Ǥʤ\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"ѤǤǧڽʤ\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"ǧ (ƿ̾)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"ƿ̾ǧڤ˼Ԥ\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"ǧ (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 ǧڤ˼Ԥ\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"ǧ (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI ǧڤ˼Ԥ\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN ϤΥФǤ̵ˤʤäƤ\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"˼Ԥ\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"ǧ (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL ǧڤ˼Ԥ\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s  IMAP ѥ\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"եꥹȼ...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Τ褦ʥեϤʤ\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"᡼ܥå: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"᡼ܥåˤ̾ɬס\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"᡼ܥå줿\"\n\n# Ĺ֥᡼ܥåפäƤ⤤\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"᡼ܥå %s Υ͡(ư): \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"͡ (ư) : %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"᡼ܥå͡ (ư) 줿\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"᡼ܥåĤ\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"CREATE : %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"%s ؤ³λ...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \" IMAP ФϸŤǤ Mutt Ϥޤǽʤ\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"TLS Ȥä³?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"TLS ³ΩǤʤä\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Ź沽줿³ѤǤʤ\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"%s ...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"᡼ܥåץ顼\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"%s ?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"˼Ԥ\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"%d ĤΥå˺ޡ...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"åѹ¸... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"ե饰¸顼ǤĤ?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"ե饰¸顼\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Фå...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: ˼Ԥ\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"إå̾λ꤬ʤ: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"ʥ᡼ܥå̾\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"%s ιɤ򳫻...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"%s ιɤä...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"%s ɤ򳫻Ϥ\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"%s ιɤä\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"ΥС IMAP ФϤإåǤʤ\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"ե %s Ǥʤä\"\n\n# å IMAP ФΥǡȹ礷ǧ\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"åȹ...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"åإå...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"å...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"å᡼ܥåƥץ󤷤Ƥߤ뤳ȡ\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"å򥢥åץ...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"%d å %s ˥ԡ...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"å %d  %s ˥ԡ...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"³?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Υ˥塼ǤѤǤʤ\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"ɽ: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"spamƥץ졼Ȥ˳̤­ʤ\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: פѥ󤬤ʤ\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: פѥ󤬤ʤ\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%sgroup: -rx  -addr ɬס\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%sgroup: ٹ:  IDN '%s'\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"attachments:  disposition λ꤬ʤ\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"attachments:  disposition \"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"unattachments:  disposition λ꤬ʤ\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"unattachments:  disposition \"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias (̾): ɥ쥹ʤ\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"ٹ:  IDN '%s' ꥢ '%s' ˤ롣\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"ʤإåե\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s ˡ\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): ɽǥ顼: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s ѿ\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"reset ȶ˻ȤƬ\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"reset ȶ˻Ȥͤ\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"ˡ: set ѿ=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s Ѥ\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s ̤\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"ѿ %s ˤ: \\\"%s\\\"\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s ʥ᡼ܥå\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s:  (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"񼰥顼\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"ϰϳ\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s \"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s ʥ\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s ʥ\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"%s  %d ܤǥ顼: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: %s ǥ顼\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: %s ˥顼¿Τɤ߽Ф\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: %s ǥ顼\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: ¿\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: ʥޥ\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"ޥɥ饤ǥ顼: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"ۡǥ쥯ȥ̤Ǥʤ\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"桼̤̾Ǥʤ\"\n\n#: init.c:2970\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"uname() ǥΡ̤̾Ǥʤ\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: 롼̾ʤ\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"ʤ\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"ޥϸ̵\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"ޥΥ롼פФ줿\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"ϥХɤƤʤ\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"ϥХɤƤʤ'%s' 򲡤ȥإ\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: ¿\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s Ȥ˥塼Ϥʤ\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"󥹤ʤ\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: ¿\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s Ȥǽϥޥåˤʤ\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: 󥹤ʤ\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: ¿\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: ʤ\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s ȤǽϤʤ\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"򲡤ȳ (λ ^G): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"ʸ = %s, 8 = %o, 10 = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"夢դ -- Ƥʤ!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"­!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"ȯ(ܲ)ϢȤˤ <mutt-dev@mutt.org> إ᡼뤻衣\\n\"\n\"ХݡȤˤ http://bugs.mutt.org/ 򻲾ȤΤȡ\\n\"\n\"ܸǤΥХݡȤϢ mutt-j-users ML ء\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"ˡ: mutt [<ץ>] [-z] [-f <ե> | -yZ]\\n\"\n\"        mutt [<ץ>] [-Ex] [-Hi <ե>] [-s <̾>] [-bc <ɥ쥹\"\n\">] [-a <ե> [...] --] <ɥ쥹> [...]\\n\"\n\"        mutt [<ץ>] [-x] [-s <̾>] [-bc <ɥ쥹>] [-a <ե> \"\n\"[...] --] <ɥ쥹> [...] < åե\\n\"\n\"        mutt [<ץ>] -p\\n\"\n\"        mutt [<ץ>] -A <̾> [...]\\n\"\n\"        mutt [<ץ>] -Q <䤤碌> [...]\\n\"\n\"        mutt [<ץ>] -D\\n\"\n\"        mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"ץ:\\n\"\n\"  -A <̾>\\tꤷ̾Ÿ\\n\"\n\"  -a <ե> [...] --\\tå˥եź\\n\"\n\"\\t\\tǸΥեμ \\\"--\\\" ɬ\\n\"\n\"  -b <ɥ쥹>\\tblind carbon-copy (BCC) ɥ쥹λ\\n\"\n\"  -c <ɥ쥹>\\tcarbon-copy (CC) ɥ쥹λ\\n\"\n\"  -D\\t\\tѿ򤹤٤ɸϤɽ\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <٥>\\tǥХϤ ~/.muttdebug0 ˵Ͽ\"\n\n#: main.c:137\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -E\\t\\t (-H)  (-i) եԽ뤳Ȥλ\\n\"\n\"  -e <ޥ>\\t˼¹Ԥ륳ޥɤλ\\n\"\n\"  -f <ե>\\tɤ߽Ф᡼ܥåλ\\n\"\n\"  -F <ե>\\t muttrc եλ\\n\"\n\"  -H <ե>\\tإåɤि˲ե\\n\"\n\"  -i <ե>\\tֿ Mutt եλ\\n\"\n\"  -m <>\\t᡼ܥåλ\\n\"\n\"  -n\\t\\tƥ Muttrc ɤޤʤȤλ\\n\"\n\"  -p\\t\\t¸Ƥ (񤭤) åκɤ߽Фλ\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <ѿ>\\tѿ䤤碌\\n\"\n\"  -R\\t\\t᡼ܥåɤ߽Фѥ⡼ɤǥץ󤹤뤳Ȥλ\\n\"\n\"  -s <̾>\\t̾λ (򤬤ˤϰǤ뤳)\\n\"\n\"  -v\\t\\tСȥѥɽ\\n\"\n\"  -x\\t\\tmailx ⡼ɤΥߥ졼\\n\"\n\"  -y\\t\\tꤵ줿 `mailboxes' ꥹȤ椫Υ᡼ܥå\\n\"\n\"  -z\\t\\t᡼ܥå˥å̵Ф˽λ\\n\"\n\"  -Z\\t\\tå̵Ф˽λ\\n\"\n\"  -h\\t\\tΥإץå\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"ѥץ:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"ü顼\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"顼:  '%s'  -d ˤ\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"٥ %d ǥǥХå档\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG ѥƤʤä̵뤹롣\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s ¸ߤʤ?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"%s  %s Τ˺Ǥʤ\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\\\"mailto:\\\" 󥯤βϤ˼\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"ԤꤵƤʤ\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"ɸϤˤ -E ե饰ѤǤʤ\\n\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: եźդǤʤ\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"᡼Τ᡼ܥåϤʤ\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"ѥ᡼ܥå̤\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"᡼ܥå\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"%s ɤ߽Ф...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"᡼ܥåƤ!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"᡼ܥå줿!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"̿Ūʥ顼! ᡼ܥåƥץǤʤä!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"᡼ܥååǽ!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: ᡼ܥåѹ줿ѹåʤ(ΥХ𤻤)!\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"%s 񤭹...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"ѹ̤ȿ...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"񤭹߼! ᡼ܥåҤ %s ¸\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"᡼ܥåƥץǤʤä!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"᡼ܥåƥץ...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"ư襤ǥåֹ: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"ʥǥåֹ档\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"ȥ꤬ʤ\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"겼ˤϥǤʤ\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"ˤϥǤʤ\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Ǥ˺ǽΥڡ\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Ǥ˺ǸΥڡ\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Ǥ˺ǸΥȥꡣ\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Ǥ˺ǽΥȥꡣ\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"ѥ: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"ս縡ѥ: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Ĥʤä\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"դȥ꤬ʤ\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Υ˥塼ǤϸǽƤʤ\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"׵ǽϥǤϼƤʤ\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"դǽݡȤƤʤ\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"%s 򥹥...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"åǥ˽񤭹߽ʤä\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): ե˻Ǥʤ\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \" SASL ץե\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"SASL ³γƥ顼\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"SASL ƥꥨ顼\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"SASL ƥ٤ꥨ顼\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"SASL 桼̾ꥨ顼\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"%s ؤ³λ\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL ѤǤʤ\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"³ޥɤԡ\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"%s ؤθ򿮥顼 (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \" IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"%s ...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"ۥ \\\"%s\\\" Ĥʤä\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"%s ³...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"%s ³Ǥʤä (%s)\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"¹ΥƥˤϽʬ𻨤򸫤Ĥʤä\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"𻨤סŶ: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s ȼʥѡߥå󤬤!\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"𻨤­Τ SSL ̵ˤʤä\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"I/O 顼\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL  %s Ǽԡ\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"³褫ʤä\"\n\n# version, cipher_version, cipher_name\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"%2$s Ȥä %1$s ³ (%3$s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[׻ǽ]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"ФξϤޤͭǤʤ\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Фξ񤬴ڤ\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \" subject ʤ\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \" common name ʤ\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"ͭԤۥ̾˰פʤ: %s\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"ۥȸԹ: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"ξν°:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"ξȯԸ:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"ξ֤ͭ\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   %s \"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"   %s ޤ\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"ե󥬡ץ: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"SSL 񸡺 (Ϣ %2$d Τ %1$d )\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"r:, o:Τ߾ǧ, a:˾ǧ\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"roa\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"r:, o:Τ߾ǧ\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ro\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"ٹ: ¸Ǥʤä\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"¸\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"顼: TLS åȤƤʤ\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"TLS/SSL ³Ѳǽʥץȥ뤬٤̵\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"$ssl_ciphers ˤŪʰŹ楹ϥݡȤƤʤ\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"%s Ȥä SSL/TLS ³ (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"gnutls ǡ顼\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"ǡ顼\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"ٹ: Ǥʤ르ꥺǽ̾줿о\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1 ե󥬡ץ: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5 ե󥬡ץ: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"ٹ: ФξϤޤͭǤʤ\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"ٹ: Фξ񤬴ڤ\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"ٹ: ФξѴѤ\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"ٹ: ФΥۥ̾Ȱפʤ\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"ٹ: ФξϽ̾Ԥ CA Ǥʤ\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"θڥ顼 (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \" X.509 Ǥʤ\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"\\\"%s\\\" ³...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"%s ؤΥȥͥ뤬顼 %d (%s) ֤\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"%s ؤΥȥͥ򿮥顼: %s\"\n\n# : \"Save to file: \" => \"¸ե: \" (alias.c, recvattach.c)\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"ϥǥ쥯ȥꡣ¸? (y:, n:ʤ, a:٤¸)\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"yna\"\n\n# : \"Save to file: \" => \"¸ե: \" (alias.c, recvattach.c)\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"ϥǥ쥯ȥꡣ¸?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"ǥ쥯ȥ۲Υե: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"ե뤬¸ߤ롣o:, a:ɲ, c:\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"oac\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"POP ᡼ܥåˤϥå¸Ǥʤ\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"%s ˥åɲ?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s ϥ᡼ܥåǤϤʤ!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"åλ%s ΥåϤ?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"%s ΥɥåȥåǤʤ\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"fcntl å˥ॢȯ!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"fcntl åԤ... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"flock å˥ॢȯ!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"flock åԤ... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"%s åǤʤä\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"%s ᡼ܥåƱȤʤä!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"%s ˴ɥåư?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"줿 %d åѴ?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"줿 %d åѴ?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"%s ˴ɥåư...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"᡼ܥåѹʤä\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d ݻ%d ư%d Ѵ\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d ݻ%d Ѵ\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" '%s' 򲡤ѹ񤭹फɤ\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"'toggle-write' Ȥäƽ񤭹ߤͭˤ!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"᡼ܥåϽ񤭹ǽ˥ޡ줿%s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"᡼ܥåΥåݥȤμ褷\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"å񤭹ʤ\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"夢դ -- Ƥʤ\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"źեե\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"åΰֲɽƤ\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"åΰ־夬ɽƤ\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"ߥإפɽ\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"ʾΰʸϤʤ\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"ʸθˤϤ⤦ʸʤ\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"ޥѡȤΥå boundary ѥ᡼ʤ!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"μ˥顼: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"ɽ\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"%s \"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"%s ʷ\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"%s з\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"%s ѥ˥顼\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"ѥ­: %s\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"б̤ʤ: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c ʥѥ󽤾\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c ϤΥ⡼ɤǤϥݡȤƤʤ\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"ѥ᡼ʤ\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"б̤ʤ: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"ѥ󤬶\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"顼:  op %d (Υ顼𤻤)\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"ѥ򥳥ѥ...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"åѥ󸡺Τ˥ޥɼ¹...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"ѥ˰פåʤä\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"ֲޤǡ⸡˰פʤä\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"־ޤǡ⸡˰פʤä\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Ǥ줿\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"PGP ѥե졼:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP ѥե졼꤫õ줿\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- 顼: PGP ҥץǤʤä! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP Ͻλ --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"顼ХݡȤФ衣\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 顼: PGP ҥץǤʤä! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"沽˼Ԥ\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"PGP ҥץ򥪡ץǤʤ!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"PGP ưǤʤ\"\n\n#: pgp.c:1730\n#, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP s:̾, a:̾, %s, c:ʤ, o:¸Ź楪 \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"i:PGP/MIME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"i:饤\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"safcoi\"\n\n#: pgp.c:1742\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP s:̾, a:̾, c:ʤ, o:¸Ź楪 \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"safco\"\n\n#: pgp.c:1760\n#, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP e:Ź沽, s:̾, a:̾, b:Ź+̾, %s, c:ʤ, o:¸\"\n\" \"\n\n#: pgp.c:1763\nmsgid \"esabfcoi\"\nmsgstr \"esabfcoi\"\n\n#: pgp.c:1768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP e:Ź沽, s:̾, a:̾, b:Ź+̾, c:ʤ, o:¸Ź \"\n\n#: pgp.c:1769\nmsgid \"esabfco\"\nmsgstr \"esabfco\"\n\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP e:Ź沽, s:̾, a:̾, b:Ź+̾, %s, c:ʤ \"\n\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"esabfci\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP e:Ź沽, s:̾, a:̾, b:Ź+̾, c:ʤ \"\n\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"esabfc\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"PGP ...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"פϤ٤ƴڤ줫ѴѤߡޤϻѶػߡ\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP  <%s> ˰ס\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP  \\\"%s\\\" ˰ס\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"/dev/null 򥪡ץǤʤ\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP  %s\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"ޥ TOP 򥵡ФݡȤƤʤ\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"إåե˽񤭹ʤ!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"ޥ UIDL 򥵡ФݡȤƤʤ\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d ̤äƤ롣᡼ܥåƥץ󤷤Ƥߤ뤳ȡ\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s  POP ѥ\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"åꥹȤ...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"åե˽񤭹ʤ!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"å˺ޡ...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"å...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP ۥȤƤʤ\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"POP ᡼ܥå˿᡼Ϥʤ\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Фå?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"åɤ߽Ф (%d Х)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"᡼ܥå񤭹˥顼!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d / %d åɤ߽Ф]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Ф³ڤä!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"ǧ (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"POPॹפ!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"ǧ (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP ǧڤ˼Ԥ\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"ޥ USER ϥФݡȤƤʤ\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \" POP URL: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Ф˥åĤʤ\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \" %s ؤ³顼\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"POP Фؤ³λ...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"å...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"³ڤ줿POP Ф˺³?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"񤭤Υå\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"񤭤åʤ\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"ʥƥإå\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \" S/MIME إå\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"å沽...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"沽˼Ԥ\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"䤤碌\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"̾\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Ԥ...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"䤤碌ޥɤƤʤ\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"䤤碌\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"䤤碌: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"䤤碌 '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"ѥ\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"¸...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"źեե¸\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"ٹ! %s 񤭤褦ȤƤ롣³?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"źեեϥޥɤ̤Ƥ롣\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"ɽΤ̲ᤵ륳ޥ: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"ѥפ륳ޥ: \"\n\n#: recvattach.c:710\n#, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"ɤΤ褦źեե %s 뤫!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"դźեե?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"źեե?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Ź沽å沽Ǥʤ!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"źեե\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"ɽ٤ѡȤʤ!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"POP ФźեեǤʤ\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Ź沽åźեեκϥݡȤƤʤ\"\n\n#: recvattach.c:1132\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"̾åźեեκϽ̾ˤ뤳Ȥ롣\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"ޥѡźեեκΤߥݡȤƤ롣\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"message/rfc822 ѡȤΤߺƤ褤\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"å顼!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"å顼!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"ե %s 򥪡ץǤʤ\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"źեեȤž?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"դźեե뤹٤Ƥ沽ϼԡʬ MIME ž?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"MIME ץ벽ž?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"%s Ǥʤ\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"դåĤ⸫Ĥʤ\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"᡼󥰥ꥹȤĤʤä!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"դźեե뤹٤Ƥ沽ϼԡʬ MIME ץ벽?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"ɲ\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"ǧ(OK)\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"mixmaster  type2.list Ǥ!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"remailer \"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"顼: %s ϺǸ remailer ˤϻȤʤ\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster  %d Ȥ¤Ƥ롣\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"remailer ϤǤ˶\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Ǥ˺ǽΥ󥨥Ȥ򤷤Ƥ롣\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Ǥ˺ǸΥ󥨥Ȥ򤷤Ƥ롣\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster  Cc ޤ Bcc إåĤʤ\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"mixmaster Ȥˤϡhostname ѿŬڤͤꤻ衣\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"å顼ҥץ %d ǽλ\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"å顼\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"%s Ŭڤʥȥ꤬ \\\"%s\\\"  %d ܤˤ\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"mailcap ѥꤵƤʤ\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"%s Ѥ mailcap ȥ꤬Ĥʤä\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: ʤ\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: ¿\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"顼: score: ʿ\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"̾ʤ?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"̵ߤ롣\"\n\n#  no  from ֿ롣\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"%s%s ؤֿ?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"%s%s ؤΥեå?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Ļʥդåʤ!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"ֿ˥åޤ뤫?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"ѥå...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"٤Ƥ׵ᤵ줿åʤä!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"źեեȤž?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"žå...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"񤭤ΥåƤӽФ?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"žåԽ?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"å̤ѹ?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"̤ѹΥåߤ\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"åϽ񤭤α줿\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"ԤꤵƤʤ!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"ԤꤵƤʤä\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"̾ʤ?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"̾ꤵƤʤ\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Fcc źեե¸?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"åǤʤä\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"᡼\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Хå饦ɤ\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"boundary ѥ᡼ߤĤʤ! [Υ顼𤻤]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s ϤϤ¸ߤʤ!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s ̾ΥեǤϤʤ\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"%s 򥪡ץǤʤä\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"$sendmail ꤷʤȥ᡼Ǥʤ\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"å顼ҥץ %d (%s) ǽλ\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"ۿץν\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \" IDN %s  resent-from νȯ\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s... λ\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"%s äλ\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"ʥ %d äλ\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"S/MIME ѥե졼:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"ѺѤ  \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"ںѤ  \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"̤    \"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"ڤ  \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"ѴѤ  \"\n\n# Կ\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"      \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"      \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME  \\\"%s\\\" ˰ס\"\n\n#: smime.c:472\nmsgid \"ID is not trusted.\"\nmsgstr \"ID ϿѤƤʤ\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"ID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"%s  () 񤬸Ĥʤ\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"顼: OpenSSL ҥץǽ!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"ե뤬ʤ\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"᡼ܥåʤ\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"OpenSSL Ϥʤ...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"̤Τ̾ǽ: ֽ̾פ򤻤衣\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"OpenSSL ҥץץǽ!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- OpenSSL Ͻλ --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- 顼: OpenSSL ҥץǤʤä! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- ʲΥǡ S/MIME ǰŹ沽Ƥ --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- ʲΥǡ S/MIME ǽ̾Ƥ --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME Ź沽ǡλ --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME ̾ǡλ --]\\n\"\n\n#: smime.c:2109\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME s:̾, w:Ź, a:̾, c:ʤ, o:¸Ź楪 \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"swafco\"\n\n# 80-column ꤭ʤΤǥڡʤ\n#: smime.c:2123\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME e:Ź沽,s:̾,w:Ź,a:̾,b:Ź+̾,c:ʤ,o:¸\"\n\" \"\n\n#: smime.c:2124\nmsgid \"eswabfco\"\nmsgstr \"eswabfco\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME e:Ź沽, s:̾, w:Ź, a:̾, b:Ź+̾, c:ʤ \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"eswabfc\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"르ꥺ: 1: DES, 2: RC2, 3: AES, c:ʤ \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drac\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: ȥץDES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n# äȤɤȻפߴΤĤ\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SMTP å: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SMTP å: %s 򥪡ץǤʤä\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"From ɥ쥹ꤵƤʤ\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"SMTP å: ɤ߽Ф顼\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"SMTP å: 񤭹ߥ顼\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Фʱ\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \" SMTP URL: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP Ф桼ǧڤ򥵥ݡȤƤʤ\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP ǧڤˤ SASL ɬ\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"%s ǧڤ˼Ԥˡǻ\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL ǧڤ˼Ԥ\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"᡼ܥå...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"ǽĤʤä! [ΥХ𤻤]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(᡼ܥåʤ)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"ƥåϤ¤줿ɽϰϤǤԲĻ롣\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"ƥåѤǤʤ\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"ưλ꤬ʤ\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"դ¹Ԥνλ (⤷ʤ)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"mailcap Ȥäźեեɽ\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"źեեƥȤȤɽ\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"ѡȤɽ\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"ڡΰֲ˰ư\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"å¾Υ桼˺\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"Υǥ쥯ȥοե\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"ե\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"Υե̾ɽ\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"ߤΥ᡼ܥå(IMAPΤ)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"ߤΥ᡼ܥåιɤ(IMAPΤ)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"ܥå/Τߡױ(IMAPΤ)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"᡼Τ᡼ܥåɽ\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"ǥ쥯ȥѹ\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"᡼ܥå˿᡼뤬뤫\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"Υå˥եź\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"Υå˥åź\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"BCCꥹȤԽ\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"CCꥹȤԽ\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"źեեʸԽ\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"źեե content-trasfer-encoding Խ\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"åΥԡ¸ե̾\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"źդեԽ\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"From եɤԽ\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"åإåԽ\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"åԽ\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"źեե mailcap ȥȤäԽ\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"Reply-To եɤԽ\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"å̾Խ\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"TO ꥹȤԽ\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"᡼ܥå(IMAPΤ)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"źեե content-type Խ\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"źեեΰŪʥԡ\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"å ispell ¹\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"mailcap ȥȤäźեե\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"źեեΥѴ̵ͭ\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"Υåֽ񤭤פˤ\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"źեե͡(ư)\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"å\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"disposition  inline/attachment \"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"˥եäɤ\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"źեեΥ󥳡ɾ򹹿\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"ե˥å񤭹\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"åե᡼ܥå˥ԡ\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"åԤ̾\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"꡼ΰֲ˥ȥư\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"꡼˥ȥư\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"꡼ΰ־˥ȥư\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"text/plain ˥ǥɤԡ\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"text/plain ˥ǥɤԡ\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"ߤΥȥ\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"ߤΥ᡼ܥå(IMAPΤ)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"åɤΥå򤹤٤ƺ\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"åɤΥå򤹤٤ƺ\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"Ԥδʥɥ쥹ɽ\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"åɽإå޻ߤ\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"åɽ\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"ΥåԽ\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"ʸ\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"ʸ˰ư\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"ñƬ˰ư\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"Ƭ˰ư\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"ѥ᡼ܥå\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"ե̾̾䴰\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"䤤碌ˤꥢɥ쥹䴰\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"βλ\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"˰ư\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"ʸ˰ư\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"ñκǸ˰ư\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"ꥹȤ򲼤˥\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"ꥹȤ˥\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"뤫ޤǺ\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"뤫ñޤǺ\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"ιԤʸ򤹤٤ƺ\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"ñ\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"˥פʸǤ\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"֤ʸȤʸȤ촹\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"ñƬʸʸ\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"ñʸ\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"ñʸ\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"muttrc Υޥɤ\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"եޥ\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"Υ˥塼λ\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"륳ޥɤ̤źեեɽ\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"ǽΥȥ˰ư\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"ֽסץե饰\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"դǥåž\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"ߤΥȥ\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"٤ƤμԤֿ\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"Ⱦڡ˥\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"Ⱦڡ˥\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"β\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"ǥåֹ\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"ǸΥȥ˰ư\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"Ѥߥ᡼󥰥ꥹȰƤֿ\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"ޥ¹\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"å\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"åɤϤ\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"̤Υե򥪡ץ\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"ɤ߽Фѥ⡼ɤ̤Υե򥪡ץ\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"åΥơե饰\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"ѥ˰פå\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"IMAP Ф᡼\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"٤Ƥ IMAP Ф\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"POP Ф᡼\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"ǽΥå˰ư\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"ǸΥå˰ư\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"ѥ˰פåɽ\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"դå򸽺֤߰ˤĤʤ\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Τ뼡Υ᡼ܥå򳫤\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"οå˰ư\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"οޤ̤ɤΥåذư\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"Υ֥åɤ˰ư\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"Υåɤ˰ư\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"̤å˰ư\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"̤ɥåذư\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"åɤοƥå˰ư\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"Υåɤ˰ư\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"Υ֥åɤ˰ư\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"̤å˰ư\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"οå˰ư\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"οޤ̤ɥå˰ư\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"̤ɥå˰ư\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"ߤΥåɤɤˤ\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"ߤΥ֥åɤɤˤ\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"å˥ơե饰\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"ѹ᡼ܥå¸\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"ѥ˰פå˥դ\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"ѥ˰פåκ֤\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"ѥ˰פåΥϤ\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"ڡ˰ư\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"Υȥ˰ư\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"Բ˥\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"ڡذư\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"åΰֲ˰ư\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"ʸɽ򤹤뤫ɤ\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"ʸ򥹥åפ\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"åΰ־˰ư\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"å/źեե򥳥ޥɤ˥ѥ\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"Υȥ˰ư\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"Ծ˥\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"Υڡ˰ư\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"ߤΥȥ\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"ץ˥ɥ쥹䤤碌\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"䤤碌̤򸽺ߤη̤ɲ\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"ѹ᡼ܥå¸彪λ\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"񤭤ΥåƤӽФ\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"̤򥯥ꥢ\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"ߤΥ᡼ܥå͡(IMAPΤ)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"åֿ\"\n\n# ǥꥮԤˤޤϥ\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"ߤΥå򿷤ΤθȤ\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"᡼/źեեܥå/ե¸\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"ɽ\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"սɽ\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"˰פΤ򸡺\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"սǰפΤ򸡺\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"ѥ忧뤫ɤ\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"֥ǥޥɤư\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"å\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"åս\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"å˥դ\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"Ϥ뵡ǽ򥿥դåŬ\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"Ϥ뵡ǽ򥿥դåˤΤŬ\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"ߤΥ֥åɤ˥դ\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"ߤΥåɤ˥դ\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"åΡֿץե饰\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"᡼ܥåѹ񤭹फɤ\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"ˡ֥᡼ܥå/ե״֤\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"ڡΰ־˰ư\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"ȥκ֤\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"åɤΤ٤ƤΥåκ֤\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"֥åɤΤ٤ƤΥåκ\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"Mutt ΥСֹդɽ\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"źեե(ɬפʤmailcapȥ)\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"MIME źեեɽ\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"˲Υɤɽ\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"ͭ¥ѥͤɽ\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"ߤΥåɤŸ/Ÿ\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"٤ƤΥåɤŸ/Ÿ\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"PGP ź\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"PGP ץɽ\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"PGP ᡼\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"PGP 򸡾\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"Υ桼 ID ɽ\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \" PGP å\"\n\n# ֤٤ƤΡפäɬס\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"ۤ줿ƤΥ\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \" remailer ɲ\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \" remailer \"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"󤫤 remailer \"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Υ󥨥Ȥ\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Υ󥨥Ȥ\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"mixmaster remailer Ȥä\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"沽ԡäƤ\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"沽ԡ\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"ѥե졼򤹤٤ƥ꤫õ\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"ݡȤƤ\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"S/MIME ץɽ\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"˥顼\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"顼<roessler@does-not-exist.org> 𤻤衣\"\n\n# CHECK_ACL ȤȤΤʬ֥åǤʤפʤɤȤʤ롣\n#~ msgid \"Cannot %s: Operation not permitted by ACL\"\n#~ msgstr \"%sǤʤ:  ACL ǵĤƤʤ\"\n\n# CHECK_ACL - ֤Ǥʤפ³\n#~ msgid \"delete message\"\n#~ msgstr \"å\"\n\n# CHECK_ACL - ֤Ǥʤפ³\n#~ msgid \"delete message(s)\"\n#~ msgstr \"å\"\n\n# CHECK_ACL - ֤Ǥʤפ³\n#~ msgid \"toggle new\"\n#~ msgstr \"ե饰\"\n\n# CHECK_ACL - ֤Ǥʤפ³\n#~ msgid \"undelete message\"\n#~ msgstr \"åκ֤\"\n\n#~ msgid \"undelete message(s)\"\n#~ msgstr \"åκ֤\"\n\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"ٹ: å From: إåʤ\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"OpenSSL Ϥʤ..\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- 顼: ʷ PGP/MIME å! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"gpg-agent ¹ԤƤʤΤ GPGME ѤƤ\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"顼: multipart/encrypted ˥ץȥѥ᡼ʤ!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID %s ̤ڡ%s ˻?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"(̤Ѥ!) ID %s  %s ˻?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"ID %s  %s ˻?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"ٹ: ޤ ID %s Ѥ뤫ꤷƤʤ(򲡤³)\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"ٹ: ־񤬸Ĥʤ\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"ʿʸ\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\tĤΰϤ٤ơå夬äƤⰸȤư\\n\"\n#~ \"\\t\\tźեե -a ǻꤹ -- ɬ\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"ѥ󤬤ʤ\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"սθ: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \": \"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"SSL 񸡺\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"TLS/SSL 񸡺\"\n"
  },
  {
    "path": "po/ko.po",
    "content": "# Korean messages for mutt.\n# Copyright (C) 1998 Free Software Foundation, Inc.\n# Sang-Jin Hwang,? <accel@linux.mdworld.com>, 1998, 1999.\n# Byeong-Chan Kim <redhands@linux.sarag.net>, 2000.\n# Im Eunjea <eunjea@kldp.org>, 2002, 2003, 2004.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 1.5.6i\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2004-03-03 10:25+900\\n\"\n\"Last-Translator: Im Eunjea <eunjea@kldp.org>\\n\"\n\"Language-Team: Im Eunjea <eunjea@kldp.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=EUC-KR\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"̸ ٲٱ (%s): \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"%s@%s ȣ: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Ī !\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Ī\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \" Ī: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \" ̸ Ī ̹ !\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \":  ˸ƽ ۵ ʽϴ. ĥ?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"ּ: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \": '%s' ߸ IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"̸: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] ߰ұ?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Ϸ : \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"  õ  \"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Ī ߰.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"  õ  \"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"̸ ÷Ʈ ġ . ұ?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Mailcap ۼ ׸ %%s ʿ\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"\\\"%s\\\"  !\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \" мϱ    \"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \" Ÿ    \"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \" мϱ    \"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"%s mailcap ۼ ׸ ,   .\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Mailcap  ׸ %%s ʿ\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"  %s mailcap ׸ \"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"mailcap ׸񿡼 ġϴ  ã  . text .\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"ǵ  MIME . ÷ι   .\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"͸   \"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- ÷ι\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- ÷ι\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"͸   \"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \" !\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"     !\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"丮 ̵\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Žũ\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s 丮 ƴմϴ.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \" [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \" [%s],  Žũ: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"丮 [%s],  Žũ: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"丮 ÷  !\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \" Žũ ġϴ  .\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \" IMAP Կ \"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \" IMAP Կ \"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \" IMAP Կ \"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"͸   \"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \" \\\"%s\\\"  ?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \" .\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"  .\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"̵ 丮: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"丮 ˻ .\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \" Žũ: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \" : ¥(d), (a), ũ(z), (n)?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \" : ¥(d), (a), ũ(z), (n)?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dazn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"  ̸: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"丮   \"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"  õ  \"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"   \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: ͹̳ο  ʴ .\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s:  .\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: ׸ \"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: ε ׸񿡼   ɾ.\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: μ \"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"μ .\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: μ \"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: μ \"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: Ӽ .\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"μ \"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"μ ʹ \"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"⺻   \"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"PGP  Ȯұ?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"ӽ    !\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"ǥ ͸   \"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"   \"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME  Ȯο .\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"S/MIME  ڿ ̰ ġ .\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME   .\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP  Ȯο .\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP   .\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"ɾ: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"  ּ: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"   ּ: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"ּ м  !\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"߸ IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"%s  \"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"%s  \"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"   .\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"ϵ   .\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \" ޵.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"ϵ ޵.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Ͱ   \"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"ɾ : \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Ʈ  ǵ .\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \" Ʈ ұ?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"ǥ  Ʈ ұ?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \" Ʈ\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"ϵ Ʈ\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \" Ʈ   \"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"ϵ Ʈ   \"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\": (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore?: \"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\": (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore?: \"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrsotuzc\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \" ɾ: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"ȣȭ-%s \"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"ȣȭ-%s \"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"ص-%s \"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"ص-%s \"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s \"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s \"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" ǥõ\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"%s ...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \" %s ȯұ?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"%s Content-Type ٲ.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"ڼ %s %s ٲ.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"ȯ \"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"ȯ\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"÷ι .\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \" ÷\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"±׸ ̴   .\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \", ȣȭ\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"ȣȭ\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"()\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \"  : \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<⺻>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"ȣȭ : \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d]  ̻  !\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] . ٽ ڵұ?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- ÷ι\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \": '%s' ߸ IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"÷ι   ϴ.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"߸ IDN \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"õ  ÷...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"%s ÷  !\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \" ÷ϱ   \"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"   !\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"  .\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"÷ϰ ϴ  ǥϼ.\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"÷  !\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \" ؽƮ ÷ι .\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \" ÷ι ȯҼ .\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \" ÷ι ȯ .\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"߸ ڵ\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"  纻 ұ?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"̸ ٲٱ: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"%s: %s ¸ ˼ .\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \" : \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type base/sub .\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"   Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"%s    \"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"⿡ ִ ͵ ÷   ͵Դϴ.\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"  ߿ ?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Կ  \"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"%s  ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"  Ϸ.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"̹ S/MIME õ.  ұ? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP õ.  ұ? \"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"ӽ    \"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"  \"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"SSL  Ұ.\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \"Fingerprint: %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"%s ?\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"ɾ : %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--  ڷ  --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- : ӽ    ! --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \" : %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP   --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP   κ  --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP    --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- PGP   --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP   κ --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- PGP    --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- : PGP   ã  ! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- : ӽ    ! --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ʒ ڷ PGP/MIME ȣȭ Ǿ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ʒ ڷ PGP/MIME ȣȭ Ǿ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME ȣȭ ڷ  --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME ȣȭ ڷ  --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP  Ȯο .\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"   \"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ʒ ڷ S/MIME  Ǿ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ʒ ڷ S/MIME ȣȭ Ǿ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME  ڷ  --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME ȣȭ ڷ  --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"ȿ   \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"߸  Է: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"߸  Է: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"ȣȭ\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \" \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \" ID: 0x%s\"\n\n#: crypt-gpgme.c:3533\n#, fuzzy\nmsgid \"[Revoked]\"\nmsgstr \"ҵ   \"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"  \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"%s  ...\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"%s   \"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"ɾ : %s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \" ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"SSL : %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \" Ű // Ұ Դϴ.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \" Ȯ  \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP Ű \\\"%s\\\" ġ.\"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"PGP Ű \\\"%s\\\" ġ.\"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME  \\\"%s\\\" ġ.\"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"PGP Ű \\\"%s\\\" ġ.\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \" Ű   ϴ: //ҵ.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \" Ű //ҵ.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"ID ڰ ǵ .\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \" ID Ȯ .\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \" ID ſ뵵 \"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s  Ű   ϰڽϱ?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"\\\"%s\\\" ġϴ Ű ã ...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"keyID = \\\"%s\\\" %s ұ?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"%s keyID Է: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \" ID  ԷϽʽÿ: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \" : %s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP Ű %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"S/MIME ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"S/MIME ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"PGP ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \" : \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \" мϱ    \"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" ( ð: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s   %s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"ȣ  .\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"PGP մϴ...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \" .\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"뿡 S/MIME ǥð    .\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"PGP 踦 ϴ ...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"S/MIME  ϴ ...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :    multipart/signed  %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- : ġ ʴ multipart/signed ! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Warning: %s/%s  Ȯ    --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ʒ ڷ  Ǿ --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- :  ã  . --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[--  ڷ  --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"S/MIME մϴ...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"yes\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"no\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Mutt ұ?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"   \"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"ƹŰ  մϴ...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \"(  '?'): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"  .\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \" .\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"б  .\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \" ÷ 忡 㰡 ʴ .\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \" .\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"б  Կ  !\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"    ϵ.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"    .\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"׷\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"ܺο  . ÷װ Ʋ  \"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \" Կ   .\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"ܺο  .\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"ǥõ  .\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"ƹ͵  .\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"̵: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \" ȣ .\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"    .\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"߸  ȣ.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \" ҵ  .\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"ġϴ  : \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"  .\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \": %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"ϰ ġϴ : \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Mutt ұ?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"ġϴ Ͽ ǥ: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \" ҵ  .\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"ġϴ   : \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"ġϴ  ǥ : \"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"IMAP   ݴ ...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"б   \"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \" \"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"    .\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s  ƴ.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \" ʰ Mutt ?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Ÿ 尡 ƴ.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"    ߿ \"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \" ޼Դϴ.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \" ҵ  .\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"ù° ޼Դϴ.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \" ٽ ˻.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Ʒ ٽ ˻.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"ѵ  θ   ʴ .\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"  \"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"ѵ  θ   ʴ .\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"   \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \" \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \" ̻ Ÿ .\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"ó ŸԴϴ.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Ÿ   ޼ .\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \" ҵ  .\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"  \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"Ÿ θ Ϸ ̵\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \" ҵ  .\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\t~  ϴ  ϱ\\n\"\n\"~b \\tBcc: ׸  ߰ϱ\\n\"\n\"~c \\tCc: ׸  ߰ϱ\\n\"\n\"~f ޼\\t޼ ϱ\\n\"\n\"~F ޼\\t  ̿ܿ ~f  \\n\"\n\"~h\\t\\t޼  \\n\"\n\"~m ޼\\tο ޼ \\n\"\n\"~M ޼\\t  ̿ܿ ~m  \\n\"\n\"~p\\t\\t޼ μ\\n\"\n\"~q\\t\\t޼    \\n\"\n\"~t \\tڸ To: ׸ ߰\\n\"\n\"~u\\t\\t  ٽ ҷ\\n\"\n\"~v\\t\\t$visual  ޼ \\n\"\n\"~w \\t\\tϷ ޼ \\n\"\n\"~x\\t\\t ϰ  \\n\"\n\"~?\\t\\t ޼\\n\"\n\".\\t\\tٿ Ȧ   Է \\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\t~  ϴ  ϱ\\n\"\n\"~b \\tBcc: ׸  ߰ϱ\\n\"\n\"~c \\tCc: ׸  ߰ϱ\\n\"\n\"~f ޼\\t޼ ϱ\\n\"\n\"~F ޼\\t  ̿ܿ ~f  \\n\"\n\"~h\\t\\t޼  \\n\"\n\"~m ޼\\tο ޼ \\n\"\n\"~M ޼\\t  ̿ܿ ~m  \\n\"\n\"~p\\t\\t޼ μ\\n\"\n\"~q\\t\\t޼    \\n\"\n\"~t \\tڸ To: ׸ ߰\\n\"\n\"~u\\t\\t  ٽ ҷ\\n\"\n\"~v\\t\\t$visual  ޼ \\n\"\n\"~w \\t\\tϷ ޼ \\n\"\n\"~x\\t\\t ϰ  \\n\"\n\"~?\\t\\t ޼\\n\"\n\".\\t\\tٿ Ȧ   Է \\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: ߸  ȣ.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(ٿ . Ȧ Ͽ ޼ )\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \" .\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"޼ Ե:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"()\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"̸ .\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"޼  .\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"߸ IDN %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s:      (~? )\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"ӽ    : %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"ӽ     : %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"ӽ      : %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"޼  !\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"޼  !\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"޼    : %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \" ÷  : %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"ӽ  ϴ  : %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"÷ \"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"÷ \"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- :  Multipart/Alternative κ ǥ  ! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- ÷ι #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- : %s/%s, ڵ : %s, ũ: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- %s  ڵ  --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"ڵ   : %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- %s   . --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- %s ڵ   --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"[-- : message/external-body access-type   --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[ -- %s/%s ÷ι \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(ũ: %s Ʈ) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \" Ǿ --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- ̸: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[--  %s/%s ÷ι Ե , --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"[--  ܺ ҽ  --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[--  access-type %s   --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"ӽ    !\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \": multipart/signed  .\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[ -- %s/%s ÷ι \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- '%s/%s'   \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"('%s' Ű: κ )\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"('÷ι ' ۼ ǰ ʿ!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s:  ÷  \"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \":  ׸  ּ\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<˼ >\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"⺻ ۼ :\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"ۼ谡 ǵ  :\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"%s \"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: unhook *   .\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook:    hook : %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: %s %s   .\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"ڰ .\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"  (anonymous)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonymous  \"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"  (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5  .\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"  (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI  .\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"  LOGIN  .\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \" ...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \" .\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"  (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL  .\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s ߸ IMAP н\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"  ޴ ...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \" \"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \" \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \" ̸  .\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \" .\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \" \"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"SSL : %s\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \" .\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \" \"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"SSL : %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"%s  ݴ...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"  IMAP  Mutt   ϴ.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"TLS Ͽ  ұ?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"TLS  Ҽ \"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"%s  ...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"  \"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"%s ?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \" \"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"%d   ǥ...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"޼  ÷ ... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"ּ м  !\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \" ޼  ...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox:  \"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"߸  ̸\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"%s  ...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"%s  Ż ...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"%s  ...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"%s  Ż ...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"  IAMP     ϴ.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"ӽ  %s   !\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"޼   ... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"޼   ... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"޼  ...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"߸  ε.   õ.\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \" ε ϴ ...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"%d ޼ %s  ...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"޼ %d %s  ...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"ұ?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \" ޴ ȿ .\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \"ϰ ġϴ Ͽ ± \"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"ϰ ġϴ  ± \"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \": ߸ IDN '%s' ˸ƽ '%s'.\\n\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"÷ι  \"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"÷ι  \"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"÷ι  \"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"Ī: ּ \"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \": ߸ IDN '%s' ˸ƽ '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"߸  ʵ\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s:     \"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): ǥ : %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s:    \"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"߸ λ\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"߸ \"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s \"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s  \"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"߸ ¥ Է: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: ߸  \"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: ߸ \"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: ߸ \"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s:    \"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s:    \"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"%s %d ٿ : %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: %s \"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: %s  Ƿ б \"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: %s \"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: μ ʹ \"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s:    ɾ\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"ɾ : %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"Ȩ 丮 ã  \"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \" ̸ ˼ \"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \" ̸ ˼ \"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"μ \"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"ũ  ߻.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"ǵ  ۼ.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"ǵ  ۼ.   '%s'\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: μ ʹ \"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: ׷ ޴ \"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \" ۼ \"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: μ ʹ \"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: ʿ ׷  \"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro:  ۼ \"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: μ ʹ \"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: μ \"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: ׷  \"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Ű Է (^G ): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Char = %s, Octal = %o, Decimal = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Integer overflow -- ޸ Ҵ Ұ!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"޸ !\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"ڿ Ϸ <mutt-dev@mutt.org>  ʽÿ.\\n\"\n\"  flea(1) ƿƼ  ֽʽÿ.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2002 Michael R. Elkins .\\n\"\n\"Mutt  åӵ  ʽϴ; ڼ  'mutt -vv' ȮϽñ\\n\"\n\"ٶϴ. Mutt  Ʈ̸,  ׸ Ųٸ в \\n\"\n\"   ֽϴ. ڼ  'mutt -vv' ȮϽñ ٶϴ.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"usage: mutt [ -nRyzZ ] [ -e <ɾ> ] [ -F <> ] [ -m <> ] [ -f <\"\n\"> ]\\n\"\n\"       mutt [ -nR ] [ -e <ɾ> ] [ -F <> ] -Q <> [ -Q <> ] \"\n\"[...]\\n\"\n\"       mutt [ -nR ] [ -e <ɾ> ] [ -F <> ] -A <˸ƽ> [ -A <˸\"\n\"> ] [...]\\n\"\n\"       mutt [ -nx ] [ -e <ɾ> ] [ -a <> ] [ -F <> ] [ -H <\"\n\"> ] [ -i <> ] [ -s <> ] [ -b <ּ> ] [ -c <ּ> ] <ּ> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <ɾ> ] [ -F <> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"û:\\n\"\n\"  -A <˸ƽ>\\t־ ˸ƽ Ȯ\\n\"\n\"  -a <>\\tϿ  ÷\\n\"\n\"  -b <ּ>\\tBCC ּ \\n\"\n\"  -c <ּ>\\tCC ּ \\n\"\n\"  -e <ɾ>\\tʱȭ   ɾ \\n\"\n\"  -f <>\\t  \\n\"\n\"  -F <>\\t muttrc  \\n\"\n\"  -H <>\\t  ʾ  \\n\"\n\"  -i <>\\tMutt  忡 Խų  \\n\"\n\"  -m <>\\t⺻   \\n\"\n\"  -n\\t\\tMutt ý Muttrc   \\n\"\n\"  -p\\t\\t߼   ٽ \\n\"\n\"  -Q <>\\t  \\n\"\n\"  -R\\t\\t б   \\n\"\n\"  -s <>\\t  (   ο ȣ )\\n\"\n\"  -v\\t\\t,  ɼ \\n\"\n\"  -x\\t\\tmailx   䳻\\n\"\n\"  -y\\t\\t`'    \\n\"\n\"  -z\\t\\tԿ    \\n\"\n\"  -Z\\t\\t  ִ ù°  ,   \\n\"\n\"  -h\\t\\t \"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"usage: mutt [ -nRyzZ ] [ -e <ɾ> ] [ -F <> ] [ -m <> ] [ -f <\"\n\"> ]\\n\"\n\"       mutt [ -nR ] [ -e <ɾ> ] [ -F <> ] -Q <> [ -Q <> ] \"\n\"[...]\\n\"\n\"       mutt [ -nR ] [ -e <ɾ> ] [ -F <> ] -A <˸ƽ> [ -A <˸\"\n\"> ] [...]\\n\"\n\"       mutt [ -nx ] [ -e <ɾ> ] [ -a <> ] [ -F <> ] [ -H <\"\n\"> ] [ -i <> ] [ -s <> ] [ -b <ּ> ] [ -c <ּ> ] <ּ> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <ɾ> ] [ -F <> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"û:\\n\"\n\"  -A <˸ƽ>\\t־ ˸ƽ Ȯ\\n\"\n\"  -a <>\\tϿ  ÷\\n\"\n\"  -b <ּ>\\tBCC ּ \\n\"\n\"  -c <ּ>\\tCC ּ \\n\"\n\"  -e <ɾ>\\tʱȭ   ɾ \\n\"\n\"  -f <>\\t  \\n\"\n\"  -F <>\\t muttrc  \\n\"\n\"  -H <>\\t  ʾ  \\n\"\n\"  -i <>\\tMutt  忡 Խų  \\n\"\n\"  -m <>\\t⺻   \\n\"\n\"  -n\\t\\tMutt ý Muttrc   \\n\"\n\"  -p\\t\\t߼   ٽ \\n\"\n\"  -Q <>\\t  \\n\"\n\"  -R\\t\\t б   \\n\"\n\"  -s <>\\t  (   ο ȣ )\\n\"\n\"  -v\\t\\t,  ɼ \\n\"\n\"  -x\\t\\tmailx   䳻\\n\"\n\"  -y\\t\\t`'    \\n\"\n\"  -z\\t\\tԿ    \\n\"\n\"  -Z\\t\\t  ִ ù°  ,   \\n\"\n\"  -h\\t\\t \"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\" û:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"͹̳ ʱȭ .\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \": '%s' ߸ IDN.\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"  %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG Ͻ ǵ . \\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s . ?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"%s   : %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"ڰ  .\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s:  ÷  .\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"    .\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"  ǵ .\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \" \"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"%s д ...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \" ջ!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \" ջǾ!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"ġ !  ٽ   !\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"   !\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"sync: mbox Ǿ,  ϴ ! (  ٶ)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"%s  ...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \" !  Ϻΰ %s Ǿ\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \" ٽ   !\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \" ٽ  ...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"̵ ġ: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"߸  ȣ.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"׸ .\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \" ̻   .\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \" ̻ ö  .\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"ù° Դϴ.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \" Դϴ.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \" ׸ ġϰ ֽϴ.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"ù° ׸ ġϰ ֽϴ.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"ãƺ: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"ݴ  ãƺ: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"ã  .\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"±װ  ׸ .\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \" ޴ ˻  ϴ.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"â ٷ   ϴ.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"±׸ ̴   .\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"%s  ...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"   .\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message():  ð   \"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \" : %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"%s  \"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL  Ұ.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"ʱ (preconnect)  .\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"%s (%s) \"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"߸ IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"%s ã ...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"%s ȣƮ ã  .\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"%s  ...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"%s (%s)   .\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"ýۿ  ƮǸ ã  \"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"ƮǸ ä : %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s   ۹̼  !\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"Ʈ   SSL  Ұ\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"/ \"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL : %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"     \"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"%s  SSL  (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"  \"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[  ]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[߸ ¥]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"   ȿ  \"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"  \"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"     \"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"     \"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"S/MIME  ڿ ̰ ġ .\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \" \"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"   :\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"  :\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"  ȿ\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   from %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     to %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Fingerprint: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"ź(r), ̹ 㰡(o),  㰡(a)\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"roa\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"ź(r), ̹ 㰡(o)\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ro\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \":   \"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \" \"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"%s  SSL  (%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"͹̳ ʱȭ .\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Fingerprint: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Fingerprint: %s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"   ȿ  \"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"  \"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"  \"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\n#, fuzzy\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"   ȿ  \"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \" \"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"%s  ...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"%s (%s) \"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"\"\n\" ƴ϶ 丮Դϴ,  Ʒ ұ? [(y), (n)ƴϿ, (a)\"\n\"]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \" ƴ϶ 丮Դϴ,  Ʒ ұ?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"丮ȿ  :\"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \" , (o), ÷(a), (c)?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"oac\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"POP Կ    .\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"%s  ÷ұ?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s  ƴ!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"  ѵ Ѿ, %s  ٱ?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"dotlock %s   .\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"fcntl  õ  ð  ʰ!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"fcntl  ٸ ... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"flock  õ  ð  ʰ!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"flock õ ٸ ... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"%s   .\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"%s  ȭ ų  !\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"  %s ű?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \" ǥõ (%d) ұ?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \" ǥõ ϵ(%d) ұ?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"  %s ű ...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"  .\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d , %d ̵, %d \"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d , %d \"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \"   ٲٱ; `%s' \"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"ٽ ⸦ ϰ Ϸ 'toggle-write' ϼ!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"  Ұ ǥ Ǿ. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \" ǥõ.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"  \"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"÷ι\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"޼ Դϴ.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"޼ óԴϴ.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"   ֽϴ.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \" ̻ ο빮 .\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"ο빮 Ŀ  ̻  ο빮 .\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \" Ʈ Ͽ   !\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"ǥĿ : %s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"ǥ \"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"߸ ¥ Է: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"߸  Է: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"߸ ¥ Է: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \" : %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \" \"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"   : %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: ߸ ɾ\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c:  忡  \"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \" \"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"   : %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \" \"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \":    ۵ %d (  ٶ).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"˻   ...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"õ Ͽ  ...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"ذ ġϴ  .\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"ġϴ  Ʒ \"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"ġϴ   \"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"ã  ߴܵ.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"PGP ȣ  Է:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP ȣ  .\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- : PGP Ϻ μ   ! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP   --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Error: PGP Ϻ μ   ! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"ص .\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"PGP Ϻ μ   !\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"PGP  \"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"eswabf\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"eswabf\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"eswabf\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP ȣȭ(e), (s),  (a),  (b), (i)nline, (f)? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"eswabf\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"PGP   ...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \" Ű // Ұ Դϴ.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP Ű <%s> ġ.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP Ű \\\"%s\\\" ġ.\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"/dev/null   \"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP Ű %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"ɾ TOP   .\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"ӽ    \"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"ɾ UIDL   .\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"߸  ε.   õ.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s ߸ POP н\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"   ...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \" ӽ Ͽ  !\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"%d   ǥ...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"  Ȯ...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP   .\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"POP Կ   .\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"   ұ?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"  д  (%d Ʈ)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Կ   !\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d - %d  ]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"  !\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"  (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"  (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP  .\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"ɾ USER   .\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"ȿ   \"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"     .\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"%s   \"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"POP   ݴ...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \" ε Ȯ...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \" . POP  ٽ  ұ?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"߼  \"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"߼   .\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"߸ PGP \"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"߸ S/MIME \"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"޼  ...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"ص .\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \" \"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Ī \"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"ã\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \" ٸ ...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"  ǵ .\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \": \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \" '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"÷ι .\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"! %s  ϴ, ұ?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"÷ι ͵.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \": \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \": \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"÷ι %s     !\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"±װ  ÷ι ?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"÷ι ?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"ȣȭ  ص  !\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"÷ι\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \" ̻ ÷ι ϴ.\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"POP  ÷ι  Ҽ .\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"ȣȭ  ÷ι   .\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"ȣȭ  ÷ι   .\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"ü ÷ι  ˴ϴ.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"message/rfc822 κи   ֽϴ.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \" ٿ !\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \" ٿ !\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"ӽ  %s  \"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"÷ι ?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"ǥõ ÷ι  ڵ .  MIME  ұ?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"MIME ĸ ־ ұ?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"%s   .\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"ǥõ  ϴ.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"ϸ Ʈ ã  !\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"ǥõ ÷ι  ڵ .  MIME ĸ ұ?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"÷\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"Ȯ\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"mixmaster type2.list ã !\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Ϸ ü .\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \": %s ü  Ϸ Ҽ .\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster ü %d  .\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Ϸ ü ̹  .\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"̹ ù° ü .\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"̹  ü .\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster Cc Ǵ Bcc   .\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"mixmaster ϱ   ȣƮ  ϼ!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"    %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"   .\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"\\\"%2$s\\\" %3$d °  %1$s  ׸ ߸ \"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"mailcap н  \"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"%s  mailcap ׸񿡼 ã  \"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: ʹ  \"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: ʹ  \"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \" . ?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \" . ϴ.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"%s%s ?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"%s%s ?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"±װ     !\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"忡  Խŵϱ?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"ο   ...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"û     !\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"÷ι ?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"  غ ...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"߼   ٽ θ?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"  ұ?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"   ұ?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"   .\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"߼ .\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"ڰ  !\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"ڰ  .\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \" , ⸦ ұ?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"  .\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"  ...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"÷ι text \"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"   .\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \" .\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"׶ .\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Ѱ  ! [  ٶ]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s  ̻ ġ !\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s ùٸ  ƴ.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"%s   \"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"    %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \" μ \"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"resent-from غϴ  ߸ IDN %s\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s... .\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"%s ߰... .\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"%d ȣ ߰... .\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"S/MIME ȣ  Է:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"ſ     \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Ȯε   \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Ȯε\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"  \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"ҵ   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"ȿ   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"     \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME  \\\"%s\\\" ġ.\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \" ID Ȯ .\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"keyID Է: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"%s   ã  .\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \": OpenSSL Ϻ μ   !\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \" \"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \" \"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"OpenSSL   ...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"OpenSSL Ϻ μ   !\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- OpenSSL   --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- : OpenSSL Ϻ μ   ! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"\"\n\"[-- Ʒ ڷ S/MIME ȣȭ Ǿ --]\\n\"\n\"\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"\"\n\"[-- Ʒ ڷ S/MIME  Ǿ --]\\n\"\n\"\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME ȣȭ ڷ  --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME  ڷ  --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME ȣȭ(e), (s), (w),  (a),  (b), (f)? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"S/MIME ȣȭ(e), (s), (w),  (a),  (b), (f)? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"eswabf\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"S/MIME ȣȭ(e), (s), (w),  (a),  (b), (f)? \"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"eswabf\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SSL : %s\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SSL : %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"ȿ   \"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"GSSAPI  .\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"SASL  .\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL  .\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"  ...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \" Լ ã  ! [  ٶ]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"( )\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"ѵ  θ   ʴ .\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"θ   .\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"mailcap   ÷ι \"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"÷ι text \"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"߰ ÷ι ǥ  ٲ\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"  ̵\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"޼ ٸ  \"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \" 丮   \"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \" õ  ̸ \"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"   (IMAP )\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"  Ż (IMAP )\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"/Ե    (IMAP )\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"    .\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"丮 ٲٱ\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"   Ȯ\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \" ޼  ÷\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \" ޼ ޼ ÷\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"BCC  \"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"CC  \"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"÷ι  \"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"÷ι  ȣȭ  \"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \" ޼ 纻   \"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \" ģ  ÷ϱ\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"from ʵ \"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"  ޼ \"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"޼ \"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"mailcap ׸ Ͽ ÷ι \"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"Reply-To ʵ \"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"TO  ϱ\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"ο   (IMAP )\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"÷ι   \"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"÷ι ӽ 纻 \"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"ispell  ˻\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"mailcap ׸  ο ÷ι ۼ\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"÷ι   \"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"    ߿ \"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"÷  ̸ /̵\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"inline Ǵ attachment \"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"߽    \"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"÷ι ڵ  ٽ б\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \" /Կ \"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"߽ Ī \"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"׸ ȭ Ʒ ̵\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"׸ ȭ ߰ ̵\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"׸ ȭ  ̵\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"text/plain  ڵ \"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"text/plain  ڵ , \"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \" ׸ \"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"   (IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"μ Ÿ   \"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"Ÿ   \"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"۽ ּ  \"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \" °   \"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"Ŀ   \"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"Ŀ ѱ  \"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"ܾ ó ̵\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \" ó ̵\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"ϸ Ǵ Ī ϼϱ\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \" ּ ϼϱ\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"Ŀ  \"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"  ̵\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"ѱ  ̵\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"ܾ  ̵\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"history  Ʒ \"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"history   ø\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"Ŀ    \"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"Ŀ ܾ  \"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"    \"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"Ŀ  ܾ \"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \" ԷµǴ ڸ ο\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"յ  ٲٱ\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"빮ڷ ȯ\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"ҹڷ ȯ\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"빮ڷ ȯ\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"muttrc ɾ Է\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \" Žũ Է\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \" ޴ \"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \" ɾ  ÷ι ɸ\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"ó ׸ ̵\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \" '߿' ÷  ٲٱ\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \" ׸ \"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \" ڿ \"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"1/2  \"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"1/2  ø\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \" ȭ\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"ȣ ̵\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \" ׸ ̵\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \" ϸ Ʈ ϱ\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"ũ \"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"ο  ۼ\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"ٸ  \"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"ٸ  б  \"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"  ÷ ϱ\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"ϰ ġϴ  \"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"IMAP   \"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"POP   \"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"ó Ϸ ̵\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \" Ϸ ̵\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"ϰ ġϴ ϸ \"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"   ּ: \"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"    .\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"  Ϸ ̵\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"   / Ϸ ̵\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \" μ Ÿ ̵\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \" Ÿ ̵\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"   Ϸ ̵\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"   Ϸ ̵\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"Ÿ θ Ϸ ̵\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \" Ÿ ̵\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \" μ Ÿ ̵\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"   Ϸ ̵\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"  Ϸ ̵\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"   / Ϸ ̵\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"   Ϸ ̵\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \" Ÿ  ǥϱ\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \" μ Ÿ  ǥϱ\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"  ÷ ϱ\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"ϰ ġϴ Ͽ ± \"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"ϰ ġϴ  \"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"ϰ ġϴ  ± \"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \" ߰ ̵\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \" ׸ ̵\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"پ \"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"  ̵\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"޼  ̵\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"ο빮 ǥ  ٲٱ\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"ο빮  Ѿ\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"޼ ó ̵\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"/÷ι   ϱ\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \" ׸ ̵\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"پ ø\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"  ̵\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \" ׸ \"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"ּҸ   ܺ α׷ \"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"    ߰\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"߼   ٽ θ\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"ȭ ٽ ׸\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"   (IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"Ͽ ϱ\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"    ÷Ʈ \"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"/÷ι Ϸ \"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \" ǥ ̿ ˻\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \" ǥ ̿  ˻\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \" ã\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \" ã\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"˻  ÷ \"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"Ϻ  \"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \" \"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \" ׸ ± \"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"  ±װ  Ͽ \"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"  ±װ  Ͽ \"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \" μ Ÿ ± \"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \" Ÿ ± \"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \" '' ÷  ٲ\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \" ٽ   \"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"     \"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"ù  ̵\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \" ׸ \"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"Ÿ   ϱ\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"μ Ÿ   ϱ\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"Mutt   \"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"ʿϴٸ mailcap ׸  ÷ι \"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"MIME ÷ι \"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \" Ű  ǥϱ\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"   \"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \" Ÿ /\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \" Ÿ /\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"PGP   ÷\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"PGP ɼ \"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"PGP   ߼\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"PGP   Ȯ\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"  ID \"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"Classic PGP Ȯ\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"ü  㰡\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"üο Ϸ ÷\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"üο Ϸ \"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"üο Ϸ \"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"ü  ׸ \"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"ü  ׸ \"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"mixmaster Ϸ ü   \"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"ص 纻   ϱ\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"ص 纻 \"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"޸𸮿 ȣ  \"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"  \"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"S/MIME ɼ \"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \" ҵ  .\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \"  \"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \" ҵ  .\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"޼ \"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"ǥ \"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \" . <roessler@does-not-exist.org> ˷ֽʽÿ.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Ÿ θ Ϸ ̵\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- : ߸  PGP/MIME  ! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \": multipart/encrypted   !\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID %s Ȯε. %s ұ?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"ID \\\"%s\\\" (  !) %s ұ?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"ID \\\"%s\\\" %s ұ?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \": ſ ID %s  ʾҽϴ. (ƹ Ű )\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"OpenSSL   ..\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \":  ã  \"\n\n#~ msgid \"Clear\"\n#~ msgstr \"\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"esabif\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \" ã  .\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Ųٷ ã: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"ã: \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"   .\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"SSL  ˻\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"SSL  ˻\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"ӽ̽ ޴ ...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <ɾ> ] [ -F <> ] [ -m <> ] [ -f <\"\n#~ \"> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <ɾ> ] [ -F <> ] -Q <> [ -Q <> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <ɾ> ] [ -F <> ] -A <˸ƽ> [ -A <˸\"\n#~ \"ƽ> ] [...]\\n\"\n#~ \"       mutt [ -nx ] [ -e <ɾ> ] [ -a <> ] [ -F <> ] [ -H <\"\n#~ \"> ] [ -i <> ] [ -s <> ] [ -b <ּ> ] [ -c <ּ> ] <ּ> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <ɾ> ] [ -F <> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"û:\\n\"\n#~ \"  -A <˸ƽ>\\t־ ˸ƽ Ȯ\\n\"\n#~ \"  -a <>\\tϿ  ÷\\n\"\n#~ \"  -b <ּ>\\tBCC ּ \\n\"\n#~ \"  -c <ּ>\\tCC ּ \\n\"\n#~ \"  -e <ɾ>\\tʱȭ   ɾ \\n\"\n#~ \"  -f <>\\t  \\n\"\n#~ \"  -F <>\\t muttrc  \\n\"\n#~ \"  -H <>\\t  ʾ  \\n\"\n#~ \"  -i <>\\tMutt  忡 Խų  \\n\"\n#~ \"  -m <>\\t⺻   \\n\"\n#~ \"  -n\\t\\tMutt ý Muttrc   \\n\"\n#~ \"  -p\\t\\t߼   ٽ \\n\"\n#~ \"  -Q <>\\t  \\n\"\n#~ \"  -R\\t\\t б   \\n\"\n#~ \"  -s <>\\t  (   ο ȣ )\\n\"\n#~ \"  -v\\t\\t,  ɼ \\n\"\n#~ \"  -x\\t\\tmailx   䳻\\n\"\n#~ \"  -y\\t\\t`'    \\n\"\n#~ \"  -z\\t\\tԿ    \\n\"\n#~ \"  -Z\\t\\t  ִ ù°  ,   \\n\"\n#~ \"  -h\\t\\t \"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"POP  '߿' ǥø ٲ  .\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"POP     .\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"%s д ... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"  ... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"%s д ... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"PGP մϴ...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"ġ . ޼ ڰ  !\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"ݱ \"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2002 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2002 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2002 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"⿡ ޵   е鲲 ҽ ڵ, , ׸\\n\"\n#~ \"ȿ   ּ̽ϴ.\\n\"\n#~ \"\\n\"\n#~ \"     α׷  Ǯ׸Դϴ; в Free Software \"\n#~ \"Foundation\\n\"\n#~ \"     GNU General Public License    α׷  Ǵ \"\n#~ \"\\n\"\n#~ \"      ֽϴ; GPL  2 Ǵ ( )  GPL  \"\n#~ \"\\n\"\n#~ \"    ϴ.\\n\"\n#~ \"\\n\"\n#~ \"     α׷ ϰ ̱ ٶ ǹ̿ Ǿ,  ۵ \"\n#~ \"\\n\"\n#~ \"         ϴ; ǰ Ǵ Ư  뿡 \"\n#~ \"\\n\"\n#~ \"      ϴ.  ڼ  GNU General Public License \"\n#~ \"\\n\"\n#~ \"    ñ ٶϴ.\\n\"\n#~ \"\\n\"\n#~ \"     α׷ GNU General Public License 纻  Ǿֽ\"\n#~ \";\\n\"\n#~ \"    ԵǾ    Ʒ ּҷ Ͻñ ٶϴ.\\n\"\n#~ \"    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, \"\n#~ \"Boston, MA  02110-1301, USA.\\n\"\n\n#~ msgid \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (f)orget it? \"\n#~ msgstr \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, (f)? \"\n\n#~ msgid \"12345f\"\n#~ msgstr \"12345f\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"ù° ׸ .\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \" ׸ .\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"  IMAP  ߰  \"\n\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \" inline PGP ޼ ?\"\n\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"%s: : %s\"\n\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s: Ϲ  ƴ.\"\n\n#~ msgid \"unspecified protocol error\"\n#~ msgstr \"Ȯ   \"\n"
  },
  {
    "path": "po/lt.po",
    "content": "# Lithuanian translation of Mutt\n# Copyright (C) 2000 Free Software Foundation, Inc.\n# Tadas <btadas@is.lt>, 2000\n# Marius Gedminas <mgedmin@puni.osf.lt>\n# Gediminas Paulauskas <menesis@delfi.lt>, 2000.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt 1.3.12i\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2000-11-29 21:22+0200\\n\"\n\"Last-Translator: Gediminas Paulauskas <menesis@delfi.lt>\\n\"\n\"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\\n\"\n\"Language: lt\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=iso-8859-13\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"%s vartotojo vardas: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"%s@%s slaptaodis: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Ieit\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Trint\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Grint\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Pasirinkti\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Pagalba\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Tu neturi alias!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Aliasai\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Aliase kaip:\"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Tu jau apibrei alias tokiu vardu!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adresas:\"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Asmens vardas:\"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Tinka?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Isaugoti  byl:\"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Klaida bandant irti byl\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Aliasas dtas.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Klaida bandant irti byl\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Negaliu rasti tinkanio vardo, tsti?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Mailcap krimo raui reikia %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Klaida vykdant \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Nepavyko atidaryti bylos antratms nuskaityti.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Nepavyko atidaryti bylos antratms imesti.\"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \"Nepavyko atidaryti bylos antratms nuskaityti.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Nra mailcap krimo rao %s, sukuriu tui byl.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Mailcap Taisymo raui reikia %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Nra mailcap taisymo rao tipui %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Neradau tinkamo mailcap rao.  Rodau kaip tekst.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME tipas neapibrtas.  Negaliu parodyti priedo.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Negaliu sukurti filtro\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Priedai\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Priedai\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Negaliu sukurti filtro\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Raymo neskm!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"A neinau, kaip tai atspausdinti!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Pereiti\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Kauk\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s nra katalogas.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Pato duts [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Usakytos [%s], Byl kauk: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Katalogas [%s], Byl kauk: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Negaliu prisegti katalogo!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"N viena byla netinka byl kaukei\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Kol kas sukurti gali tik IMAP pato dutes\"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Kol kas sukurti gali tik IMAP pato dutes\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Kol kas itrinti gali tik IMAP pato dutes\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"Negaliu sukurti filtro\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Tikrai itrinti pato dut \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Pato dut itrinta.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Pato dut neitrinta.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Pereiti  katalog: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Klaida skaitant katalog.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Byl kauk:\"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Atvirkiai rikiuoti pagal (d)at, (v)ard, d(y)d ar (n)erikiuoti?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Rikiuoti pagal (d)at, (v)ard, d(y)d ar (n)erikiuoti? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dvyn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Naujos bylos vardas: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Negaliu irti katalogo\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Klaida bandant irti byl\"\n\n#: buffy.c:504\n#, fuzzy\nmsgid \"New mail in \"\nmsgstr \"Naujas patas dutje %s.\"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: spalva nepalaikoma terminalo\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: nra tokios spalvos\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: nra tokio objekto\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: komanda teisinga tik indekso objektams\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: per maai argument\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Trksta argument.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: per maai argument\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: per maai argument\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: tokio atributo nra\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"per maai argument\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"per daug argument\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"prastos spalvos nepalaikomos\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Tikrinti PGP para?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Negaliu sukurti laikinos bylos!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Negaliu sukurti ekrano filtro\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Negaljau kopijuoti laiko\"\n\n#: commands.c:189\n#, fuzzy\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME paraas patikrintas skmingai.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\n#, fuzzy\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME paraas NEGALI bti patikrintas.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP paraas patikrintas skmingai.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP paraas NEGALI bti patikrintas.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Komanda: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Nukreipti laik kam: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Nukreipti paymtus laikus kam: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Klaida nagrinjant adres!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Nukreipti laik  %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Nukreipti laikus  %s\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Message not bounced.\"\nmsgstr \"Laikas nukreiptas.\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Messages not bounced.\"\nmsgstr \"Laikai nukreipti.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Laikas nukreiptas.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Laikai nukreipti.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\n#, fuzzy\nmsgid \"Can't create filter process\"\nmsgstr \"Negaliu sukurti filtro\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Filtruoti per komand: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Spausdinimo komanda nebuvo apibrta.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Spausdinti laik?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Spausdinti paymtus laikus?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Laikas atspausdintas\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Laikai atspausdinti\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Laikas negaljo bti atspausdintas\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Laikai negaljo bti atspausdinti\"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Atv-Rik (d)ata/n(u)o/g(a)uta/(t)ema/(k)am/(g)ija/(n)erik/d(y)dis/(v)ert?: \"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Rik (d)ata/n(u)o/g(a)uta/(t)ema/(k)am/(g)ija/(n)erik/d(y)dis/(v)ert?: \"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"duatkgnyv\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Shell komanda: \"\n\n#: commands.c:741\n#, fuzzy, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"%s%s  dut\"\n\n#: commands.c:742\n#, fuzzy, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"%s%s  dut\"\n\n#: commands.c:743\n#, fuzzy, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"%s%s  dut\"\n\n#: commands.c:744\n#, fuzzy, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"%s%s  dut\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s%s  dut\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s%s  dut\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" paymtus\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Kopijuoju  %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type pakeistas  %s.\"\n\n#: commands.c:950\n#, fuzzy, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Character set pakeistas  %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Nra joki pried.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Sisti\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Nutraukti\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Prisegti byl\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Apra\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"ymjimas nepalaikomas.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Pasirayti, Uifruoti\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Uifruoti\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Pasirayti\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"(tsti)\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" pasirayti kaip: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<prastas>\"\n\n#: compose.c:165\n#, fuzzy\nmsgid \"Encrypt with: \"\nmsgstr \"Uifruoti\"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] nebeegzistuoja!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] pasikeit. Atnaujinti koduot?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Priedai\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Tu negali itrinti vienintelio priedo.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Prisegu parinktas bylas...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Negaliu prisegti %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Atidaryti dut, i kurios prisegti laik\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Negaliu urakinti duts!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Nra laik tame aplanke.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Paymk laikus, kuriuos nori prisegti!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Negaliu prisegti!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Perkodavimas keiia tik tekstinius priedus.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Esamas priedas nebus konvertuotas.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Esamas priedas bus konvertuotas.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Bloga koduot.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Isaugoti io laiko kopij?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Pervadinti :\"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, fuzzy, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Negaljau stat'inti: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Nauja byla:\"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type pavidalas yra ris/poris\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Neinomas Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Negaliu sukurti bylos %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"ia turt bti priedas, taiau jo nepavyko padaryti\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Atidti  laik?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"rayti laik  dut\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Raau laik  %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Laikas raytas.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Negaliu sukurti laikinos bylos\"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Serverio sertifikatas paseno\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"SSL nepasiekiamas.\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \"Pirt antspaudas: %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Sukurti %s?\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Klaida komandinje eilutje: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Pasirayt duomen pabaiga --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Klaida: negaljau sukurti laikinos bylos! --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP LAIKO PRADIA --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP VIEO RAKTO BLOKO PRADIA --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP PASIRAYTO LAIKO PRADIA --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\n#, fuzzy\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- PGP LAIKO PABAIGA --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP VIEO RAKTO BLOKO PABAIGA --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\n#, fuzzy\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- PGP PASIRAYTO LAIKO PABAIGA --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Klaida: neradau PGP laiko pradios! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Klaida: negaljau sukurti laikinos bylos! --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Toliau einantys duomenys yra uifruoti su PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Toliau einantys duomenys yra uifruoti su PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- PGP/MIME uifruot duomen pabaiga --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\n#, fuzzy\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- PGP/MIME uifruot duomen pabaiga --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP paraas patikrintas skmingai.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Negaljau kopijuoti laiko\"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Toliau einantys duomenys yra pasirayti --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Toliau einantys duomenys yra uifruoti su S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Pasirayt duomen pabaiga --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME uifruot duomen pabaiga --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"Blogas mnuo: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Blogas mnuo: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Blogas mnuo: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"Uifruoti\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \"Sertifikatas isaugotas\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Rakto ID: ox%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"Ieiti  \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"Jungiuosi prie %s...\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Klaida jungiantis prie IMAP serverio: %s\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Klaida komandinje eilutje: %s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Rakto ID: ox%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"is raktas negali bti naudojamas: jis pasens/udraustas/atauktas.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Ieiti  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Pasirink  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Tikrinti rakt  \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP raktai, tenkinantys \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"PGP raktai, tenkinantys \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME raktai, tenkinantys \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"PGP raktai, tenkinantys \\\"%s\\\".\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, fuzzy, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s [%s]\\n\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, fuzzy, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s [%s]\\n\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"is raktas negali bti naudojamas: jis pasens/udraustas/atauktas.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\n#, fuzzy\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"is raktas negali bti naudojamas: jis pasens/udraustas/atauktas.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\n#, fuzzy\nmsgid \"ID is not valid.\"\nmsgstr \"is ID yra nepatikimas.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\n#, fuzzy\nmsgid \"ID is only marginally valid.\"\nmsgstr \"is ID yra tik vos vos patikimas.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, fuzzy, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Ar tikrai nori j naudoti?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Iekau rakt, tenkinani \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Naudoti rakto ID = \\\"%s\\\", skirt %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"vesk rakto ID, skirt %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Praau, vesk rakto ID:\"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"klaida pattern'e: %s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP raktas %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"ustabp\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"ustabp\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"ustabp\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"ustabp\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Pasirayti kaip: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"Nepavyko atidaryti bylos antratms nuskaityti.\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \"\"\n\n#: crypt.c:74\n#, fuzzy, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Toliau PGP ivestis (esamas laikas: %c) --]\\n\"\n\n#: crypt.c:89\n#, fuzzy\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"PGP slapta fraz pamirta.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Kvieiu PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Laikas neisistas.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Klaida: Neinomas multipart/signed protokolas %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Klaida: Neteisinga multipart/signed struktra! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Dmesio: Negaliu patikrinti %s/%s parao. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Toliau einantys duomenys yra pasirayti --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Dmesio: Negaliu rasti joki para --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Pasirayt duomen pabaiga --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Kvieiu S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"taip\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"ne\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Ieiti i Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"neinoma klaida\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Spausk bet kok klavi...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \"('?' parodo sra): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Jokia dut neatidaryta.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Ten nra laik.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Dut yra tik skaitoma.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funkcija neleistina laiko prisegimo reime.\"\n\n#: curs_main.c:56\n#, fuzzy\nmsgid \"No visible messages.\"\nmsgstr \"Nra nauj laik\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Negaliu perjungti tik skaitomos duts raomumo!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Aplanko pakeitimai bus rayti ieinant i aplanko.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Aplanko pakeitimai nebus rayti.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Ieit\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Saugoti\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Rayt\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Atsakyt\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grupei\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Dut buvo iorikai pakeista.  Flagai gali bti neteisingi.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Naujas patas ioje dutje.\"\n\n#: curs_main.c:578\n#, fuzzy\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Dut buvo iorikai pakeista.  Flagai gali bti neteisingi.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Nra paymt laik.\"\n\n#: curs_main.c:731 menu.c:907\n#, fuzzy\nmsgid \"Nothing to do.\"\nmsgstr \"Jungiuosi prie %s...\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"okti  laik: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Argumentas turi bti laiko numeris.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Tas laikas yra nematomas.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Blogas laiko numeris.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Nra itrint laik.\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Itrinti laikus, tenkinanius: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Joks ribojimo pattern'as nra naudojamas.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Riba: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Riboti iki laik, tenkinani: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Ieiti i Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Paymti laikus, tenkinanius: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Nra itrint laik.\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Sugrinti laikus, tenkinanius: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Atymti laikus, tenkinanius: \"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Udarau jungt su IMAP serveriu...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Atidaryti dut tik skaitymo reimu.\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Atidaryti dut\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Nra duts su nauju patu.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s nra pato dut.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Ieiti i Mutt neisaugojus pakeitim?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Skirstymas gijomis neleidiamas.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"isaugoti  laik vlesniam siuntimui\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Tu esi ties paskutiniu laiku.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Nra itrint laik.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Tu esi ties pirmu laiku.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Paieka peroko  vir.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Paieka peroko  apai.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Tvinis laikas nematomas ribotame vaizde\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Nra nauj laik\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Tvinis laikas nematomas ribotame vaizde\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Nra neskaityt laik\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"rodyti laik\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Daugiau gij nra.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Tu esi ties pirma gija.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Gijoje yra neskaityt laik.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"Nra itrint laik.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Negaliu rayti laiko\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"okti  tvin laik gijoje\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"Nra itrint laik.\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tterpti eilut, prasidedani vienu ~\\n\"\n\"~b vartotojai\\tpridti vartotojus prie Bcc: lauko\\n\"\n\"~c vartotojai\\tpridti vartotojus prie Cc: lauko\\n\"\n\"~f laikai\\ttraukti laikus\\n\"\n\"~F laikai\\ttas pats kas ~f, be to, traukti antrates\\n\"\n\"~h\\t\\ttaisyti laiko antrat\\n\"\n\"~m laikai\\ttraukti ir cituoti laikus\\n\"\n\"~M laikai\\ttas pats kas ~m, be to, traukti antrates\\n\"\n\"~p\\t\\tspausdinti laik\\n\"\n\"~q\\t\\trayti byl ir ieiti i redaktoriaus\\n\"\n\"~r byla\\tperskaityti byl  redaktori\\n\"\n\"~t vartotojai\\tpridti vartotojus prie To: lauko\\n\"\n\"~u\\t\\tatkurti praeit eilut\\n\"\n\"~v\\t\\ttaisyti laik su $visual redaktoriumi\\n\"\n\"~w byla\\trayti laik  byl\\n\"\n\"~x\\t\\tatsisakyti pakeitim ir ieiti i redaktoriaus\\n\"\n\"~?\\t\\ti inut\\n\"\n\".\\t\\tvienas eilutje baigia vedim\\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\tterpti eilut, prasidedani vienu ~\\n\"\n\"~b vartotojai\\tpridti vartotojus prie Bcc: lauko\\n\"\n\"~c vartotojai\\tpridti vartotojus prie Cc: lauko\\n\"\n\"~f laikai\\ttraukti laikus\\n\"\n\"~F laikai\\ttas pats kas ~f, be to, traukti antrates\\n\"\n\"~h\\t\\ttaisyti laiko antrat\\n\"\n\"~m laikai\\ttraukti ir cituoti laikus\\n\"\n\"~M laikai\\ttas pats kas ~m, be to, traukti antrates\\n\"\n\"~p\\t\\tspausdinti laik\\n\"\n\"~q\\t\\trayti byl ir ieiti i redaktoriaus\\n\"\n\"~r byla\\tperskaityti byl  redaktori\\n\"\n\"~t vartotojai\\tpridti vartotojus prie To: lauko\\n\"\n\"~u\\t\\tatkurti praeit eilut\\n\"\n\"~v\\t\\ttaisyti laik su $visual redaktoriumi\\n\"\n\"~w byla\\trayti laik  byl\\n\"\n\"~x\\t\\tatsisakyti pakeitim ir ieiti i redaktoriaus\\n\"\n\"~?\\t\\ti inut\\n\"\n\".\\t\\tvienas eilutje baigia vedim\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: blogas laiko numeris.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Ubaik laik vieninteliu taku eilutje)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Nra duts.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Laike yra:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(tsti)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"trksta bylos vardo.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Laike nra eilui.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: neinoma redaktoriaus komanda (~? suteiks pagalb)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"negaljau sukurti laikino aplanko: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"negaljau rayti laikino pato aplanko: %s\"\n\n#: editmsg.c:110\n#, fuzzy, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"negaljau rayti laikino pato aplanko: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Laik byla yra tuia!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Laikas nepakeistas!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Negaliu atidaryti laiko bylos: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Negaliu pridurti laiko prie aplanko: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Klaida. Isaugau laikin byl: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Udti flag\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Ivalyti flag\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Klaida:  Nepavyko parodyti n vienos Multipart/Alternative dalies! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Priedas #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Tipas: %s/%s, Koduot: %s, Dydis: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Automatin perira su %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Kvieiu autom. periros komand: %s\"\n\n#: handler.c:1366\n#, fuzzy, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- %s --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Automatins periros %s klaidos --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Klaida: message/external-body dalis neturi access-type parametro --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- is %s/%s priedas \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(dydis %s bait)\"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"buvo itrintas --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- vardas: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, fuzzy, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- is %s/%s priedas \"\n\n#: handler.c:1500\n#, fuzzy\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- is %s/%s priedas netrauktas, --]\\n\"\n\"[-- o nurodytas iorinis altinis iseko. --]\\n\"\n\n#: handler.c:1518\n#, fuzzy, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"\"\n\"[-- is %s/%s priedas netrauktas, --]\\n\"\n\"[-- o nurodytas pasiekimo tipas %s yra nepalaikomas. --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Negaliu atidaryti laikinos bylos!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Klaida: multipart/signed neturi protokolo.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- is %s/%s priedas \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s yra nepalaikomas \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(naudok '%s' iai daliai perirti)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"('view-attachments' turi bti susietas su klaviu!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: negaljau prisegti bylos\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"KLAIDA: praau praneti i klaid\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<NEINOMAS>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Bendri susiejimai:\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Nesusietos funkcijos:\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Pagalba apie %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: neinomas hook tipas: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\n#, fuzzy\nmsgid \"No authenticators available\"\nmsgstr \"SASL autentikacija nepavyko.\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Autentikuojuosi (anonimin)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonimin autentikacija nepavyko.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Autentikuojuosi (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 autentikacija nepavyko.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Autentikuojuosi (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI autentikacija nepavyko.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN ijungtas iame serveryje.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Pasisveikinu...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, fuzzy, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Autentikuojuosi (APOP)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL autentikacija nepavyko.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Gaunu aplank sra...\"\n\n#: imap/browse.c:189\n#, fuzzy\nmsgid \"No such folder\"\nmsgstr \"%s: nra tokios spalvos\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Sukurti dut: \"\n\n#: imap/browse.c:283 imap/browse.c:338\n#, fuzzy\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Dut yra nepakeista.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Dut sukurta.\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Sukurti dut: \"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"Dut sukurta.\"\n\n#: imap/command.c:446\n#, fuzzy\nmsgid \"Mailbox closed\"\nmsgstr \"Pato dut itrinta.\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Udarau jungt su %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"is IMAP serveris yra senovikas. Mutt su juo neveikia.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Parenku %s...\"\n\n#: imap/imap.c:756\n#, fuzzy\nmsgid \"Error opening mailbox\"\nmsgstr \"Klaida raant  pato dut!\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Sukurti %s?\"\n\n#: imap/imap.c:1183\n#, fuzzy\nmsgid \"Expunge failed\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Paymiu %d laikus itrintais...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Isaugau laiko bsenos flagus... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"Klaida nagrinjant adres!\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Itutinu laikus i serverio...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\n#, fuzzy\nmsgid \"Bad mailbox name\"\nmsgstr \"Sukurti dut: \"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Usakau %s...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Atsisakau %s...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Usakau %s...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Atsisakau %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Negaliu paimti antrai i ios IMAP serverio versijos.\"\n\n#: imap/message.c:108\n#, fuzzy, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Negaliu sukurti laikinos bylos!\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"Paimu laik antrates... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"Paimu laik antrates... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Paimu laik...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"Laik indeksas yra neteisingas. Bandyk i naujo atidaryti dut.\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"Nusiuniu laik...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Kopijuoju %d laikus  %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Kopijuoju laik %d  %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Tsti?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Neprieinama iame meniu.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \"paymti laikus, tenkinanius pattern'\"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"atymti laikus, tenkinanius pattern'\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"taisyti priedo apraym\"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"taisyti priedo apraym\"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"taisyti priedo apraym\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: nra adreso\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"blogas antrats laukas\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: neinomas rikiavimo metodas\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): klaida regexp'e: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: neinomas kintamasis\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"negalima vartoti priedlio su reset\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"reikm neleistina reset komandoje\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s yra jungtas\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s yra ijungtas\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Bloga mnesio diena: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: blogas pato duts tipas\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: bloga reikm\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: bloga reikm\"\n\n#: init.c:2183\n#, fuzzy, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: neinomas tipas\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: neinomas tipas\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Klaida %s, eilut %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: klaidos %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: skaitymas nutrauktas, nes %s yra per daug klaid.\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: klaida %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: per daug argument\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: neinoma komanda\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Klaida komandinje eilutje: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"negaliu nustatyti nam katalogo\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"negaliu nustatyti vartotojo vardo\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"negaliu nustatyti vartotojo vardo\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"per maai argument\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Rastas ciklas makrokomandoje.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Klavias nra susietas.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Klavias nra susietas.  Spausk '%s' dl pagalbos.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: per daug argument\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: nra tokio meniu\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"nulin klavi seka\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: per daug argument\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: ia nra tokios funkcijos\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: tuia klavi seka\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: per daug argument\"\n\n#: keymap.c:1091\n#, fuzzy\nmsgid \"exec: no arguments\"\nmsgstr \"exec: per maai argument\"\n\n#: keymap.c:1111\n#, fuzzy, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: ia nra tokios funkcijos\"\n\n#: keymap.c:1132\n#, fuzzy\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"vesk rakto ID, skirt %s: \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Baigsi atmintis!\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Kad susisiektum su krjais, rayk laikus  <mutt-dev@mutt.org>.\\n\"\n\"Kad pranetum klaid, naudok flea(1) rank.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2000 Michael R. Elkins ir kiti.\\n\"\n\"Mutt ateina ABSOLIUIAI BE JOKIOS GARANTIJOS; dl smulkmen paleisk 'mutt -\"\n\"vv.'\\n\"\n\"Mutt yra free software, ir tu gali laisvai j platinti su tam\\n\"\n\"tikromis slygomis; rayk 'mutt -vv' dl smulkmen.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"vartosena: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <byla> ] [ -m <tipas> ] [ -f \"\n\"<byla> ]\\n\"\n\"       mutt [ -nx ] [ -e <cmd> ] [ -a <byla> ] [ -F <byla> ] [ -H <byla> ] \"\n\"[ -i <byla> ] [ -s <tema> ] [ -b <adres> ] [ -c <adres> ] <adres> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <cmd> ] [ -F <byla> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"parinktys:\\n\"\n\"  -a <byla>\\tprisegti byl prie laiko\\n\"\n\"  -b <adresas>\\tnurodyti blind carbon-copy (BCC) adres\\n\"\n\"  -c <adresas>\\tnurodyti carbon-copy (CC) adres\\n\"\n\"  -e <komanda>\\tnurodyti komand, kuri vykdyti po inicializacijos\\n\"\n\"  -f <byla>\\tnurodyti, kuri dut perskaityti\\n\"\n\"  -F <byla>\\tnurodyti alternatyvi muttrc byl\\n\"\n\"  -H <byla>\\tnurodyti juodraio byl, i kurios skaityti antrat\\n\"\n\"  -i <byla>\\tnurodyti byl, kuri Mutt turt traukti  atsakym\\n\"\n\"  -m <tipas>\\tnurodyti prast duts tip\\n\"\n\"  -n\\t\\tpriveria Mutt neskaityti sistemos Muttrc\\n\"\n\"  -p\\t\\ttsti atidt laik\\n\"\n\"  -R\\t\\tatidaryti dut tik skaitymo reime\\n\"\n\"  -s <tema>\\tnurodyti tem (turi bti kabutse, jei yra tarp)\\n\"\n\"  -v\\t\\trodyti versij ir kompiliavimo apibrimus\\n\"\n\"  -x\\t\\tsimuliuoti mailx siuntimo bd\\n\"\n\"  -y\\t\\tpasirinkti dut, nurodyt tavo 'mailboxes' srae\\n\"\n\"  -z\\t\\tikart ieiti, jei dutje nra laik\\n\"\n\"  -Z\\t\\tatidaryti pirm aplank su naujais laikais, ikart ieiti, jei \"\n\"nra\\n\"\n\"  -h\\t\\ti pagalbos inut\"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"vartosena: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <byla> ] [ -m <tipas> ] [ -f \"\n\"<byla> ]\\n\"\n\"       mutt [ -nx ] [ -e <cmd> ] [ -a <byla> ] [ -F <byla> ] [ -H <byla> ] \"\n\"[ -i <byla> ] [ -s <tema> ] [ -b <adres> ] [ -c <adres> ] <adres> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <cmd> ] [ -F <byla> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"parinktys:\\n\"\n\"  -a <byla>\\tprisegti byl prie laiko\\n\"\n\"  -b <adresas>\\tnurodyti blind carbon-copy (BCC) adres\\n\"\n\"  -c <adresas>\\tnurodyti carbon-copy (CC) adres\\n\"\n\"  -e <komanda>\\tnurodyti komand, kuri vykdyti po inicializacijos\\n\"\n\"  -f <byla>\\tnurodyti, kuri dut perskaityti\\n\"\n\"  -F <byla>\\tnurodyti alternatyvi muttrc byl\\n\"\n\"  -H <byla>\\tnurodyti juodraio byl, i kurios skaityti antrat\\n\"\n\"  -i <byla>\\tnurodyti byl, kuri Mutt turt traukti  atsakym\\n\"\n\"  -m <tipas>\\tnurodyti prast duts tip\\n\"\n\"  -n\\t\\tpriveria Mutt neskaityti sistemos Muttrc\\n\"\n\"  -p\\t\\ttsti atidt laik\\n\"\n\"  -R\\t\\tatidaryti dut tik skaitymo reime\\n\"\n\"  -s <tema>\\tnurodyti tem (turi bti kabutse, jei yra tarp)\\n\"\n\"  -v\\t\\trodyti versij ir kompiliavimo apibrimus\\n\"\n\"  -x\\t\\tsimuliuoti mailx siuntimo bd\\n\"\n\"  -y\\t\\tpasirinkti dut, nurodyt tavo 'mailboxes' srae\\n\"\n\"  -z\\t\\tikart ieiti, jei dutje nra laik\\n\"\n\"  -Z\\t\\tatidaryti pirm aplank su naujais laikais, ikart ieiti, jei \"\n\"nra\\n\"\n\"  -h\\t\\ti pagalbos inut\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Kompiliavimo parinktys:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Klaida inicializuojant terminal.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Derinimo lygis %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG nebuvo apibrtas kompiliavimo metu.  Ignoruoju.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s neegzistuoja. Sukurti j?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Negaliu sukurti %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Nenurodyti jokie gavjai.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: negaliu prisegti bylos.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Nra duts su nauju patu.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Neapibrta n viena pat gaunanti dut.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Dut yra tuia.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Skaitau %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Dut yra sugadinta!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Dut buvo sugadinta!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Baisi klaida!  Negaliu vl atidaryti duts!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Negaliu urakinti duts!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"sync: mbox pakeista, bet nra pakeist laik! (pranek i klaid)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Raau %s...\"\n\n#: mbox.c:962\n#, fuzzy\nmsgid \"Committing changes...\"\nmsgstr \"Kompiliuoju paiekos pattern'...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"rayti nepavyko!  Dut dalinai isaugota  %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Negaliu vl atidaryti duts!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Vl atidarau dut...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"okti : \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Blogas indekso numeris.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Nra ra.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Tu negali slinkti emyn daugiau.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Tu negali slinkti auktyn daugiau.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Tu esi pirmame puslapyje.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Tu esi paskutiniame puslapyje.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Tu esi ties paskutiniu rau.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Tu esi ties pirmu rau.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Iekoti ko: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Atgal iekoti ko: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Nerasta.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Nra paymt ra.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Paieka iam meniu negyvendinta.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"okinjimas dialoguose negyvendintas.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"ymjimas nepalaikomas.\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Parenku %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Negaljau isisti laiko.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, fuzzy, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Jungiuosi prie %s...\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL nepasiekiamas.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Nepavyko komanda prie jungimsi\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, fuzzy, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Klaida jungiantis prie IMAP serverio: %s\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Iekau %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Negaljau rasti hosto \\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Jungiuosi prie %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Negaljau prisijungti prie %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Nepavyko rasti pakankamai entropijos tavo sistemoje\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Pildau entropijos tvenkin: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s teiss nesaugios!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL udraustas dl entropijos trkumo\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"\"\n\n#: mutt_ssl.c:418\n#, fuzzy, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Nepavyko gauti sertifikato i peer'o\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"SSL jungtis, naudojant %s\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Neinoma\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[negaliu suskaiiuoti]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[bloga data]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Serverio sertifikatas dar negalioja\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Serverio sertifikatas paseno\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Nepavyko gauti sertifikato i peer'o\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Nepavyko gauti sertifikato i peer'o\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Sertifikatas isaugotas\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"is sertifikatas priklauso: \"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"is sertifikatas buvo iduotas:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"is sertifikatas galioja\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"    nuo %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"    iki %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Pirt antspaudas: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(a)tmesti, (p)riimti kart, (v)isada priimti\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"apv\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(a)tmesti, (p)riimti kart\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ap\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"spju: Negaljau isaugoti sertifikato\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Sertifikatas isaugotas\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL jungtis, naudojant %s\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Klaida inicializuojant terminal.\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Pirt antspaudas: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Pirt antspaudas: %s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"Serverio sertifikatas dar negalioja\"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"Serverio sertifikatas paseno\"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"Serverio sertifikatas paseno\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\n#, fuzzy\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"Serverio sertifikatas dar negalioja\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \"Sertifikatas isaugotas\"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Jungiuosi prie %s...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Klaida jungiantis prie IMAP serverio: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\n#, fuzzy\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Byla yra katalogas, saugoti joje?\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Byla yra katalogas, saugoti joje?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Byla kataloge: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Byla egzistuoja, (u)rayti, (p)ridurti, arba (n)utraukti?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"upn\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Negaliu isaugoti laiko  POP dut.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Pridurti laikus prie %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s nra pato dut!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Urakt skaiius virytas, paalinti urakt nuo %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Negaliu taku urakinti %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Virytas leistinas laikas siekiant fcntl urakto!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Laukiu fcntl urakto... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Virytas leistinas laikas siekiant flock urakto!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Laukiu fcntl urakto... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Nepavyko urakinti %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Nepavyko sinchronizuoti duts %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Perkelti skaitytus laikus  %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Sunaikinti %d itrint laik?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Sunaikinti %d itrintus laikus?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Perkeliu skaitytus laikus  %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Dut yra nepakeista.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d palikti, %d perkelti, %d itrinti.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d palikti, %d itrinti.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \"Spausk '%s', kad perjungtum raym\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Naudok 'toggle-write', kad vl galtum rayti!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Dut yra padaryta neraoma. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Dut sutikrinta.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Negaliu rayti laiko\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"PraPsl\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"KitPsl\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Priedai\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Kitas\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Rodoma laiko apaia.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Rodomas laiko virus.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"iuo metu rodoma pagalba.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Cituojamo teksto nebra.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Nra daugiau necituojamo teksto u cituojamo.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"keli dali laikas neturi boundary parametro!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Klaida iraikoje: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"klaida iraikoje\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Bloga mnesio diena: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Blogas mnuo: %s\"\n\n#: pattern.c:570\n#, fuzzy, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Blogas mnuo: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"klaida pattern'e: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"trksta parametro\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"trkstami skliausteliai: %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: bloga komanda\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: nepalaikomas iame reime\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"trksta parametro\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"trkstami skliausteliai: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"tuias pattern'as\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"klaida: neinoma operacija %d (pranekite i klaid).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Kompiliuoju paiekos pattern'...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Vykdau komand tinkantiems laikams...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Jokie laikai netenkina kriterijaus.\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"Isaugau...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Paieka pasiek apai nieko neradusi\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Paieka pasiek vir nieko neradusi\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Paieka pertraukta.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"vesk slapt PGP fraz:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP slapta fraz pamirta.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Klaida: negaliu sukurti PGP subproceso! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP ivesties pabaiga --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Klaida: negaljau sukurti PGP subproceso! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Negaliu atidaryti PGP vaikinio proceso!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Negaliu kviesti PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"ustabp\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"ustabp\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"ustabp\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, pasirayt k(a)ip, a(b)u, (l)aike, ar (p)amirti?\"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"ustabp\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Paimu PGP rakt...\"\n\n#: pgpkey.c:491\n#, fuzzy\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"is raktas negali bti naudojamas: jis pasens/udraustas/atauktas.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP raktai, tenkinantys <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP raktai, tenkinantys \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Negaliu atidaryti /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP raktas %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Serveris nepalaiko komandos TOP.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Negaliu rayti antrats  laikin byl!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Serveris nepalaiko komandos UIDL.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"Laik indeksas yra neteisingas. Bandyk i naujo atidaryti dut.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Paimu laik sra...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Negaliu rayti laiko  laikin byl!\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"Paymiu %d laikus itrintais...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Tikrinu, ar yra nauj laik...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP hostas nenurodytas.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Nra nauj laik POP dutje.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Itrinti laikus i serverio?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Skaitau naujus laikus (%d bait)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Klaida raant  pato dut!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d i %d laik perskaityti]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Serveris udar jungt!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Autentikuojuosi (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Autentikuojuosi (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP autentikacija nepavyko.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Serveris nepalaiko komandos USER.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Blogas mnuo: %s\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Negaliu palikti laik serveryje.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Klaida jungiantis prie IMAP serverio: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Udarau jungt su POP serveriu...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Tikrinu laik indeksus...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Jungtis prarasta. Vl prisijungti prie POP serverio?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Atidti laikai\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Nra atidt laik.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"Neleistina PGP antrat\"\n\n#: postpone.c:496\n#, fuzzy\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Neleistina S/MIME antrat\"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"Paimu laik...\"\n\n#: postpone.c:592\n#, fuzzy\nmsgid \"Decryption failed.\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nauja uklausa\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Padaryti alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Iekoti\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Laukiu atsakymo...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Uklausos komanda nenurodyta.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Uklausa\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Uklausa: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Uklausa '%s''\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Pipe\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Spausdinti\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Isaugau...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Priedas isaugotas.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"DMESIO!  Tu adi urayti ant seno %s, tsti\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Priedas perfiltruotas.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtruoti per: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Pipe : \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"A neinau kaip spausdinti %s priedus!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Spausdinti paymtus priedus?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Spausdinti pried?\"\n\n#: recvattach.c:1009\n#, fuzzy\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Negaliu rasti n vieno paymto laiko.\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Priedai\"\n\n#: recvattach.c:1057\n#, fuzzy\nmsgid \"There are no subparts to show!\"\nmsgstr \"Nra joki pried.\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Negaliu itrinti priedo i POP serverio.\"\n\n#: recvattach.c:1126\n#, fuzzy\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"PGP laik pried itrynimas nepalaikomas.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"PGP laik pried itrynimas nepalaikomas.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Palaikomas trynimas tik i keleto dali pried.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Tu gali nukreipti tik message/rfc822 priedus.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing message!\"\nmsgstr \"Klaida siuniant laik.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing messages!\"\nmsgstr \"Klaida siuniant laik.\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Negaliu atidaryti laikinos bylos %s.\"\n\n#: recvcmd.c:472\n#, fuzzy\nmsgid \"Forward as attachments?\"\nmsgstr \"rodyti MIME priedus\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"Negaliu dekoduoti vis paymt pried.  Persisti kitus MIME formatu?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Persisti MIME enkapsuliuot?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Negaliu sukurti %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Negaliu rasti n vieno paymto laiko.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Nerasta jokia konferencija!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Negaliu dekoduoti vis paymt pried.  Enkapsuliuoti kitus MIME formatu?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Pridurti\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"terpti\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Trinti\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"Gerai\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Negaliu gauti mixmaster'io type2.list!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Pasirink persiuntj grandin.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"\"\n\"Klaida: %s negali bti naudojamas kaip galutinis persiuntjas grandinje.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster'io grandins turi bti ne ilgesns nei %d element.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Persiuntj grandin jau tuia.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Tu jau pasirinkai pirm grandins element.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Tu jau pasirinkai paskutin grandins element.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster'is nepriima Cc bei Bcc antrai.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"Teisingai nustatyk hostname kintamj, kai naudoji mixmaster'!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Klaida siuniant laik, klaidos kodas %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Klaida siuniant laik.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Blogai suformuotas tipo %s raas \\\"%s\\\" %d eilutje\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Nenurodytas mailcap kelias!\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"mailcap raas tipui %s nerastas\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: per maai argument\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: per daug argument\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Nra temos, nutraukti?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Nra temos, nutraukiu.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Atsakyti %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Pratsti- %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"N vienas paymtas laikas nra matomas!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"traukti laik  atsakym?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"traukiu cituojam laik...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Negaljau traukti vis prayt laik!\"\n\n#: send.c:795\n#, fuzzy\nmsgid \"Forward as attachment?\"\nmsgstr \"Spausdinti pried?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Paruoiu persiuniam laik...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Tsti atidt laik?\"\n\n#: send.c:1426\n#, fuzzy\nmsgid \"Edit forwarded message?\"\nmsgstr \"Paruoiu persiuniam laik...\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Nutraukti nepakeist laik?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Nutrauktas nepakeistas laikas.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Laikas atidtas.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Nenurodyti jokie gavjai!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Nebuvo nurodyti jokie gavjai.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Nra temos, nutraukti siuntim?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Nenurodyta jokia tema.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Siuniu laik...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"irti pried kaip tekst\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Negaljau isisti laiko.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Laikas isistas.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Siuniu fone.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Trksta boundary parametro! [pranek i klaid]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s nebeegzistuoja!\"\n\n#: sendlib.c:878\n#, fuzzy, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s nra pato dut.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Negaljau atidaryti %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Klaida siuniant laik, klaidos kodas %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Pristatymo proceso ivestis\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Ieinu.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Sugavau %s...  Ieinu.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Sugavau signal %d...  Ieinu.\\n\"\n\n#: smime.c:141\n#, fuzzy\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"vesk slapt S/MIME fraz:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"\"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"\"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"\"\n\n#: smime.c:388\n#, fuzzy\nmsgid \"Expired   \"\nmsgstr \"Ieiti  \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"\"\n\n#: smime.c:394\n#, fuzzy\nmsgid \"Invalid   \"\nmsgstr \"Blogas mnuo: %s\"\n\n#: smime.c:397\n#, fuzzy\nmsgid \"Unknown   \"\nmsgstr \"Neinoma\"\n\n#: smime.c:429\n#, fuzzy, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME raktai, tenkinantys \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"is ID yra nepatikimas.\"\n\n#: smime.c:761\n#, fuzzy\nmsgid \"Enter keyID: \"\nmsgstr \"vesk rakto ID, skirt %s: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\n#, fuzzy\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"[-- Klaida: negaliu sukurti OpenSSL subproceso! --]\\n\"\n\n#: smime.c:1320\n#, fuzzy\nmsgid \"no certfile\"\nmsgstr \"Negaliu sukurti filtro\"\n\n#: smime.c:1323\n#, fuzzy\nmsgid \"no mbox\"\nmsgstr \"(nra duts)\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\n#, fuzzy\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Negaliu atidaryti OpenSSL vaikinio proceso!\"\n\n#: smime.c:1791 smime.c:1914\n#, fuzzy\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP ivesties pabaiga --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\n#, fuzzy\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Klaida: negaliu sukurti OpenSSL subproceso! --]\\n\"\n\n#: smime.c:1918\n#, fuzzy\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"\"\n\"[-- Toliau einantys duomenys yra uifruoti su PGP/MIME --]\\n\"\n\"\\n\"\n\n#: smime.c:1921\n#, fuzzy\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"\"\n\"[-- Toliau einantys duomenys yra pasirayti --]\\n\"\n\"\\n\"\n\n#: smime.c:1985\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME uifruot duomen pabaiga --]\\n\"\n\n#: smime.c:1987\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Pasirayt duomen pabaiga --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, uifruo(t) su, pasirayt k(a)ip, a(b)u, ar \"\n\"(p)amirti?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, uifruo(t) su, pasirayt k(a)ip, a(b)u, ar \"\n\"(p)amirti?\"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"ustabp\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"(u)ifruot, pa(s)irayt, uifruo(t) su, pasirayt k(a)ip, a(b)u, ar \"\n\"(p)amirti?\"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"ustabp\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Nepavyko pasisveikinti.\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Blogas mnuo: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"GSSAPI autentikacija nepavyko.\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"SASL autentikacija nepavyko.\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL autentikacija nepavyko.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Rikiuoju dut...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Negaljau rasti rikiavimo funkcijos! [pranek i klaid]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(nra duts)\"\n\n#: thread.c:1095\n#, fuzzy\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Tvinis laikas nematomas ribotame vaizde\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Nra prieinamo tvinio laiko.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"nulin operacija\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"priverstinai rodyti pried naudojant mailcap ra\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"irti pried kaip tekst\"\n\n#: ../keymap_alldefs.h:9\n#, fuzzy\nmsgid \"Toggle display of subparts\"\nmsgstr \"perjungti cituojamo teksto rodym\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"eiti  puslapio apai\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"vl sisti laik kitam vartotojui\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"pasirink nauj byl iame kataloge\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"irti byl\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"parodyti dabar paymtos bylos vard\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"usakyti esam aplank (tik IMAP)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"atsisakyti esamo aplanko (tik IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"perjungti vis/usakyt dui rodym (tik IMAP)\"\n\n#: ../keymap_alldefs.h:18\n#, fuzzy\nmsgid \"list mailboxes with new mail\"\nmsgstr \"Nra duts su nauju patu.\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"keisti katalogus\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"tikrinti, ar dutse yra naujo pato\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"prisegti byl(as) prie io laiko\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"prisegti byl(as) prie io laiko\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"taisyti BCC sra\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"taisyti CC sra\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"taisyti priedo apraym\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"taisyti priedo Transfer-Encoding\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"vesk byl,  kuri isaugoti io laiko kopij\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"taisyti byl, skirt prisegimui\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"taisyti From lauk\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"taisyti laik su antratmis\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"taisyti laik\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"taisyti pried naudojant mailcap ra\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"taisyti Reply-To lauk\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"taisyti io laiko tem\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"taisyti To sra\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"sukurti nauj dut (tik IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"keisti priedo Content-Type\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"gauti laikin priedo kopij\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"paleisti ispell laikui\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"sukurti nauj pried naudojant mailcap ra\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"perjungti io priedo perkodavim\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"isaugoti  laik vlesniam siuntimui\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"pervadinti/perkelti prisegt byl\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"sisti laik\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"perjungti, ar sisti laike, ar priede\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"perjungti, ar itrinti byl, j isiuntus\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"atnaujinti priedo koduots info.\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"rayti laik  aplank\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"kopijuoti laik  byl/dut\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"sukurti alias laiko siuntjui\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"rodyti ra  ekrano apaioje\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"rodyti ra  ekrano viduryje\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"rodyti ra  ekrano viruje\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"padaryti ikoduot (text/plain) kopij\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"padaryti ikoduot (text/plain) kopij ir itrinti\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"itrinti esam ra\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"itrinti esam dut (tik IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"itrinti visus laikus subgijoje\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"itrinti visus laikus gijoje\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"rodyti piln siuntjo adres\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"rodyti laik ir perjungti antrai rodym\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"rodyti laik\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"taisyti gryn laik\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"itrinti simbol prie ymekl\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"perkelti ymekl vienu simboliu kairn\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"perkelti ymekl  odio pradi\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"perokti  eiluts pradi\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"eiti ratu per gaunamo pato dutes\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"ubaigti bylos vard ar alias\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"ubaigti adres su uklausa\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"itrinti simbol po ymekliu\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"perokti  eiluts gal\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"perkelti ymekl vienu simboliu deinn\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"perkelti ymekl  odio pabaig\"\n\n#: ../keymap_alldefs.h:75\n#, fuzzy\nmsgid \"scroll down through the history list\"\nmsgstr \"slinktis auktyn istorijos srae\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"slinktis auktyn istorijos srae\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"itrinti simbolius nuo ymeklio iki eiluts galo\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"itrinti simbolius nuo ymeklio iki odio galo\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"itrinti visus simbolius eilutje\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"itrinti od prie ymekl\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"cituoti sekant nuspaust klavi\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"sukeisti simbol po ymekliu su praeitu\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"pradti od didija raide\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"perrayti od maosiomis raidmis\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"perrayti od didiosiomis raidmis\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"vesti muttrc komand\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"vesti byl kauk\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"ieiti i io meniu\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtruoti pried per shell komand\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"eiti  pirm ura\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"perjungti laiko 'svarbumo' flag\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"persisti laik su komentarais\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"paymti esam ra\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"atsakyti visiems gavjams\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"slinktis emyn per 1/2 puslapio\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"slinktis auktyn per 1/2 puslapio\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"is ekranas\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"okti  indekso numer\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"eiti  paskutin ra\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"atsakyti nurodytai konferencijai\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"vykdyti macro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"sukurti nauj laik\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"atidaryti kit aplank\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"atidaryti kit aplank tik skaitymo reimu\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"ivalyti laiko bsenos flag\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"itrinti laikus, tenkinanius pattern'\"\n\n#: ../keymap_alldefs.h:108\n#, fuzzy\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"parsisti pat i POP serverio\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"parsisti pat i POP serverio\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"eiti  pirm laik\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"eiti  paskutin laik\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"rodyti tik laikus, tenkinanius pattern'\"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"Nukreipti paymtus laikus kam: \"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Nra duts su nauju patu.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"okti  kit nauj laik\"\n\n#: ../keymap_alldefs.h:117\n#, fuzzy\nmsgid \"jump to the next new or unread message\"\nmsgstr \"okti  kit neskaityt laik\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"okti  kit subgij\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"okti  kit gij\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"eiti  kit neitrint laik\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"okti  kit neskaityt laik\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"okti  tvin laik gijoje\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"okti  praeit gij\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"okti  praeit subgij\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"eiti  praeit neitrint laik\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"okti  praeit nauj laik\"\n\n#: ../keymap_alldefs.h:127\n#, fuzzy\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"okti  praeit neskaityt laik\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"okti  praeit neskaityt laik\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"paymti esam gij skaityta\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"paymti esam subgij skaityta\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"udti bsenos flag laikui\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"isaugoti duts pakeitimus\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"paymti laikus, tenkinanius pattern'\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"sugrinti laikus, tenkinanius pattern'\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"atymti laikus, tenkinanius pattern'\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"eiti  puslapio vidur\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"eiti  kit ra\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"slinktis viena eilute emyn\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"eiti  kit puslap\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"okti  laiko apai\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"perjungti cituojamo teksto rodym\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"praleisti cituojam tekst\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"okti  laiko vir\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"filtruoti laik/pried per shell komand\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"eiti  praeit ra\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"slinktis viena eilute auktyn\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"eiti  praeit puslap\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"spausdinti esam ra\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"uklausti iorin program adresams rasti\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"pridurti naujos uklausos rezultatus prie esam\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"isaugoti duts pakeitimus ir ieiti\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"tsti atidt laik\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"ivalyti ir perpieti ekran\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{vidin}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"itrinti esam dut (tik IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"atsakyti  laik\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"naudoti esam laik kaip ablon naujam\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"isaugoti laik/pried  byl\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"iekoti reguliarios iraikos\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"iekoti reguliarios iraikos atgal\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"iekoti kito tinkamo\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"iekoti kito tinkamo prieinga kryptimi\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"perjungti paiekos pattern'o spalvojim\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"kviesti komand subshell'e\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"rikiuoti laikus\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"rikiuoti laikus atvirkia tvarka\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"paymti esam ra\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"pritaikyti kit funkcij paymtiems laikams\"\n\n#: ../keymap_alldefs.h:169\n#, fuzzy\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"pritaikyti kit funkcij paymtiems laikams\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"paymti esam subgij\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"paymti esam gij\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"perjungti laiko 'naujumo' flag\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"perjungti, ar dut bus perraoma\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"perjungti, ar naryti pato dutes, ar visas bylas\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"eiti  puslapio vir\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"sugrinti esam ra\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"sugrinti visus laikus gijoje\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"sugrinti visus laikus subgijoje\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"parodyti Mutt versijos numer ir dat\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"rodyti pried naudojant mailcap ra, jei reikia\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"rodyti MIME priedus\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"parodyti dabar aktyv ribojimo pattern'\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"sutraukti/iskleisti esam gij\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"sutraukti/iskleisti visas gijas\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"prisegti PGP vie rakt\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"rodyti PGP parinktis\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"sisti PGP vie rakt\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"patikrinti PGP vie rakt\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"irti rakto vartotojo id\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Priimti sukonstruot grandin\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Pridti persiuntj  grandin\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"terpti persiuntj  grandin\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Paalinti persiuntj i grandins\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Pasirinkti ankstesn element grandinje\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Pasirinkti tolesn element grandinje\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"pasisti praneim per mixmaster persiuntj grandin\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"padaryti iifruot kopij ir itrinti\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"padaryti iifruot kopij\"\n\n#: ../keymap_alldefs.h:201\n#, fuzzy\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"umirti PGP slapt fraz\"\n\n#: ../keymap_alldefs.h:202\n#, fuzzy\nmsgid \"extract supported public keys\"\nmsgstr \"itraukti PGP vieus raktus\"\n\n#: ../keymap_alldefs.h:203\n#, fuzzy\nmsgid \"show S/MIME options\"\nmsgstr \"rodyti S/MIME parinktis\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"Nra itrint laik.\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" iame apribotame vaizde\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"Nra itrint laik.\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"taisyti laik\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"klaida iraikoje\"\n\n#, fuzzy\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Vidin klaida. Pranek <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"okti  tvin laik gijoje\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Klaida: blogai suformuotas PGP/MIME laikas! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Klaida: multipart/encrypted neturi protocol parametro!\"\n\n#, fuzzy\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Naudoti rakto ID = \\\"%s\\\", skirt %s?\"\n\n#, fuzzy\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Naudoti rakto ID = \\\"%s\\\", skirt %s?\"\n\n#, fuzzy\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"spju: Negaljau isaugoti sertifikato\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Ivalyti\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"usablp\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Jokio paiekos pattern'o.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Atvirkia paieka: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Paieka: \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Klaida siuniant laik.\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"SSL sertifikato patikrinimas\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"SSL sertifikato patikrinimas\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Gaunu vard erdves...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"vartosena: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <byla> ] [ -m <tipas> ] [ -f \"\n#~ \"<byla> ]\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <byla> ] [ -F <byla> ] [ -H \"\n#~ \"<byla> ] [ -i <byla> ] [ -s <tema> ] [ -b <adres> ] [ -c <adres> ] \"\n#~ \"<adres> [ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <byla> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"parinktys:\\n\"\n#~ \"  -a <byla>\\tprisegti byl prie laiko\\n\"\n#~ \"  -b <adresas>\\tnurodyti blind carbon-copy (BCC) adres\\n\"\n#~ \"  -c <adresas>\\tnurodyti carbon-copy (CC) adres\\n\"\n#~ \"  -e <komanda>\\tnurodyti komand, kuri vykdyti po inicializacijos\\n\"\n#~ \"  -f <byla>\\tnurodyti, kuri dut perskaityti\\n\"\n#~ \"  -F <byla>\\tnurodyti alternatyvi muttrc byl\\n\"\n#~ \"  -H <byla>\\tnurodyti juodraio byl, i kurios skaityti antrat\\n\"\n#~ \"  -i <byla>\\tnurodyti byl, kuri Mutt turt traukti  atsakym\\n\"\n#~ \"  -m <tipas>\\tnurodyti prast duts tip\\n\"\n#~ \"  -n\\t\\tpriveria Mutt neskaityti sistemos Muttrc\\n\"\n#~ \"  -p\\t\\ttsti atidt laik\\n\"\n#~ \"  -R\\t\\tatidaryti dut tik skaitymo reime\\n\"\n#~ \"  -s <tema>\\tnurodyti tem (turi bti kabutse, jei yra tarp)\\n\"\n#~ \"  -v\\t\\trodyti versij ir kompiliavimo apibrimus\\n\"\n#~ \"  -x\\t\\tsimuliuoti mailx siuntimo bd\\n\"\n#~ \"  -y\\t\\tpasirinkti dut, nurodyt tavo 'mailboxes' srae\\n\"\n#~ \"  -z\\t\\tikart ieiti, jei dutje nra laik\\n\"\n#~ \"  -Z\\t\\tatidaryti pirm aplank su naujais laikais, ikart ieiti, jei \"\n#~ \"nra\\n\"\n#~ \"  -h\\t\\ti pagalbos inut\"\n\n#, fuzzy\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"Negaliu taisyti laiko POP serveryje.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"Negaliu taisyti laiko POP serveryje.\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"Skaitau %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Raau laikus... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"Skaitau %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Kvieiu pgp...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Mirtina klaida.  Nesutampa laik skaiius!\"\n\n#, fuzzy\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"Nepavyko pasisveikinti.\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2000 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"Copyright (C) 1996-2000 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2000 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2000 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2000 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2000 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000      Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Daugyb kit, nepamint ia, prisidjo daugybe kodo, pataisym ir \"\n#~ \"pasilym.\\n\"\n#~ \"\\n\"\n#~ \"    i programa yra free software; tu gali j platinti ir/arba\\n\"\n#~ \"keisti \\n\"\n#~ \"    pagal GNU General Public License slygas, kurias paskelb\\n\"\n#~ \"    Free Software Foundation; arba 2 Licenzijos versij, arba\\n\"\n#~ \"    (pagal tavo pasirinkim) bet kuri vlesn versij.\\n\"\n#~ \"\\n\"\n#~ \"    i programa yra platinama, tikintis, kad ji bus naudinga,\\n\"\n#~ \"    bet BE JOKIOS GARANTIJOS; netgi be numanomos garantijos\\n\"\n#~ \"    VERTINGUMUI arba TINKAMUMUI KOKIAM NORS TIKSLUI.\\n\"\n#~ \"  irk  GNU General Public License dl detali.\\n\"\n#~ \"\\n\"\n#~ \"    Tu turjai gauti GNU General Public License kopij\\n\"\n#~ \"    kartu su ia programa; jeigu ne, parayk  Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"Rodomas pirmas raas.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"Rodomas paskutinis raas.\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"Nepavyko pridurti prie IMAP dui iame serveryje\"\n\n#, fuzzy\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"Ar sukurti application/pgp laik?\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"Negaljau stat'inti: %s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s nra pato dut.\"\n\n#, fuzzy\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"Kvieiu OpenSSL...\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"Nukreipti laik  %s...?\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"Nukreipti laikus  %s...?\"\n\n#, fuzzy\n#~ msgid \"ewsabf\"\n#~ msgstr \"usabmp\"\n\n#, fuzzy\n#~ msgid \"Certificate *NOT* added.\"\n#~ msgstr \"Sertifikatas isaugotas\"\n\n#, fuzzy\n#~ msgid \"This ID's validity level is undefined.\"\n#~ msgstr \"io ID pasitikjimo lygis nenurodytas.\"\n\n#~ msgid \"Decode-save\"\n#~ msgstr \"Dekoduoti-isaugoti\"\n\n#~ msgid \"Decode-copy\"\n#~ msgstr \"Dekoduoti-kopijuoti\"\n\n#~ msgid \"Decrypt-save\"\n#~ msgstr \"Iifruoti-isaugoti\"\n\n#~ msgid \"Decrypt-copy\"\n#~ msgstr \"Iifruoti-kopijuoti\"\n\n#~ msgid \"Copy\"\n#~ msgstr \"Kopijuoti\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"[-- End of PGP output --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"[-- PGP ivesties pabaiga --]\\n\"\n#~ \"\\n\"\n\n#, fuzzy\n#~ msgid \"Can't stat %s.\"\n#~ msgstr \"Negaljau stat'inti: %s\"\n\n#~ msgid \"%s: no such command\"\n#~ msgstr \"%s: nra tokios komandos\"\n\n#~ msgid \"Authentication method is unknown.\"\n#~ msgstr \"Autentikacijos metodas neinomas.\"\n\n#~ msgid \"MIC algorithm: \"\n#~ msgstr \"MIC algoritmas: \"\n\n#~ msgid \"This doesn't make sense if you don't want to sign the message.\"\n#~ msgstr \"Tai neturi jokios prasms, jei tu nenori pasirayti laiko.\"\n\n#~ msgid \"Unknown MIC algorithm, valid ones are: pgp-md5, pgp-sha1, pgp-rmd160\"\n#~ msgstr \"Neinomas MIC algoritmas, galimi yra: pgp-md5, pgp-sha1, pgp-rmd160\"\n"
  },
  {
    "path": "po/nl.po",
    "content": "# Dutch translations for Mutt.\n# This file is distributed under the same license as the mutt package.\n#\n# \"Nobody is perfect, behalve Thekla Reuten.\"\n#\n# René Clerc <rene@clerc.nl>, 2002, 2003, 20004, 2005, 2006, 2007, 2008, 2009.\n# Benno Schulenberg <benno@vertaalt.nl>, 2008, 2014, 2015, 2016.\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt 1.6.0\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2016-03-22 17:02+0100\\n\"\n\"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\\n\"\n\"Language-Team: Dutch <vertaling@vrijschrift.org>\\n\"\n\"Language: nl\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"X-Generator: Lokalize 1.0\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Gebruikersnaam voor %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Wachtwoord voor %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Afsluiten\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Wis\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Herstel\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Selecteren\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Hulp\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Geen afkortingen opgegeven!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Afkortingen\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Afkorten als: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"U heeft al een afkorting onder die naam!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Waarschuwing: deze afkorting kan niet werken.  Verbeteren?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adres: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Fout: '%s' is een ongeldige IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Naam: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Accepteren?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Opslaan als: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Fout tijdens inlezen adresbestand\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Adres toegevoegd.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Fout tijdens doorzoeken adresbestand\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Naamsjabloon kan niet worden ingevuld.  Doorgaan?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"\\\"compose\\\"-entry in mailcap vereist %%s.\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Fout opgetreden bij het uitvoeren van \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Kan bestand niet openen om header te lezen.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Kan bestand niet openen om header te verwijderen.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Kan bestand niet hernoemen.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Geen \\\"compose\\\"-entry voor %s, een leeg bestand wordt aangemaakt.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"\\\"edit\\\"-entry in mailcap vereist %%s.\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Geen \\\"edit\\\"-entry voor %s in mailcap\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Geen geschikte mailcap-entry gevonden.  Weergave als normale tekst.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME-type is niet gedefinieerd.  Kan bijlage niet weergeven.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Filter kan niet worden aangemaakt\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Commando: %-20.20s Omschrijving: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Commando: %-30.30s Bijlage: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Bijlage: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---Bijlage: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Kan filter niet aanmaken\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Fout bij schrijven!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Ik weet niet hoe dit afgedrukt moet worden!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Andere map\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Masker\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s is geen map.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Postvakken [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Geselecteerd [%s], Bestandsmasker: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Map [%s], Bestandsmasker: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Kan geen map bijvoegen!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Geen bestanden waarop het masker past gevonden.\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Alleen IMAP-postvakken kunnen aangemaakt worden\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Alleen IMAP-postvakken kunnen hernoemd worden\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Alleen IMAP-postvakken kunnen verwijderd worden\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Kan de basismap niet verwijderen\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Postvak \\\"%s\\\" echt verwijderen?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Postvak is verwijderd.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Postvak is niet verwijderd.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Wisselen naar map: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Er is een fout opgetreden tijdens het analyseren van de map.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Bestandsmasker: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"Achteruit sorteren op (d)atum, bestands(g)rootte, (a)lfabet of (n)iet? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Sorteren op (d)atum, bestands(g)rootte, (a)lfabet of helemaal (n)iet?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dagn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nieuwe bestandsnaam: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Map kan niet worden getoond.\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Er is een fout opgetreden tijdens het weergeven van bestand\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Nieuw bericht in \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: terminal ondersteunt geen kleur\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: onbekende kleur\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: onbekend object\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: commando is alleen geldig voor index, body en headerobjecten\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: te weinig argumenten\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Ontbrekende argumenten.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: te weinig argumenten\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: te weinig argumenten\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: onbekend attribuut\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"te weinig argumenten\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"te veel argumenten\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"standaardkleuren worden niet ondersteund\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"PGP-handtekening controleren?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Tijdelijk bestand kon niet worden aangemaakt!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Weergavefilter kan niet worden aangemaakt.\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Bericht kon niet gekopieerd worden.\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME-handtekening is correct bevonden.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"S/MIME-certificaateigenaar komt niet overeen met afzender.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Waarschuwing: een deel van dit bericht is niet ondertekend.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME-handtekening kon NIET worden geverifieerd.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP-handtekening is correct bevonden.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP-handtekening kon NIET worden geverifieerd.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Commando: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Waarschuwing: bericht bevat geen 'From:'-kopregel\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Bericht doorsturen naar: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Gemarkeerde berichten doorsturen naar: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Ongeldig adres!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Ongeldig IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Bericht doorsturen aan %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Berichten doorsturen aan %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Bericht niet doorgestuurd.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Berichten niet doorgestuurd.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Bericht doorgestuurd.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Berichten doorgestuurd.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Kan filterproces niet aanmaken\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Doorsluizen naar commando: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Er is geen printcommando gedefinieerd.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Bericht afdrukken?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Geselecteerde berichten afdrukken?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Bericht is afgedrukt\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Berichten zijn afgedrukt\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Bericht kon niet worden afgedrukt\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Berichten konden niet worden afgedrukt\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Omgekeerd (d)atum/(v)an/o(n)tv/(o)nd/(a)an/(t)hread/(u)nsort/(g)r/(s)core/\"\n\"s(p)am?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Sorteren (d)atum/(v)an/o(n)tv/(o)nd/(a)an/(t)hread/(u)nsort/(g)r/(s)core/\"\n\"s(p)am?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dvnoatugsp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Shell-commando: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Decoderen-opslaan%s in postvak\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Decoderen-kopiëren%s naar postvak\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Ontsleutelen-opslaan%s in postvak\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Ontsleutelen-kopiëren%s naar postvak\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Opslaan%s in postvak\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Kopiëren%s naar postvak\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" gemarkeerd\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Kopiëren naar %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Converteren naar %s bij versturen?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type is veranderd naar %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Tekenset is veranderd naar %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"niet converteren\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"converteren\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Bericht bevat geen bijlage.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Versturen\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Afbreken\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Bijvoegen\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Omschrijving\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"Niet ondersteund\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Ondertekenen, Versleutelen\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Versleutelen\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Ondertekenen\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"Geen\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (inline-PGP)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \" (OppEnc-modus)\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" ondertekenen als: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<standaard>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Versleutelen met: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] bestaat niet meer!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] werd veranderd. Codering aanpassen?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Bijlagen\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Waarschuwing: '%s' is een ongeldige IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Een bericht bestaat uit minimaal één gedeelte.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Ongeldige IDN in \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Opgegeven bestanden worden bijgevoegd...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Kan %s niet bijvoegen!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Open postvak waaruit een bericht bijgevoegd moet worden\"\n\n#: compose.c:762\n#, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Kan postvak %s niet openen\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Geen berichten in dit postvak.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Selecteer de berichten die u wilt bijvoegen!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Kan niet bijvoegen!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Codering wijzigen is alleen van toepassing op bijlagen.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Deze bijlage zal niet geconverteerd worden.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Deze bijlage zal geconverteerd worden.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Ongeldige codering.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Een kopie van dit bericht maken?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Hernoemen naar: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Kan status van %s niet opvragen: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Nieuw bestand: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type is van de vorm basis/subtype\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Onbekend Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Kan bestand %s niet aanmaken\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"De bijlage kan niet worden aangemaakt\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Bericht uitstellen?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Sla bericht op in postvak\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Bericht wordt opgeslagen in %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Bericht opgeslagen.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME is al geselecteerd.  Wissen & doorgaan? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP is al geselecteerd.  Wissen & doorgaan? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"fout bij het creëren van GPGME-context: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"fout bij het inschakelen van CMS-protocol: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"fout bij het creëren van GPGME-gegevensobject: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"fout bij het alloceren van gegevensobject: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"fout bij het terugwinden van het gegevensobject: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"fout bij het lezen van het gegevensobject: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Kan tijdelijk bestand niet aanmaken\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"fout bij het toevoegen van ontvanger '%s': %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"geheime sleutel '%s' niet gevonden: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"dubbelzinnige specificatie van geheime sleutel '%s'\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"fout bij het instellen van geheime sleutel '%s': %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"fout bij het instellen van PKA-ondertekening: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"fout bij het versleutelen van gegevens: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"fout bij het ondertekenen van gegevens: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\"$pgp_sign_as is niet gezet en er is geen standaard sleutel ingesteld in ~/.\"\n\"gnupg/gpg.conf\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Waarschuwing: één van de sleutels is herroepen\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Waarschuwing: de sleutel waarmee is ondertekend is verlopen op: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Waarschuwing: minstens één certificeringssleutel is verlopen\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Waarschuwing: de ondertekening is verlopen op: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Kan niet verifiëren vanwege ontbrekende sleutel of certificaat\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"De CRL is niet beschikbaar\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"De beschikbare CRL is te oud\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Aan een beleidsvereiste is niet voldaan\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Er is een systeemfout opgetreden\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"WAARSCHUWING: PKA-item komt niet overeen met adres van ondertekenaar: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"Adres van PKA-geverifieerde ondertekenaar is: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Vingerafdruk: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"WAARSCHUWING: We hebben GEEN indicatie of de sleutel toebehoort aan de \"\n\"persoon zoals hierboven aangegeven\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"WAARSCHUWING: De sleutel BEHOORT NIET TOE aan bovengenoemde persoon\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"WAARSCHUWING: Het is NIET zeker dat de sleutel toebehoort aan de persoon \"\n\"zoals hierboven aangegeven\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"ook bekend als: \"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"Sleutel-ID \"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"aangemaakt: \"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Fout bij het ophalen van sleutelinformatie voor sleutel-ID %s: %s\\n\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"Goede handtekening van: \"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"*SLECHTE* handtekening van: \"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Problematische handtekening van: \"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"               verloopt op: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Begin handtekeninginformatie --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Fout: verificatie is mislukt: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Begin Notatie (ondertekening van: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Einde Notatie ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Einde van ondertekende gegevens --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Fout: ontsleuteling is mislukt: %s --]\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Fout bij het onttrekken van sleutelgegevens!\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Fout: ontsleuteling/verificatie is mislukt: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Fout: kopiëren van gegevens is mislukt\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- BEGIN PGP-BERICHT --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- BEGIN PGP PUBLIC KEY BLOK --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- BEGIN PGP-ONDERTEKEND BERICHT --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- EINDE PGP-BERICHT --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- EINDE PGP-PUBLIEKESLEUTELBLOK --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- EINDE PGP-ONDERTEKEND BERICHT --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fout: Kon begin van PGP-bericht niet vinden! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Fout: Kon geen tijdelijk bestand aanmaken! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- De volgende gegevens zijn PGP/MIME-ondertekend en -versleuteld --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- De volgende gegevens zijn PGP/MIME-versleuteld --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Einde van PGP/MIME-ondertekende en -versleutelde data --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Einde van PGP/MIME-versleutelde data --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP-bericht succesvol ontsleuteld.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Kon PGP-gericht niet ontsleutelen\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- De volgende gegevens zijn S/MIME-ondertekend --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- De volgende gegevens zijn S/MIME-versleuteld --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Einde van S/MIME-ondertekende gegevens --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Einde van S/MIME-versleutelde data --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Kan dit gebruikers-ID niet weergeven (onbekende codering)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Kan dit gebruikers-ID niet weergeven (ongeldige codering)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Kan dit gebruikers-ID niet weergeven (ongeldige DN)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" alias ....: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Naam ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Ongeldig]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Geldig van : %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Geldig tot : %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Sltl.type .: %s, %lu bit %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Slt.gebruik: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"versleuteling \"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"ondertekening\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"certificering\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Serienummer: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Uitg. door : \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Subsleutel : 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Herroepen]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Verlopen]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Uitgeschakeld]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Data aan het vergaren...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Fout bij het vinden van uitgever van sleutel: %s\\n\"\n\n#: crypt-gpgme.c:3675\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Fout: certificeringsketen is te lang -- gestopt\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Sleutel-ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new() is mislukt: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start() is mislukt: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next() is mislukt: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Alle overeenkomende sleutels zijn verlopen/ingetrokken.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Einde \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Selecteer  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Controleer sleutel  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP- en S/MIME-sleutels voor\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"PGP-sleutels voor\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME-certficaten voor\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"sleutels voor\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Deze sleutel is onbruikbaar: verlopen/ingetrokken.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"Dit ID is verlopen/uitgeschakeld/ingetrokken.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"Dit ID heeft een ongedefinieerde geldigheid.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"Dit ID is niet geldig.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Dit ID is slechts marginaal vertrouwd.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Wilt U deze sleutel gebruiken?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Zoeken naar sleutels voor \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Sleutel-ID = \\\"%s\\\" gebruiken voor %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Sleutel-ID voor %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Geef Key-ID in: \"\n\n#: crypt-gpgme.c:4614\n#, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Fout bij exporteren van sleutel: %s\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP-sleutel 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"GPGME: OpenPGP-protocol is niet beschikbaar\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"GPGME: CMS-protocol is niet beschikbaar\"\n\n#: crypt-gpgme.c:4721\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME (o)nderteken, ondert. (a)ls, (p)gp, (g)een, of oppenc (u)it? \"\n\n# In al deze letterreeksjes staat F voor Forget, een synoniem van Clear.\n# In het Nederlands gebruik ik de N van Niet, een synoniem van Geen.\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"oapngu\"\n\n#: crypt-gpgme.c:4731\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (o)nderteken, ondert. (a)ls, s/(m)ime, (g)een, of oppenc (u)it? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"oamngu\"\n\n#: crypt-gpgme.c:4744\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME (v)ersleutel, (o)ndert., ond. (a)ls, (b)eiden, (p)gp, (g)een, \"\n\"opp(e)nc? \"\n\n#: crypt-gpgme.c:4745\nmsgid \"esabpfco\"\nmsgstr \"voabpnge\"\n\n#: crypt-gpgme.c:4750\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (v)ersleutel, (o)ndert., ond. (a)ls, (b)eiden, s/(m)ime, (g)een, \"\n\"opp(e)nc? \"\n\n#: crypt-gpgme.c:4751\nmsgid \"esabmfco\"\nmsgstr \"voabmnge\"\n\n#: crypt-gpgme.c:4762\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (v)ersleutel, (o)nderteken, ond. (a)ls, (b)eiden, (p)gp, of (g)een? \"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"voabpng\"\n\n#: crypt-gpgme.c:4768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP (v)ersleutel, (o)nderteken, ond. (a)ls, (b)eiden, s/(m)ime, of (g)een? \"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"voabmng\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Ondertekenen als: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Verifiëren van afzender is mislukt\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Kan afzender niet bepalen\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (huidige tijd: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s uitvoer volgt%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Wachtwoord(en) zijn vergeten.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Inline PGP is niet mogelijk met bijlagen.  PGP/MIME gebruiken?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"Bericht is niet verzonden: inline PGP gaat niet met bijlagen.\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"PGP wordt aangeroepen...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Bericht kan niet inline verzonden worden.  PGP/MIME gebruiken?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Bericht niet verstuurd.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\"S/MIME-berichten zonder aanwijzingen over inhoud zijn niet ondersteund.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"PGP-sleutels onttrekken...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"S/MIME-certificaten onttrekken...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fout: Onbekend multipart/signed-protocol: %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fout: Inconsistente multipart/signed-structuur! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Waarschuwing: %s/%s-handtekeningen kunnen niet gecontroleerd worden --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- De volgende gegevens zijn ondertekend --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Waarschuwing: kan geen enkele handtekening vinden --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Einde van ondertekende gegevens --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\\\"crypt_use_gpgme\\\" aan, maar niet gebouwd met GPGME-ondersteuning.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"S/MIME wordt aangeroepen...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"ja\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"nee\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Mutt afsluiten?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"onbekende fout\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Druk een willekeurige toets in...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' voor een overzicht): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Er is geen postvak geopend.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Er zijn geen berichten.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Postvak is schrijfbeveiligd.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Functie wordt niet ondersteund in deze modus\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Geen zichtbare berichten\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"%s: operatie niet toegestaan door ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Kan niet schrijven in een schrijfbeveiligd postvak!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"\"\n\"Wijzigingen zullen worden weggeschreven bij het verlaten van het postvak.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Wijzigingen worden niet weggeschreven.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Einde\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Opslaan\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Sturen\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Antw.\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Groep\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Postvak is extern veranderd.  Markeringen kunnen onjuist zijn.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Nieuwe berichten in dit postvak.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Postvak is extern veranderd.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Geen gemarkeerde berichten.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Niets te doen.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Ga naar bericht: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Argument moet een berichtnummer zijn.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Dat bericht is niet zichtbaar.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Ongeldig berichtnummer.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Kan bericht(en) niet verwijderen\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Wis berichten volgens patroon: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Er is geen beperkend patroon in werking.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Limiet: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Beperk berichten volgens patroon: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Beperk op \\\"all\\\" om alle berichten te bekijken.\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Mutt afsluiten?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Markeer berichten volgens patroon: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Kan bericht(en) niet herstellen\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Herstel berichten volgens patroon: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Verwijder markering volgens patroon: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Uitgelogd uit IMAP-servers.\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Open postvak in schrijfbeveiligde modus\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Open postvak\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Geen postvak met nieuwe berichten\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s is geen postvak.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Mutt verlaten zonder op te slaan?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Het weergeven van threads is niet ingeschakeld.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Thread is verbroken\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"Thread kan niet verbroken worden; bericht is geen deel van een thread\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"Kan threads niet linken\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Er is geen 'Message-ID'-kopregel beschikbaar om thread te koppelen\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Markeer eerst een bericht om hieraan te koppelen\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Threads gekoppeld\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Geen thread gekoppeld\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Dit is het laatste bericht.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Alle berichten zijn gewist.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Dit is het eerste bericht.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Zoekopdracht is bovenaan herbegonnen.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Zoekopdracht is onderaan herbegonnen.\"\n\n#: curs_main.c:1608\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Geen nieuwe berichten in deze beperkte weergave.\"\n\n#: curs_main.c:1610\nmsgid \"No new messages.\"\nmsgstr \"Geen nieuwe berichten.\"\n\n#: curs_main.c:1615\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Geen ongelezen berichten in deze beperkte weergave.\"\n\n#: curs_main.c:1617\nmsgid \"No unread messages.\"\nmsgstr \"Geen ongelezen berichten.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\nmsgid \"Cannot flag message\"\nmsgstr \"Kan bericht niet markeren\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"Kan 'nieuw'-markering niet omschakelen\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Geen verdere threads.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"U bent al bij de eerste thread.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Thread bevat ongelezen berichten\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\nmsgid \"Cannot delete message\"\nmsgstr \"Kan bericht niet verwijderen\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\nmsgid \"Cannot edit message\"\nmsgstr \"Kan bericht niet bewerken\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"Kan bericht(en) niet als gelezen markeren\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\nmsgid \"Cannot undelete message\"\nmsgstr \"Kan bericht niet herstellen\"\n\n#: edit.c:41\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~            een regel invoegen die begint met een enkele ~\\n\"\n\"~b adressen   deze adressen aan Bcc:-veld toevoegen\\n\"\n\"~c adressen   deze adressen aan Cc:-veld toevoegen\\n\"\n\"~f berichten  berichten toevoegen\\n\"\n\"~F berichten  als ~f, maar met headers\\n\"\n\"~h            header bewerken\\n\"\n\"~m berichten  deze berichten citeren\\n\"\n\"~M berichten  als ~m, maar met headers\\n\"\n\"~p            bericht afdrukken\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q            bericht opslaan en editor verlaten\\n\"\n\"~r bestand    bestand inlezen\\n\"\n\"~t adressen   deze adressen aan To:-veld toevoegen\\n\"\n\"~u            laatste regel opnieuw bewerken\\n\"\n\"~v            bericht bewerken met alternatieve editor ($visual)\\n\"\n\"~w bestand    bericht opslaan in dit bestand\\n\"\n\"~x            de editor verlaten zonder wijzigingen te behouden\\n\"\n\"~?            deze hulptekst\\n\"\n\".             als enige inhoud van een regel beëindigt de invoer\\n\"\n\n# FIXME: why a period?\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: ongeldig berichtnummer.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Beëindig het bericht met een . als enige inhoud van een regel.)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Geen postvak.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Bericht bevat:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(verder)\\n\"\n\n# FIXME: Capital?\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"Geen bestandsnaam opgegeven.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Bericht bevat geen regels.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Ongeldige IDN in %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: onbekend editor-commando (~? voor hulp)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"Tijdelijke map kon niet worden aangemaakt: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"Tijdelijke postmap kon niet worden aangemaakt: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"Tijdelijke postmap kon niet worden ingekort: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Postvak is leeg!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Bericht is niet gewijzigd!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Kan bestand niet openen: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Kan bericht niet toevoegen aan postvak: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Er is een fout opgetreden.  Tijdelijk bestand is opgeslagen als: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Zet markering\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Verwijder markering\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Fout: Kon geen enkel multipart/alternative-gedeelte weergeven! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Bijlage #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Type: %s/%s, Codering: %s, Grootte: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Een of meer delen van dit bericht konden niet worden weergegeven\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Automatische weergave met %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Commando wordt aangeroepen: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Kan %s niet uitvoeren. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Foutenuitvoer van %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"[-- Fout: message/external-body heeft geen access-type parameter --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Deze %s/%s bijlage \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(grootte %s bytes) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"werd gewist --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- op %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- naam: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Deze %s/%s-bijlage is niet bijgesloten, --]\\n\"\n\n# FIXME: why the split?\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- en de aangegeven externe bron --]\\n\"\n\"[-- bestaat niet meer. --]\\n\"\n\n# FIXME: add a period?\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- en het access-type %s wordt niet ondersteund --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Tijdelijk bestand kon niet worden geopend!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Fout: multipart/signed zonder protocol-parameter.\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Dit is een bijlage \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s wordt niet ondersteund \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(gebruik '%s' om dit gedeelte weer te geven)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"('view-attachments' moet aan een toets gekoppeld zijn!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: kan bestand niet toevoegen\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"FOUT: Meld deze programmafout.\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<onbekend>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Algemene toetsenbindingen:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Ongebonden functies:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Hulp voor %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Verkeerde indeling van geschiedenisbestand (regel %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"sneltoets '^' voor huidige mailbox is uitgezet\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"sneltoets voor mailbox expandeerde tot lege reguliere expressie\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Kan geen 'unhook *' doen binnen een 'hook'.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: onbekend 'hook'-type: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: Kan geen %s wissen binnen een %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Geen authenticeerders beschikbaar\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Authenticatie (anoniem)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonieme verbinding is mislukt.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Authenticatie (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5-authenticatie is mislukt.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Authenticatie (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI-authenticatie is mislukt.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN is uitgeschakeld op deze server.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Aanmelden...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Aanmelden is mislukt...\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Authenticeren (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL-authenticatie is mislukt.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s is een ongeldig IMAP-pad\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Postvakkenlijst wordt opgehaald...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Niet-bestaand postvak\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Postvak aanmaken: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Postvak moet een naam hebben.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Postvak is aangemaakt.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Postvak %s hernoemen naar: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Hernoemen is mislukt: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Postvak is hernoemd.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Postvak is gesloten.\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"CREATE is mislukt: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Verbinding met %s wordt gesloten...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Mutt kan niet overweg met deze antieke IMAP-server.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Beveiligde connectie met TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Kon TLS connectie niet onderhandelen\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Versleutelde verbinding niet beschikbaar\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"%s wordt uitgekozen...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Er is een fout opgetreden tijdens openen van het postvak\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"%s aanmaken?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Verwijderen is mislukt\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"%d berichten worden gemarkeerd voor verwijdering...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Gewijzigde berichten worden opgeslagen... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Fout bij opslaan markeringen. Toch afsluiten?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Fout bij opslaan markeringen.\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Berichten op de server worden gewist...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE is mislukt\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Zoeken op header zonder headernaam: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Verkeerde postvaknaam\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Aanmelden voor %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Abonnement opzeggen op %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Geabonneerd op %s\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Abonnement op %s opgezegd\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Kan berichtenoverzicht niet overhalen van deze IMAP-server.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Tijdelijk bestand %s kon niet worden aangemaakt\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Headercache wordt gelezen...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Headers worden opgehaald...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Bericht wordt gelezen...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"De berichtenindex is niet correct.  Probeer het postvak te heropenen.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Bericht wordt ge-upload...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"%d berichten worden gekopieerd naar %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Bericht %d wordt gekopieerd naar %s ...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Doorgaan?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Optie niet beschikbaar in dit menu.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Ongeldige reguliere expressie: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Niet genoeg subexpressies voor spamsjabloon\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: geen overeenkomstig patroon\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: geen overeenkomstig patroon\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%s-groep: Ontbrekende -rx of -addr.\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%s-groep: waarschuwing: Ongeldige IDN '%s'.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"attachments: geen dispositie\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"attachments: ongeldige dispositie\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"unattachments: geen dispositie\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"unattachments: ongeldige dispositie\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: Geen adres\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Waarschuwing: Ongeldige IDN '%s' in alias '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"ongeldig veld in berichtenkop\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: onbekende sorteermethode\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): fout in reguliere expressie: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: onbekende variable\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"Prefix is niet toegestaan\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"Toekenning van een waarde is niet toegestaan\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Gebruik:  set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s is gezet\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s is niet gezet\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Ongeldige waarde voor optie %s: \\\"%s\\\"\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: Ongeldig postvaktype\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: ongeldige waarde (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"opmaakfout\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"overloop van getal\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: ongeldige waarde\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: Onbekend type.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: onbekend type\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Fout in %s, regel %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: fouten in %s\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: inlezen is gestaakt vanwege te veel fouten in %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: fout bij %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: te veel argumenten\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: onbekend commando\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Fout in opdrachtregel: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"Kan persoonlijke map niet achterhalen\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"Kan gebruikersnaam niet achterhalen\"\n\n#: init.c:2970\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"Kan hostnaam niet achterhalen via uname()\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: geen groepsnaam\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"te weinig argumenten\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"Macro's zijn momenteel uitgeschakeld.\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Macro-lus gedetecteerd.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Toets is niet in gebruik.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Toets is niet in gebruik.  Typ '%s' voor hulp.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: te veel argumenten\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: onbekend menu\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"lege toetsenvolgorde\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: te veel argumenten\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: onbekende functie\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: lege toetsenvolgorde\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: te veel argumenten\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: geen argumenten\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: onbekende functie\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Geef toetsen in (^G om af te breken): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Teken = %s, Octaal = %o, Decimaal = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Integer overflow -- kan geen geheugen alloceren!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Onvoldoende geheugen!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Stuur een bericht naar <mutt-dev@mutt.org> om de auteurs te bereiken.\\n\"\n\"Ga naar http://bugs.mutt.org/ om een programmafout te melden.\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins en anderen.\\n\"\n\"Mutt komt ABSOLUUT ZONDER GARANTIE; voor meer informatie 'mutt -vv'.\\n\"\n\"Mutt is vrije software, en u bent vrij om het te verspreiden\\n\"\n\"onder bepaalde voorwaarden; type 'mutt -vv' voor meer informatie.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Vele anderen die hier niet vermeld zijn hebben code, verbeteringen,\\n\"\n\"en suggesties bijgedragen.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    Dit programma is vrije software; u mag het verspreiden en/of wijzigen\\n\"\n\"    onder de bepalingen van de GNU Algemene Publieke Licentie zoals\\n\"\n\"    uitgegeven door de Free Software Foundation; ofwel onder versie 2 van\\n\"\n\"    de Licentie, of (naar vrije keuze) een latere versie.\\n\"\n\"\\n\"\n\"    Dit programma wordt verspreid in de hoop dat het nuttig zal zijn\\n\"\n\"    maar ZONDER ENIGE GARANTIE; zelfs zonder de impliciete garantie van\\n\"\n\"    VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD DOEL.  Zie de GNU\\n\"\n\"    Algemene Publieke Licentie voor meer details.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    U zou een kopie van de GNU Algemene Publieke Licentie ontvangen moeten\\n\"\n\"    hebben samen met dit programma; indien dit niet zo is, schrijf naar de\\n\"\n\"    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\\n\"\n\"    Boston, MA 02110-1301, USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"Gebruik:  mutt [<opties>] [-z] [-f <bestand> | -yZ]\\n\"\n\"          mutt [<opties>] [-Ex] [-Hi <bestand>] [-s <onderwerp>]\\n\"\n\"               [-bc <adres>] [-a <bestand> [...] --] <adres> [...]\\n\"\n\"          mutt [<opties>] [-x] [-s <onderwerp>] [-bc <adres>]\\n\"\n\"               [-a <bestand> [...] --] <adres> [...] < bericht\\n\"\n\"          mutt [<opties>] -p\\n\"\n\"          mutt [<opties>] -A <afkorting> [...]\\n\"\n\"          mutt [<opties>] -Q <vraag> [...]\\n\"\n\"          mutt [<opties>] -D\\n\"\n\"          mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"Opties:\\n\"\n\"  -A <afkorting>\\tgebruik een afkorting\\n\"\n\"  -a <bestand> [...] --\\tvoeg een bestand bij het bericht;\\n\"\n\"\\t\\tde lijst met bestanden dient afgesloten te worden met '--'\\n\"\n\"  -b <adres>\\tspecificeer een blind carbon-copy (BCC) adres\\n\"\n\"  -c <adres>\\tspecificeer een carbon-copy (CC) adres\\n\"\n\"  -D\\t\\tdruk de waardes van alle variabelen af op stdout\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <niveau>\\tlog debug-uitvoer naar ~/.muttdebug0\"\n\n#: main.c:137\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -E\\t\\thet concept (-H) of het ingevoegde bestand (-i) bewerken\\n\"\n\"  -e <opdracht>\\tspecificeer een uit te voeren opdracht na initialisatie\\n\"\n\"  -F <file>\\tspecificeer een alternatieve muttrc\\n\"\n\"  -f <file>\\tspecificeer het te lezen postvak\\n\"\n\"  -H <file>\\tspecificeer een bestand om de headers uit te lezen\\n\"\n\"  -i <file>\\tspecificeer een bestand dat Mutt moet invoegen in het bericht\\n\"\n\"  -m <type>\\tspecificeer een standaard postvaktype\\n\"\n\"  -n\\t\\tzorgt dat Mutt de systeem Muttrc niet inleest\\n\"\n\"  -p\\t\\troept een uitgesteld bericht op\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <variabele>\\tvraagt de waarde van een configuratievariabele op\\n\"\n\"  -R\\t\\topent het postvak met alleen-lezen-rechten\\n\"\n\"  -s <ond>\\tspecificeer een onderwerp (tussen aanhalingstekens i.g.v. \"\n\"spaties)\\n\"\n\"  -v\\t\\ttoont het versienummer en opties tijdens het compileren\\n\"\n\"  -x\\t\\tsimuleert de mailx verzendmodus\\n\"\n\"  -y\\t\\tselecteert een postvak gespecificeerd in de 'mailboxes'-lijst\\n\"\n\"  -z\\t\\tsluit meteen af als er geen berichten in het postvak staan\\n\"\n\"  -Z\\t\\topent het eerste postvak met nieuwe berichten, sluit af indien geen\\n\"\n\"  -h\\t\\tdeze hulptekst\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Opties tijdens compileren:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Kan terminal niet initialiseren.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Fout: waarde '%s' is een ongeldig voor optie '-d'.\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Debug-informatie op niveau %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG-optie is niet beschikbaar: deze wordt genegeerd.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s bestaat niet. Aanmaken?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Kan bestand %s niet aanmaken: %s\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Kan mailto: koppeling niet verwerken\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Geen ontvangers opgegeven.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"Optie '-E' gaat niet samen met standaardinvoer\\n\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: kan bestand niet bijvoegen.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Geen postvak met nieuwe berichten.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Geen postvakken opgegeven.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Postvak is leeg.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Bezig met het lezen van %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Postvak is beschadigd!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Postvak was beschadigd!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Fatale fout!  Kon postvak niet opnieuw openen!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Kan postvak niet claimen!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"sync: mbox is gewijzigd, maar geen gewijzigde berichten gevonden!\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Bezig met het schrijven van %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Wijzigingen doorvoeren...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Opslaan is mislukt!  Deel van postvak is opgeslagen als %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Kan postvak niet opnieuw openen!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Heropenen van postvak...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Ga naar: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Ongeldig Indexnummer.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Geen items\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"U kunt niet verder naar beneden gaan.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"U kunt niet verder naar boven gaan.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"U bent op de eerste pagina.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"U bent op de laatste pagina.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"U bent op het laatste item.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"U bent op het eerste item.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Zoek naar: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Zoek achteruit naar: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Niet gevonden.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Geen geselecteerde items.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"In dit menu kan niet worden gezocht.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Verspringen is niet mogelijk in menu.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Markeren wordt niet ondersteund.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"%s wordt geanalyseerd...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"Bericht kon niet naar schijf worden geschreven\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): kan bestandstijd niet zetten\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Onbekend SASL profiel\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Fout bij het aanmaken van de SASL-connectie\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Fout bij het instellen van de SASL-beveiligingseigenschappen\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Fout bij het instellen van de SASL-beveiligingssterkte\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Fout bij het instellen van de externe SASL-gebruikersnaam\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Verbinding met %s beëindigd\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL is niet beschikbaar.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Preconnect-commando is mislukt.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Verbinding met %s is mislukt (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Ongeldige IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"%s aan het opzoeken...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Kan adres van server \\\"%s\\\" niet achterhalen\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Bezig met verbinden met %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Kan niet verbinden met %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Te weinig entropie op uw systeem gevonden\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Aanvullen van entropieverzameling: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s heeft onveilige rechten!\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL is uitgeschakeld vanwege te weinig entropie\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"I/O fout\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL is mislukt: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Kan server certificaat niet verkrijgen\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"%s-verbinding via %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Onbekende fout\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[kan niet berekend worden]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[ongeldige datum]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Certificaat van de server is nog niet geldig\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Certificaat van de server is verlopen\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"kan onderwerp van certificaat niet verkrijgen\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"kan common name van van certificaat niet verkrijgen\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"certificaateigenaar komt niet overeen met naam van de server %s\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Controle van servernaam van certificaat is mislukt: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Dit certificaat behoort aan:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Dit certificaat is uitgegeven door:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Dit certificaat is geldig\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"    van %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"    tot %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Vingerafdruk: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"SSL-certificaatcontrole (certificaat %d van %d in keten)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(w)eigeren, (e)enmalig toelaten, (a)ltijd toelaten\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"wea\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(w)eigeren, (e)enmalig toelaten\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"we\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Waarschuwing: certificaat kan niet bewaard worden\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Certificaat wordt bewaard\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Fout: geen TLS-socket open\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Alle beschikbare protocollen voor TLS/SSL-verbinding uitgeschakeld\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\"Expliciete keuze van encryptie-algoritme via $ssl_ciphers wordt niet \"\n\"ondersteund\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL/TLS verbinding via %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Kan gnutls certificaatgegevens niet initializeren\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Fout bij het verwerken van certificaatgegevens\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\"Waarschuwing: het server-certificaat werd ondertekend met een onveilig \"\n\"algoritme\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1-vingerafdruk: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5-vingerafdruk: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"WAARSCHUWING: Certificaat van de server is nog niet geldig\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"WAARSCHUWING: Certificaat van de server is verlopen\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"WAARSCHUWING: Certificaat van de server is herroepen\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"WAARSCHUWING: Naam van de server komt niet overeen met certificaat\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"WAARSCHUWING: Ondertekenaar van servercertificaat is geen CA\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Fout bij verifiëren van certificaat (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Certificaat is niet in X.509-formaat\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Bezig met verbinden met \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Tunnel naar %s leverde fout %d op (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Fout in tunnel in communicatie met %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Bestand is een map, daarin opslaan? [(j)a, (n)ee, (a)llen]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"jna\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Bestand is een map, daarin opslaan?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Bestandsnaam in map: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Bestand bestaat, (o)verschrijven, (t)oevoegen, (a)nnuleren?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"ota\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Kan het bericht niet opslaan in het POP-postvak.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Bericht aan %s toevoegen?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s is geen postvak!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Claim-timeout overschreden, oude claim voor %s verwijderen?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Kan %s niet claimen met \\\"dotlock\\\".\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"De fcntl-claim kon niet binnen de toegestane tijd worden verkregen.\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Wacht op fcntl-claim... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"de flock-claim kon niet binnen de toegestane tijd worden verkregen.\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Wacht op flock-poging... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Kan %s niet claimen.\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Kan postvak %s niet synchroniseren!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Gelezen berichten naar %s verplaatsen?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"%d als gewist gemarkeerde berichten verwijderen?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"%d als gewist gemarkeerde berichten verwijderen?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Gelezen berichten worden naar %s verplaatst...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Postvak is niet veranderd.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d bewaard, %d verschoven, %d gewist.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d bewaard, %d gewist.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Druk '%s' om schrijfmode aan/uit te schakelen\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Gebruik 'toggle-write' om schrijven mogelijk te maken!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Postvak is als schrijfbeveiligd gemarkeerd. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Postvak is gecontroleerd.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Kan bericht niet wegschrijven\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Integer overflow -- kan geen geheugen alloceren!\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"Vorig.P\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"Volg.P\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Bijlagen tonen\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Volgend ber.\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Einde van bericht is weergegeven.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Begin van bericht is weergegeven.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Hulp wordt al weergegeven.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Geen verdere geciteerde text.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Geen verdere eigen text na geciteerde text.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"Multi-part bericht heeft geen \\\"boundary\\\" parameter.\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Fout in expressie: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Lege expressie\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Ongeldige dag van de maand: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Ongeldige maand: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Ongeldige maand: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"Fout in expressie bij: %s\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"ontbrekend patroon: %s\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"Haakjes kloppen niet: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: ongeldige patroonopgave\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: niet ondersteund in deze modus\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"Te weinig parameters\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"Haakjes kloppen niet: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"Leeg patroon\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"fout: onbekende operatie %d  (rapporteer deze fout)\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Bezig met het compileren van patroon...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Commando wordt uitgevoerd...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Geen berichten voldeden aan de criteria.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Bezig met zoeken...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Zoeken heeft einde bereikt zonder iets te vinden\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Zoeken heeft begin bereikt zonder iets te vinden\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Het zoeken is onderbroken.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Geef PGP-wachtwoord in:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP-wachtwoord is vergeten.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Fout: Kan geen PGP-subproces starten! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Einde van PGP uitvoer --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"*Interne fout*.  Graag rapporteren.\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fout: Kon PGP-subproces niet starten! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Ontsleuteling is mislukt\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Kan PGP-subproces niet starten!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Kan PGP niet aanroepen\"\n\n#: pgp.c:1730\n#, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (o)nderteken, ondert. (a)ls, %s, (g)een, of oppenc (u)it? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)nline\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"oangui\"\n\n#: pgp.c:1742\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (o)nderteken, ondert. (a)ls, (g)een, of oppenc (u)it? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"oangu\"\n\n#: pgp.c:1760\n#, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (v)ersleutel, (o)ndert., ond. (a)ls, (b)eiden, %s, (g)een, opp(e)nc-\"\n\"modus? \"\n\n#: pgp.c:1763\nmsgid \"esabfcoi\"\nmsgstr \"voabngei\"\n\n#: pgp.c:1768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"PGP (v)ersleutel, (o)nderteken, ond. (a)ls, (b)eiden, (g)een, opp(e)nc-\"\n\"modus? \"\n\n#: pgp.c:1769\nmsgid \"esabfco\"\nmsgstr \"voabnge\"\n\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP (v)ersleutel, (o)nderteken, ond. (a)ls, (b)eiden, %s, of (g)een? \"\n\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"voabngi\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP (v)ersleutel, (o)nderteken, ond. (a)ls, (b)eiden, of (g)een? \"\n\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"voabng\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"PGP-sleutel wordt gelezen...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Alle overeenkomende sleutels zijn verlopen/ingetrokken.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP-sleutels voor <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP-sleutels voor \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Kan /dev/null niet openen\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP-key %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Het TOP commando wordt niet door de server ondersteund.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Kan de header niet naar een tijdelijk bestand wegschrijven!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Het UIDL commando wordt niet door de server ondersteund.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d berichten zijn verloren. Probeer het postvak te heropenen.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s is een ongeldig POP-pad\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Berichtenlijst ophalen...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Kan het bericht niet naar een tijdelijk bestand wegschrijven\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Berichten worden gemarkeerd voor verwijdering...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Controleren op nieuwe berichten...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"Er is geen POP-server gespecificeerd.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Geen nieuwe berichten op de POP-server.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Berichten op de server verwijderen?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Bezig met het lezen van nieuwe berichten (%d bytes)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Er is een fout opgetreden tijdens het schrijven van het postvak!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d van de %d berichten gelezen]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Server heeft verbinding gesloten!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Authenticatie (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"POP tijdstempel is ongeldig!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Authenticatie (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP authenticatie geweigerd.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Het UIDL commando wordt niet door de server ondersteund.\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Ongeldig POP-URL: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Niet in staat berichten op de server achter te laten.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Fout tijdens verbinden met server: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Verbinding met POP-server wordt gesloten...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Berichtenindex wordt geverifieerd...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Verbinding is verbroken.  Opnieuw verbinden met POP-server?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Uitgestelde berichten\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Geen uitgestelde berichten.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Ongeldige crypto header\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Ongeldige S/MIME header\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Bericht wordt ontsleuteld...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Ontsleuteling is mislukt.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nieuwe query\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Afkorting maken\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Zoeken\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Wacht op antwoord...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Query-commando niet gedefinieerd.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Zoekopdracht\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Zoekopdracht: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Zoekopdracht '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Filteren\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Druk af\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Bezig met opslaan...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Bijlage opgeslagen.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"Waarschuwing! Bestand %s bestaat al. Overschrijven?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Bijlage gefilterd.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filter door: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Doorgeven aan (pipe): \"\n\n#: recvattach.c:710\n#, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Kan %s-bijlagen niet afdrukken!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Gemarkeerde bericht(en) afdrukken?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Bijlage afdrukken?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Kan het versleutelde bericht niet ontsleutelen!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Bijlagen\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Er zijn geen onderdelen om te laten zien!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Kan de bijlage niet van de POP-server verwijderen.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"\"\n\"Het wissen van bijlagen uit versleutelde berichten wordt niet ondersteund.\"\n\n#: recvattach.c:1132\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"\"\n\"Het wissen van bijlagen uit versleutelde berichten kan de ondertekening \"\n\"ongeldig maken.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Kan alleen multipart-bijlagen wissen.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"U kunt alleen message/rfc882-gedeelten doorsturen!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Er is een fout opgetreden tijdens het doorsturen van het bericht!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Er is een fout opgetreden tijdens het doorsturen van de berichten!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Kan tijdelijk bestand %s niet aanmaken.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Doorsturen als bijlagen?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"Kan niet alle bijlagen decoderen. De rest doorsturen met MIME?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Doorsturen als MIME-bijlage?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Kan bestand %s niet aanmaken.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Kan geen geselecteerde berichten vinden.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Geen mailing-lists gevonden!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"Kan niet alle bijlagen decoderen. De rest inpakken met MIME?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Toevoegen\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Invoegen\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Verwijderen\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Kan type2.list niet lezen van mixmaster.\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Selecteer een remailer lijster.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Fout: %s kan niet gebruikt worden als laaste remailer van een lijst.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster lijsten zijn beperkt tot %d items.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"De remailer lijst is al leeg.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Het eerste lijst-item is al geselecteerd.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Het laaste lijst-item is al geselecteerd.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster laat geen CC of BCC-kopregels toe.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"De hostname variable moet ingesteld zijn voor mixmaster gebruik!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Externe fout %d opgetreden tijdens versturen van bericht.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Er is een fout opgetreden tijdens het versturen van het bericht.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Ongeldig geformuleerde entry voor type %s in \\\"%s\\\", regel %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Geen mailcap-pad opgegeven\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"Kan geen mailcap-entry voor %s vinden.\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: te weinig argumenten\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: te veel argumenten\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"Fout: score: ongeldig getal\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Geen onderwerp, afbreken?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Geen onderwerp. Operatie afgebroken.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Reactie sturen naar %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Reactie sturen naar %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Geen gemarkeerde berichten zichtbaar!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Bericht in antwoord citeren?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Geciteerde bericht wordt toegevoegd...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Kon niet alle berichten citeren!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Doorsturen als bijlage?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Voorbereiden door te sturen bericht...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Uigesteld bericht hervatten?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Doorgestuurd bericht wijzigen?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Uitgesteld bericht afbreken?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Bericht werd niet veranderd. Operatie afgebroken.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Bericht uitgesteld.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Er zijn geen geadresseerden opgegeven!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Er werden geen geadresseerden opgegeven!\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Geen onderwerp. Versturen afbreken?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Geen onderwerp.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Versturen van bericht...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Bijlages opslaan in Fcc?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Bericht kon niet verstuurd worden.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Bericht verstuurd.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Bericht wordt op de achtergrond verstuurd.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Geen 'boundary parameter' gevonden! [meldt deze fout!]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s bestaat niet meer!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s is geen normaal bestand.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Kan %s niet openen.\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"$sendmail moet ingesteld zijn om mail te kunnen versturen.\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Fout %d opgetreden tijdens versturen van bericht: %s\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Uitvoer van het afleverings proces\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Ongeldige IDN %s tijdens maken resent-from header.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s... Mutt wordt afgesloten.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Signaal %s...\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Signaal %d...\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Geef S/MIME-wachtwoord in:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Vertrouwd    \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Geverifieerd   \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Niet geverifieerd\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Verlopen    \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Herroepen    \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Ongeldig    \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Onbekend    \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME certficiaten voor \\\"%s\\\".\"\n\n#: smime.c:472\nmsgid \"ID is not trusted.\"\nmsgstr \"Dit ID wordt niet vertrouwd.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Geef keyID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Geen (geldig) certificaat gevonden voor %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Fout: kan geen OpenSSL-subproces starten!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"geen certfile\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"geen mbox\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Geen uitvoer van OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\"Kan niet ondertekenen: geen sleutel gegeven.  Gebruik Ondertekenen Als.\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Kan OpenSSL-subproces niet starten!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Einde van OpenSSL-uitvoer --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Fout: Kan geen OpenSSL-subproces starten! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"\"\n\"[-- De volgende gegevens zijn S/MIME versleuteld --]\\n\"\n\"\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"\"\n\"[-- De volgende gegevens zijn S/MIME ondertekend --]\\n\"\n\"\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Einde van S/MIME versleutelde data --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Einde van S/MIME ondertekende gegevens --]\\n\"\n\n#: smime.c:2109\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (o)ndert, versl. (m)et, ond. (a)ls, (b)eiden, (g)een, opp(e)nc-modus? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"omabnge\"\n\n#: smime.c:2123\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (v)ersl, (o)ndert, versl. (m)et, ond. (a)ls, (b)eiden, (g)een, \"\n\"opp(e)nc? \"\n\n#: smime.c:2124\nmsgid \"eswabfco\"\nmsgstr \"vomabnge\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (v)ersleutel, (o)ndert, versl. (m)et, ond. (a)ls, (b)eiden, (g)een? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"vomabgg\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Kies een algoritmefamilie: 1: DES, 2: RC2, 3: AES, of (g)een? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drag\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SMTP-sessie is mislukt: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SMTP-sessie is mislukt: kan %s niet openen\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"Geen van-adres opgegeven\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"SMTP-sessie is mislukt: leesfout\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"SMTP-sessie is mislukt: schrijffout\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Ongeldige reactie van server\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Ongeldig SMTP-URL: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP-server ondersteunt geen authenticatie\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP-authenticatie vereist SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"%s-authenticatie is mislukt; volgende methode wordt geprobeerd\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL-authenticatie is mislukt\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Postvak wordt gesorteerd...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Kan sorteerfunctie niet vinden! [Meld deze fout!]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(geen postvak)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Voorgaand bericht is niet zichtbaar in deze beperkte weergave.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Voorgaand bericht is niet beschikbaar.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"lege functie\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"einde van conditionele uitvoering (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"bijlage wordt noodgedwongen volgens mailcap weergegeven\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"toon bijlage als tekst\"\n\n# FIXME: undo capital?\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"schakel weergeven van onderdelen aan/uit\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"naar het einde van deze pagina\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"bericht opnieuw versturen naar een andere gebruiker\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"kies een nieuw bestand in deze map\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"toon bestand\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"toon de bestandsnaam van het huidige bestand\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"aanmelden voor huidig postvak (alleen met IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"afmelden voor huidig postvak (alleen met IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"omschakelen van weergave alle/aangemelde postvakken (alleen met IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"toon postvakken met nieuwe berichten\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"verander directories\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"controleer postvakken op nieuwe berichten\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"voeg bestand(en) aan dit bericht toe\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"voeg bericht(en) aan dit bericht toe\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"bewerk de BCC-lijst\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"bewerk de CC-lijst\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"bewerk de omschrijving van een bijlage\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"bewerk de transport-codering van een bijlage\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"kopieer bericht naar bestand\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"bewerk het bij te voegen bestand\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"bewerk het From-veld\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"bewerk het bericht (incl. header)\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"bewerk het bericht\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"bewerk bijlage volgens mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"bewerk Reply-To-veld\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"bewerk onderwerp (Subject) van dit bericht\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"bewerk ontvangers (To-veld)\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"maak een nieuw postvak aan (alleen met IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"bewerk type van bijlage\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"maak een tijdelijke kopie van de bijlage\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"controleer spelling via ispell\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"maak nieuwe bijlage aan volgens mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"omschakelen decodering van de bijlage\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"sla dit bericht op om later te versturen\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"hernoem/verplaats een toegevoegd bestand\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"verstuur het bericht\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"omschakelen weergave in bericht/als bijlage\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"kies of bestand na versturen gewist wordt\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"controleer codering van een bijlage\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"schrijf het bericht naar een postvak\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"kopieer bericht naar bestand/postvak\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"maak een afkorting van de afzender\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"verplaats item naar onderkant van scherm\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"verplaats item naar midden van scherm\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"verplaats item naar bovenkant van scherm\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"maak gedecodeerde (text/plain) kopie\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"maak gedecodeerde kopie (text/plain) en verwijder\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"verwijder huidig item\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"verwijder het huidige postvak (alleen met IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"verwijder alle berichten in subthread\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"wis alle berichten in thread\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"toon adres van afzender\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"toon bericht met complete berichtenkop\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"toon bericht\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"bewerk het bericht\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"wis teken voor de cursor\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"verplaats cursor een teken naar links\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"verplaats cursor naar begin van het woord\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"ga naar begin van de regel\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"roteer door postvakken\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"complete bestandsnaam of afkorting\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"compleet adres met vraag\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"wis teken onder de cursor\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"ga naar regeleinde\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"beweeg de cursor een teken naar rechts\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"beweeg de cursor naar het einde van het woord\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"ga omhoog in history lijst\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"ga omhoog in history list\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"wis alle tekens tot einde van de regel\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"wis alle tekens tot einde van het woord\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"wis regel\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"wis woord voor de cursor\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"voeg volgende toets onveranderd in\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"transponeer teken onder cursor naar de vorige\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"begin het woord met een hoofdletter\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"verander het woord in kleine letters\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"verander het woord in hoofdletters\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"geef een muttrc commando in\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"geef bestandsmasker in\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"menu verlaten\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filter bijlage door een shell commando\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"ga naar eerste item\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"markeer bericht als belangrijk\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"stuur bericht door met commentaar\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"selecteer het huidige item\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"antwoord aan alle ontvangers\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"ga 1/2 pagina naar beneden\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"ga 1/2 pagina omhoog\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"dit scherm\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"ga naar een index nummer\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"ga naar laatste item\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"stuur antwoord naar mailing-list\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"Voer macro uit\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"maak nieuw bericht aan\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"splits de thread in tweeën\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"open een ander postvak\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"open een ander postvak in alleen-lezen-modus\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"verwijder een status-vlag\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"verwijder berichten volgens patroon\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"forceer ophalen van mail vanaf IMAP-server\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"uitloggen uit alle IMAP-servers\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"haal mail vanaf POP-server\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"spring naar eeste bericht\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"spring naar het laaste bericht\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"geef alleen berichten weer volgens patroon\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"koppel gemarkeerd bericht met het huidige\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"open volgend postvak met nieuwe berichten\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"spring naar het volgende nieuwe bericht\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"spring naar het volgende nieuwe of ongelezen bericht\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"spring naar de volgende subthread\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"spring naar de volgende thread\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"spring naar het volgende ongewiste bericht\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"spring naar het volgende ongelezen bericht\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"spring naar het vorige bericht in de thread\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"spring naar de vorige thread\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"spring naar de vorige subthread\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"spring naar het volgende ongewiste bericht\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"spring naar het vorige nieuwe bericht\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"spring naar het vorige nieuwe of ongelezen bericht\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"spring naar het vorige ongelezen bericht\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"markeer de huidige thread als gelezen\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"markeer de huidige subthread als gelezen\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"zet een status-vlag in een bericht\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"sla wijzigingen in postvak op\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"markeer berichten volgens patroon\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"herstel berichten volgens patroon\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"verwijder markering volgens patroon\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"ga naar het midden van de pagina\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"ga naar het volgende item\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"ga een regel naar beneden\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"ga naar de volgende pagina\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"spring naar het einde van het bericht\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"schakel weergeven van geciteerde tekst aan/uit\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"sla geciteerde tekst over\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"spring naar het begin van het bericht\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"bewerk (pipe) bericht/bijlage met een shell-commando\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"ga naar het vorige item\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"ga een regel omhoog\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"ga naar de vorige pagina\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"druk het huidige item af\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"vraag een extern programma om adressen\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"voeg resultaten van zoekopdracht toe aan huidige resultaten\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"sla wijzigingen in postvak op en verlaat Mutt\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"bewerk een uitgesteld bericht\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"wis scherm en bouw het opnieuw op\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"(intern)\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"hernoem het huidige postvak (alleen met IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"beantwoord een bericht\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"gebruik het huidige bericht als sjabloon voor een nieuw bericht\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"sla bericht/bijlage op in een postvak/bestand\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"zoek naar een reguliere expressie\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"zoek achteruit naar een reguliere expressie\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"zoek volgende match\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"zoek achteruit naar volgende match\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"schakel het kleuren van zoekpatronen aan/uit\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"roep een commando in een shell aan\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"sorteer berichten\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"sorteer berichten in omgekeerde volgorde\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"markeer huidig item\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"voer volgende functie uit op gemarkeerde berichten\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"voer volgende functie ALLEEN uit op gemarkeerde berichten\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"markeer de huidige subthread\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"markeer de huidige thread\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"zet/wis de 'nieuw'-markering van een bericht\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"schakel het opslaan van wijzigingen aan/uit\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"schakel tussen het doorlopen van postvakken of alle bestanden\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"spring naar het begin van de pagina\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"verwijder wismarkering van huidig item\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"verwijder wismarkering van alle berichten in thread\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"verwijder wismarkering van alle berichten in subthread\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"toon versienummer van Mutt en uitgavedatum\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"geef bijlage weer, zo nodig via mailcap\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"geef MIME-bijlagen weer\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"toon de code voor een toets\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"geef het momenteel actieve limietpatroon weer\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"comprimeer/expandeer huidige thread\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"comprimeer/expandeer alle threads\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"voeg een PGP publieke sleutel toe\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"geef PGP-opties weer\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"mail een PGP publieke sleutel\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"controleer een PGP publieke sleutel\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"geef gebruikers-ID van sleutel weer\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"controleer op klassieke PGP\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Accepteer de gemaakte lijst\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Voeg een remailer toe aan het einde van de lijst\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Voeg een remailer toe in de lijst\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Verwijder een remailer van de lijst\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Kies het vorige item uit de lijst\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Kies het volgende item uit de lijst\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"verstuur het bericht via een \\\"mixmaster remailer\\\" lijst\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"maak een gedecodeerde kopie en wis\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"maak een gedecodeerde kopie\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"verwijder wachtwoord(en) uit geheugen\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"extraheer ondersteunde publieke sleutels\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"geef S/MIME-opties weer\"\n\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Waarschuwing: bericht heeft geen 'From:'-kopregel\"\n\n#~ msgid \": \"\n#~ msgstr \": \"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"verwijder bericht(en)\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" in deze beperkte weergave\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"verwijder bericht\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"bewerk bericht\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"Fout in expressie\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Interne fout.  Informeer <roessler@does-not-exist.org>.\"\n\n# XXX FIXME: why a double period?\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"Geen uitvoer van OpenSSL..\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Fout: Foutief PGP/MIME-bericht! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"GPGME-backend wordt gebruikt, hoewel er geen GPG-agent draait\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Fout: multipart/encrypted zonder protocol-parameter!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID %s is niet geverifieerd. Wilt u het gebruiken voor %s ?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"ID %s (niet vertrouwd!) gebruiken voor %s ?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"ID %s gebruiken voor %s ?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Waarschuwing: nog niet besloten om ID %s te vertrouwen. (druk op een \"\n#~ \"toets)\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Waarschuwing: Tussentijds certificaat niet gevonden.\"\n\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"gebruik: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2002 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2002 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2002 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Vele anderen, hier niet genoemd, hebben veel code, verbeteringen\\n\"\n#~ \"en suggesties aangedragen.\\n\"\n#~ \"\\n\"\n#~ \"    Dit Programma is vrije software; U kan het verspreiden en/of \"\n#~ \"wijzigen\\n\"\n#~ \"    onder de bepalingen van de GNU Algemene Publieke Licentie, zoals\\n\"\n#~ \"    uitgegeven door de Free Software Foundation; oftewel versie 2 van\\n\"\n#~ \"    de Licentie,of (naar vrije keuze) een latere versie.\\n\"\n#~ \"\\n\"\n#~ \"    Dit Programma is verspreid met de hoop dat het nuttig zal zijn maar\\n\"\n#~ \"    ZONDER EENDER WELKE GARANTIE; zelfs zonder de impliciete garantie \"\n#~ \"van\\n\"\n#~ \"    VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD DOEL. Zie de GNU\\n\"\n#~ \"    Algemene Publieke Licentie voor meer details.\\n\"\n#~ \"\\n\"\n#~ \"    U zou een kopie van de GNU Algemene Publieke Licentie ontvangen \"\n#~ \"moeten\\n\"\n#~ \"    hebben samen met dit Programma; zoniet, schrijf naar de Free \"\n#~ \"Software\\n\"\n#~ \"    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02110-1301 \"\n#~ \"USA.\\n\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Geen\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\tzie overige argumenten als adres, ook als ze beginnen met een \"\n#~ \"'-'\\n\"\n#~ \"\\t\\tindien -a wordt gebruikt met meerdere bestanden is -- verplicht\"\n\n#~ msgid \"esabifc\"\n#~ msgstr \"voabigg\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Geen zoekpatroon.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Achteruit zoeken: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Zoeken: \"\n\n#~ msgid \"            created: \"\n#~ msgstr \"         aangemaakt op: \"\n\n#~ msgid \"*BAD* signature claimed to be from: \"\n#~ msgstr \"*SLECHTE* handtekening gepretendeerd af te komen van: \"\n\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Fout bij het controleren van handtekening\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"SSL-certificaatcontrole\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"TLS/SSL-certificaatcontrole\"\n\n#~ msgid \"SASL failed to get local IP address\"\n#~ msgstr \"SASL kon het lokale IP-adres niet opvragen\"\n\n#~ msgid \"SASL failed to parse local IP address\"\n#~ msgstr \"SASL kon het lokale IP-adres niet parseren\"\n\n#~ msgid \"SASL failed to get remote IP address\"\n#~ msgstr \"SASL kon het externe IP-adres niet ophalen\"\n\n#~ msgid \"SASL failed to parse remote IP address\"\n#~ msgstr \"SASL kon het externe IP-adres niet parseren\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Namespace wordt overgehaald...\"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"Kan markering 'belangrijk' op POP server niet veranderen.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"Kan bericht op POP-server niet aanpassen.\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"Bezig met het lezen van %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Berichten worden opgeslagen ... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"Bezig met het lezen van %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"PGP wordt aangeroepen...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Kritieke fout.  Berichtenteller wijkt af!\"\n\n#~ msgid \"Checking mailbox subscriptions\"\n#~ msgstr \"Mailfolder-abonnementen worden gecontroleerd\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"CLOSE is mislukt\"\n\n#~ msgid \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, or (f)orget it? \"\n#~ msgstr \"\"\n#~ \"1: DES, 2: Triple-DES, 3: RC2-40, 4: RC2-64, 5: RC2-128, of (g)een? \"\n\n#~ msgid \"12345f\"\n#~ msgstr \"12345g\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"Het eerste item wordt weergegeven.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"Het laatste item wordt weergegeven.\"\n\n#~ msgid \"Unexpected response received from server: %s\"\n#~ msgstr \"Onverwacht antwoord ontvangen van de server: %s\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"IMAP-server laat het toevoegen van berichten niet toe\"\n\n#~ msgid \"unspecified protocol error\"\n#~ msgstr \"algemene protocolfout\"\n"
  },
  {
    "path": "po/pl.po",
    "content": "# Polish messages for Mutt 1.x\n# Polskie teksty dla Mutta 1.x\n# 1998-2006 Pawe Dziekoski\n# 1998-2002 Sergiusz Pawowicz\n# Pre-translation has bean done using PePeSza,\n# get it from http://home.elka.pw.edu.pl/~pkolodz2/pepesza.html\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt-1.5.17\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2007-11-02 11:11+0200\\n\"\n\"Last-Translator: Pawe Dziekoski <dzieko@gmail.com>\\n\"\n\"Language-Team: POLISH <pl@li.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=iso-8859-2\\n\"\n\"Content-Transfer-Encoding: 8-bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Nazwa konta na %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Haso dla %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Wyjcie\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Usu\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Odtwrz\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Wybierz\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Pomoc\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Brak aliasw!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Aliasy\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Nazwa aliasu: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Istnieje ju tak nazwany alias!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Ostrzeenie: alias o takiej nazwie moe nie zadziaa. Poprawi?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adres: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Bd: '%s' to bdny IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Nazwisko: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Potwierdzasz?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Zapisz do pliku: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Bd podczas prby przegldania pliku\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Alias dodany.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Bd podczas prby przegldania pliku\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Nie pasujcy szablon nazwy, kontynuowa?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Pole \\\"compose\\\" w pliku 'mailcap' wymaga %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Bd uruchomienia \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Bd otwarcia pliku podczas interpretacji nagwkw.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Bd podczas prby otwarcia pliku w celu eliminacji nagwkw.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Zmiana nazwy pliku nie powioda si.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Brak pola \\\"compose\\\" dla %s w pliku 'mailcap', utworzono pusty plik.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Pole \\\"Edit\\\" w pliku 'mailcap' wymaga %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Brak pola \\\"Edit\\\" dla %s w pliku 'mailcap'\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Brak odpowiedniego wpisu w 'mailcap'. Wywietlony jako tekst.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"Typ MIME nie zosta zdefiniowany. Nie mona wywietli zacznika.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Nie mona utworzy filtru\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Zaczniki\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Zaczniki\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Nie mona utworzy filtra\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Bd zapisu!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Nie wiem jak to wydrukowa!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Zmie katalog\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Wzorzec\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s nie jest katalogiem.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Skrzynki [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Zasubskrybowane [%s], wzorzec nazw plikw: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Katalog [%s], wzorzec nazw plikw: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Zacznikiem nie moe zosta katalog!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"aden plik nie pasuje do wzorca\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Tworzenie skrzynek jest obsugiwane tylko dla skrzynek IMAP\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Zmiania nazwy jest obsugiwana tylko dla skrzynek IMAP\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Usuwanie skrzynek jest obsugiwane tylko dla skrzynek IMAP\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Nie mona usun gwnej skrzynki\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Naprawd usun skrzynk \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Skrzynka zostaa usunita.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Skrzynka nie zostaa usunita.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Zmie katalog na: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Bd przegldania katalogu.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Wzorzec nazw plikw: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Sortowanie odwrotne wg (d)aty, (a)lfabetu, (w)ielkoci, ad(n)e?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Sortowanie wg (d)aty, (a)lfabetu, (w)ielkoci, ad(n)e?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dawn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nazwa nowego pliku: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Nie mona przeglda tego katalogu\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Bd podczas prby przegldania pliku\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Nowa poczta w \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: kolor nie jest obsugiwany przez Twj terminal\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: nie ma takiego koloru\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: nie ma takiego obiektu\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: polecenia mog dotyczy tylko obiektw indeksu\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: za mao argumentw\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Brakuje argumentw.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: za mao argumentw\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: za mao argumentw\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: nie ma takiego atrybutu\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"za mao argumentw\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"za duo argumentw\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"domylnie ustalone kolory nie s obsugiwane\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Weryfikowa podpis PGP?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Nie mona utworzy pliku tymczasowego!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Nie mona utworzy filtru wywietlania\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Nie mona skopiowa listu\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"Podpis S/MIME zosta pomylnie zweryfikowany.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Waciciel certyfikatu nie odpowiada nadawcy.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Ostrzeenie: fragment tej wiadomoci nie zosta podpisany.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"Podpis S/MIME NIE moe zosta zweryfikowany.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"Podpis PGP zosta pomylnie zweryfikowany.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"Podpis PGP NIE moe zosta zweryfikowany.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Wprowad polecenie: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Wylij kopi listu do: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Wylij kopie zaznaczonych listw do: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Bd interpretacji adresu!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Bdny IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Wylij kopi listu do %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Wylij kopie listw do %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Kopia nie zostaa wysana.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Kopie nie zostay wysane.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Kopia zostaa wysana.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Kopie zostay wysane.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Nie mona utworzy procesu filtru\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Wylij przez potok do polecenia: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Polecenie drukowania nie zostao skonfigurowane.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Wydrukowa list?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Wydrukowa zaznaczone listy?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"List zosta wydrukowany\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Listy zostay wydrukowane\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"List nie zosta wydrukowany \"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Listy nie zostay wydrukowane\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Odwr-Sort (d)ata/(a)ut/o(t)rzym/t(e)m/d(o)/(w)t/(b)ez/ro(z)m/wa(g)a/\"\n\"(s)pam?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Sortuj (d)ata/(a)ut/o(t)rzym/t(e)mat/d(o)/(w)t/(b)ez/ro(z)m/wa(g)a/(s)pam?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dateowbzgs\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Polecenie powoki: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Dekoduj-zapisz%s do skrzynki\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Dekoduj-kopiuj%s do skrzynki\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Rozszyfruj-zapisz%s do skrzynki\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Rozszyfruj-kopiuj%s do skrzynki\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Zapisz%s do skrzynki\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Kopiuj%s do skrzynki\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" zaznaczone\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Kopiowanie do %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Przekonwertowa do %s przy wysyaniu?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Typ \\\"Content-Type\\\" zmieniono na %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Zestaw znakw zosta zmieniony na %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"bez konwersji\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"konwertowanie\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Brak zacznikw.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Wylij\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Anuluj\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Docz plik\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Opis\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Zaznaczanie nie jest obsugiwane.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Podpisz i zaszyfruj\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Zaszyfruj\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Podpisz\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \" (inline)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\n#, fuzzy\nmsgid \" (S/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" podpisz jako: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<domylnie>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Zaszyfruj uywajc: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] ju nie istnieje!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] zmieniony. Zaktualizowa kodowanie?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Zaczniki\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Ostrzeenie: '%s' to bdny IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Nie moesz usun jedynego zacznika.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Bdny IDN w \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Doczanie wybranych listw...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Nie mona doczy %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Otwrz skrzynk w celu doczenia listu\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Nie mona zablokowa skrzynki pocztowej!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Brak listw w tej skrzynce.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Zaznacz listy do doczenia!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Nie mona doczy!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Tylko tekstowe zaczniki mona przekodowa.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Biecy zaacznik nie zostanie przekonwertowany.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Biecy zaacznik zostanie przekonwertowany.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Bdne kodowanie.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Zapisa kopi tego listu?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Zmie nazw na: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Nie mona ustali stanu (stat) %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Nowy plik: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Typ \\\"Content-Type\\\" musi by w postaci podstawowy/poledni\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Nieznany typ \\\"Content-Type\\\" %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Nie mona utworzy %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Mamy tu bd tworzenia zacznika\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Zachowa ten list do pniejszej obrbki i ewentualnej wysyki?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Zapisz list do skrzynki\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Zapisywanie listu do %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"List zosta zapisany.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"Wybrano ju S/MIME. Anulowa wybr S/MIME i kontynuowa? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"Wybrano ju PGP. Anulowa wybr PGP i kontynuowa? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"Bd tworzenia kontekstu gpgme: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"Bd uruchamiania protokou CMS: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"Bd tworzenia obiektu danych gpgme: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"Bd alokacji obiektu danych: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"Bd przeszukania obiektu danych: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"Bd czytania obiektu danych: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Nie mona utworzy pliku tymczasowego\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"Bd dodawania odbiorcy `%s': %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"Klucz tajny `%s' nie zosta odnaleziony: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"Niejednoznaczne okrelenie klucza tajnego `%s'\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"Bd obsugi klucza tajnego `%s': %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"PKA: bd konfigurowania notacji podpisu: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"Bd szyfrowania danych: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"Bd podpisania danych: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Ostrzeenie: jeden z kluczy zosta wycofany.\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Ostrzeenie: klucz uyty do podpisania wygas dnia: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Ostrzeenie: co najmniej jeden z certyfikatw wygas.\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Ostrzeenie: podpis wygas dnia: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Nie mona zweryfikowa: brak klucza lub certyfikatu.\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL nie jest dostpny.\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"Ten CRL jest zbyt stary.\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Nie speniono wymaga polityki.\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Wystpi bd systemowy.\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"Ostrzeenie: dane PKA nie odpowiadaj adresowi nadawcy: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"Adres nadawcy zweryfikowany przez PKA to: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Odcisk: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"Ostrzeenie: nie ma ADNYCH dowodw, e ten klucz naley do osoby podanej \"\n\"powyej.\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"Ostrzeenie: ten klucz NIE NALEY do osoby podanej powyej.\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"Ostrzeenie: NIE ma pewnoci, e ten klucz naley do osoby podanej powyej.\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Utworzy %s?\"\n\n#: crypt-gpgme.c:1462\n#, fuzzy, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Bd sprawdzania klucza: \"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\n#, fuzzy\nmsgid \"Good signature from:\"\nmsgstr \"Poprawny podpis zoony przez: \"\n\n#: crypt-gpgme.c:1476\n#, fuzzy\nmsgid \"*BAD* signature from:\"\nmsgstr \"Poprawny podpis zoony przez: \"\n\n#: crypt-gpgme.c:1492\n#, fuzzy\nmsgid \"Problem signature from:\"\nmsgstr \"Poprawny podpis zoony przez: \"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\n#, fuzzy\nmsgid \"               expires: \"\nmsgstr \"                aka: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Informacja o podpisie --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Bd: weryfikacja nie powioda si: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"[-- Pocztek danych (podpisane przez: %s) --]\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"[-- Koniec danych --]\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Koniec informacji o podpisie --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Bd: odszyfrowanie nie powiodow si: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Bd sprawdzania klucza: \"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Bd: odszyfrowanie lub weryfikacja nie powiody si: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Bd: kopiowanie danych nie powiodo si\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- POCZTEK LISTU PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- POCZTEK KLUCZA PUBLICZNEGO PGP --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- POCZTEK LISTU PODPISANEGO PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- KONIEC LISTU PGP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- KONIEC PUBLICZNEGO KLUCZA PGP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- KONIEC LISTU PODPISANEGO PGP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Bd: nie mona odnale pocztku listu PGP! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Bd: nie mona utworzy pliku tymczasowego! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Nastpujce dane s podpisane i zaszyfrowane PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Nastpujce dane s zaszyfrowane PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Koniec danych podpisanych i zaszyfrowanych PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Koniec danych zaszyfrowanych PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"List PGP zosta poprawnie odszyfrowany.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Odszyfrowanie listu PGP nie powiodo si\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ponisze dane s podpisane S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Nastpujce dane s zaszyfrowane S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Koniec danych podpisanych S/MIME. --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Koniec danych zaszyfrowanych S/MIME. --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"Nie mona wywietli identyfikatora - nieznane kodowanie.\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"Nie mona wywietli identyfikatora - bdne kodowanie.\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"Nie mona wywietli identyfikatora - bdny DN.\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" aka ......: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Nazwa/nazwisko ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Bdny]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Wany od: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Wany do: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Klucz: %s, %lu bitw %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Uycie: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"szyfrowanie\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"podpisywanie\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"certyfikowanie\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Numer: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Wydany przez: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Podklucz: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Wyprowadzony]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Wygasy]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Zablokowany]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Gromadzenie danych...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Nie znaleziono klucza wydawcy: %s\\n\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"\"\n\"Bd: cuch certyfikatw zbyt dugi - przetwarzanie zatrzymano tutaj\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Identyfikator klucza: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"wykonanie gpgme_new nie powiodo si: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"wykonanie gpgme_op_keylist_start nie powiodo si: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"wykonanie gpgme_op_keylist_next nie powiodo si: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Wszystkie pasujce klucze s zaznaczone jako wygase lub wycofane.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Wyjcie  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Wybr  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Sprawd klucz  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Pasujce klucze PGP i S/MIME\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"Pasujce klucze PGP\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"Pasujce klucze S/MIME\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"pasujce klucze\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Nie mona uy tego klucza: wygas, zosta wyczony lub wyprowadzony.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"Identyfikator wygas, zosta wyczony lub wyprowadzony.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"Poziom wanoci tego identyfikatora nie zosta okrelony.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"Nieprawidowy identyfikator.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Ten identyfikator jest tylko czciowo wany.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Czy naprawd chcesz uy tego klucza?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Wyszukiwanie odpowiednich kluczy dla \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Uy klucza numer \\\"%s\\\" dla %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Wprowad numer klucza dla %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Podaj identyfikator klucza: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Bd sprawdzania klucza: \"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Klucz PGP %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME: (z)aszyfruj, (p)odpisz, podpisz (j)ako, (o)ba, p(g)p, (a)nuluj?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP: (z)aszyfruj, (p)odpisz, podpisz (j)ako, (o)ba, (s)/mime, (a)nuluj?\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME: (z)aszyfruj, (p)odpisz, podpisz (j)ako, (o)ba, p(g)p, (a)nuluj?\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"zpjoga\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP: (z)aszyfruj, (p)odpisz, podpisz (j)ako, (o)ba, (s)/mime, (a)nuluj?\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"zpjosa\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME: (z)aszyfruj, (p)odpisz, podpisz (j)ako, (o)ba, p(g)p, (a)nuluj?\"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"zpjoga\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP: (z)aszyfruj, (p)odpisz, podpisz (j)ako, (o)ba, (s)/mime, (a)nuluj?\"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"zpjosa\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Podpisz jako: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Bd weryfikacji nadawcy\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Bd okrelenia nadawcy\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (bieca data i czas: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Wynik dziaania %s %s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Haso(a) zostao(y) zapomniane.\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Nie mona wysa listu w trybie inline. Zastosowa PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Wywoywanie PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Nie mona wysa listu w trybie inline. Zastosowa PGP/MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"List nie zosta wysany.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"Listy S/MIME bez wskazwek co do zawartoci nie s obsugiwane.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Prba skopiowania kluczy PGP...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Prba skopiowania kluczy S/MIME...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Bd: Nieznany protok multipart/signed %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Bd: Niespjna struktura multipart/signed ! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ostrzeenie: nie mona zweryfikowa podpisw %s/%s --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ponisze dane s podpisane --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ostrzeenie: Nie znaleziono adnych podpisw. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec podpisanych danych --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\"Ustawiono \\\"crypt_use_gpgme\\\" ale zbudowano Mutta bez wsparcia dla GPGME.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Wywoywanie S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"tak\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"nie\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Wyj z Mutta?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"nieznany bd\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Nacinij dowolny klawisz by kontynuowa...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" (przycinicie '?' wywietla list): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Nie otwarto adnej skrzynki.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Brak listw.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Skrzynka jest tylko do odczytu.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funkcja niedostpna w trybie zaczania\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Brak widocznych listw.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, fuzzy, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"Operacja %s nie moe by wykonana: nie dozwolono (ACL)\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Nie mona zapisa do skrzynki oznaczonej jako 'tylko do odczytu'!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Zmiany zostan naniesione niezwocznie po wyjciu ze skrzynki.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Zmiany w skrzynce nie zostan naniesione.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Wyjd\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Zapisz\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Wylij\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Odpowiedz\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grupie\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Skrzynka zostaa zmodyfikowana z zewntrz. Flagi mog by nieaktualne.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Uwaga - w biecej skrzynce pojawia si nowa poczta!\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Skrzynka zostaa zmodyfikowana z zewntrz.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Brak zaznaczonych listw.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Brak akcji do wykonania.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Skocz do listu: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Jako argument wymagany jest numer listu.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Ten list nie jest widoczny.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Bdny numer listu.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"odtwrz li(s)ty\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Usu listy pasujce do wzorca: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Wzorzec ograniczajcy nie zosta okrelony.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Ograniczenie: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Ogranicz do pasujcych listw: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Aby ponownie przeglda wszystkie listy, ustaw ograniczenie na \\\".*\\\"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Wyj z Mutta?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Zaznacz pasujce listy: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"odtwrz li(s)ty\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Odtwrz pasujce listy: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Odznacz pasujce listy: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Otwrz skrzynk tylko do odczytu\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Otwrz skrzynk\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"adna skrzynka nie zawiera nowych listw\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s nie jest skrzynk.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Wyj z Mutta bez zapisywania zmian?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Wtkowanie nie zostao wczone.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Wtek zosta przerwany\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\n#, fuzzy\nmsgid \"Cannot link threads\"\nmsgstr \"pocz wtki\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Brak nagwka Message-ID: wymaganego do poczenia wtkw\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Najpierw zaznacz list do poczenia\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Wtki poczono\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Wtki nie zostay poczone\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"To jest ostatni list.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Brak odtworzonych listw.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"To jest pierwszy list.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Kontynuacja poszukiwania od pocztku.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Kontynuacja poszukiwania od koca.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"\"\n\"Pierwszy list wtku nie jest widoczny w trybie ograniczonego przegldania.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Brak nowych listw\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"\"\n\"Pierwszy list wtku nie jest widoczny w trybie ograniczonego przegldania.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Przeczytano ju wszystkie listy\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"Zaznasz list\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\n#, fuzzy\nmsgid \"Cannot toggle new\"\nmsgstr \"zaznacz jako nowy\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Nie ma wicej wtkw.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"To pierwszy wtek.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Wtek zawiera nieprzeczytane listy.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"odtwrz listy\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Nie mona zapisa listu\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"zaznacz li(s)t jako przeczytany\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"odtwrz listy\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\twstaw lini zaczynajc si pojedyczym ~\\n\"\n\"~b uytkownicy\\tdodaj uytkownikw do pola BCC:\\n\"\n\"~c uytkownicy\\tdodaj uytkownikw do pola Cc:\\n\"\n\"~f listy\\tdocz listy\\n\"\n\"~F listy\\tto samo co ~f ale docz te nagwki\\n\"\n\"~h\\t\\tedytuj nagwki\\n\"\n\"~m listy\\tdodaj i zacytuj listy\\n\"\n\"~M listy\\tto samo co ~m ale docz te nagwki\\n\"\n\"~p\\t\\tdrukuj list\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tzapisz plik i wyjd z edytora\\n\"\n\"~r plik\\t\\twczytaj plik do edytora\\n\"\n\"~t uytkownicy\\tdodaj uytkownikw do pola To:\\n\"\n\"~u\\t\\todtwrz poprzedni lini\\n\"\n\"~v\\t\\tedytuj list edytorem zdefiniowanym w $visual\\n\"\n\"~w plik\\t\\tzapisz list do pliku\\n\"\n\"~x\\t\\tporzu zmiany i wyjd z edytora\\n\"\n\"~?\\t\\tten list\\n\"\n\".\\t\\tstojc sama w linii koczy wpisywanie\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: bdny numer listu.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Zakocz list . (kropk) w osobnej linii)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Brak skrzynki.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"List zawiera:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(kontynuuj)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"brak nazwy pliku.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Pusty list.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Bdny IDN w %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: nieznane polecenie edytora (~? wywietla pomoc)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"nie mona utworzy tymczasowej skrzynki: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"nie mona zapisa tymczasowej skrzynki: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"nie mona zmniejszy tymczasowej skrzynki: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Plik listu jest pusty!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"List nie zosta zmieniony!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Nie mona otworzy pliku listu: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Nie mona dopisa do skrzynki: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Bd. Zachowano plik tymczasowy: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Ustaw flag\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Wyczy flag\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[--Bd: Nie mona wywietli adnego z fragmentw Multipart/Alternative! \"\n\"--]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Zacznik #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Typ: %s/%s, Kodowanie: %s, Wielko: %s --]\\n\"\n\n#: handler.c:1281\n#, fuzzy\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Ostrzeenie: fragment tej wiadomoci nie zosta podpisany.\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Podgld za pomoc %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Wywoywanie polecenia podgldu: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Nie mona uruchomi %s. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Komunikaty bdw %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Bd: message/external-body nie ma ustawionego rodzaju dostpu --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Ten zacznik typu %s/%s \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(o wielkoci %s bajtw) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"zosta usunity --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- na %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- nazwa: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Ten zacznik typu %s/%s nie jest zawarty, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- a podane rdo zewntrzne jest --]\\n\"\n\"[-- nieaktualne. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- a podany typ dostpu %s nie jest obsugiwany --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Nie mona otworzy pliku tymczasowego!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Bd: multipart/signed nie ma protokou.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Ten zacznik typu %s/%s \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- typ %s/%s nie jest obsugiwany \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(uyj '%s' do ogldania tego fragmentu)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(przypisz 'view-attachments' do klawisza!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: nie mona doczy pliku\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"BD: zgo, prosz, ten bd\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<NIEZNANY>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Standardowe przypisania klawiszy:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Nie przypisane klawiszom funkcje:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Pomoc dla menu %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Bedny format pliku historii (wiersz %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Nie mona wykona \\\"unhook *\\\" wewntrz innego polecenia hook.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: nieznany typ polecenia hook: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: Nie mona skasowa %s z wewntrz %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"adna z metod uwierzytelniania nie jest dostpna\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Uwierzytelnianie (anonymous)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Uwierzytelnianie anonymous nie powiodo si.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Uwierzytelnianie (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"Uwierzytelnianie CRAM-MD5 nie powiodo si.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Uwierzytelnianie (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"Uwierzytelnianie GSSAPI nie powiodo si.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN zosta wyczony na tym serwerze.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Logowanie...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Zalogowanie nie powiodo si.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Uwierzytelnianie (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"Uwierzytelnianie SASL nie powiodo si.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s jest bdn ciek IMAP\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Pobieranie listy skrzynek...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Brak skrzynki\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Nazwa skrzynki: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Skrzynka musi zosta nazwana.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Skrzynka zostaa utworzona.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Zmie nazw skrzynki %s na: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Zmiana nazwy nie powioda si: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Nazwa zostaa zmieniona.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Skrzynka zostaa zamknita\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"SSL nie powiodo si: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Zamykanie poczenia do %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Zbyt stara wersja serwera IMAP. Praca z tym serwerem nie jest moliwa.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Poczy uywajc TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Poczenie TSL nie zostao wynegocjowane\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Poczenie szyfrowane nie jest dostpne\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Wybieranie %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Bd otwarcia skrzynki\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Utworzy %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Skasowanie nie powiodo si\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Zaznaczanie %d listw jako skasowanych...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Zapisywanie zmienionych listw... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Bd zapisywania listw. Potwierdzasz wyjcie?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Bd zapisywania flag\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Kasowanie listw na serwerze... \"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: skasowanie nie powiodo si\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Nie podano nazwy nagwka: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Bdna nazwa skrzynki\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Subskrybowanie %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Odsubskrybowanie %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Zasybskrybowano %s\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Odsubskrybowano %s\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Nie mona pobra nagwkw z serwera IMAP w tej wersji.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Nie mona utworzy pliku tymczasowego %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Sprawdzanie pamici podrcznej...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Pobieranie nagwkw...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Pobieranie listu...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"Bdny indeks listw. Sprbuj ponownie otworzy skrzynk.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"adowanie listu...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Kopiowanie %d listw do %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Kopiowanie listu %d do %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Kontynuowa?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Nie ma takiego polecenia w tym menu.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Bd w wyraeniu regularnym: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Zbyt mao podwyrae dla wzorca spamu\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"Spam: brak pasujcego wzorca\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"NieSpam: brak pasujcego wzorca\"\n\n#: init.c:861\n#, fuzzy, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"Brak -rx lub -addr.\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"Ostrzeenie: bdny IDN '%s'.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"zaczniki: brak specyfikacji inline/attachment\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"zaczniki: bdna specyfikacja inline/attachment\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"brak specyfikacji inline/attachment\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"bdna specyfikacja inline/attachment\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: brak adresu\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Ostrzeenie: bdny IDN '%s' w aliasie '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"nieprawidowy nagwek\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: nieznana metoda sortowania\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): bd w wyraeniu regularnym: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: nieznana zmienna\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"reset: nieprawidowy prefiks\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"reset: nieprawidowa warto\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Uycie: set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s ustawiony\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s nie jest ustawiony\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Niewaciwy dzie miesica: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: nieprawidowy typ skrzynki\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: nieprawidowa warto\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: nieprawidowa warto\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: nieznany typ\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: nieprawidowy typ\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Bd w %s, linia %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: bdy w %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: wczytywanie zaniechane z powodu zbyt wielu bdw w %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: bdy w %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: zbyt wiele argumentw\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: nieznane polecenie\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Bd w poleceniu: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"nie mona ustali pooenia katalogu domowego\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"nie mona ustali nazwy uytkownika\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"nie mona ustali nazwy uytkownika\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: brak nazwy grupy\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"brak argumentw\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Wykryto ptl w makrze.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Klawisz nie zosta przypisany.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Klawisz nie zosta przypisany. Aby uzyska pomoc przycinij '%s'.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: zbyt wiele argumentw\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: nie ma takiego menu\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"pusta sekwencja klawiszy\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: zbyt wiele argumentw\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: nie ma takiej funkcji\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: pusta sekwencja klawiszy\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: zbyt wiele argumentw\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: brak argumentw\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: brak takiej funkcji\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Wprowad klucze (^G aby przerwa): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Znak = %s, semkowo = %o, dziesitnie = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Przepenienie zmiennej cakowitej - nie mona zaalokowa pamici!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Brak pamici!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Aby powiadomi autorw, prosz pisa na <mutt-dev@mutt.org>.\\n\"\n\"Aby zgosi bd, odwied stron http://bugs.mutt.org/.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2007 Michael R. Elkins i inni.\\n\"\n\"Program nie jest objty ADN gwarancj; szczegy poznasz piszc 'mutt -\"\n\"vv'.\\n\"\n\"Mutt jest darmowym oprogramowaniem, zapraszamy \\n\"\n\"do jego redystrybucji pod pewnymi warunkami, szczegy poznasz piszc 'mutt -\"\n\"vv'.\\n\"\n\n#: main.c:75\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2006 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2007 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2007 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"\\n\"\n\"Wielu innych twrcw, nie wspomnianych tutaj,\\n\"\n\"wnioso wiele nowego kodu, poprawek i sugestii.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"   Ten program jest darmowy; moesz rozprowadza go i/lub modyfikowa\\n\"\n\"   zachowujc warunki Powszechnej Licencji Publicznej GNU (General Public\\n\"\n\"   Licence), opublikowanej przez Free Software Foundation, w wersji 2\\n\"\n\"   lub wyszej.\\n\"\n\"\\n\"\n\"   Program ten jest rozprowadzany w nadziei, e bdzie przydatny,\\n\"\n\"   ale BEZ ADNYCH GWARANCJI, wyraonych wprost lub domylnie nawet,\\n\"\n\"   w tym gwarancji moliwoci SPRZEDAY i PRZYDATNOCI DO KONKRETNYCH \"\n\"CELW.\\n\"\n\"   Szczegy znajdziesz w Powszechnej Licencji Publicznej GNU.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    W dokumentacji tego programu powinna znajdowa si kopia Powszechnej\\n\"\n\"    Licencji Publicznej GNU. Jeli tak nie jest, napisz do Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\n\n#: main.c:116\n#, fuzzy\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"uycie: mutt [<opcje>]  [-z] [-f <plik> | -yZ]\\n\"\n\"       mutt [<opcje>] [-x] [-Hi <plik>] [-s <temat>] [-bc <adres>] [-a \"\n\"<plik> [...]] [--] <adres> [...]\\n\"\n\"       mutt [<opcje>] -p\\n\"\n\"       mutt [<opcje>] -A <alias> [...]\\n\"\n\"       mutt [<opcje>] -Q <zmienna> [...]\\n\"\n\"       mutt [<opcje>] -D\\n\"\n\"       mutt -v[v]\\n\"\n\n#: main.c:125\n#, fuzzy\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"opcje:\\n\"\n\"  -A <alias>\\tuyj aliasu\\n\"\n\"  -a <plik>\\tdocz plik do listu\\n\"\n\"  -b <adres>\\tpodaj adres blind carbon-copy (BCC)\\n\"\n\"  -c <adres>\\tpodaj adres carbon-copy (CC)\\n\"\n\"  -D\\t\\twydrukuj wartoci wszystkich zmiennych\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <poziom>\\tzapisuj komunikaty debugowania do ~/.muttdebug0\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -e <polec>\\tpodaj polecenie do wykonania po inicjalizacji\\n\"\n\"  -f <plik>\\totwrz najpierw t skrzynk\\n\"\n\"  -F <plik>\\tuyj alternatywnego pliku muttrc\\n\"\n\"  -H <plik>\\twczytaj szablon nagwkw i treci listu z pliku\\n\"\n\"  -i <plik>\\twstaw ten plik w odpowiedzi\\n\"\n\"  -m <typ>\\tpodaj typ skrzynki\\n\"\n\"  -n\\t\\tnie czytaj systemowego Muttrc\\n\"\n\"  -p\\t\\tponownie edytuj zarzucony list\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <zmienna>\\tpodaj warto zmiennej konfiguracyjnej\\n\"\n\"  -R\\t\\totwrz skrzynk w trybie tylko do odczytu\\n\"\n\"  -s <tytu>\\tpodaj tytu (musi by w apostrofach, jeli zawiera spacje)\\n\"\n\"  -v\\t\\tpoka wersj i wkompilowane parametry\\n\"\n\"  -x\\t\\tsymuluj zachowanie mailx\\n\"\n\"  -y\\t\\twybierz skrzynk podan w twojej licie `mailboxes'\\n\"\n\"  -z\\t\\twyjd natychmiast jeli brak nowych listw w skrzynce\\n\"\n\"  -Z\\t\\totwrz pierwsz skrzynk z nowym listem i wyjd jeli brak nowych\\n\"\n\"  -h\\t\\tten tekst\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Parametry kompilacji:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Bd inicjalizacji terminala.\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Bd: '%s' to bdny IDN.\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Diagnostyka bdw na poziomie %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"Diagnostyka bdw nie zostaa wkompilowane. Zignorowano.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s nie istnieje. Utworzy?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Nie mona utworzy %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Nie wskazano adresatw listu.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: nie mona doczy pliku.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Brak skrzynki z now poczt.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Nie zdefiniowano pooenia skrzynek z now poczt.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Skrzynka pocztowa jest pusta.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Czytanie %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Skrzynka jest uszkodzona!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Skrzynka pocztowa zostaa uszkodzona!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Bd! Nie mona ponownie otworzy skrzynki!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Nie mona zablokowa skrzynki pocztowej!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: skrzynka zmodyfikowana, ale aden z listw nie zosta zmieniony! \"\n\"(zgo ten bd)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Zapisywanie %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Wprowadzanie zmian...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Zapis niemoliwy! Zapisano cz skrzynki do %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Nie mona ponownie otworzy skrzynki pocztowej!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Ponowne otwieranie skrzynki...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Przeskocz do: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Niewaciwy numer indeksu.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Brak pozycji.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Nie mona niej przewin.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Nie mona wyej przewin.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"To jest pierwsza strona.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"To jest ostatnia strona.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"To jest ostatnia pozycja.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"To jest pierwsza pozycja.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Szukaj frazy: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Szukaj frazy w przeciwnym kierunku: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Nic nie znaleziono.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Brak zaznaczonych pozycji listy.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Poszukiwanie nie jest moliwe w tym menu.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Przeskakiwanie nie jest moliwe w oknach dialogowych.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Zaznaczanie nie jest obsugiwane.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Sprawdzanie %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Wysanie listu nie powiodo si.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): nie mona nada plikowi daty\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"SASL: bdny profil\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"SASL: bd ustanawiania poczenia\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"SASL: bd konfigurowania parametrw zabezpiecze\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"SASL: bd konfigurowania SSF hosta zdalnego\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"SASL: bd konfigurowania nazwy uytkownika hosta zdalnego\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Poczenie z %s zostao zakoczone\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"Protok SSL nie jest dostpny.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Polecenie 'preconnect' nie powiodo si.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Bd komunikacji z %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Bdny IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Wyszukiwanie %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Host \\\"%s\\\" nie zosta znaleziony\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"czenie z %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Poczenie z %s (%s) nie zostao ustanowione.\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Zgromadzenie odpowiedniej iloci entropii nie powiodo si\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Wypenianie zbiornika entropii: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"Prawa dostpu do %s mog powodowa problemy z bezpieczestwem!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"Protok SSL nie moe zosta uyty ze wzgldu na brak entropii\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"Bd wejcia/wyjcia\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL nie powiodo si: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Nie mona pobra certyfikatu z docelowego hosta\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"Poczenie SSL przy uyciu %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Nieznany\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[niemoliwe do wyznaczenia]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[bdna data]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Certyfikat serwera nie uzyska jeszcze wanoci\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Certyfikat serwera utraci wano\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Nie mona pobra certyfikatu z docelowego hosta\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Nie mona pobra certyfikatu z docelowego hosta\"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"Waciciel certyfikatu nie odpowiada nadawcy.\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Certyfikat zosta zapisany\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Ten certyfikat naley do:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Ten certyfikat zosta wydany przez:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Ten certyfikat jest wany\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   od %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     do %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Odcisk: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(o)drzu, zaakceptuj (r)az, (a)kceptuj zawsze\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"ora\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(o)drzu, zaakceptuj (r)az\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"or\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Ostrzeenie: Nie mona zapisa certyfikatu\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Certyfikat zosta zapisany\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Bd: brak otwartego gniazdka TLS\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Wszystkie dostpne protokoy poczenia TLS/SSL zostay zablokowane\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"Poczenie SSL/TLS uywajc %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Bd inicjalizacji gnutls\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Bd przetwarzana certyfikatu\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Odcisk SHA1: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Odcisk MD5: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"Ostrzeenie: certyfikat serwera jeszcze nie uzyska wanoci\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"Ostrzeenie: certyfikat serwera wygas\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"Ostrzeenie: certyfikat serwera zosta odwoany\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"Ostrzeenie: nazwa (hostname) serwera nie odpowiada certyfikatowi\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"Ostrzeenie: certyfikat nie zosta podpisany przez CA\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Bd weryfikacji certyfikatu (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"To nie jest certyfikat X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"czenie z \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Zestawianie tunelu: %s zwrci bd %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Zestawianie tunelu: bd komunikacji z %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Ten plik jest katalogim, zapisa w nim? [(t)ak, (n)ie, (w)szystkie]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"tnw\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Ten plik jest katalogim, zapisa w nim?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Plik w katalogu: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Plik istnieje: (n)adpisa, (d)oczy czy (a)nulowa?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"nda\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Nie mona zapisa listu w skrzynce POP.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Dopisa listy do %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s nie jest skrzynk!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Licznik blokad przekroczony, usun blokad %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Nie mona zaoy blokady na %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Czas oczekiwania na blokad typu 'fcntl' zosta przekroczony!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Oczekiwanie na blokad typu 'fcntl'... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Czas oczekiwania na blokad typu 'flock' zosta przekroczony!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Oczekiwanie na blokad typu 'flock'... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Nie mona zablokowa %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Synchronizacja skrzynki %s nie powoda si!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Przenie przeczytane listy do %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Usun NIEODWOALNIE %d zaznaczony list?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Usun NIEODWOALNIE %d zaznaczone listy?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Przenoszenie przeczytanych listw do %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Skrzynka pozostaa niezmieniona.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d zapisano, %d przeniesiono, %d usunito.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d zapisano, %d usunito.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Nacinij '%s' aby zezwoli na zapisanie\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Uyj 'toggle-write' by ponownie wczy zapisanie!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Skrzynka jest oznaczona jako niezapisywalna. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Zmiany w skrzynce naniesiono.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Nie mona zapisa listu\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Przepenienie zmiennej cakowitej - nie mona zaalokowa pamici.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"PoprzStr\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"NastStr\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Zobacz za.\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Nastpny\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Pokazany jest koniec listu.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Pokazany jest pocztek listu.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Pomoc jest wanie wywietlana.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Nie ma wicej cytowanego tekstu.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Brak tekstu za cytowanym fragmentem.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"wieloczciowy list nie posiada wpisu ograniczajcego!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Bd w wyraeniu: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Puste wyraenie\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Niewaciwy dzie miesica: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Niewaciwy miesic: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Bdna data wzgldna: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"bd we wzorcu: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"brakujcy parametr\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"niesparowane nawiasy: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: bdny modyfikator wyraenia\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: nie obsugiwane w tym trybie\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"brakujcy parametr\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"niesparowane nawiasy: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"pusty wzorzec\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"bd: nieznany op %d (zgo ten bd).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Kompilacja wzorca poszukiwa...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Wykonywanie polecenia na pasujcych do wzorca listach...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"aden z listw nie spenia kryteriw.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Wyszukiwanie...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Poszukiwanie dotaro do koca bez znalezienia frazy\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Poszukiwanie dotaro do pocztku bez znalezienia frazy\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Przeszukiwanie przerwano.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Wprowad haso PGP:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Haso PGP zostao zapomniane.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Bd: nie mona utworzy podprocesu PGP! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Koniec komunikatw PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Bd: nie mona utworzy podprocesu PGP! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Odszyfrowanie nie powiodo si\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Nie mona otworzy podprocesu PGP!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Nie mona wywoa PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP: (z)aszyfruj, podpi(s)z, podpisz j(a)ko, o(b)a, %s , b(e)z PGP? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)nline\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP: (z)aszyfruj, podpi(s)z, podpisz j(a)ko, o(b)a, %s , b(e)z PGP? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP: (z)aszyfruj, podpi(s)z, podpisz j(a)ko, o(b)a, %s , b(e)z PGP? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"zpjoga\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP: (z)aszyfruj, podpi(s)z, podpisz j(a)ko, o(b)a, %s , b(e)z PGP? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"zpjoga\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP: (z)aszyfruj, podpi(s)z, podpisz j(a)ko, o(b)a, %s , b(e)z PGP? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"zpjoga\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP: (z)aszyfruj, podpi(s)z, podpisz j(a)ko, o(b)a, %s , b(e)z PGP? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"zpjoga\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Sprowadzam klucz PGP...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Wszystkie pasujce klucze wygasy, zostay wyczone lub wyprowadzone.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"Klucze PGP dla <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"Klucze PGP dla \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Nie mona otworzy /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Klucz PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Polecenie TOP nie jest obsugiwane przez serwer.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Nie mona zapisa nagwka do pliku tymczasowego!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Polecenie UIDL nie jest obsugiwane przez serwer.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"Bdny indeks listw. Sprbuj ponownie otworzy skrzynk.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s jest bdn ciek POP\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Pobieranie spisu listw...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Nie mona zapisa listu do pliku tymczasowego!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Zaznaczanie listw jako skasowane...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Poszukiwanie nowej poczty...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"Serwer POP nie zosta wskazany.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Brak nowej poczty w skrzynce POP.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Usun listy z serwera?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Czytanie nowych listw (%d bajtw)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Bd podczas zapisywania skrzynki!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [przeczytano %d spord %d listw]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Serwer zamkn poczenie!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Uwierzytelnianie (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"POP: bedna sygnatura czasu!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Uwierzytelnianie (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"Uwierzytelnianie APOP nie powiodo si.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Polecenie USER nie jest obsugiwane przez serwer.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Bdny URL SMTP: %s\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Nie mona zostawi listw na serwerze.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Bd czenia z serwerem: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Zamykanie poczenia z serwerem POP...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Sprawdzanie indeksw listw...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Poczenie z serwerem POP zostao zerwane. Poczy ponownie?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Odoone listy\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Brak odoonych listw.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Szyfrowanie: nieprawidowy nagwek\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"S/MIME: nieprawidowy nagwek\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Odszyfrowywanie listu...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Odszyfrowanie nie powiodo si.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nowe pytanie\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Utwrz alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Szukaj\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Oczekiwanie na odpowied...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Pytanie nie zostao okrelone.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Pytanie\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Pytanie:\"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Pytanie '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Potok\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Drukuj\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Zapisywanie...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Zacznik zosta zapisany.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"UWAGA! Nadpisujesz plik %s, kontynuowa?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Zacznik przefiltrowany.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Przefiltruj przez: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Wylij przez potok do: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Nie wiem jak wydrukowa %s zacznikw!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Wydrukowa zaznaczony(e) zacznik(i)?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Wydrukowa zacznik?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Nie mona odszyfrowa zaszyfrowanego listu!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Zaczniki\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Brak pod-listw!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Nie mona skasowa zacznika na serwerze POP.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Usuwanie zacznikw z zaszyfrowanych listw jest niemoliwe.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Usuwanie zacznikw z zaszyfrowanych listw jest niemoliwe.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Moliwe jest jedynie usuwanie zacznikw multipart.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Moesz wysya kopie tylko listw zgodnych z RFC 822.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Bd wysyania kopii!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Bd wysyania kopii!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Nie mona otworzy pliku tymczasowego %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Przesa dalej jako zaczniki?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Nie mona zdekodowa zaznaczonych za. Przesa pozostae dalej (MIME)?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Przesa dalej w trybie MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Nie mona utworzy %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Nie mona znale adnego z zaznaczonych listw.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Nie znaleziono list pocztowych!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Nie mona zdekodowa wszystkich wybranych za. Zaczy (MIME) pozostae?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Dodaj\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Wprowad\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Usu\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Nie mona pobra type2.list mixmastera!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Wybierz acuch remailera.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Bd: nie mona uy %s jako finalnego remailera acucha.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"acuchy mixmasterw mog mie maks. %d elementw.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"acuch remailera jest pusty.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Ju zdefiniowano pierwszy element acucha.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Ju zdefiniowano ostatni element acucha.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster nie akceptuje nagwkw Cc i Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"Ustaw poprawn warto hostname jeli chcesz uywa mixmastera!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Bd podczas wysyania listu, proces potomny zwrci %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Bd podczas wysyania listu.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Bdnie sformatowane pole dla typu %s w \\\"%s\\\" linii %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Brak cieki do pliku specjalnego 'mailcap'\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"brak wpisu w 'mailcap' dla typu %s\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: za mao argumentw\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: zbyt wiele argumentw\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Brak tematu, zaniecha wysania?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Brak tematu, zaniechano wysania listy.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Odpowiedzie %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Follow-up do %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"aden z zaznaczonych listw nie jest widoczny!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Zacytowa oryginalny list w odpowiedzi?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Wczytywanie cytowanego listu...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Nie mona doczy wszystkich wskazanych listw!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Przesa dalej jako zacznik?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Przygotowywanie listu do przesania dalej...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Wywoa odoony list?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Edytowa przesyany list?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"List nie zosta zmieniony. Zaniecha wysania?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"List nie zosta zmieniony. Zaniechano wysania.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"List odoono.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Nie wskazano adresatw!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Nie wskazano adresatw!\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Brak tematu, zaniecha wysania?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Brak tematu.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Wysyanie listu...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"obejrzyj zacznik jako tekst\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Wysanie listu nie powiodo si.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Poczta zostaa wysana.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Wysyanie w tle.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Brak parametru granicznego! (zgo ten bd)\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s ju nie istnieje!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s nie jest zwykym plikiem.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Nie mona otworzy %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Bd podczas wysyania listu, proces potomny zwrci %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Wynik procesu dostarczania\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Bdny IDN %s w trakcie przygotowywania resent-from.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s... Koniec pracy.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Otrzymano sygna %s... Koniec pracy.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Otrzymano sygna %d... Koniec pracy.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Wprowad haso S/MIME:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Zaufany   \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Zweryfikowany  \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Niezweryfikowany\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Wygasy   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Wyprowadzony   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Bdny   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Nieznany   \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Certyfikat S/MIME dla \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"Nieprawidowy identyfikator.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Podaj numer klucza: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Brak (poprawnych) certyfikatw dla %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Bd: nie mona wywoa podprocesu OpenSSL!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"brak certyfikatu\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"brak skrzynki\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Brak wynikw dziaania OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"Nie mona podpisa - nie podano klucza. Uyj Podpisz jako.\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Bd: nie mona wywoa podprocesu OpenSSL!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Koniec komunikatw OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Bd: nie mona utworzy podprocesu OpenSSL! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Nastpujce dane s zaszyfrowane S/MIME --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Ponisze dane s podpisane S/MIME --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec danych zaszyfrowanych S/MIME. --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec danych podpisanych S/MIME. --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME: (z)aszyfruj, (p)odpisz, (m)etoda, podp. (j)ako, (o)ba, (a)nuluj?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME: (z)aszyfruj, (p)odpisz, (m)etoda, podp. (j)ako, (o)ba, (a)nuluj?\"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"zpmjoa\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME: (z)aszyfruj, (p)odpisz, (m)etoda, podp. (j)ako, (o)ba, (a)nuluj?\"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"zpmjoa\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Wybierz algorytm: 1: DES, 2: RC2, 3: AES, (a)nuluj? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"123a\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"12\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"123\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"123\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Sesja SMTP nie powioda si: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Sesja SMTP nie powioda si: nie mona otworzy %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"Sesja SMTP nie powioda si: bd odczytu\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"Sesja SMTP nie powioda si: bd zapisu\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Bdny URL SMTP: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"Serwer SMTP nie wspiera uwierzytelniania\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"Uwierzytelnianie SMTP wymaga SASL\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"Uwierzytelnianie SASL nie powiodo si\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"Uwierzytelnianie SASL nie powiodo si\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Sortowanie poczty w skrzynce...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Nie znaleziono funkcji sortowania! (zgo ten bd)\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(brak skrzynki)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"\"\n\"Pierwszy list wtku nie jest widoczny w trybie ograniczonego przegldania.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Pierwszy list tego wtku nie jest dostpny.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"pusta operacja\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"koniec wykonywania warunkowego (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"wymusza obejrzenie zacznikw poprzez plik 'mailcap'\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"obejrzyj zacznik jako tekst\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"przecza podgld pod-listw listw zoonych\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"przejd na koniec strony\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"wylij ponownie do innego uytkownika\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"wybierz nowy plik w tym katalogu\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"ogldaj plik\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"wywietl nazwy aktualnie wybranych plikw\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"zasubskrybuj biec skrzynk (tylko IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"odsubskrybuj biec skrzynk (tylko IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"\"\n\"zmie tryb przegldania skrzynek: wszystkie/zasubskrybowane (tylko IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"poka skrzynki z now poczt\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"zmie katalog\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"szukaj nowych listw w skrzynkach\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"zacz pliki do li(s)tu\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"docz list(y) do tego listu\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"podaj tre pola BCC\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"podaj tre pola CC\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"edytuj opis zacznika\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"podaj sposb zakodowania zacznika\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"podaj nazw pliku, do ktrego ma by skopiowany list\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"podaj nazw pliku zacznika\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"podaj tre pola From:\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"edytuj tre listu i nagwkw\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"edytuj tre listu\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"edytuj zacznik uywajc pliku 'mailcap'\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"podaj tre pola Reply-To:\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"podaj tytu listu\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"podaj tre listy TO\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"utwrz now skrzynk (tylko IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"podaj rodzaj typu \\\"Content-Type\\\" zacznika\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"we tymczasow kopi zacznika\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"sprawd poprawno pisowni listu\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"utwrz nowy zacznik uywajc pliku 'mailcap'\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"zdecyduj czy zacznik ma by przekodowywany\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"zapisz list aby wysa go pniej\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"zmie nazw lub przenie doczony plik\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"wylij list\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"ustala czy wstawia w treci czy jako zacznik\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"ustala czy usun plik po wysaniu\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"zaktualizuj informacj o kodowaniu zacznika\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"zapisz list do skrzynki\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"kopiuj list do pliku/skrzynki\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"utwrz alias dla nadawcy\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"przesu pozycj kursora na d ekranu\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"przesu pozycj kursora na rodek ekranu\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"przesu pozycj kursora na gr ekranu\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"utwrz rozkodowan (text/plain) kopi\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"utwrz rozkodowan kopi (text/plain) i usu\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"usu biecy list\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"usu biec skrzynk (tylko IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"usu wszystkie listy w podwtku\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"usu wszystkie listy w wtku\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"wywietl peny adres nadawcy\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"wywielt list ze wszystkimi nagwkami\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"wywietl list\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"edytuj list z nagowkami\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"usu znak przed kursorem\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"przesu kursor jeden znak w lewo\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"przesu kursor do pocztku sowa\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"przeskocz do pocztku linii\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"kr pomidzy skrzynkami pocztowymi\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"uzupenij nazw pliku lub alias\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"uzupenij adres poprzez zapytanie\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"usu znak pod kursorem\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"przeskocz do koca linii\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"przesu kursor o znak w prawo\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"przesu kursor do koca sowa\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"przewijaj w d list wydanych polece\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"przewijaj do gry list wydanych polece\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"usu znaki poczwszy od kursora a do koca linii\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"usu znaki poczwszy od kursora a do koca sowa\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"usu wszystkie znaki w linii\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"usu sowo z przodu kursora\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"zacytuj nastpny wpisany znak\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"zamie znak pod kursorem ze znakiem poprzednim\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"zamie piewsz liter sowa na wielk\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"zamie litery sowa na mae\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"zamie litery sowa na wielkie\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"wprowad polecenie pliku startowego (muttrc)\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"wprowad wzorzec nazwy pliku\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"opu niniejsze menu\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"przefiltruj zacznik przez polecenie powoki\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"przesu si do pierwszej pozycji\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"wcz dla listu flag 'wane!'\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"przelij dalej list opatrujc go uwagami\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"wska obecn pozycj\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"odpowiedz wszystkim adresatom\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"przewi w d o p strony\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"przewi w gr o p strony\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"niniejszy ekran\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"przeskocz do konkretnej pozycji w indeksie\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"przejd do ostatniej pozycji\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"opowiedz na wskazan list pocztow\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"wykonaj makropolecenie\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"zredaguj nowy list\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"rozdziel wtki na dwa niezalene\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"otwrz inn skrzynk\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"otwrz inn skrzynk w trybie tylko do odczytu\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"usu flag ze statusem wiadomoci\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"usu listy pasujce do wzorca\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"wymusz pobranie poczty z serwera IMAP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"pobierz poczt z serwera POP\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"przejd do pierwszego listu\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"przejd do ostatniego listu\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"poka tylko listy pasujce do wzorca\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"podlinkuj zaznaczony list do biecego\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"otwrz nastpn skrzynk zawierajc nowe listy\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"przejd do nastpnego nowego listu\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"przejd do nastpnego nowego lub nie przeczytanego listu\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"przejd do nastpnego podwtku\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"przejd do nastpnego wtku\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"przejd do nastpnego nieusunitego listu\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"przejd do nastpnego nieprzeczytanego listu\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"przejd na pocztek wtku\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"przejd do poprzedniego wtku\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"przejd do poprzedniego podwtku\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"przejd do poprzedniego nieusunitego listu\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"przejd do poprzedniego nowego listu\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"przejd do poprzedniego nowego lub nie przeczytanego listu\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"przejd do poprzedniego nieprzeczytanego listu\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"zaznacz obecny wtek jako przeczytany\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"zaznacz obecny podwtek jako przeczytany\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"ustaw flag statusu listu\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"zapisz zmiany do skrzynki\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"zaznacz listy pasujce do wzorca\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"odtwrz listy pasujce do wzorca\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"odznacz listy pasujce do wzorca\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"przejd do poowy strony\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"przejd do nastpnej pozycji\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"przewi w d o lini\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"przejd do nastpnej strony\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"przejd na koniec listu\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"ustala sposb pokazywania zaznaczonego tekstu\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"przeskocz poza zaznaczony fragment tekstu\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"przejd na pocztek listu\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"przekieruj list/zacznik do polecenia powoki\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"przejd do poprzedniej pozycji\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"przewi w gr o lini\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"przejd do poprzedniej strony\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"wydrukuj obecn pozycj\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"zapytaj zewntrzny program o adres\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"dodaj rezultaty nowych poszukiwa do obecnych\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"zapisz zmiany do skrzynki i opu program pocztowy\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"wywoaj odoony list\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"wyczy i odwie ekran\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{wewntrzne}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"zmie nazw biecej skrzynki (tylko IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"odpowiedz na list\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"uyj biecego listu jako wzorca dla nowych wiadomoci\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"zapisz list/zacznik do pliku\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"szukaj wyraenia regularnego\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"szukaj wstecz wyraenia regularnego\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"szukaj nastpnego pozytywnego rezultatu\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"szukaj wstecz nastpnego pozytywnego rezultatu\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"ustala czy szukana fraza ma by zaznaczona kolorem\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"wywoaj polecenie w podpowoce\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"uszereguj listy\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"uszereguj listy w odwrotnej kolejnoci\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"zaznacz biec pozycj\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"wykonaj nastpne polecenie na zaznaczonych listach\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"wykonaj nastpne polecenie TYLKO na zaznaczonych listach\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"zaznacz biecy podwtek\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"zaznacz biecy wtek\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"ustaw flag listu na 'nowy'\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"ustala czy skrzynka bdzie ponownie zapisana\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"ustala czy przeglda skrzynki czy wszystkie pliki\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"przejd na pocztek strony\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"odtwrz biec pozycj listy\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"odtwrz wszystkie listy z tego wtku\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"odtwrz wszystkie listy z tego podwtku\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"poka wersj i dat programu pocztowego Mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"poka zacznik uywajc, jeli to niezbdne, pliku 'mailcap'\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"poka zaczniki MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"wywietl kod wprowadzonego znaku\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"poka biecy wzorzec ograniczajcy\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"zwi/rozwi biecy wtek\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"zwi/rozwi wszystkie wtki\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"docz wasny klucz publiczny PGP\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"poka opcje PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"wylij wasny klucz publiczny PGP\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"zweryfikuj klucz publiczny PGP\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"obejrzyj identyfikator uytkownika klucza\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"uyj starej wersji PGP\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Potwierd skonstruowany acuch\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Dodaj remailera do acucha\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Wprowadz remailera do acucha\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Usu remailera z acucha\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Wybierz poprzedni element acucha\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Wybierz nastepny element acucha\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"przeslij list przez acuch anonimowych remailerw typu mixmaster\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"utwrz rozszyfrowana kopi i usu orygina\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"utwrz rozszyfrowan kopi\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"wyma haso z pamici operacyjnej\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"kopiuj klucze publiczne\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"poka opcje S/MIME\"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"usu li(s)ty\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" w trybie ograniczonego przegldania\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"skasuj list\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"edytuj list\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"bd w wyraeniu\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Bd wewntrzny. Zgo go pod adres <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Ostrzeenie: fragment tej wiadomoci nie zosta podpisany.\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Bd: uszkodzony list PGP/MIME! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Uyto GPGME, jakkolwiek gpg-agent nie zosta uruchomiony.\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Bd: multipart/encrypted nie ma parametru protokou!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"Identyfikator %s nie zosta zweryfikowany. Mimo to uy dla %s ?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Uy nie zaufanego identyfikatora %s dla %s ?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Uy identyfikatora %s dla %s ?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Ostrzeenie: nie okelono poziomu zaufania dla %s (dow. klawisz by \"\n#~ \"kontynuowa).\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"Brak wynikw dziaania OpenSSL...\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Ostrzeenie: nie znaleziono certyfikatu poredniego CA.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Bez jakiegokolwiek szyfrowania\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\ttraktuj pozostae argumenty jako adresy, nawet jeli zaczynaj \"\n#~ \"si od mylnika\\n\"\n#~ \"\\t\\tuycie -- jest wymagane, jeli jednoczenie zastosowano -a dla \"\n#~ \"obsugi wielu plikw\"\n\n#~ msgid \"esabifc\"\n#~ msgstr \"zsabife\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Nie ustalono wzorca poszukiwa.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Szukaj w przeciwnym kierunku: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Szukaj: \"\n\n#~ msgid \"            created: \"\n#~ msgstr \"            utworzony: \"\n\n#~ msgid \"*BAD* signature claimed to be from: \"\n#~ msgstr \"Bdny podpis zoony jakoby przez: \"\n\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Bd sprawdzania podpisu\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"sprawdzanie certyfikatu SSL\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"TLS/SSL: sprawdzanie certyfikatu\"\n\n#~ msgid \"SASL failed to get local IP address\"\n#~ msgstr \"SASL: bd pobierania lokalnego adresu IP\"\n\n#~ msgid \"SASL failed to parse local IP address\"\n#~ msgstr \"SASL: bd przetwarzania lokalnego adresu IP\"\n\n#~ msgid \"SASL failed to get remote IP address\"\n#~ msgstr \"SASL: bd pobierania zdalnego adresu IP\"\n\n#~ msgid \"SASL failed to parse remote IP address\"\n#~ msgstr \"SASL: bd zdalnego lokalnego adresu IP\"\n"
  },
  {
    "path": "po/pt_BR.po",
    "content": "# Mutt 0.95.6\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 1.1.5i\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2000-03-05 01:14-0300\\n\"\n\"Last-Translator: Marcus Brito <marcus@visaotec.com.br>\\n\"\n\"Language-Team: LIE-BR (http://lie-br.conectiva.com.br)\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=iso-8859-1\\n\"\n\"Content-Transfer-Encoding:\\n\"\n\n#: account.c:163\n#, fuzzy, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Renomear para: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Senha para %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Sair\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Apagar\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Restaurar\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Escolher\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Ajuda\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Voc no tem apelidos!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Apelidos\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Apelidar como: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Voc j tem um apelido definido com aquele nome!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Endereo: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Nome pessoal:\"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s =%s] Aceita?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Salvar em arquivo:\"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Erro ao ler mensagem!\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Apelido adicionado.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Erro ao tentar exibir arquivo\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"No pude casar o nome, continuo?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Entrada de composio no mailcap requer %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Erro ao executar \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Erro ao abrir o arquivo para interpretar os cabealhos.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Erro ao abrir o arquivo para retirar cabealhos.\"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \"Erro ao abrir o arquivo para interpretar os cabealhos.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"\"\n\"Nenhuma entrada de composio no mailcap para %s, criando entrada vazia.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Entrada de edio no mailcap requer %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Nenhuma entrada de edio no mailcap para %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Nenhuma entrada no mailcap de acordo encontrada. Exibindo como texto.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"Tipo MIME no definido. No  possvel visualizar o anexo.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"No  possvel criar o filtro.\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Anexos\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Anexos\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"No foi possvel criar um filtro\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Erro de gravao!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Eu no sei como imprimir isto!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Diretrio\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Mscara\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s no  um diretrio.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Caixas [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"[%s] assinada, Mscara de arquivos: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Diretrio [%s], Mscara de arquivos: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"No  possvel anexar um diretrio\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Nenhum arquivo casa com a mscara\"\n\n#: browser.c:905\n#, fuzzy\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"A remoo s  possvel para caixar IMAP\"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"A remoo s  possvel para caixar IMAP\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"A remoo s  possvel para caixar IMAP\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"No  possvel criar o filtro.\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Deseja mesmo remover a caixa \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Caixa de correio removida.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Caixa de correio no removida.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Mudar para: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Erro ao examinar diretrio.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Mscara de arquivos: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Ordem inversa por (d)ata, (a)lfa, (t)amanho ou (n)o ordenar? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Ordenar por (d)ata, (a)lfa, (t)amanho ou (n)o ordenar? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"datn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nome do novo arquivo: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"No  possvel visualizar um diretrio\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Erro ao tentar exibir arquivo\"\n\n#: buffy.c:504\n#, fuzzy\nmsgid \"New mail in \"\nmsgstr \"Novas mensagens em %s\"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: o terminal no aceita cores\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: no existe tal cor\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: no existe tal objeto\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: comando vlido apenas para o objeto ndice\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: poucos argumentos\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Faltam argumentos.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: poucos argumentos\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: poucos argumentos\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: no existe tal atributo\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"poucos argumentos\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"muitos argumentos\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"cores pr-definidas no suportadas\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Verificar assinatura de PGP?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"No foi possvel criar um arquivo temporrio!\"\n\n#: commands.c:128\n#, fuzzy\nmsgid \"Cannot create display filter\"\nmsgstr \"No  possvel criar o filtro.\"\n\n#: commands.c:152\n#, fuzzy\nmsgid \"Could not copy message\"\nmsgstr \"No foi possvel enviar a mensagem.\"\n\n#: commands.c:189\n#, fuzzy\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"Assinatura S/MIME verificada com sucesso.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\n#, fuzzy\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"Assinatura PGP verificada com sucesso.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"Assinatura PGP verificada com sucesso.\"\n\n#: commands.c:207\n#, fuzzy\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"Assinatura PGP verificada com sucesso.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Comando: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Repetir mensagem para: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Repetir mensagens marcadas para: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Erro ao interpretar endereo!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Repetir mensagem para %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Repetir mensagens para %s\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Message not bounced.\"\nmsgstr \"Mensagem repetida.\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Messages not bounced.\"\nmsgstr \"Mensagens repetidas.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Mensagem repetida.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Mensagens repetidas.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\n#, fuzzy\nmsgid \"Can't create filter process\"\nmsgstr \"No foi possvel criar um filtro\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Passar por cano ao comando: \"\n\n#: commands.c:510\n#, fuzzy\nmsgid \"No printing command has been defined.\"\nmsgstr \"Nenhuma caixa de mensagem para recebimento definida.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Imprimir mensagem?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Imprimir mensagens marcadas?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Mensagem impressa\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Mensagens impressas\"\n\n#: commands.c:526\n#, fuzzy\nmsgid \"Message could not be printed\"\nmsgstr \"Mensagem impressa\"\n\n#: commands.c:527\n#, fuzzy\nmsgid \"Messages could not be printed\"\nmsgstr \"Mensagens impressas\"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Ordem-Rev (d)ata/(f)rm/(r)eceb/(a)sst/(p)ara/dis(c)/de(s)ord/(t)am/r(e)fs?: \"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Ordem (d)ata/(f)rm/(r)eceb/(a)sst/(p)ara/dis(c)/de(s)ord/(t)am/r(e)fs?: \"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrapcste\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Comando do shell: \"\n\n#: commands.c:741\n#, fuzzy, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"%s%s para caixa de mensagens\"\n\n#: commands.c:742\n#, fuzzy, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"%s%s para caixa de mensagens\"\n\n#: commands.c:743\n#, fuzzy, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"%s%s para caixa de mensagens\"\n\n#: commands.c:744\n#, fuzzy, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"%s%s para caixa de mensagens\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s%s para caixa de mensagens\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s%s para caixa de mensagens\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" marcada\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Copiando para %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"\"\n\n#: commands.c:945\n#, fuzzy, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Conectando a %s...\"\n\n#: commands.c:950\n#, fuzzy, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"O conjunto de caracteres %s  desconhecido.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"No h anexos.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Enviar\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Cancelar\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Anexar arquivo\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Descrio\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"No  possvel marcar.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Assinar, Encriptar\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Encriptar\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Assinar\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"(continuar)\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" assinar como: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<padro>\"\n\n#: compose.c:165\n#, fuzzy\nmsgid \"Encrypt with: \"\nmsgstr \"Encriptar\"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] no existe mais!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] modificado. Atualizar codificao?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Anexos\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Voc no pode apagar o nico anexo.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Anexando os arquivos escolhidos...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"No foi possvel anexar %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Abrir caixa para anexar mensagem de\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"No foi possvel travar a caixa de mensagens!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Nenhuma mensagem naquela pasta.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Marque as mensagens que voc quer anexar!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"No foi possvel anexar!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"A gravao s afeta os anexos de texto.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"O anexo atual no ser convertido.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"O anexo atual ser convertido\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Codificao invlida\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Salvar uma cpia desta mensagem?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Renomear para: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, fuzzy, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Impossvel consultar: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Novo arquivo: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type  da forma base/sub\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Content-Type %s desconhecido\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"No  possvel criar o arquivo %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"O que temos aqui  uma falha ao criar um anexo\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Adiar esta mensagem?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Gravar mensagem na caixa\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Gravando mensagem em %s...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Mensgem gravada.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"No foi possvel criar um arquivo temporrio\"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Este certificado foi emitido por:\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"A mensagem pai no est disponvel.\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \"Impresso digital: %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Criar %s?\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Erro na linha de comando: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fim dos dados assinados --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Erro: fim de arquivo inesperado! --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- INCIO DE MENSAGEM DO PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- INCIO DE BLOCO DE CHAVE PBLICA DO PGP --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- INCIO DE MENSAGEM ASSINADA POR PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\n#, fuzzy\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- FIM DE MENSAGEM DO PGP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- FIM DE BLOCO DE CHAVE PBLICA DO PGP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\n#, fuzzy\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- FIM DE MENSAGEM ASSINADA POR PGP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erro: no foi possvel encontrar o incio da mensagem do PGP! --]\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Erro: no foi possvel criar um arquivo temporrio! --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os dados a seguir esto encriptados com PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os dados a seguir esto encriptados com PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fim dos dados encriptados com PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\n#, fuzzy\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fim dos dados encriptados com PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"Assinatura PGP verificada com sucesso.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"No foi possvel enviar a mensagem.\"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os dados a seguir esto assinados --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os dados a seguir esto encriptados com PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fim dos dados assinados --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fim dos dados encriptados com S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"Ms invlido: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Ms invlido: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Ms invlido: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"Encriptar\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \"Certificado salvo\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Key ID: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"Sair  \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"Conectando a %s...\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Conectando a %s\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Erro na linha de comando: %s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Key ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"Login falhou.\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Esta chave no pode ser usada: expirada/desabilitada/revogada.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Sair  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Escolher  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Verificar chave  \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Chaves do PGP que casam com \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"Chaves do PGP que casam com \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"Chaves do S/MIME que casam com \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"Chaves do PGP que casam com \\\"%s\\\".\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, fuzzy, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s [%s]\\n\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, fuzzy, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s [%s]\\n\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Esta chave no pode ser usada: expirada/desabilitada/revogada.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\n#, fuzzy\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"Esta chave no pode ser usada: expirada/desabilitada/revogada.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\n#, fuzzy\nmsgid \"ID is not valid.\"\nmsgstr \"Este ID no  de confiana.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\n#, fuzzy\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Este ID  de baixa confiana.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, fuzzy, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Voc realmente quer us-lo?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Procurando por chaves que casam com \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Usar keyID = \\\"%s\\\" para %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Entre a keyID para %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Por favor entre o key ID: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"erro no padro em: %s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Chave do PGP %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"esncaq\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"esncaq\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"esncaq\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"esncaq\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Assinar como: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"Erro ao abrir o arquivo para interpretar os cabealhos.\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \"\"\n\n#: crypt.c:74\n#, fuzzy, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Sada do PGP a seguir (hora atual: \"\n\n#: crypt.c:89\n#, fuzzy\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Senha do PGP esquecida.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Executando PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Mensagem no enviada.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erro: Protocolo multipart/signed %s desconhecido! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erro: Estrutura multipart/signed inconsistente! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Aviso: No foi possvel verificar %s de %s assinaturas. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Os dados a seguir esto assinados --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Aviso: No foi possvel encontrar nenhuma assinatura. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fim dos dados assinados --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Executando S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"sim\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"no\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Sair do Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"erro desconhecido\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Pressione qualquer tecla para continuar...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' para uma lista): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Nenhuma caixa aberta.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"No h mensagens.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Esta caixa  somente para leitura.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funo no permitida no modo anexar-mensagem.\"\n\n#: curs_main.c:56\n#, fuzzy\nmsgid \"No visible messages.\"\nmsgstr \"Nenhuma mensagem nova\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"No  possvel ativar escrita em uma caixa somente para leitura!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Mudanas na pasta sero escritas na sada.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Mudanas na pasta no sero escritas\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Sair\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Salvar\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Msg\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Responder\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grupo\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"A caixa foi modificada externamente. As marcas podem estar erradas.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Novas mensagens nesta caixa.\"\n\n#: curs_main.c:578\n#, fuzzy\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"A caixa foi modificada externamente. As marcas podem estar erradas.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Nenhuma mensagem marcada.\"\n\n#: curs_main.c:731 menu.c:907\n#, fuzzy\nmsgid \"Nothing to do.\"\nmsgstr \"Conectando a %s...\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Pular para mensagem: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"O argumento deve ser um nmero de mensagem.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Aquela mensagem no est visvel.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Nmero de mensagem invlido.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Nenhuma mensagem no removida.\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Apagar mensagens que casem com: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Nenhum padro limitante est em efeito.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Limitar: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Limitar a mensagens que casem com: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Sair do Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Marcar mensagens que casem com: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Nenhuma mensagem no removida.\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Restaurar mensagens que casem com: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Desmarcar mensagens que casem com: \"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Fechando a conexo com o servidor IMAP...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Abrir caixa somente para leitura\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Abrir caixa de correio\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Nenhuma caixa com novas mensagens.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s no  uma caixa de correio.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Sair do Mutt sem salvar alteraes?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Separar discusses no est ativado.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"salva esta mensagem para ser enviada depois\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Voc est na ltima mensagem.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Nenhuma mensagem no removida.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Voc est na primeira mensagem.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"A pesquisa voltou ao incio.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"A pesquisa passou para o final.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"A mensagem pai no est visvel nesta viso limitada\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Nenhuma mensagem nova\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"A mensagem pai no est visvel nesta viso limitada\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Nenhuma mensagem no lida\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"mostra uma mensagem\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Nenhuma discusso restante.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Voc est na primeira discusso.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"A discusso contm mensagens no lidas.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"Nenhuma mensagem no removida.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"No foi possvel gravar a mensagem\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"pula para a mensagem pai na discusso\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"Nenhuma mensagem no removida.\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tinsere uma linha com um nico ~\\n\"\n\"~b usurios\\tadiciona os usurios ao campo Bcc:\\n\"\n\"~c usurios\\tadiciona os usurios ao campo Cc:\\n\"\n\"~f mensagens\\tinclui as mensagens\\n\"\n\"~F mensagens\\to mesmo que ~f, mas tambm inclui os cabealhos\\n\"\n\"~h\\t\\tedita o cabealho da mensagem\\n\"\n\"~m mensagens\\tinclui e cita as mensagens\\n\"\n\"~M mensagens\\to mesmo que ~m, mas tambm inclui os cabealhos\\n\"\n\"~p\\t\\timprime a mensagem\\n\"\n\"~q\\t\\tgrava o arquivo e sai do editor\\n\"\n\"~r arquivo\\tl um arquivo no editor\\n\"\n\"~t usurios\\tadiciona os usurios ao campo To:\\n\"\n\"~u\\t\\tvolta  linha anterior\\n\"\n\"~w arquivo\\tescreve a mensagem no arquivo\\n\"\n\"~x\\t\\tcancela as mudanas e sai do editor\\n\"\n\"?\\t\\testa mensagagem\\n\"\n\".\\t\\tsozinho em uma linha termina a mensagem\\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\tinsere uma linha com um nico ~\\n\"\n\"~b usurios\\tadiciona os usurios ao campo Bcc:\\n\"\n\"~c usurios\\tadiciona os usurios ao campo Cc:\\n\"\n\"~f mensagens\\tinclui as mensagens\\n\"\n\"~F mensagens\\to mesmo que ~f, mas tambm inclui os cabealhos\\n\"\n\"~h\\t\\tedita o cabealho da mensagem\\n\"\n\"~m mensagens\\tinclui e cita as mensagens\\n\"\n\"~M mensagens\\to mesmo que ~m, mas tambm inclui os cabealhos\\n\"\n\"~p\\t\\timprime a mensagem\\n\"\n\"~q\\t\\tgrava o arquivo e sai do editor\\n\"\n\"~r arquivo\\tl um arquivo no editor\\n\"\n\"~t usurios\\tadiciona os usurios ao campo To:\\n\"\n\"~u\\t\\tvolta  linha anterior\\n\"\n\"~w arquivo\\tescreve a mensagem no arquivo\\n\"\n\"~x\\t\\tcancela as mudanas e sai do editor\\n\"\n\"?\\t\\testa mensagagem\\n\"\n\".\\t\\tsozinho em uma linha termina a mensagem\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: nmero de mensagem ivlido.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Termine a mensagem com um . sozinho em uma linha)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Nenhuma caixa de mensagens.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Mensagem contm:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(continuar)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"falta o nome do arquivo.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Nenhuma linha na mensagem.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: comando de editor desconhecido (~? para ajuda)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"No foi possvel criar o arquivo temporrio: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"No foi possvel criar a caixa temporria: %s\"\n\n#: editmsg.c:110\n#, fuzzy, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"No foi possvel criar a caixa temporria: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"O arquivo de mensagens est vazio.\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Mensagem no modificada!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"No  possvel abrir o arquivo de mensagens: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"No  possvel anexar  pasta: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Erro. Preservando o arquivo temporrio: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Atribui marca\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Limpa marca\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Erro: No foi possvel exibir nenhuma parte de Multipart/Aternative! \"\n\"--]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Anexo No.%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Tipo: %s/%s, Codificao: %s, Tamanho: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Autovisualizar usando %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Executando comando de autovisualizao: %s\"\n\n#: handler.c:1366\n#, fuzzy, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- em %s --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Sada de erro da autovisualizao de %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Erro: message/external-body no tem nenhum parmetro access-type --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Este anexo %s/%s \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(tamanho %s bytes) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"foi apagado --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- em %s --]\\n\"\n\n#: handler.c:1485\n#, fuzzy, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- em %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, fuzzy, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Este anexo %s/%s \"\n\n#: handler.c:1500\n#, fuzzy\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- Este anexo %s/%s no est includdo, e --]\\n\"\n\"[-- a fonte externa indicada j expirou.   --]\\n\"\n\n#: handler.c:1518\n#, fuzzy, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"\"\n\"[-- Este anexo %s/%s no est includo, e o --]\\n\"\n\"[-- tipo de acesso %s no  aceito.         --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"No foi possvel abrir o arquivo temporrio!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Erro: multipart/signed no tem protocolo.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Este anexo %s/%s \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s no  aceito \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(use '%s' para ver esta parte)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"('view-attachments' precisa estar associado a uma tecla!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: no foi possvel anexar o arquivo\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ERRO: por favor relate este problema\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<DESCONHECIDO>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Associaes genricas:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Funes sem associao:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Ajuda para %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: tipo de gancho desconhecido: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\n#, fuzzy\nmsgid \"No authenticators available\"\nmsgstr \"Autenticao GSSAPI falhou.\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Autenticando (annimo)...\"\n\n#: imap/auth_anon.c:73\n#, fuzzy\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Autenticao annima no  aceita.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Autenticando (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"Autenticao CRAM-MD5 falhou.\"\n\n#: imap/auth_gss.c:145\n#, fuzzy\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Autenticando (CRAM-MD5)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"Autenticao GSSAPI falhou.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Efetuando login...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Login falhou.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, fuzzy, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Autenticando (CRAM-MD5)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\n#, fuzzy\nmsgid \"SASL authentication failed.\"\nmsgstr \"Autenticao GSSAPI falhou.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Obtendo lista de pastas...\"\n\n#: imap/browse.c:189\n#, fuzzy\nmsgid \"No such folder\"\nmsgstr \"%s: no existe tal cor\"\n\n#: imap/browse.c:278\n#, fuzzy\nmsgid \"Create mailbox: \"\nmsgstr \"Abrir caixa de correio\"\n\n#: imap/browse.c:283 imap/browse.c:338\n#, fuzzy\nmsgid \"Mailbox must have a name.\"\nmsgstr \"A caixa de mensagens no sofreu mudanas\"\n\n#: imap/browse.c:291\n#, fuzzy\nmsgid \"Mailbox created.\"\nmsgstr \"Caixa de correio removida.\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Abrir caixa de correio\"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Login falhou.\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"Caixa de correio removida.\"\n\n#: imap/command.c:446\n#, fuzzy\nmsgid \"Mailbox closed\"\nmsgstr \"Caixa de correio removida.\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"Login falhou.\"\n\n#: imap/imap.c:189\n#, fuzzy, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Fechando a conexo com o servidor IMAP...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Este servidor IMAP  pr-histrico. Mutt no funciona com ele.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"\"\n\n#: imap/imap.c:459 pop_lib.c:336\n#, fuzzy\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Chave de Sesso Encriptada\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Selecionando %s...\"\n\n#: imap/imap.c:756\n#, fuzzy\nmsgid \"Error opening mailbox\"\nmsgstr \"Erro ao gravar a caixa!\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Criar %s?\"\n\n#: imap/imap.c:1183\n#, fuzzy\nmsgid \"Expunge failed\"\nmsgstr \"Login falhou.\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Marcando %d mensagens como removidas...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Salvando marcas de estado das mensagens... [%d de %d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"Erro ao interpretar endereo!\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Apagando mensagens do servidor...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\n#, fuzzy\nmsgid \"Bad mailbox name\"\nmsgstr \"Abrir caixa de correio\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Assinando %s...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Cancelando assinatura de %s...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Assinando %s...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Cancelando assinatura de %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"No foi possvel obter cabealhos da verso deste servidor IMAP.\"\n\n#: imap/message.c:108\n#, fuzzy, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"No foi possvel criar um arquivo temporrio!\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"Obtendo cabealhos das mensagens... [%d de %d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"Obtendo cabealhos das mensagens... [%d de %d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Obtendo mensagem...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"Enviando mensagem ...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Copiando %d mensagens para %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Copiando mensagem %d para %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Continuar?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"No disponvel neste menu.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \"marca mensagens que casem com um padro\"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"desmarca mensagens que casem com um padro\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"edita a descrio do anexo\"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"edita a descrio do anexo\"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"edita a descrio do anexo\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"apelido: sem endereo\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"campo de cabealho invlido\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: mtodo de ordenao desconhecido\"\n\n#: init.c:1592\n#, fuzzy, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default: erro na expresso regular: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: varivel desconhecida\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"prefixo  ilegal com reset\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"valor  ilegal com reset\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s est atribuda\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s no est atribuda\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Dia do ms invlido: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: tipo de caixa invlido\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: valor invlido\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: valor invlido\"\n\n#: init.c:2183\n#, fuzzy, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: tipo invlido\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: tipo invlido\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Erro em %s, linha %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: erros em %s\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: erro em %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: muitos argumentos\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: comando desconhecido\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Erro na linha de comando: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"no foi possvel determinar o diretrio do usurio\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"no foi possvel determinar o nome do usurio\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"no foi possvel determinar o nome do usurio\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"poucos argumentos\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Lao de macro detectado.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Tecla no associada.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Tecla no associada. Pressione '%s' para ajuda.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: muitos argumentos\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: no existe tal menu\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"seqncia de teclas nula\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: muitos argumentos\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: no existe tal funo no mapa\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: seqncia de teclas vazia\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: muitos argumentos\"\n\n#: keymap.c:1091\n#, fuzzy\nmsgid \"exec: no arguments\"\nmsgstr \"exec: poucos argumentos\"\n\n#: keymap.c:1111\n#, fuzzy, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: no existe tal funo no mapa\"\n\n#: keymap.c:1132\n#, fuzzy\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Entre a keyID para %s: \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Acabou a memria!\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Para contactar os programadores, envie uma mensagem para <mutt-dev@mutt.\"\n\"org>.\\n\"\n\"Para relatar um problema, por favor use o programa muttbug.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2000 Michael R. Elkins e outros.\\n\"\n\"Mutt vem sem NENHUMA GARANTIA; para mais detalhes digite `mutt -vv'.\\n\"\n\"Mutt  um programa livre, e voc  encorajado a redistribu-lo\\n\"\n\"sob certas condies; digite `mutt -vv' para os detalhes.\\n\"\n\"\\n\"\n\"Traduo para a lngua portuguesa:\\n\"\n\"Marcus Brito <marcus@visaotec.com.br>\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"uso: mutt [ -nRzZ ] [ -e <cmd> ] [ -F <arq> ] [ -m <tipo> ] [ -f <arq> ]\\n\"\n\"       mutt [ -nx ] [ -e <cmd> ] [ -a <arq> ] [ -F <arq> ] [ -H <arq> ] [ -i \"\n\"<arq> ] [ -s <asst> ] [ -b <end> ] [ -c <end> ] <end> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <cmd> ] [ -F <arq> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"opes:\\n\"\n\"  -a <arquivo>\\tanexa um arquivo  mensagem\\n\"\n\"  -b <endereo>\\tespecifica um endereo de cpia escondica (BCC)\\n\"\n\"  -c <endereo>\\tespecifica um endereo de cpia (CC)\\n\"\n\"  -e <comando>\\tespecifica um comando a ser executado depois a \"\n\"inicializao\\n\"\n\"  -f <arquivo>\\tespecifica qual caixa de mensagens abrir\\n\"\n\"  -F <arquivo>\\tespecifica um arquivo muttrc alternativo\\n\"\n\"  -H <arquivo>\\tespecifica um rascunho de onde ler cabealhos\\n\"\n\"  -i <arquivo>\\tespecifica um arquivo que o Mutt deve incluir na resposta\\n\"\n\"  -m <tipo>\\tespecifica o tipo padro de caixa de mensagens\\n\"\n\"  -n\\t\\tfaz com que o Mutt no leia o Muttrc do sistema\\n\"\n\"  -p\\t\\tedita uma mensagem adiada\\n\"\n\"  -R\\t\\tabre a caixa de mensagens em modo de somente leitura\\n\"\n\"  -s <assunto>\\tespecifica um assunto (entre aspas se tiver espaos)\\n\"\n\"  -v\\t\\tmostra a verso e definies de compilao\\n\"\n\"  -x\\t\\tsimula o modo de envio do mailx\\n\"\n\"  -y\\t\\tescolhe uma caixa na sua lista `mailboxes'\\n\"\n\"  -z\\t\\tsai imediatamente se no houverem mensagens na caixa\\n\"\n\"  -Z\\t\\tabre a primeira pasta com novas mensagens, sai se no houver\\n\"\n\"  -h\\t\\testa mensagem de ajuda\"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"uso: mutt [ -nRzZ ] [ -e <cmd> ] [ -F <arq> ] [ -m <tipo> ] [ -f <arq> ]\\n\"\n\"       mutt [ -nx ] [ -e <cmd> ] [ -a <arq> ] [ -F <arq> ] [ -H <arq> ] [ -i \"\n\"<arq> ] [ -s <asst> ] [ -b <end> ] [ -c <end> ] <end> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <cmd> ] [ -F <arq> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"opes:\\n\"\n\"  -a <arquivo>\\tanexa um arquivo  mensagem\\n\"\n\"  -b <endereo>\\tespecifica um endereo de cpia escondica (BCC)\\n\"\n\"  -c <endereo>\\tespecifica um endereo de cpia (CC)\\n\"\n\"  -e <comando>\\tespecifica um comando a ser executado depois a \"\n\"inicializao\\n\"\n\"  -f <arquivo>\\tespecifica qual caixa de mensagens abrir\\n\"\n\"  -F <arquivo>\\tespecifica um arquivo muttrc alternativo\\n\"\n\"  -H <arquivo>\\tespecifica um rascunho de onde ler cabealhos\\n\"\n\"  -i <arquivo>\\tespecifica um arquivo que o Mutt deve incluir na resposta\\n\"\n\"  -m <tipo>\\tespecifica o tipo padro de caixa de mensagens\\n\"\n\"  -n\\t\\tfaz com que o Mutt no leia o Muttrc do sistema\\n\"\n\"  -p\\t\\tedita uma mensagem adiada\\n\"\n\"  -R\\t\\tabre a caixa de mensagens em modo de somente leitura\\n\"\n\"  -s <assunto>\\tespecifica um assunto (entre aspas se tiver espaos)\\n\"\n\"  -v\\t\\tmostra a verso e definies de compilao\\n\"\n\"  -x\\t\\tsimula o modo de envio do mailx\\n\"\n\"  -y\\t\\tescolhe uma caixa na sua lista `mailboxes'\\n\"\n\"  -z\\t\\tsai imediatamente se no houverem mensagens na caixa\\n\"\n\"  -Z\\t\\tabre a primeira pasta com novas mensagens, sai se no houver\\n\"\n\"  -h\\t\\testa mensagem de ajuda\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Opes de compilao:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Erro ao inicializar terminal.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Depurando no nvel %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG no foi definido durante a compilao. Ignorado.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s no existe. Devo cri-lo?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"No  possvel criar %s: %s\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Nenhum destinatrio foi especificado.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: no foi possvel anexar o arquivo.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Nenhuma caixa com novas mensagens.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Nenhuma caixa de mensagem para recebimento definida.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"A caixa de mensagens est vazia.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Lendo %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"A caixa de mensagens est corrompida!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"A caixa de mensagens foi corrompida!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Erro fatal! No foi posssvel reabrir a caixa de mensagens!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"No foi possvel travar a caixa de mensagens!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: mbox modificada, mas nenhuma mensagem modificada! (relate este \"\n\"problema)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Gravando %s...\"\n\n#: mbox.c:962\n#, fuzzy\nmsgid \"Committing changes...\"\nmsgstr \"Compilando padro de busca...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Erro de gravao! Caixa parcial salva em %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"No foi possvel reabrir a caixa de mensagens!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Reabrindo caixa de mensagens...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Pular para: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Nmero de ndice invlido.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Nenhuma entrada.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Voc no pode mais descer.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Voc no pode mais subir\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Voc est na primeira pgina\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Voc est na ltima pgina.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Voc est na ltima entrada.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Voc est na primeira entrada.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Procurar por: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Procurar de trs para frente por: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"No encontrado.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Nenhuma entrada marcada.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"A busca no est implementada neste menu.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"O pulo no est implementado em dilogos.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"No  possvel marcar.\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Selecionando %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"No foi possvel enviar a mensagem.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"erro no padro em: %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, fuzzy, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Conectando a %s...\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"\"\n\n#: mutt_socket.c:332\n#, fuzzy\nmsgid \"Preconnect command failed.\"\nmsgstr \"comando de pr-conexo falhou\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, fuzzy, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Conectando a %s\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, fuzzy, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Copiando para %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, fuzzy, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"No foi possvel encontrar o endereo do servidor %s.\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Conectando a %s...\"\n\n#: mutt_socket.c:576\n#, fuzzy, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"No foi possvel abrir %s\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"\"\n\n#: mutt_ssl.c:418\n#, fuzzy, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"Login falhou.\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"No foi possvel obter o certificado do servidor remoto\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"Conexo SSL usando %s\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Desconhecido\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[impossvel calcular]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\n#, fuzzy\nmsgid \"[invalid date]\"\nmsgstr \"%s: valor invlido\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"\"\n\n#: mutt_ssl.c:719\n#, fuzzy\nmsgid \"Server certificate has expired\"\nmsgstr \"Este certificado foi emitido por:\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"No foi possvel obter o certificado do servidor remoto\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"No foi possvel obter o certificado do servidor remoto\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Certificado salvo\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Este certificado pertence a:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Este certificado foi emitido por:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, fuzzy, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Este certificado foi emitido por:\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Impresso digital: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r)ejeitar, (a)ceitar uma vez, aceitar (s)empre\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"ras\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r)ejeitar, (a)ceitar uma vez\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ra\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Aviso: No foi possvel salvar o certificado\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Certificado salvo\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"Conexo SSL usando %s\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Erro ao inicializar terminal.\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Impresso digital: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Impresso digital: %s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"Este certificado foi emitido por:\"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"Este certificado foi emitido por:\"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"Este certificado foi emitido por:\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \"Certificado salvo\"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Conectando a %s...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Conectando a %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\n#, fuzzy\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"O arquivo  um diretrio, salvar l?\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"O arquivo  um diretrio, salvar l?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Arquivo no diretrio: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Arquivo existe, (s)obrescreve, (a)nexa ou (c)ancela?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"sac\"\n\n#: muttlib.c:1507\n#, fuzzy\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Gravar mensagem na caixa\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Anexa mensagens a %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s no  uma caixa de mensagens!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Limite de travas excedido, remover a trava para %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"No  possvel travar %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Limite de tempo excedido durante uma tentativa de trava com fcntl!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Esperando pela trava fcntl... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Limite de tempo excedido durante uma tentativa trava com flock!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Esperando pela tentativa de flock... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"No foi possvel travar %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"No foi possvel sincronizar a caixa %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Mover mensagens lidas para %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Remover %d mensagem apagada?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Remover %d mensagens apagadas?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Movendo mensagens lidas para %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"A caixa de mensagens no sofreu mudanas\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d mantidas, %d movidas, %d apagadas.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d mantidas, %d apagadas.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Pressione '%s' para trocar entre gravar ou no\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Use 'toggle-write' para reabilitar a gravao!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"A caixa est marcada como no gravvel. %s\"\n\n#: mx.c:1155\n#, fuzzy\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Caixa de correio removida.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"No foi possvel gravar a mensagem\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"PagAnt\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"ProxPag\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Ver Anexo\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Prox\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"O fim da mensagem est sendo mostrado.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"O incio da mensagem est sendo mostrado.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"A ajuda est sendo mostrada.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"No h mais texto citado.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"No h mais texto no-citado aps o texto citado.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"mensagem multiparte no tem um parmetro de fronteiras!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Erro na expresso: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"erro na expresso\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Dia do ms invlido: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Ms invlido: %s\"\n\n#: pattern.c:570\n#, fuzzy, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Ms invlido: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"erro no padro em: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"faltam parmetros\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"parntese sem um corresponente: %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: comando invlido\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: no  possvel neste modo\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"faltam parmetros\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"parntese sem um corresponente: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"padro vazio\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"erro: operao %d desconhecida (relate este erro).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Compilando padro de busca...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Executando comando nas mensagens que casam...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Nenhuma mensagem casa com o critrio\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"Salvando...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"A busca chegou ao fim sem encontrar um resultado\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"A busca chegou ao incio sem encontrar um resultado\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Busca interrompida.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Entre a senha do PGP:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Senha do PGP esquecida.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Erro: no foi possvel criar o subprocesso do PGP! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fim da sada do PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Erro: no foi possvel criar um subprocesso para o PGP! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"Login falhou.\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"No foi possvel abrir o subprocesso do PGP!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"No foi possvel executar o PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"esncaq\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"esncaq\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"esncaq\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, em l(i)nha, ou es(q)uece? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"esncaq\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Obtendo chave PGP...\"\n\n#: pgpkey.c:491\n#, fuzzy\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Esta chave no pode ser usada: expirada/desabilitada/revogada.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"Chaves do PGP que casam com <%s>. \"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"Chaves do PGP que casam com \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"No foi possvel abrir /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Chave do PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, fuzzy, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"No  possvel marcar.\"\n\n#: pop.c:129\n#, fuzzy\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"No foi possvel criar um arquivo temporrio\"\n\n#: pop.c:276 pop_lib.c:212\n#, fuzzy, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"No  possvel marcar.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"\"\n\n#: pop.c:454\n#, fuzzy\nmsgid \"Fetching list of messages...\"\nmsgstr \"Obtendo mensagem...\"\n\n#: pop.c:612\n#, fuzzy\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"No foi possvel criar um arquivo temporrio\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"Marcando %d mensagens como removidas...\"\n\n#: pop.c:756 pop.c:821\n#, fuzzy\nmsgid \"Checking for new messages...\"\nmsgstr \"Preparando mensagem encaminhada...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"Servidor POP no est definido.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Nenhuma mensagem nova no servidor POP.\"\n\n#: pop.c:856\n#, fuzzy\nmsgid \"Delete messages from server?\"\nmsgstr \"Apagando mensagens do servidor...\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Lendo novas mensagens (%d bytes)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Erro ao gravar a caixa!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d de %d mensagens lidas]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"O servidor fechou a conexo!\"\n\n#: pop_auth.c:79\n#, fuzzy\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Autenticando (CRAM-MD5)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\n#, fuzzy\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Autenticando (CRAM-MD5)...\"\n\n#: pop_auth.c:231\n#, fuzzy\nmsgid \"APOP authentication failed.\"\nmsgstr \"Autenticao GSSAPI falhou.\"\n\n#: pop_auth.c:266\n#, fuzzy, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"No  possvel marcar.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Ms invlido: %s\"\n\n#: pop_lib.c:208\n#, fuzzy\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Apagando mensagens do servidor...\"\n\n#: pop_lib.c:238\n#, fuzzy, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Conectando a %s\"\n\n#: pop_lib.c:392\n#, fuzzy\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Fechando a conexo com o servidor IMAP...\"\n\n#: pop_lib.c:571\n#, fuzzy\nmsgid \"Verifying message indexes...\"\nmsgstr \"Gravando mensagem em %s...\"\n\n#: pop_lib.c:593\n#, fuzzy\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Fechando a conexo com o servidor IMAP...\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Mensagens Adiadas\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Nenhuma mensagem adiada.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"Cabealho de PGP ilegal\"\n\n#: postpone.c:496\n#, fuzzy\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Cabealho de S/MIME ilegal\"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"Obtendo mensagem...\"\n\n#: postpone.c:592\n#, fuzzy\nmsgid \"Decryption failed.\"\nmsgstr \"Login falhou.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nova Consulta\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Criar Apelido\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Busca\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Agurdando pela resposta...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Comando de consulta no definido.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Consulta\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Consulta: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Consulta '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Cano\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Imprimir\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Salvando...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Anexo salvo.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"AVISO! Voc est prestes a sobrescrever %s, continuar?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Anexo filtrado.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtrar atravs de: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Passar por cano a: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Eu no sei como imprimir anexos %s!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Imprimir anexo(s) marcado(s)?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Imprimir anexo?\"\n\n#: recvattach.c:1009\n#, fuzzy\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"No foi encontrada nenhuma mensagem marcada.\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Anexos\"\n\n#: recvattach.c:1057\n#, fuzzy\nmsgid \"There are no subparts to show!\"\nmsgstr \"No h anexos.\"\n\n#: recvattach.c:1118\n#, fuzzy\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"obtm mensagens do servidor POP\"\n\n#: recvattach.c:1126\n#, fuzzy\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Deleo de anexos de mensagens PGP no  suportada\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Deleo de anexos de mensagens PGP no  suportada\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Somente a deleo de anexos multiparte  suportada.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Voc s pode repetir partes message/rfc822\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing message!\"\nmsgstr \"Erro ao enviar mensagem.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing messages!\"\nmsgstr \"Erro ao enviar mensagem.\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"No foi possvel abrir o arquivo temporrio %s.\"\n\n#: recvcmd.c:472\n#, fuzzy\nmsgid \"Forward as attachments?\"\nmsgstr \"mostra anexos MIME\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"No foi possvel decodificar todos os anexos marcados.\\n\"\n\"Encaminhar os demais atravs de MIME?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Encaminhar encapsulado em MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"No  possvel criar %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"No foi encontrada nenhuma mensagem marcada.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Nenhuma lista de email encontrada!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"No foi possvel decodificar todos os anexos marcados.\\n\"\n\"Encapsular os demais atravs de MIME?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Anexar\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Inserir\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Remover\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"No foi possvel obter o type2.list do mixmaster!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Escolha uma sequncia de reenviadores.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Erro: %s no pode ser usado como reenviador final de uma sequncia.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Sequncias do mixmaster so limitadas a %d elementos.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"A sequncia de reenviadores j est vazia.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"O primeiro elemento da sequncia j est selecionado.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"O ltimo elemento da sequncia j est selecionado.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"O mixmaster no aceita cabealhos Cc ou Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Por favor, defina a varivel hostname para um valor adequado quando for\\n\"\n\"usar o mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Erro ao enviar mensagem, processo filho terminou com cdigo %d\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Erro ao enviar mensagem.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Entrada mal formatada para o tipo %s em \\\"%s\\\" linha %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Nenhum caminho de mailcap especificado\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"entrada no mailcap para o tipo %s no foi encontrada.\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: poucos argumentos\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: muitos argumentos\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Sem assunto, cancelar?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Sem assunto, cancelado.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Responder para %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Responder para %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Nenhuma mensagem marcada est visvel!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Incluir mensagem na resposta?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Enviando mensagem citada...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"No foi possvel incluir todas as mensagens solicitadas!\"\n\n#: send.c:795\n#, fuzzy\nmsgid \"Forward as attachment?\"\nmsgstr \"Imprimir anexo?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Preparando mensagem encaminhada...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Editar mensagem adiada?\"\n\n#: send.c:1426\n#, fuzzy\nmsgid \"Edit forwarded message?\"\nmsgstr \"Preparando mensagem encaminhada...\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Cancelar mensagem no modificada?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Mensagem no modificada cancelada.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Mensagem adiada.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Nenhum destinatrio est especificado!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Nenhum destinatrio foi especificado.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Sem assunto, cancelar envio?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Nenhum assunto especificado.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Enviando mensagem...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"ver anexo como texto\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"No foi possvel enviar a mensagem.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Mensagem enviada.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Enviando em segundo plano.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Nenhum parmetro de fronteira encontrado! [relate este erro]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s no mais existe!\"\n\n#: sendlib.c:878\n#, fuzzy, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s no  uma caixa de correio.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"No foi possvel abrir %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Erro ao enviar a mensagem, processo filho saiu com cdigo %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Sada do processo de entrega\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s... Saindo.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"%s recebido... Saindo.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Sinal %d recebido... Saindo.\\n\"\n\n#: smime.c:141\n#, fuzzy\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Entre a senha do S/MIME:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"\"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"\"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"\"\n\n#: smime.c:388\n#, fuzzy\nmsgid \"Expired   \"\nmsgstr \"Sair  \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"\"\n\n#: smime.c:394\n#, fuzzy\nmsgid \"Invalid   \"\nmsgstr \"Ms invlido: %s\"\n\n#: smime.c:397\n#, fuzzy\nmsgid \"Unknown   \"\nmsgstr \"Desconhecido\"\n\n#: smime.c:429\n#, fuzzy, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Chaves do S/MIME que casam com \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"Este ID no  de confiana.\"\n\n#: smime.c:761\n#, fuzzy\nmsgid \"Enter keyID: \"\nmsgstr \"Entre a keyID para %s: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\n#, fuzzy\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"[-- Erro: no foi possvel criar o subprocesso do OpenSSL! --]\\n\"\n\n#: smime.c:1320\n#, fuzzy\nmsgid \"no certfile\"\nmsgstr \"No  possvel criar o filtro.\"\n\n#: smime.c:1323\n#, fuzzy\nmsgid \"no mbox\"\nmsgstr \"(nenhuma caixa de mensagens)\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\n#, fuzzy\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"No foi possvel abrir o subprocesso do OpenSSL!\"\n\n#: smime.c:1791 smime.c:1914\n#, fuzzy\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fim da sada do OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\n#, fuzzy\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Erro: no foi possvel criar o subprocesso do OpenSSL! --]\\n\"\n\n#: smime.c:1918\n#, fuzzy\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"\"\n\"[-- Os dados a seguir esto encriptados com S/MIME --]\\n\"\n\"\\n\"\n\n#: smime.c:1921\n#, fuzzy\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"\"\n\"[-- Os dados a seguir esto assinados --]\\n\"\n\"\\n\"\n\n#: smime.c:1985\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fim dos dados encriptados com S/MIME --]\\n\"\n\n#: smime.c:1987\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Fim dos dados assinados --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, e(n)cripa com, assina (c)omo, (a)mbos, ou es(q)uece? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, e(n)cripa com, assina (c)omo, (a)mbos, ou es(q)uece? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"esncaq\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"(e)ncripa, a(s)sina, e(n)cripa com, assina (c)omo, (a)mbos, ou es(q)uece? \"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"esncaq\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Login falhou.\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Login falhou.\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Ms invlido: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"Autenticao GSSAPI falhou.\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"Autenticao GSSAPI falhou.\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"Autenticao GSSAPI falhou.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Ordenando caixa...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"\"\n\"No foi possvel encontrar a funo de ordenao! [relate este problema]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(nenhuma caixa de mensagens)\"\n\n#: thread.c:1095\n#, fuzzy\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"A mensagem pai no est visvel nesta viso limitada\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"A mensagem pai no est disponvel.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"operao nula\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"forar a visualizado do anexo usando o mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"ver anexo como texto\"\n\n#: ../keymap_alldefs.h:9\n#, fuzzy\nmsgid \"Toggle display of subparts\"\nmsgstr \"troca entre mostrar texto citado ou no\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"anda at o fim da pgina\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"re-envia uma mensagem para outro usurio\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"escolhe um novo arquivo neste diretrio\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"v arquivo\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"mostra o nome do arquivo atualmente selecionado\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"assina  caixa de correio atual (s para IMAP)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"cancela assinatura da caixa atual (s para IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"troca ver todas as caixas/s as inscritas (s para IMAP)\"\n\n#: ../keymap_alldefs.h:18\n#, fuzzy\nmsgid \"list mailboxes with new mail\"\nmsgstr \"Nenhuma caixa com novas mensagens.\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"muda de diretrio\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"verifica se h novas mensagens na caixa\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"anexa um(ns) arquivo(s)  esta mensagem\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"anexa uma(s) mensagem(ns)  esta mensagem\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"edita a lista de Cpias Escondidas (BCC)\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"edita a lista de Cpias (CC)\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"edita a descrio do anexo\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"edita o cdigo de transferncia do anexo\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"informe um arquivo no qual salvar uma cpia desta mensagem\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"edita o arquivo a ser anexado\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"edita o campo From\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"edita a mensagem e seus cabealhos\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"edita a mensagem\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"edita o anexo usando sua entrada no mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"edita o campo Reply-To\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"edita o assunto desta mensagem\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"edita a lista de Destinatrios (To)\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"cria uma nova caixa de correio (s para IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"edita o tipo de anexo\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"obtm uma cpia temporria do anexo\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"executa o ispell na mensagem\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"compe um novo anexo usando a entrada no mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"ativa/desativa recodificao deste anexo\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"salva esta mensagem para ser enviada depois\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"renomeia/move um arquivo anexado\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"envia a mensagem\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"troca a visualizao de anexos/em linha\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"troca entre apagar o arquivo aps envi-lo ou no\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"atualiza a informao de codificao de um anexo\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"grava a mensagem em uma pasta\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"copia uma mensagem para um arquivo/caixa\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"cria um apelido a partir do remetente de uma mensagem\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"move a entrada para o fundo da tela\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"move a entrada para o meio da tela\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"move a entrada para o topo da tela\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"cria uma cpia decodificada (text/plain)\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"cria uma cpia decodificada (text/plain) e apaga\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"apaga a entrada atual\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"apaga a caixa de correio atual (s para IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"apaga todas as mensagens na sub-discusso\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"apaga todas as mensagens na discusso\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"mostra o endereo completo do remetente\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"mostra a mensagem e ativa/desativa poda de cabealhos\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"mostra uma mensagem\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"edita a mensagem pura\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"apaga o caractere na frente do cursor\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"move o cursor um caractere para a esquerda\"\n\n#: ../keymap_alldefs.h:66\n#, fuzzy\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"pula para o incio da linha\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"pula para o incio da linha\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"circula entre as caixas de mensagem\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"completa um nome de arquivo ou apelido\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"completa um endereo com uma pesquisa\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"apaga o caractere sob o cursor\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"pula para o final da linha\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"move o cursor um caractere para a direita\"\n\n#: ../keymap_alldefs.h:74\n#, fuzzy\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"move o cursor um caractere para a direita\"\n\n#: ../keymap_alldefs.h:75\n#, fuzzy\nmsgid \"scroll down through the history list\"\nmsgstr \"volta uma pgina no histrico\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"volta uma pgina no histrico\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"apaga os caracteres a partir do cursor at o final da linha\"\n\n#: ../keymap_alldefs.h:78\n#, fuzzy\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"apaga os caracteres a partir do cursor at o final da linha\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"apaga todos os caracteres na linha\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"apaga a palavra em frente ao cursor\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"pe a prxima tecla digitada entre aspas\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:84\n#, fuzzy\nmsgid \"convert the word to lower case\"\nmsgstr \"anda at o fim da pgina\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"entra um comando do muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"entra uma mscara de arquivos\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"sai deste menu\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtra o anexo atravs de um comando do shell\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"anda at a primeira entrada\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"troca a marca 'importante' da mensagem\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"encaminha uma mensagem com comentrios\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"seleciona a entrada atual\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"responde a todos os destinatrios\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"passa meia pgina\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"volta meia pgina\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"esta tela\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"pula para um nmero de ndice\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"anda at a ltima entrada\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"responde  lista de email especificada\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"executa um macro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"compe uma nova mensagem eletrnica\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"abre uma pasta diferente\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"abre uma pasta diferente somente para leitura\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"retira uma marca de estado de uma mensagem\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"apaga mensagens que casem com um padro\"\n\n#: ../keymap_alldefs.h:108\n#, fuzzy\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"obtm mensagens do servidor POP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"obtm mensagens do servidor POP\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"anda at a primeira mensagem\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"anda at a ltima mensagem\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"mostra somente mensagens que casem com um padro\"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"Repetir mensagens marcadas para: \"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Nenhuma caixa com novas mensagens.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"pula para a prxima mensagem nova\"\n\n#: ../keymap_alldefs.h:117\n#, fuzzy\nmsgid \"jump to the next new or unread message\"\nmsgstr \"pula para a prxima mensagem no lida\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"pula para a prxima sub-discusso\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"pula para a prxima discusso\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"anda at a prxima mensagem no apagada\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"pula para a prxima mensagem no lida\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"pula para a mensagem pai na discusso\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"pula para a discusso anterior\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"pula para a sub-discusso anterior\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"anda at a mensagem no apagada anterior\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"pula para a mensagem nova anterior\"\n\n#: ../keymap_alldefs.h:127\n#, fuzzy\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"pula para a mensagem no lida anterior\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"pula para a mensagem no lida anterior\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"marca a discusso atual como lida\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"marca a sub-discusso atual como lida\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"atribui uma marca de estado em uma mensagem\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"salva as mudanas  caixa\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"marca mensagens que casem com um padro\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"restaura mensagens que casem com um padro\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"desmarca mensagens que casem com um padro\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"anda at o meio da pgina\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"anda at a prxima entrada\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"desce uma linha\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"anda at a prxima pgina\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"pula para o fim da mensagem\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"troca entre mostrar texto citado ou no\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"pula para depois do texto citado\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"volta para o incio da mensagem\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"passa a mensagem/anexo para um comando do shell atravs de um cano\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"anda at a entrada anterior\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"sobe uma linha\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"anda at a pgina anterior\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"imprime a entrada atual\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"executa uma busca por um endereo atravs de um programa externo\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"anexa os resultados da nova busca aos resultados atuais\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"salva mudanas  caixa e sai\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"edita uma mensagem adiada\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"limpa e redesenha a tela\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{interno}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"apaga a caixa de correio atual (s para IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"responde a uma mensagem\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"usa a mensagem atual como modelo para uma nova mensagem\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"salva mensagem/anexo em um arquivo\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"procura por uma expresso regular\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"procura de trs para a frente por uma expresso regular\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"procura pelo prximo resultado\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"procura pelo prximo resultado na direo oposta\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"troca entre mostrar cores nos padres de busca ou no\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"executa um comando em um subshell\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"ordena mensagens\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"ordena mensagens em ordem reversa\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"marca a entrada atual\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"aplica a prxima funo s mensagens marcadas\"\n\n#: ../keymap_alldefs.h:169\n#, fuzzy\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"aplica a prxima funo s mensagens marcadas\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"marca a sub-discusso atual\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"marca a discusso atual\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"troca a marca 'nova' de uma mensagem\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"troca entre reescrever a caixa ou no\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"troca entre pesquisar em caixas ou em todos os arquivos\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"anda at o topo da pgina\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"restaura a entrada atual\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"restaura todas as mensagens na discusso\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"restaura todas as mensagens na sub-discusso\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"mostra o nmero e a data da verso do Mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"v anexo usando sua entrada no mailcap se necessrio\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"mostra anexos MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"mostra o padro limitante atualmente ativado\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"abre/fecha a discusso atual\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"abre/fecha todas as discusses\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"anexa uma chave pblica do PGP\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"mostra as opes do PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"envia uma chave pblica do PGP\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"verifica uma chave pblica do PGP\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"v a identificao de usurio da chave\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Aceita a sequncia construda\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Anexa um reenviador  sequncia\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Insere um reenviador  sequncia\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Remove um reenviador da sequncia\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Seleciona o elemento anterior da sequncia\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Seleciona o prximo elemento da sequncia\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"envia a mensagem atravs de uma sequncia de reenviadores mixmaster\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"cria cpia desencriptada e apaga\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"cria cpia desencriptada\"\n\n#: ../keymap_alldefs.h:201\n#, fuzzy\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"retira a senha do PGP da memria\"\n\n#: ../keymap_alldefs.h:202\n#, fuzzy\nmsgid \"extract supported public keys\"\nmsgstr \"extrai chaves pblicas do PGP\"\n\n#: ../keymap_alldefs.h:203\n#, fuzzy\nmsgid \"show S/MIME options\"\nmsgstr \"mostra as opes do S/MIME\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"Nenhuma mensagem no removida.\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" nesta viso limitada\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"Nenhuma mensagem no removida.\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"edita a mensagem\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"erro na expresso\"\n\n#, fuzzy\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Erro interno. Informe <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"pula para a mensagem pai na discusso\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Erro: mensagem PGP/MIME mal formada! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Erro: multipart/encrypted no tem nenhum parmetro de protocolo!\"\n\n#, fuzzy\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Usar keyID = \\\"%s\\\" para %s?\"\n\n#, fuzzy\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Usar keyID = \\\"%s\\\" para %s?\"\n\n#, fuzzy\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Aviso: No foi possvel salvar o certificado\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Nada\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"escaiq\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Nenhum padro de procura.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Busca reversa: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Busca: \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Erro ao enviar mensagem.\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"Verificao de certificado SSL\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"Verificao de certificado SSL\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Obtendo espaos de nomenclatura...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"uso: mutt [ -nRzZ ] [ -e <cmd> ] [ -F <arq> ] [ -m <tipo> ] [ -f <arq> ]\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <arq> ] [ -F <arq> ] [ -H <arq> ] \"\n#~ \"[ -i <arq> ] [ -s <asst> ] [ -b <end> ] [ -c <end> ] <end> [ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <arq> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"opes:\\n\"\n#~ \"  -a <arquivo>\\tanexa um arquivo  mensagem\\n\"\n#~ \"  -b <endereo>\\tespecifica um endereo de cpia escondica (BCC)\\n\"\n#~ \"  -c <endereo>\\tespecifica um endereo de cpia (CC)\\n\"\n#~ \"  -e <comando>\\tespecifica um comando a ser executado depois a \"\n#~ \"inicializao\\n\"\n#~ \"  -f <arquivo>\\tespecifica qual caixa de mensagens abrir\\n\"\n#~ \"  -F <arquivo>\\tespecifica um arquivo muttrc alternativo\\n\"\n#~ \"  -H <arquivo>\\tespecifica um rascunho de onde ler cabealhos\\n\"\n#~ \"  -i <arquivo>\\tespecifica um arquivo que o Mutt deve incluir na \"\n#~ \"resposta\\n\"\n#~ \"  -m <tipo>\\tespecifica o tipo padro de caixa de mensagens\\n\"\n#~ \"  -n\\t\\tfaz com que o Mutt no leia o Muttrc do sistema\\n\"\n#~ \"  -p\\t\\tedita uma mensagem adiada\\n\"\n#~ \"  -R\\t\\tabre a caixa de mensagens em modo de somente leitura\\n\"\n#~ \"  -s <assunto>\\tespecifica um assunto (entre aspas se tiver espaos)\\n\"\n#~ \"  -v\\t\\tmostra a verso e definies de compilao\\n\"\n#~ \"  -x\\t\\tsimula o modo de envio do mailx\\n\"\n#~ \"  -y\\t\\tescolhe uma caixa na sua lista `mailboxes'\\n\"\n#~ \"  -z\\t\\tsai imediatamente se no houverem mensagens na caixa\\n\"\n#~ \"  -Z\\t\\tabre a primeira pasta com novas mensagens, sai se no houver\\n\"\n#~ \"  -h\\t\\testa mensagem de ajuda\"\n\n#, fuzzy\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"Apagando mensagens do servidor...\"\n\n#, fuzzy\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"Apagando mensagens do servidor...\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"Lendo %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Gravando mensagens... %d(%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"Lendo %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Executando PGP...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Erro fatal. O nmero de mensagens est fora de sincronia!\"\n\n#, fuzzy\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"Login falhou.\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2000 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"Copyright (C) 1996-2000 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2000 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2000 Werner Kock     <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2000 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2000 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"\\n\"\n#~ \"Traduo para a Lngua Portuguesa por:\\n\"\n#~ \"Marcus Brito <marcus@visaotec.com.br>\\n\"\n#~ \"\\n\"\n#~ \"Muitos outros no mencionados aqui contriburam com bastante cdigo,\\n\"\n#~ \"ajustes e sugestes.\\n\"\n#~ \"\\n\"\n#~ \"    Este programa  software livre; voc pode redistribu-lo e/ou\\n\"\n#~ \"    modific-lo sob os termos da Licena Pblica Geral GNU como \"\n#~ \"publicada\\n\"\n#~ \"    pela Free Software Foundation, tanto na verso 2 da Licena ou ( \"\n#~ \"sua\\n\"\n#~ \"    escolha) qualquer outra verso posterior.\\n\"\n#~ \"\\n\"\n#~ \"    Este programa  distribudo na esperana de que ele seja til, mas\\n\"\n#~ \"    SEM NENHUMA GARANTIA, nem mesmo a garantia implcita de \"\n#~ \"COMERCIABILIDADE\\n\"\n#~ \"    ou FUNCIONALIDADE PARA UM DETERMINADO PROPSITO. Veja a Licena \"\n#~ \"Pblica\\n\"\n#~ \"    Geral da GNU para mais detalhes.\\n\"\n#~ \"\\n\"\n#~ \"    Voc deve ter recebido uma cpia da Licena Pblica Geral da GNU \"\n#~ \"junto\\n\"\n#~ \"    com este programa; caso contrrio, escreva para Free Software\\n\"\n#~ \"    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02138, USA.\\n\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"A primeira entrada est sendo mostrada.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"A ltima entrada est sendo mostrada.\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"No  possvel anexar a caixas IMAP neste servidor\"\n\n#, fuzzy\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"Criar uma mensagem application/pgp?\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"Impossvel consultar: %s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s no  uma caixa de correio.\"\n\n#, fuzzy\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"Executando OpenSSL...\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"Repetir mensagem para %s...?\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"Repetir mensagens para %s...?\"\n\n#, fuzzy\n#~ msgid \"ewsabf\"\n#~ msgstr \"escamq\"\n\n#, fuzzy\n#~ msgid \"Certificate *NOT* added.\"\n#~ msgstr \"Certificado salvo\"\n\n#, fuzzy\n#~ msgid \"This ID's validity level is undefined.\"\n#~ msgstr \"O nvel de confiana deste ID  indeterminado.\"\n\n#~ msgid \"Decode-save\"\n#~ msgstr \"Decodificar-salvar\"\n\n#~ msgid \"Decode-copy\"\n#~ msgstr \"Decodificar-copiar\"\n\n#~ msgid \"Decrypt-save\"\n#~ msgstr \"Desencriptar-salvar\"\n\n#~ msgid \"Decrypt-copy\"\n#~ msgstr \"Desencriptar-copiar\"\n\n#~ msgid \"Copy\"\n#~ msgstr \"Copiar\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"[-- End of PGP output --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"[-- Fim da sada do PGP --]\\n\"\n#~ \"\\n\"\n\n#, fuzzy\n#~ msgid \"Can't stat %s.\"\n#~ msgstr \"Impossvel consultar: %s\"\n\n#~ msgid \"%s: no such command\"\n#~ msgstr \"%s: no existe tal comando\"\n\n#, fuzzy\n#~ msgid \"Authentication method is unknown.\"\n#~ msgstr \"Autenticao GSSAPI falhou.\"\n\n#~ msgid \"MIC algorithm: \"\n#~ msgstr \"Algoritmo MIC: \"\n\n#~ msgid \"This doesn't make sense if you don't want to sign the message.\"\n#~ msgstr \"Isto no faz sentido se voc no quer assinar a mensagem.\"\n\n#~ msgid \"Unknown MIC algorithm, valid ones are: pgp-md5, pgp-sha1, pgp-rmd160\"\n#~ msgstr \"Algoritmo MIC desconhecido, use pgp-md5, pgp-sha1 ou pgp-rmd160\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"SHA1 implementation Copyright (C) 1995-1997 Eric A. Young <eay@cryptsoft.\"\n#~ \"com>\\n\"\n#~ \"\\n\"\n#~ \"    Redistribution and use in source and binary forms, with or without\\n\"\n#~ \"    modification, are permitted under certain conditions.\\n\"\n#~ \"\\n\"\n#~ \"    The SHA1 implementation comes AS IS, and ANY EXPRESS OR IMPLIED\\n\"\n#~ \"    WARRANTIES, including, but not limited to, the implied warranties of\\n\"\n#~ \"    merchantability and fitness for a particular purpose ARE DISCLAIMED.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the full distribution terms\\n\"\n#~ \"    along with this program; if not, write to the program's developers.\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Implementao de SHA1 Copyright (C) 1995-1997 Eric A. Young \"\n#~ \"<eay@cryptsoft.com>\\n\"\n#~ \"\\n\"\n#~ \"    Redistribuio e uso em forma binria ou cdigo fonte, com ou sem\\n\"\n#~ \"    modificaes, so permitidas sob certas condies.\\n\"\n#~ \"\\n\"\n#~ \"    A implementao de SHA1 vem COMO EST, e QUALQUER GARANTIA, EXPRESSA\\n\"\n#~ \"    OU IMPLCITA, incluindo, mas no se limitando a, as garantias \"\n#~ \"implcitas\\n\"\n#~ \"    de comerciabilidade e funcionalidade para um determinado propsito, \"\n#~ \"ESTO\\n\"\n#~ \"    REVOGADAS.\\n\"\n#~ \"\\n\"\n#~ \"    Voc deve ter recebido uma cpia dos termos de distribuio \"\n#~ \"completos\\n\"\n#~ \"    junto com este programa; caso contrrio, escreva para os \"\n#~ \"desenvolvedores\\n\"\n#~ \"    do programa.\\n\"\n\n#, fuzzy\n#~ msgid \"POP Username: \"\n#~ msgstr \"Nome do usurio IMAP: \"\n\n#~ msgid \"Reading new message (%d bytes)...\"\n#~ msgstr \"Lendo nova mensagem (%d bytes)...\"\n\n#~ msgid \"%s [%d message read]\"\n#~ msgstr \"%s [%d mensagem lida]\"\n\n#~ msgid \"Creating mailboxes is not yet supported.\"\n#~ msgstr \"Ainda no  possvel criar caixas de correio.\"\n\n#~ msgid \"Reopening mailbox... %s\"\n#~ msgstr \"Reabrindo a caixa... %s\"\n\n#~ msgid \"Closing mailbox...\"\n#~ msgstr \"Fechando caixa de mensagens...\"\n\n#~ msgid \"IMAP Username: \"\n#~ msgstr \"Nome do usurio IMAP: \"\n\n#~ msgid \"CRAM key for %s@%s: \"\n#~ msgstr \"Chave CRAM para %s@%s: \"\n\n#~ msgid \"Skipping CRAM-MD5 authentication.\"\n#~ msgstr \"Pulando a autenticao CRAM-MD5.\"\n\n#~ msgid \"Sending APPEND command ...\"\n#~ msgstr \"Enviando o comando APPEND...\"\n\n#~ msgid \"%d kept.\"\n#~ msgstr \"%d mantidas.\"\n\n#~ msgid \"POP Password: \"\n#~ msgstr \"Senha POP: \"\n\n#~ msgid \"No POP username is defined.\"\n#~ msgstr \"Nenhum nome de usurio POP definido.\"\n\n#~ msgid \"Could not find address for host %s.\"\n#~ msgstr \"No foi possvel encontrar o endereo do servidor %s.\"\n\n#~ msgid \"Attachment saved\"\n#~ msgstr \"Anexo salvo\"\n\n#~ msgid \"Can't open %s: %s.\"\n#~ msgstr \"No foi possvel abrir %s: %s.\"\n\n#, fuzzy\n#~ msgid \"Error while recoding %s. Leave it unchanged.\"\n#~ msgstr \"Erro ao gravar %s. Veja %s para recuperar seus dados.\"\n\n#~ msgid \"Error while recoding %s. See %s for recovering your data.\"\n#~ msgstr \"Erro ao gravar %s. Veja %s para recuperar seus dados.\"\n\n#~ msgid \"Can't change character set for non-text attachments!\"\n#~ msgstr \"\"\n#~ \"No  possvel mudar o conjunto de caracteres para anexos no-texto!\"\n\n#~ msgid \"Enter character set: \"\n#~ msgstr \"Informe o conjunto de caracteres: \"\n\n#~ msgid \"Recoding successful.\"\n#~ msgstr \"Gravao bem sucedida.\"\n\n#~ msgid \"change an attachment's character set\"\n#~ msgstr \"muda o conjunto de caracteres do anexo\"\n\n#~ msgid \"recode this attachment to/from the local charset\"\n#~ msgstr \"recodifica este anexo para/de o conjunto de caracteres local\"\n\n#~ msgid \"Compose\"\n#~ msgstr \"Compor\"\n\n#~ msgid \"We can't currently handle utf-8 at this point.\"\n#~ msgstr \"Ainda no posso manipular UTF-8.\"\n\n#~ msgid \"UTF-8 encoding attachments has not yet been implemented.\"\n#~ msgstr \"Anexos codificados como UTF-8 ainda no funcionam.\"\n\n#~ msgid \"We currently can't encode to utf-8.\"\n#~ msgstr \"Ainda no  possvel codificar como UTF-8\"\n\n#~ msgid \"move to the last undelete message\"\n#~ msgstr \"anda at a ltima mensagem no apagada\"\n\n#~ msgid \"return to the main-menu\"\n#~ msgstr \"retorna ao menu principal\"\n\n#~ msgid \"Sending CREATE command ...\"\n#~ msgstr \"Enviando o comando CREATE...\"\n\n#~ msgid \"Can't open your secret key ring!\"\n#~ msgstr \"No foi possvel abrir seu chaveiro secreto!\"\n\n#~ msgid \"An unkown PGP version was defined for signing.\"\n#~ msgstr \"Uma verso desconhecida do PGP foi definida para assinatura.\"\n\n#~ msgid \"===== Attachments =====\"\n#~ msgstr \"===== Anexos =====\"\n\n#~ msgid \"imap_error(): unexpected response in %s: %s\\n\"\n#~ msgstr \"imap_error(): resposta inesperada em %s: %s\\n\"\n\n#~ msgid \"ignoring empty header field: %s\"\n#~ msgstr \"ignorando campo de cabealho vazio: %s\"\n\n#~ msgid \"Unknown PGP version \\\"%s\\\".\"\n#~ msgstr \"Verso \\\"%s\\\" do PGP desconhecida.\"\n\n#~ msgid \"\"\n#~ \"[-- Error: this message does not comply with the PGP/MIME specification! \"\n#~ \"--]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Erro: esta mensagem no est de acordo com a especificao PGP/MIME! \"\n#~ \"--]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"reserved\"\n#~ msgstr \"reservado\"\n\n#~ msgid \"Signature Packet\"\n#~ msgstr \"Pacote de Assinatura\"\n\n#~ msgid \"Conventionally Encrypted Session Key Packet\"\n#~ msgstr \"Pacote de Chaves de Sesso Convencionalmente Ecriptado\"\n\n#~ msgid \"One-Pass Signature Packet\"\n#~ msgstr \"Pacote de Assinatura de Um Passo\"\n\n#~ msgid \"Secret Key Packet\"\n#~ msgstr \"Pacote de Chave Secreta\"\n\n#~ msgid \"Public Key Packet\"\n#~ msgstr \"Pacote de Chave Pblica\"\n\n#~ msgid \"Secret Subkey Packet\"\n#~ msgstr \"Pacote de Subchave Secreta\"\n\n#~ msgid \"Compressed Data Packet\"\n#~ msgstr \"Pacotes de Dados Compactado\"\n\n#~ msgid \"Symmetrically Encrypted Data Packet\"\n#~ msgstr \"Pacote de Dados Simetricamente Encriptado\"\n\n#~ msgid \"Marker Packet\"\n#~ msgstr \"Pacote de Marcao\"\n\n#~ msgid \"Literal Data Packet\"\n#~ msgstr \"Pacotes de Dados Literais\"\n\n#~ msgid \"Trust Packet\"\n#~ msgstr \"Pacote de Confiana\"\n\n#~ msgid \"Name Packet\"\n#~ msgstr \"Pacote de Nome\"\n\n#~ msgid \"Subkey Packet\"\n#~ msgstr \"Pacote de Subchave\"\n\n#~ msgid \"Reserved\"\n#~ msgstr \"Reservado\"\n\n#~ msgid \"Comment Packet\"\n#~ msgstr \"Pacote de Comentrio\"\n\n#~ msgid \"Message edited. Really send?\"\n#~ msgstr \"Mensagem editada. Realmente enviar?\"\n\n#~ msgid \"Saved output of child process to %s.\\n\"\n#~ msgstr \"Sada do processo filho salva em %s.\\n\"\n"
  },
  {
    "path": "po/ru.po",
    "content": "# This file was prepared by (in alphabetical order):\n#\n#   Alexey Vyskubov (alexey@pepper.spb.ru)\n#   Andrew W. Nosenko (awn@bcs.zp.ua)\n#   Michael Sobolev (mss@transas.com)\n#   Vsevolod Volkov (vvv@mutt.org.ua)\n#\n# To contact translators, please use mutt-ru mailing list:\n#   http://woe.spb.ru/mailman/listinfo/mutt-ru\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt-1.6\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2016-03-20 20:52+0200\\n\"\n\"Last-Translator: Vsevolod Volkov <vvv@mutt.org.ua>\\n\"\n\"Language-Team: mutt-ru@woe.spb.ru\\n\"\n\"Language: ru\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Имя пользователя для %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Пароль для %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Выход\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Удалить\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Восстановить\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Выбрать\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Помощь\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Список псевдонимов отсутствует!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Псевдонимы\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Псевдоним: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Такой псевдоним уже присутствует!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Предупреждение: Этот псевдоним может не работать. Исправить?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Адрес: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Ошибка: '%s' не является корректным IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Полное имя: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Принять?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Сохранить в файл: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Ошибка чтения файла псевдонимов\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Псевдоним создан.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Ошибка позиционирования в файле псевдонимов\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Не удалось разобрать имя. Продолжить?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Указанный в mailcap способ создания требует наличия параметра %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Ошибка выполнения \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Не удалось открыть файл для разбора заголовков.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Не удалось открыть файл для удаления заголовков.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Не удалось переименовать файл.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"В mailcap не определен способ создания для %s; создан пустой файл.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"\"\n\"Указанный в mailcap способ редактирования требует наличия параметра %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"В mailcap не определен способ редактирования для %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Подходящая запись в mailcap не найдена; просмотр как текста.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME-тип не определен.  Невозможно просмотреть вложение.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Не удалось создать фильтр\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Команда: %-20.20s Описание: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Команда: %-30.30s Вложение: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Вложение: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---Вложение: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Не удалось создать фильтр\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Ошибка записи!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Неизвестно, как это печатать!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Перейти в: \"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Маска\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s не является каталогом.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Почтовые ящики [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Подключение [%s], маска файла: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Каталог [%s], маска файла: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Вложение каталогов не поддерживается!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Нет файлов, удовлетворяющих данной маске\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Создание поддерживается только для почтовых ящиков на IMAP-серверах\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"\"\n\"Переименование поддерживается только для почтовых ящиков на IMAP-серверах\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Удаление поддерживается только для почтовых ящиков на IMAP-серверах\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Не удалось удалить корневой почтовый ящик\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Удалить почтовый ящик \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Почтовый ящик удален.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Почтовый ящик не удален.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Перейти в: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Ошибка просмотра каталога.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Маска файла: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Обратный порядок по (d)дате, (a)имени, (z)размеру или (n)отсутствует?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Упорядочить по (d)дате, (a)имени, (z)размеру или (n)отсутствует?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dazn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Новое имя файла: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Не удалось просмотреть каталог\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Ошибка при попытке просмотра файла\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Новая почта в \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: цвет не поддерживается терминалом\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: нет такого цвета\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: нет такого объекта\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: команда доступна только для индекса, заголовка и тела письма\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: слишком мало аргументов\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Необходимые аргументы отсутствуют.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: слишком мало аргументов\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: слишком мало аргументов\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: нет такого атрибута\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"слишком мало аргументов\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"слишком много аргументов\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"цвета по умолчанию не поддерживаются\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Проверить PGP-подпись?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Не удалось создать временный файл!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Не удалось создать фильтр просмотра\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Не удалось скопировать сообщение\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME-подпись проверена.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Отправитель сообщения не является владельцем S/MIME-сертификата.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Предупреждение: часть этого сообщения не подписана.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME-подпись проверить НЕ удалось.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP-подпись проверена.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP-подпись проверить НЕ удалось.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Команда: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Предупреждение: сообщение не содержит заголовка From:\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Перенаправить сообщение: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Перенаправить сообщения: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Ошибка разбора адреса!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Некорректный IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Перенаправить сообщение %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Перенаправить сообщения %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Сообщение не перенаправлено.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Сообщения не перенаправлены.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Сообщение перенаправлено.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Сообщения перенаправлены.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Не удалось создать процесс фильтра\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Передать программе: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Команда для печати не определена.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Напечатать сообщение?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Напечатать отмеченные сообщения?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Сообщение напечатано\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Сообщения напечатаны\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Не удалось напечатать сообщение\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Не удалось напечатать сообщения\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Обр.пор.:(d)дата/(f)от/(r)получ/(s)тема/(o)кому/(t)диск/(u)без/(z)разм/\"\n\"(c)конт/(p)спам?\"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Порядок:(d)дата/(f)от/(r)получ/(s)тема/(o)кому/(t)диск/(u)без/(z)разм/\"\n\"(c)конт/(p)спам?\"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrsotuzcp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Программа: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Декодировать и сохранить%s в почтовый ящик\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Декодировать и копировать%s в почтовый ящик\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Расшифровать и сохранить%s в почтовый ящик\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Расшифровать и копировать%s в почтовый ящик\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Сохранить%s в почтовый ящик\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Копировать%s в почтовый ящик\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" помеченное\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Копируется в %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Перекодировать в %s при отправке?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Значение Content-Type изменено на %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Установлена новая кодировка: %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"не перекодировать\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"перекодировать\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Вложений нет.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Отправить\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Прервать\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Вложить файл\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Описание\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"Не поддерживается\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Подписать и зашифровать\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Зашифровать\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Подписать\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"Нет\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (PGP/текст)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \" (режим OppEnc)\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \"подпись как: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<по умолчанию>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Зашифровать: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] уже не существует!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] изменен.  Обновить кодировку?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Вложения\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Предупреждение: '%s' не является корректным IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Вы не можете удалить единственное вложение.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Некорректный IDN в \\\"%s\\\": '%s'.\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Вкладываются помеченные файлы...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Не удалось вложить %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Вложить сообщение из почтового ящика\"\n\n#: compose.c:762\n#, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Не удалось открыть почтовый ящик %s\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"В этом почтовом ящике/файле нет сообщений.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Пометьте сообщения, которые вы хотите вложить!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Не удалось создать вложение!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Перекодирование допустимо только для текстовых вложений.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Текущее вложение не будет перекодировано.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Текущее вложение будет перекодировано.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Неверная кодировка.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Сохранить копию этого сообщения?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Переименовать в: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Не удалось получить информацию о %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Новый файл: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Поле Content-Type должно иметь вид тип/подтип\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Неизвестное значение поля Content-Type: %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Не удалось создать файл %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Не удалось создать вложение\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Отложить это сообщение?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Записать сообщение в почтовый ящик\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Сообщение записывается в %s...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Сообщение записано.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME уже используется. Очистить и продолжить? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP уже используется. Очистить и продолжить? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"ошибка создания gpgme контекста: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"ошибка включения CMS протокола: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"ошибка создания объекта данных gpgme: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"ошибка размещения объекта данных: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"ошибка позиционирования в начало объекта данных: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"ошибка чтения объекта данных: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Не удалось создать временный файл\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"ошибка добавления получателя `%s': %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"секретный ключ `%s' не найден: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"неоднозначное указание секретного ключа `%s'\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"ошибка установки секретного ключа `%s': %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"ошибка установки примечания к подписи: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"ошибка шифрования данных: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"ошибка подписывания данных: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"ключ по умолчанию не определён в $pgp_sign_as и в ~/.gnupg/gpg.conf\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Предупреждение: один из ключей был отозван\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Предупреждение: ключ, используемый для создания подписи, просрочен: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"\"\n\"Предупреждение: срок действия одного или нескольких сертификатов истек\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Предупреждение: срок действия подписи истёк: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Не удалось проверить по причине отсутствия ключа или сертификата\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL не доступен\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"Доступный CRL слишком старый\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Требование политики не было обнаружено\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Системная ошибка\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"ПРЕДУПРЕЖДЕНИЕ: PKA запись не соответствует адресу владельца:\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"Адрес, проверенный при помощи PKA: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Отпечаток пальца: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"ПРЕДУПРЕЖДЕНИЕ: НЕ известно, принадлежит ли данный ключ указанной выше \"\n\"персоне\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"ПРЕДУПРЕЖДЕНИЕ: ключ НЕ ПРИНАДЛЕЖИТ указанной выше персоне\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"ПРЕДУПРЕЖДЕНИЕ: НЕТ уверенности в том, что ключ принадлежит указанной выше \"\n\"персоне\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"aka: \"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"ID ключа \"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"создано: \"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Ошибка получения информации о ключе с ID %s: %s\\n\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"Хорошая подпись от:\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"*ПЛОХАЯ* подпись от:\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Сомнительная подпись от:\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"       действительна до: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Начало информации о подписи --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Ошибка: проверка не удалась: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Начало системы обозначения (подпись от: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Конец системы обозначения ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Конец информации о подписи --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ошибка: не удалось расшифровать: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Ошибка получения информации о ключе!\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Ошибка: не удалось расшифровать или проверить подпись: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Ошибка: не удалось скопировать данные\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Начало PGP-сообщения --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- Начало блока открытого PGP-ключа --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Начало сообщения, подписанного PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- Конец PGP-сообщения --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- Конец блока открытого PGP-ключа --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- Конец сообщения, подписанного PGP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ошибка: не удалось найти начало PGP-сообщения! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Ошибка: не удалось создать временный файл! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Начало данных, подписанных и зашифрованных в формате PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Начало данных, зашифрованных в формате PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Конец данных, подписанных и зашифрованных в формате PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Конец данных, зашифрованных в формате PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP-сообщение успешно расшифровано.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Не удалось расшифровать PGP-сообщение\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Начало данных, подписанных в формате S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Начало данных, зашифрованных в формате S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Конец данных, подписанных в формате S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Конец данных, зашифрованных в формате S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Не возможно отобразить ID этого пользователя (неизвестная кодировка)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\"[Не возможно отобразить ID этого пользователя (неправильная кодировка)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Не возможно отобразить ID этого пользователя (неправильный DN)\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" aka ......: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Имя .......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Неправильное значение]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Действ. с .: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Действ. до : %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Тип ключа .: %s, %lu бит %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Использован: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"шифрование\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"подпись\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"сертификация\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Сер. номер : 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Издан .....: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Подключ ...: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Отозван]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Просрочен]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Запрещён]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Сбор данных...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Ошибка поиска ключа издателя: %s\\n\"\n\n#: crypt-gpgme.c:3675\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Ошибка: цепь сертификации слишком длинная - поиск прекращён\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Идентификатор ключа: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"Ошибка gpgme_new: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"Ошибка gpgme_op_keylist_start: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"Ошибка gpgme_op_keylist_next: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Все подходящие ключи помечены как просроченные или отозванные.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Выход \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Выбрать \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Тест ключа \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP и S/MIME-ключи, соответствующие\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"PGP-ключи, соответствующие\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME-ключи, соответствующие\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"ключи, соответствующие\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Этот ключ не может быть использован: просрочен, запрещен или отозван.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID просрочен, запрещен или отозван.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"Степень доверия для ID не определена.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"ID недействителен.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"ID действителен только частично.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Использовать этот ключ?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Поиск ключей, соответствующих \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Использовать ключ \\\"%s\\\" для %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Введите идентификатор ключа для %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Введите, пожалуйста, идентификатор ключа: \"\n\n#: crypt-gpgme.c:4614\n#, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Ошибка экспорта ключа: %s\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP-ключ 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"GPGME: Протокол OpenPGP не доступен\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"GPGME: Протокол CMS не доступен\"\n\n#: crypt-gpgme.c:4721\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (s)подпись, (a)подпись как, (p)gp, (c)отказаться, отключить (o)ppenc? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"sapfco\"\n\n#: crypt-gpgme.c:4731\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (s)подпись, (a)подпись как, s/(m)ime, (c)отказаться, отключить (o)ppenc? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"samfco\"\n\n#: crypt-gpgme.c:4744\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME (e)шифр, (s)подпись, (a)подпись как, (b)оба, (p)gp, (c)отказ, \"\n\"(o)ppenc? \"\n\n#: crypt-gpgme.c:4745\nmsgid \"esabpfco\"\nmsgstr \"esabpfco\"\n\n#: crypt-gpgme.c:4750\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (e)шифр, (s)подпись, (a)подпись как, (b)оба, s/(m)ime, (c)отказ, \"\n\"(o)ppenc? \"\n\n#: crypt-gpgme.c:4751\nmsgid \"esabmfco\"\nmsgstr \"esabmfco\"\n\n#: crypt-gpgme.c:4762\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e)шифр, (s)подпись, (a)подпись как, (b)оба, (p)gp, (c)отказаться? \"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"esabpfc\"\n\n#: crypt-gpgme.c:4768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP (e)шифр, (s)подпись, (a)подпись как, (b)оба, s/(m)ime, (c)отказаться? \"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"esabmfc\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Подписать как: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Не удалось проверить отправителя\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Не удалось вычислить отправителя\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (текущее время: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Результат работы программы %s%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Фразы-пароли удалены из памяти.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Невозможно использовать PGP/текст с вложениями. Применить PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"Письмо не отправлено: невозможно использовать PGP/текст с вложениями.\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Запускается программа PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\"Не удалось отправить PGP-сообщение в текстовом формате. Использовать PGP/\"\n\"MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Письмо не отправлено.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"S/MIME-сообщения без указания типа содержимого не поддерживаются.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Попытка извлечь PGP ключи...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Попытка извлечь S/MIME сертификаты...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ошибка: неизвестный multipart/signed протокол %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ошибка: нарушена структура multipart/signed-сообщения! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Предупреждение: не удалось проверить %s/%s подписи. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Начало подписанных данных --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Предупреждение: не найдено ни одной подписи. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Конец подписанных данных --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"Опция \\\"crypt_use_gpgme\\\" включена, но поддержка GPGME не собрана.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Вызывается S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"да\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"нет\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Завершить работу с Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"неизвестная ошибка\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Чтобы продолжить, нажмите любую клавишу...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' -- список): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Нет открытого почтового ящика.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Сообщений нет.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Почтовый ящик немодифицируем.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"В режиме \\\"вложить сообщение\\\" функция недоступна.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Нет видимых сообщений.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"%s: Операция запрещена ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"\"\n\"Не удалось разрешить запись в почтовый ящик, открытый только для чтения!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Изменения в состояние почтового ящика будут внесены при его закрытии.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Изменения в состояние почтового ящика не будут внесены.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Выход\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Сохранить\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Создать\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Ответить\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Всем\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"\"\n\"Ящик был изменен внешней программой.  Значения флагов могут быть некорректны.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Новая почта в этом ящике.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Ящик был изменен внешней программой.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Нет отмеченных сообщений.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Нет помеченных сообщений.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Перейти к сообщению: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Аргумент должен быть номером сообщения.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Это сообщение невидимо.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Неверный номер сообщения.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Не удалось удалить сообщения\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Удалить сообщения по образцу: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Шаблон ограничения списка отсутствует.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Шаблон ограничения: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Ограничиться сообщениями, соответствующими: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Используйте \\\"all\\\" для просмотра всех сообщений.\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Выйти из Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Пометить сообщения по образцу: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Не удалось восстановить сообщения\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Восстановить сообщения по образцу: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Снять пометку с сообщений по образцу: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Соединения с IMAP-серверами отключены.\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Открыть почтовый ящик только для чтения\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Открыть почтовый ящик\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Нет почтовых ящиков с новой почтой\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s не является почтовым ящиком.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Выйти из Mutt без сохранения изменений?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Группировка по дискуссиям не включена.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Дискуссия разделена\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\"Дискуссия не может быть разделена, сообщение не является частью дискуссии\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"Не удалось соединить дискуссии\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Отсутствует заголовок Message-ID: для соединения дискуссии\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Сначала необходимо пометить сообщение, которое нужно соединить здесь\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Дискуссии соединены\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Дискуссии не соединены\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Это последнее сообщение.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Нет восстановленных сообщений.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Это первое сообщение.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Достигнут конец; продолжаем поиск с начала.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Достигнуто начало; продолжаем поиск с конца.\"\n\n#: curs_main.c:1608\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Нет новых сообщений при просмотре с ограничением.\"\n\n#: curs_main.c:1610\nmsgid \"No new messages.\"\nmsgstr \"Нет новых сообщений.\"\n\n#: curs_main.c:1615\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Нет непрочитанных сообщений при просмотре с ограничением.\"\n\n#: curs_main.c:1617\nmsgid \"No unread messages.\"\nmsgstr \"Нет непрочитанных сообщений.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\nmsgid \"Cannot flag message\"\nmsgstr \"Не удалось переключить флаг сообщения\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"Не удалось переключить флаг 'новое'\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Нет больше дискуссий.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Это первая дискуссия\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"В дискуссии присутствуют непрочитанные сообщения.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\nmsgid \"Cannot delete message\"\nmsgstr \"Не удалось удалить сообщение\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\nmsgid \"Cannot edit message\"\nmsgstr \"Не удалось отредактировать сообщение\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"Не удалось пометить сообщения как прочитанные\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\nmsgid \"Cannot undelete message\"\nmsgstr \"Не удалось восстановить сообщение\"\n\n#: edit.c:41\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tввести строку, начинающуюся с символа ~\\n\"\n\"~b получатели\\tдобавить получателей в поле Bcc:\\n\"\n\"~c получатели\\tдобавить получателей в поле Cc:\\n\"\n\"~f сообщения\\tвключить данные сообщения\\n\"\n\"~F сообщения\\tвключить данные сообщения и их заголовки\\n\"\n\"~h\\t\\tредактировать заголовок сообщения\\n\"\n\"~m сообщения\\tвключить и процитировать сообщения\\n\"\n\"~M сообщения\\tвключить и процитировать сообщения с заголовками\\n\"\n\"~p\\t\\tнапечатать это сообщение\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tзаписать файл и выйти из редактора\\n\"\n\"~r файл\\t\\tвключить данный файл\\n\"\n\"~t получатели\\tдобавить данных пользователей в список адресатов\\n\"\n\"~u\\t\\tиспользовать предыдущую строку\\n\"\n\"~v\\t\\tредактировать сообщение при помощи внешнего редактора\\n\"\n\"~w файл\\t\\tсохранить сообщение в файле\\n\"\n\"~x\\t\\tотказаться от изменений и выйти из редактора\\n\"\n\"~?\\t\\tвывести это сообщение\\n\"\n\".\\t\\tстрока, содержащая только точку, заканчивает редактирование\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: недопустимый номер сообщения.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Для завершения введите строку, содержащую только .)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Нет почтового ящика.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Сообщение содержит:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(продолжить)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"отсутствует имя файла.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Текст сообщения отсутствует.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Некорректный IDN в %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: неизвестная команда редактора (введите ~? для справки)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"не удалось создать временный почтовый ящик: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"ошибка записи во временный почтовый ящик: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"не удалось усечь временный почтовый ящик: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Файл сообщения пуст!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Сообщение не изменилось!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Не удалось открыть файл сообщения: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Не удалось добавить к почтовому ящику: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Ошибка. Временный файл оставлен: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Установить флаг\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Сбросить флаг\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Ошибка: не удалось показать ни одну из частей Multipart/Alternative! \"\n\"--]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Вложение #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Тип: %s/%s, кодировка: %s, размер: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Одна или несколько частей этого сообщения не могут быть отображены\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Автопросмотр; используется %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Запускается программа автопросмотра: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Не удалось выполнить %s. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Автопросмотр стандартного потока ошибок %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Ошибка: тип message/external требует наличие параметра access-type --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Это вложение типа %s/%s \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(размер %s байтов) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"было удалено --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- имя: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Это вложение типа %s/%s не было включено --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- в сообщение, и более не содержится в указанном --]\\n\"\n\"[-- внешнем источнике. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- в сообщение, и значение access-type %s не поддерживается --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Не удалось открыть временный файл!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Ошибка: тип multipart/signed требует наличия параметра protocol.\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Это вложение \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- тип %s/%s не поддерживается \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(используйте '%s' для просмотра этой части)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(функция 'view-attachments' не назначена ни одной клавише!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: не удалось вложить файл\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ОШИБКА: пожалуйста. сообщите о ней\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<НЕИЗВЕСТНО>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Стандартные назначения:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Неназначенные функции:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Справка для %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Некорректный формат файла истории (строка %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"сокращение '^' для указания текущего ящика не установлено\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"сокращение для почтового ящика раскрыто в пустое регулярное выражение\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Невозможно выполнить unhook * из команды hook.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: неизвестный тип события: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: Невозможно удалить %s из команды %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Нет доступных методов аутентификации.\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Аутентификация (анонимная)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Ошибка анонимной аутентификации.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Аутентификация (метод CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"Ошибка CRAM-MD5-аутентификации.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Аутентификация (метод GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"Ошибка GSSAPI-аутентификации.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"Команда LOGIN запрещена на этом сервере.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Регистрация...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Регистрация не удалась.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Аутентификация (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"Ошибка SASL-аутентификации.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"Неверно указано имя IMAP-ящика: %s\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Получение списка почтовых ящиков...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Нет такого почтового ящика\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Создать почтовый ящик: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Почтовый ящик должен иметь имя.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Почтовый ящик создан.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Переименовать почтовый ящик %s в: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Не удалось переименовать: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Почтовый ящик переименован.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Почтовый ящик закрыт\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"Не удалось выполнить команду CREATE: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Закрытие соединения с сервером %s...\"\n\n# \"mutt не поддерживает версию протокола, используемый на этом сервере\"\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"\"\n\"Этот IMAP-сервер использует устаревший протокол. Mutt не сможет работать с \"\n\"ним.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Использовать безопасное TLS-соединение?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Не удалось установить TLS-соединение\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Зашифрованное соединение не доступно\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Выбирается %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Ошибка открытия почтового ящика\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Создать %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Не удалось очистить почтовый ящик\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"%d сообщений помечаются как удаленные...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Сохранение изменённых сообщений... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Ошибка сохранения флагов. Закрыть почтовый ящик?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Ошибка сохранения флагов\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Удаление сообщений с сервера...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: ошибка выполнения команды EXPUNGE\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Не указано имя заголовка при поиске заголовка: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Недопустимое имя почтового ящика\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Подключение к %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Отключение от %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Подключено к %s\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Отключено от %s\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Получение списка заголовков не поддерживается этим IMAP-сервером.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Не удалось создать временный файл %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Загрузка кэша...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Получение заголовков сообщений...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Получение сообщения...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"\"\n\"Нумерация сообщений изменилась. Требуется повторно открыть почтовый ящик.\"\n\n# или \"на сервер\" убрать??\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Сообщение загружается на сервер...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"%d сообщений копируются в %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Сообщение %d копируется в %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Продолжить?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"В этом меню недоступно.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Некорректное регулярное выражение: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Не достаточно условий для шаблона спама\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"спам: образец не найден\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"не спам: образец не найден\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%sgroup: отсутствует -rx или -addr.\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%sgroup: предупреждение: некорректный IDN '%s'.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"attachments: отсутствует параметр disposition\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"attachments: неверное значение параметра disposition\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"unattachments: отсутствует параметр disposition\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"unattachments: неверное значение параметра disposition\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"псевдоним: отсутствует адрес\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Предупреждение: некорректный IDN '%s' в псевдониме '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"недопустимое поле в заголовке\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: неизвестный метод сортировки\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): ошибка в регулярном выражении: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: неизвестная переменная\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"префикс недопустим при сбросе значений\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"значение недопустимо при сбросе значений\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Использование: set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s: значение установлено\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s: значение не определено\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Неверное значение для параметра %s: \\\"%s\\\"\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: недопустимый тип почтового ящика\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: недопустимое значение (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"ошибка формата\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"переполнение числового значения\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: недопустимое значение\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: неизвестный тип.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: неизвестный тип\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Ошибка в %s: строка %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: ошибки в %s\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: чтение прервано из-за большого количества ошибок в %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: ошибка в %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: слишком много аргументов\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: неизвестная команда\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Ошибка в командной строке: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"не удалось определить домашний каталог\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"не удалось определить имя пользователя\"\n\n#: init.c:2970\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"не удалось определить имя узла с помощью uname()\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: имя группы отсутствует\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"слишком мало аргументов\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"Сейчас макросы запрещены.\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Обнаружен цикл в определении макроса.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Клавише не назначена никакая функция.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Клавише не назначена никакая функция. Для справки используйте '%s'.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: слишком много аргументов\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: нет такого меню\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"последовательность клавиш пуста\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: слишком много аргументов\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: нет такой функции\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: пустая последовательность клавиш\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: слишком много аргументов\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: нет аргументов\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: нет такой функции\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Введите ключи (^G - прерывание ввода): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Символ = %s, восьмиричный = %o, десятичный = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Переполнение -- не удалось выделить память!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Нехватка памяти!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Чтобы связаться с разработчиками, используйте адрес <mutt-dev@mutt.org>.\\n\"\n\"Чтобы сообщить об ошибке, посетите http://bugs.mutt.org/.\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins и другие.\\n\"\n\"Mutt распространяется БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; для получения более\\n\"\n\"подробной информации введите `mutt -vv'.\\n\"\n\"Mutt является свободным программным обеспечением.  Вы можете\\n\"\n\"распространять его при соблюдении определенных условий; для получения\\n\"\n\"более подробной информации введите `mutt -vv'.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Многие части кода, исправления и предложения были сделаны неупомянутыми\\n\"\n\"здесь людьми.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    Эта программа -- свободное программное обеспечение.  Вы можете\\n\"\n\"    распространять и/или изменять ее при соблюдении условий GNU General\\n\"\n\"    Piblic License, опубликованной Free Software Foundation, версии 2 или\\n\"\n\"    (на ваше усмотрение) любой более поздней версии.\\n\"\n\"\\n\"\n\"    Эта программа распространяется с надеждой, что она окажется полезной,\\n\"\n\"    но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. Особо отметим, что отсутствует ГАРАНТИЯ\\n\"\n\"    ПРИГОДНОСТИ ДЛЯ ВЫПОЛНЕНИЯ ОПРЕДЕЛЕННЫХ ЗАДАЧ. Более подробную\\n\"\n\"    информацию вы можете найти в GNU General Public License.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    Вы должны были получить копию GNU General Public License вместе с\\n\"\n\"    этой программой. Если вы ее не получили, обратитесь во Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"запуск: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"        mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"        mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"        mutt [<options>] -p\\n\"\n\"        mutt [<options>] -A <alias> [...]\\n\"\n\"        mutt [<options>] -Q <query> [...]\\n\"\n\"        mutt [<options>] -D\\n\"\n\"        mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"параметры:\\n\"\n\"  -A <alias>\\tраскрыть данный псевдоним\\n\"\n\"  -a <file> [...] --\\tвложить файл(ы) в сообщение\\n\"\n\"\\t\\tсписок файлов должен заканчиваться строкой \\\"--\\\"\\n\"\n\"  -b <address>\\tуказать blind carbon-copy (BCC) адрес\\n\"\n\"  -c <address>\\tуказать carbon-copy (CC) адрес\\n\"\n\"  -D\\t\\tвывести значения всех переменных на stdout\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <level>\\tзапись отладочной информации в ~/.muttdebug0\"\n\n#: main.c:137\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -E\\t\\tредактировать шаблон (-H) или вставляемый файл (-i)\\n\"\n\"  -e <command>\\tуказать команду, которая будет выполнена после \"\n\"инициализации\\n\"\n\"  -f <file>\\tуказать почтовый ящик для работы\\n\"\n\"  -F <file>\\tуказать альтернативный muttrc\\n\"\n\"  -H <file>\\tуказать файл, содержащий шаблон заголовка и тела письма\\n\"\n\"  -i <file>\\tуказать файл для вставки в тело письма\\n\"\n\"  -m <тип>\\tуказать тип почтового ящика по умолчанию\\n\"\n\"  -n\\t\\tзапретить чтение системного Muttrc\\n\"\n\"  -p\\t\\tпродолжить отложенное сообщение\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <имя>\\tвывести значение переменной конфигурации\\n\"\n\"  -R\\t\\tоткрыть почтовый ящик в режиме \\\"только для чтения\\\"\\n\"\n\"  -s <тема>\\tуказать тему сообщения (должна быть в кавычках, если \"\n\"присутствуют пробелы)\\n\"\n\"  -v\\t\\tвывести номер версии и параметры компиляции\\n\"\n\"  -x\\t\\tэмулировать режим посылки команды mailx\\n\"\n\"  -y\\t\\tвыбрать почтовый ящик из списка `mailboxes'\\n\"\n\"  -z\\t\\tвыйти немедленно если в почтовом ящике отсутствует новая почта\\n\"\n\"  -Z\\t\\tоткрыть первый почтовый ящик с новой почтой, выйти немедленно если \"\n\"таковая отсутствует\\n\"\n\"  -h\\t\\tтекст этой подсказки\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Параметры компиляции:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Ошибка инициализации терминала.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Ошибка: неверное значение '%s' для -d.\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Отладка на уровне %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"Символ DEBUG не был определен при компиляции.  Игнорируется.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"Каталог %s не существует.  Создать?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Не удалось создать %s: %s\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Не удалось распознать ссылку mailto:\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Адресаты не указаны.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"Невозможно использовать ключ -E с stdin\\n\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: не удалось вложить файл.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Нет почтовых ящиков с новой почтой.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Не определено ни одного почтового ящика со входящими письмами.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Почтовый ящик пуст.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Читается %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Почтовый ящик поврежден!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Почтовый ящик был поврежден!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Критическая ошибка!  Не удалось заново открыть почтовый ящик!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Не удалось заблокировать почтовый ящик!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"sync: почтовый ящик изменен, но измененные сообщения отсутствуют!\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Пишется %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Сохранение изменений...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Запись не удалась!  Неполный почтовый ящик сохранен в %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Не удалось заново открыть почтовый ящик!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Повторное открытие почтового ящика...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Перейти к: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Неверный индекс.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Записи отсутствуют.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Дальнейшая прокрутка невозможна.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Дальнейшая прокрутка невозможна.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Вы уже на первой странице.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Вы уже на последней странице.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Вы уже на последней записи.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Вы уже на первой записи.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Поиск: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Обратный поиск: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Не найдено.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Нет отмеченных записей.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"В этом меню поиск не реализован.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Для диалогов переход по номеру сообщения не реализован.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Возможность пометки не поддерживается.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Просматривается %s...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"Не удалось сохранить сообщение на диске\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): не удалось установить время файла\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"SASL: неизвестный протокол\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"SASL: ошибка создания соединения\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"SASL: ошибка установки свойств безопасности\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"SASL: ошибка установки уровня внешней безопасности\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"SASL: ошибка установки внешнего имени пользователя\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Соединение с %s закрыто\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL-протокол недоступен.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Команда, предшествующая соединению, завершилась с ошибкой.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Ошибка при взаимодействии с %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Некорректный IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Определяется адрес сервера %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Не удалось определить адрес сервера \\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Устанавливается соединение с %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Не удалось установить соединение с %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Недостаточно энтропии\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Накопление энтропии: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s имеет небезопасный режим доступа!\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"Использование SSL-протокола невозможно из-за недостатка энтропии\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"ошибка ввода/вывода\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"Не удалось установить SSL-соединение: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Не удалось получить сертификат сервера\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"%s соединение; шифрование %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Неизвестно\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[ошибка вычислений]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[недопустимая дата]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Сертификат все еще недействителен\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Срок действия сертификата истек\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"не удалось получить subject сертификата\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"не удалось получить common name сертификата\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"владелец сертификата не соответствует имени хоста %s\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Не удалось выполнить проверку хоста сертификата: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Данный сертификат принадлежит:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Данный сертификат был выдан:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Данный сертификат действителен\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"      с %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     по %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Отпечаток пальца: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"Проверка SSL-сертификата (сертификат %d из %d в цепочке)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r)отвергнуть, (o)принять, (a)принять и сохранить\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"roa\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r)отвергнуть, (o)принять\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ro\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Предупреждение: не удалось сохранить сертификат\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Сертификат сохранен\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Ошибка: не удалось открыть TLS-сокет\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Запрещены все доступные протоколы для TLS/SSL-соединения\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"Явное указание набора шифров через $ssl_ciphers не поддерживается\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL/TLS-соединение с использованием %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Ошибка инициализации данных сертификата gnutls\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Ошибка обработки данных сертификата\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\"Предупреждение: сертификат подписан с использованием небезопасного алгоритма\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1-отпечаток пальца: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5-отпечаток пальца: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"ПРЕДУПРЕЖДЕНИЕ: сертификат сервера уже недействителен\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"ПРЕДУПРЕЖДЕНИЕ: cрок действия сертификата сервера истек\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"ПРЕДУПРЕЖДЕНИЕ: сертификат сервера был отозван\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"ПРЕДУПРЕЖДЕНИЕ: имя сервера не соответствует сертификату\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"ПРЕДУПРЕЖДЕНИЕ: сертификат сервера не подписан CA\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Ошибка проверки сертификата (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Сертификат не соответствует стандарту X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Устанавливается соединение с \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Туннель к %s вернул ошибку %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Ошибка туннеля при взаимодействии с %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Указанный файл -- это каталог. Сохранить в нем?[(y)да, (n)нет, (a)все]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"yna\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Указанный файл -- это каталог. Сохранить в нем?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Имя файла в каталоге: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Файл существует, (o)переписать, (a)добавить, (с)отказ?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"oac\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Запись сообщений не поддерживается POP-сервером.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Добавить сообщения к %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s не является почтовым ящиком!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Невозможно заблокировать файл, удалить файл блокировки для %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"dotlock: не удалось заблокировать %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Тайм-аут fcntl-блокировки!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Попытка fcntl-блокировки файла... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Тайм-аут flock-блокировки!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Попытка flock-блокировки файла... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Не удалось заблокировать %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Не удалось синхронизировать почтовый ящик %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Переместить прочитанные сообщения в %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Вычистить %d удаленное сообщение?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Вычистить %d удаленных сообщений?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Прочитанные сообщения перемещаются в %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Почтовый ящик не изменился.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"Оставлено: %d, перемещено: %d, удалено: %d.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"Оставлено: %d, удалено: %d.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Используйте '%s' для разрешения/запрещения записи\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Используйте команду 'toggle-write' для разрешения записи!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Почтовый ящик стал доступен только для чтения. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Почтовый ящик обновлен.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Ошибка записи сообщения\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Переполнение -- не удалось выделить память.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"Назад\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"Вперед\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Вложения\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Следующий\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Последняя строка сообщения уже на экране.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Первая строка сообщения уже на экране.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Подсказка уже перед вами.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Нет больше цитируемого текста.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"За цитируемым текстом больше нет основного текста.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"Составное сообщение требует наличия параметра boundary!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Ошибка в выражении: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Пустое выражение\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Неверный день месяца: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Неверное название месяца: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Неверно указана относительная дата: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"ошибка в образце: %s\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"пропущен образец: %s\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"пропущена скобка: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: неверный модификатор образца\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: в этом режиме не поддерживается\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"пропущен параметр\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"пропущена скобка: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"пустой образец\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"ошибка: неизвестная операция %d (сообщите об этой ошибке).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Образец поиска компилируется...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Исполняется команда для подходящих сообщений...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Ни одно сообщение не подходит под критерий.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Поиск...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Поиск дошел до конца, не найдя ничего подходящего\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Поиск дошел до начала, не найдя ничего подходящего\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Поиск прерван.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Введите PGP фразу-пароль:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP фраза-пароль удалена из памяти.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Ошибка: не удалось создать PGP-подпроцесс! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Конец вывода программы PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"Внутренняя ошибка. Пожалуйста, сообщите о ней разработчикам.\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Ошибка: не удалось создать PGP-подпроцесс! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Расшифровать не удалась\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Не удалось открыть PGP-подпроцесс!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Не удалось запустить программу PGP\"\n\n#: pgp.c:1730\n#, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (s)подпись, (a)подпись как, %s, (c)отказаться, отключить (o)ppenc? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)PGP/текст\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"safcoi\"\n\n#: pgp.c:1742\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (s)подпись, (a)подпись как, (c)отказаться, отключить (o)ppenc? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"safco\"\n\n#: pgp.c:1760\n#, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (e)шифр, (s)подпись, (a)подпись как, (b)оба, %s, (c)отказ, (o)ppenc?\"\n\n#: pgp.c:1763\nmsgid \"esabfcoi\"\nmsgstr \"esabfcoi\"\n\n#: pgp.c:1768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP (e)шифр, (s)подпись, (a)подпись как, (b)оба, (c)отказ, (o)ppenc? \"\n\n#: pgp.c:1769\nmsgid \"esabfco\"\nmsgstr \"esabfco\"\n\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP (e)шифр, (s)подпись, (a)подпись как, (b)оба, %s, (c)отказаться? \"\n\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"esabfci\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP (e)шифр, (s)подпись, (a)подпись как, (b)оба, (c)отказаться? \"\n\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"esabfc\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Получение PGP-ключа...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\"Все подходящие ключи помечены как просроченные, отозванные или запрещённые.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP-ключи, соответствующие <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP-ключи, соответствующие \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Не удалось открыть /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP-ключ %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Команда TOP сервером не поддерживается.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Ошибка записи заголовка во временный файл!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Команда UIDL сервером не поддерживается.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d сообщений было потеряно. Требуется повторно открыть почтовый ящик.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"Неверно указано имя POP-ящика: %s\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Получение списка сообщений...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Ошибка записи сообщения во временный файл!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Пометка сообщений как удаленные...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Проверка наличия новых сообщений...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP-сервер не определен.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Нет новой почты в POP-ящике.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Удалить сообщения с сервера?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Читаются новые сообщения (байтов: %d)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Ошибка записи почтового ящика!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [сообщений прочитано: %d из %d]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Сервер закрыл соединение!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Аутентификация (метод SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"APOP: неверное значение времени\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Аутентификация (метод APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"Ошибка APOP-аутентификации.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Команда USER сервером не поддерживается.\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Неверный POP URL: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Невозможно оставить сообщения на сервере.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Ошибка при установлении соединения: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Закрытие соединения с POP-сервером...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Проверка номеров сообщений...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Соединение потеряно. Установить соединение повторно?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Отложенные сообщения\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Нет отложенных сообщений.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Неверный crypto-заголовок\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Неверный S/MIME-заголовок\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Расшифровка сообщения...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Расшифровать не удалась.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Новый запрос\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Создать псевдоним\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Искать\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Ожидается ответ...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Команда запроса не определена.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Запрос\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Запрос: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Запрос '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Передать программе\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Напечатать\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Сохраняется...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Вложение сохранено.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"ПРЕДУПРЕЖДЕНИЕ: вы собираетесь перезаписать %s. Продолжить?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Вложение обработано.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Пропустить через: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Передать программе: \"\n\n#: recvattach.c:710\n#, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Неизвестно как печатать %s вложения!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Напечатать отмеченные вложения?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Напечатать вложение?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Не удалось расшифровать зашифрованное сообщение!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Вложения\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Дайджест не содержит ни одной части!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Удаление вложений не поддерживается POP-сервером.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Удаление вложений из зашифрованных сообщений не поддерживается.\"\n\n#: recvattach.c:1132\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"\"\n\"Удаление вложений из зашифрованных сообщений может аннулировать подпись.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Для составных вложений поддерживается только удаление.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Вы можете перенаправлять только части типа message/rfc822.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Ошибка перенаправления сообщения!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Ошибка перенаправления сообщений!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Не удалось открыть временный файл %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Переслать как вложения?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"Удалось раскодировать не все вложения. Переслать остальные в виде MIME?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Переслать инкапсулированным в MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Не удалось создать %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Помеченные сообщения отсутствуют.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Списков рассылки не найдено!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"Удалось раскодировать не все вложения. Инкапсулировать остальные в MIME?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Добавить\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Вставить\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Удалить\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Не удалось получить type2.list mixmaster!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Выбрать цепочку remailer\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Ошибка: %s не может быть использован как последний remailer\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Цепочки mixmaster имеют ограниченное количество элементов: %d\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Цепочка remailer уже пустая.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Вы уже пометили первый элемент цепочки.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Вы уже пометили последний элемент цепочки.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster не позволяет использовать заголовки Cc и Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"Установите значение переменной hostname для использования mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Сообщение отправить не удалось, процесс-потомок вернул %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Ошибка отправки сообщения.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Некорректно отформатированная запись для типа %s в \\\"%s\\\", строка %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Путь к файлу mailcap не указан\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"для типа %s не найдено записи в файле mailcap\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: слишком мало аргументов\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: слишком много аргументов\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"Ошибка: score: неверное значение\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Нет темы письма, отказаться?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Нет темы письма, отказ.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Отвечать по %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Отвечать по %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Ни одно из помеченных сообщений не является видимым!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Вставить сообщение в ответ?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Включается цитируемое сообщение...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Не удалось вставить все затребованные сообщения!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Переслать как вложение?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Подготовка пересылаемого сообщения...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Продолжить отложенное сообщение?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Редактировать пересылаемое сообщение?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Отказаться от неизмененного сообщения?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Сообщение не изменилось, отказ.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Сообщение отложено.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Не указано ни одного адресата!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Не было указано ни одного адресата.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Нет темы сообщения, прервать отправку?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Тема сообщения не указана.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Сообщение отправляется...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Сохранить вложения в Fcc?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Сообщение отправить не удалось.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Сообщение отправлено.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Сообщение отправляется в фоновом режиме.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Параметр boundary не найден! (Сообщите об этой ошибке)\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s больше не существует!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s не является файлом.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Не удалось открыть %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"Для отправки почты должна быть установлена переменная $sendmail.\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Сообщение отправить не удалось, процесс-потомок вернул %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Результат работы программы доставки почты\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Некорректный IDN %s при подготовке Resent-From.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Завершение работы.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Получен сигнал %s...  Завершение работы.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Получен сигнал %d...  Завершение работы.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Введите S/MIME фразу-пароль:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Доверенный    \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Проверенный  \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Непроверенный\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Просроченный \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Отозванный   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Неправильный \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Неизвестный  \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME-сертификаты, соответствующие \\\"%s\\\".\"\n\n#: smime.c:472\nmsgid \"ID is not trusted.\"\nmsgstr \"ID недоверенный.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Введите идентификатор ключа: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Не найдено (правильного) сертификата для %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Ошибка: не удалось создать OpenSSL-подпроцесс!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"нет файла сертификата\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"нет почтового ящика\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Нет вывода от программы OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"Не удалось подписать: не указан ключ. Используйте \\\"подписать как\\\".\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Не удалось открыть OpenSSL-подпроцесс!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Конец вывода программы OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Ошибка: не удалось создать OpenSSL-подпроцесс! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Начало данных, зашифрованных в формате S/MIME --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Начало данных, подписанных в формате S/MIME --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Конец данных, зашифрованных в формате S/MIME --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Конец данных, подписанных в формате S/MIME --]\\n\"\n\n#: smime.c:2109\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (s)подпись, (w)шифр как, (a)подпись как, (c)отказ, отключить \"\n\"(o)ppenc? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"swafco\"\n\n#: smime.c:2123\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (e)шифр, (s)подпись, (w)шифр как, (a)подпись как, (b)оба, (c)отказ, \"\n\"(o)ppenc? \"\n\n#: smime.c:2124\nmsgid \"eswabfco\"\nmsgstr \"eswabfco\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e)шифр, (s)подпись, (w)шифр как, (a)подпись как, (b)оба, (c)отказ? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"eswabfc\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Выберите семейство алгоритмов: 1: DES, 2: RC2, 3: AES, (c)отказ? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drac\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Ошибка SMTP сессии: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Ошибка SMTP сессии: не удалось открыть %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"Не указан адрес отправителя\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"Ошибка SMTP сессии: ошибка чтения\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"Ошибка SMTP сессии: ошибка записи\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Неверный ответ сервера\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Неверный SMTP URL: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP сервер не поддерживает аутентификацию\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP аутентификация требует SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"Не удалось выполнить %s аутентификацию, пробуем следующий метод\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"Ошибка SASL-аутентификации\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Почтовый ящик сортируется...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Не удалось найти функцию сортировки! (сообщите об этой ошибке)\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(нет почтового ящика)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Родительское сообщение не видимо при просмотре с ограничением.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Родительское сообщение недоступно.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"пустая операция\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"завершение выполнения по условию\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"форсировать использование базы mailcap для просмотра вложения\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"показать вложение как текст\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Разрешить/запретить отображение частей дайджеста\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"конец страницы\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"переслать сообщение другому пользователю\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"указать новый файл в этом каталоге\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"просмотреть файл\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"показать имя текущего файла\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"подключиться к текущему почтовому ящику (только IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"отключиться от текущего почтового ящика (только IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"\"\n\"переключиться между режимами просмотра всех/подключенных почтовых ящиков \"\n\"(только IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"список почтовых ящиков с новой почтой\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"изменить каталог\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"проверить почтовые ящики на наличие новой почты\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"вложить файлы в это сообщение\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"вложить сообщения в это сообщение\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"изменить список 'BCC:'\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"изменить список 'CC:'\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"изменить описание вложения\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"изменить транспортную кодировку для вложения\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"укажите файл, в котором будет сохранена копия этого сообщения\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"изменить вложенный файл\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"изменить поле 'From:'\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"редактировать сообщение вместе с заголовками\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"редактировать сообщение\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"редактировать вложение в соответствии с записью в mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"изменить поле 'Reply-To:'\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"редактировать тему сообщения\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"изменить список 'To:'\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"создать новый почтовый ящик (только IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"изменить тип вложения (content-type)\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"создать временную копию вложения\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"проверить правописание\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"создать новое вложение в соответствии с записью в mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"включить/выключить перекодирование вложения\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"сохранить это сообщение для отправки позднее\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"переименовать/переместить вложенный файл\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"отправить сообщение\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"установить поле disposition в inline/attachment\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"удалить/оставить файл после отправки\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"обновить информацию о кодировке вложения\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"записать сообщение в файл/почтовый ящик\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"копировать сообщение в файл/почтовый ящик\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"создать псевдоним для отправителя сообщения\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"поместить запись в низ экрана\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"поместить запись в середину экрана\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"поместить запись в верх экрана\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"создать декодированную (text/plain) копию\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"создать декодированную (text/plain) копию и удалить оригинал\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"удалить текущую запись\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"удалить текущий почтовый ящик (только IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"удалить все сообщения в поддискуссии\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"удалить все сообщения в дискуссии\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"показать полный адрес отправителя\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"показать сообщение со всеми заголовками\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"показать сообщение\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"\\\"низкоуровневое\\\" редактирование сообщения\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"удалить символ перед курсором\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"передвинуть курсор влево на один символ\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"передвинуть курсор в начало слова\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"перейти в начало строки\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"переключиться между почтовыми ящиками со входящими письмами\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"дописать имя файла или псевдонима\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"дописать адрес, используя внешнюю программу\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"удалить символ под курсором\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"перейти в конец строки\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"передвинуть курсор на один символ вправо\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"передвинуть курсор в конец слова\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"прокрутить вниз список истории\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"прокрутить вверх список истории\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"удалить символы от курсора и до конца строки\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"удалить символы от курсора и до конца слова\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"удалить все символы в строке\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"удалить слово перед курсором\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"ввести следующую нажатую клавишу \\\"как есть\\\"\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"поменять символ под курсором с предыдущим\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"\"\n\"перевести первую букву слова в верхний регистр, а остальные -- в нижний\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"преобразовать слово в нижний регистр\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"преобразовать слово в верхний регистр\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"ввести команду muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"ввести маску файла\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"выйти из этого меню\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"передать вложение внешней программе\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"первая запись\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"установить/сбросить флаг 'важное' для сообщения\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"переслать сообщение с комментариями\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"выбрать текущую запись\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"ответить всем адресатам\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"на полстраницы вперед\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"на полстраницы назад\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"этот текст\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"перейти по последовательному номеру\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"последняя запись\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"ответить в указанный список рассылки\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"выполнить макрос\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"создать новое сообщение\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"резделить дикуссию на две части\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"открыть другой почтовый ящик/файл\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"открыть другой почтовый ящик/файл в режиме \\\"только для чтения\\\"\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"сбросить у сообщения флаг состояния\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"удалить сообщения по образцу\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"забрать почту с IMAP-сервера\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"отключение от всех IMAP-серверов\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"забрать почту с POP-сервера\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"первое сообщение\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"последнее сообщение\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"показывать только сообщения, соответствующие образцу\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"подсоединить помеченное сообщение к текущему\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"открыть следующий почтовый ящик с новой почтой\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"следующее новое сообщение\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"следующее новое или непрочитанное сообщение\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"следующая поддискуссия\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"следующая дискуссия\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"следующее неудаленное сообщение\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"следующее непрочитанное сообщение\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"перейти к родительскому сообщению дискуссии\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"предыдущая дискуссия\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"предыдущая поддискуссия\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"предыдущее неудаленное сообщение\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"предыдущее новое сообщение\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"предыдущее новое или непрочитанное сообщение\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"предыдущее непрочитанное сообщение\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"пометить текущую дискуссию как прочитанную\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"пометить текущую поддискуссию как прочитанную\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"установить флаг состояния для сообщения\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"сохранить изменения почтового ящика\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"пометить сообщения по образцу\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"восстановить сообщения по образцу\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"снять пометку с сообщений по образцу\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"середина страницы\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"следующая запись\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"вниз на одну строку\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"следующая страница\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"конец сообщения\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"разрешить/запретить отображение цитируемого текста\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"пропустить цитируемый текст\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"в начало сообщения\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"передать сообщение/вложение внешней программе\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"предыдущая запись\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"вверх на одну строку\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"предыдущая страница\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"напечатать текущую запись\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"запросить адреса у внешней программы\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"добавить результаты нового запроса к текущим результатам\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"сохранить изменения почтового ящика и выйти\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"продолжить отложенное сообщение\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"очистить и перерисовать экран\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{внутренний}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"переименовать текущий почтовый ящик (только IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"ответить на сообщение\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"использовать текущее сообщение в качестве шаблона для нового\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"сохранить сообщение/вложение в ящик/файл\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"поиск по образцу\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"обратный поиск по образцу\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"поиск следующего совпадения\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"поиск предыдущего совпадения\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"установить/сбросить режим выделения образца цветом\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"запустить внешнюю программу\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"сортировать сообщения\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"сортировать сообщения в обратном порядке\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"пометить текущую запись\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"применить следующую функцию к помеченным сообщениям\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"выполнить операцию ТОЛЬКО для помеченных сообщений\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"пометить текущую поддискуссию\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"пометить текущую дискуссию\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"установить/сбросить флаг 'новое' для сообщения\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"разрешить/запретить перезапись почтового ящика\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"\"\n\"переключиться между режимами просмотра всех файлов и просмотра почтовых \"\n\"ящиков\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"начало страницы\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"восстановить текущую запись\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"восстановить все сообщения в дискуссии\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"восстановить все сообщения в поддискуссии\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"вывести номер версии Mutt и дату\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"просмотреть вложение, используя при необходимости mailcap\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"показать вложения\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"показать код нажатой клавиши\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"показать текущий шаблон ограничения\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"свернуть/развернуть текущую дискуссию\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"свернуть/развернуть все дискуссии\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"вложить открытый PGP-ключ\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"вывести параметры PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"отправить открытый PGP-ключ\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"проверить открытый PGP-ключ\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"показать идентификатор владельца ключа\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"проверить PGP-сообщение в текстовом формате\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Использовать созданную цепочку\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Добавить remailer в цепочку\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Вставить remailer в цепочку\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Удалить remailer из цепочки\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Выбрать предыдущий элемент в цепочке\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Выбрать следующий элемент в цепочке\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"послать сообщение через цепочку remailer\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"создать расшифрованную копию и удалить оригинал\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"создать расшифрованную копию\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"удалить фразы-пароли из памяти\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"извлечь поддерживаемые открытые ключи\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"вывести параметры S/MIME\"\n"
  },
  {
    "path": "po/sk.po",
    "content": "# MUTT\n# Copyright (C) 1998 Free Software Foundation, Inc.\n# Miroslav Vasko <vasko@ies.sk>, 1998.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 0.95.6i\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 1999-07-29 00:00+0100\\n\"\n\"Last-Translator: Miroslav Vasko <vasko@ies.sk>\\n\"\n\"Language-Team: Slovak <sk@li.org>\\n\"\n\"Language: sk\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=iso-8859-2\\n\"\n\"Content-Transfer-Encoding: 8-bit\\n\"\n\n#: account.c:163\n#, fuzzy, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Premenova na: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Heslo pre %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Koniec\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Zma\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Odma\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Oznai\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Pomoc\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Nemte iadnych zstupcov!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Zstupci\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Zstupca ako: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Zstupcu s tmto menom u mte definovanho!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adresa: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Vlastn meno: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Akceptova?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Uloi do sboru: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Chyba pri tan sprvy!\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Pridal som zstupcu.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Chyba pri prezeran sboru\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Nenaiel som ablnu nzvu, pokraova?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Zostavovacia poloka mailcap-u vyaduje %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, fuzzy, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Chyba pri analze adresy!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Nemono otvori sbor na analzu hlaviiek.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Nemono otvori sbor na odstrnenie hlaviiek.\"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \"Nemono otvori sbor na analzu hlaviiek.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"iadna zostavovacia poloka mailcap-u pre %s, vytvram przdny sbor.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Vstupn poloka mailcap-u vyaduje %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"iadna vstupn poloka mailcap-u pre %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"iadna poloka mailcap-u nebola njden. Prezerm ako text.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME typ nie je definovan. Nemono zobrazi pripojen dta.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Nemono vytvori filter.\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"Prlohy\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"Prlohy\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Nemono vytvori filter\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Chyba zpisu!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Neviem, ako vytlai dta!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Zmena adresra\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Maska\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s nie je adresr.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Schrnky [%d]\"\n\n#: browser.c:546\n#, fuzzy, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Adresr [%s], maska sboru: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Adresr [%s], maska sboru: %s\"\n\n#: browser.c:562\n#, fuzzy\nmsgid \"Can't attach a directory!\"\nmsgstr \"Nemono prezera adresr\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Maske nevyhovuj iadne sbory\"\n\n#: browser.c:905\n#, fuzzy\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Tto opercia nie je podporovan pre PGP sprvy.\"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Tto opercia nie je podporovan pre PGP sprvy.\"\n\n#: browser.c:952\n#, fuzzy\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Tto opercia nie je podporovan pre PGP sprvy.\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"Nemono vytvori filter.\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"\"\n\n#: browser.c:979\n#, fuzzy\nmsgid \"Mailbox deleted.\"\nmsgstr \"Bola zisten sluka v makre.\"\n\n#: browser.c:985\n#, fuzzy\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Pota nebola odoslan.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Zme adresr na: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Chyba pri tan adresra.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Maska sborov: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Sptn triedenie poda (d)tumu, zn(a)kov, (z)-vekosti, (n)etriedi? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Triedenie poda (d)tumu, zn(a)kov, (z)-vekosti, alebo (n)etriedi? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dazn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nov meno sboru: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Nemono prezera adresr\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Chyba pri prezeran sboru\"\n\n#: buffy.c:504\n#, fuzzy\nmsgid \"New mail in \"\nmsgstr \"Nov pota v %s.\"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: terminl tto farbu nepodporuje\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: nenjden farba\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: nenjden objekt\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: prkaz je platn iba pre indexovan objekt\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: prli mlo parametrov\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Chbajce parametre.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"farba: prli mlo parametrov\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: prli mlo parametrov\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: vlastnos nenjden\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"prli mlo argumentov\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"prli vea argumentov\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"tandardn farby nepodporovan\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Overi PGP podpis?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Nemono vytvori doasn sbor!\"\n\n#: commands.c:128\n#, fuzzy\nmsgid \"Cannot create display filter\"\nmsgstr \"Nemono vytvori filter.\"\n\n#: commands.c:152\n#, fuzzy\nmsgid \"Could not copy message\"\nmsgstr \"Nemono posla sprvu.\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Prkaz: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Presmerova sprvu do: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Presmerova oznaen sprvy do: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Chyba pri analze adresy!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Presmerova sprvu do %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Presmerova sprvy do %s\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Message not bounced.\"\nmsgstr \"Sprva bola presmerovan.\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Messages not bounced.\"\nmsgstr \"Sprvy boli presmerovan.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Sprva bola presmerovan.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Sprvy boli presmerovan.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\n#, fuzzy\nmsgid \"Can't create filter process\"\nmsgstr \"Nemono vytvori filter\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Poli do rry prkazu: \"\n\n#: commands.c:510\n#, fuzzy\nmsgid \"No printing command has been defined.\"\nmsgstr \"cykluj medzi schrnkami s prchodzmi sprvami\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Vytlai sprvu?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Vytlai oznaen sprvy?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Sprva bola vytlaen\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Sprvy boli vytlaen\"\n\n#: commands.c:526\n#, fuzzy\nmsgid \"Message could not be printed\"\nmsgstr \"Sprva bola vytlaen\"\n\n#: commands.c:527\n#, fuzzy\nmsgid \"Messages could not be printed\"\nmsgstr \"Sprvy boli vytlaen\"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Spt.tried.(d)t/(f)-od/p(r)/(s)-pred/k(o)mu/(t)-re/(u)-ne/(z)-ve/(c)-\"\n\"skre: \"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Tried. (d)t/(f)-od/p(r)/(s)-pred/k(o)mu/(t)-re/(u)-ne/(z)-ve/(c)-sk:\"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrsotuzc\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Prkaz shell-u: \"\n\n#: commands.c:741\n#, fuzzy, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"%s%s do schrnky\"\n\n#: commands.c:742\n#, fuzzy, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"%s%s do schrnky\"\n\n#: commands.c:743\n#, fuzzy, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"%s%s do schrnky\"\n\n#: commands.c:744\n#, fuzzy, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"%s%s do schrnky\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s%s do schrnky\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s%s do schrnky\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" oznaen\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Koprujem do %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"\"\n\n#: commands.c:945\n#, fuzzy, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Spjam sa s %s...\"\n\n#: commands.c:950\n#, fuzzy, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Spjam sa s %s...\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"\"\n\n#: compose.c:47\n#, fuzzy\nmsgid \"There are no attachments.\"\nmsgstr \"Vlkno obsahuje netan sprvy.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Posla\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Prerui\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Pripoj sbor\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Popsa\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Oznaovanie nie je podporovan.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Podp, zaifruj\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Zaifruj\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Podpsa\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"(pokraova)\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" podp ako: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<td>\"\n\n#: compose.c:165\n#, fuzzy\nmsgid \"Encrypt with: \"\nmsgstr \"Zaifruj\"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] u neexistuje!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] bolo zmenen. Aktualizova kdovanie?\"\n\n#: compose.c:269\n#, fuzzy\nmsgid \"-- Attachments\"\nmsgstr \"Prlohy\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Nemete zmaza jedin pridan dta.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"\"\n\n#: compose.c:713\n#, fuzzy, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Nemono pripoji!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Otvor schrnku, z ktorej sa bude pridva sprva\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Nemono uzamkn schrnku!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"V tejto zloke nie s sprvy.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Oznate sprvy, ktor chcete prida!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Nemono pripoji!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Neplatn kdovanie.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Uloi kpiu tejto sprvy?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Premenova na: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, fuzzy, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Nemono zisti stav: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Nov sbor: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type je formy zklad/pod\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Neznme Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Nemono vytvori sbor %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Nemono vytvori pripojen dta\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Odloi tto sprvu?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Zapsa sprvu do schrnky\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Zapisujem sprvu do %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Sprva bola zapsan.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Nemono vytvori doasn sbor\"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"Tto sprva nie je viditen.\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Vytvori %s?\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Chyba v prkazovom riadku: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec dt s podpisom PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Chyba: neoakvan koniec sboru! --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ZAIATOK SPRVY PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- ZAIATOK BLOKU VEREJNHO KA PGP --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- ZAIATOK SPRVY PODPSANEJ S PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\n#, fuzzy\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- KONIEC SPRVY PGP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- KONIEC BLOKU VEREJNHO KA PGP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\n#, fuzzy\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- KONIEC SPRVY PODPSANEJ S PGP --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Chyba: nemono njs zaiatok sprvy PGP! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Chyba: nemono vytvori doasn sbor! --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Nasledujce dta s ifrovan pomocou PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Nasledujce dta s ifrovan pomocou PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec dt ifrovanch pomocou PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\n#, fuzzy\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec dt ifrovanch pomocou PGP/MIME --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Nemono posla sprvu.\"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Nasledujce dta s podpsan s S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Nasledujce dta s ifrovan pomocou S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec dt s podpisom S/MIME --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec dt ifrovanch pomocou S/MIME --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"Neplatn mesiac: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Neplatn mesiac: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Neplatn mesiac: %s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"Zaifruj\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"ID ka: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"Koniec  \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"Spjam sa s %s...\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Pripjam sa na %s\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Chyba v prkazovom riadku: %s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"ID ka: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Koniec  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Oznai  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Skontrolova k  \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Ke S/MIME zhodujce sa \"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"Ke PGP zhodujce sa \"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"Ke S/MIME zhodujce sa \"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"Ke PGP zhodujce sa \"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\n#, fuzzy\nmsgid \"ID is not valid.\"\nmsgstr \"Toto ID nie je dveryhodn.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\n#, fuzzy\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Toto ID je dveryhodn iba nepatrne.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, fuzzy, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Chcete to naozaj poui?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Poui ID ka = \\\"%s\\\" pre %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Zadajte ID ka pre %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Prosm zadajte ID ka: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP k 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"eswabf\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Podp ako: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"Nemono otvori sbor na analzu hlaviiek.\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \"\"\n\n#: crypt.c:74\n#, fuzzy, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Nasleduje vstup PGP (aktulny as: \"\n\n#: crypt.c:89\n#, fuzzy\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Frza hesla PGP bola zabudnut.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Spam PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Pota nebola odoslan.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"\"\n\n#: crypt.c:913\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"Chyba: multipart/signed nem protokol.\"\n\n#: crypt.c:947\n#, fuzzy\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"Chyba: multipart/signed nem protokol.\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\n#: crypt.c:998\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Nasledujce dta s podpsan s PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\n#: crypt.c:1010\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec dt s podpisom PGP/MIME --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Spam S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"y-no\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"nie\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Opusti Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"neznma chyba\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Stlate klves pre pokraovanie...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' pre zoznam): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Nie je otvoren iadna schrnka.\"\n\n#: curs_main.c:53\n#, fuzzy\nmsgid \"There are no messages.\"\nmsgstr \"Vlkno obsahuje netan sprvy.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Schrnka je iba na tanie.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\n#, fuzzy\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"%c: nepodporovan v tomto mde\"\n\n#: curs_main.c:56\n#, fuzzy\nmsgid \"No visible messages.\"\nmsgstr \"iadne nov sprvy\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Nemono prepn zpis na schrnke urenej iba na tanie!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Zmeny v zloke bud zapsan, ke ho opustte.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Zmeny v zloke nebud zapsan.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Koniec\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Uloi\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Nap\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Odpovedz\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Skupina\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Schrnka bola zmenen zvonku. Prznaky mu by nesprvne.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"V tejto schrnke je nov pota.\"\n\n#: curs_main.c:578\n#, fuzzy\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Schrnka bola zmenen zvonku. Prznaky mu by nesprvne.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"iadne oznaen sprvy.\"\n\n#: curs_main.c:731 menu.c:907\n#, fuzzy\nmsgid \"Nothing to do.\"\nmsgstr \"Spjam sa s %s...\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Skoi na sprvu: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Parameter mus by slo sprvy.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Tto sprva nie je viditen.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Neplatn slo sprvy.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"iadne odmazan sprvy.\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Zmaza sprvy zodpovedajce: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"iadny limitovac vzor nie je aktvny.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Limit: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Limituj sprvy zodpovedajce: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Ukoni Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Ozna sprvy zodpovedajce: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"iadne odmazan sprvy.\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Odma sprvy zodpovedajce: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Odzna sprvy zodpovedajce: \"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Zatvram spojenie s IMAP serverom...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Otvor schrnku iba na tanie\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Otvor schrnku\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"iadna schrnka s novmi sprvami.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s nie je schrnka\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Ukoni Mutt bey uloenia?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Vlknenie nie je povolen.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"uloi tto sprvu a posla neskr\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Ste na poslednej sprve.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"iadne odmazan sprvy.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Ste na prvej sprve.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Vyhadvanie pokrauje z vrchu.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Vyhadvanie pokrauje zo spodu.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Tto sprva nie je viditen.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"iadne nov sprvy\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Tto sprva nie je viditen.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"iadne netan sprvy\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"zobrazi sprvu\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"iadne aie vlkna.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Ste na prvom vlkne.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Vlkno obsahuje netan sprvy.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"iadne odmazan sprvy.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"upravi sprvu\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"odmaza vetky sprvy vo vlkne\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"iadne odmazan sprvy.\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tvlo riadok zanajci s jednoduchm znakom ~\\n\"\n\"~b uvatelia\\tpridaj pouvateov do poa Bcc:\\n\"\n\"~c uvatelia\\tpridaj pouvateov do poa Cc:\\n\"\n\"~f sprvy\\tpridaj sprvy\\n\"\n\"~F sprvy\\ttak isto ako ~f, ale prid aj hlaviky\\n\"\n\"~h\\t\\tuprav hlaviku sprvy\\n\"\n\"~m sprvy\\tvlo a cituj sprvy\\n\"\n\"~M sprvy\\ttak isto ako ~m, ale vlo aj hlaviky\\n\"\n\"~p\\t\\tvytla sprvu\\n\"\n\"~q\\t\\tzap sprvu a ukoni editor\\n\"\n\"~r sbor\\t\\tnataj do editoru sbor\\n\"\n\"~t uvatelia\\tpridaj pouvateov do poa To:\\n\"\n\"~u\\t\\tvyvolaj predchdzajci riadok\\n\"\n\"~v\\t\\tuprav sprvu s editorom $visual\\n\"\n\"~w sbor\\t\\tzap sprvo do sboru sbor\\n\"\n\"~x\\t\\tzru zmeny a ukoni editor\\n\"\n\"~?\\t\\ttto pomoc\\n\"\n\".\\t\\tsamotn bodka na riadku ukon vstup\\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\tvlo riadok zanajci s jednoduchm znakom ~\\n\"\n\"~b uvatelia\\tpridaj pouvateov do poa Bcc:\\n\"\n\"~c uvatelia\\tpridaj pouvateov do poa Cc:\\n\"\n\"~f sprvy\\tpridaj sprvy\\n\"\n\"~F sprvy\\ttak isto ako ~f, ale prid aj hlaviky\\n\"\n\"~h\\t\\tuprav hlaviku sprvy\\n\"\n\"~m sprvy\\tvlo a cituj sprvy\\n\"\n\"~M sprvy\\ttak isto ako ~m, ale vlo aj hlaviky\\n\"\n\"~p\\t\\tvytla sprvu\\n\"\n\"~q\\t\\tzap sprvu a ukoni editor\\n\"\n\"~r sbor\\t\\tnataj do editoru sbor\\n\"\n\"~t uvatelia\\tpridaj pouvateov do poa To:\\n\"\n\"~u\\t\\tvyvolaj predchdzajci riadok\\n\"\n\"~v\\t\\tuprav sprvu s editorom $visual\\n\"\n\"~w sbor\\t\\tzap sprvo do sboru sbor\\n\"\n\"~x\\t\\tzru zmeny a ukoni editor\\n\"\n\"~?\\t\\ttto pomoc\\n\"\n\".\\t\\tsamotn bodka na riadku ukon vstup\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: neplatn slo sprvy.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Ukonite sprvu so samotnou bodkou na riadku)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"iadna schrnka.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Sprva obsahuje:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(pokraova)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"chbajci nzov sboru.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Sprva neobsahuje iadne riadky.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: neznmy prkaz editoru (~? pre npovedu)\\n\"\n\n#: editmsg.c:78\n#, fuzzy, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"Nemono vytvori doasn sbor!\"\n\n#: editmsg.c:90\n#, fuzzy, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"Nemono vytvori doasn sbor!\"\n\n#: editmsg.c:110\n#, fuzzy, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"Nemono vytvori doasn sbor!\"\n\n#: editmsg.c:127\n#, fuzzy\nmsgid \"Message file is empty!\"\nmsgstr \"Schrnka je przdna.\"\n\n#: editmsg.c:134\n#, fuzzy\nmsgid \"Message not modified!\"\nmsgstr \"Sprva bola vytlaen\"\n\n#: editmsg.c:142\n#, fuzzy, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Nemono vytvori sbor %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, fuzzy, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Nemono vytvori sbor %s\"\n\n#: editmsg.c:209\n#, fuzzy, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Nemono vytvori doasn sbor\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Nastavi prznak\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Vymaza prznak\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- Chyba: Nemono zobrazi iadnu as z Multipart/Alternative! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Prloha #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Typ: %s/%s, Kdovanie: %s, Vekos: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Autoprezeranie pouitm %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Vyvolvam prkaz na automatick prezeranie: %s\"\n\n#: handler.c:1366\n#, fuzzy, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- na %s --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Chyba pri automatickom prezeran (stderr) %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Chyba: message/external-body nem vyplnen parameter access-type --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Prloha %s/%s \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(vekos %s bytov) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"bola zmazan --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- na %s --]\\n\"\n\n#: handler.c:1485\n#, fuzzy, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- na %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, fuzzy, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Prloha %s/%s \"\n\n#: handler.c:1500\n#, fuzzy\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- Prloha %s/%s nie je vloen v sprve, --]\\n\"\n\"[-- a oznaenmu externmu zdroju --]\\n\"\n\"[-- vyprala platnos. --]\\n\"\n\n#: handler.c:1518\n#, fuzzy, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"\"\n\"[-- Prloha %s/%s nie je vloen v sprve, --]\\n\"\n\"[-- a oznaen typ prstupu %s nie je podporovan --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Nemono otvori doasn sbor!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Chyba: multipart/signed nem protokol.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Prloha %s/%s \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s nie je podporovan \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(pouite '%s' na prezeranie tejto asti)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(potrebujem 'view-attachments' priraden na klvesu!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: sbor nemono pripoji\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"CHYBA: prosm oznmte tto chybu\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<NEZNMY>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Veobecn vzby:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Neviazan funkcie:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Pomoc pre %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"\"\n\n#: hook.c:279\n#, fuzzy, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"%s: neznma hodnota\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Prihlasujem sa...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, fuzzy, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Vyberm %s...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"\"\n\n#: imap/browse.c:189\n#, fuzzy\nmsgid \"No such folder\"\nmsgstr \"%s: nenjden farba\"\n\n#: imap/browse.c:278\n#, fuzzy\nmsgid \"Create mailbox: \"\nmsgstr \"Otvor schrnku\"\n\n#: imap/browse.c:283 imap/browse.c:338\n#, fuzzy\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Schrnka nie je zmenen.\"\n\n#: imap/browse.c:291\n#, fuzzy\nmsgid \"Mailbox created.\"\nmsgstr \"Bola zisten sluka v makre.\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Otvor schrnku\"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"Bola zisten sluka v makre.\"\n\n#: imap/command.c:446\n#, fuzzy\nmsgid \"Mailbox closed\"\nmsgstr \"Bola zisten sluka v makre.\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: imap/imap.c:189\n#, fuzzy, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Zatvram spojenie s IMAP serverom...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Tento IMAP server je star. Mutt s nm nevie pracova.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"\"\n\n#: imap/imap.c:459 pop_lib.c:336\n#, fuzzy\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Zakdovan k sedenia\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Vyberm %s...\"\n\n#: imap/imap.c:756\n#, fuzzy\nmsgid \"Error opening mailbox\"\nmsgstr \"Chyba pri zapisovan do schrnky!\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Vytvori %s?\"\n\n#: imap/imap.c:1183\n#, fuzzy\nmsgid \"Expunge failed\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: imap/imap.c:1195\n#, fuzzy, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"tam %d novch sprv (%d bytov)...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Ukladm stavov prznaky sprvy... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"Chyba pri analze adresy!\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Vymazvam sprvy zo serveru...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\n#, fuzzy\nmsgid \"Bad mailbox name\"\nmsgstr \"Otvor schrnku\"\n\n#: imap/imap.c:1863\n#, fuzzy, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Koprujem do %s...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Spjam sa s %s...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Koprujem do %s...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Spjam sa s %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Nemono zska hlaviky z tejto verzie IMAP serveru.\"\n\n#: imap/message.c:108\n#, fuzzy, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Nemono vytvori doasn sbor!\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"Vyvolvam hlaviky sprv... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"Vyvolvam hlaviky sprv... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Vyvolvam sprvu...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"Odsvam sprvu ...\"\n\n#: imap/message.c:825\n#, fuzzy, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Presvam pretan sprvy do %s...\"\n\n#: imap/message.c:829\n#, fuzzy, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Zapisujem sprvu do %s ...\"\n\n#: imap/util.c:357\n#, fuzzy\nmsgid \"Continue?\"\nmsgstr \"(pokraova)\\n\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, fuzzy, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"V tejto schrnke je nov pota.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \"oznai sprvy zodpovedajce vzoru\"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"odznai sprvy zodpovedajce vzoru\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"upravi popis prlohy\"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"upravi popis prlohy\"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"upravi popis prlohy\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"zstupca: iadna adresa\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"neplatn poloka hlaviky\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: neznma metda triedenia\"\n\n#: init.c:1592\n#, fuzzy, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default: chyba v regvr: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: neznma premenn\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"prefix je neplatn s vynulovanm\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"hodnota je neplatn s vynulovanm\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s je nastaven\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s je nenastaven\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Neplatn de v mesiaci: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: neplatn typ schrnky\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: neplatn hodnota\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: neplatn hodnota\"\n\n#: init.c:2183\n#, fuzzy, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: neznma hodnota\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: neznma hodnota\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Chyba v %s, riadok %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"zdroj: chyby v %s\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"zdroj: chyba na %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"zdroj: prli vea argumentov\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: neznmy prkaz\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Chyba v prkazovom riadku: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"nemono uri domci adresr\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"nemono uri meno pouvatea\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"nemono uri meno pouvatea\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"prli mlo argumentov\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Bola zisten sluka v makre.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Klvesa nie je viazan.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Klvesa nie je viazan. Stlate '%s' pre npovedu.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: prli vea parametrov\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: tak menu neexistuje\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"przdna postupnos klves\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: prli vea parametrov\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: v tabuke neexistuje tak funkcia\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: przdna postupnos klves\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"makro: prli vea parametrov\"\n\n#: keymap.c:1091\n#, fuzzy\nmsgid \"exec: no arguments\"\nmsgstr \"exec: prli mlo parametrov\"\n\n#: keymap.c:1111\n#, fuzzy, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: v tabuke neexistuje tak funkcia\"\n\n#: keymap.c:1132\n#, fuzzy\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Zadajte ID ka pre %s: \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Nedostatok pamte!\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"Ak chcete kontaktova vvojrov, napte na <mutt-dev@mutt.org>.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-8 Michael R. Elkins a ostatn.\\n\"\n\"Mutt neprichdza so IADNOU ZRUKOU; pre detaily napte `mutt -vv'.\\n\"\n\"Mutt je von program, a ste vtan ri ho\\n\"\n\"za uritch podmienok; napte `mutt -vv' pre detaily.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"pouitie: mutt [ -nRzZ ] [ -e <prk> ] [ -F <sb> ] [ -m <typ> ] [ -f \"\n\"<sb> ]\\n\"\n\"       mutt [ -nx ] [ -e <prk> ] [ -a <sb> ] [ -F <sb> ] [ -H <sb> ] [ -\"\n\"i <sb> ] [ -s <predm> ] [ -b <adr> ] [ -c <adr> ] <adr> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <prk> ] [ -F <sb> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"prepnae:\\n\"\n\"  -a <sbor>\\tpripoji sbor do sprvy\\n\"\n\"  -b <adresa>\\tuvies adresy pre slep kpie (BCC)\\n\"\n\"  -c <adresa>\\tuvies adresy pre kpie (CC)\\n\"\n\"  -e <prkaz>\\tuvies prkaz, ktor sa vykon po inicializcii\\n\"\n\"  -f <sbor>\\tuvies, ktor schrnka sa bude ta\\n\"\n\"  -F <sbor>\\tuvies alternatvny sbor muttrc\\n\"\n\"  -H <sbor>\\tuvies sbor s nvrhom, z ktorho sa preta hlavika\\n\"\n\"  -i <sbor>\\tuvies sbor, ktor m Mutt vloi do odpovede\\n\"\n\"  -m <typ>\\tuvies tandardn typ schrnky\\n\"\n\"  -n\\t\\tspsobuje, e Mutt neta systmov sbor Muttrc\\n\"\n\"  -p\\t\\tvyvola a odloen sprvu\\n\"\n\"  -R\\t\\totvori schrnku len na tanie\\n\"\n\"  -s <predm>\\tuvies predmet (mus by v vodzovkch, ak obsahuje medzery)\\n\"\n\"  -v\\t\\tzobrazi verziu a defincie z asu kompilcie\\n\"\n\"  -x\\t\\tsimulova md posielania typick pre mailx\\n\"\n\"  -y\\t\\tvybra schrnku uveden vo Vaom zozname 'mailbox'\\n\"\n\"  -z\\t\\tukoni okamite, ak v schrnke nie s iadne sprvy\\n\"\n\"  -Z\\t\\totvori prv zloku s novmi sprvami, okamite skoni, ak iadne \"\n\"nie s\\n\"\n\"  -h\\t\\ttto pomoc\"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"pouitie: mutt [ -nRzZ ] [ -e <prk> ] [ -F <sb> ] [ -m <typ> ] [ -f \"\n\"<sb> ]\\n\"\n\"       mutt [ -nx ] [ -e <prk> ] [ -a <sb> ] [ -F <sb> ] [ -H <sb> ] [ -\"\n\"i <sb> ] [ -s <predm> ] [ -b <adr> ] [ -c <adr> ] <adr> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <prk> ] [ -F <sb> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"prepnae:\\n\"\n\"  -a <sbor>\\tpripoji sbor do sprvy\\n\"\n\"  -b <adresa>\\tuvies adresy pre slep kpie (BCC)\\n\"\n\"  -c <adresa>\\tuvies adresy pre kpie (CC)\\n\"\n\"  -e <prkaz>\\tuvies prkaz, ktor sa vykon po inicializcii\\n\"\n\"  -f <sbor>\\tuvies, ktor schrnka sa bude ta\\n\"\n\"  -F <sbor>\\tuvies alternatvny sbor muttrc\\n\"\n\"  -H <sbor>\\tuvies sbor s nvrhom, z ktorho sa preta hlavika\\n\"\n\"  -i <sbor>\\tuvies sbor, ktor m Mutt vloi do odpovede\\n\"\n\"  -m <typ>\\tuvies tandardn typ schrnky\\n\"\n\"  -n\\t\\tspsobuje, e Mutt neta systmov sbor Muttrc\\n\"\n\"  -p\\t\\tvyvola a odloen sprvu\\n\"\n\"  -R\\t\\totvori schrnku len na tanie\\n\"\n\"  -s <predm>\\tuvies predmet (mus by v vodzovkch, ak obsahuje medzery)\\n\"\n\"  -v\\t\\tzobrazi verziu a defincie z asu kompilcie\\n\"\n\"  -x\\t\\tsimulova md posielania typick pre mailx\\n\"\n\"  -y\\t\\tvybra schrnku uveden vo Vaom zozname 'mailbox'\\n\"\n\"  -z\\t\\tukoni okamite, ak v schrnke nie s iadne sprvy\\n\"\n\"  -Z\\t\\totvori prv zloku s novmi sprvami, okamite skoni, ak iadne \"\n\"nie s\\n\"\n\"  -h\\t\\ttto pomoc\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Nastavenia kompilcie:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Chyba pri inicializcii terminlu.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Ladenie na rovni %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG nebol definovan pri kompilcii. Ignorovan.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"\"\n\n#: main.c:852\n#, fuzzy, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Nemono vytvori sbor %s\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Neboli uveden iadni prjemcovia.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: neschopn pripoji sbor.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"iadna schrnka s novmi sprvami.\"\n\n#: main.c:1171\n#, fuzzy\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"cykluj medzi schrnkami s prchodzmi sprvami\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Schrnka je przdna.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"tam %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Schrnka je poruen!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Schrnka bola poruen!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Fatlna chyba! Nemono znovu otvori schrnku!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Nemono uzamkn schrnku!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: schrnka zmenen, ale iadne zmenen sprvy! (oznmte tto chybu)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Zapisujem %s...\"\n\n#: mbox.c:962\n#, fuzzy\nmsgid \"Committing changes...\"\nmsgstr \"Kompilujem vyhadvac vzor...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Zpis zlyhal! Schrnka bola iastone uloen do %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Nemono znovu otvori schrnku!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Znovuotvram schrnku...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Sko do: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Neplatn slo indexu.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"iadne poloky.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Nemte rolova alej dolu.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Nemte rolova alej hore.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Ste na prvej strnke.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Ste na poslednej strnke.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Ste na poslednej poloke.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Ste na prvej poloke.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Hada: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Hada sptne: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Nenjden.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"iadne oznaen poloky.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Hadanie nie je implementovan pre toto menu.\"\n\n#: menu.c:1006\n#, fuzzy\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Hadanie nie je implementovan pre toto menu.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Oznaovanie nie je podporovan.\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Vyberm %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Nemono posla sprvu.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, fuzzy, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Spjam sa s %s...\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, fuzzy, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Pripjam sa na %s\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, fuzzy, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Koprujem do %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, fuzzy, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Nemono njs adresu pre hostitea %s.\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Spjam sa s %s...\"\n\n#: mutt_socket.c:576\n#, fuzzy, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Nemono otvori %s\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"\"\n\n#: mutt_ssl.c:418\n#, fuzzy, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\n#, fuzzy\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"nemono uri domci adresr\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"Pripjam sa na %s\"\n\n#: mutt_ssl.c:541\n#, fuzzy\nmsgid \"Unknown\"\nmsgstr \"neznma chyba\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, fuzzy, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"%s: sbor nemono pripoji\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\n#, fuzzy\nmsgid \"[invalid date]\"\nmsgstr \"%s: neplatn hodnota\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"nemono uri domci adresr\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"nemono uri domci adresr\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Chyba v prkazovom riadku: %s\\n\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\n#, fuzzy\nmsgid \"roa\"\nmsgstr \"oac\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"Pripjam sa na %s\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Chyba pri inicializcii terminlu.\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Spjam sa s %s...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Pripjam sa na %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\n#, fuzzy\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Sbor je adresr, uloi v om?\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Sbor je adresr, uloi v om?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Sbor v adresri: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Sbor existuje, (o)-prepsa, prid(a) alebo (c)-zrui?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"oac\"\n\n#: muttlib.c:1507\n#, fuzzy\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Zapsa sprvu do schrnky\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Prida sprvy do %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s nie je schrnka!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Poet zmkov prekroen, vymaza zmok pre %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Nemono zisti stav: %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Vypral as na uzamknutie pomocou fcntl!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"akm na zmok od fcntl... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Vypral as na uzamknutie celho sboru!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"akm na uzamknutie sboru... %d\"\n\n#: mx.c:555\n#, fuzzy, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Nemono zisti stav: %s.\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Nemono zosynchronizova schrnku %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Presun pretan sprvy do %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Odstrni %d zmazan sprvy?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Odstrni %d zmazanch sprv?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Presvam pretan sprvy do %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Schrnka nie je zmenen.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d ostalo, %d presunutch, %d vymazanch.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d ostalo, %d vymazanch.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Stlate '%s' na prepnutie zpisu\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Pouite 'prepn-zpis' na povolenie zpisu!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Schrnka je oznaen len na tanie. %s\"\n\n#: mx.c:1155\n#, fuzzy\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Bola zisten sluka v makre.\"\n\n#: mx.c:1474\n#, fuzzy\nmsgid \"Can't write message\"\nmsgstr \"upravi sprvu\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"PredSt\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"aSt\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Pozri prlohu\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"a\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Spodok sprvy je zobrazen.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Vrch sprvy je zobrazen.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Pomoc sa akurt zobrazuje.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Nie je a citovan text.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"iadny a necitovan text za cittom.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"viaczlokov sprva nem parameter ohranienia (boundary)!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Chyba vo vraze: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"chyba vo vraze\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Neplatn de v mesiaci: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Neplatn mesiac: %s\"\n\n#: pattern.c:570\n#, fuzzy, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Neplatn mesiac: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"chyba vo vzore na: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"chbajci parameter\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"nesprovan ztvorky: %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: neplatn prkaz\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: nepodporovan v tomto mde\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"chbajci parameter\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"nesprovan ztvorky: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"przdny vzor\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"chyba: neznmy operand %d (oznmte tto chybu).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Kompilujem vyhadvac vzor...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Vykonvam prkaz na njdench sprvach...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"iadne sprvy nesplnili kritrium.\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"Ukladm...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Hadanie narazilo na spodok bez njdenia zhody\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Hadanie narazilo na vrchol bez njdenia zhody\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Hadanie bolo preruen.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Zadajte frzu hesla PGP:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Frza hesla PGP bola zabudnut.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Chyba: nemono vytvori podproces PGP! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Koniec vstupu PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Chyba: nemono vytvori podproces PGP! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Nemono otvori podproces PGP!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"eswabf\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"eswabf\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"eswabf\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, podp (a)ko, o(b)e, (i)nline, alebo (f)-zabudn na to? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"eswabf\"\n\n#: pgpinvoke.c:309\n#, fuzzy\nmsgid \"Fetching PGP key...\"\nmsgstr \"Vyvolvam sprvu...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\n#: pgpkey.c:532\n#, fuzzy, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"Ke PGP zhodujce sa \"\n\n#: pgpkey.c:534\n#, fuzzy, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"Ke PGP zhodujce sa \"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Nemono otvori /dev/null\"\n\n#: pgpkey.c:778\n#, fuzzy, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP k 0x%s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, fuzzy, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Oznaovanie nie je podporovan.\"\n\n#: pop.c:129\n#, fuzzy\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Nemono vytvori doasn sbor\"\n\n#: pop.c:276 pop_lib.c:212\n#, fuzzy, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Oznaovanie nie je podporovan.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"\"\n\n#: pop.c:454\n#, fuzzy\nmsgid \"Fetching list of messages...\"\nmsgstr \"Vyvolvam sprvu...\"\n\n#: pop.c:612\n#, fuzzy\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Nemono vytvori doasn sbor\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"tam %d novch sprv (%d bytov)...\"\n\n#: pop.c:756 pop.c:821\n#, fuzzy\nmsgid \"Checking for new messages...\"\nmsgstr \"Odsvam sprvu ...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"Hostite POP nie je definovan.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"iadna nov pota v schrnke POP.\"\n\n#: pop.c:856\n#, fuzzy\nmsgid \"Delete messages from server?\"\nmsgstr \"Vymazvam sprvy zo serveru...\"\n\n#: pop.c:858\n#, fuzzy, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"tam %d novch sprv (%d bytov)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Chyba pri zapisovan do schrnky!\"\n\n#: pop.c:904\n#, fuzzy, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [pretanch sprv: %d]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Server uzavrel spojenie!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"\"\n\n#: pop_auth.c:266\n#, fuzzy, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Oznaovanie nie je podporovan.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Neplatn mesiac: %s\"\n\n#: pop_lib.c:208\n#, fuzzy\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Vymazvam sprvy zo serveru...\"\n\n#: pop_lib.c:238\n#, fuzzy, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Pripjam sa na %s\"\n\n#: pop_lib.c:392\n#, fuzzy\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Zatvram spojenie s IMAP serverom...\"\n\n#: pop_lib.c:571\n#, fuzzy\nmsgid \"Verifying message indexes...\"\nmsgstr \"Zapisujem sprvu do %s ...\"\n\n#: pop_lib.c:593\n#, fuzzy\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Zatvram spojenie s IMAP serverom...\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Odloen sprvy\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"iadne odloen sprvy.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"Neplatn hlavika PGP\"\n\n#: postpone.c:496\n#, fuzzy\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Neplatn hlavika S/MIME\"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"Vyvolvam sprvu...\"\n\n#: postpone.c:592\n#, fuzzy\nmsgid \"Decryption failed.\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Nov otzka\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Urobi alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Hada\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"akm na odpove...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Prkaz otzky nie je definovan.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Otzka\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Otzka: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Otzka '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Presmerova\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Tlai\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Ukladm...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Pripojen dta boli uloen.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"VAROVANIE! Mete prepsa %s, pokraova?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Prloha bola prefiltrovan.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtrova cez: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Presmerova do: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Neviem ako tlai prlohy %s!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Vytlai oznaen prlohy?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Vytlai prlohu?\"\n\n#: recvattach.c:1009\n#, fuzzy\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"poui aiu funkciu na oznaen sprvy\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Prlohy\"\n\n#: recvattach.c:1057\n#, fuzzy\nmsgid \"There are no subparts to show!\"\nmsgstr \"Vlkno obsahuje netan sprvy.\"\n\n#: recvattach.c:1118\n#, fuzzy\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"vybra potu z POP serveru\"\n\n#: recvattach.c:1126\n#, fuzzy\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Mazanie prloh z PGP sprv nie je podporovan.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Mazanie prloh z PGP sprv nie je podporovan.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"je podporovan iba mazanie viaczlokovch prloh.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Presmerova mete iba asti message/rfc822.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing message!\"\nmsgstr \"Chyba pri posielan sprvy.\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing messages!\"\nmsgstr \"Chyba pri posielan sprvy.\"\n\n#: recvcmd.c:441\n#, fuzzy, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Nemono vytvori doasn sbor\"\n\n#: recvcmd.c:472\n#, fuzzy\nmsgid \"Forward as attachments?\"\nmsgstr \"zobrazi prlohy MIME\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Posun vo formte MIME encapsulated?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, fuzzy, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Nemono vytvori sbor %s\"\n\n#: recvcmd.c:752\n#, fuzzy\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"poui aiu funkciu na oznaen sprvy\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Nenjden iadne potov zoznamy!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\n#: remailer.c:478\n#, fuzzy\nmsgid \"Append\"\nmsgstr \"Posla\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"\"\n\n#: remailer.c:480\n#, fuzzy\nmsgid \"Delete\"\nmsgstr \"Oznai\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"\"\n\n#: remailer.c:535\n#, fuzzy\nmsgid \"Select a remailer chain.\"\nmsgstr \"zmaza vetky znaky v riadku\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"\"\n\n#: remailer.c:658\n#, fuzzy\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Ste na prvej sprve.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\n#: remailer.c:765\n#, fuzzy, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Chyba pri posielan sprvy, dcrsky proces vrtil %d (%s).\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Chyba pri posielan sprvy.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Nesprvne formtovan poloka pre typ %s v \\\"%s\\\", riadok %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Nepecifikovan cesta k mailcap\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"poloka mailcap-u pre typ %s nenjden\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: prli mlo parametrov\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: prli vea parametrov\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"iadny predmet, ukoni?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"iadny predmet, ukonujem.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Odpoveda na adresu %s%s?\"\n\n#: send.c:537\n#, fuzzy, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Odpoveda na adresu %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"iadna z oznaench sprv nie je viditen!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Priloi sprvu do odpovede?\"\n\n#: send.c:771\n#, fuzzy\nmsgid \"Including quoted message...\"\nmsgstr \"Posielam sprvu...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Nemono pripoji vetky poadovan sprvy!\"\n\n#: send.c:795\n#, fuzzy\nmsgid \"Forward as attachment?\"\nmsgstr \"Vytlai prlohu?\"\n\n#: send.c:799\n#, fuzzy\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Odsvam sprvu ...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Vyvola odloen sprvu?\"\n\n#: send.c:1426\n#, fuzzy\nmsgid \"Edit forwarded message?\"\nmsgstr \"Odsvam sprvu ...\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Zrui nezmenen sprvu?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Nezmenen sprva bola zruen.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Sprva bola odloen.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Nie s uveden iadni prjemcovia!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Neboli uveden iadni prjemcovia!\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"iadny predmet, zrui posielanie?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Nebol uveden predmet.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Posielam sprvu...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"prezri prlohu ako text\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Nemono posla sprvu.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Sprva bola odoslan.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Nenjden parameter ohranienia (boundary)! [ohlste tto chybu]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s u viac neexistuje!\"\n\n#: sendlib.c:878\n#, fuzzy, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s nie je schrnka\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Nemono otvori %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, fuzzy, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Chyba pri posielan sprvy, dcrsky proces vrtil %d (%s).\\n\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"\"\n\n#: signal.c:43\n#, fuzzy, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"Zachyten %s... Konm.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Zachyten %s... Konm.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Zachyten signl %d... Konm.\\n\"\n\n#: smime.c:141\n#, fuzzy\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Zadajte frzu hesla S/MIME:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"\"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"\"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"\"\n\n#: smime.c:388\n#, fuzzy\nmsgid \"Expired   \"\nmsgstr \"Koniec  \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"\"\n\n#: smime.c:394\n#, fuzzy\nmsgid \"Invalid   \"\nmsgstr \"Neplatn mesiac: %s\"\n\n#: smime.c:397\n#, fuzzy\nmsgid \"Unknown   \"\nmsgstr \"neznma chyba\"\n\n#: smime.c:429\n#, fuzzy, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"Ke S/MIME zhodujce sa \"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"Toto ID nie je dveryhodn.\"\n\n#: smime.c:761\n#, fuzzy\nmsgid \"Enter keyID: \"\nmsgstr \"Zadajte ID ka pre %s: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\n#, fuzzy\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"[-- Chyba: nemono vytvori podproces OpenSSL! --]\\n\"\n\n#: smime.c:1320\n#, fuzzy\nmsgid \"no certfile\"\nmsgstr \"Nemono vytvori filter.\"\n\n#: smime.c:1323\n#, fuzzy\nmsgid \"no mbox\"\nmsgstr \"(iadna schrnka)\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\n#, fuzzy\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Nemono otvori podproces OpenSSL!\"\n\n#: smime.c:1791 smime.c:1914\n#, fuzzy\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Koniec vstupu OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\n#, fuzzy\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Chyba: nemono vytvori podproces OpenSSL! --]\\n\"\n\n#: smime.c:1918\n#, fuzzy\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"\"\n\"[-- Nasledujce dta s ifrovan pomocou S/MIME --]\\n\"\n\"\\n\"\n\n#: smime.c:1921\n#, fuzzy\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"\"\n\"[-- Nasledujce dta s podpsan s S/MIME --]\\n\"\n\"\\n\"\n\n#: smime.c:1985\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec dt ifrovanch pomocou S/MIME --]\\n\"\n\n#: smime.c:1987\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Koniec dt s podpisom S/MIME --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, (w)-ifr s, podp (a)ko, o(b)e, alebo (f)-zabudn na to? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, (w)-ifr s, podp (a)ko, o(b)e, alebo (f)-zabudn na to? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"eswabf\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"(e)-ifr, (s)-podp, (w)-ifr s, podp (a)ko, o(b)e, alebo (f)-zabudn na to? \"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"eswabf\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Neplatn mesiac: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"Prihlasovanie zlyhalo.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Triedim schrnku...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Nemono njs triediacu funkciu! [oznmte tto chybu]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(iadna schrnka)\"\n\n#: thread.c:1095\n#, fuzzy\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Tto sprva nie je viditen.\"\n\n#: thread.c:1101\n#, fuzzy\nmsgid \"Parent message is not available.\"\nmsgstr \"Tto sprva nie je viditen.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"przdna opercia\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"printi zobrazovanie prloh pouva mailcap-u\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"prezri prlohu ako text\"\n\n#: ../keymap_alldefs.h:9\n#, fuzzy\nmsgid \"Toggle display of subparts\"\nmsgstr \"prepn zobrazovanie citovanho textu\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"presun na vrch strnky\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"znovu poli sprvu inmu pouvateovi\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"ozna nov sbor v tomto adresri\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"prezrie sbor\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"zobraz meno aktulne oznaenho sboru\"\n\n#: ../keymap_alldefs.h:15\n#, fuzzy\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"zmaza \"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"zmaza \"\n\n#: ../keymap_alldefs.h:17\n#, fuzzy\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"zmaza \"\n\n#: ../keymap_alldefs.h:18\n#, fuzzy\nmsgid \"list mailboxes with new mail\"\nmsgstr \"iadna schrnka s novmi sprvami.\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"zmeni adresre\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"skontroluj nov sprvy v schrnkach\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"priloi sbor(y) k tejto sprve\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"priloi sprvu/y k tejto sprve\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"upravi zoznam BCC\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"upravi zoznam CC\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"upravi popis prlohy\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"upravi kdovanie dt prlohy\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"vlote sbor na uloenie kpie tejto sprvy\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"upravi prikladan sbor\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"upravi pole 'from'\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"upravi sprvu s hlavikami\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"upravi sprvu\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"upravi prlohu s pouitm poloky mailcap-u\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"upravi pole Reply-To\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"upravi predmet tejto sprvy\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"upravi zoznam TO\"\n\n#: ../keymap_alldefs.h:36\n#, fuzzy\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"zmaza \"\n\n#: ../keymap_alldefs.h:37\n#, fuzzy\nmsgid \"edit attachment content type\"\nmsgstr \"upravi typ prlohy\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"zska doasn kpiu prlohy\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"spusti na sprvu ispell\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"zostavi nov prlohu pouijc poloku mailcap-u\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"uloi tto sprvu a posla neskr\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"premenova/presun priloen sbor\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"posla sprvu\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"prepn prznak, i zmaza sprvu po odoslan\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"obnovi informciu o zakdovan prlohy\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"zapsa sprvu do zloky\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"skoprova sprvu do sboru/schrnky\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"vytvori zstupcu z odosielatea sprvy\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"presun poloku na spodok obrazovky\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"presun poloku do stredu obrazovky\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"preun poloku na vrch obrazovky\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"urobi dekdovan (text/plain) kpiu\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"urobi dekdovan (text/plain) kpiu a zmaza\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"zmaza \"\n\n#: ../keymap_alldefs.h:57\n#, fuzzy\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"zmaza \"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"zmaza vetky poloky v podvlkne\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"zmaza vetky poloky vo vlkne\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"zobrazi pln adresu odosielatea\"\n\n#: ../keymap_alldefs.h:61\n#, fuzzy\nmsgid \"display message and toggle header weeding\"\nmsgstr \"zobrazi sprvu so vetkmi hlavikami\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"zobrazi sprvu\"\n\n#: ../keymap_alldefs.h:63\n#, fuzzy\nmsgid \"edit the raw message\"\nmsgstr \"upravi sprvu\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"zmaza znak pred kurzorom\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"zmaza jeden znak vavo od kurzoru\"\n\n#: ../keymap_alldefs.h:66\n#, fuzzy\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"skoi na zaiatok riadku\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"skoi na zaiatok riadku\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"cykluj medzi schrnkami s prchodzmi sprvami\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"dopl nzov sboru alebo zstupcu\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"dopl adresu s otzkou\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"zmaza znak pod kurzorom\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"skoi na koniec riadku\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"presun kurzor o jeden znak vpravo\"\n\n#: ../keymap_alldefs.h:74\n#, fuzzy\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"presun kurzor o jeden znak vpravo\"\n\n#: ../keymap_alldefs.h:75\n#, fuzzy\nmsgid \"scroll down through the history list\"\nmsgstr \"rolova hore po zozname histrie\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"rolova hore po zozname histrie\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"zmaza znaky od kurzoru do konca riadku\"\n\n#: ../keymap_alldefs.h:78\n#, fuzzy\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"zmaza znaky od kurzoru do konca riadku\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"zmaza vetky znaky v riadku\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"zmaza slovo pred kurzorom\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"uvies nasledujcu stlaen klvesu\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:84\n#, fuzzy\nmsgid \"convert the word to lower case\"\nmsgstr \"presun na vrch strnky\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"vlote prkaz muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"vlote masku sborov\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"ukoni toto menu\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtrova prlohy prkazom shell-u\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"presun sa na prv poloku\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"prepn prznak dleitosti sprvy\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"posun sprvu inmu pouvateovi s poznmkami\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"oznai aktulnu poloku\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"odpoveda vetkm prjemcom\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"rolova dolu o 1/2 strnky\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"rolova hore o 1/2 strnky\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"tto obrazovka\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"skoi na index slo\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"presun sa na posledn poloku\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"odpoveda do pecifikovanho potovho zoznamu\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"vykona makro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"zostavi nov potov sprvu\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"otvori odlin zloku\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"otvori odlin zloku iba na tanie\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"vymaza stavov prznak zo sprvy\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"zmaza sprvy zodpovedajce vzorke\"\n\n#: ../keymap_alldefs.h:108\n#, fuzzy\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"vybra potu z POP serveru\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"vybra potu z POP serveru\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"presun sa na prv sprvu\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"presun sa na posledn sprvu\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"ukza iba sprvy zodpovedajce vzorke\"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"Presmerova oznaen sprvy do: \"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"iadna schrnka s novmi sprvami.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"skoi na nasledovn nov sprvu\"\n\n#: ../keymap_alldefs.h:117\n#, fuzzy\nmsgid \"jump to the next new or unread message\"\nmsgstr \"skoi na nasledujcu netan sprvu\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"skoi na aie podvlkno\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"skoi na nasledujce vlkno\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"presun sa na nasledujcu odmazan sprvu\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"skoi na nasledujcu netan sprvu\"\n\n#: ../keymap_alldefs.h:122\n#, fuzzy\nmsgid \"jump to parent message in thread\"\nmsgstr \"odmaza vetky sprvy vo vlkne\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"skoi na predchdzajce vlkno\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"skoi na predchdzajce podvlkno\"\n\n#: ../keymap_alldefs.h:125\n#, fuzzy\nmsgid \"move to the previous undeleted message\"\nmsgstr \"presun sa na nasledujcu odmazan sprvu\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"skoi na predchdzajcu nov sprvo\"\n\n#: ../keymap_alldefs.h:127\n#, fuzzy\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"skoi na predchdzajcu netan sprvu\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"skoi na predchdzajcu netan sprvu\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"oznai aktulne vlkno ako tan\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"oznai aktulne podvlkno ako tan\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"nastavi stavov prznak na sprve\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"uloi zmeny do schrnky\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"oznai sprvy zodpovedajce vzoru\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"odmaza sprvy zodpovedajce vzoru\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"odznai sprvy zodpovedajce vzoru\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"presun do stredu strnky\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"presun sa na aiu poloku\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"rolova o riadok dolu\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"presun sa na aiu strnku\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"skoi na koniec sprvy\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"prepn zobrazovanie citovanho textu\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"preskoi za citovan text\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"skoi na zaiatok sprvy\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"zreazi vstup do prkazu shell-u\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"presun sa na predchdzajcu poloku\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"rolova o riadok hore\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"presun sa na predchdzajcu strnku\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"tlai aktulnu poloku\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"opta sa externho programu na adresy\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"prida nov vsledky optania k terajm\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"uloi zmeny v schrnke a ukoni\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"vyvola odloen sprvu\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"vymaza a prekresli obrazovku\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{intern}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"zmaza \"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"odpoveda na sprvu\"\n\n#: ../keymap_alldefs.h:157\n#, fuzzy\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"upravi sprvu na znovu-odoslanie\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"uloi sprvu/prlohu do sboru\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"hada poda regulrneho vrazu\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"hada poda regulrneho vrazu dozadu\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"hada a vskyt\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"hada a vskyt v opanom smere\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"prepn farby hadanho vrazu\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"vyvola prkaz v podriadenom shell-e\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"triedi sprvy\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"triedi sprvy v opanom porad\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"oznai aktulnu poloku\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"poui aiu funkciu na oznaen sprvy\"\n\n#: ../keymap_alldefs.h:169\n#, fuzzy\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"poui aiu funkciu na oznaen sprvy\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"oznai aktulne podvlkno\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"oznai akulne vlkno\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"prepn prznak 'nov' na sprve\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"prepn prznak monosti prepsania schrnky\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"prepn, i prezera schrnky alebo vetky sbory\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"presun sa na zaiatok strnky\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"odmaza aktulnu poloku\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"odmaza vetky sprvy vo vlkne\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"odmaza vetky sprvy v podvlkne\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"zobrazi verziu a dtum vytvorenia Mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"zobrazi prlohu pouijc poloku mailcap-u, ak je to nevyhnutn\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"zobrazi prlohy MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"zobrazi prve aktvny limitovac vzor\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"zaba/rozba aktulne vlkno\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"zaba/rozba vetky vlkna\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"prida verejn k PGP\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"zobrazi monosti PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"posla verejn k PGP potou\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"overi verejn k PGP\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"zobrazi ID pouvatea tohoto ku\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:193\n#, fuzzy\nmsgid \"Append a remailer to the chain\"\nmsgstr \"zmaza vetky znaky v riadku\"\n\n#: ../keymap_alldefs.h:194\n#, fuzzy\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"zmaza vetky znaky v riadku\"\n\n#: ../keymap_alldefs.h:195\n#, fuzzy\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"zmaza vetky znaky v riadku\"\n\n#: ../keymap_alldefs.h:196\n#, fuzzy\nmsgid \"Select the previous element of the chain\"\nmsgstr \"zmaza vetky znaky v riadku\"\n\n#: ../keymap_alldefs.h:197\n#, fuzzy\nmsgid \"Select the next element of the chain\"\nmsgstr \"zmaza vetky znaky v riadku\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"urobi deifrovan kpiu a vymaza\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"urobi deifrovan kpiu\"\n\n#: ../keymap_alldefs.h:201\n#, fuzzy\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"vyma frzu hesla PGP z pamte\"\n\n#: ../keymap_alldefs.h:202\n#, fuzzy\nmsgid \"extract supported public keys\"\nmsgstr \"extrahuj verejn ke PGP\"\n\n#: ../keymap_alldefs.h:203\n#, fuzzy\nmsgid \"show S/MIME options\"\nmsgstr \"zobrazi monosti S/MIME\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"iadne odmazan sprvy.\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" v tomto obmedzenom zobrazen\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"iadne odmazan sprvy.\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"upravi sprvu\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"chyba vo vraze\"\n\n#, fuzzy\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Intern chyba. Informujte <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"odmaza vetky sprvy vo vlkne\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Chyba: poruen sprva PGP/MIME! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Chyba: multipart/encrypted nem vyplnen parameter protokolu!\"\n\n#, fuzzy\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Poui ID ka = \\\"%s\\\" pre %s?\"\n\n#, fuzzy\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Poui ID ka = \\\"%s\\\" pre %s?\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Vyisti\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"esabif\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"iadny vzor pre hadanie.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Sptn hadanie: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Hada: \"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Chyba pri posielan sprvy.\"\n\n#, fuzzy\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"Vyvolvam sprvu...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"pouitie: mutt [ -nRzZ ] [ -e <prk> ] [ -F <sb> ] [ -m <typ> ] [ -f \"\n#~ \"<sb> ]\\n\"\n#~ \"       mutt [ -nx ] [ -e <prk> ] [ -a <sb> ] [ -F <sb> ] [ -H <sb> ] \"\n#~ \"[ -i <sb> ] [ -s <predm> ] [ -b <adr> ] [ -c <adr> ] <adr> [ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <prk> ] [ -F <sb> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"prepnae:\\n\"\n#~ \"  -a <sbor>\\tpripoji sbor do sprvy\\n\"\n#~ \"  -b <adresa>\\tuvies adresy pre slep kpie (BCC)\\n\"\n#~ \"  -c <adresa>\\tuvies adresy pre kpie (CC)\\n\"\n#~ \"  -e <prkaz>\\tuvies prkaz, ktor sa vykon po inicializcii\\n\"\n#~ \"  -f <sbor>\\tuvies, ktor schrnka sa bude ta\\n\"\n#~ \"  -F <sbor>\\tuvies alternatvny sbor muttrc\\n\"\n#~ \"  -H <sbor>\\tuvies sbor s nvrhom, z ktorho sa preta hlavika\\n\"\n#~ \"  -i <sbor>\\tuvies sbor, ktor m Mutt vloi do odpovede\\n\"\n#~ \"  -m <typ>\\tuvies tandardn typ schrnky\\n\"\n#~ \"  -n\\t\\tspsobuje, e Mutt neta systmov sbor Muttrc\\n\"\n#~ \"  -p\\t\\tvyvola a odloen sprvu\\n\"\n#~ \"  -R\\t\\totvori schrnku len na tanie\\n\"\n#~ \"  -s <predm>\\tuvies predmet (mus by v vodzovkch, ak obsahuje \"\n#~ \"medzery)\\n\"\n#~ \"  -v\\t\\tzobrazi verziu a defincie z asu kompilcie\\n\"\n#~ \"  -x\\t\\tsimulova md posielania typick pre mailx\\n\"\n#~ \"  -y\\t\\tvybra schrnku uveden vo Vaom zozname 'mailbox'\\n\"\n#~ \"  -z\\t\\tukoni okamite, ak v schrnke nie s iadne sprvy\\n\"\n#~ \"  -Z\\t\\totvori prv zloku s novmi sprvami, okamite skoni, ak \"\n#~ \"iadne nie s\\n\"\n#~ \"  -h\\t\\ttto pomoc\"\n\n#, fuzzy\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"Vymazvam sprvy zo serveru...\"\n\n#, fuzzy\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"Vymazvam sprvy zo serveru...\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"tam %s... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"Zapisujem sprvy... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"tam %s... %d\"\n\n#, fuzzy\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Spam PGP...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Fatlna chyba. Poet sprv nie je zosynchronizovan!\"\n\n#, fuzzy\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"Prihlasovanie zlyhalo.\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-8 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"Copyright (C) 1997-8 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998   Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1998   Ruslan Ermilov <ru@ucb.crimea.ua>\\n\"\n#~ \"\\n\"\n#~ \"Vea ostatnch tu nespomenutch prispelo mnostvom kdu,\\n\"\n#~ \"oprv, a npadov.\\n\"\n#~ \"\\n\"\n#~ \"    Tento program je von, mete ho ri a/alebo upravova\\n\"\n#~ \"    poda podmienok licencie GNU General Public License, ako bola\\n\"\n#~ \"    publikovan nadciou Free Software Foundation; pod verziou 2,\\n\"\n#~ \"    alebo (poda Vho vberu) pod akoukovek neskorou verziou.\\n\"\n#~ \"\\n\"\n#~ \"    Tento program je ren v ndeji, e bude uiton,\\n\"\n#~ \"    ale BEZ AKEJKOVEK ZRUKY; dokonca bez implicitnej OBCHODNEJ\\n\"\n#~ \"    zruky alebo VHODNOSTI PRE URIT CIE. Vi GNU General Public\\n\"\n#~ \"    License pre viac podrobnost.\\n\"\n#~ \"\\n\"\n#~ \"    Mali by ste obdra kpiu GNU General Public License spolu s tmto\\n\"\n#~ \"    programom; ak nie, napte do Free Software Foundation, Inc.,\\n\"\n#~ \"    51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\\n\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"Je zobrazen prv poloka.\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"Je zobrazen posledn poloka.\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"Nemono pridva k IMAP schrnkam na tomto serveri\"\n\n#, fuzzy\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"vytvori zstupcu z odosielatea sprvy\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"Nemono zisti stav: %s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s nie je schrnka\"\n\n#, fuzzy\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"Spam OpenSSL...\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"Presmerova sprvu do %s...?\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"Presmerova sprvy do %s...?\"\n\n#, fuzzy\n#~ msgid \"ewsabf\"\n#~ msgstr \"esabmf\"\n\n#, fuzzy\n#~ msgid \"This ID's validity level is undefined.\"\n#~ msgstr \"Tto rove dvery identifikanho ka je nedefinovan.\"\n\n#~ msgid \"Decode-save\"\n#~ msgstr \"Dekduj-ulo\"\n\n#~ msgid \"Decode-copy\"\n#~ msgstr \"Dekduj-kopruj\"\n\n#~ msgid \"Decrypt-save\"\n#~ msgstr \"Deifr-ulo\"\n\n#~ msgid \"Decrypt-copy\"\n#~ msgstr \"Deifr-kopruj\"\n\n#~ msgid \"Copy\"\n#~ msgstr \"Koprova\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"[-- End of PGP output --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"[-- Koniec vstupu PGP --]\\n\"\n#~ \"\\n\"\n\n#, fuzzy\n#~ msgid \"Can't stat %s.\"\n#~ msgstr \"Nemono zisti stav: %s\"\n\n#~ msgid \"%s: no such command\"\n#~ msgstr \"%s: prkaz nenjden\"\n\n#~ msgid \"MIC algorithm: \"\n#~ msgstr \"Algoritmus MIC: \"\n\n#~ msgid \"This doesn't make sense if you don't want to sign the message.\"\n#~ msgstr \"Toto nem zmysel ak nechcete podpsa sprvu.\"\n\n#~ msgid \"Unknown MIC algorithm, valid ones are: pgp-md5, pgp-sha1, pgp-rmd160\"\n#~ msgstr \"Neznmy algoritmus MIC, platn s: pgp-md5, pgp-sha1, pgp-rmd160\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"SHA1 implementation Copyright (C) 1995-1997 Eric A. Young <eay@cryptsoft.\"\n#~ \"com>\\n\"\n#~ \"\\n\"\n#~ \"    Redistribution and use in source and binary forms, with or without\\n\"\n#~ \"    modification, are permitted under certain conditions.\\n\"\n#~ \"\\n\"\n#~ \"    The SHA1 implementation comes AS IS, and ANY EXPRESS OR IMPLIED\\n\"\n#~ \"    WARRANTIES, including, but not limited to, the implied warranties of\\n\"\n#~ \"    merchantability and fitness for a particular purpose ARE DISCLAIMED.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the full distribution terms\\n\"\n#~ \"    along with this program; if not, write to the program's developers.\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"SHA1 implementcia Copyright (C) 1995-7 Eric A. Young <eay@cryptsoft.\"\n#~ \"com>\\n\"\n#~ \"\\n\"\n#~ \"    Redistribcia a pouitie v zdrojovej a binrnej forme, s alebo bez\\n\"\n#~ \"    modifikcie, s umonen pod urenmi podmienkami.\\n\"\n#~ \"\\n\"\n#~ \"    Implementcia SHA1 prichdza AKO JE, a HOCIAK VYJADREN ALEBO \"\n#~ \"IMPLICITN\\n\"\n#~ \"    ZRUKY, vrtane, ale nie limitovan na, implicitn obchodn zruku\\n\"\n#~ \"    a vhodnos pre urit cie S ODMIETNUT.\\n\"\n#~ \"\\n\"\n#~ \"    Mali by ste obdra kpiu plnch distribunch podmienok\\n\"\n#~ \"    spolu s tmto programom; ak nie, napte vvojrom programu.\\n\"\n\n#, fuzzy\n#~ msgid \"POP Username: \"\n#~ msgstr \"Meno pouvatea IMAPu:\"\n\n#, fuzzy\n#~ msgid \"Reading new message (%d bytes)...\"\n#~ msgstr \"tam %d nov sprvy (%d bytov)...\"\n\n#, fuzzy\n#~ msgid \"%s [%d message read]\"\n#~ msgstr \"%s [pretanch sprv: %d]\"\n\n#, fuzzy\n#~ msgid \"Creating mailboxes is not yet supported.\"\n#~ msgstr \"Oznaovanie nie je podporovan.\"\n\n#~ msgid \"Reopening mailbox... %s\"\n#~ msgstr \"Znovuotvram schrnku... %s\"\n\n#~ msgid \"Closing mailbox...\"\n#~ msgstr \"Zatvram schrnku...\"\n\n#~ msgid \"IMAP Username: \"\n#~ msgstr \"Meno pouvatea IMAPu:\"\n\n#, fuzzy\n#~ msgid \"CRAM key for %s@%s: \"\n#~ msgstr \"Zadajte ID ka pre %s: \"\n\n#~ msgid \"Sending APPEND command ...\"\n#~ msgstr \"Posielam prkaz APPEND...\"\n\n#~ msgid \"POP Password: \"\n#~ msgstr \"Heslo POP: \"\n\n#~ msgid \"No POP username is defined.\"\n#~ msgstr \"Meno pouvatea POP nie je definovan.\"\n\n#~ msgid \"Could not find address for host %s.\"\n#~ msgstr \"Nemono njs adresu pre hostitea %s.\"\n\n#~ msgid \"Attachment saved\"\n#~ msgstr \"Prloha bola uloen\"\n\n#, fuzzy\n#~ msgid \"Can't open %s: %s.\"\n#~ msgstr \"Nemono zisti stav: %s\"\n\n#~ msgid \"Compose\"\n#~ msgstr \"Zloi\"\n\n#~ msgid \"move to the last undelete message\"\n#~ msgstr \"presun sa na posledn odmazan sprvu\"\n\n#~ msgid \"return to the main-menu\"\n#~ msgstr \"vrti sa do hlavnho menu\"\n\n#~ msgid \"ignoring empty header field: %s\"\n#~ msgstr \"ignorujem przdnu poloku hlaviky: %s\"\n\n#~ msgid \"imap_error(): unexpected response in %s: %s\\n\"\n#~ msgstr \"Imap_error(): neoakvan odpove v %s: %s\\n\"\n\n#~ msgid \"An unkown PGP version was defined for signing.\"\n#~ msgstr \"Pre podpis bol definovan podpis PGP neznmej verzie.\"\n\n#~ msgid \"Message edited. Really send?\"\n#~ msgstr \"Sprva bola upraven. Naozaj posla?\"\n\n#~ msgid \"Can't open your secret key ring!\"\n#~ msgstr \"Nemono otvori V kruh tajnho ka!\"\n\n#~ msgid \"===== Attachments =====\"\n#~ msgstr \"===== Prdavn dta =====\"\n\n#~ msgid \"Unknown PGP version \\\"%s\\\".\"\n#~ msgstr \"Neznma verzia PGP\\\"%s\\\".\"\n\n#~ msgid \"\"\n#~ \"[-- Error: this message does not comply with the PGP/MIME specification! \"\n#~ \"--]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Chyba: tto sprva nespa pecifikciu PGP/MIME! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"reserved\"\n#~ msgstr \"rezervovan\"\n\n#~ msgid \"Signature Packet\"\n#~ msgstr \"Blok podpisu\"\n\n#~ msgid \"Conventionally Encrypted Session Key Packet\"\n#~ msgstr \"Blok konvenne zakdovanho ka sedenia\"\n\n#~ msgid \"One-Pass Signature Packet\"\n#~ msgstr \"Jednoprechodov blok podpisu\"\n\n#~ msgid \"Secret Key Packet\"\n#~ msgstr \"Blok tajnho ka\"\n\n#~ msgid \"Public Key Packet\"\n#~ msgstr \"Blok verejnho ka\"\n\n#~ msgid \"Secret Subkey Packet\"\n#~ msgstr \"Blok tajnho podka\"\n\n#~ msgid \"Compressed Data Packet\"\n#~ msgstr \"Blok komprimovanch dt\"\n\n#~ msgid \"Symmetrically Encrypted Data Packet\"\n#~ msgstr \"Blok symetricky ifrovanch dt\"\n\n#~ msgid \"Marker Packet\"\n#~ msgstr \"Znakovac blok\"\n\n#~ msgid \"Literal Data Packet\"\n#~ msgstr \"Blok literlnych dt\"\n\n#~ msgid \"Trust Packet\"\n#~ msgstr \"Blok dveryhodnosti\"\n\n#~ msgid \"Name Packet\"\n#~ msgstr \"Blok mena\"\n\n#~ msgid \"Subkey Packet\"\n#~ msgstr \"Blok podka\"\n\n#~ msgid \"Reserved\"\n#~ msgstr \"Rezervovan\"\n\n#~ msgid \"Comment Packet\"\n#~ msgstr \"Blok komentra\"\n\n#~ msgid \"Saved output of child process to %s.\\n\"\n#~ msgstr \"Vstup dcrskeho procesu bol uloen do %s.\\n\"\n\n#~ msgid \"Display message using mailcap?\"\n#~ msgstr \"Zobrazi sprvu pouitm mailcap-u?\"\n\n#~ msgid \"Please report this program error in the function mutt_mktime.\"\n#~ msgstr \"Prosm, oznmte tto chybu vo funkcii mutt_mktime.\"\n\n#~ msgid \"%s is a boolean var!\"\n#~ msgstr \"%s je logick premenn!\"\n"
  },
  {
    "path": "po/sv.po",
    "content": "# Swedish messages for Mutt.\n# Copyright (C) Johan Svedberg 2004-2007 <johan@svedberg.com>\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt 1.5.17\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2007-12-15 14:05+0100\\n\"\n\"Last-Translator: Johan Svedberg <johan@svedberg.com>\\n\"\n\"Language-Team: Swedish <sv@li.org>\\n\"\n\"Language: sv\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Användarnamn på %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Lösenord för %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Avsluta\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Ta bort\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Återställ\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Välj\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Hjälp\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Du saknar alias!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Alias\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Alias: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Du har redan definierat ett alias med det namnet!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Varning: Detta alias kommer kanske inte att fungera. Fixa det?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adress: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Fel: '%s' är ett felaktigt IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Namn: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Godkänn?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Spara till fil: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Fel vid försök att visa fil\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Lade till alias.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Fel vid försök att visa fil\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Kan inte para ihop namnmall, fortsätt?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"\\\"compose\\\"-posten i mailcap kräver %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Fel uppstod vid körning av \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Misslyckades med att öpppna fil för att tolka huvuden.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Misslyckades med att öppna fil för att ta bort huvuden.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Misslyckades med att döpa om fil.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"Ingen \\\"compose\\\"-post i mailcap för %s, skapar tom fil.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"\\\"edit\\\"-posten i mailcap kräver %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"Ingen \\\"edit\\\"-post i mailcap för %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Ingen matchande mailcap-post hittades. Visar som text.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME-typ ej definierad. Kan inte visa bilaga.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Kan inte skapa filter\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Bilagor\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Bilagor\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Kan inte skapa filter\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Fel vid skrivning!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Jag vet inte hur det där ska skrivas ut!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Ändra katalog\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Mask\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s är inte en katalog.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Brevlådor [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Prenumererar på [%s], filmask: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Katalog [%s], filmask: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Kan inte bifoga en katalog!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Inga filer matchar filmasken\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Endast IMAP-brevlådor kan skapas\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Endast IMAP-brevlådor kan döpas om\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Endast IMAP-brevlådor kan tas bort\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Kan inte ta bort rotfolder\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Ta bort brevlådan \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Brevlådan har tagits bort.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Brevlådan togs inte bort.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Ändra katalog till: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Fel vid läsning av katalog.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Filmask: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Sortera omvänt efter (d)atum, (a)lpha, (s)torlek eller i(n)te alls? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Sortera efter (d)atum, (a)lpha, (s)torlek eller i(n)te alls? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dasn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Nytt filnamn: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Kan inte visa en katalog\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Fel vid försök att visa fil\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Nytt brev i \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: färgen stöds inte av terminalen\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: färgen saknas\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: objektet finns inte\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: kommandot är endast giltigt för index-objekt\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: för få parametrar\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Parametrar saknas.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: för få parametrar\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: för få parametrar\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: attributet finns inte\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"för få parametrar\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"för många parametrar\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"standardfärgerna stöds inte\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Verifiera PGP-signatur?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Kunde inte skapa tillfällig fil!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Kan inte skapa filter för visning\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Kunde inte kopiera meddelande\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME-signaturen verifierades framgångsrikt.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Ägarens S/MIME-certifikat matchar inte avsändarens.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Varning: En del av detta meddelande har inte blivit signerat.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME-signaturen kunde INTE verifieras.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP-signaturen verifierades framgångsrikt.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP-signaturen kunde INTE verifieras.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Kommando: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Återsänd meddelandet till: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Återsänd märkta meddelanden till: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Fel vid tolkning av adress!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Felaktigt IDN: \\\"%s\\\"\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Återsänd meddelande till %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Återsänd meddelanden till %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Meddelande återsändes inte.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Meddelanden återsändes inte.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Meddelande återsänt.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Meddelanden återsända.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Kan inte skapa filterprocess\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Öppna rör till kommando: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Inget utskriftskommando har definierats.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Skriv ut meddelande?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Skriv ut märkta meddelanden?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Meddelande har skrivits ut\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Meddelanden har skrivits ut\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Meddelandet kunde inte skrivas ut\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Meddelanden kunde inte skrivas ut\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Omvänt (d)atum/(f)rån/(m)ot./(ä)re./(t)ill/t(r)åd/(o)sor./(s)tor./(p)oäng/\"\n\"sp(a)m?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Sortera (d)atum/(f)rån/(m)ot./(ä)re./(t)ill/t(r)åd/(o)sor./(s)tor./(p)oäng/\"\n\"sp(a)m?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfmätrospa\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Skalkommando: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Avkoda-spara%s till brevlåda\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Avkoda-kopiera%s till brevlåda\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Dekryptera-spara%s till brevlåda\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Dekryptera-kopiera%s till brevlåda\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Spara%s till brevlåda\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Kopiera%s till brevlåda\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" märkt\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Kopierar till %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Konvertera till %s vid sändning?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"\\\"Content-Type\\\" ändrade till %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Teckenuppsättning ändrad till %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"konverterar inte\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"konverterar\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Det finns inga bilagor.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Skicka\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Avbryt\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Bifoga fil\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Beskriv\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"Märkning stöds inte.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Signera, Kryptera\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Kryptera\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Signera\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \" (infogat)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\n#, fuzzy\nmsgid \" (S/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" signera som: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<standard>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Kryptera med: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] existerar inte längre!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] modifierad. Uppdatera kodning?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Bilagor\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Varning: \\\"%s\\\" är ett felaktigt IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Du får inte ta bort den enda bilagan.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Felaktigt IDN i \\\"%s\\\": \\\"%s\\\"\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Bifogar valda filer...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Kunde inte bifoga %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Öppna brevlåda att bifoga meddelande från\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Kunde inte låsa brevlåda!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Inga meddelanden i den foldern.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Märk de meddelanden du vill bifoga!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Kunde inte bifoga!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Omkodning påverkar bara textbilagor.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Den aktiva bilagan kommer inte att bli konverterad.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Den aktiva bilagan kommer att bli konverterad.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Ogiltig kodning.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Spara en kopia detta meddelande?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Byt namn till: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Kan inte ta status på %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Ny fil: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"\\\"Content-Type\\\" har formen bas/undertyp\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Okänd \\\"Content-Type\\\" %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Kan inte skapa fil %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Vad vi har här är ett misslyckande att skapa en bilaga.\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Skjut upp det här meddelandet?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Skriv meddelande till brevlåda\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Skriver meddelande till %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Meddelande skrivet.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME redan valt. Rensa och fortsätt? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP redan valt. Rensa och fortsätt? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"fel vid skapande av gpgme-kontext: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"fel vid aktivering av CMS-protokoll: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"fel vid skapande av gpgme dataobjekt: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"fel vid allokering av dataobjekt: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"fel vid tillbakaspolning av dataobjekt: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"fel vid läsning av dataobjekt: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Kan inte skapa tillfällig fil\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"fel vid tilläggning av mottagare `%s': %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"hemlig nyckel `%s' hittades inte: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"otydlig specifikation av hemlig nyckel `%s'\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"fel vid sättning av hemlig nyckel `%s': %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"fel vid sättning av notation för PKA-signatur: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"fel vid kryptering av data: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"fel vid signering av data: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Varning: En av nycklarna har blivit återkallad\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Varning: Nyckeln som användes för att skapa signaturen utgick vid: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Varning: Åtminstone en certifikatsnyckel har utgått\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Varning: Signaturen utgick vid: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Kan inte verifiera på grund av saknad nyckel eller certifikat\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL:en är inte tillgänglig\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"Tillgänglig CRL är för gammal\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Ett policykrav blev inte uppfyllt\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Ett systemfel inträffade\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"VARNING: PKA-post matchar inte signerarens adress: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"PKA verifierade att signerarens adress är: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Fingeravtryck: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"VARNING: Vi har INGEN indikation hurvida nyckeln tillhör personen med namnet \"\n\"som visas ovanför\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"VARNING: Nyckeln TILLHÖR INTE personen med namnet som visas ovanför\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"VARNING: Det är INTE säkert att nyckeln tillhör personen med namnet som \"\n\"visas ovanför\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"Skapa %s?\"\n\n#: crypt-gpgme.c:1462\n#, fuzzy, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Fel vid hämtning av nyckelinformation: \"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\n#, fuzzy\nmsgid \"Good signature from:\"\nmsgstr \"Bra signatur från: \"\n\n#: crypt-gpgme.c:1476\n#, fuzzy\nmsgid \"*BAD* signature from:\"\nmsgstr \"Bra signatur från: \"\n\n#: crypt-gpgme.c:1492\n#, fuzzy\nmsgid \"Problem signature from:\"\nmsgstr \"Bra signatur från: \"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\n#, fuzzy\nmsgid \"               expires: \"\nmsgstr \"                aka: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Signaturinformation börjar --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Fel: verifiering misslyckades: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Notation börjar (signatur av: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Notation slutar ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Slut på signaturinformation --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fel: avkryptering misslyckades: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Fel vid hämtning av nyckelinformation: \"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Fel: avkryptering/verifiering misslyckades: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Fel: datakopiering misslyckades\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP-MEDDELANDE BÖRJAR --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- START PÅ BLOCK MED PUBLIK PGP-NYCKEL --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- START PÅ PGP-SIGNERAT MEDDELANDE --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- PGP-MEDDELANDE SLUTAR --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- SLUT PÅ BLOCK MED PUBLIK PGP-NYCKEL --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- SLUT PÅ PGP-SIGNERAT MEDDELANDE --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fel: kunde inte hitta början av PGP-meddelande! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Fel: kunde inte skapa tillfällig fil! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Följande data är PGP/MIME-signerad och krypterad --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Följande data är PGP/MIME-krypterad --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Slut på PGP/MIME-signerad och krypterad data --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Slut på PGP/MIME-krypterad data --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP-meddelande avkrypterades framgångsrikt.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Kunde inte avkryptera PGP-meddelande\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Följande data är S/MIME-signerad --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Följande data är S/MIME-krypterad --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Slut på S/MIME-signerad data --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Slut på S/MIME-krypterad data --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Kan inte visa det här användar-ID:t (okänd kodning)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Kan inte visa det här användar-ID:t (felaktig kodning)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Kan inte visa det här användar-ID:t (felaktig DN)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" aka ......: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Namn ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Ogiltig]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Giltig From : %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Giltig To ..: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Nyckel-typ ..: %s, %lu bit %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Nyckel-användning .: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"kryptering\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"signering\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"certifikat\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Serie-nr .: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Utfärdad av .: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Undernyckel ....: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Återkallad]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Utgången]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Inaktiverad]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Samlar data...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Fel vid sökning av utfärdarnyckel: %s\\n\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Fel: certifikatskedje för lång - stannar här\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Nyckel-ID: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new misslyckades: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start misslyckades: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next misslyckades: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Alla matchande nycklar är markerade utgångna/återkallade.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Avsluta \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Välj  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Kontrollera nyckel \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP- och S/MIME-nycklar som matchar\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"PGP-nycklar som matchar\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME-nycklar som matchar\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"nycklar som matchar\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Den här nyckeln kan inte användas: utgången/inaktiverad/återkallad.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID:t är utgånget/inaktiverat/återkallat.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"ID:t har odefinierad giltighet.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"ID:t är inte giltigt.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"ID:t är endast marginellt giltigt.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Vill du verkligen använda nyckeln?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Söker efter nycklar som matchar \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Använd nyckel-ID = \\\"%s\\\" för %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Ange nyckel-ID för %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Var vänlig ange nyckel-ID: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Fel vid hämtning av nyckelinformation: \"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP-nyckel %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (k)ryptera, (s)ignera, signera s(o)m, (b)ägge, (p)gp eller (r)ensa?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP (k)ryptera, (s)ignera, signera s(o)m, (b)ägge, s/(m)ime eller (r)ensa?\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME (k)ryptera, (s)ignera, signera s(o)m, (b)ägge, (p)gp eller (r)ensa?\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"ksobpr\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (k)ryptera, (s)ignera, signera s(o)m, (b)ägge, s/(m)ime eller (r)ensa?\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"ksobmr\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (k)ryptera, (s)ignera, signera s(o)m, (b)ägge, (p)gp eller (r)ensa?\"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"ksobpr\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP (k)ryptera, (s)ignera, signera s(o)m, (b)ägge, s/(m)ime eller (r)ensa?\"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"ksobmr\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Signera som: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Misslyckades att verifiera sändare\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Misslyckades att ta reda på sändare\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (aktuell tid: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s utdata följer%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Lösenfrasen glömd.\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Meddelande kan inte skickas infogat. Återgå till att använda PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Startar PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"Meddelande kan inte skickas infogat. Återgå till att använda PGP/MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Brevet skickades inte.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"S/MIME-meddelanden utan ledtrådar till innehållet stöds ej.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Försöker att extrahera PGP-nycklar...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Försöker att extrahera S/MIME-certifikat...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fel: Okänt \\\"multipart/signed\\\" protokoll %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fel: Inkonsekvent \\\"multipart/signed\\\" struktur! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Varning: Vi kan inte verifiera %s/%s signaturer. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Följande data är signerat --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Varning: Kan inte hitta några signaturer. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Slut på signerat data --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\\\"crypt_use_gpgme\\\" satt men inte byggd med GPGME-stöd.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Startar S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"ja\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"nej\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Avsluta Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"okänt fel\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Tryck på valfri tangent för att fortsätta...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" (\\\"?\\\" för lista): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Ingen brevlåda är öppen.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Inga meddelanden.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Brevlådan är skrivskyddad.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Funktionen ej tillåten i \\\"bifoga-meddelande\\\"-läge.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Inga synliga meddelanden.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, fuzzy, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"Kan inte %s: Operation tillåts inte av ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Kan inte växla till skrivläge på en skrivskyddad brevlåda!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Ändringarna i foldern skrivs när foldern lämnas.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Ändringarna i foldern kommer inte att skrivas.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Avsluta\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Spara\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Brev\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Svara\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Grupp\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Brevlådan har ändrats externt. Flaggor kan vara felaktiga.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Nya brev i den här brevlådan.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Brevlådan har ändrats externt.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Inga märkta meddelanden.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Ingenting att göra.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Hoppa till meddelande: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Parametern måste vara ett meddelandenummer.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Det meddelandet är inte synligt.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Ogiltigt meddelandenummer.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"återställ meddelande(n)\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Radera meddelanden som matchar: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Inget avgränsande mönster är aktivt.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Gräns: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Visa endast meddelanden som matchar: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"För att visa alla meddelanden, begränsa till \\\"all\\\".\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Avsluta Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Märk meddelanden som matchar: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"återställ meddelande(n)\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Återställ meddelanden som matchar: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Avmarkera meddelanden som matchar: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Öppna brevlåda i skrivskyddat läge\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Öppna brevlåda\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Inga brevlådor har nya brev.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s är inte en brevlåda.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Avsluta Mutt utan att spara?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Trådning ej aktiverat.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Tråd bruten\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\n#, fuzzy\nmsgid \"Cannot link threads\"\nmsgstr \"länka trådar\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Inget Message-ID: huvud tillgängligt för att länka tråd\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Var vänlig att först markera ett meddelande som ska länkas här\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Trådar länkade\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Ingen tråd länkad\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Du är på det sista meddelandet.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Inga återställda meddelanden.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Du är på det första meddelandet.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Sökning fortsatte från början.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Sökning fortsatte från slutet.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Första meddelandet är inte synligt i den här begränsade vyn\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Inga nya meddelanden\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Första meddelandet är inte synligt i den här begränsade vyn\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Inga olästa meddelanden\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"flagga meddelande\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\n#, fuzzy\nmsgid \"Cannot toggle new\"\nmsgstr \"växla ny\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Inga fler trådar.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Du är på den första tråden.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Tråden innehåller olästa meddelanden.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"återställ meddelande(n)\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"Kan inte skriva meddelande\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"markera meddelande(n) som lästa\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"återställ meddelande(n)\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tinfoga en rad som börjar med ett ~\\n\"\n\"~b adresser\\tlägg till adresser till Bcc:-fältet\\n\"\n\"~c adresser\\tlägg till adresser till Cc:-fältet\\n\"\n\"~f meddelanden\\tbifoga meddelanden\\n\"\n\"~F meddelanden\\tsamma som ~f, fast inkludera även huvuden\\n\"\n\"~h\\t\\tredigera meddelandehuvudet\\n\"\n\"~m meddelanden\\tinkludera och citera meddelanden\\n\"\n\"~M meddelanden\\tsamma som ~m, fast inkludera huvuden\\n\"\n\"~p\\t\\tskriv ut meddelandet\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tskriv fil och avsluta redigerare\\n\"\n\"~r fil\\tläs in en fil till redigeraren\\n\"\n\"~t adresser\\tlägg till adresser till To:-fältet\\n\"\n\"~u\\t\\thämta föregående rad\\n\"\n\"~v\\t\\tredigera meddelande med $visual-redigeraren\\n\"\n\"~w fil\\tskriv meddelande till fil\\n\"\n\"~x\\t\\tavbryt ändringar och avsluta redigerare\\n\"\n\"~?\\t\\tdet här meddelandet\\n\"\n\".\\t\\tensam på en rad avslutar inmatning\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: ogiltigt meddelandenummer.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Avsluta meddelande med en . på en egen rad)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Ingen brevlåda.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Meddelande innehåller:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(fortsätt)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"saknar filnamn.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Inga rader i meddelandet.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Felaktigt IDN i %s: \\\"%s\\\"\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: okänt redigeringskommando (~? för hjälp)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"kunde inte skapa tillfällig folder: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"kunde inte skriva tillfällig brevfolder: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"kunde inte avkorta tillfällig brevfolder: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Meddelandefilen är tom!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Meddelandet ej modifierat!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Kan inte öppna meddelandefil: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Kan inte lägga till folder: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Fel. Sparar tillfällig fil: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Sätt flagga\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Ta bort flagga\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- Fel : Kan inte visa någon del av \\\"Multipart/Alternative\\\"! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Bilaga #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Typ: %s/%s, Kodning: %s, Storlek: %s --]\\n\"\n\n#: handler.c:1281\n#, fuzzy\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Varning: En del av detta meddelande har inte blivit signerat.\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Automatisk visning med %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Kommando för automatisk visning: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Kan inte köra %s. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Automatisk visning av standardfel gällande %s --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Fel: \\\"message/external-body\\\" har ingen åtkomsttypsparameter --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Den här %s/%s bilagan \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(storlek %s byte)\"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"har raderats --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- på %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- namn: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Den här %s/%s bilagan är inte inkluderad, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- och den angivna externa källan har --]\\n\"\n\"[-- utgått. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- och den angivna åtkomsttypen %s stöds inte --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Kunde inte öppna tillfällig fil!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Fel: \\\"multipart/signed\\\" har inget protokoll.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Den här %s/%s bilagan \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s stöds inte \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(använd \\\"%s\\\" för att visa den här delen)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(\\\"view-attachments\\\" måste knytas till tangent!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: kunde inte bifoga fil\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"FEL: var vänlig rapportera den här buggen\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<OKÄND>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Allmänna knytningar:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Oknutna funktioner:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Hjälp för %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Felaktigt filformat för historik (rad %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"\\\"unhook\\\": Kan inte göra \\\"unhook *\\\" inifrån en \\\"hook\\\".\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"\\\"unhook\\\": okänd \\\"hook\\\"-typ: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"\\\"unhook\\\": Kan inte ta bort en %s inifrån en %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Ingen verifieringsmetod tillgänglig\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Verifierar (anonym)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonym verifiering misslyckades.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Verifierar (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5-verifiering misslyckades.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Verifierar (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI-verifiering misslyckades.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN inaktiverat på den här servern.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Loggar in...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Inloggning misslyckades.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Verifierar (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL-verifiering misslyckades.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s är en ogiltig IMAP-sökväg\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Hämtar folderlista...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Ingen sådan folder\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Skapa brevlåda: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Brevlådan måste ha ett namn.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Brevlåda skapad.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Döp om brevlådan %s till: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Kunde ej döpa om: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Brevlåda omdöpt.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Brevlåda stängd.\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"SSL misslyckades: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Stänger anslutning till %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Den här IMAP-servern är uråldrig. Mutt fungerar inte med den.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Säker anslutning med TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Kunde inte förhandla fram TLS-anslutning\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Krypterad anslutning otillgänglig\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Väljer %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Fel vid öppning av brevlåda\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Skapa %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Radering misslyckades\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Märker %d meddelanden som raderade...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Sparar ändrade meddelanden... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Fel vid sparande av flaggor. Stäng ändå?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Fel vid sparande av flaggor\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Raderar meddelanden från server...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE misslyckades\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Huvudsökning utan huvudnamn: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Felaktigt namn på brevlåda\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Prenumererar på %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Avslutar prenumeration på %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Prenumererar på %s...\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Avslutar prenumeration på %s\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Kunde inte hämta huvuden från den versionen av IMAP-servern.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Kunde inte skapa tillfällig fil %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Utvärderar cache...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Hämtar meddelandehuvuden...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Hämtar meddelande...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"Brevindexet är fel. Försök att öppna brevlådan igen.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Laddar upp meddelande...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Kopierar %d meddelanden till %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Kopierar meddelande %d till %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Fortsätt?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Inte tillgänglig i den här menyn.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Felaktigt reguljärt uttryck: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Inte tillräckligt med deluttryck för spam-mall\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: inget matchande mönster\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: inget matchande mönster\"\n\n#: init.c:861\n#, fuzzy, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"Saknar -rx eller -addr.\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"Varning: Felaktigtt IDN \\\"%s\\\".\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"bilagor: ingen disposition\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"bilagor: ogiltig disposition\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"gamla bilagor: ingen disposition\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"gamla bilagor: ogiltigt disposition\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: ingen adress\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Varning: Felaktigt IDN \\\"%s\\\" i alias \\\"%s\\\".\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"ogiltigt huvudfält\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: okänd sorteringsmetod\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): fel i reguljärt uttryck: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: okänd variabel\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"prefix är otillåtet med \\\"reset\\\"\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"värde är otillåtet med \\\"reset\\\"\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Användning: set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s är satt\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s är inte satt\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Ogiltig dag i månaden: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: ogiltig typ av brevlåda\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: ogiltigt värde\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: ogiltigt värde\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: Okänd typ.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: okänd typ\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Fel i %s, rad %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: fel i %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: läsningen avbruten pga för många fel i %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: fel vid %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: för många parametrar\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: okänt kommando\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Fel i kommandorad: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"kunde inte avgöra hemkatalog\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"kunde inte avgöra användarnamn\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"kunde inte avgöra användarnamn\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: inget gruppnamn\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"slut på parametrar\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Oändlig slinga i macro upptäckt.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Tangenten är inte knuten.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Tangenten är inte knuten. Tryck \\\"%s\\\" för hjälp.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: för många parametrar\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: ingen sådan meny\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"tom tangentsekvens\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: för många parametrar\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: ingen sådan funktion i tabell\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: tom tangentsekvens\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: för många parametrar\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: inga parametrar\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: ingen sådan funktion\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Ange nycklar (^G för att avbryta): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Tecken = %s, Oktal = %o, Decimal = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Heltalsöverflödning -- kan inte allokera minne!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Slut på minne!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"För att kontakta utvecklarna, var vänlig skicka brev till <mutt-dev@mutt.\"\n\"org>.\\n\"\n\"För att rapportera ett fel, var vänlig besök http://bugs.mutt.org/.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Upphovsrätt (C) 1996-2007 Michael R. Elkins med fler.\\n\"\n\"Mutt levereras HELT UTAN GARANTI; för detaljer kör `mutt -vv'.\\n\"\n\"Mutt är fri mjukvara, och du är välkommen att sprida det vidare\\n\"\n\"under vissa villkor; kör `mutt -vv' för detaljer.\\n\"\n\n#: main.c:75\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Upphovsrätt (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n\"Upphovsrätt (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Upphovsrätt (C) 1997-2007 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Upphovsrätt (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Upphovsrätt (C) 1999-2007 Brendan Cully <brendan@kublai.com>\\n\"\n\"Upphovsrätt (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Upphovsrätt (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"\\n\"\n\"Många ej nämnda personer har bidragit med kod, fixar och förslag.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    Följande text är en informell översättning som enbart tillhandahålls i\\n\"\n\"    informativt syfte. För alla juridiska tolkningar gäller den engelska\\n\"\n\"    originaltexten.\\n\"\n\"\\n\"\n\"    Detta program är fri mjukvara. Du kan distribuera det och/eller\\n\"\n\"    modifiera det under villkoren i GNU General Public License, publicerad\\n\"\n\"    av Free Software Foundation, antingen version 2 eller (om du så vill)\\n\"\n\"    någon senare version.\\n\"\n\"\\n\"\n\"    Detta program distribueras i hopp om att det ska vara användbart, men\\n\"\n\"    UTAN NÅGON SOM HELST GARANTI, även utan underförstådd garanti om\\n\"\n\"    SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU\\n\"\n\"    General Public License för ytterligare information.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    Du bör ha fått en kopia av GNU General Public License\\n\"\n\"    tillsammans med detta program. Om inte, skriv till Free Software \\n\"\n\"    Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\n\n#: main.c:116\n#, fuzzy\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"användning: mutt [<flaggor>] [-z] [-f <fil> | -yZ]\\n\"\n\"       mutt [<flaggor>] [-x] [-Hi <fil>] [-s <ämne>] [-bc <adress>] [-a \"\n\"<file> [...]] [--] <adress> [...]\\n\"\n\"       mutt [<flaggor>] -p\\n\"\n\"       mutt [<flaggor>] -A <alias> [...]\\n\"\n\"       mutt [<flaggor>] -Q <förfrågan> [...]\\n\"\n\"       mutt [<flaggor>] -D\\n\"\n\"       mutt -v[v]\\n\"\n\n#: main.c:125\n#, fuzzy\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"flaggor:\\n\"\n\"  -A <alias>\\texpandera det givna aliaset\\n\"\n\"  -a <fil>\\tbifoga en fil till meddelandet\\n\"\n\"  -b <adress>\\tange en \\\"blind carbon-copy\\\" (BCC) adress\\n\"\n\"  -c <adress>\\tange en \\\"carbon-copy\\\" (CC) adress\\n\"\n\"  -D\\t\\tskriv ut värdet på alla variabler på stdout\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <nivå>\\tlogga debug-utskrifter till ~/.muttdebug0\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -e <kommando>\\tange ett kommando som ska köras efter initiering\\n\"\n\"  -f <fil>\\tange vilken brevlåda som ska läsas\\n\"\n\"  -F <fil>\\tange en alternativ muttrc-fil\\n\"\n\"  -H <fil>\\tange en filmall att läsa huvud från\\n\"\n\"  -i <fil>\\tange en fil som Mutt ska inkludera i svaret\\n\"\n\"  -m <typ>\\tange standardtyp för brevlådan\\n\"\n\"  -n\\t\\tgör så att Mutt inte läser systemets Muttrc\\n\"\n\"  -p\\t\\tåterkalla ett uppskjutet meddelande\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <variabel>\\tundersök värdet på en konfigurationsvariabel\\n\"\n\"  -R\\t\\töppna brevlåda i skrivskyddat läge\\n\"\n\"  -s <ämne>\\tange ett ämne (måste vara inom citationstecken om det \"\n\"innehåller blanksteg)\\n\"\n\"  -v\\t\\tvisa version och definitioner vid kompileringen\\n\"\n\"  -x\\t\\tsimulera mailx's sändläge\\n\"\n\"  -y\\t\\tvälj en brevlåda specifierad i din \\\"mailboxes\\\"-lista\\n\"\n\"  -z\\t\\tavsluta omedelbart om det inte finns några meddelanden i brevlådan\\n\"\n\"  -Z\\t\\töppna den första foldern med ett nytt meddelande, avsluta omedelbart \"\n\"om inget finns\\n\"\n\"  -h\\t\\tden här hjälptexten\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Kompileringsval:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Fel vid initiering av terminalen.\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Fel: '%s' är ett dåligt IDN.\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Avlusning på nivå %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG var inte valt vid kompilering. Ignoreras.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s finns inte. Skapa den?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Kan inte skapa %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Misslyckades att tolka mailto:-länk\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Inga mottagare angivna.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: kunde inte bifoga fil.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Ingen brevlåda med nya brev.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Inga inkommande brevlådor definierade.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Brevlådan är tom.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Läser %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Brevlådan är trasig!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Brevlådan blev skadad!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Fatalt fel! Kunde inte öppna brevlådan igen!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Kunde inte låsa brevlåda!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: mbox modifierad, men inga modifierade meddelanden! (rapportera det här \"\n\"felet)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Skriver %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Skriver ändringar...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Skrivning misslyckades! Sparade del av brevlåda i %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Kunde inte återöppna brevlåda!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Återöppnar brevlåda...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Hoppa till: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Ogiltigt indexnummer.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Inga poster.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Du kan inte rulla längre ner.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Du kan inte rulla längre upp.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Du är på den första sidan.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Du är på den sista sidan.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Du är på den sista posten.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Du är på den första posten.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Sök efter: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Sök i omvänd ordning efter: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Hittades inte.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Inga märkta poster.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Sökning är inte implementerad för den här menyn.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Hoppning är inte implementerad för dialoger.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Märkning stöds inte.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Scannar %s...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"Kunde inte skicka meddelandet.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): kunde inte sätta tid på fil\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Okänd SASL-profil\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"fel vid allokering av SASL-anslutning\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Fel vid sättning av SASL:s säkerhetsinställningar\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Fel vid sättning av SASL:s externa säkerhetsstyrka\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Fel vid sättning av SASL:s externa användarnamn\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"Anslutning till %s stängd\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL är otillgängligt.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"\\\"Preconnect\\\"-kommandot misslyckades.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Fel uppstod vid förbindelsen till %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Felaktigt IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Slår upp %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Kunde inte hitta värden \\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"Ansluter till %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Kunde inte ansluta till %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Misslyckades med att hitta tillräckligt med slumptal på ditt system\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Fyller slumptalscentral: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s har osäkra rättigheter!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL inaktiverat på grund av bristen på slumptal\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"I/O-fel\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL misslyckades: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Kunde inte hämta certifikat från \\\"peer\\\"\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"SSL-anslutning använder %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Okänd\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[kan inte beräkna]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[ogiltigt datum]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Servercertifikat är inte giltigt än\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Servercertifikat har utgått\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Kunde inte hämta certifikat från \\\"peer\\\"\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Kunde inte hämta certifikat från \\\"peer\\\"\"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"Ägarens S/MIME-certifikat matchar inte avsändarens.\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Certifikat sparat\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Det här certifikatet tillhör:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Det här certifikatet utfärdades av:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Det här certifikatet är giltigt\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   från %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     till %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Fingeravtryck: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(f)örkasta, (g)odkänn den här gången, godkänn (v)arje gång\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"fgv\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(f)örkasta, (g)odkänn den här gången\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"fg\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Varning: kunde inte spara certifikat\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Certifikat sparat\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Fel: ingen TLS-socket öppen\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Alla tillgängliga protokoll för TLS/SSL-anslutning inaktiverade\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"SSL/TLS-anslutning använder %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Fel vid initiering av gnutls certifikatdata\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Fel vid bearbeting av certifikatdata\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1 Fingeravtryck: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5 Fingeravtryck: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"VARNING: Servercertifikat är inte giltigt än\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"VARNING: Servercertifikat har utgått\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"VARNING: Servercertifikat har återkallats\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"VARNING: Servervärdnamnet matchar inte certifikat\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"VARNING: Signerare av servercertifikat är inte en CA\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Certifikatverifieringsfel (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Certifikat är inte X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"Ansluter med \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Tunnel till %s returnerade fel %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Tunnelfel vid förbindelsen till %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Filen är en katalog, spara i den? [(j)a, n(ej), (a)lla]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"jna\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Filen är en katalog, spara i den?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Fil i katalog: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Filen finns, skriv (ö)ver, (l)ägg till, eller (a)vbryt?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"öla\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Kan inte spara meddelande till POP-brevlåda.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Lägg till meddelanden till %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s är inte en brevlåda!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Låsningsantal överskridet, ta bort låsning för %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Kan inte \\\"dotlock\\\" %s.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Maxtiden överskreds när \\\"fcntl\\\"-låsning försöktes!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Väntar på fcntl-låsning... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Maxtiden överskreds när \\\"flock\\\"-låsning försöktes!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Väntar på \\\"flock\\\"-försök... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Kunde inte låsa %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Kunde inte synkronisera brevlåda %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Flytta lästa meddelanden till %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Rensa %d raderat meddelande?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Rensa %d raderade meddelanden?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Flyttar lästa meddelanden till %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Brevlåda är oförändrad.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d behölls, %d flyttades, %d raderades.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d behölls, %d raderades.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Tryck \\\"%s\\\" för att växla skrivning\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Använd \\\"toggle-write\\\" för att återaktivera skrivning!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Brevlåda är märkt som ej skrivbar. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Brevlåda är synkroniserad.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Kan inte skriva meddelande\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Heltalsöverflödning -- kan inte allokera minne.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"Föreg. sida\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"Nästa sida\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Visa bilaga\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Nästa\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Slutet av meddelande visas.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Början av meddelande visas.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Hjälp visas just nu.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Ingen mer citerad text.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Ingen mer ociterad text efter citerad text.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"\\\"multipart\\\"-meddelande har ingen avgränsningsparameter!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Fel i uttryck: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Tomt uttryck\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Ogiltig dag i månaden: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Ogiltig månad: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Ogiltigt relativt datum: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"fel i mönster vid: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"saknar parameter\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"missmatchande hakparenteser: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: felaktig mönstermodifierare\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c: stöds inte i det här läget\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"saknar parameter\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"missmatchande parentes: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"tomt mönster\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"fel: okänd operation %d (rapportera det här felet).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Kompilerar sökmönster...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Kör kommando på matchande meddelanden...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Inga meddelanden matchade kriteriet.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Söker...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Sökning nådde slutet utan att hitta träff\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Sökning nådde början utan att hitta träff\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Sökning avbruten.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Mata in PGP-lösenfras:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP-lösenfras glömd.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Fel: kunde inte skapa PGP-underprocess! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Slut på PGP-utdata --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Fel: kunde inte skapa en PGP-underprocess! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Avkryptering misslyckades\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Kan inte öppna PGP-underprocess!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Kan inte starta PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (k)ryptera, (s)ignera, signera s(o)m, (b)åda %s, eller (r)ensa? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)nfogat\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (k)ryptera, (s)ignera, signera s(o)m, (b)åda %s, eller (r)ensa? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP (k)ryptera, (s)ignera, signera s(o)m, (b)åda %s, eller (r)ensa? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"ksobpr\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP (k)ryptera, (s)ignera, signera s(o)m, (b)åda %s, eller (r)ensa? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"ksobpr\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP (k)ryptera, (s)ignera, signera s(o)m, (b)åda %s, eller (r)ensa? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"ksobpr\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP (k)ryptera, (s)ignera, signera s(o)m, (b)åda %s, eller (r)ensa? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"ksobpr\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Hämtar PGP-nyckel...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Alla matchande nycklar är utgångna, återkallade, eller inaktiverade.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP-nycklar som matchar <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP-nycklar som matchar \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Kan inte öppna /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP-nyckel %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Kommandot TOP stöds inte av servern.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Kan inte skriva huvud till tillfällig fil!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Kommandot UIDL stöds inte av servern.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"Brevindexet är fel. Försök att öppna brevlådan igen.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s är en ogilitig POP-sökväg\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Hämtar lista över meddelanden...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Kan inte skriva meddelande till tillfällig fil!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Markerar raderade meddelanden...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Kollar efter nya meddelanden...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP-värd är inte definierad.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"Inga nya brev i POP-brevlåda.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Radera meddelanden från server?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Läser nya meddelanden (%d byte)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Fel vid skrivning av brevlåda!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d av %d meddelanden lästa]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Servern stängde förbindelsen!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Verifierar (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"POP-tidsstämpel är felaktig!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Verifierar (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP-verifiering misslyckades.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Kommandot USER stöds inte av servern.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Ogiltig SMTP-URL: %s\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Kunde inte lämna meddelanden på server.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Fel vid anslutning till server: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Stänger anslutning till POP-server...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Verifierar meddelandeindex...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Anslutning tappad. Återanslut till POP-server?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Uppskjutna meddelanden\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Inga uppskjutna meddelanden.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Otillåtet krypto-huvud\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Otillåtet S/MIME-huvud\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Avkrypterar meddelande...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Avkryptering misslyckades.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Ny sökning\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Skapa alias\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Sök\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Väntar på svar...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Sökkommando ej definierat.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Sökning\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Sökning: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Sökning \\\"%s\\\"\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Rör\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Skriv ut\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Sparar...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Bilaga sparad.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"VARNING! Du är på väg att skriva över %s, fortsätt?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Bilaga filtrerad.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Filtrera genom: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Skicka genom rör till: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Jag vet inte hur %s bilagor ska skrivas ut!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Skriv ut märkta bilagor?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Skriv ut bilaga?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Kan inte avkryptera krypterat meddelande!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Bilagor\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Det finns inga underdelar att visa!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Kan inte radera bilaga från POP-server.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Radering av bilagor från krypterade meddelanden stöds ej.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Radering av bilagor från krypterade meddelanden stöds ej.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Endast radering av \\\"multipart\\\"-bilagor stöds.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Du kan bara återsända \\\"message/rfc822\\\"-delar.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Fel vid återsändning av meddelande!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Fel vid återsändning av meddelanden!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Kan inte öppna tillfällig fil %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Vidarebefordra som bilagor?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"Kan inte avkoda alla märkta bilagor. MIME-vidarebefordra de övriga?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Vidarebefordra MIME inkapslat?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Kan inte skapa %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Kan inte hitta några märkta meddelanden.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Inga sändlistor hittades!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"Kan inte avkoda alla märkta bilagor. MIME-inkapsla de övriga?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Lägg till\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Infoga\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Radera\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Kan inte hämta mixmasters type2.list!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Välj en återpostarkedja.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Fel: %s kan inte användas som den sista återpostaren i en kedja.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster-kedjor är begränsade till %d element.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Återpostarkedjan är redan tom.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Du har redan valt det första kedjeelementet.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Du har redan valt det sista kedjeelementet.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster accepterar inte Cc eller Bcc-huvuden.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Var vänlig och sätt \\\"hostname\\\"-variabeln till ett passande värde vid \"\n\"användande av mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Fel vid sändning av meddelande, barn returnerade %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Fel vid sändning av meddelande.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Felaktigt formatterad post för typ %s i \\\"%s\\\", rad %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Ingen \\\"mailcap\\\"-sökväg angiven\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"\\\"mailcap\\\"-post för typ %s hittades inte\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: för få parametrar\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: för många parametrar\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Inget ämne, avbryt?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Inget ämne, avbryter.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Svara till %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Svara till %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Inga märkta meddelanden är synliga!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Inkludera meddelande i svar?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Inkluderar citerat meddelande...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Kunde inte inkludera alla begärda meddelanden!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Vidarebefordra som bilaga?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Förbereder vidarebefordrat meddelande...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Återkalla uppskjutet meddelande?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Redigera vidarebefordrat meddelande?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Meddelandet har inte ändrats. Avbryt?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Meddelandet har inte ändrats. Avbröt.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Meddelande uppskjutet.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Inga mottagare är angivna!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Inga mottagare blev angivna.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Inget ärende, avbryt sändning?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Inget ärende angivet.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Skickar meddelande...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"visa bilaga som text\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Kunde inte skicka meddelandet.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Brevet skickat.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Skickar i bakgrunden.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Ingen begränsningsparameter hittad! [Rapportera det här felet]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s existerar inte längre!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s är inte en normal fil.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Kunde inte öppna %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Fel vid sändning av meddelande, barn returnerade %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Utdata från sändprocessen\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Felaktigt IDN %s vid förberedning av \\\"resent-from\\\".\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Avslutar.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Fångade %s...  Avslutar.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Fångade signal %d...  Avslutar.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Mata in S/MIME-lösenfras:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Betrodd   \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Verifierad   \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Overifierad\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Utgången   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Återkallad   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Ogiltig   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Okänd   \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME-certifikat som matchar \\\"%s\\\".\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"ID:t är inte giltigt.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Ange nyckel-ID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Inga (giltiga) certifikat hittades för %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Fel: kunde inte skapa OpenSSL-underprocess!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"ingen certifikatfil\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"ingen mbox\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Ingen utdata från OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"Kan inte signera: Inget nyckel angiven. Använd signera som.\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Kan inte öppna OpenSSL-underprocess!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Slut på utdata från OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Fel: kunde inte skapa OpenSSL-underprocess! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"\"\n\"[-- Följande data är S/MIME-krypterad --]\\n\"\n\"\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"\"\n\"[-- Följande data är S/MIME-signerad --]\\n\"\n\"\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Slut på S/MIME-krypterad data. --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Slut på S/MIME-signerad data. --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (k)ryptera, (s)ignera, kryptera (m)ed, signera s(o)m, (b)åda, eller \"\n\"(r)ensa? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (k)ryptera, (s)ignera, kryptera (m)ed, signera s(o)m, (b)åda, eller \"\n\"(r)ensa? \"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"ksmobr\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (k)ryptera, (s)ignera, kryptera (m)ed, signera s(o)m, (b)åda, eller \"\n\"(r)ensa? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"ksmobr\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Välj algoritmfamilj: 1: DES, 2: RC2, 3: AES, eller r(e)nsa? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drae\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SMTP-session misslyckades: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SMTP-session misslyckades: kunde inte öppna %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"SMTP-session misslyckades: läsfel\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"SMTP-session misslyckades: skrivfel\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Ogiltig SMTP-URL: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP-server stöder inte autentisering\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP-autentisering kräver SASL\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"SASL-autentisering misslyckades\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL-autentisering misslyckades\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Sorterar brevlåda...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Kunde inte hitta sorteringsfunktion! [Rapportera det här felet]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(ingen brevlåda)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Första meddelandet är inte synligt i den här begränsade vyn\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Första meddelandet är inte tillgängligt.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"effektlös operation\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"slut på villkorlig exekvering (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"tvinga visning av bilagor med \\\"mailcap\\\"\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"visa bilaga som text\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Växla visning av underdelar\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"flytta till slutet av sidan\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"återsänd ett meddelande till en annan användare\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"välj en ny fil i den här katalogen\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"visa fil\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"visa namnet på den valda filen\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"prenumerera på aktuell brevlåda (endast IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"avsluta prenumereration på aktuell brevlåda (endast IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"växla vy av alla/prenumererade brevlådor (endast IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"lista brevlådor med nya brev\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"byt kataloger\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"kolla brevlådor efter nya brev\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"bifoga fil(er) till det här meddelandet\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"bifoga meddelande(n) till det här meddelandet\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"redigera BCC-listan\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"redigera CC-listan\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"redigera bilagebeskrivning\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"redigera transportkodning för bilagan\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"ange en fil att spara en kopia av det här meddelandet till\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"redigera filen som ska bifogas\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"redigera avsändarfältet\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"redigera meddelandet med huvuden\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"redigera meddelandet\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"redigera bilaga med \\\"mailcap\\\"-posten\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"redigera Reply-To-fältet\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"redigera ämnet på det här meddelandet\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"redigera TO-listan\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"skapa en ny brevlåda (endast IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"redigera \\\"content type\\\" för bilaga\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"hämta en tillfällig kopia av en bilaga\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"kör ispell på meddelandet\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"komponera ny bilaga med \\\"mailcap\\\"-post\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"växla omkodning av den här bilagan\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"spara det här meddelandet för att skicka senare\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"byt namn på/flytta en bifogad fil\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"skicka meddelandet\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"växla dispositionen mellan integrerat/bifogat\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"växla om fil ska tas bort efter att den har sänts\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"uppdatera en bilagas kodningsinformation\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"skriv meddelandet till en folder\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"kopiera ett meddelande till en fil/brevlåda\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"skapa ett alias från avsändaren av ett meddelande\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"flytta post till slutet av skärmen\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"flytta post till mitten av skärmen\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"flytta post till början av skärmen\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"skapa avkodad (text/plain) kopia\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"skapa avkodad kopia (text/plain) och radera\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"radera den aktuella posten\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"radera den aktuella brevlådan (endast för IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"radera alla meddelanden i undertråd\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"radera alla meddelanden i tråd\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"visa avsändarens fullständiga adress\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"visa meddelande och växla rensning av huvud\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"visa ett meddelande\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"ändra i själva meddelandet\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"radera tecknet före markören\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"flytta markören ett tecken till vänster\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"flytta markören till början av ordet\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"hoppa till början av raden\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"rotera bland inkomna brevlådor\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"komplettera filnamn eller alias\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"komplettera adress med fråga\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"radera tecknet under markören\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"hoppa till slutet av raden\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"flytta markören ett tecken till höger\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"flytta markören till slutet av ordet\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"rulla ner genom historielistan\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"rulla upp genom historielistan\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"radera tecknen från markören till slutet på raden\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"radera tecknen från markören till slutet på ordet\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"radera alla tecken på raden\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"radera ordet framför markören\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"citera nästa tryckta tangent\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"byt tecknet under markören med föregående\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"skriv ordet med versaler\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"konvertera ordet till gemener\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"konvertera ordet till versaler\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"ange ett muttrc-kommando\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"ange en filmask\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"avsluta den här menyn\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"filtrera bilaga genom ett skalkommando\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"flytta till den första posten\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"växla ett meddelandes \\\"important\\\"-flagga\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"vidarebefordra ett meddelande med kommentarer\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"välj den aktuella posten\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"svara till alla mottagare\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"rulla ner en halv sida\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"rulla upp en halv sida\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"den här skärmen\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"hoppa till ett indexnummer\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"flytta till den sista posten\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"svara till angiven sändlista\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"kör ett makro\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"komponera ett nytt brevmeddelande\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"dela tråden i två\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"öppna en annan folder\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"öppna en annan folder i skrivskyddat läge\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"rensa en statusflagga från ett meddelande\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"radera meddelanden som matchar ett mönster\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"tvinga hämtning av brev från IMAP-server\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"hämta brev från POP-server\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"flytta till det första meddelandet\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"flytta till det sista meddelandet\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"visa endast meddelanden som matchar ett mönster\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"länka markerade meddelande till det aktuella\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"öppna nästa brevlåda med nya brev\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"hoppa till nästa nya meddelande\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"hoppa till nästa nya eller olästa meddelande\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"hoppa till nästa undertråd\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"hoppa till nästa tråd\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"flytta till nästa icke raderade meddelande\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"hoppa till nästa olästa meddelande\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"hoppa till första meddelandet i tråden\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"hoppa till föregående tråd\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"hoppa till föregående undertråd\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"flytta till föregående icke raderade meddelande\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"hoppa till föregående nya meddelande\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"hoppa till föregående nya eller olästa meddelande\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"hoppa till föregående olästa meddelande\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"märk den aktuella tråden som läst\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"märk den aktuella undertråden som läst\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"sätt en statusflagga på ett meddelande\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"spara ändringar av brevlåda\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"märk meddelanden som matchar ett mönster\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"återställ meddelanden som matchar ett mönster\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"avmarkera meddelanden som matchar ett mönster\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"flytta till mitten av sidan\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"flytta till nästa post\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"rulla ner en rad\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"flytta till nästa sida\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"hoppa till slutet av meddelandet\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"växla visning av citerad text\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"hoppa över citerad text\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"hoppa till början av meddelandet\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"skicka meddelandet/bilagan genom rör till ett skalkommando\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"flytta till föregående post\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"rulla upp en rad\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"flytta till föregående sida\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"skriv ut den aktuella posten\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"fråga ett externt program efter adresser\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"lägg till nya förfrågningsresultat till aktuellt resultat\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"spara ändringar till brevlåda och avsluta\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"återkalla ett uppskjutet meddelande\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"rensa och rita om skärmen\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{internt}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"döp om den aktuella brevlådan (endast för IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"svara på ett meddelande\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"använd det aktuella meddelande som mall för ett nytt\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"spara meddelande/bilaga till fil\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"sök efter ett reguljärt uttryck\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"sök bakåt efter ett reguljärt uttryck\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"sök efter nästa matchning\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"sök efter nästa matchning i motsatt riktning\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"växla färg på sökmönster\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"starta ett kommando i ett underskal\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"sortera meddelanden\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"sortera meddelanden i omvänd ordning\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"märk den aktuella posten\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"applicera nästa funktion på märkta meddelanden\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"applicera nästa funktion ENDAST på märkta meddelanden\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"märk den aktuella undertråden\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"märk den aktuella tråden\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"växla ett meddelandes \\\"nytt\\\" flagga\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"växla huruvida brevlådan ska skrivas om\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"växla bläddring över brevlådor eller alla filer\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"flytta till början av sidan\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"återställ den aktuella posten\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"återställ all meddelanden i tråden\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"återställ alla meddelanden i undertråden\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"visa Mutts versionsnummer och datum\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"visa bilaga med \\\"mailcap\\\"-posten om nödvändigt\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"visa MIME-bilagor\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"visa tangentkoden för en tangenttryckning\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"visa aktivt begränsningsmönster\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"komprimera/expandera aktuell tråd\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"komprimera/expandera alla trådar\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"bifoga en publik nyckel (PGP)\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"visa PGP-flaggor\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"skicka en publik nyckel (PGP)\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"verifiera en publik nyckel (PGP)\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"visa nyckelns användaridentitet\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"kolla efter klassisk PGP\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Godkänn den konstruerade kedjan\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Lägg till en \\\"remailer\\\" till kedjan\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Infoga en \\\"remailer\\\" i kedjan\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Radera en \\\"remailer\\\" från kedjan\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Välj föregående element i kedjan\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Välj nästa element i kedjan\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"skicka meddelandet genom en \\\"mixmaster remailer\\\" kedja\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"skapa avkrypterad kopia och radera\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"skapa avkrypterad kopia\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"rensa lösenfras(er) från minnet\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"extrahera stödda publika nycklar\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"visa S/MIME-flaggor\"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"ta bort meddelande(n)\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" i den här begränsade vyn\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"ta bort meddelande\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"redigera meddelande\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"fel i uttryck\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Internt fel. Informera <roessler@does-not-exist.org>.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Varning: En del av detta meddelande har inte blivit signerat.\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Fel: missformat PGP/MIME-meddelande! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Använder GPGME-backend, dock körs ingen gpg-agent\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Fel: \\\"multipart/encrypted\\\" har ingen protokollsparameter!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID:t %s är overifierad. Vill du använda det till %s?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"Använd (obetrott!) ID %s till %s?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"Använd ID %s till %s?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Varning: Du har ännu inte valt att lita på ID %s. (valfri tangent för att \"\n#~ \"fortsätta)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"Ingen utdata från OpenSSL...\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Varning: Temporärt certifikat hittas inte.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Klartext\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\tbehandla resterande argument som adress även om om de börjar med \"\n#~ \"-\\n\"\n#~ \"\\t\\tnär -a används med flera filnamn måste -- användas\"\n\n#~ msgid \"esabifc\"\n#~ msgstr \"ksobir\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Inget sökmönster.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Sök i omvänd ordning: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Sök: \"\n\n#~ msgid \"            created: \"\n#~ msgstr \"            skapad: \"\n\n#~ msgid \"*BAD* signature claimed to be from: \"\n#~ msgstr \"*DÅLIG* signatur påstående vara från: \"\n\n#~ msgid \"Error checking signature\"\n#~ msgstr \"Fel vid kontroll av signatur\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"Kontroll av SSL-certifikat\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"Kontroll av TLS/SSL-certifikat\"\n\n#~ msgid \"SASL failed to get local IP address\"\n#~ msgstr \"SASL misslyckades att hämta lokal IP-adress\"\n\n#~ msgid \"SASL failed to parse local IP address\"\n#~ msgstr \"SALS misslyckades att tolka lokal IP-adress\"\n\n#~ msgid \"SASL failed to get remote IP address\"\n#~ msgstr \"SALS misslyckades att hämta IP-adress\"\n\n#~ msgid \"SASL failed to parse remote IP address\"\n#~ msgstr \"SALS misslyckades att tolka IP-adress\"\n"
  },
  {
    "path": "po/tr.po",
    "content": "# Turkish translation of mutt.\n# (C) 2001 the Free Software Foundation.\n# Fatih Demir <kabalak@gtranslator.org>, 2001.\n# Recai Oktaş <roktas@debian.org>, 2006.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt 1.5\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2006-01-11 04:13+0200\\n\"\n\"Last-Translator: Recai Oktaş <roktas@debian.org>\\n\"\n\"Language-Team: Debian L10n Turkish <debian-l10n-turkish@lists.debian.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"%s makinesindeki kullanıcı adı: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"%s@%s için parola: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Çık\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Sil\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Kurtar\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Seç\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Yardım\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Hiç bir lâkabınız yok!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Lâkaplar\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Farklı lâkap oluştur: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Bu isimde bir lâkap zaten tanımlanmış!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Uyarı: Bu lâkap kullanılamayabilir.  Düzeltinsin mi?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Adres:\"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Hata: '%s' hatalı bir IDN.\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Kişisel isim: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Kabul?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Dosyaya kaydet: \"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"Dosya görüntülenirken hata oluştu\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Lâkap eklendi.\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"Dosya görüntülenirken hata oluştu\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"İsim şablonuna uymuyor, devam edilsin mi?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Mailcap düzenleme birimi %%s gerektiriyor\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"\\\"%s\\\" çalıştırılırken bir hata oluştu!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Başlıkları taramaya yönelik dosya açma girişimi başarısız oldu.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Başlıkları ayırmaya yönelik dosya açma girişimi başarısız oldu.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Dosya ismi değiştirilemedi.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"%s için mailcap yazma birimi yok, boş dosya yaratılıyor.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Mailcap düzenleme birimi %%s gerektiriyor\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"%s için mailcap düzenleme birimi yok\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Uygun mailcap kaydı bulunamadı.  Metin olarak gösteriliyor.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME tipi belirlenmemiş.  Ek gösterilemiyor.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Süzgeç oluşturulamadı\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- Ekler\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- Ekler\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Süzgeç oluşturulamadı\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Yazma hatası!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Bu ekin nasıl yazdırılacağı bilinmiyor!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Dizine geç\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Maske\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s bir dizin değil.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"[%d] posta kutusu \"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Abone [%s], Dosya maskesi: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Dizin [%s], Dosya maskesi: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Bir dizin eklenemez!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Dosya maskesine uyan dosya yok\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Yaratma sadece IMAP eposta kutuları için destekleniyor\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Yeniden isimlendirme sadece IMAP eposta kutuları için destekleniyor\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Silme sadece IMAP eposta kutuları için destekleniyor\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"Süzgeç oluşturulamadı\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"\\\"%s\\\" eposta kutusu gerçekten silinsin mi?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Eposta kutusu silindi.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Eposta kutusu silinmedi.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Dizine geç: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Dizin taranırken hata oluştu.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Dosya Maskesi: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Tersine sıralama seçeneği: (t)arih, (a)lfabetik, (b)oyut, (h)iç?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Sıralama seçeneği: (t)arih, (a)lfabetik, (b)oyut, (h)iç?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"tabh\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Yeni dosya ismi: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Bir dizin görüntülenemez\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Dosya görüntülenirken hata oluştu\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Yeni posta: \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: renk uçbirim tarafından desteklenmiyor\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: böyle bir renk yok\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: böyle bir şey yok\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: komut sadece indeks nesneleri için geçerlidir\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: eksik argüman\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Eksik argüman.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"renkli: eksik argüman\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"siyah-beyaz: eksik argüman\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: böyle bir nitelik yok\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"eksik argüman\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"fazla argüman\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"varsayılan renkler desteklenmiyor\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"PGP imzası doğrulansın mı?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Geçici dosya yaratılamadı!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Gösterim süzgeci oluşturulamadı\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"İleti kopyalanamadı\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME imzası başarıyla doğrulandı.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"S/MIME sertifikasının sahibiyle gönderen uyuşmuyor.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Uyarı: Bu iletinin bir bölümü imzalanmamış.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME imzası doğrulanamadı.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP imzası başarıyla doğrulandı.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP imzası doğrulanamadı.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Komut: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"İletinin geri gönderme adresi: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"İşaretli iletileri geri gönder:\"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Adres ayrıştırılırken hata!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Hatalı IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"İletiyi %s adresine geri gönder\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"İletilerin geri gönderme adresi: %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"İleti geri gönderilmedi.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"İletiler geri gönderilmedi.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"İleti geri gönderildi.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"İletiler geri gönderildi.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Süzgeç süreci yaratılamadı\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Borulanacak komut: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Yazdırma komutu tanımlanmadı.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"İleti yazdırılsın mı?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"İşaretlenen iletiler yazdırılsın mı?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"İleti yazdırıldı\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"İletiler yazdırıldı\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"İleti yazdırılamadı\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"İletiler yazdırılamadı\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Ters-sıra: (t)arih/(k)imden/(a)lıcı/k(o)nu/kim(e)/(i)lmek/sırası(z)/(b)oyut/\"\n\"(p)uan/(s)pam?:\"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Sıra: (t)arih/(k)imden/(a)lıcı/k(o)nu/kim(e)/(i)lmek/sırası(z)/(b)oyut/\"\n\"(p)uan/(s)pam?:\"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"tkaoeizbps\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Kabuk komutu: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Eposta kutusuna çözerek kaydedilecek%s\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Eposta kutusuna çözerek kopyalanacak%s\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Eposta kutusuna şifre çözerek kaydedilecek%s\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Eposta kutusuna şifre çözerek kopyalanacak%s\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Eposta kutusuna kaydedilecek%s\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Eposta kutusuna kopyalanacak%s\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" işaretliler\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"%s konumuna kopyalanıyor...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Gönderilirken %s karakter kümesine dönüştürülsün mü?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"İçerik-Tipi %s olarak değiştirildi.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Karakter kümesi %s olarak değiştirildi; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"dönüştürme yapılmıyor\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"dönüştürme yapılıyor\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Posta eki yok.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Gönder\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"İptal\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Dosya ekle\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Açıklama\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"İşaretleme desteklenmiyor.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"İmzala, Şifrele\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"Şifrele\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"İmzala\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \" (satıriçi)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\n#, fuzzy\nmsgid \" (S/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" farklı imzala: \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<varsayılan>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Şifreleme anahtarı: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] artık mevcut değil!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] değiştirildi. Kodlama yenilensin mi?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Ekler\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Uyarı: '%s' hatalı bir IDN.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Tek kalmış bir eki silemezsiniz.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"\\\"%s\\\" hatalı IDN'e sahip: '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Seçili dosyalar ekleniyor...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"%s eklenemedi!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Eklenecek iletileri içeren eposta kutusunu seçin\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Eposta kutusu kilitlenemedi!\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Bu klasörde ileti yok.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Eklemek istediğiniz iletileri işaretleyin!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Eklenemedi!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Tekrar kodlama sadece metin ekleri üzerinde etkilidir.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Mevcut ek dönüştürülmeyecek.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Mevcut ek dönüştürülecek.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Geçersiz kodlama.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Bu iletinin bir kopyası kaydedilsin mi?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Yeniden adlandır: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"%s incelenemiyor: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Yeni dosya: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"İçerik-Tipi temel/alt-tür biçiminde girilmeli\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Bilinmeyen İçerik-Tipi %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Dosya %s yaratılamadı\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Ek hazırlanırken bir hata oluştu\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"İletinin gönderilmesi ertelensin mi?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"İletiyi eposta kutusuna kaydet\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"İleti %s eposta kutusuna kaydediliyor...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"İleti kaydedildi.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME zaten seçili durumda. Önceki iptâl edilerek devam edilsin mi?\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP zaten seçili durumda. Önceki iptâl edilerek devam edilsin mi?\"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"gpgme bağlamı oluşturulurken hata: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"CMS protokolü etkinleştirilirken hata: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"gpgme veri nesnesi oluşturulurken hata: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"veri nesnesi için bellek ayrılırken hata: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"veri nesnesi konumlanırken hata: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"veri nesnesi okunurken hata: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Geçici dosya oluşturulamıyor\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"`%s' alıcısı eklenirken hata: %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"`%s' gizli anahtarı bulunamadı: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"`%s' gizli anahtarının özellikleri belirsiz\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"`%s' gizli anahtarı ayarlanırken hata: %s\\n\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"Anahtar bilgisi alınırken hata: \"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"veri şifrelenirken hata: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"veri imzalanırken hata: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Uyarı: Anahtarlardan biri hükümsüzleştirilmiş\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\"Uyarı: İmzalamada kullanılan anahtarın süresi dolmuş, son kullanma tarihi: \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Uyarı: Anahtarlardan en az birinin süresi dolmuş\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Uyarı: İmza geçerliliğinin sona erdiği tarih: \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Eksik bir anahtar veya sertifikadan dolayı doğrulama yapılamıyor\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"CRL mevcut değil\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"Mevcut CRL çok eski\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Kullanım şartlarına aykırı bir durumla karşılaşıldı\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Bir sistem hatası oluştu\"\n\n#: crypt-gpgme.c:1240\n#, fuzzy\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"UYARI: Sunucu makine adı ile sertifika uyuşmuyor\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Parmak izi: %s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\"UYARI: Anahtarın yukarıda gösterilen isimdeki kişiye ait olduğuna dair HİÇ \"\n\"BİR belirti yok\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"UYARI: Anahtar yukarıda gösterilen isimdeki kişiye ait DEĞİL\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\"UYARI: Anahtarın yukarıda gösterilen isimdeki kişiye ait olduğu kesin DEĞİL\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"%s yaratılsın mı?\"\n\n#: crypt-gpgme.c:1462\n#, fuzzy, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Anahtar bilgisi alınırken hata: \"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\n#, fuzzy\nmsgid \"Good signature from:\"\nmsgstr \"İyi imza: \"\n\n#: crypt-gpgme.c:1476\n#, fuzzy\nmsgid \"*BAD* signature from:\"\nmsgstr \"İyi imza: \"\n\n#: crypt-gpgme.c:1492\n#, fuzzy\nmsgid \"Problem signature from:\"\nmsgstr \"İyi imza: \"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\n#, fuzzy\nmsgid \"               expires: \"\nmsgstr \"                nam-ı diğer: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- İmza bilgisi başlangıcı --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Hata: doğrulama başarısız: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Gösterim başlangıcı (%s tarafından imzalanmış) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Gösterim sonu ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- İmza bilgisi sonu --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- Hata: şifre çözülemedi: %s --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Anahtar bilgisi alınırken hata: \"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Hata: şifre çözümü/doğrulaması başarısız: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Hata: veri kopyalaması başarısız\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP İLETİSİ BAŞLANGICI --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP GENEL ANAHTAR BÖLÜMÜ BAŞLANGICI --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- İMZALANMIŞ PGP İLETİSİ BAŞLANGICI --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- PGP İLETİSİ SONU --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP GENEL ANAHTAR BÖLÜMÜ SONU --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- İMZALANMIŞ PGP İLETİSİ SONU --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hata: PGP iletisinin başlangıcı bulunamadı! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Hata: geçici dosya yaratılamadı! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Aşağıdaki bilgi PGP/MIME ile imzalanmış ve şifrelenmiştir --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Aşağıdaki bilgi PGP/MIME ile şifrelenmiştir --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME ile imzalanmış ve şifrelenmiş bilginin sonu --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME ile şifrelenmiş bilginin sonu --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"Şifrelenmiş PGP iletisi başarıyla çözüldü.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Şifrelenmiş PGP iletisi çözülemedi\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Aşağıdaki bilgi S/MIME ile imzalanmıştır --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Aşağıdaki bilgi S/MIME ile şifrelenmiştir --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- S/MIME ile imzalanmış bilginin sonu --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- S/MIME ile şifrelenmiş bilginin sonu --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Bu kullanıcının kimliği görüntülenemiyor (bilinmeyen kodlama)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Bu kullanıcının kimliği görüntülenemiyor (geçersiz kodlama)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Bu kullanıcının kimliği görüntülenemiyor (geçersiz DN)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"nam-ı diğer .........: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Adı .................: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Geçersiz]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Geçerlilik Başlangıcı: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Geçerlilik Sonu .....: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Anahtar Tipi ........: %s, %lu bit %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Anahtar Kullanımı ...: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"şifreleme\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"imza\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"sertifikasyon\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Seri-No .............: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Yayımcı .............: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Alt anahtar .........: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Hükümsüz]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Süresi Dolmuş]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Etkin Değil]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Veri toplanıyor...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Yayımcının anahtarı bulunamadı: %s\\n\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Hata: sertifika zinciri çok uzun - burada duruldu\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"Anahtar kimliği: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new başarısız: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start başarısız: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next başarısız: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Bulunan bütün anahtarların süresi bitmiş veya hükümsüzleştirilmiş.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Çık  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Seç  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Anahtarı denetle  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP ve S/MIME anahtarları uyuşuyor\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"PGP anahtarları uyuşuyor\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME anahtarları uyuşuyor\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"anahtarlar uyuşuyor\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"Bu anahtar kullanılamaz: süresi dolmuş/etkin değil/hükümsüz.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"Kimlik (ID), süresi dolmuş/etkin değil/hükümsüz durumda.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"Kimliğin (ID) geçerliliği belirsiz.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"Kimlik (ID) geçerli değil.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"Kimlik (ID) çok az güvenilir.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Gerçekten bu anahtarı kullanmak istiyor musunuz?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"\\\"%s\\\" tabirine uyan anahtarlar aranıyor...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"%2$s için anahtar NO = \\\"%1$s\\\" kullanılsın mı?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"%s için anahtar NO'yu girin: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Lütfen anahtar numarasını girin: \"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Anahtar bilgisi alınırken hata: \"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP anahtarı %s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, p(g)p, i(p)tal?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, (s)/mime, i(p)tal?\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, p(g)p, i(p)tal?\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"rmfkgup\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, (s)/mime, i(p)tal?\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"rmfksup\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, p(g)p, i(p)tal?\"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"rmfkgup\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, (s)/mime, i(p)tal?\"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"rmfksup\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Farklı imzala: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Gönderici doğrulanamadı\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Göndericinin kim olduğu belirlenemedi\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (şu anki tarih: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s çıktısı%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"PGP parolası/parolaları unutuldu.\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\"İleti satıriçi olarak gönderilemiyor.  PGP/MIME kullanımına geri dönülsün mü?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"PGP çağırılıyor...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\"İleti satıriçi olarak gönderilemiyor.  PGP/MIME kullanımına geri dönülsün mü?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Eposta gönderilmedi.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\"İçeriği hakkında hiçbir bilginin bulunmadığı S/MIME iletilerinin \"\n\"gönderilmesi desteklenmiyor.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"PGP anahtarları belirlenmeye çalışılıyor...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"S/MIME sertifikaları belirlenmeye çalışılıyor...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hata: Bilinmeyen \\\"multipart/signed\\\" protokolü %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hata: Tutarsız \\\"multipart/signed\\\" yapısı! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Uyarı: %s/%s imzaları doğrulanamıyor. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Aşağıdaki bilgi imzalanmıştır --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Uyarı: Herhangi bir imza bulunamıyor. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- İmzalanmış bilginin sonu --]\\n\"\n\n#: cryptglue.c:89\n#, fuzzy\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\\\"crypt_use_gpgme\\\" ayarlanmış, fakat GPGME desteğiyle inşa edilmemiş.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"S/MIME çağırılıyor...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"evet\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"hayır\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Mutt'tan çıkılsın mı?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"bilinmeyen hata\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Devam etmek için bir tuşa basın...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" (liste için '?'e basın): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Hiç bir eposta kutusu açık değil.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"İleti yok.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Eposta kutusu salt okunur.\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Bu işleve ileti ekle kipinde izin verilmiyor.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Görüntülenebilir bir ileti yok.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Salt-okunur bir eposta kutusu yazılabilir yapılamaz!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Klasördeki değişiklikler çıkışta kaydedilecek.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Klasördeki değişiklikler kaydedilmeyecek.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Çık\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Kaydet\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Gönder\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Cevapla\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Gruba Cevapla\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"Eposta kutusu değiştirildi.  Bazı eposta bayrakları hatalı olabilir.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Bu kutuda yeni eposta var!\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Eposta kutusu değiştirildi.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"İşaretlenmiş ileti yok.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Yapılacak bir işlem yok.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"İletiye geç: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Argüman bir ileti numarası olmak zorunda.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Bu ileti görünmez.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Geçersiz ileti numarası.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Kurtarılan ileti yok.\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Tabire uyan iletileri sil: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Herhangi bir sınırlandırma tabiri etkin değil.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Sınır: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Sadece tabire uyan iletiler: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"İletilerin hepsini görmek için \\\"all\\\" tabirini kullanın.\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Mutt'tan çıkılsın mı?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Tabire uyan iletileri işaretle: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Kurtarılan ileti yok.\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Tabire uyan iletileri kurtar: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Tabire uyan iletilerdeki işareti sil: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Eposta kutusunu salt okunur aç\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Eposta kutusunu aç\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Yeni eposta içeren bir eposta kutusu yok.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s bir eposta kutusu değil!\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Mutt'tan kaydedilmeden çıkılsın mı?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"İlmek kullanımı etkin değil.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Kopuk ilmek\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"İlmeğe bağlamakta kullanılabilecek bir \\\"Message-ID:\\\" başlığı yok\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Öncelikle lütfen buraya bağlanacak bir ileti işaretleyin\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Bağlanan ilmekler\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Herhangi bir ilmeğe bağlanmadı\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Son iletidesiniz.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Kurtarılan ileti yok.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"İlk iletidesiniz.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Arama başa döndü.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Arama sona ulaştı.\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Sınırlandırılmış görünümde ana ileti görünemez.\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"Yeni ileti yok\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Sınırlandırılmış görünümde ana ileti görünemez.\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"Okunmamış ileti yok\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"iletiyi göster\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Daha başka ilmek yok.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"İlk ilmektesiniz.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"İlmek okunmamış iletiler içeriyor.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"Kurtarılan ileti yok.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"İleti yazılamadı\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"ilmeği başlatan ana iletiye geç\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"Kurtarılan ileti yok.\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\ttek bir ~ içeren bir satırı başa ekle\\n\"\n\"~b isimler\\tisimleri görünmez kopya listesine (BCC) ekle\\n\"\n\"~c isimler\\tisimleri görünür kopya listesine (CC) ekle\\n\"\n\"~f iletiler\\tiletileri içer\\n\"\n\"~F iletiler\\t~f'ye benzer, ama başlıkları da içerir\\n\"\n\"~h\\t\\tileti başlığını değiştir\\n\"\n\"~m iletiler\\tiletileri içer ve cevap ver\\n\"\n\"~M iletiler\\t~m'ye benzer, ama başlıkları da içerir\\n\"\n\"~p\\t\\tiletiyi yazdır\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tdosyayı kaydedip metin düzenleyiciden çık\\n\"\n\"~r dosya\\t\\tdosyayı metin düzenleyiciyle aç\\n\"\n\"~t isimler\\tisimleri gönderilenler (To:) listesine ekle\\n\"\n\"~u\\t\\tönceki satırı tekrar çağır\\n\"\n\"~v\\t\\tiletiyi $visual metin düzenleyiciyle düzenle\\n\"\n\"~w dosya\\t\\tiletiyi dosyaya kaydet\\n\"\n\"~x\\t\\tdeğişiklikleri iptal et ve metin düzenleyiciden çık\\n\"\n\"~?\\t\\tbu ileti\\n\"\n\".\\t\\ttek '.' içeren bir satır girdiyi sonlandırır\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: geçersiz ileti numarası.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(İletiyi tek '.' içeren bir satırla sonlandır)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Eposta kutusu yok.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"İleti içeriği:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(devam et)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"dosya ismi eksik.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"İletide herhangi bir satır yok.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"%s hatalı IDN içeriyor: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: bilinmeyen metin düzenleyici komutu (~? yardım görüntüler)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"geçici dizin yaratılamadı: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"geçici eposta dizini yaratılamadı: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"geçici eposta dizini düzenlenemedi: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"İleti dosyası boş!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"İleti değiştirilmedi!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"İleti dosyası %s açılamıyor\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"%s dizinine eklenemiyor\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Hata. Geçici dosya %s korunmaya alındı\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Bayrağı ayarla\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Bayrağı sil\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Hata:  \\\"Multipart/Alternative\\\"e ait hiç bir bölüm görüntülenemiyor! \"\n\"--]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Ek #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Tip: %s/%s, Kodlama: %s, Boyut: %s --]\\n\"\n\n#: handler.c:1281\n#, fuzzy\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Uyarı: Bu iletinin bir bölümü imzalanmamış.\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- %s ile görüntüleniyor --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Otomatik görüntüleme komutu çalıştırılıyor: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- %s çalıştırılamıyor --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- %s otomatik görüntüleme komutunun ürettiği hata --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- Hata: \\\"message/external-body\\\" herhangi bir erişim tipi içermiyor --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Bu %s/%s eki\"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(boyut %s bayt) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"silindi --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- %s üzerinde --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- isim: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Bu %s/%s eki eklenmiyor --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- ve belirtilen dış kaynak artık geçerli de --]\\n\"\n\"[-- değil. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- ve belirtilen %s erişim tipi de desteklenmiyor --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Geçici dosya açılamadı!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Hata: \\\"multipart/signed\\\"e ait bir protokol yok.\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Bu %s/%s eki\"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s desteklenmiyor \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"('%s' ile bu bölümü görüntüleyebilirsiniz)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"('view-attachments' komutunun bir tuşa atanması gerekiyor!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: dosya eklenemiyor\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"HATA: bu hatayı lütfen bildirin\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<BİLİNMİYOR>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Genel tuş atamaları:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Herhangi bir tuş atanmamış işlevler:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"%s için yardım\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Bir kanca (hook) içindeyken unhook * komutu kullanılamaz.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: bilinmeyen kanca (hook) tipi: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: %s bir %s içindeyken silinemez.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Doğrulamacılar erişilir durumda değil\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Doğrulanıyor (anonim)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Anonim doğrulama başarısız oldu.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Doğrulanıyor (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 doğrulaması başarısız oldu.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Doğrulanıyor (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI doğrulaması başarısız oldu.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"Bu sunucuda LOGIN kapalı.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Giriş yapılıyor...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Giriş başarısız oldu.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Doğrulanıyor (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL doğrulaması başarısız oldu.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s geçerli bir IMAP dosyayolu değil\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Dizin listesi alınıyor...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Böyle bir dizin yok\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Eposta kutusu yarat: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Eposta kutusunun bir ismi olmak zorunda.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Eposta kutusu yaratıldı.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"%s eposta kutusunun ismini değiştir: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Yeniden isimlendirme başarısız: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Eposta kutusu yeniden isimlendirildi.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Eposta kutusu kapatıldı\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"SSL başarısız oldu: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"%s bağlantısı kapatılıyor...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Bu IMAP sunucusu çok eski. Mutt bu sunucuyla çalışmaz.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"TLS ile güvenli bağlanılsın mı?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"TLS bağlantısı kurulamadı\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Şifrelenmiş bağlantı mevcut değil\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"%s seçiliyor...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Eposta kutusu açılırken hata oluştu!\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"%s yaratılsın mı?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Silme işlemi başarısız oldu\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"%d ileti silinmek için işaretlendi...\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"İleti durum bayrakları kaydediliyor... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"Adres ayrıştırılırken hata!\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"İletileri sunucudan sil...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE başarısız oldu\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"%s başlık ismi verilmeden başlık araması\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Eposta kutusu ismi hatalı\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"%s eposta kutusuna abone olunuyor...\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"%s aboneliği iptal ediliyor...\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"%s eposta kutusuna abone olunuyor...\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"%s aboneliği iptal ediliyor...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"Bu IMAP sunucu sürümünden başlıklar alınamıyor.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Geçici dosya %s yaratılamadı!\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"Önbellek inceleniyor... [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"İleti başlıkları alınıyor... [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"İleti alınıyor...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"İleti indeksi hatalı. Eposta kutusu yeniden açılıyor.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"İleti yükleniyor...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"%d ileti %s eposta kutusuna kopyalanıyor...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"%d ileti %s eposta kutusuna kopyalanıyor...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Devam edilsin mi?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Öge bu menüde mevcut değil.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Hatalı düzenli ifade: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"spam: uyuşan bir tabir yok\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"nospam: uyuşan bir tabir yok\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"Uyarı: '%2$s' adresindeki '%1$s' IDN'si hatalı.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"ekler: dispozisyon yok\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"ekler: geçersiz dispozisyon\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"ek olmayanlar: dispozisyon yok\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"ek olmayanlar: geçersiz dispozisyon\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: adres yok\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Uyarı: '%2$s' adresindeki '%1$s' IDN'si hatalı.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"geçersiz başlık alanı\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: bilinmeyen sıralama tipi\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): hatalı düzenli ifade: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: bilinmeyen değişken\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"\\\"reset\\\" komutunda ön ek kullanılamaz\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"\\\"reset\\\" komutunda değer kullanılamaz\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s ayarlandı\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s ayarlanmadan bırakıldı\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Geçersiz ay günü: %s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: geçersiz eposta kutusu tipi\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: geçersiz değer\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: geçersiz değer\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: Bilinmeyen tip.\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: bilinmeyen tip\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"%s dosyasında hata var, satır %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: %s dosyasında hatalar var\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"\"\n\"source: %s dosyasındaki çok fazla sayıda hatadan dolayı okuma iptal edildi\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: hata konumu: %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: fazla argüman\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: bilinmeyen komut\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Komut satırında hata: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"ev dizini belirlenemedi\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"kullanıcı adı belirlenemedi\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"kullanıcı adı belirlenemedi\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"eksik argüman\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Makro döngüsü tespit edildi.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Tuş ayarlanmamış.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Tuş ayarlanmamış.  Lütfen '%s' tuşuyla yardım isteyin.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: fazla argüman\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s: böyle bir menü yok\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"boş tuş dizisi\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: fazla argüman\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s: tuş eşleminde böyle bir işlev yok\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: boş tuş dizisi\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: fazla argüman\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: argüman verilmemiş\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s: böyle bir işlev yok\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Tuşları girin (iptal için ^G): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Karakter = %s, Sekizlik = %o, Onluk = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Tam sayı taşması -- bellek ayrılamıyor!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Bellek tükendi!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Geliştiricilere ulaşmak için lütfen <mutt-dev@mutt.org> listesiyle\\n\"\n\"irtibata geçin.  Hata bildirimi için lütfen http://bugs.mutt.org/\\n\"\n\"sayfasını ziyaret edin.\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Telif hakkı (C) 1996-2002 Michael R. Elkins ve diğerleri.\\n\"\n\"Mutt HİÇBİR GARANTİ vadetmez; daha fazla bilgi için 'mutt -vv'\\n\"\n\"komutunu çalıştırın.\\n\"\n\"Mutt bir özgür yazılımdır.  Bu programı belirli şartlar altında\\n\"\n\"yeniden dağıtabilirsiniz.  Ayrıntılı bilgi için 'mutt -vv' komutunu\\n\"\n\"kullanabilirsiniz.\\n\"\n\n#: main.c:75\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Telif hakkı (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n\"Telif hakkı (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Telif hakkı (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Telif hakkı (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Telif hakkı (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n\"Telif hakkı (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Telif hakkı (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"\\n\"\n\"Burada listelenmeyen başka bir çok geliştirici; çok miktarda kod,\\n\"\n\"düzeltme ve öneriyle yazılıma katkıda bulunmuştur.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"Yazılımın lisans metni özgün İngilizce haliyle aşağıda sunulmuştur:\\n\"\n\"\\n\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\n#, fuzzy\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"seçenekler:\\n\"\n\"  -A <lâkap>\\tlâkaba ait adresi kullan\\n\"\n\"  -a <dosya>\\tiletiye bir dosya ekle\\n\"\n\"  -b <adres>\\tgörünmez kopya adresi (BCC)\\n\"\n\"  -c <adres>\\tkopya adresi (CC)\\n\"\n\"  -D\\t\\tdeğişkenlerin hepsini göster\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \" -d <seviye>\\thata ayıklama bilgisini ~/.muttdebug0 dosyasına kaydet\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -e <komut>\\tbaşlangıçta çalıştırılacak komut\\n\"\n\"  -f <dosya>\\tokunacak eposta kutusu\\n\"\n\"  -F <dosya>\\tyapılandırma dosyası (muttrc'ye alternatif)\\n\"\n\"  -H <dosya>\\tbaşlık ve gövdenin okunacağı örnek dosya\\n\"\n\"  -i <dosya>\\tileti gövdesine eklenecek dosya\\n\"\n\"  -m <tip>\\töntanımlı eposta kutusu tipi\\n\"\n\"  -n\\t\\tsistem geneli Muttrc dosyasıno okuma\\n\"\n\"  -p\\t\\tgönderilmesi ertelenmiş iletiyi çağır\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <değişken>\\tyapılandırma değişkenini sorgula\\n\"\n\"  -R\\t\\teposta kutusunu salt okunur aç\\n\"\n\"  -s <konu>\\tileti konusu (boşluk içeriyorsa çift tırnak içine alınmalı)\\n\"\n\"  -v\\t\\tsürüm ve inşa bilgilerini gösterir\\n\"\n\"  -x\\t\\tmailx gönderme kipini taklit et\\n\"\n\"  -y\\t\\t'mailboxes' listesinde belirtilen bir eposta kutusunu seç\\n\"\n\"  -z\\t\\teposta kutusunda ileti yoksa hemen çık\\n\"\n\"  -Z\\t\\tyeni ileti içeren ilk klasörü göster, yeni ileti yoksa hemen çık\\n\"\n\"  -h\\t\\tbu yardım metnini göster\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"İnşa seçenekleri:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Uçbirim ilklendirilirken hata oluştu.\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Hata: '%s' hatalı bir IDN.\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Hata ayıklama bilgileri için %d seviyesi kullanılıyor.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"\"\n\"DEBUG (hata ayıkla) seçeneği inşa sırasında tanımlanmamış.  Göz ardı \"\n\"edildi.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s yok. Yaratılsın mı?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"%s yaratılamadı: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Herhangi bir alıcı belirtilmemiş.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: dosya eklenemedi.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Yeni eposta içeren bir eposta kutusu yok.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Gelen iletileri alacak eposta kutuları tanımlanmamış.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Eposta kutusu boş.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"%s okunuyor...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Eposta kutusu hasarlı!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Eposta kutusu hasar görmüş!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Ölümcül hata!  Eposta kutusu yeniden açılamadı!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Eposta kutusu kilitlenemedi!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"\"\n\"sync: eposta kutusu değiştirilmiş, fakat herhangi bir değiştirilmiş ileti de \"\n\"içermiyor! (bu hatayı bildirin)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"%s yazılıyor...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Değişiklikler kaydediliyor...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"\"\n\"Yazma başarısız oldu!  Eposta kutusunun bir bölümü %s dosyasına yazıldı\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Eposta kutusu yeniden açılamadı!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Eposta kutusu yeniden açılıyor...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Geç: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Geçersiz indeks numarası.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Öge yok.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Daha aşağıya inemezsiniz.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Daha yukarı çıkamazsınız.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"İlk sayfadasınız.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Son sayfadasınız.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Son ögedesiniz.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"İlk ögedesiniz.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Ara: \"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Ters ara: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Bulunamadı.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"İşaretlenmiş öge yok.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Bu menüde arama özelliği şimdilik gerçeklenmemiş.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Sorgu alanları arasında geçiş özelliği şimdilik gerçeklenmemiş.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"İşaretleme desteklenmiyor.\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"%s seçiliyor...\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"İleti gönderilemedi.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): dosya tarihi ayarlanamıyor\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"veri nesnesi için bellek ayrılırken hata: %s\\n\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"%s soketine yapılan bağlantı kapatıldı\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL erişilir durumda değil.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Önceden bağlanma komutu (preconnect) başarısız oldu.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"%s soketiyle konuşurken hata oluştu (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Hatalı IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"%s aranıyor...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"\\\"%s\\\" sunucusu bulunamadı.\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"%s sunucusuna bağlanılıyor...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"%s sunucusuna bağlanılamadı (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"\"\n\"Sistemde, rastgele süreçler için gerekli entropi yeterli seviyede değil\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Entropi havuzu dolduruluyor: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s güvenilir erişim haklarına sahip değil!\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL, entropi seviyesinin yetersizliğinden dolayı etkisizleştirildi\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"G/Ç hatası\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL başarısız oldu: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Karşı taraftan sertifika alınamadı\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"%s (%s) kullanarak SSL bağlantısı kuruluyor\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Bilinmiyor\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[hesaplanamıyor]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[geçersiz tarih]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Sunucu sertifikası henüz geçerli değil\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Sunucu sertifikasının süresi dolmuş\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"Karşı taraftan sertifika alınamadı\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"Karşı taraftan sertifika alınamadı\"\n\n#: mutt_ssl.c:874\n#, fuzzy, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"S/MIME sertifikasının sahibiyle gönderen uyuşmuyor.\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Sertifika kaydedildi\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Sertifikanın sahibi:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Sertifikayı düzenleyen:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Bu sertifika geçerli\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   %s tarihinden\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     %s tarihine dek\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Parmak izi: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r)eddet, (s)adece bu defa, (d)aima kabul et\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"rsd\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r)eddet, (s)adece bu defalığına kabul et\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"rs\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Uyarı: Sertifika kaydedilemedi\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Sertifika kaydedildi\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Hata: açık TLS soketi yok\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"SSL/TLS bağlantısı için mevcut bütün protokoller etkisizleştirildi\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"%s (%s/%s/%s) kullanarak SSL/TLS bağlantısı kuruluyor\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Gnutls sertifika verisi ilklendirilirken hata oluştu\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Sertifika verisi işlenirken hata oluştu\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1 Parmak izi: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5 Parmak izi: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"UYARI: Sunucu sertifikası henüz geçerli değil\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"UYARI: Sunucu sertifikasının süresi dolmuş\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"UYARI: Sunucu sertifikası hükümsüz kılınmış\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"UYARI: Sunucu makine adı ile sertifika uyuşmuyor\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"UYARI: Sunucu sertifikasını imzalayan bir CA değil\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Sertifika doğrulama hatası (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Sertifika X.509 değil\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"\\\"%s\\\" tüneliyle bağlanılıyor...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"%s tüneli %d hatası üretti (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"%s ile konuşurken tünel hatası oluştu: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"\"\n\"Dosya bir dizin; bu dizinin altına kaydedilsin mi? [(e)vet, (h)ayır, (t)ümü]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"eht\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Dosya bir dizin; bu dizin altına kaydedilsin mi?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Dosyayı dizin altına kaydet: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Dosya zaten var, ü(s)tüne yaz, (e)kle, i(p)tal?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"sep\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"İleti POP eposta kutusuna kaydedilemiyor.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"İletiler %s sonuna eklensin mi?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s bir eposta kutusu değil!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Maksimum kilit sayısı aşıldı, %s için varolan kilit silinsin mi?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"%s kilitlenemedi.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"\\\"fcntl\\\" kilitlemesi zaman aşımına uğradı!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"\\\"fcntl\\\" kilidi için bekleniyor... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"\\\"flock\\\" kilitlemesi zaman aşımına uğradı!\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"\\\"flock\\\" kilidi için bekleniyor... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"%s kilitlenemedi\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"%s eposta kutusunun eşzamanlaması başarısız!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Okunan iletiler %s eposta kutusuna taşınsın mı?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Silmek için işaretlenmiş %d ileti silinsin mi?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Silmek için işaretlenmiş %d ileti silinsin mi?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Okunan iletiler %s eposta kutusuna taşınıyor...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Eposta kutusunda değişiklik yok.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d kaldı, %d taşındı, %d silindi.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d kaldı, %d silindi.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" Yazılabilir yapmak için '%s' tuşuna basınız\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"'toggle-write' komutunu kullanarak tekrar yazılabilir yapabilirsiniz!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Eposta kutusu yazılamaz yapıldı. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Eposta kutusu denetlendi.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"İleti yazılamadı\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Tam sayı taşması -- bellek ayrılamıyor.\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"ÖncekiSh\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"SonrakiSh\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Eki Görüntüle\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Sonraki\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"İletinin sonu.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"İletinin başı.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Şu an yardım gösteriliyor.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Alıntı metni sonu.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Alıntı metnini takip eden normal metnin sonu.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"çok parçalı (multipart) iletinin sınırlama (boundary) değişkeni yok!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Tabirde hata var: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Boş tabir\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"Geçersiz ay günü: %s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Geçersiz ay: %s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Geçersiz göreceli tarih: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"tabirdeki hata konumu: %s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"eksik argüman\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"eşleşmeyen parantezler: %s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: geçersiz komut\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c : bu kipte desteklenmiyor\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"eksik argüman\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"eşleşmeyen parantezler: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"boş tabir\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"hata: bilinmeyen işlem kodu %d (bu hatayı bildirin).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Arama tabiri derleniyor...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Komut, eşleşen bütün iletilerde çalıştırılıyor...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Tabire uygun ileti bulunamadı.\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"Kaydediliyor...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Arama hiç bir şey bulunamadan sona erişti\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Arama hiçbir şey bulunamadan başa erişti\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Arama iptal edildi.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"PGP parolasını girin: \"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"PGP parolası unutuldu.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Hata: PGP alt süreci yaratılamadı! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP çıktısı sonu --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Hata: PGP alt süreci yaratılamadı! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Şifre çözme başarısız\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"PGP alt süreci açılamıyor!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"PGP çalıştırılamıyor\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, %s, i(p)tal? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"satır(i)çi\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, %s, i(p)tal? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, %s, i(p)tal? \"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"rmfkgup\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, %s, i(p)tal? \"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"rmfkgup\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, %s, i(p)tal? \"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"rmfkgup\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP şif(r)ele, i(m)zala, (f)arklı imzala, i(k)isi de, %s, i(p)tal? \"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"rmfkgup\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"PGP anahtarı alınıyor...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"\"\n\"Uygun bütün anahtarlar ya süresi dolmuş, ya hükümsüz ya da etkisiz durumda.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"<%s> ile eşleşen PGP anahtarları.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"\\\"%s\\\" ile eşleşen PGP anahtarları.\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"/dev/null açılamıyor\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP anahtarı %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"TOP komutu sunucu tarafından desteklenmiyor.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Başlık, geçici bir dosyaya yazılamıyor!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"UIDL komutu sunucu tarafından desteklenmiyor.\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"İleti indeksi hatalı. Eposta kutusu yeniden açılıyor.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s geçerli bir POP dosyayolu değil\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"İletilerin listesi alınıyor...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"İleti geçici bir dosyaya yazılamıyor!\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"%d ileti silinmek için işaretlendi...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Yeni iletiler için bakılıyor...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP sunucusu tanımlanmadı.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"POP eposta kutusunda yeni eposta yok.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"İletiler sunucudan silinsin mi?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Yeni iletiler okunuyor (%d bayt)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Eposta kutusuna yazarken hata oluştu!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%1$s [ %3$d iletiden %2$d ileti okundu]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Sunucu bağlantıyı kesti!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Doğrulanıyor (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Doğrulanıyor (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP doğrulaması başarısız oldu.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Sunucu USER komutunu desteklemiyor.\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Geçersiz   \"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"İletiler sunucuda bırakılamıyor.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Sunucuya bağlanırken hata oluştu: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"POP sunucuya yapılan bağlantı kesiliyor...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"İleti indeksleri doğrulanıyor...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"Bağlantı kaybedildi. POP sunucusuna yeniden bağlanılsın mı?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Ertelenen İletiler\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Ertelen ileti yok.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"Geçersiz PGP başlığı\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Geçersiz S/MIME başlığı\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"İleti çözülüyor...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Şifre çözme işlemi başarısız oldu.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Yeni Sorgu\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Lâkap Yarat\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Ara\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Cevap bekleniyor...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Sorgulama komutu tanımlanmadı.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Sorgula\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Sorgulama: \"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Sorgulama '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Boru\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Yazdır\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Kaydediliyor...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Ek kaydedildi.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"UYARI!  %s dosyasının üzerine yazılacak, devam edilsin mi?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Ek, süzgeçten geçirildi.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Süzgeç: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Borula: \"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"%s eklerinin nasıl yazdırılacağı bilinmiyor!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"İşaretli ileti(ler) yazdırılsın mı?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Ek yazdırılsın mı?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Şifrelenmiş ileti çözülemiyor!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Ekler\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Gösterilecek bir alt bölüm yok!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Ek, POP sunucusundan silinemiyor.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Şifrelenmiş bir iletiye ait eklerin silinmesi desteklenmiyor.\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Şifrelenmiş bir iletiye ait eklerin silinmesi desteklenmiyor.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Sadece çok parçalı (multipart) eklerin silinmesi destekleniyor.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Sadece ileti ya da rfc822 kısımları geri gönderilebilir.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"İleti geri gönderilirken hata oluştu!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"İleti geri gönderilirken hata oluştu!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Geçici dosya %s açılamıyor.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Ekler halinde iletilsin mi?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"\"\n\"İşaretlenmiş eklerin hepsi çözülemiyor. Kalanlar MIME olarak iletilsin mi?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"MIME ile sarmalanmış hâlde iletilsin mi?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"%s yaratılamadı.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"İşaretli hiç bir ileti yok.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Herhangi bir eposta listesi bulunamadı!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"\"\n\"İşaretlenmiş eklerin hepsi çözülemiyor. Kalanlar MIME ile sarmalanmış olarak \"\n\"iletilsin mi?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Ekle\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"İçer\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Sil\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"TAMAM\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"\\\"mixmaster\\\" type2.list alınamıyor!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Bir postacı (remailer) zinciri seçin.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Hata: %s, zincirdeki son postacı olarak kullanılamaz.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster zincirleri %d sayıda elemanla sınırlandırılmıştır.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Postacı zinciri zaten boş.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Zincirin zaten ilk elemanını seçmiş durumdasınız.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Zincirin zaten son elemanını seçmiş durumdasınız.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster Cc ya da Bcc başlıklarını kabul etmez.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Lütfen mixmaster kullanırken yerel makina adını uygun şekilde ayarlayın!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"İleti gönderilirken hata oluştu, alt süreç %d ile sonlandı.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"İleti gönderilirken hata oluştu.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"\"\n\"\\\"%2$s\\\" dosyasında %3$d nolu satırdaki %1$s tipi için hatalı \"\n\"biçimlendirilmiş öge\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"mailcap dosyayolu tanımlanmamış\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"%s için mailcap kaydı bulunamadı\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"puan: eksik argüman\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"puan: fazla argüman\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Konu girilmedi, iptal edilsin mi?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Konu girilmedi, iptal ediliyor.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Cevap adresi olarak %s%s kullanılsın mı? [Reply-To]\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Cevap adresi olarak %s%s kullanılsın mı? [Mail-Followup-To]\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"İşaretlenmiş iletilerin hiçbirisi gözükmüyor!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"İleti, cevaba dahil edilsin mi?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Alıntı metni dahil ediliyor...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Bildirilen iletilerin hepsi dahil edilemedi!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Ek olarak iletilsin mi?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"İletilecek eposta hazırlanıyor...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Ertelenen ileti açılsın mı?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"İletilen eposta düzenlensin mi?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Değiştirilmemiş ileti iptal edilsin mi?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Değiştirilmemiş ileti iptal edildi.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"İleti ertelendi.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Alıcı belirtilmedi!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Alıcılar belirtilmedi!\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Konu girilmedi, gönderme iptal edilsin mi?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Konu girilmedi.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"İleti gönderiliyor...\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"eki metin olarak göster\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"İleti gönderilemedi.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Eposta gönderildi.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Ardalanda gönderiliyor.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Sınırlandırma değişkeni bulunamadı! [bu hatayı bildirin]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s artık mevcut değil!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s uygun bir dosya değil!\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"%s açılamadı\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"İleti gönderilirken hata oluştu, alt süreç %d ile sonlandı (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Gönderme işleminin ürettiği çıktı\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"\\\"resent-from\\\" hazırlanırken hatalı IDN %s\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Çıkılıyor.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"%s alındı...  Çıkılıyor.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Sinyal %d alındı...  Çıkılıyor.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"S/MIME parolasını girin: \"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Güvenilir  \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Doğrulananan  \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Doğrulanamayan\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Süresi Dolmuş   \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Hükümsüzleştirilmiş   \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Geçersiz   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Bilinmiyor   \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"\\\"%s\\\" ile uyuşan S/MIME anahtarları.\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"Kimlik (ID) geçerli değil.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"%s için anahtar NO'yu girin: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"%s için (geçerli) sertifika bulunamadı.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"[-- Hata: OpenSSL alt süreci yaratılamadı! --]\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"sertifika dosyası yok\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"eposta kutusu yok\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"OpenSSL bir çıktı üretmedi...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"İmzalanmıyor: Anahtar belirtilmedi. \\\"farklı imzala\\\"yı seçin.\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"OpenSSL alt süreci açılamıyor!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- OpenSSL çıktısı sonu --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Hata: OpenSSL alt süreci yaratılamadı! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Aşağıdaki bilgi S/MIME ile şifrelenmiştir --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Aşağıdaki bilgi imzalanmıştır --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME ile şifrelenmiş bilginin sonu --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME ile imzalanmış bilginin sonu --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME şif(r)ele, i(m)zala, f(a)rklı şifrele, (f)arklı imzala, i(k)isi de, \"\n\"i(p)tal?\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME şif(r)ele, i(m)zala, f(a)rklı şifrele, (f)arklı imzala, i(k)isi de, \"\n\"i(p)tal?\"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"rmafkup\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME şif(r)ele, i(m)zala, f(a)rklı şifrele, (f)arklı imzala, i(k)isi de, \"\n\"i(p)tal?\"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"rmafkup\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Algoritma ailesini seçin: 1: DES, 2: RC2, 3: AES, şifresi(z)? \"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"draz\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: Triple-DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Yeniden isimlendirme başarısız: %s\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Yeniden isimlendirme başarısız: %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Geçersiz   \"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"GSSAPI doğrulaması başarısız oldu.\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"SASL doğrulaması başarısız oldu.\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL doğrulaması başarısız oldu.\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Eposta kutusu sıralanıyor...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Sıralama işlevi bulunamadı! [bu hatayı bildirin]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(eposta kutusu yok)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"Sınırlandırılmış görünümde ana ileti görünemez.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"Ana ileti mevcut değil.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"belirtilmemiş işlem\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"koşullu çalıştırma sonu (noop)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"mailcap kullanarak ekin görüntülenmesini sağla\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"eki metin olarak göster\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"Alt bölümlerin görüntülenmesini aç/kapat\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"sayfanın sonuna geç\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"iletiyi başka bir kullanıcıya yeniden gönder\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"bu dizinde yeni bir dosya seç\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"dosyayı görüntüle\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"seçili dosyanın ismini göster\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"geçerli eposta kutusuna abone ol (sadece IMAP)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"geçerli eposta kutusuna olan aboneliği iptal et (sadece IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"\"\n\"görüntüleme kipleri arasında geçiş yap: hepsi/abone olunanlar (sadece IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"yeni eposta içeren eposta kutularını listele\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"dizin değiştir\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"eposta kutularını yeni eposta için denetle\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"bu iletiye dosya ekle\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"bu iletiye ileti ekle\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"BCC listesini düzenle\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"CC listesini düzenle\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"ek açıklamasını düzenle\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"ek iletim kodlamasını (transfer-encoding) düzenle\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"bu iletinin bir kopyasının kaydedileceği dosyayı gir\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"eklenecek dosyayı düzenle\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"gönderen alanını düzenle\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"iletiyi başlıklarıyla düzenle\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"iletiyi düzenle\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"mailcap kaydını kullanarak eki düzenle\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"\\\"Reply-To\\\" (Cevaplanan) alanını düzenle\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"bu iletinin konusunu düzenle\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"gönderilen (TO) listesini düzenle\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"yeni bir eposta kutusu yarat (sadece IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"ekin içerik tipini düzenle\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"eke ait geçici bir kopya elde et\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"iletiye ispell komutunu uygula\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"mailcap kaydını kullanarak yeni bir ek düzenle\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"Bu ekin yeniden kodlanması özelliğini aç/kapat\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"bu iletiyi daha sonra göndermek üzere kaydet\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"ekli bir dosyayı yeniden adlandır/taşı\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"iletiyi gönder\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"satıriçi/ek olarak dispozisyon kipleri arasında geçiş yap\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"dosyanın gönderildikten sonra silinmesi özelliğini aç/kapat\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"eke ait kodlama bilgisini güncelle\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"iletiyi bir klasöre yaz\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"iletiyi bir dosyaya/eposta kutusuna kopyala\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"gönderenden türetilen bir lâkap yarat\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"birimi ekran sonuna taşı\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"birimi ekran ortasına taşı\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"birimi ekran başına taşı\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"çözülmüş (düz metin) kopya yarat\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"çözülmüş (düz metin) kopya yarat ve diğerini sil\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"geçerli ögeyi sil\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"geçerli eposta kutusunu sil (sadece IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"alt ilmekteki bütün iletileri sil\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"ilmekteki bütün iletileri sil\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"gönderenin tam adresini göster\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"iletiyi görüntüle ve başlıkların görüntülenmesini aç/kapat\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"iletiyi göster\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"kaynak iletiyi düzenle\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"imlecin önündeki harfi sil\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"imleci bir harf sola taşı\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"imleci kelime başına taşı\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"satır başına geç\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"eposta kutuları arasında gezin\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"dosya adını ya da lâkabı tamamla\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"adresi bir sorgulama yaparak tamamla\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"imlecin altındaki harfi sil\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"satır sonuna geç\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"imleci bir harf sağa taşı\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"imleci kelime sonuna taşı\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"tarihçe listesinde aşağıya in\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"tarihçe listesinde yukarıya çık\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"imleçten satır sonuna kadar olan harfleri sil\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"imleçten kelime sonuna kadar olan harfleri sil\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"satırdaki bütün harfleri sil\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"imlecin önündeki kelimeyi sil\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"girilen karakteri tırnak içine al\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"imlecin üzerinde bulunduğu karakteri öncekiyle değiştir\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"kelimenin ilk harfini büyük yaz\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"kelimeyi küçük harfe çevir\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"kelimeyi büyük harfe çevir\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"bir muttrc komutu gir\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"bir dosya maskesi gir\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"bu menüden çık\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"eki bir kabuk komut komutundan geçir\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"ilk ögeye geç\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"iletinin 'önemli' (important) bayrağını aç/kapat\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"iletiyi düzenleyerek ilet\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"geçerli ögeye geç\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"bütün alıcılara cevap ver\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"yarım sayfa aşağıya in\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"yarım sayfa yukarıya çık\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"bu ekran\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"indeks sayısına geç\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"son ögeye geç\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"belirtilen eposta listesine cevap ver\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"bir makro çalıştır\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"yeni bir eposta iletisi yarat\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"ilmeği ikiye böl\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"başka bir dizin aç\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"başka bir dizini salt okunur aç\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"iletinin durum bayrağını temizle\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"tabire uyan iletileri sil\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"IMAP sunucularından eposta alımını zorla\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"POP sunucusundan epostaları al\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"ilk iletiye geç\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"son iletiye geç\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"sadece tabire uyan iletileri göster\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"işaretlenmiş iletileri geçerli iletiye bağla\"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"Yeni eposta içeren bir eposta kutusu yok.\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"bir sonraki yeni iletiye geç\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"bir sonraki yeni veya okunmamış iletiye geç\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"bir sonraki alt ilmeğe geç\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"bir sonraki ilmeğe geç\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"bir sonraki silinmemiş iletiye geç\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"bir sonraki okunmamış iletiye geç\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"ilmeği başlatan ana iletiye geç\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"bir önceki ilmeğe geç\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"bir önceki alt ilmeğe geç\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"bir önceki silinmemiş iletiye geç\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"bir önceki yeni iletiye geç\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"bir önceki yeni veya okunmamış iletiye geç\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"bir önceki okunmamış iletiye geç\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"geçerli ilmeği okunmuş olarak işaretle\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"geçerli alt ilmeği okunmuş olarak işaretle\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"iletinin durum bayrağını ayarla\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"eposta kutusuna yapılan değişiklikleri kaydet\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"tabire uyan iletileri işaretle\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"tabire uyan silinmiş iletileri kurtar\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"tabire uyan iletilerdeki işaretlemeyi kaldır\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"sayfanın ortasına geç\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"bir sonraki ögeye geç\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"bir satır aşağıya in\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"bir sonraki sayfaya geç\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"iletinin sonuna geç\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"alıntı metnin görüntülenmesi özelliğini aç/kapat\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"alıntı metni atla\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"iletinin başına geç\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"iletiyi/eki bir kabuk komutundan geçir\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"bir önceki ögeye geç\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"bir satır yukarıya çık\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"bir önceki sayfaya geç\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"geçerli ögeyi yazdır\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"adresler için başka bir uygulamayı sorgula\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"yeni sorgulama sonuçlarını geçerli sonuçlara ekle\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"eposta kutusuna yapılan değişiklikleri kaydet ve çık\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"gönderilmesi ertelenmiş iletiyi yeniden düzenle\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"ekranı temizle ve güncelle\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{dahili}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"geçerli eposta kutusunu yeniden isimlendir (sadece IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"iletiye cevap ver\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"geçerli iletiyi yeni bir ileti için örnek olarak kullan\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"iletiyi/eki bir dosyaya kaydet\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"düzenli ifade ara\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"ters yönde düzenli ifade ara\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"bir sonraki eşleşmeyi bul\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"bir sonraki eşleşmeyi ters yönde bul\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"arama tabirinin renklendirilmesi özellğini aç/kapat\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"alt kabukta bir komut çalıştır\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"iletileri sırala\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"iletileri ters sırala\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"geçerli ögeyi işaretle\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"işaretlenmiş iletilere verilecek işlevi uygula\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"verilecek işlevi SADECE işaretlenmiş iletilere uygula\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"geçerli alt ilmeği işaretle\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"geçerli ilmeği işaretle\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"iletinin 'yeni' (new) bayrağını aç/kapat\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"eposta kutusunun yeniden yazılması özelliğini aç/kapat\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"\"\n\"sadece eposta kutuları veya bütün dosyaların görüntülenmesi arasında geçiş \"\n\"yap\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"sayfanın başına geç\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"geçerli ögeyi kurtar\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"ilmekteki bütün iletileri kurtar\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"alt ilmekteki bütün iletileri kurtar\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"Mutt sürümünü ve tarihini göster\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"eki, gerekiyorsa, mailcap kaydını kullanarak görüntüle\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"MIME eklerini göster\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"girilen tuşun tuş kodunu göster\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"etkin durumdaki sınırlama tabirini göster\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"geçerli ilmeği göster/gizle\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"bütün ilmekleri göster/gizle\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"bir PGP genel anahtarı ekle\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"PGP seçeneklerini göster\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"bir PGP genel anahtarı gönder\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"bir PGP genel anahtarı doğrula\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"anahtarın kullanıcı kimliğini göster\"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"klasik pgp için denetle\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Oluşturulan zinciri kabul et\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Zincirin sonuna yeni bir postacı ekle\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Zincire yeni bir postacı ekle\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Zincirdeki bir postacıyı sil\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Zincirde bir önceki ögeyi seç\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Zincirde bir sonraki ögeyi seç\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"iletiyi bir \\\"mixmaster\\\" postacı zinciri üzerinden gönder\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"çözülmüş kopyasını yarat ve sil\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"çözülmüş kopya yarat\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"bellekteki parolaları sil\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"desteklenen genel anahtarları çıkar\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"S/MIME seçeneklerini göster\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"Kurtarılan ileti yok.\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" bu sınırlandırılmış bakışta\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"Kurtarılan ileti yok.\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"iletiyi düzenle\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"tabirde hata var\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"Dahili hata. <roessler@does-not-exist.org> ile irtibata geçin.\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"Uyarı: Bu iletinin bir bölümü imzalanmamış.\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- Hata: hatalı PGP/MIME iletisi! --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"Şu an \\\"gpg-agent\\\" çalışmamakla beraber GPGME arkayüzü kullanılacak\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"Hata: \\\"multipart/encrypted\\\" bir protokol değişkeni içermiyor!\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"\"\n#~ \"%s kimlik numarası doğrulanamadı.  %s için bunu kullanmak istiyor musunuz?\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"%2$s için (güvenilmeyen) %1$s kimlik numarası kullanılsın mı?\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"%2$s için %1$s kimlik numarası kullanılsın mı?\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"\"\n#~ \"Uyarı: %s kimlik numarasının güvenilir olduğuna henüz karar vermediniz. \"\n#~ \"(devam etmek için herhangi bir tuş)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"OpenSSL bir çıktı üretmedi...\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"Uyarı: Ara sertifika bulunamadı.\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"Temizle\"\n\n#~ msgid \"esabifc\"\n#~ msgstr \"rmfkiup\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"Arama tabiri yok.\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"Ters yönde ara: \"\n\n#~ msgid \"Search: \"\n#~ msgstr \"Ara: \"\n\n#~ msgid \"            created: \"\n#~ msgstr \"            yaratılma tarihi: \"\n\n#~ msgid \"*BAD* signature claimed to be from: \"\n#~ msgstr \"*KÖTÜ* imza: \"\n\n#~ msgid \"Error checking signature\"\n#~ msgstr \"İmza denetlenirken hata oluştu.\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"SSL sertifika doğrulaması\"\n\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"SSL/TLS sertifika denetimi\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"İsim uzayları (namespace) alınıyor...\"\n\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"kullanım: mutt [ -nRyzZ ] [ -e <komut> ] [ -F <dosya> ] [ -m <tip> ] [ -f \"\n#~ \"<dosya> ]\\n\"\n#~ \"          mutt [ -nR ] [ -e <komut> ] [ -F <dosya> ] -Q <sorgu> [ -Q \"\n#~ \"<sorgu> ] [...]\\n\"\n#~ \"          mutt [ -nR ] [ -e <komut> ] [ -F <dosya> ] -A <lâkap> [ -A \"\n#~ \"<lâkap> ] [...]\\n\"\n#~ \"          mutt [ -nR ] [ -e <komut> ] [ -F <dosya> ] -D\\n\"\n#~ \"          mutt [ -nx ] [ -e <komut> ] [ -a <dosya> ] [ -F <dosya> ] [ -H \"\n#~ \"<dosya> ] [ -i <dosya> ] [ -s <konu> ] [ -b <adres> ] [ -c <adres> ] \"\n#~ \"<adres> [ ... ]\\n\"\n#~ \"          mutt [ -n ] [ -e <komut> ] [ -F <dosya> ] -p\\n\"\n#~ \"          mutt -v[v]\\n\"\n\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"POP sunucusunda 'önemli' (important) bayrağı değiştirilemez.\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"POP sunucusundaki iletiler düzenlenemez.\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"%s okunuyor... %d (%%%d)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"İletiler yazılıyor... %d (%%%d)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"%s okunuyor... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"Pgp çalıştırılıyor...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"Ölümcül hata.  İleti sayıları karıştı!\"\n\n#~ msgid \"Checking mailbox subscriptions\"\n#~ msgstr \"Eposta abonelikleri denetleniyor\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"CLOSE başarısız oldu\"\n"
  },
  {
    "path": "po/uk.po",
    "content": "# Ukrainian translation for Mutt.\n# Copyright (C) 1998 Free Software Foundation, Inc.\n# Andrej N. Gritsenko <andrej@lucky.net>, 1998-2001\n# Maxim Krasilnikov <pseudo@avalon.org.ua>, 2013\n# Vsevolod Volkov <vvv@mutt.org.ua>, 2016\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: mutt-1.5.23\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2016-03-20 22:35+0200\\n\"\n\"Last-Translator: Vsevolod Volkov <vvv@mutt.org.ua>\\n\"\n\"Language-Team: \\n\"\n\"Language: uk\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"Користувач у %s: \"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"Пароль для %s@%s: \"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"Вихід\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"Вид.\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"Відн.\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"Вибір\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"Допомога\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"Ви не маєте жодного псевдоніму!\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"Псевдоніми\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"Псевдонім як: \"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"Ви вже маєте псевдонім на це ім'я!\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"Попередження: цей псевдонім може бути помилковим. Виправити?\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"Адреса: \"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"Помилка: некоректний IDN: '%s'\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"Повне ім'я: \"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] Вірно?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"Зберегти до файлу: \"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"Помилка читання файлу псевдонімів\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"Псевдонім додано.\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"Помилка позиціонування в файлі псевдонімів\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"Немає відповідного імені, далі?\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Спосіб створення, вказаний у mailcap, потребує параметра %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"Помилка виконання \\\"%s\\\"!\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"Не вийшло відкрити файл для розбору заголовку.\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"Не вийшло відкрити файл для видалення заголовку.\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"Не вдалось перейменувати файл.\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"В mailcap не визначено спосіб створення %s, створено порожній файл.\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Редагування, вказане у mailcap, потребує %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"В mailcap не визначено редагування %s\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"Не знайдено відомостей у mailcap. Показано як текст.\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"Тип MIME не визначено. Неможливо показати додаток.\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"Неможливо створити фільтр\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---Команда: %-20.20s Опис: %s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---Команда: %-30.30s Додаток: %s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---Додаток: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---Додаток: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"Неможливо створити фільтр\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"Збій запису!\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"Не знаю, як це друкувати!\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"Перейти:\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"Маска\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s не є каталогом.\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"Поштові скриньки [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"Підписані [%s] з маскою: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"Каталог [%s] з маскою: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"Неможливо додати каталог!\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"Немає файлів, що відповідають масці\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"Створення підтримується лише для скриньок IMAP\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"Перейменування підтримується лише для скриньок IMAP\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"Видалення підтримується лише для скриньок IMAP\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"Неможливо видалити кореневий каталог\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"Впевнені у видаленні скриньки \\\"%s\\\"?\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"Поштову скриньку видалено.\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"Поштову скриньку не видалено.\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"Перейти до: \"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"Помилка перегляду каталогу.\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"Маска: \"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"\"\n\"Зворотньо сортувати за датою(d), літерою(a), розміром(z), чи не сортувати(n)?\"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"Сортувати за датою(d), літерою(a), розміром(z), чи не сортувати(n)?\"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dazn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"Нове ім’я файлу: \"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"Неможливо переглянути каталог\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"Помилка при спробі перегляду файлу\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"Нова пошта в \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s: колір не підтримується терміналом\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s: такого кольору немає\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s: такого об'єкту немає\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s: команда можлива тільки для списку, тілі і заголовку листа\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s: замало аргументів\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"Недостатньо аргументів.\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"color: замало аргументів\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"mono: замало аргументів\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s: такого атрібуту немає\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"змало аргументів\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"забагато аргументів\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"типові кольори не підтримуються\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"Перевірити підпис PGP?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"Не вийшло створити тимчасовий файл!\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"Неможливо створити фільтр відображення\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"Не вийшло скопіювати повідомлення\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"Підпис S/MIME перевірено.\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"Відправник листа не є власником сертифіката S/MIME.\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"Попередження: частина цього листа не підписана.\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"Перевірити підпис S/MIME неможливо.\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"Підпис PGP перевірено.\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"Перевірити підпис PGP неможливо.\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"Команда: \"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"Попередження: лист не має заголовку From:\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"Надіслати копію листа: \"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"Надіслати копії виділених листів: \"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"Помилка розбору адреси!\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"Некоректний IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"Надіслати копію листа %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"Надіслати копії листів %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"Копію листа не переслано.\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"Копії листів не переслано.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"Копію листа переслано.\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"Копії листів переслано.\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"Неможливо створити процес фільтру\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"Передати до програми: \"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"Команду для друку не визначено.\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"Друкувати повідомлення?\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"Друкувати виділені повідомлення?\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"Повідомлення надруковано\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"Повідомлення надруковані\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"Повідомлення не може бути надруковано\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"Повідомлення не можуть бути надруковані\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Звор.Сорт.:(d)дата/(f)від/(r)отр/(s)тема/(o)кому/(t)розмова/(u)без/(z)розмір/\"\n\"(c)рахунок/(p)спам?:\"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"Сортувати: (d)дата/(f)від/(r)отр/(s)тема/(o)кому/(t)розмова/(u)без/(z)розмір/\"\n\"(c)рахунок/(p)спам?:\"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrsotuzcp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Команда системи: \"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"Розкодувати і перенести%s до скриньки\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"Розкодувати і копіювати%s до скриньки\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"Розшифрувати і перенести%s до скриньки\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"Розшифрувати і копіювати%s до скриньки\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"Перенести%s до скриньки\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"Копіювати%s до скриньки\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" виділені\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"Копіювання до %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"Перетворити на %s при надсиланні?\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Тип даних змінено на %s.\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"Кодування змінено на %s; %s.\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"не перетворюється\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"перетворюється\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"Додатків немає.\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"Відправити\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"Відміна\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"Додати файл\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"Опис\"\n\n#: compose.c:117\nmsgid \"Not supported\"\nmsgstr \"Не підтримується.\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"Підписати, зашифрувати\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"зашифрувати\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"Підписати\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"Нічого\"\n\n#: compose.c:135\nmsgid \" (inline PGP)\"\nmsgstr \" (PGP/текст)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \" (S/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \" (режим OppEnc)\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" підписати як:\"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<типово>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"Зашифрувати: \"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] більше не існує!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] змінено. Змінити кодування?\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- Додатки\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"Попередження: некоректне IDN: '%s'.\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"Це єдина частина листа, її неможливо видалити.\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"Некоректне IDN в \\\"%s\\\": '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"Додавання вибраних файлів...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"Неможливо додати %s!\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"Скринька, з якої додати повідомлення\"\n\n#: compose.c:762\n#, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"Неможливо відкрити скриньку %s\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"Ця скринька зовсім порожня.\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"Виділіть повідомлення для додавання!\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"Неможливо додати!\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"Перекодування може бути застосоване тільки до текстових додатків.\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"Поточний додаток не буде перетворено.\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"Поточний додаток буде перетворено.\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"Невірне кодування.\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"Зберегти копію цього повідомлення?\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"Перейменувати у: \"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"Неможливо отримати дані %s: %s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"Новий файл: \"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Поле Content-Type повинно мати форму тип/підтип\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"Невідомий Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"Неможливо створити файл %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"Не вийшло створити додаток\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"Залишити лист до подальшого редагування та відправки?\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"Записати лист до поштової скриньки\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"Запис листа до %s...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"Лист записано.\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"S/MIME вже вибрано. Очистити і продовжити? \"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"PGP вже вибрано. Очистити і продовжити? \"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"помилка при створенні контексту gpgme: %s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"помилка при ввімкненні протоколу CMS: %s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"помилка при створенні об’єкту даних gpgme: %s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"помилка розміщення об’єкту даних: %s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"помилка позиціонування на початок об’єкта даних: %s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"помилка читання об’єкту даних: %s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"Неможливо створити тимчасовий файл\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"помилка додавання отримувача `%s': %s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"таємний ключ `%s' не знайдено: %s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"неоднозначне визначення таємного ключа `%s'\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"помилка встановлення таємного ключа `%s': %s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"помилка встановлення нотації PKA для підписання: %s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"помилка при шифруванні даних: %s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"помилка при підписуванні даних: %s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\"$pgp_sign_as не встановлено, типовий ключ не вказано в ~/.gnupg/gpg.conf\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"Попередження: Один з ключів було відкликано\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"Попередження: Термін дії ключа для підписування збіг \"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"Попередження: Термін дії як мінімум одного ключа вичерпано\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"Попередження: Термін дії підпису збіг \"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"Неможливо перевірити через відсутність ключа чи сертифіката\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"Список відкликаних сертифікатів недосяжний\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"Доступний список відкликаних сертифікатів застарів\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"Вимоги політики не були задоволені\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"Системна помилка\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"Попередження: запис PKA не відповідає адресі відправника: \"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"Адреса відправника перевірена за допомогою PKA: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"Відбиток: \"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"Попередження: НЕВІДОМО, чи належить даний ключ вказаній особі\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"Попередження: Ключ НЕ НАЛЕЖИТЬ вказаній особі\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"Попередження: НЕМАЄ впевненості, що ключ належить вказаній особі\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"aka: \"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"ID ключа \"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"створено: \"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"Помилка отримання інформації про ключ з ID %s: %s\\n\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"Хороший підпис від:\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"*ПОГАНИЙ* підпис від:\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"Сумнівний підпис від:\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"     термін дії збігає: \"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- Початок інформації про підпис --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"Помилка перевірки: %s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** Початок Опису (підписано: %s) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** Кінець опису ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"[-- Кінець інформації про підпис --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Помилка розшифровування: %s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"Помилка при отриманні даних ключа!\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"Помилка розшифровування чи перевірки підпису: %s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"Помилка копіювання даних\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Початок повідомлення PGP --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- Початок блоку відкритого ключа PGP --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Початок повідомлення з PGP підписом --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- Кінець повідомлення PGP --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- Кінець блоку відкритого ключа PGP --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- Кінець повідомлення з PGP підписом --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Помилка: не знайдено початок повідомлення PGP! --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- Помилка: не вийшло створити тимчасовий файл! --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Наступні дані зашифровано і підписано PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Наступні дані зашифровано PGP/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- Кінець зашифрованих і підписаних PGP/MIME даних --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- Кінець зашифрованих PGP/MIME даних --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"Повідомлення PGP розшифровано.\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"Не вийшло розшифрувати повідомлення PGP\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Наступні дані підписано S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Наступні дані зашифровано S/MIME --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- Кінець підписаних S/MIME даних --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- Кінець зашифрованих S/MIME даних --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[Неможливо відобразити ID цього користувача (невідоме кодування)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[Неможливо відобразити ID цього користувача (неправильне кодування)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[Неможливо відобразити ID цього користувача (неправильний DN)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \" aka ......: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"Ім’я ......: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[Неправильно]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"Дійсно з...: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"Дійсно до..: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"Тип ключа .: %s, %lu біт %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"Використано: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"шифрування\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"підписування\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"сертифікація\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"Сер. номер : 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"Видано ....: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"Підключ ...: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[Відкликано]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[Прострочено]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[Заборонено]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"Збирання даних...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"Помилка пошуку ключа видавця: %s\\n\"\n\n#: crypt-gpgme.c:3675\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"Помилка: ланцюжок сертифікації задовгий, зупиняємось\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"ID ключа: 0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"Помилка gpgme_new: %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"помилка gpgme_op_keylist_start: %s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"помилка gpgme_op_keylist_next: %s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"Всі відповідні ключі відмічено як застарілі чи відкликані.\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"Вихід  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"Вибір  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"Перевірка ключа  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"Відповідні PGP і S/MIME ключі\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"Відповідні PGP ключі\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"Відповідні S/MIME ключі\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"Відповідні ключі\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"\"\n\"Цей ключ неможливо використати: прострочений, заборонений чи відкликаний.\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID прострочений, заборонений чи відкликаний.\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"Ступінь довіри для ID не визначена.\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"ID недійсний.\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"ID дійсний лише частково.\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s Ви справді бажаєте використовувати ключ?\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"Пошук відповідних ключів \\\"%s\\\"...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"Використовувати keyID = \\\"%s\\\" для %s?\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"Введіть keyID для %s: \"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"Будь ласка, введіть ID ключа: \"\n\n#: crypt-gpgme.c:4614\n#, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"Помилка експорта ключа: %s\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"Ключ PGP 0x%s.\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"GPGME: протокол OpenPGP не доступний\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"GPGME: протокол CMS не доступний\"\n\n#: crypt-gpgme.c:4721\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"S/MIME (s)підп., (a)підп. як, (p)gp, (c)відміна, вимкнути (o)ppenc? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"sapfco\"\n\n#: crypt-gpgme.c:4731\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (s)підп., (a)підп. як, s/(m)ime, (c)відміна, вимкнути (o)ppenc? \"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"samfco\"\n\n#: crypt-gpgme.c:4744\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME (e)шифр, (s)підп, (a)підп. як, (b)усе, (p)gp, (c)відм, вимк. \"\n\"(o)ppenc? \"\n\n#: crypt-gpgme.c:4745\nmsgid \"esabpfco\"\nmsgstr \"esabpfco\"\n\n#: crypt-gpgme.c:4750\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (e)шифр, (s)підп, (a)підп. як, (b)усе, s/(m)ime, (c)відм, вимк. \"\n\"(o)ppenc? \"\n\n#: crypt-gpgme.c:4751\nmsgid \"esabmfco\"\nmsgstr \"esabmfco\"\n\n#: crypt-gpgme.c:4762\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"S/MIME (e)шифр., (s)підп., (a)підп. як, (b)усе, (p)gp, (c)відміна? \"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"esabpfc\"\n\n#: crypt-gpgme.c:4768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"PGP (e)шифр., (s)підп., (a)підп. як, (b)усе, s/(m)ime, (c)відміна? \"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"esabmfc\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"Підпис як: \"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"Відправника не перевірено\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"Відправника не вирахувано\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (поточний час: %c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- Результат роботи %s%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"Паролі видалено з пам’яті.\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"Неможливо використовувати PGP/текст з додатками. Використати PGP/MIME?\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"Лист не відправлено: неможливо використовувати PGP/текст з додатками.\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"Виклик PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\"Повідомлення не може бути відправленим в текстовому форматі. Використовувати \"\n\"PGP/MIME?\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"Лист не відправлено.\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"Повідомлення S/MIME без вказазування типу даних не підтрмується.\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"Спроба видобування ключів PGP...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"Спроба видобування сертифікатів S/MIME...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Помилка: невідомий протокол multipart/signed %s! --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Помилка: несумісна структура multipart/signed! --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Попередження: неможливо перевірити %s/%s підписи. --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Наступні дані підписано --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Попередження: неможливо знайти жодного підпису. --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Кінець підписаних даних --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\\\"crypt_use_gpgme\\\" ввімкнено, але зібрано без підтримки GPGME.\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"Виклик S/MIME...\"\n\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"так\"\n\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"ні\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"Покинути Mutt?\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"невідома помилка\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"Натисніть будь-яку клавішу...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" ('?' - перелік): \"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"Немає відкритої поштової скриньки.\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"Жодного повідомлення немає.\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"Поштова скринька відкрита тільки для читання\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"Функцію не дозволено в режимі додавання повідомлення.\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"Жодного повідомлення не видно.\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"%s: Операція не дозволена ACL\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"Скринька тільки для читання, ввімкнути запис неможливо!\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"Зміни у скриньці буде записано по виходу з неї.\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"Зміни у скриньці не буде записано.\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"Вийти\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"Збер.\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"Лист\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"Відп.\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"Всім\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"\"\n\"Поштову скриньку змінила зовнішня програма. Атрибути можуть бути змінені.\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"Нова пошта у цій поштовій скриньці.\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"Поштову скриньку змінила зовнішня програма.\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"Жодного листа не виділено.\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"Нічого робити.\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"Перейти до листа: \"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"Аргумент повинен бути номером листа.\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"Цей лист не можна побачити.\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"Невірний номер листа.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\nmsgid \"Cannot delete message(s)\"\nmsgstr \"Неможливо видалити повідомлення\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"Видалити листи за шаблоном: \"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"Обмеження не встановлено.\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"Обмеження: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"Обмежитись повідомленнями за шаблоном: \"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"Щоб побачити всі повідомлення, встановіть шаблон \\\"all\\\".\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"Вийти з Mutt?\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"Виділити листи за шаблоном: \"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"Неможливо відновити повідомлення\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"Відновити листи за шаблоном: \"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"Зняти виділення з листів за шаблоном: \"\n\n#: curs_main.c:1082\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"Закриття з'єднання з сервером IMAP...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"Відкрити скриньку лише для читання\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"Відкрити скриньку\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"Немає поштової скриньки з новою поштою.\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s не є поштовою скринькою.\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"Покинути Mutt без збереження змін?\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"Формування розмов не ввімкнено.\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"Розмову розурвано\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"Розмовву неможливо розірвати: повідомлення не є частиною розмови\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"Неможливо з'єднати розмови\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"Відсутній заголовок Message-ID для об’єднання розмов\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"Спершу виділіть листи для об’єднання\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"Розмови об’єднано\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"Розмови не об’єднано\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"Це останній лист.\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"Немає відновлених листів.\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"Це перший лист.\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"Досягнуто кінець. Пошук перенесено на початок.\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"Досягнуто початок. Пошук перенесено на кінець.\"\n\n#: curs_main.c:1608\nmsgid \"No new messages in this limited view.\"\nmsgstr \"Немає нових листів при цьому перегляді з обмеженням.\"\n\n#: curs_main.c:1610\nmsgid \"No new messages.\"\nmsgstr \"Немає нових листів.\"\n\n#: curs_main.c:1615\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"Немає нечитаних листів при цьому перегляді з обмеженням.\"\n\n#: curs_main.c:1617\nmsgid \"No unread messages.\"\nmsgstr \"Немає нечитаних листів.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\nmsgid \"Cannot flag message\"\nmsgstr \"Неможливо змінити атрибут листа\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"Неможливо змінити атрибут \\\"Нове\\\"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"Розмов більше нема.\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"Це перша розмова.\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"Розмова має нечитані листи.\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\nmsgid \"Cannot delete message\"\nmsgstr \"Неможливо видалити лист\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\nmsgid \"Cannot edit message\"\nmsgstr \"Неможливо редагувати лист\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"Неможливо позначити лист(и) прочитаним(и)\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\nmsgid \"Cannot undelete message\"\nmsgstr \"Неможливо відновити лист\"\n\n#: edit.c:41\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\tдодати рядок, що починається з єдиної ~\\n\"\n\"~b адреси\\tдодати адреси до Bcc:\\n\"\n\"~c адреси\\tдодати адреси до Cc:\\n\"\n\"~f листи\\tдодати листи\\n\"\n\"~F листи\\tте ж саме, що й ~f, за винятком заголовків\\n\"\n\"~h\\t\\tредагувати заголовок листа\\n\"\n\"~m листи\\tдодати листи як цитування\\n\"\n\"~M листи\\tте ж саме, що й ~m, за винятком заголовків\\n\"\n\"~p\\t\\tдрукувати лист\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\tзаписати файл та вийти з редактора\\n\"\n\"~r файл\\t\\tдодати текст з файлу в лист\\n\"\n\"~t адреси\\tдодати адреси до To:\\n\"\n\"~u\\t\\tповторити попередній рядок\\n\"\n\"~v\\t\\tредагувати лист редактором $visual\\n\"\n\"~w файл\\t\\tзаписати лист до файлу\\n\"\n\"~x\\t\\tвідмінити зміни та вийти з редактора\\n\"\n\"~?\\t\\tце повідомлення\\n\"\n\".\\t\\tрядок з однієї крапки - ознака кінця вводу\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d: невірний номер листа.\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(Закінчіть лист рядком, що складається з однієї крапки)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"Не поштова скринька.\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"Лист містить:\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(далі)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"не вказано імені файлу.\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"Жодного рядку в листі.\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"Поганий IDN в %s: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s: невідома команда редактора (~? - підказка)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"не вдалось створити тимчасову скриньку: %s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"не вдалось записати тимчасову скриньку: %s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"не вийшло обрізати тимчасову скриньку: %s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"Файл повідомлення порожній!\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"Повідомлення не змінено!\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"Неможливо відкрити файл повідомлення: %s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"Неможливо додати до скриньки: %s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"Помилка. Збереження тимчасового файлу: %s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"Встановити атрибут\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"Зняти атрибут\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"\"\n\"[-- Помилка: жодну частину Multipart/Alternative не вийшло відобразити! --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- Додаток номер %d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- Тип: %s/%s, кодування: %s, розмір: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"Якісь частини повідомлення неможливо відобразити\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- Автопереглядання за допомогою %s --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"Виклик команди автоматичного переглядання: %s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- Неможливо виконати %s. --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- Программа переглядання %s повідомила про помилку --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"[-- Помилка: message/external-body не має параметру типу доступу --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- Цей %s/%s додаток \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(розм. %s байт) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"було видалено --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- ім'я: %s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- Цей %s/%s додаток не включено, --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"[-- і відповідне зовнішнє джерело видалено за давністю. --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- відповідний тип доступу %s не підтримується --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"Неможливо відкрити тимчасовий файл!\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"Помилка: немає протоколу для multipart/signed.\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- Це додаток \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s не підтримується \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(використовуйте '%s' для перегляду цієї частини)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(треба призначити клавішу до 'view-attachments'!)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s: неможливо додати файл\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"ПОМИЛКА: будь ласка, повідомте про цей недолік\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<НЕВІДОМО>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Базові призначення:\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"Не призначені функції:\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"Підказка до %s\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"Некоректний формат файлу історії (рядок %d)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"скорочення '^' для поточної скриньки не встановлено\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"скорочення для скриньки перетворене на пустий регулярний вираз\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: Неможливо зробити unhook * з hook.\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook: невідомий тип hook: %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: Неможливо видалити %s з %s.\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"Аутентифікаторів немає.\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"Аутентифікація (anonymous)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"Помилка анонімної аутентифікації.\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"Аутентифікація (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"Помилка аутентифікації CRAM-MD5.\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"Аутентифікація (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"Помилка аутентифікації GSSAPI.\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN заборонено на цьому сервері.\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"Реєстрація...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"Помилка реєстрації.\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"Аутентифікація (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"Помилка аутентифікації SASL.\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s - неприпустимий шлях IMAP\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"Отримання переліку скриньок...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"Такої скриньки немає\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"Створити скриньку: \"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"Поштова скринька мусить мати ім'я.\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"Поштову скриньку створено.\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"Перейменувати скриньку %s на: \"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"Помилка переіменування: %s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"Поштову скриньку переіменовано.\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"Поштову скриньку закрито\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"Помилка створення: %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"Закриття з'єднання з %s...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"Цей сервер IMAP застарілий. Mutt не може працювати з ним.\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"Безпечне з'єднання з TLS?\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"Не вийшло домовитись про TLS з'єднання\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"Шифроване з’єднання недоступне\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"Вибір %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"Помилка відкриття поштової скриньки\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"Створити %s?\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"Помилка видалення\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"Маркування %d повідомлень видаленими...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"Збереження змінених листів... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"Помилка збереження атрибутів. Закрити все одно?\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"Помилка збереження атрибутів\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"Видалення повідомлень з серверу...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: помилка EXPUNGE\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"Пошук заголовка без вказання його імені: %s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"Погане ім'я скриньки\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"Підписування на %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"Відписування від %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"Підписано на %s...\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"Відписано від %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"З серверу IMAP цієї версії отримати заголовки неможливо.\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"Не вийшло створити тимчасовий файл %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"Завантаження кеша...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"Отримання заголовків листів...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"Отримання листа...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"Некоректний індекс повідомленнь. Спробуйте відкрити скриньку ще раз.\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"Відправка листа...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"Копіювання %d листів до %s...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"Копіювання %d листів до %s...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"Далі?\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"Недоступно у цьому меню.\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"Поганий регулярний вираз: %s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"Недостатньо виразів для шаблону спаму\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"спам: зразок не знайдено\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"не спам: зразок не знайдено\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"%sgroup: відсутні -rx чи -addr.\"\n\n#: init.c:879\n#, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"%sgroup: попередження: погане IDN: '%s'.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"attachments: відсутній параметр disposition\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"attachments: неправильний параметр disposition\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"unattachments: відсутні йпараметр disposition\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"unattachments: неправильний параметр disposition\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"alias: адреси немає\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"Попередження: Погане IDN '%s' в псевдонімі '%s'.\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"неправильне поле заголовку\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s: невідомий метод сортування\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_default(%s): помилка регулярного виразу: %s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s: невідома змінна\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"префікс неприпустимий при скиданні значень\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"значення неприпустиме при скиданні значень\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"Використання: set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s встановлено\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s не встановлено\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"Неправильне значення для параметра %s: \\\"%s\\\"\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s: невірний тип скриньки\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s: невірне значення (%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"помилка формату\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"переповнення числового значення\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s: невірне значення\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s: Невідомий тип\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s: невідомий тип\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"Помилка в %s, рядок %d: %s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source: помилки в %s\"\n\n#: init.c:2296\n#, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: читання припинено, дуже багато помилок у %s\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source: помилка в %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source: забагато аргументів\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s: невідома команда\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"Помилка командного рядку: %s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"неможливо визначити домашній каталог\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"неможливо визначити ім'я користувача\"\n\n#: init.c:2970\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"неможливо визначити ім'я вузла за допомогою uname()\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: не вказано імені групи\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"замало аргументів\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"Зараз макроси заборонені.\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"Знайдено зациклення макросу.\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"Клавішу не призначено.\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"Клавішу не призначено. Натисніть '%s' для підказки.\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push: забагато аргументів\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"меню '%s' не існує\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"порожня послідовність клавіш\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind: забагато аргументів\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"функція '%s' не існує в карті\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro: порожня послідовність клавіш\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro: забагато аргументів\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec: немає аргументів\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"функція '%s' не існує\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"Введіть клавіші (^G для відміни): \"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"Символ = %s, Вісімковий = %o, Десятковий = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"Переповнення цілого значення -- неможливо виділити пам’ять!\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"Не вистачає пам'яті!\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"Для зв'язку з розробниками, шліть лист до <mutt-dev@mutt.org>.\\n\"\n\"Для повідомлення про ваду використовуйте http://bugs.mutt.org/..\\n\"\n\n#: main.c:69\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins та інші\\n\"\n\"Mutt поставляється БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ; детальніше: mutt -vv.\\n\"\n\"Mutt -- програмне забезпечення з відкритим кодом, запрошуємо до \"\n\"розповсюдження\\n\"\n\"з деякими умовами. Детальніше: mutt -vv.\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Багато інших не вказаних тут осіб залишили свій код, виправлення і \"\n\"побажання.\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"Ця програма -- вільне програмне забезпечення. Ви можете розповсюджувати і/\"\n\"чи\\n\"\n\"змінювати її згідно з умовами GNU General Public License від\\n\"\n\"Free Software Foundation версії 2 чи вище.\\n\"\n\"\\n\"\n\"Ця програма розповсюджується з надуєю, що вона буде корисною, але ми не \"\n\"надаємо\\n\"\n\"ЖОДНИХ ГАРАНТІЙ, включаючи гарантії придатності до будь-яких конкретних\\n\"\n\"завдань. Більш детально дивіться GNU General Public License.\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"Ви мали б отримати копію GNU General Public License разом з цією програмою\\n\"\n\"Якщо це не так, звертайтесь до Free Software Foundation, Inc:\\n\"\n\"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\\n\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"Використання:\\n\"\n\"       mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"  -A <alias>\\tрозкрити псевдонім\\n\"\n\"  -a <file> [...] --\\tдодати файл(и) до листа\\n\"\n\"\\t\\tсписок файлів має закінчуватись на \\\"--\\\"\\n\"\n\"  -b <address>\\tвказати BCC, адресу прихованої копії\\n\"\n\"  -c <address>\\tвказати адресу копії (CC)\\n\"\n\"  -D\\t\\tпоказати значення всіх змінних\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <level>\\tзаписати інформацію для налагодження в ~/.muttdebug0\"\n\n#: main.c:137\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -E\\t\\tредагувари шаблон (-H) або файл включення (-i)\\n\"\n\"  -e <command>\\tвказати команду, що її виконати після ініціалізації\\n\"\n\"  -f <file>\\tвказати, яку поштову скриньку читати\\n\"\n\"  -F <file>\\tвказати альтернативний файл muttrc\\n\"\n\"  -H <file>\\tвказати файл, що містить шаблон заголовку та тіла\\n\"\n\"  -i <file>\\tвказати файл, що його треба включити у відповідь\\n\"\n\"  -m <type>\\tвказати тип поштової скриньки\\n\"\n\"  -n\\t\\tвказує Mutt не читати системний Muttrc\\n\"\n\"  -p\\t\\tвикликати залишений лист\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <variable> показати змінну конфігурації\\n\"\n\"  -R\\t\\tвідкрити поштову скриньку тільки для читання\\n\"\n\"  -s <subj>\\tвказати тему (в подвійних лапках, якщо містить пробіли)\\n\"\n\"  -v\\t\\tпоказати версію та параметри компіляції\\n\"\n\"  -x\\t\\tсимулювати відправку mailx\\n\"\n\"  -y\\t\\tвибрати поштову скриньку з-поміж вказаних у `mailboxes'\\n\"\n\"  -z\\t\\tодразу вийти, якщо в поштовій скриньці немає жодного листа\\n\"\n\"  -Z\\t\\tвідкрити першу скриньку з новим листом, якщо немає - одразу вийти\\n\"\n\"  -h\\t\\tця підказка\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"Параметри компіляції:\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"Помилка ініціалізації терміналу.\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"Помилка: значення '%s' некорректне для -d.\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"Відлагодження з рівнем %d.\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"DEBUG не вказано під час компіляції. Ігнорується.\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s не існує. Створити його?\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"Неможливо створити %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"Неможливо розібрати почилання mailto:\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"Отримувачів не вказано.\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"Неможливо використовувати -E з stdin\\n\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s: неможливо додати файл.\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"Немає поштової скриньки з новою поштою.\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"Вхідних поштових скриньок не вказано.\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"Поштова скринька порожня.\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"Читання %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"Поштову скриньку пошкоджено!\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"Поштову скриньку було пошкоджено!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"Фатальна помилка! Не вийшло відкрити поштову скриньку знову!\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"Поштова скринька не може бути блокована!\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"sync: скриньку змінено, але немає змінених листів! (повідомте про це)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"Запис %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"Внесення змін...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"Збій запису! Часткову скриньку збережено у %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"Не вийшло відкрити поштову скриньку знову!\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"Повторне відкриття поштової скриньки...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"Перейти до: \"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"Невірний номер переліку.\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"Жодної позицїї.\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"Нижче прокручувати неможна.\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"Вище прокручувати неможна.\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"Це перша сторінка.\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"Це остання сторінка.\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"Це остання позиція.\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"Це перша позиція.\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"Шукати вираз:\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"Зворотній пошук виразу: \"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"Не знайдено.\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"Жодної позиції не вибрано.\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"Пошук у цьому меню не підтримується.\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"Перехід у цьому діалозі не підримується.\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"Виділення не підтримується.\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"Перегляд %s...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"Не вийшло скинути повідомлення на диск.\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): неможливо встановити час для файлу\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"Невідомий профіль SASL\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"Помилка створення з’єднання SASL\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"Помилка встановлення властивостей безпеки SASL\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"Помилка встановлення рівня зовнішньої безпеки\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"Помилка встановлення зовнішнього імені користувача SASL\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"З'єднання з %s закрито\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL недоступний.\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"Помилка команди, попередньої з'єднанню.\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"Помилка у з'єднанні з сервером %s (%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"Погане IDN \\\"%s\\\".\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"Пошук %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"Не вийшло знайти адресу \\\"%s\\\".\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"З'єднання з %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"Не вийшло з'єднатися з %s (%s).\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"Не вдалося знайти достятньо ентропії на вашій системі\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"Заповнення пулу ентропії: %s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s має небезпечні права доступу!\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL заборонений через нестачу ентропії\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"помилка вводу-виводу\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"Помилка SSL: %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"Неможливо отримати сертифікат\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"З'єднання %s з використанням %s (%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"Невідоме\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[неможливо обчислити]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[помилкова дата]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"Сертифікат серверу ще не дійсний\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"Строк дії сертифікату сервера вичерпано\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"неможливо отримати subject сертифікату\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"Неможливо отримати common name сертифікату\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"власник сертифікату не відповідає імені хоста %s\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"Не вдалось перевірити хост сертифікату: %s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"Цей сертифікат належить:\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"Цей сертифікат видано:\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"Цей сертифікат дійсний\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   від %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     до %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"Відбиток: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"Перевірка сертифікату (сертифікат %d з %d в ланцюжку)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(r)не приймати, прийняти (o)одноразово або (a)завжди\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"roa\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(r)не приймати, (o)прийняти одноразово\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ro\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"Попередження: неможливо зберегти сертифікат\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"Сертифікат збережено\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"Помилка: не відкрито жодного сокета TLS\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"Всі доступні протоколи для TLS/SSL заборонені\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"Явний вибір набора шифрів через $ssl_ciphers не підтримується\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"З'єднання SSL/TLS з використанням %s (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"Помилка ініціалізації даних сертифікату gnutls\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"Помилка обробки даних сертифікату\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"Попередження: Сертифікат сервера підписано ненадійним алгоритмом\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"Відбиток SHA1: %s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"Відбиток MD5: %s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"Попередження: Сертифікат серверу ще не дійсний\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"Попередження: Строк дії сертифікату сервера збіг\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"Попередження: Сертифікат серверу відкликано\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"Попередження: hostname сервера не відповідає сертифікату\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"Попередження: Сертифікат видано неавторизованим видавцем\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"Помилка перевірки сертифікату (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"Сертифікат не в форматі X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"З'єднання з \\\"%s\\\"...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"Тунель до %s поверну помилку %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"Помилка тунелю у з'єднанні з сервером %s: %s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"Файл є каталогом, зберегти у ньому? [(y)так/(n)ні/(a)все]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"yna\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"Файл є каталогом, зберегти у ньому?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"Файл у каталозі: \"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"Файл існує, (o)переписати/(a)додати до нього/(c)відмовити?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"oac\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"Неможливо записати лист до скриньки POP.\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"Додати листи до %s?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s не є поштовою скринькою!\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"Всі спроби блокування вичерпано, зняти блокування з %s?\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"Не вийшло заблокувати %s за допомогою dotlock.\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"Вичерпано час на блокування через fctnl!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"Чекання блокування fctnl... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"Вичерпано час блокування через flock\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"Чекання блокування flock... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"Не вийшло заблокувати %s\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"Не вийшло синхронізувати поштову скриньку %s!\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"Перенести прочитані листи до %s?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"Знищити %d видалений листі?\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"Знищити %d видалених листів?\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"Перенос прочитаних листів до %s...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"Поштову скриньку не змінено.\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d збережено, %d перенесено, %d знищено.\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d збережено, %d знищено.\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \"Натисніть '%s' для зміни можливості запису\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"Використовуйте 'toggle-write' для ввімкнення запису!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"Скриньку помічено незмінюваною. %s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"Поштову скриньку перевірено.\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"Неможливо записати лист\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"Переповнення цілого значення -- неможливо виділити пам’ять!\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"ПопСт\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"НастСт\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"Додатки\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"Наст\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"Ви бачите кінець листа.\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"Ви бачите початок листа.\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"Підказку зараз показано.\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"Цитованого тексту більш немає.\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"Після цитованого тексту нічого немає.\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"Багаточастинний лист не має параметру межі!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"Помилка у виразі: %s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"Пустий вираз\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"День '%s' в місяці не існує\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"Місяць '%s' не існує\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"Неможлива відносна дата: %s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"помилка у шаблоні: %s\"\n\n#: pattern.c:839\n#, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"відсутній шаблон: %s\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"невідповідна дужка: %s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c: невірний модифікатор шаблона\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"в цьому режимі '%c' не підтримується\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"відсутній параметр\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"невідповідна дужка: %s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"порожній шаблон\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"помилка: невідоме op %d (повідомте цю помилку).\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"Компіляція виразу пошуку...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"Виконання команди до відповідних листів...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"Листів, що відповідають критерію, не знайдено.\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"Пошук...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"Пошук дійшов до кінця, але не знайдено нічого\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"Пошук дійшов до початку, але не знайдено нічого\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"Пошук перервано.\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"Введіть кодову фразу PGP:\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"Кодову фразу PGP забуто.\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- Помилка: неможливо створити підпроцес PGP! --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Кінець виводу PGP --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"Внутрішня помилка. Будь ласка, повідомте розробників.\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Помилка: не вийшло створити підпроцес PGP! --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"Помилка розшифровки\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"Неможливо відкрити підпроцесс PGP!\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"Не вийшло викликати PGP\"\n\n#: pgp.c:1730\n#, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (s)підп., (a)підп. як, %s, (с)відміна, вимкнути (o)ppenc? \"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"(i)PGP/текст\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"safcoi\"\n\n#: pgp.c:1742\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP (s)підп., (a)підп. як, (c)відміна, вимкнути (o)ppenc? \"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"safco\"\n\n#: pgp.c:1760\n#, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP (e)шифр, (s)підп, (a)підп. як, (b)усе, %s, (с)відм, вимк. (o)ppenc? \"\n\n#: pgp.c:1763\nmsgid \"esabfcoi\"\nmsgstr \"esabfcoi\"\n\n#: pgp.c:1768\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP (e)шифр, (s)підп, (a)підп. як, (b)усе, (c)відм, вимк. (o)ppenc? \"\n\n#: pgp.c:1769\nmsgid \"esabfco\"\nmsgstr \"esabfco\"\n\n#: pgp.c:1782\n#, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP (e)шифр., (s)підп., (a)підп. як, (b)усе, %s, (с)відміна? \"\n\n#: pgp.c:1785\nmsgid \"esabfci\"\nmsgstr \"esabfci\"\n\n#: pgp.c:1790\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP (e)шифр., (s)підп., (a)підп. як, (b)усе, (c)відміна? \"\n\n#: pgp.c:1791\nmsgid \"esabfc\"\nmsgstr \"esabfc\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"Отримання ключа PGP...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"Всі відповідні ключі прострочено, відкликано чи заборонено.\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP ключі, що відповідають <%s>.\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP ключі, що відповідають \\\"%s\\\".\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"Неможливо відкрити /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"Ключ PGP %s.\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"Команда TOP не підтримується сервером.\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"Неможливо записати заголовок до тимчасового файлу!\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"Команда UIDL не підтримується сервером.\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d повідомлень втрачено. Спробуйте відкрити скриньку знову.\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s - неприпустимий шлях POP\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"Отримання переліку повідомлень...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"Неможливо записати повідомлення до тимчасового файлу!\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"Маркування повідомлень видаленими...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"Перевірка наявності нових повідомлень...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP host не визначено.\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"В поштовій скриньці POP немає нових листів.\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"Видалити повідомлення з серверу?\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"Читання нових повідомлень (%d байт)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"Помилка під час запису поштової скриньки!\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [%d з %d листів прочитано]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"Сервер закрив з'єднання!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"Аутентифікація (SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"Неправильне значення часу POP!\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"Аутентифікація (APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"Помилка аутентифікації APOP.\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"Команда USER не підтримується сервером.\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"Неправильний POP URL: %s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"Неможливо залишити повідомлення на сервері.\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"Помилка з'єднання з сервером: %s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"Закриття з'єднання з сервером POP...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"Перевірка індексів повідомлень...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"З'єднання втрачено. Відновити зв'язок з сервером POP?\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"Залишені листи\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"Жодного листа не залишено.\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"Неправильний заголовок шифрування\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"Неправильний заголовок S/MIME\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"Розшифровка листа...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"Помилка розшифровки.\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"Новий запит\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"Створити синонім\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"Пошук\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"Чекаємо на відповідь...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"Команду запиту не визначено.\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"Запит\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"Запит:\"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"Запит '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"Передати\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"Друк\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"Збереження...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"Додаток записано.\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"ОБЕРЕЖНО! Ви знищите існуючий %s при запису. Ви певні?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"Додаток відфільтровано.\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"Фільтрувати через: \"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"Передати команді: \"\n\n#: recvattach.c:710\n#, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"Невідомо, як друкувати додатки типу %s!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"Друкувати виділені додатки?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"Друкувати додаток?\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"Не можу розшифрувати листа!\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"Додатки\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"Немає підчастин для проглядання!\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"Неможливо видалити додаток з сервера POP.\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"Видалення додатків з шифрованих листів не підтримується.\"\n\n#: recvattach.c:1132\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"Видалення додатків з підписаних листів може анулювати підпис.\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"Підтримується тільки видалення в багаточастинних листах.\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"Ви можете надсилати тільки копії частин в форматі message/rfc822.\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"Помилка при пересилці листа!\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"Помилка при пересилці листів!\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"Неможливо відкрити тимчасовий файл %s.\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"Переслати як додатки?\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"Неможливо декодувати всі виділені додатки. Пересилати їх як MIME?\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"Переслати енкапсульованим у відповідності до MIME?\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"Неможливо створити %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"Не знайдено виділених листів.\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"Не знайдено списків розсилки!\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"Неможливо декодувати всі виділені додатки. Капсулювати їх у MIME?\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"Додати\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"Встав.\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"Видал.\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"Ok\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"Неможливо отримати type2.list mixmaster'а!\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"Веберіть ланцюжок remailer.\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"Помилка: %s неможливо використати як останній remailer ланцюжку.\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Ланцюжок не може бути більшим за %d елементів.\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"Ланцюжок remailer'а вже порожній.\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"Перший елемент ланцюжку вже вибрано.\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"Останній елемент ланцюжку вже вибрано.\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster не приймає заголовки Cc та Bcc.\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"\"\n\"Треба встановити відповідне значення hostname для використання mixmaster!\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"Помилка відправки, код повернення %d.\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"Помилка при відправці.\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"Невірно форматований запис для типу %s в \\\"%s\\\", рядок %d\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"Шлях до mailcap не вказано\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"запису для типу %s в mailcap не знайдено\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"score: замало аргументів\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"score: забагато аргументів\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"Помилка: score: неправильне число\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"Теми немає, відмінити?\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"Теми немає, відмінено.\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"Відповісти %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"Переслати %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"Жоден з виділених листів не є видимим!\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"Додати лист до відповіді?\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"Цитується повідомлення...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"Не вийшло додати всі бажані листи!\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"Переслати як додаток?\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"Підготування листа для пересилання...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"Викликати залишений лист?\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"Редагувати лист перед відправкою?\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"Відмінити відправку не зміненого листа?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"Лист не змінено, тому відправку відмінено.\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"Лист залишено для подальшої відправки.\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"Не вказано отримувачів!\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"Отримувачів не було вказано.\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"Теми немає, відмінити відправку?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"Теми не вказано.\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"Лист відправляється...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"Зберегти додатки в Fcc?\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"Не вийшло відправити лист.\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"Лист відправлено.\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"Фонова відправка.\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"Немає параметру межі! [сповістіть про цю помилку]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s більше не існує!\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s не є звичайним файлом.\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"Не вийшло відкрити %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"$sendmail має бути встановленим для відправки пошти.\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"Помилка відправки, код повернення %d (%s).\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Вивід процесу доставки\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"Погане IDN %s при підготовці resent-from.\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  Виходжу.\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"Отримано %s...  Виходжу.\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"Отримано сигнал %d...  Виходжу.\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"Введіть кодову фразу S/MIME:\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"Довірені  \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"Перевір.  \"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"Неперевір\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"Простроч. \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"Відклик.  \"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"Неправ.   \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"Невідоме  \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME сертифікати, що відповідають \\\"%s\\\".\"\n\n#: smime.c:472\nmsgid \"ID is not trusted.\"\nmsgstr \"ID не є довіреним.\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"Введіть keyID: \"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"Немає (правильних) сертифікатів для %s.\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"Помилка: неможливо створити підпроцес OpenSSL!\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"Немає сертифікату\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"скриньки немає\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"Немає виводу від OpenSSL...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\"Неможливо підписати: Ключів не вказано. Використовуйте \\\"Підписати як\\\".\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"Неможливо відкрити підпроцесс OpenSSL!\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- Кінець тексту на виході OpenSSL --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- Помилка: неможливо створити підпроцес OpenSSL! --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- Наступні дані зашифровано S/MIME --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- Наступні дані підписано S/MIME --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Кінець даних, зашифрованих S/MIME --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- Кінець підписаних S/MIME даних --]\\n\"\n\n#: smime.c:2109\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME (s)підп., (w)шифр. з, (a)підп. як, (c)відм., вимкнути (o)ppenc? \"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"swafco\"\n\n#: smime.c:2123\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME (e)шифр, (s)підп, (w)шифр.з, (a)підп.як, (b)усе, (c)відм, вимк.\"\n\"(o)ppenc?\"\n\n#: smime.c:2124\nmsgid \"eswabfco\"\nmsgstr \"eswabfco\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME (e)шифр., (s)підп., (w)шифр. з, (a)підп. як, (b)усе, (c)відміна? \"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"eswabfc\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"Виберіть сімейство алгоритмів: (d)DES/(r)RC2/(a)AES/(c)відмінити?\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drac\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"(d)DES/(t)3DES \"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"(4)RC2-40/(6)RC2-64/(8)RC2-128\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"(8)AES128/(9)AES192/(5)AES256\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"Помилка сесії SMTP: %s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"Помилка SMTP: неможливо відкрити %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"Не вказано адресу From:\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"Помилка сесії SMTP: помилка читання з сокета\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"Помилка сесії SMTP: помилка запису в сокет\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"Неправильна відповідь сервера\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"Неправильний SMTP URL: %s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP-сервер не підтримує аутентифікації\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP-аутентифікація потребує SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"Помилка аутентифікації %s, пробуємо наступний метод\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"Помилка аутентифікації SASL\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"Сортування поштової скриньки...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"Не знайдено функцію сортування! [сповістіть про це]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(скриньки немає)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"\\\"Батьківський\\\" лист не можна побачити при цьому обмеженні.\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"\\\"Батьківський\\\" лист недоступний.\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"порожня операція\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"завершення операції по умовам\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"примусовий перегляд з використанням mailcap\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"дивитись додаток як текст\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"вимк./ввімкн. відображення підчастин\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"перейти до кінця сторінки\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"надіслати копію листа іншому адресату\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"вибрати новий файл в цьому каталозі\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"проглянути файл\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"показати ім'я вибраного файлу\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"підписатись на цю скриньку (лише IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"відписатись від цієї скриньки (лише IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"вибрати: перелік всіх/підписаних (лише IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"список поштових скриньок з новою поштою.\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"змінювати каталоги\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"перевірити наявність нової пошти у скриньках\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"приєднати файл(и) до цього листа\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"приєднати лист(и) до цього листа\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"змінити перелік Bcc\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"змінити перелік Cc\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"змінити пояснення до додатку\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"змінити спосіб кодування додатку\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"ввести ім'я файлу, куди додати копію листа\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"редагувати файл, що приєднується\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"змінити поле From\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"редагувати лист з заголовками\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"редагувати лист\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"редагувати додаток, використовуючи mailcap\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"змінити поле Reply-To\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"редагувати тему цього листа\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"змінити перелік To\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"створити нову поштову скриньку (лише IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"змінити тип додатку\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"отримати тимчасову копію додатку\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"перевірити граматику у листі (ispell)\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"створити новий додаток, використовуючи mailcap\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"вимкнути/ввімкнути перекодовування додатку\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"зберегти цей лист, аби відіслати пізніше\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"перейменувати приєднаний файл\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"відіслати лист\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"змінити inline на attachment або навпаки\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"вибрати, чи треба видаляти файл після відправки\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"обновити відомості про кодування додатку\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"додати лист до скриньки\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"копіювати лист до файлу/поштової скриньки\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"створити псевдонім на відправника листа\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"пересунути позицію донизу екрану\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"пересунути позицію досередини екрану\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"пересунути позицію догори екрану\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"зробити декодовану (простий текст) копію\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"зробити декодовану (текст) копію та видалити\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"видалити поточну позицію\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"видалити поточну скриньку (лише IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"видалити всі листи гілки\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"видалити всі листи розмови\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"показати повну адресу відправника\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"показати лист і вимкн./ввімкн. стискання заголовків\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"показати лист\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"редагувати вихідний код листа\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"видалити символ перед курсором\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"пересунути курсор на один символ вліво\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"пересунути курсор до початку слова\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"перейти до початку рядку\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"перейти по вхідних поштових скриньках\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"доповнити ім'я файлу чи псевдонім\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"послідовно доповнити адресу\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"видалити символ на місці курсору\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"перейти до кінця рядку\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"пересунути курсор на один символ вправо\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"пересунути курсор до кінця слова\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"прогорнути історію вводу донизу\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"прогорнути історію вводу нагору\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"видалити від курсору до кінця рядку\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"видалити від курсору до кінця слова\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"очистити рядок\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"видалити слово перед курсором\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"сприйняти наступний символ, як є\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"пересунути поточний символ до попереднього\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"написати слово з великої літери\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"перетворити літери слова на маленькі\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"перетворити літери слова на великі\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"ввести команду muttrc\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"ввести маску файлів\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"вийти з цього меню\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"фільтрувати додаток через команду shell\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"перейти до першої позиції\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"змінити атрибут важливості листа\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"переслати лист з коментарем\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"вибрати поточну позицію\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"відповісти всім адресатам\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"прогорнути на півсторінки донизу\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"прогорнути на півсторінки догори\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"цей екран\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"перейти до позиції з номером\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"перейти до останньої позиції\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"відповісти до вказаної розсилки\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"виконати макрос\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"компонувати новий лист\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"розділити розмову на дві\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"відкрити іншу поштову скриньку\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"відкрити іншу скриньку тільки для читання\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"скинути атрибут статусу листа\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"видалити листи, що містять вираз\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"примусово отримати пошту з сервера IMAP\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"вийти з усіх IMAP-серверів\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"отримати пошту з сервера POP\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"перейти до першого листа\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"перейти до останнього листа\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"показати лише листи, що відповідають виразу\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"об’єднати виділені листи з поточним\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"відкрити нову скриньку з непрочитаною поштою\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"перейти до наступного нового листа\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"перейти до наступного нового чи нечитаного листа\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"перейти до наступної підбесіди\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"перейти до наступної бесіди\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"перейти до наступного невидаленого листа\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"перейти до наступного нечитаного листа\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"перейти до \\\"батьківського\\\" листа у бесіді\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"перейти до попередньої бесіди\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"перейти до попередньої підбесіди\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"перейти до попереднього невидаленого листа\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"перейти до попереднього нового листа\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"перейти до попереднього нового чи нечитаного листа\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"перейти до попереднього нечитаного листа\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"відмітити поточну бесіду як читану\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"відмітити поточну підбесіду як читану\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"встановити атрибут статусу листа\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"записати зміни до поштової скриньки\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"виділити листи, що відповідають виразу\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"відновити листи, що відповідають виразу\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"зняти виділення з листів, що відповідають виразу\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"перейти до середини сторінки\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"перейти до наступної позиції\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"прогорнути на рядок донизу\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"перейти до наступної сторінки\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"перейти до кінця листа\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"вимк./ввімкн. відображення цитованого тексту\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"пропустити цитований текст цілком\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"перейти до початку листа\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"віддати лист/додаток у конвеєр команді shell\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"перейти до попередньої позицїї\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"прогорнути на рядок догори\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"перейти до попередньої сторінки\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"друкувати поточну позицію\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"запит зовнішньої адреси у зовнішньої програми\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"додати результати нового запиту до поточних\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"зберегти зміни скриньки та вийти\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"викликати залишений лист\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"очистити та перемалювати екран\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{внутрішня}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"перейменувати поточну скриньку (лише IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"відповісти на лист\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"взяти цей лист в якості шаблону для нового\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"зберегти лист/додаток у файлі чи скриньку\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"пошук виразу в напрямку уперед\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"пошук виразу в напрямку назад\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"пошук наступної відповідності\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"пошук наступного в зворотньому напрямку\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"вимк./ввімкнути виділення виразу пошуку\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"викликати команду в shell\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"сортувати листи\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"сортувати листи в зворотньому напрямку\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"виділити поточну позицію\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"використати наступну функцію до виділеного\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"використати наступну функцію ТІЛЬКИ до виділеного\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"виділити поточну підбесіду\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"виділити поточну бесіду\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"змінити атрибут 'новий' листа\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"вимкнути/ввімкнути перезаписування скриньки\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"вибір проглядання скриньок/всіх файлів\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"перейти до початку сторінки\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"відновити поточну позицію\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"відновити всі листи бесіди\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"відновити всі листи підбесіди\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"показати версію та дату Mutt\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"проглянути додаток за допомогою mailcap при потребі\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"показати додатки MIME\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"показати код натиснутої клавіші\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"показати поточний вираз обмеження\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"згорнути/розгорнути поточну бесіду\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"згорнути/розгорнути всі бесіди\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"приєднати відкритий ключ PGP\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"показати параметри PGP\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"відіслати відкритий ключ PGP\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"перевірити відкритий ключ PGP\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"побачити ідентіфікатор користувача ключа\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"перевірка на класичне PGP\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"Прийняти сконструйований ланцюжок\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"Додати remailer до ланцюжку\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"Вставити remailer в ланцюжок\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"Видалити remailer з ланцюжку\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"Вибрати попередній елемент ланцюжку\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"Вибрати наступний елемент ланцюжку\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"відіслати лист через ланцюжок mixmaster remailer\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"зробити розшифровану копію та видалити\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"зробити розшифровану копію\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"знищити паролі у пам'яті\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"розпакувати підтримувані відкриті ключі\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"показати параметри S/MIME\"\n"
  },
  {
    "path": "po/zh_CN.po",
    "content": "# Translation for mutt in simplified Chinese, UTF-8 encoding.\n#\n# Copyright (C) mutt translators.\n# Cd Chen <cdchen@mail.cynix.com.tw>\n# Weichung Chau <weichung@mail.cynix.com.tw>\n# Anthony Wong <ypwong@debian.org>\n# Deng Xiyue <manphiz@gmail.com>, 2009\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2009-06-28 14:30+0800\\n\"\n\"Last-Translator: Deng Xiyue <manphiz@gmail.com>\\n\"\n\"Language-Team: i18n-zh <i18n-zh@googlegroups.com>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"在 %s 的用户名：\"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"%s@%s 的密码：\"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"退出\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"删除\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"反删除\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"选择\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"帮助\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"您没有别名信息！\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"别名\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"取别名为：\"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"您已经为这个名字定义了别名啦！\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"警告：此别名可能无法工作。要修正它吗？\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"地址：\"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"错误：'%s'是错误的 IDN。\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"个人姓名：\"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] 接受?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"存到文件：\"\n\n#: alias.c:361\nmsgid \"Error reading alias file\"\nmsgstr \"读取别名文件时出错\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"别名已添加。\"\n\n#: alias.c:391\nmsgid \"Error seeking in alias file\"\nmsgstr \"无法在别名文件里查找\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"无法匹配名称模板，继续？\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Mailcap 编写项目需要 %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"执行 \\\"%s\\\" 时出错！\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"打开文件来分析标头失败。\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"打开文件时去除标头失败。\"\n\n#: attach.c:184\nmsgid \"Failure to rename file.\"\nmsgstr \"将文件改名失败。\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"没有 %s 的 mailcap 撰写条目，正在创建空文件。\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"Mailcap 编辑条目需要 %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"没有 %s 的 mailcap 编辑条目\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"没有发现匹配的 mailcap 条目。以文本方式显示。\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME 类型未定义。无法显示附件。\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"无法创建过滤器\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"---命令：%-20.20s 描述：%s\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"---命令：%-30.30s 描述：%s\"\n\n#: attach.c:558\n#, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"---附件: %s: %s\"\n\n#: attach.c:561\n#, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"---附件: %s\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"无法建立过滤器\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"写入出错！\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"我不知道要如何打印它！\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"改变目录\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"掩码\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s 不是目录\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"信箱 [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"已订阅 [%s], 文件掩码: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"目录 [%s], 文件掩码: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"无法附加目录！\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"没有文件与文件掩码相符\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"只有 IMAP 信箱才支持创建\"\n\n#: browser.c:929\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"只有 IMAP 信箱才支持改名\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"只有 IMAP 信箱才支持删除\"\n\n#: browser.c:962\nmsgid \"Cannot delete root folder\"\nmsgstr \"无法删除根文件夹\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"真的要删除 \\\"%s\\\" 信箱吗？\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"信箱已删除。\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"信箱未删除。\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"改变目录到：\"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"扫描目录出错。\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"文件掩码：\"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"按日期(d)，字母表(a)，大小(z)反向排序或不排序(n)? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"按日期(d)，字母表(a)，大小(z)排序或不排序(n)? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"dazn\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"新文件名：\"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"无法显示目录\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"尝试显示文件出错\"\n\n#: buffy.c:504\nmsgid \"New mail in \"\nmsgstr \"有新信件在 \"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s：终端不支持显示颜色\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s：没有这种颜色\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s：没有这个对象\"\n\n#: color.c:411\n#, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s：命令只对索引，正文，标头对象有效\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s：参数太少\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"缺少参数。\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"色彩：参数太少\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"单色：参数太少\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s：没有这个属性\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"参数太少\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"参数太多\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"不支持默认的颜色\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"验证 PGP 签名?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"无法创建临时文件！\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"无法创建显示过滤器\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"无法复制信件\"\n\n#: commands.c:189\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME 签名验证成功。\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"S/MIME 证书所有者与发送者不匹配。\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"警告：此信件的部分内容未签署。\"\n\n#: commands.c:196\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME 签名“无法”验证。\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP 签名验证成功。\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP 签名“无法”验证。\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"命令：\"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"警告：信件未包含 From: 标头\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"回退信件至：\"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"回退已标记的信件至：\"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"解析地址出错！\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"错误的 IDN: '%s'\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"回退信件至 %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"回退信件至 %s\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Message not bounced.\"\nmsgstr \"信件未回退。\"\n\n#: commands.c:326 recvcmd.c:220\nmsgid \"Messages not bounced.\"\nmsgstr \"信件未回退。\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"信件已回退。\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"信件已回退。\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"无法建立过滤进程\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"用管道输出至命令：\"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"未定义打印命令\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"打印信件？\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"打印已标记的信件？\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"信件已打印\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"信件已打印\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"信件无法打印\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"信件无法打印\"\n\n#: commands.c:536\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"按日期d/发信人f/收信时间r/标题s/收信人o/线索t/不排u/大小z/分数c/垃圾邮件p反向\"\n\"排序?: \"\n\n#: commands.c:537\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"按日期d/发信人f/收信时间r/标题s/收信人o/线索t/不排u/大小z/分数c/垃圾邮件p排\"\n\"序?: \"\n\n#: commands.c:538\nmsgid \"dfrsotuzcp\"\nmsgstr \"dfrsotuzcp\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Shell 指令：\"\n\n#: commands.c:741\n#, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"解码保存%s 到信箱\"\n\n#: commands.c:742\n#, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"解码复制%s 到信箱\"\n\n#: commands.c:743\n#, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"解密保存%s 到信箱\"\n\n#: commands.c:744\n#, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"解密复制%s 到信箱\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"保存%s 到信箱\"\n\n#: commands.c:745\n#, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"复制%s 到信箱\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" 已标记\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"正在复制到 %s...\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"发送时转换为 %s？\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"内容类型(Content-Type)改变为 %s。\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"字符集改变为 %s；%s。\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"不进行转换\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"正在转换\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"没有附件。\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"寄出\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"中断\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"附加文件\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"描述\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"不支持标记。\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"签名，加密\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"加密\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"签名\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \" (嵌入)\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:141\n#, fuzzy\nmsgid \" (S/MIME)\"\nmsgstr \" (PGP/MIME)\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" 签名的身份为： \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<默认值>\"\n\n#: compose.c:165\nmsgid \"Encrypt with: \"\nmsgstr \"加密采用：\"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] 已不存在!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] 已修改。更新编码？\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- 附件\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"警告：'%s'是错误的 IDN。\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"您不可以删除唯一的附件。\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"在\\\"%s\\\"中有错误的 IDN: '%s'\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"正在附加已选择的文件...\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"无法附加 %s！\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"打开信箱并从中附加信件\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"无法锁住信箱！\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"文件夹中没有信件。\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"请标记您要附加的信件！\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"无法附加！\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"重新编码只对文本附件有效。\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"当前附件不会被转换。\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"当前附件将被转换。\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"无效的编码。\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"保存这封信件的副本吗？\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"改名为：\"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"无法 stat %s：%s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"新文件：\"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"内容类型(Content-Type)的格式是 base/sub\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"不明的内容类型(Content-Type)%s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"无法建立文件 %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"目前情况是我们无法加上附件\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"推迟这封信件？\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"将信件写入到信箱\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"写入信件到 %s ...\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"信件已写入。\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"已经选择了 S/MIME 。清除并继续？\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"已经选择了 PGP。清除并继续？\"\n\n#: crypt-gpgme.c:393\n#, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"创建 gpgme 上下文出错：%s\\n\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"开启 CMS 协议时出错：%s\\n\"\n\n#: crypt-gpgme.c:423\n#, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"创建 gpgme 数据对象时出错：%s\\n\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"分配数据对象时出错：%s\\n\"\n\n#: crypt-gpgme.c:525\n#, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"复卷数据对象时出错：%s\\n\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"读取数据对象时出错：%s\\n\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"无法建立暂存档\"\n\n#: crypt-gpgme.c:683\n#, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"添加接收方`%s'时出错：%s\\n\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"未找到密钥`%s'：%s\\n\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"密钥`%s'的说明有歧义\\n\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"设置密钥`%s'时出错：%s\\n\"\n\n#: crypt-gpgme.c:762\n#, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"设置公钥认证(PKA)签名注释时出错：%s\\n\"\n\n#: crypt-gpgme.c:818\n#, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"加密数据时出错：%s\\n\"\n\n#: crypt-gpgme.c:937\n#, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"签署数据时出错：%s\\n\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"警告：其中一个密钥已经被吊销\\n\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"警告：用来创建签名的密钥已于此日期过期：\"\n\n#: crypt-gpgme.c:1159\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"警告：至少有一个证书密钥已过期\\n\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"警告：签名已于此日期过期：\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"由于缺少密钥或证书而无法验证\\n\"\n\n#: crypt-gpgme.c:1186\nmsgid \"The CRL is not available\\n\"\nmsgstr \"证书吊销列表(CRL)不可用\\n\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"可用的证书吊销列表(CRL)太旧\\n\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"未满足策略要求\\n\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"发生系统错误\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"警告：公钥认证(PKA)项与发送者地址不匹配：\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"公钥认证(PKA)确认的发送者地址为：\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\nmsgid \"Fingerprint: \"\nmsgstr \"指纹：\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"警告：我们“无法”证实密钥是否属于上面列出名字的人\\n\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"警告：密钥“不属于”上面列出名字的人\\n\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"警告：“无法”确定密钥属于上面列出名字的人\\n\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"亦即：\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\nmsgid \"created: \"\nmsgstr \"已建立：\"\n\n#: crypt-gpgme.c:1462\n#, fuzzy, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"获取密钥信息出错：\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"正确的签名来自：\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"*错误*的签名来自：\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"有问题的签名来自：\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"  已于此日期过期：\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"[-- 签名信息开始 --]\\n\"\n\n#: crypt-gpgme.c:1558\n#, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"错误：验证失败：%s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"*** 注释开始 (由 %s 签署) ***\\n\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"*** 注释结束 ***\\n\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 签名信息结束 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:1732\n#, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 错误：解密失败：%s --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2255\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"取出密钥数据出错！\\n\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"错误：解密/验证失败：%s\\n\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"错误：复制数据失败\\n\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP 消息开始 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP 公共钥匙区段开始 --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP 签署的信件开始 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"[-- PGP 消息结束 --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP 公共钥匙区段结束 --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"[-- PGP 签署的信件结束 --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 错误：找不到 PGP 消息的开头！ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- 错误：无法建立临时文件！ --]\\n\"\n\n#: crypt-gpgme.c:2609\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 以下数据已由 PGP/MIME 签署并加密 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 以下数据已由 PGP/MIME 加密 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME 签署并加密的数据结束 --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"[-- PGP/MIME 加密数据结束 --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP 信件成功解密。\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"无法解密 PGP 信件\"\n\n#: crypt-gpgme.c:2682\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 以下数据已由 S/MIME 签署 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 以下数据已由 S/MIME 加密 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"[-- S/MIME 签署的数据结束 --]\\n\"\n\n#: crypt-gpgme.c:2714\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"[-- S/MIME 加密的数据结束 --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"[无法显示用户 ID (未知编码)]\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"[无法显示用户 ID (无效编码)]\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"[无法显示用户 ID (无效 DN)]\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"亦即 ...: \"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"名称 ...: \"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\nmsgid \"[Invalid]\"\nmsgstr \"[无效]\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"从此有效: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"有效至 .: %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"密钥类型: %s, %lu 位 %s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"密钥用法: \"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\nmsgid \"encryption\"\nmsgstr \"加密\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \", \"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"正在签署\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\nmsgid \"certification\"\nmsgstr \"证书\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"序列号 .: 0x%s\\n\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"发放者 .: \"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"子钥 ...: 0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"[已吊销]\"\n\n#: crypt-gpgme.c:3543\nmsgid \"[Expired]\"\nmsgstr \"[已过期]\"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"[已禁用]\"\n\n#: crypt-gpgme.c:3639\nmsgid \"Collecting data...\"\nmsgstr \"正在收集数据...\"\n\n#: crypt-gpgme.c:3665\n#, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"查找发放者密钥出错：%s\\n\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"错误：证书链过长 - 就此打住\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"钥匙 ID：0x%s\"\n\n#: crypt-gpgme.c:3769\n#, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"gpgme_new 失败：%s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"gpgme_op_keylist_start 失败：%s\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"gpgme_op_keylist_next 失败：%s\"\n\n#: crypt-gpgme.c:3985\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"所有符合的密钥都被标记为过期/吊销。\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"退出  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"选择  \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"检查钥匙  \"\n\n#: crypt-gpgme.c:4035\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP 和 S/MIME 密钥匹配\"\n\n#: crypt-gpgme.c:4037\nmsgid \"PGP keys matching\"\nmsgstr \"PGP 密钥匹配\"\n\n#: crypt-gpgme.c:4039\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME 密钥匹配\"\n\n#: crypt-gpgme.c:4041\nmsgid \"keys matching\"\nmsgstr \"密钥匹配\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s <%s>.\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s \\\"%s\\\".\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"这个钥匙不能使用：过期/无效/已取消。\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"ID 已经过期/无效/已取消。\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"ID 正确性未定义。\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\nmsgid \"ID is not valid.\"\nmsgstr \"ID 无效。\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\nmsgid \"ID is only marginally valid.\"\nmsgstr \"ID 仅勉强有效。\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s 您真的要使用此密钥吗？\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"正寻找匹配 \\\"%s\\\" 的密钥...\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"要使用 keyID = \\\"%s\\\" 用于 %s 吗？\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"请输入 %s 的 keyID：\"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"请输入密钥 ID：\"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"取出密钥数据出错！\\n\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP 钥匙 %s。\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME 加密(e)，签署(s)，选择身份签署(a)，两者皆要(b)，(p)gp或清除(c)？\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"PGP 加密(e)，签署(s)，选择身份签署(a)，两者皆要(b)，s/(m)ime或清除(c)？\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"S/MIME 加密(e)，签署(s)，选择身份签署(a)，两者皆要(b)，(p)gp或清除(c)？\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"esabpfc\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"\"\n\"PGP 加密(e)，签署(s)，选择身份签署(a)，两者皆要(b)，s/(m)ime或清除(c)？\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"esabmfc\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"\"\n\"S/MIME 加密(e)，签署(s)，选择身份签署(a)，两者皆要(b)，(p)gp或清除(c)？\"\n\n#: crypt-gpgme.c:4763\nmsgid \"esabpfc\"\nmsgstr \"esabpfc\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"\"\n\"PGP 加密(e)，签署(s)，选择身份签署(a)，两者皆要(b)，s/(m)ime或清除(c)？\"\n\n#: crypt-gpgme.c:4769\nmsgid \"esabmfc\"\nmsgstr \"esabmfc\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"选择身份签署：\"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"验证发送者失败\"\n\n#: crypt-gpgme.c:4932\nmsgid \"Failed to figure out sender\"\nmsgstr \"找出发送者失败\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \" (当前时间：%c)\"\n\n#: crypt.c:74\n#, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- %s 输出如下%s --]\\n\"\n\n#: crypt.c:89\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"已忘记通行密码。\"\n\n#: crypt.c:149\n#, fuzzy\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"无法将信件嵌入发送。返回使用 PGP/MIME 吗？\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"正在调用 PGP...\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"无法将信件嵌入发送。返回使用 PGP/MIME 吗？\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"信件没有寄出。\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"不支持没有内容提示的 S/MIME 消息。\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"正在尝试提取 PGP 密钥...\\n\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"正在尝试提取 S/MIME 证书...\\n\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 错误：未知的 multipart/signed 协议 %s！ --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 错误：不一致的 multipart/signed 结构！ --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 警告：我们不能证实 %s/%s 签名。 --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 以下数据已签署 --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 警告：找不到任何的签名。 --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- 签署的数据结束 --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"设置了\\\"crypt_use_gpgme\\\"但没有编译 GPGME 支持。\"\n\n#: cryptglue.c:112\nmsgid \"Invoking S/MIME...\"\nmsgstr \"正在调用 S/MIME...\"\n\n# Don't translate this!!\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"yes\"\n\n# Don't translate this!!\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"no\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"退出 Mutt？\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"未知错误\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"按下任何一个键继续...\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" (按'?'显示列表)：\"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"没有已打开信箱。\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"没有信件。\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"信箱是只读的。\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"功能在附加信件(attach-message)模式下不被支持。\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"无可见信件\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, fuzzy, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"无法 %s: 操作不被访问控制列表(ACL)所允许\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"无法在只读信箱切换可写！\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"在退出文件夹后将会把改变写入文件夹。\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"将不会把改变写入文件夹。\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"离开\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"储存\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"信件\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"回覆\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"群组\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"信箱已有外部修改。标记可能有错误。\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"此信箱中有新邮件。\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"信箱已有外部修改。\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"没有已标记的信件。\"\n\n#: curs_main.c:731 menu.c:907\nmsgid \"Nothing to do.\"\nmsgstr \"无事可做。\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"跳到信件：\"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"参数必须是信件编号。\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"这封信件无法显示。\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"无效的信件编号。\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"反删除信件\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"删除符合此样式的信件：\"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"当前没有限制样式起作用。\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"限制: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"限制符合此样式的信件：\"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"要查看所有信件，请将限制设为\\\"all\\\"。\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"离开 Mutt？\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"标记符合此样式的信件：\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"反删除信件\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"反删除符合此样式的信件：\"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"反标记符合此样式的信件：\"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"正在关闭与 IMAP 伺服器的连线...\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"用只读模式打开信箱\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"打开信箱\"\n\n#: curs_main.c:1176\nmsgid \"No mailboxes have new mail\"\nmsgstr \"没有信箱有新信件\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s 不是信箱。\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"不保存便退出 Mutt 吗？\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"线索功能尚未启动。\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"线索有误\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\n#, fuzzy\nmsgid \"Cannot link threads\"\nmsgstr \"链接线索\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"无 Message-ID: 标头可用于链接线索\"\n\n#: curs_main.c:1361\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"首先，请标记一个信件以链接于此\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"线索已链接\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"无线索来链接\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"您已经在最后一封信了。\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"没有要反删除的信件。\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"您已经在第一封信了。\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"搜寻从开头重新开始。\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"搜寻从结尾重新开始。\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"父信件在此限制视图中不可见。\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"没有新信件\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"父信件在此限制视图中不可见。\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"没有尚未读取的信件\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"标记信件\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\n#, fuzzy\nmsgid \"Cannot toggle new\"\nmsgstr \"切换新信件标记\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"没有更多的线索。\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"您在第一个线索上。\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"线索中有尚未读取的信件。\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"反删除信件\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"无法写入信件\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"标记信件为已读\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"反删除信件\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\t插入以一个 ~ 符号开头的一行\\n\"\n\"~b 用户\\t新增用户到 Bcc: 域\\n\"\n\"~c 用户\\t新增用户到 Cc: 域\\n\"\n\"~f 信件\\t包含信件\\n\"\n\"~F 信件\\t类似 ~f，除了同时包含标头\\n\"\n\"~h\\t\\t编辑信件的标头\\n\"\n\"~m 信件\\t包含并引用信件\\n\"\n\"~M 信件\\t类似 ~m, 除了包含标头\\n\"\n\"~p\\t\\t打印这封信件\\n\"\n\n#: edit.c:52\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~q\\t\\t写入文件并退出编辑器\\n\"\n\"~r 文件\\t\\t将文件读入编辑器\\n\"\n\"~t 用户\\t将用户添加到 To: 域\\n\"\n\"~u\\t\\t唤回之前一行\\n\"\n\"~v\\t\\t使用 $visual 编辑器编辑信件\\n\"\n\"~w 文件\\t\\t将信件写入文件\\n\"\n\"~x\\t\\t中止修改并离开编辑器\\n\"\n\"~?\\t\\t本消息\\n\"\n\".\\t\\t如果是一行里的唯一字符，则代表结束输入\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d：无效的信件编号。\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"(在一行里输入一个 . 符号来结束信件)\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"没有信箱。\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"信件包含：\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"(继续)\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"缺少文件名。\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"信件中一行也没有。\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"%s 中有错误的 IDN: '%s'\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s：不明的编辑器命令(~? 求助)\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"无法建立临时文件夹：%s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"无法建立临时邮件夹：%s\"\n\n#: editmsg.c:110\n#, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"无法截断临时邮件夹：%s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"信件文件是空的！\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"信件未改动！\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"无法打开信件文件：%s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"无法添加到文件夹末尾：%s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"错误。保留临时文件：%s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"设定标记\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"清除标记\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- 错误： 无法显示 Multipart/Alternative 的任何部分！ --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- 附件 #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- 形态:  %s/%s, 编码: %s, 大小: %s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"本信件的一个或多个部分无法显示\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- 使用 %s 自动显示 --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"执行自动显示指令：%s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- 无法运行 %s --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- 自动显示的 %s 输出到标准错误(stderr)的内容 --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"[-- 错误: message/external-body 没有访问类型参数 --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- 此 %s/%s 附件 \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(大小 %s 字节) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"已经被删除 --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- 在 %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- 名称：%s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- 此 %s/%s 附件未被包含， --]\\n\"\n\n#: handler.c:1500\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- 并且其标明的外部源已 --]\\n\"\n\"[-- 过期。 --]\\n\"\n\n#: handler.c:1518\n#, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"[-- 并且其标明的访问类型 %s 不被支持 --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"无法打开临时文件！\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"错误：multipart/signed 没有协议。\"\n\n#: handler.c:1821\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- 这是一个附件 \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s 尚未支持 \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"(使用 '%s' 来显示这部份)\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"(需要将 'view-attachments' 绑定到键！)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s：无法附加文件\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"错误：请报告这个问题\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<未知>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"通用绑定：\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"未绑定的功能：\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"%s 的帮助\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"错误的历史文件格式 (第 %d 行)\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: 无法在一个钩子里进行 unhook * 操作\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook：未知钩子类型：%s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook: 无法从 %2$s 中删除 %1$s\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"无可用认证\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"认证中 (匿名)...\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"匿名认证失败。\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"认证中 (CRAM-MD5)...\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 认证失败。\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"认证中 (GSSAPI)...\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI 认证失败。\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"LOGIN 在此服务器已禁用。\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"登入中...\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"登入失败。\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"认证中 (%s)...\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL 认证失败。\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"%s 是无效的 IMAP 路径\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"正在获取文件夹列表...\"\n\n#: imap/browse.c:189\nmsgid \"No such folder\"\nmsgstr \"无此文件夹\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"创建信箱：\"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"信箱必须有名字。\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"信箱已创建。\"\n\n#: imap/browse.c:330\n#, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"将信箱 %s 改名为：\"\n\n#: imap/browse.c:346\n#, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"改名失败：%s\"\n\n#: imap/browse.c:351\nmsgid \"Mailbox renamed.\"\nmsgstr \"信箱已改名。\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"信箱已关闭。\"\n\n#: imap/imap.c:125\n#, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"CREATE(创建)失败：%s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"正在关闭到 %s 的连接...\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"这个 IMAP 服务器已过时，Mutt 无法与之工作。\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"使用 TLS 安全连接？\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"无法协商 TLS 连接\"\n\n#: imap/imap.c:459 pop_lib.c:336\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"加密连接不可用\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"正在选择 %s...\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"打开信箱时出错\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"创建 %s 吗？\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"执行删除失败\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"已标记的 %d 封信件已删除...\"\n\n#: imap/imap.c:1227\n#, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"正在储存已改变的信件... [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"保存标记出错。仍然关闭吗？\"\n\n#: imap/imap.c:1290\nmsgid \"Error saving flags\"\nmsgstr \"保存标记时出错\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"正在服务器上执行信件删除...\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"imap_sync_mailbox: EXPUNGE(执行删除)失败\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"无标头名称的标头搜索：%s\"\n\n#: imap/imap.c:1839\nmsgid \"Bad mailbox name\"\nmsgstr \"错误的信箱名\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"正在订阅 %s...\"\n\n#: imap/imap.c:1865\n#, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"正在取消订阅 %s...\"\n\n#: imap/imap.c:1875\n#, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"已订阅 %s...\"\n\n#: imap/imap.c:1877\n#, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"已取消订阅 %s...\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"无法取回此版本的 IMAP 服务器的标头。\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"无法创建临时文件 %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\nmsgid \"Evaluating cache...\"\nmsgstr \"正在评估缓存...\"\n\n#: imap/message.c:232 pop.c:281\nmsgid \"Fetching message headers...\"\nmsgstr \"正在取回信件标头...\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"正在取回信件...\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"信件索引不正确。请尝试重新打开邮件箱。\"\n\n#: imap/message.c:644\nmsgid \"Uploading message...\"\nmsgstr \"正在上传信件...\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"正在复制 %d 个信件到 %s ...\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"正在复制信件 %d 到 %s ...\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"继续？\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"在此菜单中不可用。\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"错误的正则表达式：%s\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"没有足够的子表达式来用于垃圾邮件模板\"\n\n#: init.c:715\nmsgid \"spam: no matching pattern\"\nmsgstr \"垃圾邮件：无匹配的模式\"\n\n#: init.c:717\nmsgid \"nospam: no matching pattern\"\nmsgstr \"去掉垃圾邮件：无匹配的模板\"\n\n#: init.c:861\n#, fuzzy, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"缺少 -rx 或 -addr。\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"警告：错误的 IDN '%s'.\\n\"\n\n#: init.c:1094\nmsgid \"attachments: no disposition\"\nmsgstr \"附件：无处理方式\"\n\n#: init.c:1132\nmsgid \"attachments: invalid disposition\"\nmsgstr \"附件：无效的处理方式\"\n\n#: init.c:1146\nmsgid \"unattachments: no disposition\"\nmsgstr \"去掉附件：无处理方式\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"去掉附件：无效的处理方式\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"别名：没有邮件地址\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"警告：错误的 IDN '%s'在别名'%s'中。\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"无效的标头域\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s：未知的排序方式\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_defualt(%s)：正则表达式有错误：%s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s：未知的变量\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"带重置的前缀是非法的\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"带重置的值是非法的\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"用法：set variable=yes|no\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s 已被设定\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s 没有被设定\"\n\n#: init.c:1913\n#, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"选项 %s 的值无效：\\\"%s\\\"\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s：无效的信箱类型\"\n\n#: init.c:2081\n#, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s：无效的值(%s)\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"格式错误\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"数字溢出\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s：无效的值\"\n\n#: init.c:2183\n#, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s：未知类型。\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s：未知类型\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"%s 发生错误，第 %d 行：%s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source：%s 中有错误\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: 读取因 %s 中错误过多而中止\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source：%s 有错误\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source：参数太多\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s：未知命令\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"命令行有错：%s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"无法确定 home 目录\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"无法确定用户名\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"无法确定用户名\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"-group: 无组名称\"\n\n#: init.c:3224\nmsgid \"out of arguments\"\nmsgstr \"参数不够用\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"检测到宏中有回环。\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"此键还未绑定功能。\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"此键还未绑定功能。按 '%s' 以获得帮助信息。\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push：参数太多\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s：没有这个选单\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"空的键值序列\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind：参数太多\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s：在对映表中没有这样的函数\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro：空的键值序列\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro：参数太多\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec：无参数\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s：没有这样的函数\"\n\n#: keymap.c:1132\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"请按键(按 ^G 中止)：\"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"字符 = %s, 八进制 = %o, 十进制 = %d\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"整数溢出 -- 无法分配到内存！\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"内存用尽！\"\n\n#: main.c:65\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"要连络研发人员，请寄信给 <mutt-dev@mutt.org>。\\n\"\n\"要报告问题，请访问 http://bugs.mutt.org/。\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2009 Michael R. Elkins 与其他人。\\n\"\n\"Mutt 不提供任何保证：请键入 `mutt -vv' 以获取详细信息。\\n\"\n\"Mutt 是自由软件, 欢迎您在某些条件下\\n\"\n\"重新发行它；请键入 `mutt -vv' 以获取详细信息。\\n\"\n\n#: main.c:75\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\"Copyright (C) 1996-2007 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2008 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2009 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"\\n\"\n\"许多这里没有提到的人也贡献了代码，修正以及建议。\\n\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\"    本程序为自由软件；您可依据自由软件基金会所发表的 GNU 通用公共许可条款\\n\"\n\"    规定，就本程序再为发布与／或修改；无论您依据的是本许可的第二版或（您\\n\"\n\"    自行选择的）任一日后发行的版本。\\n\"\n\"\\n\"\n\"    本程序是基于使用目的而加以发布，然而不负任何担保责任；亦无对适售性或\\n\"\n\"    特定目的适用性所为的默示性担保。详情请参照 GNU 通用公共许可。\\n\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\"    您应已收到附随于本程序的 GNU 通用公共许可的副本；如果没有，请写信\\n\"\n\"    至自由软件基金会，51 Franklin Street, Fifth Floor, Boston, MA \"\n\"02110-1301, USA.\\n\"\n\n#: main.c:116\n#, fuzzy\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\"用法: mutt [<选项>] [-z] [-f <文件> | -yZ]\\n\"\n\"      mutt [<选项>] [-x] [-Hi <文件>] [-s <标题>] [-bc <地址>] [-a <文件> \"\n\"[...]] [--] <地址> [...]\\n\"\n\"      mutt [<选项>] [-x] [-s <标题>] [-bc <地址>] [-a <文件> [...]] [--] <地\"\n\"址> [...] < message\\n\"\n\"      mutt [<选项>] -p\\n\"\n\"      mutt [<选项>] -A <别名> [...]\\n\"\n\"      mutt [<选项>] -Q <查询> [...]\\n\"\n\"      mutt [<选项>] -D\\n\"\n\"      mutt -v[v]\\n\"\n\n#: main.c:125\n#, fuzzy\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\"选项:\\n\"\n\"  -A <alias>\\t扩展给出的别名\\n\"\n\"  -a <file>\\t附加一个文件到本信件作为附件\\n\"\n\"  -b <address>\\t指定一个密件抄送(BCC)地址\\n\"\n\"  -c <address>\\t指定一个抄送(CC)地址\\n\"\n\"  -D\\t\\t打印所有变量的值到标准输出\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"  -d <级别>\\t将调试输出记录到 ~/.muttdebug0\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"  -e <命令>\\t指定一个初始化后要被执行的命令\\n\"\n\"  -f <文件>\\t指定要阅读那一个信箱\\n\"\n\"  -F <文件>\\t指定一个替代的 muttrc 文件\\n\"\n\"  -H <文件>\\t指定一个模板文件以读取标题和正文来源\\n\"\n\"  -i <文件>\\t指定一个 Mutt 需要包含在正文中的文件\\n\"\n\"  -m <类型>\\t指定一个预设的信箱类型\\n\"\n\"  -n\\t\\t使 Mutt 不去读取系统的 Muttrc\\n\"\n\"  -p\\t\\t叫回一个延后寄送的信件\"\n\n#: main.c:147\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"  -Q <变量>\\t查询一个配置变量\\n\"\n\"  -R\\t\\t以只读模式打开信箱\\n\"\n\"  -s <主题>\\t指定一个标题 (如果有空白的话必须被包括在引号中)\\n\"\n\"  -v\\t\\t显示版本和编译时的定义\\n\"\n\"  -x\\t\\t模拟 mailx 寄送模式\\n\"\n\"  -y\\t\\t选择一个被指定在您`mailboxes'清单中的信箱\\n\"\n\"  -z\\t\\t如果在信箱中没有信件的话，立即退出\\n\"\n\"  -Z\\t\\t打开第一个附有新信件的资料夹，如果没有的话立即离开\\n\"\n\"  -h\\t\\t本帮助消息\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"编译选项：\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"初始化终端时出错。\"\n\n#: main.c:669\n#, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"错误：变量'%s'对于 -d 来说无效。\\n\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"正在使用级别 %d 进行调试。\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"在编译时候没有定义 DEBUG。忽略。\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s 不存在。创建它吗？\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"无法创建 %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"解析 mailto: 链接失败\\n\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"没有指定接收者。\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s：无法附加文件。\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"没有信箱有新信件。\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"未定义收信信箱\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"信箱是空的。\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"正在读取 %s...\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"信箱损坏了！\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"信箱已损坏!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"严重错误！无法重新打开信箱！\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"无法锁住信箱！\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"同步：信箱已被修改，但没有被修改过的信件！(请报告这个错误)\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"正在写入 %s...\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"正在提交修改...\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"写入失败！已把部分的信箱储存至 %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"无法重开信箱！\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"正在重新打开信箱...\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"跳到：\"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"无效的索引编号。\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"没有条目。\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"您无法再向下滚动了。\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"您无法再向上滚动了。\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"您现在在第一页。\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"您现在在最后一页。\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"您现在在最后一项。\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"您现在在第一项。\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"搜寻：\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"返向搜寻：\"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"没有找到。\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"没有已标记的条目。\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"此菜单未实现搜寻。\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"对话模式中未实现跳跃。\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"不支持标记。\"\n\n#: mh.c:1184\n#, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"正在扫描 %s...\"\n\n#: mh.c:1385 mh.c:1463\nmsgid \"Could not flush message to disk\"\nmsgstr \"无法将信件导出到硬盘。\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"maildir_commit_message(): 无法给文件设置时间\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"未知的 SASL 配置\"\n\n#: mutt_sasl.c:228\nmsgid \"Error allocating SASL connection\"\nmsgstr \"分配 SASL 连接时出错\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"设置 SASL 安全属性时出错\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"设置 SASL 外部安全强度时出错\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"设置 SASL 外部用户名时出错\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"到 %s 的连接已关闭\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"SSL 不可用。\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"预连接命令失败。\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"与 %s 通话出错(%s)\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"错误的 IDN \\\"%s\\\"。\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"正在查找 %s...\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"无法找到主机\\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"正在连接到 %s...\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"无法连接到 %s (%s)\"\n\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"在您的系统上查找足够的熵时失败\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"正在填充熵池：%s...\\n\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s 有不安全的访问许可！\"\n\n#: mutt_ssl.c:276\n#, fuzzy\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"SSL 因缺少足够的熵而禁用\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"输入输出(I/O)出错\"\n\n#: mutt_ssl.c:418\n#, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"SSL 失败：%s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"无法从节点获得证书\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"使用 %s 的 SSL 连接(%s)\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"未知\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"[无法计算]\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"[无效日期]\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"服务器证书尚未有效\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"服务器证书已过期\"\n\n#: mutt_ssl.c:841\nmsgid \"cannot get certificate subject\"\nmsgstr \"无法获取证书标题\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\nmsgid \"cannot get certificate common name\"\nmsgstr \"无法获取证书通用名称\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"证书所有者与主机名称 %s 不匹配\"\n\n#: mutt_ssl.c:915\n#, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"证书主机检查失败：%s\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"此证书属于：\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"此证书发布自：\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"此证书有效\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   来自 %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"   发往 %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"指纹: %s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"SSL 证书检查 (检查链中有 %d 个证书，共 %d 个)\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"拒绝(r)，接受一次(o)，总是接受(a)\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"roa\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"拒绝(r)，接受一次(o)\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"ro\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"警告：无法保存证书\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"证书已保存\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"错误：没有打开 TLS 套接字\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"所有用于 TLS/SSL 连接的可用协议已禁用\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"使用 %s 的 SSL/TLS 连接 (%s/%s/%s)\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"无法初始化 gnutls 证书数据。\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"处理证书数据出错\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"警告：服务器证书是使用不安全的算法签署的\"\n\n#: mutt_ssl_gnutls.c:950\n#, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"SHA1 指纹：%s\"\n\n#: mutt_ssl_gnutls.c:953\n#, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"MD5 指纹：%s\"\n\n#: mutt_ssl_gnutls.c:958\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"警告：服务器证书尚未有效\"\n\n#: mutt_ssl_gnutls.c:963\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"警告：服务器证书已过期\"\n\n#: mutt_ssl_gnutls.c:968\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"警告服务器证书已吊销\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"警告：服务器主机名与证书不匹配\"\n\n#: mutt_ssl_gnutls.c:978\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"警告：服务器证书签署者不是证书颁发机构(CA)\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"证书验证错误 (%s)\"\n\n#: mutt_ssl_gnutls.c:1094\nmsgid \"Certificate is not X.509\"\nmsgstr \"证书不是 X.509\"\n\n#: mutt_tunnel.c:72\n#, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"正在通过\\\"%s\\\"连接...\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"通过隧道连接 %s 时返回错误 %d (%s)\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"与 %s 通话时隧道错误：%s\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"文件是一个目录，在其下保存吗？[是(y), 否(n), 全部(a)]\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"yna\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"文件是一个目录，在其下保存吗？\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"在目录下的文件：\"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"文件已经存在, 覆盖(o), 附加(a), 或取消(c)？\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"oac\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"无法将新建保存到 POP 信箱。\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"附加信件到 %s 末尾?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s 不是信箱！\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"超过锁计数上限，将 %s 的锁移除吗？\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"无法 dotlock %s。\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"尝试 fcntl 加锁时超时！\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"正在等待 fcntl 加锁... %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"尝试 flock 加锁时超时！\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"正在等待尝试 flock... %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"无法锁住 %s。\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"无法与 %s 信箱同步！\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"移动已读取的信件到 %s？\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"清除 %d 封已经被删除的信件？\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"清除 %d 封已被删除的信件？\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"正在搬移已经读取的信件到 %s ...\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"信箱没有改变。\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"保留 %d 封，移动 %d 封，删除 %d 封。\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"保留 %d 封，删除 %d 封。\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" 请按下 '%s' 来切换写入\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"请使用 'toggle-write' 来重新启动写入!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"信箱已标记为不可写。%s\"\n\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"信箱已检查。\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"无法写入信件\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"整数溢出 -- 无法分配到内存。\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"上一页\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"下一页\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"显示附件。\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"下一个\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"已显示信件的最末端。\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"已显示信件的最上端。\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"现在正显示帮助。\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"无更多引用文本。\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"引用文本后没有其他未引用文本。\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"多部份信件没有边界参数！\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"表达式有错误：%s\"\n\n#: pattern.c:271 pattern.c:591\n#, c-format\nmsgid \"Empty expression\"\nmsgstr \"空表达式\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"无效的日子：%s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"无效的月份：%s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"无效的相对日期：%s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"模式有错误：%s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"缺少参数\"\n\n#: pattern.c:849\n#, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"不匹配的括号：%s\"\n\n#: pattern.c:905\n#, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c：无效模式修饰符\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c：此模式下不支持\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"缺少参数\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"不匹配的圆括号：%s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"空模式\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"错误：未知操作(op) %d (请报告这个错误)。\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"正在编译搜寻模式...\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"正在对符合的信件执行命令...\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"没有信件符合标准。\"\n\n#: pattern.c:1479\nmsgid \"Searching...\"\nmsgstr \"正在搜索...\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"已搜寻至结尾而未发现匹配\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"已搜寻至开头而未发现匹配\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"搜寻已中断。\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"请输入 PGP 通行密码：\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"已忘记 PGP 通行密码。\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- 错误：无法建立 PGP 子进程！ --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP 输出结束 --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 错误：无法建立 PGP 子进程！ --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\nmsgid \"Decryption failed\"\nmsgstr \"解密失败。\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"无法打开 PGP 子进程！\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"不能调用 PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP 加密(e)，签署(s)，选择身份签署(a)，同时(b)，%s，或清除(c)？\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"PGP/M(i)ME\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"嵌入(i)\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"PGP 加密(e)，签署(s)，选择身份签署(a)，同时(b)，%s，或清除(c)？\"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"PGP 加密(e)，签署(s)，选择身份签署(a)，同时(b)，%s，或清除(c)？\"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"esabpfc\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"PGP 加密(e)，签署(s)，选择身份签署(a)，同时(b)，%s，或清除(c)？\"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"esabpfc\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"PGP 加密(e)，签署(s)，选择身份签署(a)，同时(b)，%s，或清除(c)？\"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"esabpfc\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"PGP 加密(e)，签署(s)，选择身份签署(a)，同时(b)，%s，或清除(c)？\"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"esabpfc\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"正在取回 PGP 密钥...\"\n\n#: pgpkey.c:491\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"所有匹配的迷药已过期，吊销或禁用。\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"符合<%s>的 PGP 密钥。\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"符合 \\\"%s\\\" 的 PGP 密钥。\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"无法打开 /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP 钥匙 %s。\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"服务器不支持 TOP 命令。\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"无法将标头写入临时文件！\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"服务器不支持 UIDL 命令。\"\n\n#: pop.c:296\n#, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"%d 个信件已丢失。请尝试重新打开信箱。\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"%s 是无效的 POP 路径\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"正在取回信件列表...\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"无法将新建写入临时文件！\"\n\n#: pop.c:678\nmsgid \"Marking messages deleted...\"\nmsgstr \"正在标记邮件为已删除...\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"正在检查新邮件...\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"未定义 POP 主机。\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"POP 信箱中没有新信件\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"删除服务器上的信件吗？\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"正在读取新信件 (%d 字节)...\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"写入信箱时出错！\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [已读取 %d 封信件，共 %d 封]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"服务器关闭了连接！\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"正在验证(SASL)...\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"POP 时间戳无效！\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"正在验证(APOP)...\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP 验证失败。\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"服务器不支持 USER 命令。\"\n\n#: pop_lib.c:57\n#, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"无效的 POP 地址(URL)：%s\\n\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"无法将信件留在服务器上。\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"连接到服务器时出错：%s\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"正在关闭到 POP 服务器的连接...\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"正在验证信件索引...\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"连接丢失。重新连接到 POP 服务器吗？\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"信件已经被延迟寄出\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"没有被延迟寄出的信件。\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\nmsgid \"Illegal crypto header\"\nmsgstr \"非法的加密(crypto)标头\"\n\n#: postpone.c:496\nmsgid \"Illegal S/MIME header\"\nmsgstr \"非法的 S/MIME 标头\"\n\n#: postpone.c:584\nmsgid \"Decrypting message...\"\nmsgstr \"正在解密信件...\"\n\n#: postpone.c:592\nmsgid \"Decryption failed.\"\nmsgstr \"解密失败。\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"新的查询\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"制作别名\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"搜索\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"正在等待回应...\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"查询命令未定义。\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"查询\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"查询：\"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"查询 '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"管道\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"打印\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"正在保存...\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"附件已保存。\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"警告! 您正在覆盖 %s, 是否要继续?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"附件已被过滤。\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"经过过滤：\"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"通过管道传给：\"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"我不知道要怎么打印附件 %s！\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"打印已标记的附件？\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"打印附件？\"\n\n#: recvattach.c:1009\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"无法解密加密信件！\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"附件\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"无子部分可显示！\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"无法从 POP 服务器上删除附件\"\n\n#: recvattach.c:1126\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"不支持从加密信件中删除附件。\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"不支持从加密信件中删除附件。\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"只支持删除多段附件\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"您只能退回 message/rfc822 的部分。\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing message!\"\nmsgstr \"退回信件出错！\"\n\n#: recvcmd.c:241\nmsgid \"Error bouncing messages!\"\nmsgstr \"退回信件出错！\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"无法打开临时文件 %s。\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"作为附件转发？\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"无法解码所有已标记的附件。通过 MIME 转发其它的吗？\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"用 MIME 封装并转发？\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"无法建立 %s。\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"无法找到任何已标记信件。\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"没有找到邮件列表！\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"无法解码所有已标记的附件。通过 MIME 封装其它的吗？\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"附加到末尾\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"插入\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"删除\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"无法获得 mixmaster 的 type2.list！\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"选择一个转发者链。\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"错误：%s 不能用作链的最终转发者。\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster 链有 %d 个元素的限制。\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"转发者链已经为空。\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"您已经选择了第一个链元素。\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"您已经选择了最后的链元素\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster 不接受转发(Cc)或密件转发(Bcc)标头\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"使用 mixmaster 时请给 hostname(主机名)变量设置合适的值！\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"发送信件出错，子进程已退出 %d。\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"发送信件出错。\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"在 \\\"%2$s\\\" 的第 %3$d 行发现类型 %1$s 为错误的格式纪录\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"没有指定 mailcap 路径\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"没有发现类型 %s 的 mailcap 纪录\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"分数：参数太少\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"分数：参数太多\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"错误：分数：无效数字\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"没有标题，中止吗？\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"没有标题，正在中止。\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"回信到 %s%s？\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"发送后续信件到 %s%s？\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"无可见的已标记信件！\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"回信使包含原信件吗？\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"正在包含引用信件...\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"无法包含所有请求的信件！\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"作为附件转发？\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"正在准备转发信件...\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"叫出延迟寄出的信件吗？\"\n\n#: send.c:1426\nmsgid \"Edit forwarded message?\"\nmsgstr \"编辑已转发的信件吗？\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"中止未修改过的信件？\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"已中止未修改过的信件。\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"信件被延迟寄出。\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"没有指定接收者！\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"没有已指定的接收者。\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"没有信件标题，要中止发送吗?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"没有指定标题。\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"正在发送信件...\"\n\n#: send.c:1788\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"将附件保存到 Fcc 吗？\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"无法发送此信件。\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"信件已发送。\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"正在后台发送。\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"没有发现分界变量！[请报告这个错误]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s 已经不存在了！\"\n\n#: sendlib.c:878\n#, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s 不是常规文件。\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"无法打开 %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"发送信件出错，子进程已退出 %d (%s)。\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Delivery process 的输出\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"当准备 resent-from 时发生错误的 IDN %s。\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s...  正在退出。\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"捕捉到 %s...  正在退出。\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"捕捉到信号 %d...  正在退出。\\n\"\n\n#: smime.c:141\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"请输入 S/MIME 通行密码：\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"信任  \"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"已验证\"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"未验证\"\n\n#: smime.c:388\nmsgid \"Expired   \"\nmsgstr \"已过期\"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"已吊销\"\n\n#: smime.c:394\nmsgid \"Invalid   \"\nmsgstr \"无效  \"\n\n#: smime.c:397\nmsgid \"Unknown   \"\nmsgstr \"未知  \"\n\n#: smime.c:429\n#, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME 证书匹配 \\\"%s\\\"。\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"ID 无效。\"\n\n#: smime.c:761\nmsgid \"Enter keyID: \"\nmsgstr \"请输入密钥 ID：\"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"未找到可用于 %s 的(有效)证书。\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"错误：无法创建 OpenSSL 子进程！\"\n\n#: smime.c:1320\nmsgid \"no certfile\"\nmsgstr \"无证书文件\"\n\n#: smime.c:1323\nmsgid \"no mbox\"\nmsgstr \"没有信箱\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"OpenSSL 没有输出...\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"无法签署：没有指定密钥。请使用指定身份签署(Sign As)。\"\n\n#: smime.c:1585\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"无法打开 OpenSSL 子进程！\"\n\n#: smime.c:1791 smime.c:1914\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- OpenSSL 输出结束 --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- 错误：无法创建 OpenSSL 子进程！ --]\\n\"\n\n#: smime.c:1918\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"[-- 以下数据已由 S/MIME 加密 --]\\n\"\n\n#: smime.c:1921\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"[-- 以下数据已由 S/MIME 签署 --]\\n\"\n\n#: smime.c:1985\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME 加密数据结束 --]\\n\"\n\n#: smime.c:1987\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME 签署的数据结束 --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"\"\n\"S/MIME 加密(e)，签署(s)，选择身份加密(w)，选择身份签署(s)，同时(b)或清除(c)？\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"\"\n\"S/MIME 加密(e)，签署(s)，选择身份加密(w)，选择身份签署(s)，同时(b)或清除(c)？\"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"eswabfc\"\n\n#: smime.c:2132\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"\"\n\"S/MIME 加密(e)，签署(s)，选择身份加密(w)，选择身份签署(s)，同时(b)或清除(c)？\"\n\n#: smime.c:2133\nmsgid \"eswabfc\"\nmsgstr \"eswabfc\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"选择算法类别：1: DES, 2: RC2, 3: AES, 或(c)清除？\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"drac\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"1: DES, 2: 三重DES\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"dt\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"468\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"1: AES128, 2: AES192, 3: AES256 \"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"895\"\n\n#: smtp.c:137\n#, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"SMTP 会话失败：%s\"\n\n#: smtp.c:183\n#, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"SMTP 会话失败：无法打开 %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"没有给出发信地址\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"SMTP 会话失败：读错误\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"SMTP 会话失败：写错误\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"无效的服务器回应\"\n\n#: smtp.c:383\n#, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"无效的 SMTP 链接(URL)：%s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"SMTP 服务器不支持认证\"\n\n#: smtp.c:501\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"SMTP 认证需要 SASL\"\n\n#: smtp.c:535\n#, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"%s 认证失败，正在尝试下一个方法\"\n\n#: smtp.c:552\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL 认证失败。\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"正在排序信箱...\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"找不到排序函数！[请报告这个问题]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"(没有信箱)\"\n\n#: thread.c:1095\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"父信件在此限制视图中不可见。\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"父信件不可用。\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"空操作\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"条件运行结束 (无操作)\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"强迫使用 mailcap 查看附件\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"作为文本查看附件\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"切换子部分的显示\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"移到页面底端\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"将信件转发给另一用户\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"请选择本目录中一个新的文件\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"查看文件\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"显示当前所选择的文件名\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"订阅当前信箱 (只适用于 IMAP)\"\n\n#: ../keymap_alldefs.h:16\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"取消订阅当前信箱 (只适用于 IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"切换查看 全部/已订阅 的信箱 (只适用于 IMAP)\"\n\n#: ../keymap_alldefs.h:18\nmsgid \"list mailboxes with new mail\"\nmsgstr \"列出有新邮件的信箱\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"改变目录\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"检查信箱是否有新信件\"\n\n#: ../keymap_alldefs.h:21\nmsgid \"attach file(s) to this message\"\nmsgstr \"将文件附加到此信件作为附件\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"将信件附加到此信件作为附件\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"编辑密件抄送(BCC)列表\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"编辑抄送(CC)列表\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"编辑附件说明\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"编辑附件的传输编码\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"请输入用来储存这封信件副本的文件名称\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"编辑附件文件\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"编辑发件人域\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"编辑有标头的信件\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"编辑信件\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"使用 mailcap 条目编辑附件\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"编辑 Reply-To 栏位\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"编辑此信件的标题\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"编辑 TO 列表\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"创建新信箱 (只适用于 IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"编辑附件内容类型\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"取得附件的临时副本\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"对这封信件运行 ispell\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"使用 mailcap 条目来编写新附件\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"切换是否为此附件重新编码\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"储存信件以便稍后寄出\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"改名/移动 附件文件\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"发送信件\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"在嵌入/附件之间切换\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"切换发送后是否删除文件\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"更新附件的编码信息\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"将信件写到文件夹\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"复制一封信件到文件/信箱\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"从信件的发件人创建别名\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"移动条目到屏幕底端\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"移动条目到屏幕中央\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"移动条目到屏幕顶端\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"制作已解码的(text/plain)副本\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"制作已解码的副本(text/plain)并且删除之\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"删除当前条目\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"删除当前信箱 (只适用于 IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"删除所有子线索中的信件\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"删除所有线索中的信件\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"显示发件人的完整地址\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"显示信件并切换标头资料内容显示\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"显示信件\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"编辑原始信件\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"删除光标位置之前的字母\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"将光标向左移动一个字符\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"将光标移动到单词开头\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"跳到行首\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"在来信信箱中循环选择\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"补全文件名或别名\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"查询补全地址\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"删除光标下的字母\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"跳到行尾\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"将光标向右移动一个字符\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"将光标移到单词结尾\"\n\n#: ../keymap_alldefs.h:75\nmsgid \"scroll down through the history list\"\nmsgstr \"向下卷动历史列表\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"向上卷动历史列表\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"删除光标所在位置到行尾的字符\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"删除光标所在位置到单词结尾的字符\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"删除本行所有字符\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"删除光标之前的词\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"对下一个输入的键加引号\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"颠倒光标位置的字符和其前一个字符\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"将单词首字母转换为大写\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"将单词转换为小写\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"将单词转换为大写\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"输入一条 muttrc 指令\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"输入文件掩码\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"退出本菜单\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"透过 shell 指令来过滤附件\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"移到第一项条目\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"切换信件的'重要'标记\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"转发信件并注释\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"选择当前条目\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"回覆给所有收件人\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"向下卷动半页\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"向上卷动半页\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"这个屏幕\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"跳转到索引号码\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"移动到最后一项\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"回覆给指定的邮件列表\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"执行宏\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"撰写新邮件信息\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"将线索拆为两个\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"打开另一个文件夹\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"用只读模式打开另一个文件夹\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"清除某封信件上的状态标记\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"删除符合某个模式的信件\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"强制从 IMAP 服务器取回邮件\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"从 POP 服务器取回信件\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"移动到第一封信件\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"移动到最后一封信件\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"只显示匹配某个模式的信件\"\n\n#: ../keymap_alldefs.h:114\nmsgid \"link tagged message to the current one\"\nmsgstr \"连接已标记的信件到当前信件\"\n\n#: ../keymap_alldefs.h:115\nmsgid \"open next mailbox with new mail\"\nmsgstr \"打开下一个有新邮件的信箱\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"跳到下一封新信件\"\n\n#: ../keymap_alldefs.h:117\nmsgid \"jump to the next new or unread message\"\nmsgstr \"跳到下一个新的或未读取的信件\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"跳到下一个子线索\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"跳到下一个线索\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"移动到下一个未删除信件\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"跳到下一个未读取信件\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"跳到本线索中的父信件\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"跳到上一个线索\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"跳到上一个子线索\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"移动到上一个未删除信件\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"跳到上一个新信件\"\n\n#: ../keymap_alldefs.h:127\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"跳到上一个新的或未读取的信件\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"跳到上一个未读取的信件\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"标记当前线索为已读取\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"标记当前子线索为已读取\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"设定某一封信件的状态标记\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"保存修改到信箱\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"标记符合某个模式的信件\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"反删除符合某个模式的信件\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"反标记符合某个模式的信件\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"移动到本页的中间\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"移动到下一条目\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"向下卷动一行\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"移动到下一页\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"跳到信件的底端\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"切换引用文本的显示\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"跳过引用\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"跳到信件的顶端\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"将 讯息/附件 通过管道传递给 shell 命令\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"移到上一条目\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"向上卷动一行\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"移动到上一页\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"打印当前条目\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"向外部程序查询地址\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"附加新查询结果到当前结果\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"保存修改到信箱并且离开\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"重新叫出一封被延迟寄出的信件\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"清除并重新绘制屏幕\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{内部的}\"\n\n#: ../keymap_alldefs.h:155\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"将当前信箱改名 (只适用于 IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"回覆一封信件\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"用当前信件作为新信件的模板\"\n\n#: ../keymap_alldefs.h:158\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"保存 信件/附件 到 信箱/文件\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"用正则表示式搜索\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"用正则表示式向后搜索\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"搜索下一个匹配\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"反向搜索下一个匹配\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"切换搜寻模式的颜色\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"在 subshell 中调用命令\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"排序信件\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"反向排序信件\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"标记当前条目\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"对已标记信息应用下一功能\"\n\n#: ../keymap_alldefs.h:169\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"“仅”对已标记信息应用下一功能\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"标记当前子线索\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"标记当前线索\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"切换信件的'新邮件'标记\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"切换信箱是否要重写\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"切换是否浏览信箱或所有文件\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"移到页首\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"反删除当前条目\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"反删除线索中的所有信件\"\n\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"反删除子线索中的所有信件\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"显示 Mutt 的版本号与日期\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"如果需要的话使用 mailcap 条目浏览附件\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"显示 MIME 附件\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"显示按键的键码\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"显示当前激活的限制模式\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"折叠/展开 当前线索\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"折叠/展开 所有线索\"\n\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"附加 PGP 公钥\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"显示 PGP 选项\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"邮寄 PGP 公钥\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"验证 PGP 公钥\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"查看密钥的用户 id\"\n\n#: ../keymap_alldefs.h:191\nmsgid \"check for classic PGP\"\nmsgstr \"检查经典 PGP\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"接受创建的链\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"附加转发者到链\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"插入转发者到链\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"删除转发者到链\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"选择链中的前一个元素\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"选择链中的下一个元素\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"通过 mixmaster 转发者链发送信件\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"制作解密的副本并且删除之\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"制作解密的副本\"\n\n#: ../keymap_alldefs.h:201\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"从内存中清除通行密钥\"\n\n#: ../keymap_alldefs.h:202\nmsgid \"extract supported public keys\"\nmsgstr \"取出支持的公钥\"\n\n#: ../keymap_alldefs.h:203\nmsgid \"show S/MIME options\"\nmsgstr \"显示 S/MIME 选项\"\n\n#~ msgid \"delete message(s)\"\n#~ msgstr \"删除信件\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" 在此限制浏览中\"\n\n#~ msgid \"delete message\"\n#~ msgstr \"删除信件\"\n\n#~ msgid \"edit message\"\n#~ msgstr \"编辑信件\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"表达式有错误\"\n\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"内部错误。请通知 <rosessler@does-not-exist.org>。\"\n\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"警告：信件没有 From: 标头\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- 错误：不正确的 PGP/MIME 消息！ --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"Using GPGME backend, although no gpg-agent is running\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"使用 GPGME 后端，虽然 gpg-agent 没有在运行\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"错误：multipart/encrypted 没有协议参数！\"\n\n#~ msgid \"ID %s is unverified. Do you want to use it for %s ?\"\n#~ msgstr \"ID %s 未验证。您想要将其用于 %s 吗？\"\n\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"要将(不被信任的！) ID %s 用于 %s 吗？\"\n\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"要将 ID %s 用于 %s 吗？\"\n\n#~ msgid \"\"\n#~ \"Warning: You have not yet decided to trust ID %s. (any key to continue)\"\n#~ msgstr \"警告：您还没有决定信任 ID %s。(按任意键继续)\"\n\n#~ msgid \"No output from OpenSSL..\"\n#~ msgstr \"OpenSSL 没有输出..\"\n\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"警告：未找到中间证书\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"清除\"\n\n#~ msgid \"\"\n#~ \"  --\\t\\ttreat remaining arguments as addr even if starting with a dash\\n\"\n#~ \"\\t\\twhen using -a with multiple filenames using -- is mandatory\"\n#~ msgstr \"\"\n#~ \"  --\\t\\t将余下的参数当做地址，即使是以破折号开头\\n\"\n#~ \"\\t\\t当与多个文件名同时使用 -a 时使用 -- 是必须的\"\n\n#~ msgid \"esabifc\"\n#~ msgstr \"esabifc\"\n\n#~ msgid \"Interactive SMTP authentication not supported\"\n#~ msgstr \"不支持交互式 SMTP 认证\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"没有搜寻格式。\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"反向搜寻：\"\n\n#~ msgid \"Search: \"\n#~ msgstr \"搜寻：\"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"寄信途中发生错误。\"\n\n#, fuzzy\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"寄出信件中...\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"用法: mutt [ -nRzZ ] [ -e <命令> ] [ -F <文件> ] [ -m <类型> ] [ -f <文件\"\n#~ \"> ]\\n\"\n#~ \"        mutt [ -nx ] [ -e <命令> ] [ -a <文件> ] [ -F <文件> ] [ -H <文件\"\n#~ \"> ] [ -i <文件> ] [ -s <主题> ] [ -b <地址> ] [ -c <地址> ] <地址> \"\n#~ \"[ ... ]\\n\"\n#~ \"        mutt [ -n ] [ -e <命令> ] [ -F <文件> ] -p\\n\"\n#~ \"        mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"参数：\\n\"\n#~ \"  -a <文件>     将文件附在信件中\\n\"\n#~ \"  -b <地址>     指定一个 秘密复制 (BCC) 的地址\\n\"\n#~ \"  -c <地址>     指定一个 复制 (CC) 的地址\\n\"\n#~ \"  -e <命令>     指定一个初始化后要被执行的命令\\n\"\n#~ \"  -f <文件>     指定要阅读那一个信箱\\n\"\n#~ \"  -F <文件>     指定另一个 muttrc 文件\\n\"\n#~ \"  -H <文件>     指定一个模板文件以读取标题来源\\n\"\n#~ \"  -i <文件>     指定一个包括在回覆中的文件\\n\"\n#~ \"  -m <类型>     指定一个预设的信箱类型\\n\"\n#~ \"  -n            使 Mutt 不去读取系统的 Muttrc 档\\n\"\n#~ \"  -p            叫回一个延后寄送的信件\\n\"\n#~ \"  -R            以只读模式打开信箱\\n\"\n#~ \"  -s <主题>     指定一个主题 (如果有空白的话必须被包括在引言中)\\n\"\n#~ \"  -v            显示版本和编译时所定义的参数\\n\"\n#~ \"  -x            模拟 mailx 寄送模式\\n\"\n#~ \"  -y            选择一个被指定在您信箱清单中的信箱\\n\"\n#~ \"  -z            如果没有讯息在信箱中的话，立即离开\\n\"\n#~ \"  -Z            打开第一个附有新信件的资料夹，如果没有的话立即离开\\n\"\n#~ \"  -h            这个说明讯息\"\n\n#, fuzzy\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"正在删除伺服器上的信件...\"\n\n#, fuzzy\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"正在删除伺服器上的信件...\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"读取 %s 中... %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"写入信件中... %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"读取 %s... %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"启动 pgp...\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"严重错误。信件数量不协调！\"\n\n#, fuzzy\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"登入失败。\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"Copyright (C) 1996-2000 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"Copyright (C) 1996-2000 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2000 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2000 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2000 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2000 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"\\n\"\n#~ \"还有许多在这里没有提及到的人仕，他们曾提供程序码，修正，和意见。\\n\"\n#~ \"\\n\"\n#~ \"    这个应用程序是自由软件；您可以在自由软件基金会的 GNU 一般公共\\n\"\n#~ \"    授权书(版本 2，或i随你喜好使用以后的版本)下重复散布并/或修\\n\"\n#~ \"    正它。\\n\"\n#~ \"\\n\"\n#~ \"    发布这个应用程序的目的是希望它会对你有用，但绝不包括任何保证；\\n\"\n#~ \"    就连销售性和适于特定目的之暗示担保亦然。在 GNU 一般公共授权书\\n\"\n#~ \"    中将会获得更多资料。\\n\"\n#~ \"\\n\"\n#~ \"    您应已连同应用程序收到一份 GNU 一般公共授权书；如果没有，请写信\\n\"\n#~ \"    至 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, \"\n#~ \"Boston, MA  02110-1301, USA.\\n\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"正在显示第一项。\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"正在显示最后一项。\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"无法附加在这个伺服器上的 IMAP 信箱\"\n\n#, fuzzy\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"建立一封 application/pgp 的信件？\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"无法读取：%s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s 不是信箱。\"\n\n#, fuzzy\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"启动 OpenSSL...\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"把信件直接传送至 %s...？\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"把信件直接传送至 %s...？\"\n\n#, fuzzy\n#~ msgid \"This ID's validity level is undefined.\"\n#~ msgstr \"这个 ID 的信任阶层没有定义。\"\n\n#~ msgid \"Decode-save\"\n#~ msgstr \"解码并储存\"\n\n#~ msgid \"Decode-copy\"\n#~ msgstr \"解码并拷贝\"\n\n#~ msgid \"Decrypt-save\"\n#~ msgstr \"解密并储存\"\n\n#~ msgid \"Decrypt-copy\"\n#~ msgstr \"解密并拷贝\"\n\n#~ msgid \"Copy\"\n#~ msgstr \"拷贝\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"[-- End of PGP output --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"[-- PGP 输出的资料结束 --]\\n\"\n#~ \"\\n\"\n\n#, fuzzy\n#~ msgid \"Can't stat %s.\"\n#~ msgstr \"无法读取：%s\"\n\n#~ msgid \"%s: no such command\"\n#~ msgstr \"%s：无此指令\"\n\n#, fuzzy\n#~ msgid \"Authentication method is unknown.\"\n#~ msgstr \"GSSAPI 验证失败。\"\n\n#~ msgid \"MIC algorithm: \"\n#~ msgstr \"MIC 演算法：\"\n\n#~ msgid \"This doesn't make sense if you don't want to sign the message.\"\n#~ msgstr \"如果您不想把信件签名，这样做就没有什么意思啦。\"\n\n#~ msgid \"Unknown MIC algorithm, valid ones are: pgp-md5, pgp-sha1, pgp-rmd160\"\n#~ msgstr \"不明的 MIC 演算法。有效的如下: pgp-md5, pgp-sha1, pgp-rmd160\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"SHA1 implementation Copyright (C) 1995-1997 Eric A. Young <eay@cryptsoft.\"\n#~ \"com>\\n\"\n#~ \"\\n\"\n#~ \"    Redistribution and use in source and binary forms, with or without\\n\"\n#~ \"    modification, are permitted under certain conditions.\\n\"\n#~ \"\\n\"\n#~ \"    The SHA1 implementation comes AS IS, and ANY EXPRESS OR IMPLIED\\n\"\n#~ \"    WARRANTIES, including, but not limited to, the implied warranties of\\n\"\n#~ \"    merchantability and fitness for a particular purpose ARE DISCLAIMED.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the full distribution terms\\n\"\n#~ \"    along with this program; if not, write to the program's developers.\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"SHA1 implementation Copyrigt (C) 1995-7 Eric A. Young <eay@cryptsoft.\"\n#~ \"com>\\n\"\n#~ \"\\n\"\n#~ \"     重复散布并使用原始程序码和编译过的程序码，不管有否经过修改，\\n\"\n#~ \"     在某些条件下是许可的。\\n\"\n#~ \"\\n\"\n#~ \"     SHA1 程序不附带任何担保，不论系明示还是暗示，包括但不限于销售性\\n\"\n#~ \"     和适于特定目的之暗示担保。\\n\"\n#~ \"\\n\"\n#~ \"     您应该收到一份此应用程序的完整的散布条文；如果没有，请写信给\\n\"\n#~ \"     应用程序的发展人员.\\n\"\n\n#, fuzzy\n#~ msgid \"POP Username: \"\n#~ msgstr \"IMAP 用户名称：\"\n\n#, fuzzy\n#~ msgid \"Reading new message (%d bytes)...\"\n#~ msgstr \"读取新信件 (%d 位元组)...\"\n\n#, fuzzy\n#~ msgid \"%s [%d message read]\"\n#~ msgstr \"%s [已阅读 %d 封信件]\"\n\n#~ msgid \"Creating mailboxes is not yet supported.\"\n#~ msgstr \"未支持制造信箱。\"\n\n#~ msgid \"We can't currently handle utf-8 at this point.\"\n#~ msgstr \"我们还未能处理 utf-8。\"\n\n#~ msgid \"Can't open %s: %s.\"\n#~ msgstr \"无法打开 %s：%s.\"\n\n#, fuzzy\n#~ msgid \"Error while recoding %s. Leave it unchanged.\"\n#~ msgstr \"当转换编码 %s 发生错误。看 %s 来修复你的资料。\"\n\n#~ msgid \"Error while recoding %s. See %s for recovering your data.\"\n#~ msgstr \"当转换编码 %s 发生错误。看 %s 来修复你的资料。\"\n\n#~ msgid \"Can't change character set for non-text attachments!\"\n#~ msgstr \"非文字的附件是不能改变字符集的！\"\n\n#~ msgid \"Enter character set: \"\n#~ msgstr \"请输入字符集：\"\n\n#~ msgid \"UTF-8 encoding attachments has not yet been implemented.\"\n#~ msgstr \"还未支持 UTF-8 编码的附件。\"\n\n#~ msgid \"Compose\"\n#~ msgstr \"写信\"\n\n#~ msgid \"We currently can't encode to utf-8.\"\n#~ msgstr \"我们现在还未能重新编码至 utf-8。\"\n\n#~ msgid \"Recoding successful.\"\n#~ msgstr \"重新编码成功。\"\n\n#~ msgid \"CRAM key for %s@%s: \"\n#~ msgstr \"%s@%s 的 CRAM 钥匙\"\n\n#~ msgid \"Skipping CRAM-MD5 authentication.\"\n#~ msgstr \"掠过 CRAM-MD5 验证\"\n\n#~ msgid \"Reopening mailbox... %s\"\n#~ msgstr \"重新打开信箱中... %s\"\n\n#~ msgid \"Closing mailbox...\"\n#~ msgstr \"关闭信箱中...\"\n\n#~ msgid \"Sending APPEND command ...\"\n#~ msgstr \"正在送出 APPEND 命令...\"\n\n#~ msgid \"change an attachment's character set\"\n#~ msgstr \"改变附件的字符集\"\n\n#~ msgid \"recode this attachment to/from the local charset\"\n#~ msgstr \"重新将附件编码至本地字符集，或由本地字符集重新编码\"\n\n#~ msgid \"%d kept.\"\n#~ msgstr \"%d 保留了。\"\n\n#~ msgid \"POP Password: \"\n#~ msgstr \"POP 密码：\"\n\n#~ msgid \"No POP username is defined.\"\n#~ msgstr \"没有被定义的 POP 使用者名称。\"\n\n#~ msgid \"Attachment saved\"\n#~ msgstr \"附件已被储存。\"\n\n#~ msgid \"move to the last undelete message\"\n#~ msgstr \"移动到最后一封未删除的信件\"\n\n#~ msgid \"return to the main-menu\"\n#~ msgstr \"回到主选单\"\n\n#~ msgid \"ignoring empty header field: %s\"\n#~ msgstr \"不理会空的标头栏位：%s\"\n\n#, fuzzy\n#~ msgid \"Recoding only affetcs text attachments.\"\n#~ msgstr \"只重新编码受影响的文字附件\"\n\n#, fuzzy\n#~ msgid \"display message with full headers\"\n#~ msgstr \"编辑信件的标头\"\n\n#, fuzzy\n#~ msgid \"This operation is not currently supported for PGP messages.\"\n#~ msgstr \"暂不支持浏览 IMAP 目录\"\n\n#~ msgid \"imap_error(): unexpected response in %s: %s\\n\"\n#~ msgstr \"imap_error()：%s 的意外回应：%s\\n\"\n\n#~ msgid \"Can't open your secret key ring!\"\n#~ msgstr \"无法打开您的秘密钥匙环！\"\n\n#~ msgid \"An unkown PGP version was defined for signing.\"\n#~ msgstr \"定义了一个不明的 PGP 版本来签名\"\n\n#~ msgid \"===== Attachments =====\"\n#~ msgstr \"===== 附件 =====\"\n\n#~ msgid \"Sending CREATE command ...\"\n#~ msgstr \"正在送出 CREATE 命令...\"\n\n#~ msgid \"Unknown PGP version \\\"%s\\\".\"\n#~ msgstr \"不明的 PGP 版本 \\\"%s\\\"。\"\n\n#~ msgid \"\"\n#~ \"[-- Error: this message does not comply with the PGP/MIME specification! \"\n#~ \"--]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- 错误：这封信件不符合 PGP/MIME 的规格！ --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"reserved\"\n#~ msgstr \"保留的\"\n\n#~ msgid \"Signature Packet\"\n#~ msgstr \"签名封包\"\n\n#~ msgid \"Conventionally Encrypted Session Key Packet\"\n#~ msgstr \"一般加密钥匙封包\"\n\n#~ msgid \"One-Pass Signature Packet\"\n#~ msgstr \"单一通道的签名封包\"\n\n#~ msgid \"Secret Key Packet\"\n#~ msgstr \"秘密钥匙封包\"\n\n#~ msgid \"Public Key Packet\"\n#~ msgstr \"公共钥匙封包\"\n\n#~ msgid \"Secret Subkey Packet\"\n#~ msgstr \"秘密次钥匙封包\"\n\n#~ msgid \"Compressed Data Packet\"\n#~ msgstr \"压缩资料封包\"\n\n#~ msgid \"Symmetrically Encrypted Data Packet\"\n#~ msgstr \"对称加密资料封包\"\n\n#~ msgid \"Marker Packet\"\n#~ msgstr \"记号封包\"\n\n#~ msgid \"Literal Data Packet\"\n#~ msgstr \"文字资料封包\"\n\n#~ msgid \"Trust Packet\"\n#~ msgstr \"被信托封包\"\n\n#~ msgid \"Name Packet\"\n#~ msgstr \"名称封包\"\n\n#~ msgid \"Subkey Packet\"\n#~ msgstr \"次钥匙 (subkey) 封包\"\n\n#~ msgid \"Reserved\"\n#~ msgstr \"保留的\"\n\n#~ msgid \"Comment Packet\"\n#~ msgstr \"注解封包\"\n\n#~ msgid \"Message edited. Really send?\"\n#~ msgstr \"信件已经编辑过。确定要寄出？\"\n\n#~ msgid \"Saved output of child process to %s.\\n\"\n#~ msgstr \"输出子程序储存至 %s.\\n\"\n"
  },
  {
    "path": "po/zh_TW.po",
    "content": "# Translation for mutt in Traditional Chinese, Big5 encoding.\n#\n# Copyright  Cd Chen <cdchen@mail.cynix.com.tw>, Weichung Chau <weichung@mail.cynix.com.tw>, Anthony Wong <ypwong@debian.org>\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Mutt 1.3.22.1\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-04-02 11:15-0700\\n\"\n\"PO-Revision-Date: 2001-09-06 18:25+0800\\n\"\n\"Last-Translator: Anthony Wong <ypwong@debian.org>\\n\"\n\"Language-Team: Chinese <zh@li.org>\\n\"\n\"Language: zh\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\n#: account.c:163\n#, c-format\nmsgid \"Username at %s: \"\nmsgstr \"在 %s 的使用者名稱：\"\n\n#: account.c:224\n#, c-format\nmsgid \"Password for %s@%s: \"\nmsgstr \"%s@%s 的密碼：\"\n\n#: addrbook.c:37 browser.c:46 pager.c:1532 postpone.c:41 query.c:48\n#: recvattach.c:53\nmsgid \"Exit\"\nmsgstr \"離開\"\n\n#: addrbook.c:38 curs_main.c:482 pager.c:1539 postpone.c:42\nmsgid \"Del\"\nmsgstr \"刪除\"\n\n#: addrbook.c:39 curs_main.c:483 postpone.c:43\nmsgid \"Undel\"\nmsgstr \"反刪除\"\n\n#: addrbook.c:40\nmsgid \"Select\"\nmsgstr \"選擇\"\n\n#: addrbook.c:41 browser.c:49 compose.c:96 crypt-gpgme.c:4022 curs_main.c:488\n#: mutt_ssl.c:1049 mutt_ssl_gnutls.c:1003 pager.c:1631 pgpkey.c:522\n#: postpone.c:44 query.c:53 recvattach.c:57 smime.c:439\nmsgid \"Help\"\nmsgstr \"求助\"\n\n#: addrbook.c:145\nmsgid \"You have no aliases!\"\nmsgstr \"您沒有別名資料！\"\n\n#: addrbook.c:155\nmsgid \"Aliases\"\nmsgstr \"別名\"\n\n#. L10N: prompt to add a new alias\n#: alias.c:260\nmsgid \"Alias as: \"\nmsgstr \"取別名為：\"\n\n#: alias.c:266\nmsgid \"You already have an alias defined with that name!\"\nmsgstr \"您已經為這個名字定義了別名啦！\"\n\n#: alias.c:272\nmsgid \"Warning: This alias name may not work.  Fix it?\"\nmsgstr \"警告：這個別名可能無效。要修正它？\"\n\n#: alias.c:297\nmsgid \"Address: \"\nmsgstr \"地址：\"\n\n#: alias.c:307 send.c:206\n#, c-format\nmsgid \"Error: '%s' is a bad IDN.\"\nmsgstr \"錯誤：「%s」是無效的 IDN。\"\n\n#: alias.c:319\nmsgid \"Personal name: \"\nmsgstr \"個人姓名：\"\n\n#: alias.c:328\n#, c-format\nmsgid \"[%s = %s] Accept?\"\nmsgstr \"[%s = %s] 接受?\"\n\n#: alias.c:347 recvattach.c:440 recvattach.c:466 recvattach.c:479\n#: recvattach.c:492 recvattach.c:522\nmsgid \"Save to file: \"\nmsgstr \"存到檔案：\"\n\n#: alias.c:361\n#, fuzzy\nmsgid \"Error reading alias file\"\nmsgstr \"讀取信件時發生錯誤！\"\n\n#: alias.c:383\nmsgid \"Alias added.\"\nmsgstr \"別名已經增加。\"\n\n#: alias.c:391\n#, fuzzy\nmsgid \"Error seeking in alias file\"\nmsgstr \"無法試著顯示檔案\"\n\n#: attach.c:113 attach.c:245 attach.c:400 attach.c:925\nmsgid \"Can't match nametemplate, continue?\"\nmsgstr \"無法配合二個同樣名稱，繼續？\"\n\n#: attach.c:126\n#, c-format\nmsgid \"Mailcap compose entry requires %%s\"\nmsgstr \"Mailcap 編輯項目需要 %%s\"\n\n#: attach.c:134 attach.c:266 commands.c:223 compose.c:1207 curs_lib.c:196\n#: curs_lib.c:569\n#, c-format\nmsgid \"Error running \\\"%s\\\"!\"\nmsgstr \"執行 \\\"%s\\\" 時發生錯誤！\"\n\n#: attach.c:144\nmsgid \"Failure to open file to parse headers.\"\nmsgstr \"開啟檔案來分析檔頭失敗。\"\n\n#: attach.c:175\nmsgid \"Failure to open file to strip headers.\"\nmsgstr \"開啟檔案時去除檔案標頭失敗。\"\n\n#: attach.c:184\n#, fuzzy\nmsgid \"Failure to rename file.\"\nmsgstr \"開啟檔案來分析檔頭失敗。\"\n\n#: attach.c:197\n#, c-format\nmsgid \"No mailcap compose entry for %s, creating empty file.\"\nmsgstr \"沒有 %s 的 mailcap 組成登錄，正在建立空的檔案。\"\n\n#: attach.c:258\n#, c-format\nmsgid \"Mailcap Edit entry requires %%s\"\nmsgstr \"編輯 Mailcap 項目時需要 %%s\"\n\n#: attach.c:280\n#, c-format\nmsgid \"No mailcap edit entry for %s\"\nmsgstr \"沒有 %s 的 mailcap 編輯登錄\"\n\n#: attach.c:366\nmsgid \"No matching mailcap entry found.  Viewing as text.\"\nmsgstr \"沒有發現配合 mailcap 的登錄。將以文字檔方式瀏覽。\"\n\n#: attach.c:379\nmsgid \"MIME type not defined.  Cannot view attachment.\"\nmsgstr \"MIME 形式未被定義. 無法顯示附件內容。\"\n\n#: attach.c:469\nmsgid \"Cannot create filter\"\nmsgstr \"無法建立過濾器\"\n\n#: attach.c:477\n#, c-format\nmsgid \"---Command: %-20.20s Description: %s\"\nmsgstr \"\"\n\n#: attach.c:481\n#, c-format\nmsgid \"---Command: %-30.30s Attachment: %s\"\nmsgstr \"\"\n\n#: attach.c:558\n#, fuzzy, c-format\nmsgid \"---Attachment: %s: %s\"\nmsgstr \"-- 附件\"\n\n#: attach.c:561\n#, fuzzy, c-format\nmsgid \"---Attachment: %s\"\nmsgstr \"-- 附件\"\n\n#: attach.c:631 attach.c:663 attach.c:958 attach.c:1016 handler.c:1362\n#: pgpkey.c:571 pgpkey.c:760\nmsgid \"Can't create filter\"\nmsgstr \"無法建立過濾器\"\n\n#: attach.c:797\nmsgid \"Write fault!\"\nmsgstr \"寫入失敗！\"\n\n#: attach.c:1039\nmsgid \"I don't know how to print that!\"\nmsgstr \"我不知道要如何列印它！\"\n\n#: browser.c:47\nmsgid \"Chdir\"\nmsgstr \"改變目錄\"\n\n#: browser.c:48\nmsgid \"Mask\"\nmsgstr \"遮罩\"\n\n#: browser.c:400 browser.c:1055\n#, c-format\nmsgid \"%s is not a directory.\"\nmsgstr \"%s 不是一個目錄。\"\n\n#: browser.c:539\n#, c-format\nmsgid \"Mailboxes [%d]\"\nmsgstr \"信箱 [%d]\"\n\n#: browser.c:546\n#, c-format\nmsgid \"Subscribed [%s], File mask: %s\"\nmsgstr \"已訂閱 [%s], 檔案遮罩: %s\"\n\n#: browser.c:550\n#, c-format\nmsgid \"Directory [%s], File mask: %s\"\nmsgstr \"目錄 [%s], 檔案遮罩: %s\"\n\n#: browser.c:562\nmsgid \"Can't attach a directory!\"\nmsgstr \"無法附帶目錄！\"\n\n#: browser.c:701 browser.c:1123 browser.c:1221\nmsgid \"No files match the file mask\"\nmsgstr \"沒有檔案與檔案遮罩相符\"\n\n#: browser.c:905\nmsgid \"Create is only supported for IMAP mailboxes\"\nmsgstr \"只有 IMAP 郵箱才支援製造功能\"\n\n#: browser.c:929\n#, fuzzy\nmsgid \"Rename is only supported for IMAP mailboxes\"\nmsgstr \"只有 IMAP 郵箱才支援製造功能\"\n\n#: browser.c:952\nmsgid \"Delete is only supported for IMAP mailboxes\"\nmsgstr \"只有 IMAP 郵箱才支援刪除功能\"\n\n#: browser.c:962\n#, fuzzy\nmsgid \"Cannot delete root folder\"\nmsgstr \"無法建立過濾器\"\n\n#: browser.c:965\n#, c-format\nmsgid \"Really delete mailbox \\\"%s\\\"?\"\nmsgstr \"真的要刪除 \\\"%s\\\" 郵箱？\"\n\n#: browser.c:979\nmsgid \"Mailbox deleted.\"\nmsgstr \"郵箱已刪除。\"\n\n#: browser.c:985\nmsgid \"Mailbox not deleted.\"\nmsgstr \"郵箱未被刪除。\"\n\n#: browser.c:1004\nmsgid \"Chdir to: \"\nmsgstr \"改變目錄到：\"\n\n#: browser.c:1043 browser.c:1116\nmsgid \"Error scanning directory.\"\nmsgstr \"無法掃描目錄。\"\n\n#: browser.c:1067\nmsgid \"File Mask: \"\nmsgstr \"檔案遮罩：\"\n\n#: browser.c:1139\nmsgid \"Reverse sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"反向排序 (1)日期, (2)字元, (3)大小 或 (4)不排序 ? \"\n\n#: browser.c:1140\nmsgid \"Sort by (d)ate, (a)lpha, si(z)e or do(n)'t sort? \"\nmsgstr \"依照 (1)日期 (2)字元 (3)大小 來排序，或(4)不排序 ? \"\n\n#: browser.c:1141\nmsgid \"dazn\"\nmsgstr \"1234\"\n\n#: browser.c:1208\nmsgid \"New file name: \"\nmsgstr \"新檔名：\"\n\n#: browser.c:1239\nmsgid \"Can't view a directory\"\nmsgstr \"無法顯示目錄\"\n\n#: browser.c:1256\nmsgid \"Error trying to view file\"\nmsgstr \"無法試著顯示檔案\"\n\n#: buffy.c:504\n#, fuzzy\nmsgid \"New mail in \"\nmsgstr \"在 %s 有新信件。\"\n\n#: color.c:328\n#, c-format\nmsgid \"%s: color not supported by term\"\nmsgstr \"%s：終端機無法顯示色彩\"\n\n#: color.c:334\n#, c-format\nmsgid \"%s: no such color\"\nmsgstr \"%s：沒有這種顏色\"\n\n#: color.c:398 color.c:604 color.c:615\n#, c-format\nmsgid \"%s: no such object\"\nmsgstr \"%s：沒有這個物件\"\n\n#: color.c:411\n#, fuzzy, c-format\nmsgid \"%s: command valid only for index, body, header objects\"\nmsgstr \"%s：命令只提供索引物件\"\n\n#: color.c:419\n#, c-format\nmsgid \"%s: too few arguments\"\nmsgstr \"%s：太少參數\"\n\n#: color.c:592\nmsgid \"Missing arguments.\"\nmsgstr \"缺少參數。\"\n\n#: color.c:631 color.c:642\nmsgid \"color: too few arguments\"\nmsgstr \"色彩：太少引數\"\n\n#: color.c:665\nmsgid \"mono: too few arguments\"\nmsgstr \"單色：太少引數\"\n\n#: color.c:685\n#, c-format\nmsgid \"%s: no such attribute\"\nmsgstr \"%s：沒有這個屬性\"\n\n#: color.c:725 hook.c:69 hook.c:77 keymap.c:917\nmsgid \"too few arguments\"\nmsgstr \"太少參數\"\n\n#: color.c:734 hook.c:83\nmsgid \"too many arguments\"\nmsgstr \"太多參數\"\n\n#: color.c:750\nmsgid \"default colors not supported\"\nmsgstr \"不支援預設的色彩\"\n\n#: commands.c:90\nmsgid \"Verify PGP signature?\"\nmsgstr \"檢查 PGP 簽名?\"\n\n#: commands.c:115 mbox.c:786\nmsgid \"Could not create temporary file!\"\nmsgstr \"無法建立暫存檔！\"\n\n#: commands.c:128\nmsgid \"Cannot create display filter\"\nmsgstr \"無法建立顯示過濾器\"\n\n#: commands.c:152\nmsgid \"Could not copy message\"\nmsgstr \"無法複制信件\"\n\n#: commands.c:189\n#, fuzzy\nmsgid \"S/MIME signature successfully verified.\"\nmsgstr \"S/MIME 簽名驗證成功。\"\n\n#: commands.c:191\nmsgid \"S/MIME certificate owner does not match sender.\"\nmsgstr \"\"\n\n#: commands.c:194 commands.c:205\nmsgid \"Warning: Part of this message has not been signed.\"\nmsgstr \"\"\n\n#: commands.c:196\n#, fuzzy\nmsgid \"S/MIME signature could NOT be verified.\"\nmsgstr \"S/MIME 簽名無法驗證。\"\n\n#: commands.c:203\nmsgid \"PGP signature successfully verified.\"\nmsgstr \"PGP 簽名驗證成功。\"\n\n#: commands.c:207\nmsgid \"PGP signature could NOT be verified.\"\nmsgstr \"PGP 簽名無法驗證。\"\n\n#: commands.c:231\nmsgid \"Command: \"\nmsgstr \"指令：\"\n\n#: commands.c:256 commands.c:266 recvcmd.c:148 recvcmd.c:161\nmsgid \"Warning: message contains no From: header\"\nmsgstr \"\"\n\n#: commands.c:274 recvcmd.c:171\nmsgid \"Bounce message to: \"\nmsgstr \"直接傳送郵件到：\"\n\n#: commands.c:276 recvcmd.c:173\nmsgid \"Bounce tagged messages to: \"\nmsgstr \"無法傳送已標記的郵件至：\"\n\n#: commands.c:291 recvcmd.c:182\nmsgid \"Error parsing address!\"\nmsgstr \"無法分析位址！\"\n\n#: commands.c:299 recvcmd.c:190\n#, c-format\nmsgid \"Bad IDN: '%s'\"\nmsgstr \"無效的 IDN：「%s」\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce message to %s\"\nmsgstr \"把郵件直接傳送至 %s\"\n\n#: commands.c:310 recvcmd.c:204\n#, c-format\nmsgid \"Bounce messages to %s\"\nmsgstr \"把郵件直接傳送至 %s\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Message not bounced.\"\nmsgstr \"郵件已被傳送。\"\n\n#: commands.c:326 recvcmd.c:220\n#, fuzzy\nmsgid \"Messages not bounced.\"\nmsgstr \"郵件已傳送。\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Message bounced.\"\nmsgstr \"郵件已被傳送。\"\n\n#: commands.c:336 recvcmd.c:239\nmsgid \"Messages bounced.\"\nmsgstr \"郵件已傳送。\"\n\n#: commands.c:413 commands.c:447 commands.c:464\nmsgid \"Can't create filter process\"\nmsgstr \"無法啟動過濾程序\"\n\n#: commands.c:493\nmsgid \"Pipe to command: \"\nmsgstr \"用管道輸出至命令：\"\n\n#: commands.c:510\nmsgid \"No printing command has been defined.\"\nmsgstr \"沒有定義列印指令。\"\n\n#: commands.c:515\nmsgid \"Print message?\"\nmsgstr \"列印信件？\"\n\n#: commands.c:515\nmsgid \"Print tagged messages?\"\nmsgstr \"列印已標記的信件？\"\n\n#: commands.c:524\nmsgid \"Message printed\"\nmsgstr \"信件已印出\"\n\n#: commands.c:524\nmsgid \"Messages printed\"\nmsgstr \"信件已印出\"\n\n#: commands.c:526\nmsgid \"Message could not be printed\"\nmsgstr \"信件未能列印出來\"\n\n#: commands.c:527\nmsgid \"Messages could not be printed\"\nmsgstr \"信件未能列印出來\"\n\n#: commands.c:536\n#, fuzzy\nmsgid \"\"\n\"Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"反方向 1)日期 2)發信人 3)收信時間 4)標題 5)收信人 6)序列 7)不排 8)大小 9)分\"\n\"數:\"\n\n#: commands.c:537\n#, fuzzy\nmsgid \"\"\n\"Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/\"\n\"s(p)am?: \"\nmsgstr \"\"\n\"排序 1)日期 2)發信人 3)收信時間 4)標題 5)收信人 6)序列 7)不排序 8)大小 9)分\"\n\"數:\"\n\n#: commands.c:538\n#, fuzzy\nmsgid \"dfrsotuzcp\"\nmsgstr \"123456789\"\n\n#: commands.c:595\nmsgid \"Shell command: \"\nmsgstr \"Shell 指令：\"\n\n#: commands.c:741\n#, fuzzy, c-format\nmsgid \"Decode-save%s to mailbox\"\nmsgstr \"%s%s 到信箱\"\n\n#: commands.c:742\n#, fuzzy, c-format\nmsgid \"Decode-copy%s to mailbox\"\nmsgstr \"%s%s 到信箱\"\n\n#: commands.c:743\n#, fuzzy, c-format\nmsgid \"Decrypt-save%s to mailbox\"\nmsgstr \"%s%s 到信箱\"\n\n#: commands.c:744\n#, fuzzy, c-format\nmsgid \"Decrypt-copy%s to mailbox\"\nmsgstr \"%s%s 到信箱\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Save%s to mailbox\"\nmsgstr \"%s%s 到信箱\"\n\n#: commands.c:745\n#, fuzzy, c-format\nmsgid \"Copy%s to mailbox\"\nmsgstr \"%s%s 到信箱\"\n\n#: commands.c:746\nmsgid \" tagged\"\nmsgstr \" 已標記\"\n\n#: commands.c:819\n#, c-format\nmsgid \"Copying to %s...\"\nmsgstr \"拷貝到 %s…\"\n\n#: commands.c:935\n#, c-format\nmsgid \"Convert to %s upon sending?\"\nmsgstr \"送出的時候轉換字符集為 %s ？\"\n\n#: commands.c:945\n#, c-format\nmsgid \"Content-Type changed to %s.\"\nmsgstr \"Content-Type 被改為 %s。\"\n\n#: commands.c:950\n#, c-format\nmsgid \"Character set changed to %s; %s.\"\nmsgstr \"字符集已換為 %s; %s。\"\n\n#: commands.c:952\nmsgid \"not converting\"\nmsgstr \"沒有轉換\"\n\n#: commands.c:952\nmsgid \"converting\"\nmsgstr \"轉換中\"\n\n#: compose.c:47\nmsgid \"There are no attachments.\"\nmsgstr \"沒有附件。\"\n\n#: compose.c:89\nmsgid \"Send\"\nmsgstr \"寄出\"\n\n#: compose.c:90 remailer.c:481\nmsgid \"Abort\"\nmsgstr \"中斷\"\n\n#: compose.c:94 compose.c:685\nmsgid \"Attach file\"\nmsgstr \"附加檔案\"\n\n#: compose.c:95\nmsgid \"Descrip\"\nmsgstr \"敘述\"\n\n#: compose.c:117\n#, fuzzy\nmsgid \"Not supported\"\nmsgstr \"不支援標記功能。\"\n\n#: compose.c:122\nmsgid \"Sign, Encrypt\"\nmsgstr \"簽名，加密\"\n\n#: compose.c:124\nmsgid \"Encrypt\"\nmsgstr \"加密\"\n\n#: compose.c:126\nmsgid \"Sign\"\nmsgstr \"簽名\"\n\n#: compose.c:128\nmsgid \"None\"\nmsgstr \"\"\n\n#: compose.c:135\n#, fuzzy\nmsgid \" (inline PGP)\"\nmsgstr \"（繼續）\\n\"\n\n#: compose.c:137\nmsgid \" (PGP/MIME)\"\nmsgstr \"\"\n\n#: compose.c:141\nmsgid \" (S/MIME)\"\nmsgstr \"\"\n\n#: compose.c:145\nmsgid \" (OppEnc mode)\"\nmsgstr \"\"\n\n#: compose.c:153 compose.c:157\nmsgid \" sign as: \"\nmsgstr \" 簽名的身份是： \"\n\n#: compose.c:153 compose.c:157\nmsgid \"<default>\"\nmsgstr \"<預設值>\"\n\n#: compose.c:165\n#, fuzzy\nmsgid \"Encrypt with: \"\nmsgstr \"加密\"\n\n#: compose.c:218\n#, c-format\nmsgid \"%s [#%d] no longer exists!\"\nmsgstr \"%s [#%d] 已不存在!\"\n\n#: compose.c:226\n#, c-format\nmsgid \"%s [#%d] modified. Update encoding?\"\nmsgstr \"%s [#%d] 已修改。更新編碼？\"\n\n#: compose.c:269\nmsgid \"-- Attachments\"\nmsgstr \"-- 附件\"\n\n#: compose.c:297\n#, c-format\nmsgid \"Warning: '%s' is a bad IDN.\"\nmsgstr \"警告：「%s」為無效的 IDN。\"\n\n#: compose.c:320\nmsgid \"You may not delete the only attachment.\"\nmsgstr \"您不可以刪除唯一的附件。\"\n\n#: compose.c:613 send.c:1680\n#, c-format\nmsgid \"Bad IDN in \\\"%s\\\": '%s'\"\nmsgstr \"「%s」中有無效的 IDN：「%s」\"\n\n#: compose.c:701\nmsgid \"Attaching selected files...\"\nmsgstr \"正在附加選取了的檔案…\"\n\n#: compose.c:713\n#, c-format\nmsgid \"Unable to attach %s!\"\nmsgstr \"無法附加 %s！\"\n\n#: compose.c:732\nmsgid \"Open mailbox to attach message from\"\nmsgstr \"開啟信箱並從它選擇附加的信件\"\n\n#: compose.c:762\n#, fuzzy, c-format\nmsgid \"Unable to open mailbox %s\"\nmsgstr \"無法鎖住信箱！\"\n\n#: compose.c:770\nmsgid \"No messages in that folder.\"\nmsgstr \"檔案夾中沒有信件。\"\n\n#: compose.c:779\nmsgid \"Tag the messages you want to attach!\"\nmsgstr \"請標記您要附加的信件！\"\n\n#: compose.c:811\nmsgid \"Unable to attach!\"\nmsgstr \"無法附加！\"\n\n#: compose.c:862\nmsgid \"Recoding only affects text attachments.\"\nmsgstr \"重新編碼只影響文字附件。\"\n\n#: compose.c:867\nmsgid \"The current attachment won't be converted.\"\nmsgstr \"這個附件不會被轉換。\"\n\n#: compose.c:869\nmsgid \"The current attachment will be converted.\"\nmsgstr \"這個附件會被轉換。\"\n\n#: compose.c:944\nmsgid \"Invalid encoding.\"\nmsgstr \"無效的編碼。\"\n\n#: compose.c:970\nmsgid \"Save a copy of this message?\"\nmsgstr \"儲存這封信件的拷貝嗎？\"\n\n#: compose.c:1026\nmsgid \"Rename to: \"\nmsgstr \"更改名稱為：\"\n\n#. L10N:\n#. \"stat\" is a system call. Do \"man 2 stat\" for more information.\n#: compose.c:1033 editmsg.c:96 editmsg.c:121 sendlib.c:872\n#, fuzzy, c-format\nmsgid \"Can't stat %s: %s\"\nmsgstr \"無法讀取：%s\"\n\n#: compose.c:1060\nmsgid \"New file: \"\nmsgstr \"建立新檔：\"\n\n#: compose.c:1073\nmsgid \"Content-Type is of the form base/sub\"\nmsgstr \"Content-Type 的格式是 base/sub\"\n\n#: compose.c:1079\n#, c-format\nmsgid \"Unknown Content-Type %s\"\nmsgstr \"不明的 Content-Type %s\"\n\n#: compose.c:1092\n#, c-format\nmsgid \"Can't create file %s\"\nmsgstr \"無法建立檔案 %s\"\n\n#: compose.c:1100\nmsgid \"What we have here is a failure to make an attachment\"\nmsgstr \"我們無法加上附件\"\n\n#: compose.c:1161\nmsgid \"Postpone this message?\"\nmsgstr \"延遲寄出這封信件？\"\n\n#: compose.c:1225\nmsgid \"Write message to mailbox\"\nmsgstr \"將信件寫入到信箱\"\n\n#: compose.c:1228\n#, c-format\nmsgid \"Writing message to %s ...\"\nmsgstr \"寫入信件到 %s …\"\n\n#: compose.c:1237\nmsgid \"Message written.\"\nmsgstr \"信件已寫入。\"\n\n#: compose.c:1251\nmsgid \"S/MIME already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: compose.c:1284\nmsgid \"PGP already selected. Clear & continue ? \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:393\n#, fuzzy, c-format\nmsgid \"error creating gpgme context: %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:403\n#, c-format\nmsgid \"error enabling CMS protocol: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:423\n#, fuzzy, c-format\nmsgid \"error creating gpgme data object: %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:489 crypt-gpgme.c:507 crypt-gpgme.c:1538 crypt-gpgme.c:2248\n#, fuzzy, c-format\nmsgid \"error allocating data object: %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:525\n#, fuzzy, c-format\nmsgid \"error rewinding data object: %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:547 crypt-gpgme.c:600\n#, fuzzy, c-format\nmsgid \"error reading data object: %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:573 crypt-gpgme.c:3636 pgpkey.c:559 pgpkey.c:740\nmsgid \"Can't create temporary file\"\nmsgstr \"無法建立暫存檔\"\n\n#: crypt-gpgme.c:683\n#, fuzzy, c-format\nmsgid \"error adding recipient `%s': %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:723\n#, c-format\nmsgid \"secret key `%s' not found: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:733\n#, c-format\nmsgid \"ambiguous specification of secret key `%s'\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:745\n#, c-format\nmsgid \"error setting secret key `%s': %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:762\n#, fuzzy, c-format\nmsgid \"error setting PKA signature notation: %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:818\n#, fuzzy, c-format\nmsgid \"error encrypting data: %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:937\n#, fuzzy, c-format\nmsgid \"error signing data: %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:948\nmsgid \"$pgp_sign_as unset and no default key specified in ~/.gnupg/gpg.conf\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1144\nmsgid \"Warning: One of the keys has been revoked\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1153\nmsgid \"Warning: The key used to create the signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1159\n#, fuzzy\nmsgid \"Warning: At least one certification key has expired\\n\"\nmsgstr \"伺服器的驗証已過期\"\n\n#: crypt-gpgme.c:1175\nmsgid \"Warning: The signature expired at: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1181\nmsgid \"Can't verify due to a missing key or certificate\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1186\n#, fuzzy\nmsgid \"The CRL is not available\\n\"\nmsgstr \"沒有 SSL 功能\"\n\n#: crypt-gpgme.c:1192\nmsgid \"Available CRL is too old\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1197\nmsgid \"A policy requirement was not met\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1206\nmsgid \"A system error occurred\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1240\nmsgid \"WARNING: PKA entry does not match signer's address: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1247\nmsgid \"PKA verified signer's address is: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:1264 crypt-gpgme.c:3467\n#, fuzzy\nmsgid \"Fingerprint: \"\nmsgstr \"指模：%s\"\n\n#: crypt-gpgme.c:1324\nmsgid \"\"\n\"WARNING: We have NO indication whether the key belongs to the person named \"\n\"as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1331\nmsgid \"WARNING: The key does NOT BELONG to the person named as shown above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1335\nmsgid \"\"\n\"WARNING: It is NOT certain that the key belongs to the person named as shown \"\n\"above\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1370\nmsgid \"aka: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1380\nmsgid \"KeyID \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1390\n#, fuzzy\nmsgid \"created: \"\nmsgstr \"建立 %s？\"\n\n#: crypt-gpgme.c:1462\n#, c-format\nmsgid \"Error getting key information for KeyID %s: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1469 crypt-gpgme.c:1484\nmsgid \"Good signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1476\nmsgid \"*BAD* signature from:\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1492\nmsgid \"Problem signature from:\"\nmsgstr \"\"\n\n#. L10N:\n#. This is trying to match the width of the\n#. \"Problem signature from:\" translation just above.\n#: crypt-gpgme.c:1499\nmsgid \"               expires: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1546 crypt-gpgme.c:1764 crypt-gpgme.c:2465\nmsgid \"[-- Begin signature information --]\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1558\n#, fuzzy, c-format\nmsgid \"Error: verification failed: %s\\n\"\nmsgstr \"指令行有錯：%s\\n\"\n\n#: crypt-gpgme.c:1607\n#, c-format\nmsgid \"*** Begin Notation (signature by: %s) ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1629\nmsgid \"*** End Notation ***\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:1637 crypt-gpgme.c:1777 crypt-gpgme.c:2478\n#, fuzzy\nmsgid \"\"\n\"[-- End signature information --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- 簽署的資料結束 --]\\n\"\n\n#: crypt-gpgme.c:1732\n#, fuzzy, c-format\nmsgid \"\"\n\"[-- Error: decryption failed: %s --]\\n\"\n\"\\n\"\nmsgstr \"[-- 錯誤：突發的檔尾！ --]\\n\"\n\n#: crypt-gpgme.c:2255\n#, fuzzy\nmsgid \"Error extracting key data!\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: crypt-gpgme.c:2441\n#, c-format\nmsgid \"Error: decryption/verification failed: %s\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2486\nmsgid \"Error: copy data failed\\n\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:2507 pgp.c:519\nmsgid \"\"\n\"[-- BEGIN PGP MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP 信件開始 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2509 pgp.c:521\nmsgid \"[-- BEGIN PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP 公共鑰匙區段開始 --]\\n\"\n\n#: crypt-gpgme.c:2512 pgp.c:523\nmsgid \"\"\n\"[-- BEGIN PGP SIGNED MESSAGE --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP 簽名的信件開始 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2539 pgp.c:566\n#, fuzzy\nmsgid \"[-- END PGP MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- PGP 信件結束 --]\\n\"\n\n#: crypt-gpgme.c:2541 pgp.c:573\nmsgid \"[-- END PGP PUBLIC KEY BLOCK --]\\n\"\nmsgstr \"[-- PGP 公共鑰匙區段結束 --]\\n\"\n\n#: crypt-gpgme.c:2543 pgp.c:575\n#, fuzzy\nmsgid \"[-- END PGP SIGNED MESSAGE --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- PGP 簽名的信件結束 --]\\n\"\n\n#: crypt-gpgme.c:2566 pgp.c:608\nmsgid \"\"\n\"[-- Error: could not find beginning of PGP message! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 錯誤：找不到 PGP 信件的開頭！ --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2597 crypt-gpgme.c:2670 pgp.c:1091\nmsgid \"[-- Error: could not create temporary file! --]\\n\"\nmsgstr \"[-- 錯誤：無法建立暫存檔！ --]\\n\"\n\n#: crypt-gpgme.c:2609\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is PGP/MIME signed and encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 下面是 PGP/MIME 加密資料 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2610 pgp.c:1100\nmsgid \"\"\n\"[-- The following data is PGP/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 下面是 PGP/MIME 加密資料 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2632\n#, fuzzy\nmsgid \"[-- End of PGP/MIME signed and encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- PGP/MIME 加密資料結束 --]\\n\"\n\n#: crypt-gpgme.c:2633 pgp.c:1120\n#, fuzzy\nmsgid \"[-- End of PGP/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- PGP/MIME 加密資料結束 --]\\n\"\n\n#: crypt-gpgme.c:2638 pgp.c:570 pgp.c:1125\n#, fuzzy\nmsgid \"PGP message successfully decrypted.\"\nmsgstr \"PGP 簽名驗證成功。\"\n\n#: crypt-gpgme.c:2642 pgp.c:505 pgp.c:568 pgp.c:1129\n#, fuzzy\nmsgid \"Could not decrypt PGP message\"\nmsgstr \"無法複制信件\"\n\n#: crypt-gpgme.c:2682\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 以下的資料已被簽署 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2683\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is S/MIME encrypted --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 下面是 S/MIME 加密資料 --]\\n\"\n\"\\n\"\n\n#: crypt-gpgme.c:2713\n#, fuzzy\nmsgid \"[-- End of S/MIME signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- 簽署的資料結束 --]\\n\"\n\n#: crypt-gpgme.c:2714\n#, fuzzy\nmsgid \"[-- End of S/MIME encrypted data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME 加密資料結束 --]\\n\"\n\n#: crypt-gpgme.c:3298\nmsgid \"[Can't display this user ID (unknown encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3300\nmsgid \"[Can't display this user ID (invalid encoding)]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3305\nmsgid \"[Can't display this user ID (invalid DN)]\"\nmsgstr \"\"\n\n#. L10N:\n#. Fill dots to make the DOTFILL entries the same length.\n#. In English, msgid \"Fingerprint: \" is the longest entry for this menu.\n#. Your language may vary.\n#: crypt-gpgme.c:3388\nmsgid \" aka ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3388\nmsgid \"Name ......: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3391 crypt-gpgme.c:3538\n#, fuzzy\nmsgid \"[Invalid]\"\nmsgstr \"無效的月份：%s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3412 crypt-gpgme.c:3563\n#, fuzzy, c-format\nmsgid \"Valid From : %s\\n\"\nmsgstr \"無效的月份：%s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3426 crypt-gpgme.c:3577\n#, fuzzy, c-format\nmsgid \"Valid To ..: %s\\n\"\nmsgstr \"無效的月份：%s\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3440 crypt-gpgme.c:3591\n#, c-format\nmsgid \"Key Type ..: %s, %lu bit %s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3443 crypt-gpgme.c:3594\n#, c-format\nmsgid \"Key Usage .: \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3448 crypt-gpgme.c:3599\n#, fuzzy\nmsgid \"encryption\"\nmsgstr \"加密\"\n\n#: crypt-gpgme.c:3449 crypt-gpgme.c:3454 crypt-gpgme.c:3459 crypt-gpgme.c:3600\n#: crypt-gpgme.c:3605 crypt-gpgme.c:3610\nmsgid \", \"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3453 crypt-gpgme.c:3604\nmsgid \"signing\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3458 crypt-gpgme.c:3609\n#, fuzzy\nmsgid \"certification\"\nmsgstr \"驗証已儲存\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3500\n#, c-format\nmsgid \"Serial-No .: 0x%s\\n\"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3509\n#, c-format\nmsgid \"Issued By .: \"\nmsgstr \"\"\n\n#. L10N: DOTFILL\n#: crypt-gpgme.c:3529\n#, fuzzy, c-format\nmsgid \"Subkey ....: 0x%s\"\nmsgstr \"鑰匙 ID：0x%s\"\n\n#: crypt-gpgme.c:3533\nmsgid \"[Revoked]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3543\n#, fuzzy\nmsgid \"[Expired]\"\nmsgstr \"離開  \"\n\n#: crypt-gpgme.c:3548\nmsgid \"[Disabled]\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3639\n#, fuzzy\nmsgid \"Collecting data...\"\nmsgstr \"正連接到 %s…\"\n\n#: crypt-gpgme.c:3665\n#, fuzzy, c-format\nmsgid \"Error finding issuer key: %s\\n\"\nmsgstr \"連線到 %s 時失敗\"\n\n#: crypt-gpgme.c:3675\n#, fuzzy\nmsgid \"Error: certification chain too long - stopping here\\n\"\nmsgstr \"指令行有錯：%s\\n\"\n\n#: crypt-gpgme.c:3686 pgpkey.c:581\n#, c-format\nmsgid \"Key ID: 0x%s\"\nmsgstr \"鑰匙 ID：0x%s\"\n\n#: crypt-gpgme.c:3769\n#, fuzzy, c-format\nmsgid \"gpgme_new failed: %s\"\nmsgstr \"登入失敗： %s\"\n\n#: crypt-gpgme.c:3808 crypt-gpgme.c:3883\n#, c-format\nmsgid \"gpgme_op_keylist_start failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3870 crypt-gpgme.c:3914\n#, c-format\nmsgid \"gpgme_op_keylist_next failed: %s\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:3985\n#, fuzzy\nmsgid \"All matching keys are marked expired/revoked.\"\nmsgstr \"所有符合的鑰匙經已過期或取消。\"\n\n#: crypt-gpgme.c:4014 mutt_ssl.c:1047 mutt_ssl_gnutls.c:1001 pgpkey.c:515\n#: smime.c:434\nmsgid \"Exit  \"\nmsgstr \"離開  \"\n\n#: crypt-gpgme.c:4016 pgpkey.c:517 smime.c:436\nmsgid \"Select  \"\nmsgstr \"選擇    \"\n\n#: crypt-gpgme.c:4019 pgpkey.c:520\nmsgid \"Check key  \"\nmsgstr \"檢查鑰匙   \"\n\n#: crypt-gpgme.c:4035\n#, fuzzy\nmsgid \"PGP and S/MIME keys matching\"\nmsgstr \"PGP 鑰匙符合 <%s>。\"\n\n#: crypt-gpgme.c:4037\n#, fuzzy\nmsgid \"PGP keys matching\"\nmsgstr \"PGP 鑰匙符合 <%s>。\"\n\n#: crypt-gpgme.c:4039\n#, fuzzy\nmsgid \"S/MIME keys matching\"\nmsgstr \"S/MIME 鑰匙符合 <%s>。\"\n\n#: crypt-gpgme.c:4041\n#, fuzzy\nmsgid \"keys matching\"\nmsgstr \"PGP 鑰匙符合 <%s>。\"\n\n#. L10N:\n#. %1$s is one of the previous four entries.\n#. %2$s is an address.\n#. e.g. \"S/MIME keys matching <me@mutt.org>.\"\n#: crypt-gpgme.c:4048\n#, fuzzy, c-format\nmsgid \"%s <%s>.\"\nmsgstr \"%s 【%s】\\n\"\n\n#. L10N:\n#. e.g. 'S/MIME keys matching \"Michael Elkins\".'\n#: crypt-gpgme.c:4052\n#, fuzzy, c-format\nmsgid \"%s \\\"%s\\\".\"\nmsgstr \"%s 【%s】\\n\"\n\n#: crypt-gpgme.c:4079 pgpkey.c:601\nmsgid \"This key can't be used: expired/disabled/revoked.\"\nmsgstr \"這個鑰匙不能使用：過期/停用/已取消。\"\n\n#: crypt-gpgme.c:4093 pgpkey.c:613 smime.c:466\n#, fuzzy\nmsgid \"ID is expired/disabled/revoked.\"\nmsgstr \"這個 ID 已過期/停用/取消。\"\n\n#: crypt-gpgme.c:4101 pgpkey.c:617 smime.c:469\nmsgid \"ID has undefined validity.\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4104 pgpkey.c:620\n#, fuzzy\nmsgid \"ID is not valid.\"\nmsgstr \"這個 ID 不可接受。\"\n\n#: crypt-gpgme.c:4107 pgpkey.c:623\n#, fuzzy\nmsgid \"ID is only marginally valid.\"\nmsgstr \"此 ID 只是勉強可接受。\"\n\n#: crypt-gpgme.c:4116 pgpkey.c:627 smime.c:476\n#, c-format\nmsgid \"%s Do you really want to use the key?\"\nmsgstr \"%s 您真的要使用這個鑰匙？\"\n\n#: crypt-gpgme.c:4177 crypt-gpgme.c:4311 pgpkey.c:838 pgpkey.c:965\n#, c-format\nmsgid \"Looking for keys matching \\\"%s\\\"...\"\nmsgstr \"正找尋匹配 \\\"%s\\\" 的鑰匙…\"\n\n#: crypt-gpgme.c:4466 pgp.c:1304\n#, c-format\nmsgid \"Use keyID = \\\"%s\\\" for %s?\"\nmsgstr \"要為 %2$s 使用鑰匙 ID = \\\"%1$s\\\"？\"\n\n#: crypt-gpgme.c:4524 pgp.c:1353 smime.c:795 smime.c:901\n#, c-format\nmsgid \"Enter keyID for %s: \"\nmsgstr \"請輸入 %s 的鑰匙 ID：\"\n\n#: crypt-gpgme.c:4601 pgpkey.c:725\nmsgid \"Please enter the key ID: \"\nmsgstr \"請輸入這把鑰匙的 ID：\"\n\n#: crypt-gpgme.c:4614\n#, fuzzy, c-format\nmsgid \"Error exporting key: %s\\n\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#. L10N:\n#. MIME description for exported (attached) keys.\n#. You can translate this entry to a non-ASCII string (it will be encoded),\n#. but it may be safer to keep it untranslated.\n#: crypt-gpgme.c:4634\n#, fuzzy, c-format\nmsgid \"PGP Key 0x%s.\"\nmsgstr \"PGP 鑰匙 %s。\"\n\n#: crypt-gpgme.c:4676\nmsgid \"GPGME: OpenPGP protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4684\nmsgid \"GPGME: CMS protocol not available\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4721\n#, fuzzy\nmsgid \"S/MIME (s)ign, sign (a)s, (p)gp, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: crypt-gpgme.c:4726\nmsgid \"sapfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4731\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, s/(m)ime, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: crypt-gpgme.c:4732\nmsgid \"samfco\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4744\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: crypt-gpgme.c:4745\n#, fuzzy\nmsgid \"esabpfco\"\nmsgstr \"12345\"\n\n#: crypt-gpgme.c:4750\n#, fuzzy\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: crypt-gpgme.c:4751\n#, fuzzy\nmsgid \"esabmfco\"\nmsgstr \"12345\"\n\n#: crypt-gpgme.c:4762\n#, fuzzy\nmsgid \"S/MIME (e)ncrypt, (s)ign, sign (a)s, (b)oth, (p)gp or (c)lear? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: crypt-gpgme.c:4763\n#, fuzzy\nmsgid \"esabpfc\"\nmsgstr \"12345\"\n\n#: crypt-gpgme.c:4768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, s/(m)ime or (c)lear? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: crypt-gpgme.c:4769\n#, fuzzy\nmsgid \"esabmfc\"\nmsgstr \"12345\"\n\n#: crypt-gpgme.c:4794 pgp.c:1818 smime.c:2221 smime.c:2236\nmsgid \"Sign as: \"\nmsgstr \"簽名的身份是：\"\n\n#: crypt-gpgme.c:4929\nmsgid \"Failed to verify sender\"\nmsgstr \"\"\n\n#: crypt-gpgme.c:4932\n#, fuzzy\nmsgid \"Failed to figure out sender\"\nmsgstr \"開啟檔案來分析檔頭失敗。\"\n\n#: crypt.c:68\n#, c-format\nmsgid \" (current time: %c)\"\nmsgstr \"\"\n\n#: crypt.c:74\n#, fuzzy, c-format\nmsgid \"[-- %s output follows%s --]\\n\"\nmsgstr \"[-- 以下為 PGP 輸出的資料（現在時間：%c) --]\\n\"\n\n#: crypt.c:89\n#, fuzzy\nmsgid \"Passphrase(s) forgotten.\"\nmsgstr \"已忘記 PGP 通行密碼。\"\n\n#: crypt.c:149\nmsgid \"Inline PGP can't be used with attachments.  Revert to PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:151\nmsgid \"Mail not sent: inline PGP can't be used with attachments.\"\nmsgstr \"\"\n\n#: crypt.c:158 cryptglue.c:110 pgpkey.c:563 pgpkey.c:753\nmsgid \"Invoking PGP...\"\nmsgstr \"啟動 PGP…\"\n\n#: crypt.c:167\nmsgid \"Message can't be sent inline.  Revert to using PGP/MIME?\"\nmsgstr \"\"\n\n#: crypt.c:169 send.c:1608\nmsgid \"Mail not sent.\"\nmsgstr \"信件沒有寄出。\"\n\n#: crypt.c:482\nmsgid \"S/MIME messages with no hints on content are unsupported.\"\nmsgstr \"\"\n\n#: crypt.c:702 crypt.c:746\nmsgid \"Trying to extract PGP keys...\\n\"\nmsgstr \"\"\n\n#: crypt.c:726 crypt.c:766\nmsgid \"Trying to extract S/MIME certificates...\\n\"\nmsgstr \"\"\n\n#: crypt.c:913\n#, c-format\nmsgid \"\"\n\"[-- Error: Unknown multipart/signed protocol %s! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 錯誤：不明的 multipart/signed 協定 %s！ --]\\n\"\n\"\\n\"\n\n#: crypt.c:947\nmsgid \"\"\n\"[-- Error: Inconsistent multipart/signed structure! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 錯誤：不一致的 multipart/signed 結構！ --]\\n\"\n\"\\n\"\n\n#: crypt.c:986\n#, c-format\nmsgid \"\"\n\"[-- Warning: We can't verify %s/%s signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 警告：我們不能證實 %s/%s 簽名。 --]\\n\"\n\"\\n\"\n\n#: crypt.c:998\n#, fuzzy\nmsgid \"\"\n\"[-- The following data is signed --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 以下的資料已被簽署 --]\\n\"\n\"\\n\"\n\n#: crypt.c:1004\nmsgid \"\"\n\"[-- Warning: Can't find any signatures. --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 警告：找不到任何的簽名。 --]\\n\"\n\"\\n\"\n\n#: crypt.c:1010\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of signed data --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- 簽署的資料結束 --]\\n\"\n\n#: cryptglue.c:89\nmsgid \"\\\"crypt_use_gpgme\\\" set but not built with GPGME support.\"\nmsgstr \"\"\n\n#: cryptglue.c:112\n#, fuzzy\nmsgid \"Invoking S/MIME...\"\nmsgstr \"啟動 S/MIME…\"\n\n# Don't translate this!!\n#: curs_lib.c:210\nmsgid \"yes\"\nmsgstr \"\"\n\n# Don't translate this!!\n#: curs_lib.c:211\nmsgid \"no\"\nmsgstr \"\"\n\n#: curs_lib.c:318\nmsgid \"Exit Mutt?\"\nmsgstr \"離開 Mutt？\"\n\n#: curs_lib.c:521 mutt_socket.c:577 mutt_ssl.c:415\nmsgid \"unknown error\"\nmsgstr \"不明的錯誤\"\n\n#: curs_lib.c:541\nmsgid \"Press any key to continue...\"\nmsgstr \"按下任何鍵繼續…\"\n\n#: curs_lib.c:586\nmsgid \" ('?' for list): \"\nmsgstr \" (用 '?' 顯示列表)：\"\n\n#: curs_main.c:52 curs_main.c:694 curs_main.c:724\nmsgid \"No mailbox is open.\"\nmsgstr \"沒有已開啟的信箱。\"\n\n#: curs_main.c:53\nmsgid \"There are no messages.\"\nmsgstr \"沒有信件。\"\n\n#: curs_main.c:54 mx.c:1102 pager.c:51 recvattach.c:43\nmsgid \"Mailbox is read-only.\"\nmsgstr \"信箱是唯讀的。\"\n\n#: curs_main.c:55 pager.c:52 recvattach.c:924\nmsgid \"Function not permitted in attach-message mode.\"\nmsgstr \"功能在 attach-message 模式下不被支援。\"\n\n#: curs_main.c:56\nmsgid \"No visible messages.\"\nmsgstr \"沒有要被顯示的信件。\"\n\n#. L10N: %s is one of the CHECK_ACL entries below.\n#: curs_main.c:97 pager.c:83\n#, c-format\nmsgid \"%s: Operation not permitted by ACL\"\nmsgstr \"\"\n\n#: curs_main.c:327\nmsgid \"Cannot toggle write on a readonly mailbox!\"\nmsgstr \"無法寫入到一個唯讀的信箱！\"\n\n#: curs_main.c:334\nmsgid \"Changes to folder will be written on folder exit.\"\nmsgstr \"在離開之後將會把改變寫入資料夾。\"\n\n#: curs_main.c:339\nmsgid \"Changes to folder will not be written.\"\nmsgstr \"將不會把改變寫入資料夾。\"\n\n#: curs_main.c:481\nmsgid \"Quit\"\nmsgstr \"離開\"\n\n#: curs_main.c:484 recvattach.c:54\nmsgid \"Save\"\nmsgstr \"儲存\"\n\n#: curs_main.c:485 query.c:49\nmsgid \"Mail\"\nmsgstr \"信件\"\n\n#: curs_main.c:486 pager.c:1540\nmsgid \"Reply\"\nmsgstr \"回覆\"\n\n#: curs_main.c:487\nmsgid \"Group\"\nmsgstr \"群組\"\n\n#: curs_main.c:571\nmsgid \"Mailbox was externally modified.  Flags may be wrong.\"\nmsgstr \"信箱已經由其他途徑改變過。旗標可能有錯誤。\"\n\n#: curs_main.c:574\nmsgid \"New mail in this mailbox.\"\nmsgstr \"這個信箱中有新信件。\"\n\n#: curs_main.c:578\nmsgid \"Mailbox was externally modified.\"\nmsgstr \"信箱已經由其他途徑更改過。\"\n\n#: curs_main.c:700\nmsgid \"No tagged messages.\"\nmsgstr \"沒有標記了的信件。\"\n\n#: curs_main.c:731 menu.c:907\n#, fuzzy\nmsgid \"Nothing to do.\"\nmsgstr \"正連接到 %s…\"\n\n#: curs_main.c:817\nmsgid \"Jump to message: \"\nmsgstr \"跳到信件：\"\n\n#: curs_main.c:823\nmsgid \"Argument must be a message number.\"\nmsgstr \"需要一個信件編號的參數。\"\n\n#: curs_main.c:855\nmsgid \"That message is not visible.\"\nmsgstr \"這封信件無法顯示。\"\n\n#: curs_main.c:858\nmsgid \"Invalid message number.\"\nmsgstr \"無效的信件編號。\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:872 curs_main.c:1970 pager.c:2390\n#, fuzzy\nmsgid \"Cannot delete message(s)\"\nmsgstr \"沒有要反刪除的信件。\"\n\n#: curs_main.c:875\nmsgid \"Delete messages matching: \"\nmsgstr \"刪除符合這樣式的信件：\"\n\n#: curs_main.c:897\nmsgid \"No limit pattern is in effect.\"\nmsgstr \"目前未有指定限制樣式。\"\n\n#. L10N: ask for a limit to apply\n#: curs_main.c:902\n#, c-format\nmsgid \"Limit: %s\"\nmsgstr \"限制: %s\"\n\n#: curs_main.c:912\nmsgid \"Limit to messages matching: \"\nmsgstr \"限制只符合這樣式的信件：\"\n\n#: curs_main.c:934\nmsgid \"To view all messages, limit to \\\"all\\\".\"\nmsgstr \"\"\n\n#: curs_main.c:946 pager.c:1939\nmsgid \"Quit Mutt?\"\nmsgstr \"離開 Mutt？\"\n\n#: curs_main.c:1036\nmsgid \"Tag messages matching: \"\nmsgstr \"標記信件的條件：\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1046 curs_main.c:2268 pager.c:2704\n#, fuzzy\nmsgid \"Cannot undelete message(s)\"\nmsgstr \"沒有要反刪除的信件。\"\n\n#: curs_main.c:1048\nmsgid \"Undelete messages matching: \"\nmsgstr \"反刪除信件的條件：\"\n\n#: curs_main.c:1056\nmsgid \"Untag messages matching: \"\nmsgstr \"反標記信件的條件：\"\n\n#: curs_main.c:1082\n#, fuzzy\nmsgid \"Logged out of IMAP servers.\"\nmsgstr \"正在關閉與 IMAP 伺服器的連線…\"\n\n#: curs_main.c:1164\nmsgid \"Open mailbox in read-only mode\"\nmsgstr \"用唯讀模式開啟信箱\"\n\n#: curs_main.c:1166\nmsgid \"Open mailbox\"\nmsgstr \"開啟信箱\"\n\n#: curs_main.c:1176\n#, fuzzy\nmsgid \"No mailboxes have new mail\"\nmsgstr \"沒有信箱有新信件。\"\n\n#: curs_main.c:1204 mx.c:472 mx.c:621\n#, c-format\nmsgid \"%s is not a mailbox.\"\nmsgstr \"%s 不是信箱。\"\n\n#: curs_main.c:1303\nmsgid \"Exit Mutt without saving?\"\nmsgstr \"不儲存便離開 Mutt 嗎？\"\n\n#: curs_main.c:1321 curs_main.c:1357 curs_main.c:1815 curs_main.c:1847\n#: flags.c:282 thread.c:1028 thread.c:1083 thread.c:1138\nmsgid \"Threading is not enabled.\"\nmsgstr \"序列功能尚未啟動。\"\n\n#: curs_main.c:1333\nmsgid \"Thread broken\"\nmsgstr \"\"\n\n#: curs_main.c:1344\nmsgid \"Thread cannot be broken, message is not part of a thread\"\nmsgstr \"\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1354\nmsgid \"Cannot link threads\"\nmsgstr \"\"\n\n#: curs_main.c:1359\nmsgid \"No Message-ID: header available to link thread\"\nmsgstr \"\"\n\n#: curs_main.c:1361\n#, fuzzy\nmsgid \"First, please tag a message to be linked here\"\nmsgstr \"儲存信件以便稍後寄出\"\n\n#: curs_main.c:1373\nmsgid \"Threads linked\"\nmsgstr \"\"\n\n#: curs_main.c:1376\nmsgid \"No thread linked\"\nmsgstr \"\"\n\n#: curs_main.c:1412 curs_main.c:1437\nmsgid \"You are on the last message.\"\nmsgstr \"您已經在最後一封信了。\"\n\n#: curs_main.c:1419 curs_main.c:1463\nmsgid \"No undeleted messages.\"\nmsgstr \"沒有要反刪除的信件。\"\n\n#: curs_main.c:1456 curs_main.c:1480\nmsgid \"You are on the first message.\"\nmsgstr \"您已經在第一封信了。\"\n\n#: curs_main.c:1555 menu.c:757 pager.c:2057 pattern.c:1489\nmsgid \"Search wrapped to top.\"\nmsgstr \"搜尋至開頭。\"\n\n#: curs_main.c:1564 pager.c:2079 pattern.c:1500\nmsgid \"Search wrapped to bottom.\"\nmsgstr \"搜尋至結尾。\"\n\n#: curs_main.c:1608\n#, fuzzy\nmsgid \"No new messages in this limited view.\"\nmsgstr \"在限制閱覽模式下無法顯示主信件。\"\n\n#: curs_main.c:1610\n#, fuzzy\nmsgid \"No new messages.\"\nmsgstr \"沒有新信件\"\n\n#: curs_main.c:1615\n#, fuzzy\nmsgid \"No unread messages in this limited view.\"\nmsgstr \"在限制閱覽模式下無法顯示主信件。\"\n\n#: curs_main.c:1617\n#, fuzzy\nmsgid \"No unread messages.\"\nmsgstr \"沒有尚未讀取的信件\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1635\n#, fuzzy\nmsgid \"Cannot flag message\"\nmsgstr \"顯示信件\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1673 pager.c:2668\nmsgid \"Cannot toggle new\"\nmsgstr \"\"\n\n#: curs_main.c:1750\nmsgid \"No more threads.\"\nmsgstr \"沒有更多的序列\"\n\n#: curs_main.c:1752\nmsgid \"You are on the first thread.\"\nmsgstr \"您已經在第一個序列上。\"\n\n#: curs_main.c:1833\nmsgid \"Thread contains unread messages.\"\nmsgstr \"序列中有尚未讀取的信件。\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:1928 pager.c:2358\n#, fuzzy\nmsgid \"Cannot delete message\"\nmsgstr \"沒有要反刪除的信件。\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2012\n#, fuzzy\nmsgid \"Cannot edit message\"\nmsgstr \"無法寫信件\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2144\n#, fuzzy\nmsgid \"Cannot mark message(s) as read\"\nmsgstr \"跳到這個序列的主信件\"\n\n#. L10N: CHECK_ACL\n#: curs_main.c:2240 pager.c:2688\n#, fuzzy\nmsgid \"Cannot undelete message\"\nmsgstr \"沒有要反刪除的信件。\"\n\n#: edit.c:41\n#, fuzzy\nmsgid \"\"\n\"~~\\t\\tinsert a line beginning with a single ~\\n\"\n\"~b users\\tadd users to the Bcc: field\\n\"\n\"~c users\\tadd users to the Cc: field\\n\"\n\"~f messages\\tinclude messages\\n\"\n\"~F messages\\tsame as ~f, except also include headers\\n\"\n\"~h\\t\\tedit the message header\\n\"\n\"~m messages\\tinclude and quote messages\\n\"\n\"~M messages\\tsame as ~m, except include headers\\n\"\n\"~p\\t\\tprint the message\\n\"\nmsgstr \"\"\n\"~~\\t\\t插入以 ~ 符號開頭的一行\\n\"\n\"~b 戶口\\t新增戶口到 Bcc: 欄位\\n\"\n\"~c 戶口\\t新增戶口到 Cc: 欄位\\n\"\n\"~f 信件\\t包含信件\\n\"\n\"~F 訊息\\t類似 ~f, 不包括信件標頭\\n\"\n\"~h\\t\\t編輯信件的標頭\\n\"\n\"~m 訊息\\t包括引言\\n\"\n\"~M 訊息\\t類似 ~m, 不包括信件標頭\\n\"\n\"~p\\t\\t列印這封信件\\n\"\n\"~q\\t\\t存檔並且離開編輯器\\n\"\n\"~r 檔案\\t\\t將檔案讀入編輯器\\n\"\n\"~t 戶口\\t新增戶口到 To: 欄位\\n\"\n\"~u\\t\\t喚回之前那一行\\n\"\n\"~v\\t\\t使用 $visual 編輯器編輯訊息\\n\"\n\"~w 檔案\\t\\t將訊息寫入檔案\\n\"\n\"~x\\t\\t停止修改並離開編輯器\\n\"\n\"~?\\t\\t這訊息\\n\"\n\".\\t\\t如果是一行裏的唯一字符，則代表結束輸入\\n\"\n\n#: edit.c:52\n#, fuzzy\nmsgid \"\"\n\"~q\\t\\twrite file and quit editor\\n\"\n\"~r file\\t\\tread a file into the editor\\n\"\n\"~t users\\tadd users to the To: field\\n\"\n\"~u\\t\\trecall the previous line\\n\"\n\"~v\\t\\tedit message with the $visual editor\\n\"\n\"~w file\\t\\twrite message to file\\n\"\n\"~x\\t\\tabort changes and quit editor\\n\"\n\"~?\\t\\tthis message\\n\"\n\".\\t\\ton a line by itself ends input\\n\"\nmsgstr \"\"\n\"~~\\t\\t插入以 ~ 符號開頭的一行\\n\"\n\"~b 戶口\\t新增戶口到 Bcc: 欄位\\n\"\n\"~c 戶口\\t新增戶口到 Cc: 欄位\\n\"\n\"~f 信件\\t包含信件\\n\"\n\"~F 訊息\\t類似 ~f, 不包括信件標頭\\n\"\n\"~h\\t\\t編輯信件的標頭\\n\"\n\"~m 訊息\\t包括引言\\n\"\n\"~M 訊息\\t類似 ~m, 不包括信件標頭\\n\"\n\"~p\\t\\t列印這封信件\\n\"\n\"~q\\t\\t存檔並且離開編輯器\\n\"\n\"~r 檔案\\t\\t將檔案讀入編輯器\\n\"\n\"~t 戶口\\t新增戶口到 To: 欄位\\n\"\n\"~u\\t\\t喚回之前那一行\\n\"\n\"~v\\t\\t使用 $visual 編輯器編輯訊息\\n\"\n\"~w 檔案\\t\\t將訊息寫入檔案\\n\"\n\"~x\\t\\t停止修改並離開編輯器\\n\"\n\"~?\\t\\t這訊息\\n\"\n\".\\t\\t如果是一行裏的唯一字符，則代表結束輸入\\n\"\n\n#: edit.c:187\n#, c-format\nmsgid \"%d: invalid message number.\\n\"\nmsgstr \"%d：無效的信件號碼。\\n\"\n\n#: edit.c:329\nmsgid \"(End message with a . on a line by itself)\\n\"\nmsgstr \"（在一行裏輸入一個 . 符號來結束信件）\\n\"\n\n#: edit.c:388\nmsgid \"No mailbox.\\n\"\nmsgstr \"沒有信箱。\\n\"\n\n#: edit.c:392\nmsgid \"Message contains:\\n\"\nmsgstr \"信件包含：\\n\"\n\n#. L10N:\n#. This entry is shown AFTER the message content,\n#. not IN the middle of the content.\n#. So it doesn't mean \"(message will continue)\"\n#. but means \"(press any key to continue using mutt)\".\n#: edit.c:401 edit.c:458\nmsgid \"(continue)\\n\"\nmsgstr \"（繼續）\\n\"\n\n#: edit.c:414\nmsgid \"missing filename.\\n\"\nmsgstr \"沒有檔名。\\n\"\n\n#: edit.c:434\nmsgid \"No lines in message.\\n\"\nmsgstr \"文章中沒有文字。\\n\"\n\n#: edit.c:451\n#, c-format\nmsgid \"Bad IDN in %s: '%s'\\n\"\nmsgstr \"%s 中含有無效的 IDN：「%s」\\n\"\n\n#: edit.c:469\n#, c-format\nmsgid \"%s: unknown editor command (~? for help)\\n\"\nmsgstr \"%s：不明的編輯器指令（~? 求助）\\n\"\n\n#: editmsg.c:78\n#, c-format\nmsgid \"could not create temporary folder: %s\"\nmsgstr \"無法建立暫存檔：%s\"\n\n#: editmsg.c:90\n#, c-format\nmsgid \"could not write temporary mail folder: %s\"\nmsgstr \"無法寫入暫存檔：%s\"\n\n#: editmsg.c:110\n#, fuzzy, c-format\nmsgid \"could not truncate temporary mail folder: %s\"\nmsgstr \"無法寫入暫存檔：%s\"\n\n#: editmsg.c:127\nmsgid \"Message file is empty!\"\nmsgstr \"信件檔案是空的！\"\n\n#: editmsg.c:134\nmsgid \"Message not modified!\"\nmsgstr \"沒有改動信件！\"\n\n#: editmsg.c:142\n#, c-format\nmsgid \"Can't open message file: %s\"\nmsgstr \"無法開啟信件檔案：%s\"\n\n#. L10N: %s is from strerror(errno)\n#: editmsg.c:150 editmsg.c:178\n#, c-format\nmsgid \"Can't append to folder: %s\"\nmsgstr \"無法把資料加到檔案夾：%s\"\n\n#: editmsg.c:209\n#, c-format\nmsgid \"Error. Preserving temporary file: %s\"\nmsgstr \"發生錯誤，保留暫存檔：%s\"\n\n#: flags.c:325\nmsgid \"Set flag\"\nmsgstr \"設定旗標\"\n\n#: flags.c:325\nmsgid \"Clear flag\"\nmsgstr \"清除旗標\"\n\n#: handler.c:1138\nmsgid \"[-- Error:  Could not display any parts of Multipart/Alternative! --]\\n\"\nmsgstr \"[-- 錯誤： 無法顯示 Multipart/Alternative！ --]\\n\"\n\n#: handler.c:1253\n#, c-format\nmsgid \"[-- Attachment #%d\"\nmsgstr \"[-- 附件 #%d\"\n\n#: handler.c:1265\n#, c-format\nmsgid \"[-- Type: %s/%s, Encoding: %s, Size: %s --]\\n\"\nmsgstr \"[-- 種類：%s%s，編碼：%s，大小：%s --]\\n\"\n\n#: handler.c:1281\nmsgid \"One or more parts of this message could not be displayed\"\nmsgstr \"\"\n\n#: handler.c:1333\n#, c-format\nmsgid \"[-- Autoview using %s --]\\n\"\nmsgstr \"[-- 使用 %s 自動顯示 --]\\n\"\n\n#: handler.c:1334\n#, c-format\nmsgid \"Invoking autoview command: %s\"\nmsgstr \"執行自動顯示指令：%s\"\n\n#: handler.c:1366\n#, c-format\nmsgid \"[-- Can't run %s. --]\\n\"\nmsgstr \"[-- 不能執行 %s 。 --]\\n\"\n\n#: handler.c:1385 handler.c:1406\n#, c-format\nmsgid \"[-- Autoview stderr of %s --]\\n\"\nmsgstr \"[-- 自動顯示 %s 的 stderr 內容 --]\\n\"\n\n#: handler.c:1445\nmsgid \"[-- Error: message/external-body has no access-type parameter --]\\n\"\nmsgstr \"\"\n\"[-- 錯誤：message/external-body 沒有存取類型 (access-type) 的參數 --]\\n\"\n\n#: handler.c:1466\n#, c-format\nmsgid \"[-- This %s/%s attachment \"\nmsgstr \"[-- 這個 %s/%s 附件 \"\n\n#: handler.c:1473\n#, c-format\nmsgid \"(size %s bytes) \"\nmsgstr \"(%s 個位元組) \"\n\n#: handler.c:1475\nmsgid \"has been deleted --]\\n\"\nmsgstr \"已經被刪除了 --]\\n\"\n\n#: handler.c:1480\n#, c-format\nmsgid \"[-- on %s --]\\n\"\nmsgstr \"[-- 在 %s --]\\n\"\n\n#: handler.c:1485\n#, c-format\nmsgid \"[-- name: %s --]\\n\"\nmsgstr \"[-- 名稱：%s --]\\n\"\n\n#: handler.c:1498 handler.c:1514\n#, fuzzy, c-format\nmsgid \"[-- This %s/%s attachment is not included, --]\\n\"\nmsgstr \"[-- 這個 %s/%s 附件 \"\n\n#: handler.c:1500\n#, fuzzy\nmsgid \"\"\n\"[-- and the indicated external source has --]\\n\"\n\"[-- expired. --]\\n\"\nmsgstr \"\"\n\"[-- 這個 %s/%s 附件無法被附上, --]\\n\"\n\"[-- 並且被指示的外部原始檔已 --]\\n\"\n\"[-- 過期。 --]\\n\"\n\n#: handler.c:1518\n#, fuzzy, c-format\nmsgid \"[-- and the indicated access-type %s is unsupported --]\\n\"\nmsgstr \"\"\n\"[-- 這個 %s/%s 附件無法被附上, --]\\n\"\n\"[-- 並且被指示的存取類型 (access-type) %s 不被支援 --]\\n\"\n\n#: handler.c:1624\nmsgid \"Unable to open temporary file!\"\nmsgstr \"無法開啟暫存檔！\"\n\n#: handler.c:1770\nmsgid \"Error: multipart/signed has no protocol.\"\nmsgstr \"錯誤：multipart/signed 沒有通訊協定。\"\n\n#: handler.c:1821\n#, fuzzy\nmsgid \"[-- This is an attachment \"\nmsgstr \"[-- 這個 %s/%s 附件 \"\n\n#: handler.c:1823\n#, c-format\nmsgid \"[-- %s/%s is unsupported \"\nmsgstr \"[-- %s/%s 尚未支援 \"\n\n#: handler.c:1830\n#, c-format\nmsgid \"(use '%s' to view this part)\"\nmsgstr \"（按 '%s' 來顯示這部份）\"\n\n#: handler.c:1832\nmsgid \"(need 'view-attachments' bound to key!)\"\nmsgstr \"（需要定義一個鍵給 'view-attachments' 來瀏覽附件！)\"\n\n#: headers.c:185\n#, c-format\nmsgid \"%s: unable to attach file\"\nmsgstr \"%s：無法附帶檔案\"\n\n#: help.c:306\nmsgid \"ERROR: please report this bug\"\nmsgstr \"錯誤：請回報這個問題\"\n\n#: help.c:348\nmsgid \"<UNKNOWN>\"\nmsgstr \"<不明的>\"\n\n#: help.c:360\nmsgid \"\"\n\"\\n\"\n\"Generic bindings:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"標準功能定義：\\n\"\n\"\\n\"\n\n#: help.c:364\nmsgid \"\"\n\"\\n\"\n\"Unbound functions:\\n\"\n\"\\n\"\nmsgstr \"\"\n\"\\n\"\n\"未被定義的功能：\\n\"\n\"\\n\"\n\n#: help.c:372\n#, c-format\nmsgid \"Help for %s\"\nmsgstr \"%s 的求助\"\n\n#: history.c:77 history.c:114 history.c:140\n#, c-format\nmsgid \"Bad history file format (line %d)\"\nmsgstr \"\"\n\n#: hook.c:93\nmsgid \"current mailbox shortcut '^' is unset\"\nmsgstr \"\"\n\n#: hook.c:104\nmsgid \"mailbox shortcut expanded to empty regexp\"\nmsgstr \"\"\n\n#: hook.c:267\n#, c-format\nmsgid \"unhook: Can't do unhook * from within a hook.\"\nmsgstr \"unhook: 在 hook 裡面不能做 unhook *\"\n\n#: hook.c:279\n#, c-format\nmsgid \"unhook: unknown hook type: %s\"\nmsgstr \"unhook：不明的 hook type %s\"\n\n#: hook.c:285\n#, c-format\nmsgid \"unhook: Can't delete a %s from within a %s.\"\nmsgstr \"unhook：不能從 %2$s 刪除 %1$s。\"\n\n#: imap/auth.c:108 pop_auth.c:413 smtp.c:557\nmsgid \"No authenticators available\"\nmsgstr \"沒有認證方式\"\n\n#: imap/auth_anon.c:43\nmsgid \"Authenticating (anonymous)...\"\nmsgstr \"驗證中 (匿名)…\"\n\n#: imap/auth_anon.c:73\nmsgid \"Anonymous authentication failed.\"\nmsgstr \"匿名驗證失敗。\"\n\n#: imap/auth_cram.c:48\nmsgid \"Authenticating (CRAM-MD5)...\"\nmsgstr \"驗證中 (CRAM-MD5)…\"\n\n#: imap/auth_cram.c:128\nmsgid \"CRAM-MD5 authentication failed.\"\nmsgstr \"CRAM-MD5 驗證失敗。\"\n\n#: imap/auth_gss.c:145\nmsgid \"Authenticating (GSSAPI)...\"\nmsgstr \"驗證中 (GSSAPI)…\"\n\n#: imap/auth_gss.c:312\nmsgid \"GSSAPI authentication failed.\"\nmsgstr \"GSSAPI 驗證失敗。\"\n\n#: imap/auth_login.c:38\nmsgid \"LOGIN disabled on this server.\"\nmsgstr \"伺服器禁止了登入。\"\n\n#: imap/auth_login.c:47 pop_auth.c:246\nmsgid \"Logging in...\"\nmsgstr \"登入中…\"\n\n#: imap/auth_login.c:70 pop_auth.c:289\nmsgid \"Login failed.\"\nmsgstr \"登入失敗。\"\n\n#: imap/auth_sasl.c:101 smtp.c:594\n#, fuzzy, c-format\nmsgid \"Authenticating (%s)...\"\nmsgstr \"驗證中 (APOP)…\"\n\n#: imap/auth_sasl.c:228 pop_auth.c:168\nmsgid \"SASL authentication failed.\"\nmsgstr \"SASL 驗證失敗。\"\n\n#: imap/browse.c:58 imap/imap.c:569\n#, c-format\nmsgid \"%s is an invalid IMAP path\"\nmsgstr \"\"\n\n#: imap/browse.c:69\nmsgid \"Getting folder list...\"\nmsgstr \"拿取目錄表中…\"\n\n#: imap/browse.c:189\n#, fuzzy\nmsgid \"No such folder\"\nmsgstr \"%s：沒有這種顏色\"\n\n#: imap/browse.c:278\nmsgid \"Create mailbox: \"\nmsgstr \"製作信箱：\"\n\n#: imap/browse.c:283 imap/browse.c:338\nmsgid \"Mailbox must have a name.\"\nmsgstr \"信箱一定要有名字。\"\n\n#: imap/browse.c:291\nmsgid \"Mailbox created.\"\nmsgstr \"已完成建立郵箱。\"\n\n#: imap/browse.c:330\n#, fuzzy, c-format\nmsgid \"Rename mailbox %s to: \"\nmsgstr \"製作信箱：\"\n\n#: imap/browse.c:346\n#, fuzzy, c-format\nmsgid \"Rename failed: %s\"\nmsgstr \"登入失敗： %s\"\n\n#: imap/browse.c:351\n#, fuzzy\nmsgid \"Mailbox renamed.\"\nmsgstr \"已完成製造郵箱。\"\n\n#: imap/command.c:446\nmsgid \"Mailbox closed\"\nmsgstr \"郵箱已經關掉\"\n\n#: imap/imap.c:125\n#, fuzzy, c-format\nmsgid \"CREATE failed: %s\"\nmsgstr \"登入失敗： %s\"\n\n#: imap/imap.c:189\n#, c-format\nmsgid \"Closing connection to %s...\"\nmsgstr \"正在關閉與 %s 的連線…\"\n\n#: imap/imap.c:309\nmsgid \"This IMAP server is ancient. Mutt does not work with it.\"\nmsgstr \"這個 IMAP 伺服器已過時，Mutt 無法使用它。\"\n\n#: imap/imap.c:434 pop_lib.c:295 smtp.c:466\nmsgid \"Secure connection with TLS?\"\nmsgstr \"利用 TSL 來進行安全連接？\"\n\n#: imap/imap.c:443 pop_lib.c:315 smtp.c:478\nmsgid \"Could not negotiate TLS connection\"\nmsgstr \"未能\"\n\n#: imap/imap.c:459 pop_lib.c:336\n#, fuzzy\nmsgid \"Encrypted connection unavailable\"\nmsgstr \"加密的鑰匙\"\n\n#: imap/imap.c:601\n#, c-format\nmsgid \"Selecting %s...\"\nmsgstr \"正在選擇 %s …\"\n\n#: imap/imap.c:756\nmsgid \"Error opening mailbox\"\nmsgstr \"開啟信箱時發生錯誤\"\n\n#: imap/imap.c:808 imap/message.c:861 muttlib.c:1541\n#, c-format\nmsgid \"Create %s?\"\nmsgstr \"建立 %s？\"\n\n#: imap/imap.c:1183\nmsgid \"Expunge failed\"\nmsgstr \"刪除 (expunge) 失敗\"\n\n#: imap/imap.c:1195\n#, c-format\nmsgid \"Marking %d messages deleted...\"\nmsgstr \"標簽了的 %d 封信件刪去了…\"\n\n#: imap/imap.c:1227\n#, fuzzy, c-format\nmsgid \"Saving changed messages... [%d/%d]\"\nmsgstr \"正在儲存信件狀態旗標… [%d/%d]\"\n\n#: imap/imap.c:1282\nmsgid \"Error saving flags. Close anyway?\"\nmsgstr \"\"\n\n#: imap/imap.c:1290\n#, fuzzy\nmsgid \"Error saving flags\"\nmsgstr \"無法分析位址！\"\n\n#: imap/imap.c:1313\nmsgid \"Expunging messages from server...\"\nmsgstr \"正在刪除伺服器上的信件…\"\n\n#: imap/imap.c:1318\nmsgid \"imap_sync_mailbox: EXPUNGE failed\"\nmsgstr \"\"\n\n#: imap/imap.c:1768\n#, c-format\nmsgid \"Header search without header name: %s\"\nmsgstr \"\"\n\n#: imap/imap.c:1839\n#, fuzzy\nmsgid \"Bad mailbox name\"\nmsgstr \"製作信箱：\"\n\n#: imap/imap.c:1863\n#, c-format\nmsgid \"Subscribing to %s...\"\nmsgstr \"訂閱 %s…\"\n\n#: imap/imap.c:1865\n#, fuzzy, c-format\nmsgid \"Unsubscribing from %s...\"\nmsgstr \"取消訂閱 %s…\"\n\n#: imap/imap.c:1875\n#, fuzzy, c-format\nmsgid \"Subscribed to %s\"\nmsgstr \"訂閱 %s…\"\n\n#: imap/imap.c:1877\n#, fuzzy, c-format\nmsgid \"Unsubscribed from %s\"\nmsgstr \"取消訂閱 %s…\"\n\n#: imap/message.c:98\nmsgid \"Unable to fetch headers from this IMAP server version.\"\nmsgstr \"無法取回使用這個 IMAP 伺服器版本的郵件的標頭。\"\n\n#: imap/message.c:108\n#, c-format\nmsgid \"Could not create temporary file %s\"\nmsgstr \"無法建立暫存檔 %s\"\n\n#. L10N:\n#. Comparing the cached data with the IMAP server's data\n#: imap/message.c:142\n#, fuzzy\nmsgid \"Evaluating cache...\"\nmsgstr \"正在取回信件標頭… [%d/%d]\"\n\n#: imap/message.c:232 pop.c:281\n#, fuzzy\nmsgid \"Fetching message headers...\"\nmsgstr \"正在取回信件標頭… [%d/%d]\"\n\n#: imap/message.c:443 imap/message.c:500 pop.c:572\nmsgid \"Fetching message...\"\nmsgstr \"拿取信件中…\"\n\n#: imap/message.c:489 pop.c:567\nmsgid \"The message index is incorrect. Try reopening the mailbox.\"\nmsgstr \"信件的索引不正確。請再重新開啟信箱。\"\n\n#: imap/message.c:644\n#, fuzzy\nmsgid \"Uploading message...\"\nmsgstr \"正在上傳信件…\"\n\n#: imap/message.c:825\n#, c-format\nmsgid \"Copying %d messages to %s...\"\nmsgstr \"正在複制 %d 封信件到 %s …\"\n\n#: imap/message.c:829\n#, c-format\nmsgid \"Copying message %d to %s...\"\nmsgstr \"正在複制 信件 %d 到 %s …\"\n\n#: imap/util.c:357\nmsgid \"Continue?\"\nmsgstr \"繼續？\"\n\n#: init.c:60 init.c:1762 pager.c:50\n#, c-format\nmsgid \"Not available in this menu.\"\nmsgstr \"在這個菜單中沒有這個功能。\"\n\n#: init.c:468\n#, c-format\nmsgid \"Bad regexp: %s\"\nmsgstr \"\"\n\n#: init.c:525\n#, c-format\nmsgid \"Not enough subexpressions for spam template\"\nmsgstr \"\"\n\n#: init.c:715\n#, fuzzy\nmsgid \"spam: no matching pattern\"\nmsgstr \"標記符合某個格式的信件\"\n\n#: init.c:717\n#, fuzzy\nmsgid \"nospam: no matching pattern\"\nmsgstr \"反標記符合某個格式的信件\"\n\n#: init.c:861\n#, c-format\nmsgid \"%sgroup: missing -rx or -addr.\"\nmsgstr \"\"\n\n#: init.c:879\n#, fuzzy, c-format\nmsgid \"%sgroup: warning: bad IDN '%s'.\\n\"\nmsgstr \"警告：別名「%2$s」當中的「%1$s」為無效的 IDN。\\n\"\n\n#: init.c:1094\n#, fuzzy\nmsgid \"attachments: no disposition\"\nmsgstr \"編輯附件的說明\"\n\n#: init.c:1132\n#, fuzzy\nmsgid \"attachments: invalid disposition\"\nmsgstr \"編輯附件的說明\"\n\n#: init.c:1146\n#, fuzzy\nmsgid \"unattachments: no disposition\"\nmsgstr \"編輯附件的說明\"\n\n#: init.c:1169\nmsgid \"unattachments: invalid disposition\"\nmsgstr \"\"\n\n#: init.c:1296\nmsgid \"alias: no address\"\nmsgstr \"別名：沒有電子郵件位址\"\n\n#: init.c:1344\n#, c-format\nmsgid \"Warning: Bad IDN '%s' in alias '%s'.\\n\"\nmsgstr \"警告：別名「%2$s」當中的「%1$s」為無效的 IDN。\\n\"\n\n#: init.c:1432\nmsgid \"invalid header field\"\nmsgstr \"無效的標頭欄位\"\n\n#: init.c:1485\n#, c-format\nmsgid \"%s: unknown sorting method\"\nmsgstr \"%s：不明的排序方式\"\n\n#: init.c:1592\n#, c-format\nmsgid \"mutt_restore_default(%s): error in regexp: %s\\n\"\nmsgstr \"mutt_restore_defualt(%s)：錯誤的正規表示式：%s\\n\"\n\n#: init.c:1739 init.c:1852\n#, c-format\nmsgid \"%s: unknown variable\"\nmsgstr \"%s：不明的變數\"\n\n#: init.c:1748\n#, c-format\nmsgid \"prefix is illegal with reset\"\nmsgstr \"重新設置後字首仍不合規定\"\n\n#: init.c:1754\n#, c-format\nmsgid \"value is illegal with reset\"\nmsgstr \"重新設置後值仍不合規定\"\n\n#: init.c:1790 init.c:1802\n#, c-format\nmsgid \"Usage: set variable=yes|no\"\nmsgstr \"\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is set\"\nmsgstr \"%s 已被設定\"\n\n#: init.c:1810\n#, c-format\nmsgid \"%s is unset\"\nmsgstr \"%s 沒有被設定\"\n\n#: init.c:1913\n#, fuzzy, c-format\nmsgid \"Invalid value for option %s: \\\"%s\\\"\"\nmsgstr \"無效的日子：%s\"\n\n#: init.c:2050\n#, c-format\nmsgid \"%s: invalid mailbox type\"\nmsgstr \"%s：無效的信箱種類\"\n\n#: init.c:2081\n#, fuzzy, c-format\nmsgid \"%s: invalid value (%s)\"\nmsgstr \"%s：無效的值\"\n\n#: init.c:2082\nmsgid \"format error\"\nmsgstr \"\"\n\n#: init.c:2082\nmsgid \"number overflow\"\nmsgstr \"\"\n\n#: init.c:2142\n#, c-format\nmsgid \"%s: invalid value\"\nmsgstr \"%s：無效的值\"\n\n#: init.c:2183\n#, fuzzy, c-format\nmsgid \"%s: Unknown type.\"\nmsgstr \"%s：不明的種類\"\n\n#: init.c:2210\n#, c-format\nmsgid \"%s: unknown type\"\nmsgstr \"%s：不明的種類\"\n\n#: init.c:2272\n#, c-format\nmsgid \"Error in %s, line %d: %s\"\nmsgstr \"%s 發生錯誤，行號 %d：%s\"\n\n#: init.c:2295\n#, c-format\nmsgid \"source: errors in %s\"\nmsgstr \"source：錯誤發生在 %s\"\n\n#: init.c:2296\n#, fuzzy, c-format\nmsgid \"source: reading aborted due to too many errors in %s\"\nmsgstr \"source: 因 %s 發生太多錯誤，因此閱讀終止。\"\n\n#: init.c:2310\n#, c-format\nmsgid \"source: error at %s\"\nmsgstr \"source：錯誤發生在 %s\"\n\n#: init.c:2315\nmsgid \"source: too many arguments\"\nmsgstr \"source：太多引數\"\n\n#: init.c:2369\n#, c-format\nmsgid \"%s: unknown command\"\nmsgstr \"%s：不明的指令\"\n\n#: init.c:2857\n#, c-format\nmsgid \"Error in command line: %s\\n\"\nmsgstr \"指令行有錯：%s\\n\"\n\n#: init.c:2936\nmsgid \"unable to determine home directory\"\nmsgstr \"無法決定 home 目錄\"\n\n#: init.c:2944\nmsgid \"unable to determine username\"\nmsgstr \"無法決定使用者名稱\"\n\n#: init.c:2970\n#, fuzzy\nmsgid \"unable to determine nodename via uname()\"\nmsgstr \"無法決定使用者名稱\"\n\n#: init.c:3214\nmsgid \"-group: no group name\"\nmsgstr \"\"\n\n#: init.c:3224\n#, fuzzy\nmsgid \"out of arguments\"\nmsgstr \"太少參數\"\n\n#: keymap.c:534\nmsgid \"Macros are currently disabled.\"\nmsgstr \"\"\n\n#: keymap.c:541\nmsgid \"Macro loop detected.\"\nmsgstr \"檢測到巨集中有迴圈。\"\n\n#: keymap.c:842 keymap.c:850\nmsgid \"Key is not bound.\"\nmsgstr \"這個鍵還未被定義功能。\"\n\n#: keymap.c:854\n#, c-format\nmsgid \"Key is not bound.  Press '%s' for help.\"\nmsgstr \"這個鍵還未被定義功能。 按 '%s' 以取得說明。\"\n\n#: keymap.c:865\nmsgid \"push: too many arguments\"\nmsgstr \"push：太多引數\"\n\n#: keymap.c:895\n#, c-format\nmsgid \"%s: no such menu\"\nmsgstr \"%s：沒有這個選單\"\n\n#: keymap.c:910\nmsgid \"null key sequence\"\nmsgstr \"空的鍵值序列\"\n\n#: keymap.c:997\nmsgid \"bind: too many arguments\"\nmsgstr \"bind：太多引數\"\n\n#: keymap.c:1020\n#, c-format\nmsgid \"%s: no such function in map\"\nmsgstr \"%s：在對映表中沒有這樣的功能\"\n\n#: keymap.c:1044\nmsgid \"macro: empty key sequence\"\nmsgstr \"macro：空的鍵值序列\"\n\n#: keymap.c:1055\nmsgid \"macro: too many arguments\"\nmsgstr \"macro：引數太多\"\n\n#: keymap.c:1091\nmsgid \"exec: no arguments\"\nmsgstr \"exec：沒有引數\"\n\n#: keymap.c:1111\n#, c-format\nmsgid \"%s: no such function\"\nmsgstr \"%s：沒有這個功能\"\n\n#: keymap.c:1132\n#, fuzzy\nmsgid \"Enter keys (^G to abort): \"\nmsgstr \"請輸入 %s 的鑰匙 ID：\"\n\n#: keymap.c:1137\n#, c-format\nmsgid \"Char = %s, Octal = %o, Decimal = %d\"\nmsgstr \"\"\n\n#: lib.c:131\nmsgid \"Integer overflow -- can't allocate memory!\"\nmsgstr \"\"\n\n#: lib.c:138 lib.c:153 lib.c:185\nmsgid \"Out of memory!\"\nmsgstr \"記憶體不足！\"\n\n#: main.c:65\n#, fuzzy\nmsgid \"\"\n\"To contact the developers, please mail to <mutt-dev@mutt.org>.\\n\"\n\"To report a bug, please visit http://bugs.mutt.org/.\\n\"\nmsgstr \"\"\n\"要與開發人員連絡，請寄信給 <mutt-dev@mutt.org>。\\n\"\n\"如發現問題，請利用 flea(1) 程式告之。\\n\"\n\n#: main.c:69\n#, fuzzy\nmsgid \"\"\n\"Copyright (C) 1996-2016 Michael R. Elkins and others.\\n\"\n\"Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.\\n\"\n\"Mutt is free software, and you are welcome to redistribute it\\n\"\n\"under certain conditions; type `mutt -vv' for details.\\n\"\nmsgstr \"\"\n\"版權所有 (C) 1996-2001 Michael R. Elkins 及其他人仕。\\n\"\n\"Mutt 不提供任何保證：需要更詳細的資料，請鍵入 `mutt -vv'。\\n\"\n\"Mutt 是一個自由軟體, 歡迎您在某些特定的條件上，重新將它分發。\\n\"\n\"若需要更詳細的資料, 請鍵入 `mutt -vv'\\n\"\n\n#: main.c:75\nmsgid \"\"\n\"Copyright (C) 1996-2014 Michael R. Elkins <me@mutt.org>\\n\"\n\"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n\"Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n\"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n\"Copyright (C) 1999-2014 Brendan Cully <brendan@kublai.com>\\n\"\n\"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n\"Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n\"Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>\\n\"\n\"Copyright (C) 2014-2015 Kevin J. McCarthy <kevin@8t8.us>\\n\"\n\"\\n\"\n\"Many others not mentioned here contributed code, fixes,\\n\"\n\"and suggestions.\\n\"\nmsgstr \"\"\n\n#: main.c:89\nmsgid \"\"\n\"    This program is free software; you can redistribute it and/or modify\\n\"\n\"    it under the terms of the GNU General Public License as published by\\n\"\n\"    the Free Software Foundation; either version 2 of the License, or\\n\"\n\"    (at your option) any later version.\\n\"\n\"\\n\"\n\"    This program is distributed in the hope that it will be useful,\\n\"\n\"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n\"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n\"    GNU General Public License for more details.\\n\"\nmsgstr \"\"\n\n#: main.c:99\nmsgid \"\"\n\"    You should have received a copy of the GNU General Public License\\n\"\n\"    along with this program; if not, write to the Free Software\\n\"\n\"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n\"02110-1301, USA.\\n\"\nmsgstr \"\"\n\n#: main.c:116\nmsgid \"\"\n\"usage: mutt [<options>] [-z] [-f <file> | -yZ]\\n\"\n\"       mutt [<options>] [-Ex] [-Hi <file>] [-s <subj>] [-bc <addr>] [-a \"\n\"<file> [...] --] <addr> [...]\\n\"\n\"       mutt [<options>] [-x] [-s <subj>] [-bc <addr>] [-a <file> [...] --] \"\n\"<addr> [...] < message\\n\"\n\"       mutt [<options>] -p\\n\"\n\"       mutt [<options>] -A <alias> [...]\\n\"\n\"       mutt [<options>] -Q <query> [...]\\n\"\n\"       mutt [<options>] -D\\n\"\n\"       mutt -v[v]\\n\"\nmsgstr \"\"\n\n#: main.c:125\nmsgid \"\"\n\"options:\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <file> [...] --\\tattach file(s) to the message\\n\"\n\"\\t\\tthe list of files must be terminated with the \\\"--\\\" sequence\\n\"\n\"  -b <address>\\tspecify a blind carbon-copy (BCC) address\\n\"\n\"  -c <address>\\tspecify a carbon-copy (CC) address\\n\"\n\"  -D\\t\\tprint the value of all variables to stdout\"\nmsgstr \"\"\n\n#: main.c:134\nmsgid \"  -d <level>\\tlog debugging output to ~/.muttdebug0\"\nmsgstr \"\"\n\n#: main.c:137\n#, fuzzy\nmsgid \"\"\n\"  -E\\t\\tedit the draft (-H) or include (-i) file\\n\"\n\"  -e <command>\\tspecify a command to be executed after initialization\\n\"\n\"  -f <file>\\tspecify which mailbox to read\\n\"\n\"  -F <file>\\tspecify an alternate muttrc file\\n\"\n\"  -H <file>\\tspecify a draft file to read header and body from\\n\"\n\"  -i <file>\\tspecify a file which Mutt should include in the body\\n\"\n\"  -m <type>\\tspecify a default mailbox type\\n\"\n\"  -n\\t\\tcauses Mutt not to read the system Muttrc\\n\"\n\"  -p\\t\\trecall a postponed message\"\nmsgstr \"\"\n\"用法: mutt [ -nRzZ ] [ -e <命令> ] [ -F <檔案> ] [ -m <類型> ] [ -f <檔案\"\n\"> ]\\n\"\n\"        mutt [ -nx ] [ -e <命令> ] [ -a <檔案> ] [ -F <檔案> ] [ -H <檔案> ] \"\n\"[ -i <檔案> ] [ -s <主題> ] [ -b <地址> ] [ -c <地址> ] <地址> [ ... ]\\n\"\n\"        mutt [ -n ] [ -e <命令> ] [ -F <檔案> ] -p\\n\"\n\"        mutt -v[v]\\n\"\n\"\\n\"\n\"參數：\\n\"\n\"  -a <檔案>\\t\\t將檔案附在信件中\\n\"\n\"  -b <地址>\\t\\t指定一個 秘密複製 (BCC) 的地址\\n\"\n\"  -c <地址>\\t\\t指定一個 複製 (CC) 的地址\\n\"\n\"  -e <命令>\\t\\t指定一個初始化後要被執行的命令\\n\"\n\"  -f <檔案>\\t\\t指定要閱讀那一個郵筒\\n\"\n\"  -F <檔案>\\t\\t指定另一個 muttrc 檔案\\n\"\n\"  -H <檔案>\\t\\t指定一個範本檔案以讀取標題來源\\n\"\n\"  -i <檔案>\\t\\t指定一個包括在回覆中的檔案\\n\"\n\"  -m <類型>\\t\\t指定一個預設的郵筒類型\\n\"\n\"  -n\\t\\t使 Mutt 不去讀取系統的 Muttrc 檔\\n\"\n\"  -p\\t\\t叫回一個延後寄送的信件\\n\"\n\"  -R\\t\\t以唯讀模式開啟郵筒\\n\"\n\"  -s <主題>\\t\\t指定一個主題 (如果有空白的話必須被包括在引言中)\\n\"\n\"  -v\\t\\t顯示版本和編譯時所定義的參數\\n\"\n\"  -x\\t\\t模擬 mailx 寄送模式\\n\"\n\"  -y\\t\\t選擇一個被指定在您郵筒清單中的郵筒\\n\"\n\"  -z\\t\\t如果沒有訊息在郵筒中的話，立即離開\\n\"\n\"  -Z\\t\\t開啟第一個附有新郵件的資料夾，如果沒有的話立即離開\\n\"\n\"  -h\\t\\t這個說明訊息\"\n\n#: main.c:147\n#, fuzzy\nmsgid \"\"\n\"  -Q <variable>\\tquery a configuration variable\\n\"\n\"  -R\\t\\topen mailbox in read-only mode\\n\"\n\"  -s <subj>\\tspecify a subject (must be in quotes if it has spaces)\\n\"\n\"  -v\\t\\tshow version and compile-time definitions\\n\"\n\"  -x\\t\\tsimulate the mailx send mode\\n\"\n\"  -y\\t\\tselect a mailbox specified in your `mailboxes' list\\n\"\n\"  -z\\t\\texit immediately if there are no messages in the mailbox\\n\"\n\"  -Z\\t\\topen the first folder with new message, exit immediately if none\\n\"\n\"  -h\\t\\tthis help message\"\nmsgstr \"\"\n\"用法: mutt [ -nRyzZ ] [ -e <指令> ] [ -F <檔案> ] [ -m <類型> ] [ -f <檔案\"\n\"> ]\\n\"\n\"       mutt [ -nR ] [ -e <指令> ] [ -F <檔案> ] -Q <查詢> [ -Q <查詢> ] \"\n\"[...]\\n\"\n\"       mutt [ -nR ] [ -e <指令> ] [ -F <檔案> ] -A <別名> [ -A <別名> ] \"\n\"[...]\\n\"\n\"       mutt [ -nx ] [ -e <指令> ] [ -a <檔案> ] [ -F <檔案> ] [ -H <檔案> ] \"\n\"[ -i <檔案> ] [ -s <主題> ] [ -b <地址> ] [ -c <地址> ] <地址> [ ... ]\\n\"\n\"       mutt [ -n ] [ -e <指令> ] [ -F <檔案> ] -p\\n\"\n\"       mutt -v[v]\\n\"\n\"\\n\"\n\"參數：\\n\"\n\"  -A <alias>\\texpand the given alias\\n\"\n\"  -a <檔案>\\t\\t將檔案附在信件中\\n\"\n\"  -b <地址>\\t\\t指定一個 秘密複製 (BCC) 的地址\\n\"\n\"  -c <地址>\\t\\t指定一個 複製 (CC) 的地址\\n\"\n\"  -e <命令>\\t\\t指定一個初始化後要被執行的命令\\n\"\n\"  -f <檔案>\\t\\t指定要閱讀那一個郵筒\\n\"\n\"  -F <檔案>\\t\\t指定另一個 muttrc 檔案\\n\"\n\"  -H <檔案>\\t\\t指定一個範本檔案以讀取標題來源\\n\"\n\"  -i <檔案>\\t\\t指定一個包括在回覆中的檔案\\n\"\n\"  -m <類型>\\t\\t指定一個預設的郵筒類型\\n\"\n\"  -n\\t\\t使 Mutt 不去讀取系統的 Muttrc 檔\\n\"\n\"  -p\\t\\t叫回一個延後寄送的信件\\n\"\n\"  -Q <變數>\\t查詢一個設定變數\\n\"\n\"  -R\\t\\t以唯讀模式開啟郵筒\\n\"\n\"  -s <主題>\\t\\t指定一個主題 (如果有空白的話必須被包括在引言中)\\n\"\n\"  -v\\t\\t顯示版本和編譯時所定義的參數\\n\"\n\"  -x\\t\\t模擬 mailx 寄送模式\\n\"\n\"  -y\\t\\t選擇一個被指定在您郵筒清單中的郵筒\\n\"\n\"  -z\\t\\t如果沒有訊息在郵筒中的話，立即離開\\n\"\n\"  -Z\\t\\t開啟第一個附有新郵件的資料夾，如果沒有的話立即離開\\n\"\n\"  -h\\t\\t這個說明訊息\"\n\n#: main.c:228\nmsgid \"\"\n\"\\n\"\n\"Compile options:\"\nmsgstr \"\"\n\"\\n\"\n\"編譯選項：\"\n\n#: main.c:532\nmsgid \"Error initializing terminal.\"\nmsgstr \"無法初始化終端機。\"\n\n#: main.c:669\n#, fuzzy, c-format\nmsgid \"Error: value '%s' is invalid for -d.\\n\"\nmsgstr \"錯誤：「%s」是無效的 IDN。\"\n\n#: main.c:672\n#, c-format\nmsgid \"Debugging at level %d.\\n\"\nmsgstr \"除錯模式在第 %d 層。\\n\"\n\n#: main.c:674\nmsgid \"DEBUG was not defined during compilation.  Ignored.\\n\"\nmsgstr \"在編譯時候沒有定義 DEBUG。放棄執行。\\n\"\n\n#: main.c:848\n#, c-format\nmsgid \"%s does not exist. Create it?\"\nmsgstr \"%s 不存在。建立嗎？\"\n\n#: main.c:852\n#, c-format\nmsgid \"Can't create %s: %s.\"\nmsgstr \"無法建立 %s: %s.\"\n\n#: main.c:891\nmsgid \"Failed to parse mailto: link\\n\"\nmsgstr \"\"\n\n#: main.c:903\nmsgid \"No recipients specified.\\n\"\nmsgstr \"沒有指定收件人。\\n\"\n\n#: main.c:929\nmsgid \"Cannot use -E flag with stdin\\n\"\nmsgstr \"\"\n\n#: main.c:1082\n#, c-format\nmsgid \"%s: unable to attach file.\\n\"\nmsgstr \"%s：無法附帶檔案。\\n\"\n\n#: main.c:1162\nmsgid \"No mailbox with new mail.\"\nmsgstr \"沒有信箱有新信件。\"\n\n#: main.c:1171\nmsgid \"No incoming mailboxes defined.\"\nmsgstr \"沒有定義任何的收信郵箱\"\n\n#: main.c:1199\nmsgid \"Mailbox is empty.\"\nmsgstr \"信箱內空無一物。\"\n\n#: mbox.c:119 mbox.c:269 mh.c:1205 mx.c:642\n#, c-format\nmsgid \"Reading %s...\"\nmsgstr \"讀取 %s 中…\"\n\n#: mbox.c:157 mbox.c:214\nmsgid \"Mailbox is corrupt!\"\nmsgstr \"信箱已損壞了！\"\n\n#: mbox.c:670\nmsgid \"Mailbox was corrupted!\"\nmsgstr \"信箱已損壞!\"\n\n#: mbox.c:751 mbox.c:1011\nmsgid \"Fatal error!  Could not reopen mailbox!\"\nmsgstr \"嚴重錯誤！無法重新開啟信箱！\"\n\n#: mbox.c:760\nmsgid \"Unable to lock mailbox!\"\nmsgstr \"無法鎖住信箱！\"\n\n#: mbox.c:803\nmsgid \"sync: mbox modified, but no modified messages! (report this bug)\"\nmsgstr \"同步：信箱已被修改，但沒有被修改過的信件！（請回報這個錯誤）\"\n\n#: mbox.c:827 mh.c:1711 mx.c:739\n#, c-format\nmsgid \"Writing %s...\"\nmsgstr \"寫入 %s 中…\"\n\n#: mbox.c:962\nmsgid \"Committing changes...\"\nmsgstr \"正在寫入更改的資料…\"\n\n#: mbox.c:997\n#, c-format\nmsgid \"Write failed!  Saved partial mailbox to %s\"\nmsgstr \"寫入失敗！已把部分的信箱儲存至 %s\"\n\n#: mbox.c:1059\nmsgid \"Could not reopen mailbox!\"\nmsgstr \"無法重開信箱！\"\n\n#: mbox.c:1095\nmsgid \"Reopening mailbox...\"\nmsgstr \"重新開啟信箱中…\"\n\n#: menu.c:418\nmsgid \"Jump to: \"\nmsgstr \"跳到：\"\n\n#: menu.c:427\nmsgid \"Invalid index number.\"\nmsgstr \"無效的索引編號。\"\n\n#: menu.c:431 menu.c:452 menu.c:517 menu.c:560 menu.c:576 menu.c:587 menu.c:598\n#: menu.c:609 menu.c:622 menu.c:635 menu.c:1044\nmsgid \"No entries.\"\nmsgstr \"沒有資料。\"\n\n#: menu.c:449\nmsgid \"You cannot scroll down farther.\"\nmsgstr \"您無法再向下捲動了。\"\n\n#: menu.c:467\nmsgid \"You cannot scroll up farther.\"\nmsgstr \"您無法再向上捲動了。\"\n\n#: menu.c:510\nmsgid \"You are on the first page.\"\nmsgstr \"您現在在第一頁。\"\n\n#: menu.c:511\nmsgid \"You are on the last page.\"\nmsgstr \"您現在在最後一頁。\"\n\n#: menu.c:646\nmsgid \"You are on the last entry.\"\nmsgstr \"您現在在最後一項。\"\n\n#: menu.c:657\nmsgid \"You are on the first entry.\"\nmsgstr \"您現在在第一項。\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Search for: \"\nmsgstr \"搜尋：\"\n\n#: menu.c:731 pager.c:2101 pattern.c:1428\nmsgid \"Reverse search for: \"\nmsgstr \"返向搜尋：\"\n\n#: menu.c:775 pager.c:2054 pager.c:2076 pager.c:2196 pattern.c:1543\nmsgid \"Not found.\"\nmsgstr \"沒有找到。\"\n\n#: menu.c:901\nmsgid \"No tagged entries.\"\nmsgstr \"沒有已標記的記錄。\"\n\n#: menu.c:1001\nmsgid \"Search is not implemented for this menu.\"\nmsgstr \"這個選單中沒有搜尋功能。\"\n\n#: menu.c:1006\nmsgid \"Jumping is not implemented for dialogs.\"\nmsgstr \"對話模式中不支援跳躍功能。\"\n\n#: menu.c:1047\nmsgid \"Tagging is not supported.\"\nmsgstr \"不支援標記功能。\"\n\n#: mh.c:1184\n#, fuzzy, c-format\nmsgid \"Scanning %s...\"\nmsgstr \"正在選擇 %s …\"\n\n#: mh.c:1385 mh.c:1463\n#, fuzzy\nmsgid \"Could not flush message to disk\"\nmsgstr \"無法寄出信件。\"\n\n#: mh.c:1430\nmsgid \"maildir_commit_message(): unable to set time on file\"\nmsgstr \"\"\n\n#: mutt_sasl.c:194\nmsgid \"Unknown SASL profile\"\nmsgstr \"\"\n\n#: mutt_sasl.c:228\n#, fuzzy\nmsgid \"Error allocating SASL connection\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: mutt_sasl.c:239\nmsgid \"Error setting SASL security properties\"\nmsgstr \"\"\n\n#: mutt_sasl.c:249\nmsgid \"Error setting SASL external security strength\"\nmsgstr \"\"\n\n#: mutt_sasl.c:258\nmsgid \"Error setting SASL external user name\"\nmsgstr \"\"\n\n#: mutt_socket.c:103 mutt_socket.c:181\n#, c-format\nmsgid \"Connection to %s closed\"\nmsgstr \"到 %s 的連線中斷了\"\n\n#: mutt_socket.c:300\nmsgid \"SSL is unavailable.\"\nmsgstr \"沒有 SSL 功能\"\n\n#: mutt_socket.c:332\nmsgid \"Preconnect command failed.\"\nmsgstr \"預先連接指令失敗。\"\n\n#: mutt_socket.c:403 mutt_socket.c:417\n#, c-format\nmsgid \"Error talking to %s (%s)\"\nmsgstr \"連線到 %s (%s) 時失敗\"\n\n#: mutt_socket.c:470 mutt_socket.c:529\n#, c-format\nmsgid \"Bad IDN \\\"%s\\\".\"\nmsgstr \"無效的 IDN「%s」。\"\n\n#: mutt_socket.c:478 mutt_socket.c:537\n#, c-format\nmsgid \"Looking up %s...\"\nmsgstr \"正在尋找 %s…\"\n\n#: mutt_socket.c:488 mutt_socket.c:546\n#, c-format\nmsgid \"Could not find the host \\\"%s\\\"\"\nmsgstr \"找不到主機 \\\"%s\\\"\"\n\n#: mutt_socket.c:494 mutt_socket.c:552\n#, c-format\nmsgid \"Connecting to %s...\"\nmsgstr \"正連接到 %s…\"\n\n#: mutt_socket.c:576\n#, c-format\nmsgid \"Could not connect to %s (%s).\"\nmsgstr \"無法連線到 %s (%s)。\"\n\n# Well, I don't know how to translate the word \"entropy\"\n#: mutt_ssl.c:225\nmsgid \"Failed to find enough entropy on your system\"\nmsgstr \"\"\n\n#: mutt_ssl.c:249\n#, c-format\nmsgid \"Filling entropy pool: %s...\\n\"\nmsgstr \"\"\n\n#: mutt_ssl.c:257\n#, c-format\nmsgid \"%s has insecure permissions!\"\nmsgstr \"%s 的權限不安全！\"\n\n#: mutt_ssl.c:276\nmsgid \"SSL disabled due to the lack of entropy\"\nmsgstr \"\"\n\n#: mutt_ssl.c:409\nmsgid \"I/O error\"\nmsgstr \"\"\n\n#: mutt_ssl.c:418\n#, fuzzy, c-format\nmsgid \"SSL failed: %s\"\nmsgstr \"登入失敗： %s\"\n\n#: mutt_ssl.c:427 mutt_ssl_gnutls.c:1079 mutt_ssl_gnutls.c:1114\n#: mutt_ssl_gnutls.c:1124\nmsgid \"Unable to get certificate from peer\"\nmsgstr \"無法從對方拿取驗証\"\n\n#. L10N:\n#. %1$s is version (e.g. \"TLSv1.2\")\n#. %2$s is cipher_version (e.g. \"TLSv1/SSLv3\")\n#. %3$s is cipher_name (e.g. \"ECDHE-RSA-AES128-GCM-SHA256\")\n#: mutt_ssl.c:439\n#, fuzzy, c-format\nmsgid \"%s connection using %s (%s)\"\nmsgstr \"利用 %s (%s) 來進行 SSL\"\n\n#: mutt_ssl.c:541\nmsgid \"Unknown\"\nmsgstr \"不明\"\n\n#: mutt_ssl.c:566 mutt_ssl_gnutls.c:598\n#, c-format\nmsgid \"[unable to calculate]\"\nmsgstr \"【無法計算】\"\n\n#: mutt_ssl.c:584 mutt_ssl_gnutls.c:621\nmsgid \"[invalid date]\"\nmsgstr \"【無效的日期】\"\n\n#: mutt_ssl.c:712\nmsgid \"Server certificate is not yet valid\"\nmsgstr \"伺服器的驗証還未有效\"\n\n#: mutt_ssl.c:719\nmsgid \"Server certificate has expired\"\nmsgstr \"伺服器的驗証已過期\"\n\n#: mutt_ssl.c:841\n#, fuzzy\nmsgid \"cannot get certificate subject\"\nmsgstr \"無法從對方拿取驗証\"\n\n#: mutt_ssl.c:851 mutt_ssl.c:860\n#, fuzzy\nmsgid \"cannot get certificate common name\"\nmsgstr \"無法從對方拿取驗証\"\n\n#: mutt_ssl.c:874\n#, c-format\nmsgid \"certificate owner does not match hostname %s\"\nmsgstr \"\"\n\n#: mutt_ssl.c:915\n#, fuzzy, c-format\nmsgid \"Certificate host check failed: %s\"\nmsgstr \"驗証已儲存\"\n\n#: mutt_ssl.c:993 mutt_ssl_gnutls.c:860\nmsgid \"This certificate belongs to:\"\nmsgstr \"這個驗証屬於：\"\n\n#: mutt_ssl.c:1006 mutt_ssl_gnutls.c:899\nmsgid \"This certificate was issued by:\"\nmsgstr \"這個驗証的派發者：\"\n\n#: mutt_ssl.c:1017 mutt_ssl_gnutls.c:938\n#, c-format\nmsgid \"This certificate is valid\"\nmsgstr \"這個驗証有效\"\n\n#: mutt_ssl.c:1018 mutt_ssl_gnutls.c:941\n#, c-format\nmsgid \"   from %s\"\nmsgstr \"   由 %s\"\n\n#: mutt_ssl.c:1020 mutt_ssl_gnutls.c:945\n#, c-format\nmsgid \"     to %s\"\nmsgstr \"     至 %s\"\n\n#: mutt_ssl.c:1026\n#, c-format\nmsgid \"Fingerprint: %s\"\nmsgstr \"指模：%s\"\n\n#: mutt_ssl.c:1029 mutt_ssl_gnutls.c:982\n#, c-format\nmsgid \"SSL Certificate check (certificate %d of %d in chain)\"\nmsgstr \"\"\n\n#: mutt_ssl.c:1037 mutt_ssl_gnutls.c:991\nmsgid \"(r)eject, accept (o)nce, (a)ccept always\"\nmsgstr \"(1)不接受，(2)只是這次接受，(3)永遠接受\"\n\n#: mutt_ssl.c:1038 mutt_ssl_gnutls.c:992\nmsgid \"roa\"\nmsgstr \"123\"\n\n#: mutt_ssl.c:1042 mutt_ssl_gnutls.c:996\nmsgid \"(r)eject, accept (o)nce\"\nmsgstr \"(1)不接受，(2)只是這次接受\"\n\n#: mutt_ssl.c:1043 mutt_ssl_gnutls.c:997\nmsgid \"ro\"\nmsgstr \"12\"\n\n#: mutt_ssl.c:1074 mutt_ssl_gnutls.c:1046\nmsgid \"Warning: Couldn't save certificate\"\nmsgstr \"警告：未能儲存驗証\"\n\n#: mutt_ssl.c:1079 mutt_ssl_gnutls.c:1051\nmsgid \"Certificate saved\"\nmsgstr \"驗証已儲存\"\n\n#: mutt_ssl_gnutls.c:137 mutt_ssl_gnutls.c:164\nmsgid \"Error: no TLS socket open\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:312 mutt_ssl_gnutls.c:351\nmsgid \"All available protocols for TLS/SSL connection disabled\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:357\nmsgid \"Explicit ciphersuite selection via $ssl_ciphers not supported\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:465\n#, fuzzy, c-format\nmsgid \"SSL/TLS connection using %s (%s/%s/%s)\"\nmsgstr \"利用 %s (%s) 來進行 SSL\"\n\n#: mutt_ssl_gnutls.c:688 mutt_ssl_gnutls.c:840\n#, fuzzy\nmsgid \"Error initialising gnutls certificate data\"\nmsgstr \"無法初始化終端機。\"\n\n#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847\nmsgid \"Error processing certificate data\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:831\nmsgid \"Warning: Server certificate was signed using an insecure algorithm\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:950\n#, fuzzy, c-format\nmsgid \"SHA1 Fingerprint: %s\"\nmsgstr \"指模：%s\"\n\n#: mutt_ssl_gnutls.c:953\n#, fuzzy, c-format\nmsgid \"MD5 Fingerprint: %s\"\nmsgstr \"指模：%s\"\n\n#: mutt_ssl_gnutls.c:958\n#, fuzzy\nmsgid \"WARNING: Server certificate is not yet valid\"\nmsgstr \"伺服器的驗証還未有效\"\n\n#: mutt_ssl_gnutls.c:963\n#, fuzzy\nmsgid \"WARNING: Server certificate has expired\"\nmsgstr \"伺服器的驗証已過期\"\n\n#: mutt_ssl_gnutls.c:968\n#, fuzzy\nmsgid \"WARNING: Server certificate has been revoked\"\nmsgstr \"伺服器的驗証已過期\"\n\n#: mutt_ssl_gnutls.c:973\nmsgid \"WARNING: Server hostname does not match certificate\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:978\n#, fuzzy\nmsgid \"WARNING: Signer of server certificate is not a CA\"\nmsgstr \"伺服器的驗証還未有效\"\n\n#: mutt_ssl_gnutls.c:1085\n#, c-format\nmsgid \"Certificate verification error (%s)\"\nmsgstr \"\"\n\n#: mutt_ssl_gnutls.c:1094\n#, fuzzy\nmsgid \"Certificate is not X.509\"\nmsgstr \"驗証已儲存\"\n\n#: mutt_tunnel.c:72\n#, fuzzy, c-format\nmsgid \"Connecting with \\\"%s\\\"...\"\nmsgstr \"正連接到 %s…\"\n\n#: mutt_tunnel.c:139\n#, c-format\nmsgid \"Tunnel to %s returned error %d (%s)\"\nmsgstr \"\"\n\n#: mutt_tunnel.c:157 mutt_tunnel.c:173\n#, fuzzy, c-format\nmsgid \"Tunnel error talking to %s: %s\"\nmsgstr \"連線到 %s (%s) 時失敗\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:974\n#, fuzzy\nmsgid \"File is a directory, save under it? [(y)es, (n)o, (a)ll]\"\nmsgstr \"檔案是一個目錄, 儲存在它下面 ?\"\n\n#: muttlib.c:974\nmsgid \"yna\"\nmsgstr \"\"\n\n#. L10N:\n#. Means \"The path you specified as the destination file is a directory.\"\n#. See the msgid \"Save to file: \" (alias.c, recvattach.c)\n#: muttlib.c:993\nmsgid \"File is a directory, save under it?\"\nmsgstr \"檔案是一個目錄, 儲存在它下面 ?\"\n\n#: muttlib.c:997\nmsgid \"File under directory: \"\nmsgstr \"在目錄底下的檔案：\"\n\n#: muttlib.c:1006\nmsgid \"File exists, (o)verwrite, (a)ppend, or (c)ancel?\"\nmsgstr \"檔案已經存在, (1)覆蓋, (2)附加, 或是 (3)取消 ?\"\n\n#: muttlib.c:1006\nmsgid \"oac\"\nmsgstr \"123\"\n\n#: muttlib.c:1507\nmsgid \"Can't save message to POP mailbox.\"\nmsgstr \"無法將信件存到信箱。\"\n\n#: muttlib.c:1516\n#, c-format\nmsgid \"Append messages to %s?\"\nmsgstr \"附加信件到 %s ?\"\n\n#: muttlib.c:1528\n#, c-format\nmsgid \"%s is not a mailbox!\"\nmsgstr \"%s 不是信箱！\"\n\n#: mx.c:116\n#, c-format\nmsgid \"Lock count exceeded, remove lock for %s?\"\nmsgstr \"鎖進數量超過限額，將 %s 的鎖移除？\"\n\n#: mx.c:128\n#, c-format\nmsgid \"Can't dotlock %s.\\n\"\nmsgstr \"無法用 dotlock 鎖住 %s。\\n\"\n\n#: mx.c:184\nmsgid \"Timeout exceeded while attempting fcntl lock!\"\nmsgstr \"嘗試 fcntl 的鎖定時超過時間!\"\n\n#: mx.c:190\n#, c-format\nmsgid \"Waiting for fcntl lock... %d\"\nmsgstr \"正在等待 fcntl 的鎖定… %d\"\n\n#: mx.c:217\nmsgid \"Timeout exceeded while attempting flock lock!\"\nmsgstr \"嘗試 flock 時超過時間！\"\n\n#: mx.c:224\n#, c-format\nmsgid \"Waiting for flock attempt... %d\"\nmsgstr \"正在等待 flock 執行成功… %d\"\n\n#: mx.c:555\n#, c-format\nmsgid \"Couldn't lock %s\\n\"\nmsgstr \"無法鎖住 %s。\\n\"\n\n#: mx.c:771\n#, c-format\nmsgid \"Could not synchronize mailbox %s!\"\nmsgstr \"無法與 %s 信箱同步！\"\n\n#: mx.c:835\n#, c-format\nmsgid \"Move read messages to %s?\"\nmsgstr \"搬移已讀取的信件到 %s？\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted message?\"\nmsgstr \"清除 %d 封已經被刪除的信件？\"\n\n#: mx.c:851 mx.c:1118\n#, c-format\nmsgid \"Purge %d deleted messages?\"\nmsgstr \"清除 %d 封已被刪除的信件？\"\n\n#: mx.c:872\n#, c-format\nmsgid \"Moving read messages to %s...\"\nmsgstr \"正在搬移已經讀取的信件到 %s …\"\n\n#: mx.c:932 mx.c:1109\nmsgid \"Mailbox is unchanged.\"\nmsgstr \"信箱沒有變動。\"\n\n#: mx.c:972\n#, c-format\nmsgid \"%d kept, %d moved, %d deleted.\"\nmsgstr \"%d 封信件被保留, %d 封信件被搬移, %d 封信件被刪除。\"\n\n#: mx.c:975 mx.c:1161\n#, c-format\nmsgid \"%d kept, %d deleted.\"\nmsgstr \"%d 封信件被保留, %d 封信件被刪除。\"\n\n#: mx.c:1093\n#, c-format\nmsgid \" Press '%s' to toggle write\"\nmsgstr \" 請按下 '%s' 來切換寫入模式\"\n\n#: mx.c:1095\nmsgid \"Use 'toggle-write' to re-enable write!\"\nmsgstr \"請使用 'toggle-write' 來重新啟動寫入功能!\"\n\n#: mx.c:1097\n#, c-format\nmsgid \"Mailbox is marked unwritable. %s\"\nmsgstr \"信箱被標記成為無法寫入的. %s\"\n\n# How to translate?\n#: mx.c:1155\nmsgid \"Mailbox checkpointed.\"\nmsgstr \"\"\n\n#: mx.c:1474\nmsgid \"Can't write message\"\nmsgstr \"無法寫信件\"\n\n#: mx.c:1513\nmsgid \"Integer overflow -- can't allocate memory.\"\nmsgstr \"\"\n\n#: pager.c:1533\nmsgid \"PrevPg\"\nmsgstr \"上一頁\"\n\n#: pager.c:1534\nmsgid \"NextPg\"\nmsgstr \"下一頁\"\n\n#: pager.c:1538\nmsgid \"View Attachm.\"\nmsgstr \"顯示附件。\"\n\n#: pager.c:1541\nmsgid \"Next\"\nmsgstr \"下一個\"\n\n#: pager.c:1955 pager.c:1986 pager.c:2018 pager.c:2294\nmsgid \"Bottom of message is shown.\"\nmsgstr \"現正顯示最下面的信件。\"\n\n#: pager.c:1971 pager.c:1993 pager.c:2000 pager.c:2007\nmsgid \"Top of message is shown.\"\nmsgstr \"現正顯示最上面的信件。\"\n\n#: pager.c:2232\nmsgid \"Help is currently being shown.\"\nmsgstr \"現正顯示說明文件。\"\n\n#: pager.c:2261\nmsgid \"No more quoted text.\"\nmsgstr \"不能有再多的引言。\"\n\n#: pager.c:2274\nmsgid \"No more unquoted text after quoted text.\"\nmsgstr \"在引言後有過多的非引言文字。\"\n\n#: parse.c:588\nmsgid \"multipart message has no boundary parameter!\"\nmsgstr \"多部份郵件沒有分隔的參數!\"\n\n#: pattern.c:266 pattern.c:586\n#, c-format\nmsgid \"Error in expression: %s\"\nmsgstr \"表達式有錯誤：%s\"\n\n#: pattern.c:271 pattern.c:591\n#, fuzzy, c-format\nmsgid \"Empty expression\"\nmsgstr \"表達式有錯誤\"\n\n#: pattern.c:404\n#, c-format\nmsgid \"Invalid day of month: %s\"\nmsgstr \"無效的日子：%s\"\n\n#: pattern.c:418\n#, c-format\nmsgid \"Invalid month: %s\"\nmsgstr \"無效的月份：%s\"\n\n#: pattern.c:570\n#, c-format\nmsgid \"Invalid relative date: %s\"\nmsgstr \"無效的相對日期：%s\"\n\n#: pattern.c:813 pattern.c:965\n#, c-format\nmsgid \"error in pattern at: %s\"\nmsgstr \"在樣式上有錯誤：%s\"\n\n#: pattern.c:839\n#, fuzzy, c-format\nmsgid \"missing pattern: %s\"\nmsgstr \"錯失參數\"\n\n#: pattern.c:849\n#, fuzzy, c-format\nmsgid \"mismatched brackets: %s\"\nmsgstr \"不對稱的括弧：%s\"\n\n#: pattern.c:905\n#, fuzzy, c-format\nmsgid \"%c: invalid pattern modifier\"\nmsgstr \"%c：無效的指令\"\n\n#: pattern.c:911\n#, c-format\nmsgid \"%c: not supported in this mode\"\nmsgstr \"%c：在這個模式不支援\"\n\n#: pattern.c:924\n#, c-format\nmsgid \"missing parameter\"\nmsgstr \"錯失參數\"\n\n#: pattern.c:940\n#, c-format\nmsgid \"mismatched parenthesis: %s\"\nmsgstr \"不對稱的括弧：%s\"\n\n#: pattern.c:972\nmsgid \"empty pattern\"\nmsgstr \"空的格式\"\n\n#: pattern.c:1226\n#, c-format\nmsgid \"error: unknown op %d (report this error).\"\nmsgstr \"錯誤：不明的 op %d (請回報這個錯誤)。\"\n\n#: pattern.c:1309 pattern.c:1449\nmsgid \"Compiling search pattern...\"\nmsgstr \"編譯搜尋樣式中…\"\n\n#: pattern.c:1330\nmsgid \"Executing command on matching messages...\"\nmsgstr \"正在對符合的郵件執行命令…\"\n\n#: pattern.c:1397\nmsgid \"No messages matched criteria.\"\nmsgstr \"沒有郵件符合要求。\"\n\n#: pattern.c:1479\n#, fuzzy\nmsgid \"Searching...\"\nmsgstr \"儲存中…\"\n\n#: pattern.c:1492\nmsgid \"Search hit bottom without finding match\"\nmsgstr \"已搜尋至結尾，並沒有發現任何符合\"\n\n#: pattern.c:1503\nmsgid \"Search hit top without finding match\"\nmsgstr \"已搜尋至開頭，並沒有發現任何符合\"\n\n#: pattern.c:1535\nmsgid \"Search interrupted.\"\nmsgstr \"搜尋已被中斷。\"\n\n#: pgp.c:91\nmsgid \"Enter PGP passphrase:\"\nmsgstr \"請輸入 PGP 通行密碼：\"\n\n#: pgp.c:105\nmsgid \"PGP passphrase forgotten.\"\nmsgstr \"已忘記 PGP 通行密碼。\"\n\n#: pgp.c:449\nmsgid \"[-- Error: unable to create PGP subprocess! --]\\n\"\nmsgstr \"[-- 錯誤：無法建立 PGP 子程序！ --]\\n\"\n\n#: pgp.c:483 pgp.c:752 pgp.c:964\nmsgid \"\"\n\"[-- End of PGP output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- PGP 輸出部份結束 --]\\n\"\n\"\\n\"\n\n#: pgp.c:860\nmsgid \"Internal error.  Please submit a bug report.\"\nmsgstr \"\"\n\n#: pgp.c:921\nmsgid \"\"\n\"[-- Error: could not create a PGP subprocess! --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- 錯誤：無法建立 PGP 子程序！ --]\\n\"\n\"\\n\"\n\n#: pgp.c:952 pgp.c:976\n#, fuzzy\nmsgid \"Decryption failed\"\nmsgstr \"登入失敗。\"\n\n#: pgp.c:1182\nmsgid \"Can't open PGP subprocess!\"\nmsgstr \"無法開啟 PGP 子程序！\"\n\n#: pgp.c:1616\nmsgid \"Can't invoke PGP\"\nmsgstr \"不能執行 PGP\"\n\n#: pgp.c:1730\n#, fuzzy, c-format\nmsgid \"PGP (s)ign, sign (a)s, %s format, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"PGP/M(i)ME\"\nmsgstr \"\"\n\n#: pgp.c:1731 pgp.c:1761 pgp.c:1783\nmsgid \"(i)nline\"\nmsgstr \"\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the five following letter sequences.\n#: pgp.c:1737\nmsgid \"safcoi\"\nmsgstr \"\"\n\n#: pgp.c:1742\n#, fuzzy\nmsgid \"PGP (s)ign, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: pgp.c:1743\nmsgid \"safco\"\nmsgstr \"\"\n\n#: pgp.c:1760\n#, fuzzy, c-format\nmsgid \"\"\n\"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, (c)lear, or (o)ppenc \"\n\"mode? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: pgp.c:1763\n#, fuzzy\nmsgid \"esabfcoi\"\nmsgstr \"12345\"\n\n#: pgp.c:1768\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: pgp.c:1769\n#, fuzzy\nmsgid \"esabfco\"\nmsgstr \"12345\"\n\n#: pgp.c:1782\n#, fuzzy, c-format\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, %s format, or (c)lear? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: pgp.c:1785\n#, fuzzy\nmsgid \"esabfci\"\nmsgstr \"12345\"\n\n#: pgp.c:1790\n#, fuzzy\nmsgid \"PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: pgp.c:1791\n#, fuzzy\nmsgid \"esabfc\"\nmsgstr \"12345\"\n\n#: pgpinvoke.c:309\nmsgid \"Fetching PGP key...\"\nmsgstr \"正在拿取 PGP 鑰匙 …\"\n\n#: pgpkey.c:491\n#, fuzzy\nmsgid \"All matching keys are expired, revoked, or disabled.\"\nmsgstr \"所有符合的鑰匙經已過期或取消。\"\n\n#: pgpkey.c:532\n#, c-format\nmsgid \"PGP keys matching <%s>.\"\nmsgstr \"PGP 鑰匙符合 <%s>。\"\n\n#: pgpkey.c:534\n#, c-format\nmsgid \"PGP keys matching \\\"%s\\\".\"\nmsgstr \"PGP 鑰匙符合 \\\"%s\\\"。\"\n\n#: pgpkey.c:553 pgpkey.c:746\nmsgid \"Can't open /dev/null\"\nmsgstr \"無法開啟 /dev/null\"\n\n#: pgpkey.c:778\n#, c-format\nmsgid \"PGP Key %s.\"\nmsgstr \"PGP 鑰匙 %s。\"\n\n#: pop.c:102 pop_lib.c:210\n#, c-format\nmsgid \"Command TOP is not supported by server.\"\nmsgstr \"伺服器不支援 TOP 指令。\"\n\n#: pop.c:129\nmsgid \"Can't write header to temporary file!\"\nmsgstr \"無法把標頭寫到暫存檔！\"\n\n#: pop.c:276 pop_lib.c:212\n#, c-format\nmsgid \"Command UIDL is not supported by server.\"\nmsgstr \"伺服器不支援 UIDL 指令。\"\n\n#: pop.c:296\n#, fuzzy, c-format\nmsgid \"%d messages have been lost. Try reopening the mailbox.\"\nmsgstr \"信件的索引不正確。請再重新開啟信箱。\"\n\n#: pop.c:411 pop.c:801\n#, c-format\nmsgid \"%s is an invalid POP path\"\nmsgstr \"\"\n\n#: pop.c:454\nmsgid \"Fetching list of messages...\"\nmsgstr \"正在拿取信件…\"\n\n#: pop.c:612\nmsgid \"Can't write message to temporary file!\"\nmsgstr \"無法把信件寫到暫存檔！\"\n\n#: pop.c:678\n#, fuzzy\nmsgid \"Marking messages deleted...\"\nmsgstr \"標簽了的 %d 封信件刪去了…\"\n\n#: pop.c:756 pop.c:821\nmsgid \"Checking for new messages...\"\nmsgstr \"看看有沒有新信件…\"\n\n#: pop.c:785\nmsgid \"POP host is not defined.\"\nmsgstr \"POP 主機沒有被定義。\"\n\n#: pop.c:849\nmsgid \"No new mail in POP mailbox.\"\nmsgstr \"POP 信箱中沒有新的信件\"\n\n#: pop.c:856\nmsgid \"Delete messages from server?\"\nmsgstr \"刪除伺服器上的信件嗎？\"\n\n#: pop.c:858\n#, c-format\nmsgid \"Reading new messages (%d bytes)...\"\nmsgstr \"讀取新信件中 (%d 個位元組)…\"\n\n#: pop.c:900\nmsgid \"Error while writing mailbox!\"\nmsgstr \"寫入信箱時發生錯誤！\"\n\n#: pop.c:904\n#, c-format\nmsgid \"%s [%d of %d messages read]\"\nmsgstr \"%s [已閱讀 %2d 封信件中的 %1d 封]\"\n\n#: pop.c:927 pop_lib.c:378\nmsgid \"Server closed connection!\"\nmsgstr \"與伺服器的聯結中斷了!\"\n\n#: pop_auth.c:79\nmsgid \"Authenticating (SASL)...\"\nmsgstr \"驗證中 (SASL)…\"\n\n#: pop_auth.c:203\nmsgid \"POP timestamp is invalid!\"\nmsgstr \"\"\n\n#: pop_auth.c:208\nmsgid \"Authenticating (APOP)...\"\nmsgstr \"驗證中 (APOP)…\"\n\n#: pop_auth.c:231\nmsgid \"APOP authentication failed.\"\nmsgstr \"APOP 驗證失敗。\"\n\n#: pop_auth.c:266\n#, c-format\nmsgid \"Command USER is not supported by server.\"\nmsgstr \"伺服器不支援 USER 指令。\"\n\n#: pop_lib.c:57\n#, fuzzy, c-format\nmsgid \"Invalid POP URL: %s\\n\"\nmsgstr \"無效的月份：%s\"\n\n#: pop_lib.c:208\nmsgid \"Unable to leave messages on server.\"\nmsgstr \"無法把信件留在伺服器上。\"\n\n#: pop_lib.c:238\n#, c-format\nmsgid \"Error connecting to server: %s\"\nmsgstr \"連線到 %s 時失敗\"\n\n#: pop_lib.c:392\nmsgid \"Closing connection to POP server...\"\nmsgstr \"正在關閉與 POP 伺服器的連線…\"\n\n#: pop_lib.c:571\nmsgid \"Verifying message indexes...\"\nmsgstr \"正在檢查信件的指引 …\"\n\n#: pop_lib.c:593\nmsgid \"Connection lost. Reconnect to POP server?\"\nmsgstr \"連線中斷。再與 POP 伺服器連線嗎？\"\n\n#: postpone.c:165\nmsgid \"Postponed Messages\"\nmsgstr \"信件已經被延遲寄出\"\n\n#: postpone.c:245 postpone.c:254\nmsgid \"No postponed messages.\"\nmsgstr \"沒有被延遲寄出的信件。\"\n\n#: postpone.c:455 postpone.c:476 postpone.c:510\n#, fuzzy\nmsgid \"Illegal crypto header\"\nmsgstr \"不合規定的 PGP 標頭\"\n\n#: postpone.c:496\n#, fuzzy\nmsgid \"Illegal S/MIME header\"\nmsgstr \"不合規定的 S/MIME 標頭\"\n\n#: postpone.c:584\n#, fuzzy\nmsgid \"Decrypting message...\"\nmsgstr \"拿取信件中…\"\n\n#: postpone.c:592\n#, fuzzy\nmsgid \"Decryption failed.\"\nmsgstr \"登入失敗。\"\n\n#: query.c:50\nmsgid \"New Query\"\nmsgstr \"新的查詢\"\n\n#: query.c:51\nmsgid \"Make Alias\"\nmsgstr \"製作別名\"\n\n#: query.c:52\nmsgid \"Search\"\nmsgstr \"搜尋\"\n\n#: query.c:114\nmsgid \"Waiting for response...\"\nmsgstr \"等待回應中…\"\n\n#: query.c:265 query.c:294\nmsgid \"Query command not defined.\"\nmsgstr \"查詢指令尚未定義。\"\n\n#: query.c:321\n#, c-format\nmsgid \"Query\"\nmsgstr \"查詢\"\n\n#: query.c:333 query.c:358\nmsgid \"Query: \"\nmsgstr \"查詢：\"\n\n#: query.c:341 query.c:367\n#, c-format\nmsgid \"Query '%s'\"\nmsgstr \"查詢 '%s'\"\n\n#: recvattach.c:55\nmsgid \"Pipe\"\nmsgstr \"管線\"\n\n#: recvattach.c:56\nmsgid \"Print\"\nmsgstr \"顯示\"\n\n#: recvattach.c:484\nmsgid \"Saving...\"\nmsgstr \"儲存中…\"\n\n#: recvattach.c:487 recvattach.c:578\nmsgid \"Attachment saved.\"\nmsgstr \"附件已被儲存。\"\n\n#: recvattach.c:590\n#, c-format\nmsgid \"WARNING!  You are about to overwrite %s, continue?\"\nmsgstr \"警告! 您正在覆蓋 %s, 是否要繼續?\"\n\n#: recvattach.c:608\nmsgid \"Attachment filtered.\"\nmsgstr \"附件被過濾掉。\"\n\n#: recvattach.c:675\nmsgid \"Filter through: \"\nmsgstr \"經過過濾：\"\n\n#: recvattach.c:675\nmsgid \"Pipe to: \"\nmsgstr \"導引至：\"\n\n#: recvattach.c:710\n#, fuzzy, c-format\nmsgid \"I don't know how to print %s attachments!\"\nmsgstr \"我不知道要怎麼列印 %s 附件!\"\n\n#: recvattach.c:775\nmsgid \"Print tagged attachment(s)?\"\nmsgstr \"是否要列印標記起來的附件?\"\n\n#: recvattach.c:775\nmsgid \"Print attachment?\"\nmsgstr \"是否要列印附件?\"\n\n#: recvattach.c:1009\n#, fuzzy\nmsgid \"Can't decrypt encrypted message!\"\nmsgstr \"找不到已標記的訊息\"\n\n#: recvattach.c:1021\nmsgid \"Attachments\"\nmsgstr \"附件\"\n\n#: recvattach.c:1057\nmsgid \"There are no subparts to show!\"\nmsgstr \"沒有部件！\"\n\n#: recvattach.c:1118\nmsgid \"Can't delete attachment from POP server.\"\nmsgstr \"無法從 POP 伺服器刪除附件。\"\n\n#: recvattach.c:1126\n#, fuzzy\nmsgid \"Deletion of attachments from encrypted messages is unsupported.\"\nmsgstr \"未支援刪除 PGP 信件所附帶的附件。\"\n\n#: recvattach.c:1132\n#, fuzzy\nmsgid \"\"\n\"Deletion of attachments from signed messages may invalidate the signature.\"\nmsgstr \"未支援刪除 PGP 信件所附帶的附件。\"\n\n#: recvattach.c:1149 recvattach.c:1166\nmsgid \"Only deletion of multipart attachments is supported.\"\nmsgstr \"只支援刪除多重附件\"\n\n#: recvcmd.c:43\nmsgid \"You may only bounce message/rfc822 parts.\"\nmsgstr \"您只能直接傳送 message/rfc822 的部分。\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing message!\"\nmsgstr \"寄信途中發生錯誤。\"\n\n#: recvcmd.c:241\n#, fuzzy\nmsgid \"Error bouncing messages!\"\nmsgstr \"寄信途中發生錯誤。\"\n\n#: recvcmd.c:441\n#, c-format\nmsgid \"Can't open temporary file %s.\"\nmsgstr \"無法開啟暫存檔 %s\"\n\n#: recvcmd.c:472\nmsgid \"Forward as attachments?\"\nmsgstr \"利用附件形式來轉寄？\"\n\n#: recvcmd.c:486\nmsgid \"Can't decode all tagged attachments.  MIME-forward the others?\"\nmsgstr \"未能把所有已標簽的附件解碼。要用 MIME 轉寄其它的嗎？\"\n\n#: recvcmd.c:611\nmsgid \"Forward MIME encapsulated?\"\nmsgstr \"用 MIME 的方式來轉寄？\"\n\n#: recvcmd.c:619 recvcmd.c:869\n#, c-format\nmsgid \"Can't create %s.\"\nmsgstr \"無法建立 %s.\"\n\n#: recvcmd.c:752\nmsgid \"Can't find any tagged messages.\"\nmsgstr \"找不到已標記的訊息\"\n\n#: recvcmd.c:773 send.c:740\nmsgid \"No mailing lists found!\"\nmsgstr \"沒有找到郵寄論壇！\"\n\n#: recvcmd.c:848\nmsgid \"Can't decode all tagged attachments.  MIME-encapsulate the others?\"\nmsgstr \"未能把所有已標簽的附件解碼。要用 MIME 包封其它的嗎？\"\n\n#: remailer.c:478\nmsgid \"Append\"\nmsgstr \"加上\"\n\n#: remailer.c:479\nmsgid \"Insert\"\nmsgstr \"加入\"\n\n#: remailer.c:480\nmsgid \"Delete\"\nmsgstr \"刪除\"\n\n#: remailer.c:482\nmsgid \"OK\"\nmsgstr \"OK\"\n\n#: remailer.c:510\nmsgid \"Can't get mixmaster's type2.list!\"\nmsgstr \"拿不到 mixmaster 的 type2.list！\"\n\n#: remailer.c:535\nmsgid \"Select a remailer chain.\"\nmsgstr \"選擇一個郵件轉接器的鏈結\"\n\n#: remailer.c:595\n#, c-format\nmsgid \"Error: %s can't be used as the final remailer of a chain.\"\nmsgstr \"錯誤：%s 不能用作鏈結的最後一個郵件轉接器\"\n\n#: remailer.c:625\n#, c-format\nmsgid \"Mixmaster chains are limited to %d elements.\"\nmsgstr \"Mixmaster 鏈結最多為 %d 個元件\"\n\n#: remailer.c:648\nmsgid \"The remailer chain is already empty.\"\nmsgstr \"郵件轉接器的鏈結已沒有東西了。\"\n\n#: remailer.c:658\nmsgid \"You already have the first chain element selected.\"\nmsgstr \"你已經選擇了鏈結的第一個元件。\"\n\n#: remailer.c:668\nmsgid \"You already have the last chain element selected.\"\nmsgstr \"你已經選擇了鏈結的最後一個元件。\"\n\n#: remailer.c:707\nmsgid \"Mixmaster doesn't accept Cc or Bcc headers.\"\nmsgstr \"Mixmaster 不接受 Cc 和 Bcc 的標頭。\"\n\n#: remailer.c:731\nmsgid \"\"\n\"Please set the hostname variable to a proper value when using mixmaster!\"\nmsgstr \"使用 mixmaster 時請先設定好 hostname 變數！\"\n\n#: remailer.c:765\n#, c-format\nmsgid \"Error sending message, child exited %d.\\n\"\nmsgstr \"寄送訊息時出現錯誤，子程序結束 %d。\\n\"\n\n#: remailer.c:769\nmsgid \"Error sending message.\"\nmsgstr \"寄信途中發生錯誤。\"\n\n#: rfc1524.c:164\n#, c-format\nmsgid \"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"\nmsgstr \"在 \\\"%2$s\\\" 的第 %3$d 行發現類別 %1$s 為錯誤的格式紀錄\"\n\n#: rfc1524.c:396\nmsgid \"No mailcap path specified\"\nmsgstr \"沒有指定 mailcap 路徑\"\n\n#: rfc1524.c:424\n#, c-format\nmsgid \"mailcap entry for type %s not found\"\nmsgstr \"沒有發現類型 %s 的 mailcap 紀錄\"\n\n#: score.c:75\nmsgid \"score: too few arguments\"\nmsgstr \"分數：太少的引數\"\n\n#: score.c:84\nmsgid \"score: too many arguments\"\nmsgstr \"分數：太多的引數\"\n\n#: score.c:122\nmsgid \"Error: score: invalid number\"\nmsgstr \"\"\n\n#: send.c:251\nmsgid \"No subject, abort?\"\nmsgstr \"沒有標題，要不要中斷？\"\n\n#: send.c:253\nmsgid \"No subject, aborting.\"\nmsgstr \"沒有標題，正在中斷中。\"\n\n#. L10N:\n#. Asks whether the user respects the reply-to header.\n#. If she says no, mutt will reply to the from header's address instead.\n#: send.c:503\n#, c-format\nmsgid \"Reply to %s%s?\"\nmsgstr \"要回覆給 %s%s?\"\n\n#: send.c:537\n#, c-format\nmsgid \"Follow-up to %s%s?\"\nmsgstr \"以後的回覆都寄至 %s%s?\"\n\n#: send.c:715\nmsgid \"No tagged messages are visible!\"\nmsgstr \"沒有被標記了的信件在顯示！\"\n\n#: send.c:766\nmsgid \"Include message in reply?\"\nmsgstr \"回信時是否要包含原本的信件內容？\"\n\n#: send.c:771\nmsgid \"Including quoted message...\"\nmsgstr \"正引入引言部分…\"\n\n#: send.c:781\nmsgid \"Could not include all requested messages!\"\nmsgstr \"無法包含所有要求的信件！\"\n\n#: send.c:795\nmsgid \"Forward as attachment?\"\nmsgstr \"利用附件形式來轉寄？\"\n\n#: send.c:799\nmsgid \"Preparing forwarded message...\"\nmsgstr \"準備轉寄信件…\"\n\n#: send.c:1176\nmsgid \"Recall postponed message?\"\nmsgstr \"要叫出被延遲的信件?\"\n\n#: send.c:1426\n#, fuzzy\nmsgid \"Edit forwarded message?\"\nmsgstr \"準備轉寄信件…\"\n\n#: send.c:1475\nmsgid \"Abort unmodified message?\"\nmsgstr \"是否要中斷未修改過的信件?\"\n\n#: send.c:1477\nmsgid \"Aborted unmodified message.\"\nmsgstr \"中斷沒有修改過的信件\"\n\n#: send.c:1657\nmsgid \"Message postponed.\"\nmsgstr \"信件被延遲寄出。\"\n\n#: send.c:1668\nmsgid \"No recipients are specified!\"\nmsgstr \"沒有指定接受者！\"\n\n#: send.c:1673\nmsgid \"No recipients were specified.\"\nmsgstr \"沒有指定接受者。\"\n\n#: send.c:1689\nmsgid \"No subject, abort sending?\"\nmsgstr \"沒有信件標題，要中斷寄信的工作?\"\n\n#: send.c:1693\nmsgid \"No subject specified.\"\nmsgstr \"沒有指定標題。\"\n\n#: send.c:1755 smtp.c:188\nmsgid \"Sending message...\"\nmsgstr \"正在寄出信件…\"\n\n#: send.c:1788\n#, fuzzy\nmsgid \"Save attachments in Fcc?\"\nmsgstr \"用文字方式顯示附件內容\"\n\n#: send.c:1897\nmsgid \"Could not send the message.\"\nmsgstr \"無法寄出信件。\"\n\n#: send.c:1902\nmsgid \"Mail sent.\"\nmsgstr \"信件已經寄出。\"\n\n#: send.c:1902\nmsgid \"Sending in background.\"\nmsgstr \"正在背景作業中傳送。\"\n\n#: sendlib.c:425\nmsgid \"No boundary parameter found! [report this error]\"\nmsgstr \"沒有發現分界變數！[回報錯誤]\"\n\n#: sendlib.c:455\n#, c-format\nmsgid \"%s no longer exists!\"\nmsgstr \"%s 已經不存在！\"\n\n#: sendlib.c:878\n#, fuzzy, c-format\nmsgid \"%s isn't a regular file.\"\nmsgstr \"%s 不是信箱。\"\n\n#: sendlib.c:1050\n#, c-format\nmsgid \"Could not open %s\"\nmsgstr \"無法開啟 %s\"\n\n#: sendlib.c:2357\nmsgid \"$sendmail must be set in order to send mail.\"\nmsgstr \"\"\n\n#: sendlib.c:2428\n#, c-format\nmsgid \"Error sending message, child exited %d (%s).\"\nmsgstr \"寄送訊息出現錯誤，子程序已結束 %d (%s)。\"\n\n#: sendlib.c:2434\nmsgid \"Output of the delivery process\"\nmsgstr \"Delivery process 的輸出\"\n\n#: sendlib.c:2608\n#, c-format\nmsgid \"Bad IDN %s while preparing resent-from.\"\nmsgstr \"\"\n\n#: signal.c:43\n#, c-format\nmsgid \"%s...  Exiting.\\n\"\nmsgstr \"%s… 正在離開。\\n\"\n\n#: signal.c:46 signal.c:49\n#, c-format\nmsgid \"Caught %s...  Exiting.\\n\"\nmsgstr \"捕抓到 %s… 正在離開。\\n\"\n\n#: signal.c:51\n#, c-format\nmsgid \"Caught signal %d...  Exiting.\\n\"\nmsgstr \"捕抓到 signal %d… 正在離開.\\n\"\n\n#: smime.c:141\n#, fuzzy\nmsgid \"Enter S/MIME passphrase:\"\nmsgstr \"請輸入 S/MIME 通行密碼：\"\n\n#: smime.c:379\nmsgid \"Trusted   \"\nmsgstr \"\"\n\n#: smime.c:382\nmsgid \"Verified  \"\nmsgstr \"\"\n\n#: smime.c:385\nmsgid \"Unverified\"\nmsgstr \"\"\n\n#: smime.c:388\n#, fuzzy\nmsgid \"Expired   \"\nmsgstr \"離開  \"\n\n#: smime.c:391\nmsgid \"Revoked   \"\nmsgstr \"\"\n\n#: smime.c:394\n#, fuzzy\nmsgid \"Invalid   \"\nmsgstr \"無效的月份：%s\"\n\n#: smime.c:397\n#, fuzzy\nmsgid \"Unknown   \"\nmsgstr \"不清楚\"\n\n#: smime.c:429\n#, fuzzy, c-format\nmsgid \"S/MIME certificates matching \\\"%s\\\".\"\nmsgstr \"S/MIME 鑰匙符合 \\\"%s\\\"。\"\n\n#: smime.c:472\n#, fuzzy\nmsgid \"ID is not trusted.\"\nmsgstr \"這個 ID 不可接受。\"\n\n#: smime.c:761\n#, fuzzy\nmsgid \"Enter keyID: \"\nmsgstr \"請輸入 %s 的鑰匙 ID：\"\n\n#: smime.c:908\n#, c-format\nmsgid \"No (valid) certificate found for %s.\"\nmsgstr \"\"\n\n#: smime.c:961 smime.c:991 smime.c:1058 smime.c:1102 smime.c:1167 smime.c:1242\n#, fuzzy\nmsgid \"Error: unable to create OpenSSL subprocess!\"\nmsgstr \"[-- 錯誤：無法建立 OpenSSL 子程序！ --]\\n\"\n\n#: smime.c:1320\n#, fuzzy\nmsgid \"no certfile\"\nmsgstr \"無法建立過濾器\"\n\n#: smime.c:1323\n#, fuzzy\nmsgid \"no mbox\"\nmsgstr \"（沒有信箱）\"\n\n#: smime.c:1466 smime.c:1623\nmsgid \"No output from OpenSSL...\"\nmsgstr \"\"\n\n#: smime.c:1533\nmsgid \"Can't sign: No key specified. Use Sign As.\"\nmsgstr \"\"\n\n#: smime.c:1585\n#, fuzzy\nmsgid \"Can't open OpenSSL subprocess!\"\nmsgstr \"無法開啟 OpenSSL 子程序！\"\n\n#: smime.c:1791 smime.c:1914\n#, fuzzy\nmsgid \"\"\n\"[-- End of OpenSSL output --]\\n\"\n\"\\n\"\nmsgstr \"\"\n\"[-- OpenSSL 輸出部份結束 --]\\n\"\n\"\\n\"\n\n#: smime.c:1873 smime.c:1884\n#, fuzzy\nmsgid \"[-- Error: unable to create OpenSSL subprocess! --]\\n\"\nmsgstr \"[-- 錯誤：無法建立 OpenSSL 子程序！ --]\\n\"\n\n#: smime.c:1918\n#, fuzzy\nmsgid \"[-- The following data is S/MIME encrypted --]\\n\"\nmsgstr \"\"\n\"[-- 下面是 S/MIME 加密資料 --]\\n\"\n\"\\n\"\n\n#: smime.c:1921\n#, fuzzy\nmsgid \"[-- The following data is S/MIME signed --]\\n\"\nmsgstr \"\"\n\"[-- 以下的資料已被簽署 --]\\n\"\n\"\\n\"\n\n#: smime.c:1985\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME encrypted data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- S/MIME 加密資料結束 --]\\n\"\n\n#: smime.c:1987\n#, fuzzy\nmsgid \"\"\n\"\\n\"\n\"[-- End of S/MIME signed data. --]\\n\"\nmsgstr \"\"\n\"\\n\"\n\"[-- 簽署的資料結束 --]\\n\"\n\n#: smime.c:2109\n#, fuzzy\nmsgid \"\"\n\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#. L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n#. 'clear'.  Please use a corresponding letter in your language.\n#. Alternatively, you may duplicate the letter 'c' is translated to.\n#. This comment also applies to the two following letter sequences.\n#: smime.c:2114\nmsgid \"swafco\"\nmsgstr \"\"\n\n#: smime.c:2123\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or \"\n\"(o)ppenc mode? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: smime.c:2124\n#, fuzzy\nmsgid \"eswabfco\"\nmsgstr \"12345\"\n\n#: smime.c:2132\n#, fuzzy\nmsgid \"\"\n\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \"\nmsgstr \"(1)加密, (2)簽名, (3)用別的身份簽, (4)兩者皆要, 或 (5)放棄？\"\n\n#: smime.c:2133\n#, fuzzy\nmsgid \"eswabfc\"\nmsgstr \"12345\"\n\n#: smime.c:2154\nmsgid \"Choose algorithm family: 1: DES, 2: RC2, 3: AES, or (c)lear? \"\nmsgstr \"\"\n\n#: smime.c:2157\nmsgid \"drac\"\nmsgstr \"\"\n\n#: smime.c:2160\nmsgid \"1: DES, 2: Triple-DES \"\nmsgstr \"\"\n\n#: smime.c:2161\nmsgid \"dt\"\nmsgstr \"\"\n\n#: smime.c:2173\nmsgid \"1: RC2-40, 2: RC2-64, 3: RC2-128 \"\nmsgstr \"\"\n\n#: smime.c:2174\nmsgid \"468\"\nmsgstr \"\"\n\n#: smime.c:2189\nmsgid \"1: AES128, 2: AES192, 3: AES256 \"\nmsgstr \"\"\n\n#: smime.c:2190\nmsgid \"895\"\nmsgstr \"\"\n\n#: smtp.c:137\n#, fuzzy, c-format\nmsgid \"SMTP session failed: %s\"\nmsgstr \"登入失敗： %s\"\n\n#: smtp.c:183\n#, fuzzy, c-format\nmsgid \"SMTP session failed: unable to open %s\"\nmsgstr \"登入失敗： %s\"\n\n#: smtp.c:294\nmsgid \"No from address given\"\nmsgstr \"\"\n\n#: smtp.c:356\nmsgid \"SMTP session failed: read error\"\nmsgstr \"\"\n\n#: smtp.c:358\nmsgid \"SMTP session failed: write error\"\nmsgstr \"\"\n\n#: smtp.c:360\nmsgid \"Invalid server response\"\nmsgstr \"\"\n\n#: smtp.c:383\n#, fuzzy, c-format\nmsgid \"Invalid SMTP URL: %s\"\nmsgstr \"無效的月份：%s\"\n\n#: smtp.c:493\nmsgid \"SMTP server does not support authentication\"\nmsgstr \"\"\n\n#: smtp.c:501\n#, fuzzy\nmsgid \"SMTP authentication requires SASL\"\nmsgstr \"GSSAPI 驗證失敗。\"\n\n#: smtp.c:535\n#, fuzzy, c-format\nmsgid \"%s authentication failed, trying next method\"\nmsgstr \"SASL 驗證失敗。\"\n\n#: smtp.c:552\n#, fuzzy\nmsgid \"SASL authentication failed\"\nmsgstr \"SASL 驗證失敗。\"\n\n#: sort.c:265\nmsgid \"Sorting mailbox...\"\nmsgstr \"信箱排序中…\"\n\n#: sort.c:302\nmsgid \"Could not find sorting function! [report this bug]\"\nmsgstr \"找不到排序的功能！[請回報這個問題]\"\n\n#: status.c:105\nmsgid \"(no mailbox)\"\nmsgstr \"（沒有信箱）\"\n\n#: thread.c:1095\n#, fuzzy\nmsgid \"Parent message is not visible in this limited view.\"\nmsgstr \"在限制閱覽模式下無法顯示主信件。\"\n\n#: thread.c:1101\nmsgid \"Parent message is not available.\"\nmsgstr \"主信件不存在。\"\n\n#: ../keymap_alldefs.h:5\nmsgid \"null operation\"\nmsgstr \"空的運算\"\n\n#: ../keymap_alldefs.h:6\nmsgid \"end of conditional execution (noop)\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:7\nmsgid \"force viewing of attachment using mailcap\"\nmsgstr \"強迫使用 mailcap 瀏覽附件\"\n\n#: ../keymap_alldefs.h:8\nmsgid \"view attachment as text\"\nmsgstr \"用文字方式顯示附件內容\"\n\n#: ../keymap_alldefs.h:9\nmsgid \"Toggle display of subparts\"\nmsgstr \"切換部件顯示\"\n\n#: ../keymap_alldefs.h:10\nmsgid \"move to the bottom of the page\"\nmsgstr \"移到本頁的最後面\"\n\n#: ../keymap_alldefs.h:11\nmsgid \"remail a message to another user\"\nmsgstr \"重新寄信給另外一個使用者\"\n\n#: ../keymap_alldefs.h:12\nmsgid \"select a new file in this directory\"\nmsgstr \"請選擇本目錄中一個新的檔案\"\n\n#: ../keymap_alldefs.h:13\nmsgid \"view file\"\nmsgstr \"顯示檔案\"\n\n#: ../keymap_alldefs.h:14\nmsgid \"display the currently selected file's name\"\nmsgstr \"顯示所選擇的檔案\"\n\n#: ../keymap_alldefs.h:15\nmsgid \"subscribe to current mailbox (IMAP only)\"\nmsgstr \"訂閱現在這個郵箱 (只適用於 IMAP)\"\n\n#: ../keymap_alldefs.h:16\n#, fuzzy\nmsgid \"unsubscribe from current mailbox (IMAP only)\"\nmsgstr \"取消訂閱現在這個郵箱 (只適用於 IMAP)\"\n\n#: ../keymap_alldefs.h:17\nmsgid \"toggle view all/subscribed mailboxes (IMAP only)\"\nmsgstr \"切換顯示 全部/已訂閱 的郵箱 (只適用於 IMAP)\"\n\n#: ../keymap_alldefs.h:18\n#, fuzzy\nmsgid \"list mailboxes with new mail\"\nmsgstr \"沒有信箱有新信件。\"\n\n#: ../keymap_alldefs.h:19\nmsgid \"change directories\"\nmsgstr \"改變目錄\"\n\n#: ../keymap_alldefs.h:20\nmsgid \"check mailboxes for new mail\"\nmsgstr \"檢查信箱是否有新信件\"\n\n#: ../keymap_alldefs.h:21\n#, fuzzy\nmsgid \"attach file(s) to this message\"\nmsgstr \"在這封信件中夾帶檔案\"\n\n#: ../keymap_alldefs.h:22\nmsgid \"attach message(s) to this message\"\nmsgstr \"在這封信件中夾帶信件\"\n\n#: ../keymap_alldefs.h:23\nmsgid \"edit the BCC list\"\nmsgstr \"編輯 BCC 列表\"\n\n#: ../keymap_alldefs.h:24\nmsgid \"edit the CC list\"\nmsgstr \"編輯 CC 列表\"\n\n#: ../keymap_alldefs.h:25\nmsgid \"edit attachment description\"\nmsgstr \"編輯附件的說明\"\n\n#: ../keymap_alldefs.h:26\nmsgid \"edit attachment transfer-encoding\"\nmsgstr \"編輯附件的傳輸編碼\"\n\n#: ../keymap_alldefs.h:27\nmsgid \"enter a file to save a copy of this message in\"\nmsgstr \"輸入用來儲存這封信件拷貝的檔案名稱\"\n\n#: ../keymap_alldefs.h:28\nmsgid \"edit the file to be attached\"\nmsgstr \"編輯附件的檔案名稱\"\n\n#: ../keymap_alldefs.h:29\nmsgid \"edit the from field\"\nmsgstr \"編輯發信人欄位\"\n\n#: ../keymap_alldefs.h:30\nmsgid \"edit the message with headers\"\nmsgstr \"編輯信件與標頭\"\n\n#: ../keymap_alldefs.h:31\nmsgid \"edit the message\"\nmsgstr \"編輯信件內容\"\n\n#: ../keymap_alldefs.h:32\nmsgid \"edit attachment using mailcap entry\"\nmsgstr \"使用 mailcap 編輯附件\"\n\n#: ../keymap_alldefs.h:33\nmsgid \"edit the Reply-To field\"\nmsgstr \"編輯 Reply-To 欄位\"\n\n#: ../keymap_alldefs.h:34\nmsgid \"edit the subject of this message\"\nmsgstr \"編輯信件的標題\"\n\n#: ../keymap_alldefs.h:35\nmsgid \"edit the TO list\"\nmsgstr \"編輯 TO 列表\"\n\n#: ../keymap_alldefs.h:36\nmsgid \"create a new mailbox (IMAP only)\"\nmsgstr \"建立新郵箱 (只適用於 IMAP)\"\n\n#: ../keymap_alldefs.h:37\nmsgid \"edit attachment content type\"\nmsgstr \"編輯附件的 content type\"\n\n#: ../keymap_alldefs.h:38\nmsgid \"get a temporary copy of an attachment\"\nmsgstr \"取得附件的暫存拷貝\"\n\n#: ../keymap_alldefs.h:39\nmsgid \"run ispell on the message\"\nmsgstr \"於信件執行 ispell\"\n\n#: ../keymap_alldefs.h:40\nmsgid \"compose new attachment using mailcap entry\"\nmsgstr \"使用 mailcap 來組合新的附件\"\n\n#: ../keymap_alldefs.h:41\nmsgid \"toggle recoding of this attachment\"\nmsgstr \"切換是否再為附件重新編碼\"\n\n#: ../keymap_alldefs.h:42\nmsgid \"save this message to send later\"\nmsgstr \"儲存信件以便稍後寄出\"\n\n#: ../keymap_alldefs.h:43\nmsgid \"rename/move an attached file\"\nmsgstr \"更改檔名∕移動 已被附帶的檔案\"\n\n#: ../keymap_alldefs.h:44\nmsgid \"send the message\"\nmsgstr \"寄出信件\"\n\n#: ../keymap_alldefs.h:45\nmsgid \"toggle disposition between inline/attachment\"\nmsgstr \"切換 合拼∕附件式 觀看模式\"\n\n#: ../keymap_alldefs.h:46\nmsgid \"toggle whether to delete file after sending it\"\nmsgstr \"切換寄出後是否刪除檔案\"\n\n#: ../keymap_alldefs.h:47\nmsgid \"update an attachment's encoding info\"\nmsgstr \"更新附件的編碼資訊\"\n\n#: ../keymap_alldefs.h:48\nmsgid \"write the message to a folder\"\nmsgstr \"存入一封信件到某個檔案夾\"\n\n#: ../keymap_alldefs.h:49\nmsgid \"copy a message to a file/mailbox\"\nmsgstr \"拷貝一封信件到某個檔案或信箱\"\n\n#: ../keymap_alldefs.h:50\nmsgid \"create an alias from a message sender\"\nmsgstr \"建立某封信件寄信人的別名\"\n\n#: ../keymap_alldefs.h:51\nmsgid \"move entry to bottom of screen\"\nmsgstr \"移至螢幕結尾\"\n\n#: ../keymap_alldefs.h:52\nmsgid \"move entry to middle of screen\"\nmsgstr \"移至螢幕中央\"\n\n#: ../keymap_alldefs.h:53\nmsgid \"move entry to top of screen\"\nmsgstr \"移至螢幕開頭\"\n\n#: ../keymap_alldefs.h:54\nmsgid \"make decoded (text/plain) copy\"\nmsgstr \"製作解碼的 (text/plain) 拷貝\"\n\n#: ../keymap_alldefs.h:55\nmsgid \"make decoded copy (text/plain) and delete\"\nmsgstr \"製作解碼的拷貝 (text/plain) 並且刪除之\"\n\n#: ../keymap_alldefs.h:56\nmsgid \"delete the current entry\"\nmsgstr \"刪除所在的資料\"\n\n#: ../keymap_alldefs.h:57\nmsgid \"delete the current mailbox (IMAP only)\"\nmsgstr \"刪除所在的郵箱 (只適用於 IMAP)\"\n\n#: ../keymap_alldefs.h:58\nmsgid \"delete all messages in subthread\"\nmsgstr \"刪除所有在子序列中的信件\"\n\n#: ../keymap_alldefs.h:59\nmsgid \"delete all messages in thread\"\nmsgstr \"刪除所有在序列中的信件\"\n\n#: ../keymap_alldefs.h:60\nmsgid \"display full address of sender\"\nmsgstr \"顯示寄信人的完整位址\"\n\n#: ../keymap_alldefs.h:61\nmsgid \"display message and toggle header weeding\"\nmsgstr \"顯示信件並切換是否顯示所有標頭資料\"\n\n#: ../keymap_alldefs.h:62\nmsgid \"display a message\"\nmsgstr \"顯示信件\"\n\n#: ../keymap_alldefs.h:63\nmsgid \"edit the raw message\"\nmsgstr \"編輯信件的真正內容\"\n\n#: ../keymap_alldefs.h:64\nmsgid \"delete the char in front of the cursor\"\nmsgstr \"刪除游標所在位置之前的字元\"\n\n#: ../keymap_alldefs.h:65\nmsgid \"move the cursor one character to the left\"\nmsgstr \"向左移動一個字元\"\n\n#: ../keymap_alldefs.h:66\nmsgid \"move the cursor to the beginning of the word\"\nmsgstr \"移動至字的開頭\"\n\n#: ../keymap_alldefs.h:67\nmsgid \"jump to the beginning of the line\"\nmsgstr \"跳到行首\"\n\n#: ../keymap_alldefs.h:68\nmsgid \"cycle among incoming mailboxes\"\nmsgstr \"圈選進入的郵筒\"\n\n#: ../keymap_alldefs.h:69\nmsgid \"complete filename or alias\"\nmsgstr \"完整的檔名或別名\"\n\n#: ../keymap_alldefs.h:70\nmsgid \"complete address with query\"\nmsgstr \"附上完整的位址查詢\"\n\n#: ../keymap_alldefs.h:71\nmsgid \"delete the char under the cursor\"\nmsgstr \"刪除游標所在的字母\"\n\n#: ../keymap_alldefs.h:72\nmsgid \"jump to the end of the line\"\nmsgstr \"跳到行尾\"\n\n#: ../keymap_alldefs.h:73\nmsgid \"move the cursor one character to the right\"\nmsgstr \"向游標向右移動一個字元\"\n\n#: ../keymap_alldefs.h:74\nmsgid \"move the cursor to the end of the word\"\nmsgstr \"移動至字的最後\"\n\n#: ../keymap_alldefs.h:75\n#, fuzzy\nmsgid \"scroll down through the history list\"\nmsgstr \"向上捲動使用紀錄清單\"\n\n#: ../keymap_alldefs.h:76\nmsgid \"scroll up through the history list\"\nmsgstr \"向上捲動使用紀錄清單\"\n\n#: ../keymap_alldefs.h:77\nmsgid \"delete chars from cursor to end of line\"\nmsgstr \"由游標所在位置刪除至行尾所有的字元\"\n\n#: ../keymap_alldefs.h:78\nmsgid \"delete chars from the cursor to the end of the word\"\nmsgstr \"由游標所在位置刪除至字尾所有的字元\"\n\n#: ../keymap_alldefs.h:79\nmsgid \"delete all chars on the line\"\nmsgstr \"刪除某行上所有的字母\"\n\n#: ../keymap_alldefs.h:80\nmsgid \"delete the word in front of the cursor\"\nmsgstr \"刪除游標之前的字\"\n\n#: ../keymap_alldefs.h:81\nmsgid \"quote the next typed key\"\nmsgstr \"用下一個輸入的鍵值作引言\"\n\n#: ../keymap_alldefs.h:82\nmsgid \"transpose character under cursor with previous\"\nmsgstr \"把遊標上的字母與前一個字交換\"\n\n#: ../keymap_alldefs.h:83\nmsgid \"capitalize the word\"\nmsgstr \"把字的第一個字母轉成大寫\"\n\n#: ../keymap_alldefs.h:84\nmsgid \"convert the word to lower case\"\nmsgstr \"把字串轉成小寫\"\n\n#: ../keymap_alldefs.h:85\nmsgid \"convert the word to upper case\"\nmsgstr \"把字串轉成大寫\"\n\n#: ../keymap_alldefs.h:86\nmsgid \"enter a muttrc command\"\nmsgstr \"輸入 muttrc 指令\"\n\n#: ../keymap_alldefs.h:87\nmsgid \"enter a file mask\"\nmsgstr \"輸入檔案遮罩\"\n\n#: ../keymap_alldefs.h:88\nmsgid \"exit this menu\"\nmsgstr \"離開這個選單\"\n\n#: ../keymap_alldefs.h:89\nmsgid \"filter attachment through a shell command\"\nmsgstr \"透過 shell 指令來過濾附件\"\n\n#: ../keymap_alldefs.h:90\nmsgid \"move to the first entry\"\nmsgstr \"移到第一項資料\"\n\n#: ../keymap_alldefs.h:91\nmsgid \"toggle a message's 'important' flag\"\nmsgstr \"切換信件的「重要」旗標\"\n\n#: ../keymap_alldefs.h:92\nmsgid \"forward a message with comments\"\nmsgstr \"轉寄訊息並加上額外文字\"\n\n#: ../keymap_alldefs.h:93\nmsgid \"select the current entry\"\nmsgstr \"選擇所在的資料記錄\"\n\n#: ../keymap_alldefs.h:94\nmsgid \"reply to all recipients\"\nmsgstr \"回覆給所有收件人\"\n\n#: ../keymap_alldefs.h:95\nmsgid \"scroll down 1/2 page\"\nmsgstr \"向下捲動半頁\"\n\n#: ../keymap_alldefs.h:96\nmsgid \"scroll up 1/2 page\"\nmsgstr \"向上捲動半頁\"\n\n#: ../keymap_alldefs.h:97\nmsgid \"this screen\"\nmsgstr \"這個畫面\"\n\n#: ../keymap_alldefs.h:98\nmsgid \"jump to an index number\"\nmsgstr \"跳到某一個索引號碼\"\n\n#: ../keymap_alldefs.h:99\nmsgid \"move to the last entry\"\nmsgstr \"移動到最後一項資料\"\n\n#: ../keymap_alldefs.h:100\nmsgid \"reply to specified mailing list\"\nmsgstr \"回覆給某一個指定的郵件列表\"\n\n#: ../keymap_alldefs.h:101\nmsgid \"execute a macro\"\nmsgstr \"執行一個巨集\"\n\n#: ../keymap_alldefs.h:102\nmsgid \"compose a new mail message\"\nmsgstr \"撰寫一封新的信件\"\n\n#: ../keymap_alldefs.h:103\nmsgid \"break the thread in two\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:104\nmsgid \"open a different folder\"\nmsgstr \"開啟另一個檔案夾\"\n\n#: ../keymap_alldefs.h:105\nmsgid \"open a different folder in read only mode\"\nmsgstr \"用唯讀模式開啟另一個檔案夾\"\n\n#: ../keymap_alldefs.h:106\nmsgid \"clear a status flag from a message\"\nmsgstr \"清除某封信件上的狀態旗標\"\n\n#: ../keymap_alldefs.h:107\nmsgid \"delete messages matching a pattern\"\nmsgstr \"刪除符合某個格式的信件\"\n\n#: ../keymap_alldefs.h:108\nmsgid \"force retrieval of mail from IMAP server\"\nmsgstr \"強行取回 IMAP 伺服器上的信件\"\n\n#: ../keymap_alldefs.h:109\nmsgid \"logout from all IMAP servers\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:110\nmsgid \"retrieve mail from POP server\"\nmsgstr \"取回 POP 伺服器上的信件\"\n\n#: ../keymap_alldefs.h:111\nmsgid \"move to the first message\"\nmsgstr \"移動到第一封信件\"\n\n#: ../keymap_alldefs.h:112\nmsgid \"move to the last message\"\nmsgstr \"移動到最後一封信件\"\n\n#: ../keymap_alldefs.h:113\nmsgid \"show only messages matching a pattern\"\nmsgstr \"只顯示符合某個格式的信件\"\n\n#: ../keymap_alldefs.h:114\n#, fuzzy\nmsgid \"link tagged message to the current one\"\nmsgstr \"無法傳送已標記的郵件至：\"\n\n#: ../keymap_alldefs.h:115\n#, fuzzy\nmsgid \"open next mailbox with new mail\"\nmsgstr \"沒有信箱有新信件。\"\n\n#: ../keymap_alldefs.h:116\nmsgid \"jump to the next new message\"\nmsgstr \"跳到下一封新的信件\"\n\n#: ../keymap_alldefs.h:117\n#, fuzzy\nmsgid \"jump to the next new or unread message\"\nmsgstr \"跳到下一個未讀取的信件\"\n\n#: ../keymap_alldefs.h:118\nmsgid \"jump to the next subthread\"\nmsgstr \"跳到下一個子序列\"\n\n#: ../keymap_alldefs.h:119\nmsgid \"jump to the next thread\"\nmsgstr \"跳到下一個序列\"\n\n#: ../keymap_alldefs.h:120\nmsgid \"move to the next undeleted message\"\nmsgstr \"移動到下一個未刪除的信件\"\n\n#: ../keymap_alldefs.h:121\nmsgid \"jump to the next unread message\"\nmsgstr \"跳到下一個未讀取的信件\"\n\n#: ../keymap_alldefs.h:122\nmsgid \"jump to parent message in thread\"\nmsgstr \"跳到這個序列的主信件\"\n\n#: ../keymap_alldefs.h:123\nmsgid \"jump to previous thread\"\nmsgstr \"跳到上一個序列\"\n\n#: ../keymap_alldefs.h:124\nmsgid \"jump to previous subthread\"\nmsgstr \"跳到上一個子序列\"\n\n#: ../keymap_alldefs.h:125\nmsgid \"move to the previous undeleted message\"\nmsgstr \"移動到上一個未刪除的信件\"\n\n#: ../keymap_alldefs.h:126\nmsgid \"jump to the previous new message\"\nmsgstr \"跳到上一個新的信件\"\n\n#: ../keymap_alldefs.h:127\n#, fuzzy\nmsgid \"jump to the previous new or unread message\"\nmsgstr \"跳到上一個未讀取的信件\"\n\n#: ../keymap_alldefs.h:128\nmsgid \"jump to the previous unread message\"\nmsgstr \"跳到上一個未讀取的信件\"\n\n#: ../keymap_alldefs.h:129\nmsgid \"mark the current thread as read\"\nmsgstr \"標記現在的序列為已讀取\"\n\n#: ../keymap_alldefs.h:130\nmsgid \"mark the current subthread as read\"\nmsgstr \"標記現在的子序列為已讀取\"\n\n#: ../keymap_alldefs.h:131\nmsgid \"set a status flag on a message\"\nmsgstr \"設定某一封信件的狀態旗標\"\n\n#: ../keymap_alldefs.h:132\nmsgid \"save changes to mailbox\"\nmsgstr \"儲存變動到信箱\"\n\n#: ../keymap_alldefs.h:133\nmsgid \"tag messages matching a pattern\"\nmsgstr \"標記符合某個格式的信件\"\n\n#: ../keymap_alldefs.h:134\nmsgid \"undelete messages matching a pattern\"\nmsgstr \"反刪除符合某個格式的信件\"\n\n#: ../keymap_alldefs.h:135\nmsgid \"untag messages matching a pattern\"\nmsgstr \"反標記符合某個格式的信件\"\n\n#: ../keymap_alldefs.h:136\nmsgid \"move to the middle of the page\"\nmsgstr \"移動到本頁的中間\"\n\n#: ../keymap_alldefs.h:137\nmsgid \"move to the next entry\"\nmsgstr \"移動到下一項資料\"\n\n#: ../keymap_alldefs.h:138\nmsgid \"scroll down one line\"\nmsgstr \"向下捲動一行\"\n\n#: ../keymap_alldefs.h:139\nmsgid \"move to the next page\"\nmsgstr \"移到下一頁\"\n\n#: ../keymap_alldefs.h:140\nmsgid \"jump to the bottom of the message\"\nmsgstr \"跳到信件的最後面\"\n\n#: ../keymap_alldefs.h:141\nmsgid \"toggle display of quoted text\"\nmsgstr \"切換引言顯示\"\n\n#: ../keymap_alldefs.h:142\nmsgid \"skip beyond quoted text\"\nmsgstr \"跳過引言\"\n\n#: ../keymap_alldefs.h:143\nmsgid \"jump to the top of the message\"\nmsgstr \"跳到信件的最上面\"\n\n#: ../keymap_alldefs.h:144\nmsgid \"pipe message/attachment to a shell command\"\nmsgstr \"輸出導向 訊息/附件 至命令解譯器\"\n\n#: ../keymap_alldefs.h:145\nmsgid \"move to the previous entry\"\nmsgstr \"移到上一項資料\"\n\n#: ../keymap_alldefs.h:146\nmsgid \"scroll up one line\"\nmsgstr \"向上捲動一行\"\n\n#: ../keymap_alldefs.h:147\nmsgid \"move to the previous page\"\nmsgstr \"移到上一頁\"\n\n#: ../keymap_alldefs.h:148\nmsgid \"print the current entry\"\nmsgstr \"列印現在的資料\"\n\n#: ../keymap_alldefs.h:149\nmsgid \"query external program for addresses\"\nmsgstr \"利用外部應用程式查詢地址\"\n\n#: ../keymap_alldefs.h:150\nmsgid \"append new query results to current results\"\nmsgstr \"附加新的查詢結果至現今的查詢結果\"\n\n#: ../keymap_alldefs.h:151\nmsgid \"save changes to mailbox and quit\"\nmsgstr \"儲存變動過的資料到信箱並且離開\"\n\n#: ../keymap_alldefs.h:152\nmsgid \"recall a postponed message\"\nmsgstr \"重新叫出一封被延遲寄出的信件\"\n\n#: ../keymap_alldefs.h:153\nmsgid \"clear and redraw the screen\"\nmsgstr \"清除並重新繪製畫面\"\n\n#: ../keymap_alldefs.h:154\nmsgid \"{internal}\"\nmsgstr \"{內部的}\"\n\n#: ../keymap_alldefs.h:155\n#, fuzzy\nmsgid \"rename the current mailbox (IMAP only)\"\nmsgstr \"刪除所在的郵箱 (只適用於 IMAP)\"\n\n#: ../keymap_alldefs.h:156\nmsgid \"reply to a message\"\nmsgstr \"回覆一封信件\"\n\n#: ../keymap_alldefs.h:157\nmsgid \"use the current message as a template for a new one\"\nmsgstr \"用這封信件作為新信件的範本\"\n\n#: ../keymap_alldefs.h:158\n#, fuzzy\nmsgid \"save message/attachment to a mailbox/file\"\nmsgstr \"儲存信件/附件到某個檔案\"\n\n#: ../keymap_alldefs.h:159\nmsgid \"search for a regular expression\"\nmsgstr \"用正規表示式尋找\"\n\n#: ../keymap_alldefs.h:160\nmsgid \"search backwards for a regular expression\"\nmsgstr \"向後搜尋一個正規表示式\"\n\n#: ../keymap_alldefs.h:161\nmsgid \"search for next match\"\nmsgstr \"尋找下一個符合的資料\"\n\n#: ../keymap_alldefs.h:162\nmsgid \"search for next match in opposite direction\"\nmsgstr \"返方向搜尋下一個符合的資料\"\n\n#: ../keymap_alldefs.h:163\nmsgid \"toggle search pattern coloring\"\nmsgstr \"切換搜尋格式的顏色\"\n\n#: ../keymap_alldefs.h:164\nmsgid \"invoke a command in a subshell\"\nmsgstr \"在子 shell 執行指令\"\n\n#: ../keymap_alldefs.h:165\nmsgid \"sort messages\"\nmsgstr \"信件排序\"\n\n#: ../keymap_alldefs.h:166\nmsgid \"sort messages in reverse order\"\nmsgstr \"以相反的次序來做訊息排序\"\n\n#: ../keymap_alldefs.h:167\nmsgid \"tag the current entry\"\nmsgstr \"標記現在的記錄\"\n\n#: ../keymap_alldefs.h:168\nmsgid \"apply next function to tagged messages\"\nmsgstr \"應用下一個功能到已標記的訊息\"\n\n#: ../keymap_alldefs.h:169\n#, fuzzy\nmsgid \"apply next function ONLY to tagged messages\"\nmsgstr \"應用下一個功能到已標記的訊息\"\n\n#: ../keymap_alldefs.h:170\nmsgid \"tag the current subthread\"\nmsgstr \"標記目前的子序列\"\n\n#: ../keymap_alldefs.h:171\nmsgid \"tag the current thread\"\nmsgstr \"標記目前的序列\"\n\n#: ../keymap_alldefs.h:172\nmsgid \"toggle a message's 'new' flag\"\nmsgstr \"切換信件的 'new' 旗標\"\n\n#: ../keymap_alldefs.h:173\nmsgid \"toggle whether the mailbox will be rewritten\"\nmsgstr \"切換是否重新寫入郵箱中\"\n\n#: ../keymap_alldefs.h:174\nmsgid \"toggle whether to browse mailboxes or all files\"\nmsgstr \"切換瀏覽郵箱抑或所有的檔案\"\n\n#: ../keymap_alldefs.h:175\nmsgid \"move to the top of the page\"\nmsgstr \"移到頁首\"\n\n#: ../keymap_alldefs.h:176\nmsgid \"undelete the current entry\"\nmsgstr \"取消刪除所在的記錄\"\n\n#: ../keymap_alldefs.h:177\nmsgid \"undelete all messages in thread\"\nmsgstr \"取消刪除序列中的所有信件\"\n\n# XXX weird translation\n#: ../keymap_alldefs.h:178\nmsgid \"undelete all messages in subthread\"\nmsgstr \"取消刪除子序列中的所有信件\"\n\n#: ../keymap_alldefs.h:179\nmsgid \"show the Mutt version number and date\"\nmsgstr \"顯示 Mutt 的版本號碼與日期\"\n\n#: ../keymap_alldefs.h:180\nmsgid \"view attachment using mailcap entry if necessary\"\nmsgstr \"如果需要的話使用 mailcap 瀏覽附件\"\n\n#: ../keymap_alldefs.h:181\nmsgid \"show MIME attachments\"\nmsgstr \"顯示 MIME 附件\"\n\n#: ../keymap_alldefs.h:182\nmsgid \"display the keycode for a key press\"\nmsgstr \"\"\n\n#: ../keymap_alldefs.h:183\nmsgid \"show currently active limit pattern\"\nmsgstr \"顯示目前有作用的限制樣式\"\n\n#: ../keymap_alldefs.h:184\nmsgid \"collapse/uncollapse current thread\"\nmsgstr \"打開/關閉 目前的序列\"\n\n#: ../keymap_alldefs.h:185\nmsgid \"collapse/uncollapse all threads\"\nmsgstr \"打開/關閉 所有的序列\"\n\n# XXX strange translation\n#: ../keymap_alldefs.h:186\nmsgid \"attach a PGP public key\"\nmsgstr \"附帶一把 PGP 公共鑰匙\"\n\n#: ../keymap_alldefs.h:187\nmsgid \"show PGP options\"\nmsgstr \"顯示 PGP 選項\"\n\n#: ../keymap_alldefs.h:188\nmsgid \"mail a PGP public key\"\nmsgstr \"寄出 PGP 公共鑰匙\"\n\n#: ../keymap_alldefs.h:189\nmsgid \"verify a PGP public key\"\nmsgstr \"檢驗 PGP 公共鑰匙\"\n\n#: ../keymap_alldefs.h:190\nmsgid \"view the key's user id\"\nmsgstr \"檢閱這把鑰匙的使用者 id\"\n\n#: ../keymap_alldefs.h:191\n#, fuzzy\nmsgid \"check for classic PGP\"\nmsgstr \"檢查古老的pgp格式\"\n\n#: ../keymap_alldefs.h:192\nmsgid \"Accept the chain constructed\"\nmsgstr \"同意已建好的鏈結\"\n\n#: ../keymap_alldefs.h:193\nmsgid \"Append a remailer to the chain\"\nmsgstr \"在鏈結的後面加上郵件轉接器\"\n\n#: ../keymap_alldefs.h:194\nmsgid \"Insert a remailer into the chain\"\nmsgstr \"在鏈結中加入郵件轉接器\"\n\n#: ../keymap_alldefs.h:195\nmsgid \"Delete a remailer from the chain\"\nmsgstr \"從鏈結中刪除郵件轉接器\"\n\n#: ../keymap_alldefs.h:196\nmsgid \"Select the previous element of the chain\"\nmsgstr \"選擇鏈結裏對上一個部份\"\n\n#: ../keymap_alldefs.h:197\nmsgid \"Select the next element of the chain\"\nmsgstr \"選擇鏈結裏跟著的一個部份\"\n\n#: ../keymap_alldefs.h:198\nmsgid \"send the message through a mixmaster remailer chain\"\nmsgstr \"利用 mixmaster 郵件轉接器把郵件寄出\"\n\n#: ../keymap_alldefs.h:199\nmsgid \"make decrypted copy and delete\"\nmsgstr \"製作解密的拷貝並且刪除之\"\n\n#: ../keymap_alldefs.h:200\nmsgid \"make decrypted copy\"\nmsgstr \"製作一份解密的拷貝\"\n\n#: ../keymap_alldefs.h:201\n#, fuzzy\nmsgid \"wipe passphrase(s) from memory\"\nmsgstr \"清除記憶體中的 PGP 通行密碼\"\n\n#: ../keymap_alldefs.h:202\n#, fuzzy\nmsgid \"extract supported public keys\"\nmsgstr \"擷取 PGP 公共鑰匙\"\n\n#: ../keymap_alldefs.h:203\n#, fuzzy\nmsgid \"show S/MIME options\"\nmsgstr \"顯示 S/MIME 選項\"\n\n#, fuzzy\n#~ msgid \"delete message(s)\"\n#~ msgstr \"沒有要反刪除的信件。\"\n\n#~ msgid \" in this limited view\"\n#~ msgstr \" 在這限定的瀏覽中\"\n\n#, fuzzy\n#~ msgid \"delete message\"\n#~ msgstr \"沒有要反刪除的信件。\"\n\n#, fuzzy\n#~ msgid \"edit message\"\n#~ msgstr \"編輯信件內容\"\n\n#~ msgid \"error in expression\"\n#~ msgstr \"表達式有錯誤\"\n\n#, fuzzy\n#~ msgid \"Internal error. Inform <roessler@does-not-exist.org>.\"\n#~ msgstr \"內部錯誤。聯絡 <roessler@does-not-exist.org>。\"\n\n#, fuzzy\n#~ msgid \"Warning: message has no From: header\"\n#~ msgstr \"跳到這個序列的主信件\"\n\n#~ msgid \"\"\n#~ \"[-- Error: malformed PGP/MIME message! --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- 錯誤：不正確的 PGP/MIME 信件！ --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"Error: multipart/encrypted has no protocol parameter!\"\n#~ msgstr \"錯誤：multipart/encrypted 沒有任何通訊協定參數！\"\n\n#, fuzzy\n#~ msgid \"Use (untrusted!) ID %s for %s ?\"\n#~ msgstr \"要為 %2$s 使用鑰匙 ID = \\\"%1$s\\\"？\"\n\n#, fuzzy\n#~ msgid \"Use ID %s for %s ?\"\n#~ msgstr \"要為 %2$s 使用鑰匙 ID = \\\"%1$s\\\"？\"\n\n#, fuzzy\n#~ msgid \"Warning: Intermediate certificate not found.\"\n#~ msgstr \"警告：未能儲存驗証\"\n\n#~ msgid \"Clear\"\n#~ msgstr \"清除\"\n\n#, fuzzy\n#~ msgid \"esabifc\"\n#~ msgstr \"1234i5\"\n\n#~ msgid \"No search pattern.\"\n#~ msgstr \"沒有搜尋格式。\"\n\n#~ msgid \"Reverse search: \"\n#~ msgstr \"反向搜尋：\"\n\n#~ msgid \"Search: \"\n#~ msgstr \"搜尋：\"\n\n#, fuzzy\n#~ msgid \"Error checking signature\"\n#~ msgstr \"寄信途中發生錯誤。\"\n\n#~ msgid \"SSL Certificate check\"\n#~ msgstr \"SSL 驗証測試\"\n\n#, fuzzy\n#~ msgid \"TLS/SSL Certificate check\"\n#~ msgstr \"SSL 驗証測試\"\n\n#~ msgid \"Getting namespaces...\"\n#~ msgstr \"拿取 namespace 中…\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"usage: mutt [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f \"\n#~ \"<file> ]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] \"\n#~ \"[...]\\n\"\n#~ \"       mutt [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\\n\"\n#~ \"       mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H \"\n#~ \"<file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> \"\n#~ \"[ ... ]\\n\"\n#~ \"       mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p\\n\"\n#~ \"       mutt -v[v]\\n\"\n#~ msgstr \"\"\n#~ \"用法: mutt [ -nRzZ ] [ -e <命令> ] [ -F <檔案> ] [ -m <類型> ] [ -f <檔案\"\n#~ \"> ]\\n\"\n#~ \"        mutt [ -nx ] [ -e <命令> ] [ -a <檔案> ] [ -F <檔案> ] [ -H <檔案\"\n#~ \"> ] [ -i <檔案> ] [ -s <主題> ] [ -b <地址> ] [ -c <地址> ] <地址> \"\n#~ \"[ ... ]\\n\"\n#~ \"        mutt [ -n ] [ -e <命令> ] [ -F <檔案> ] -p\\n\"\n#~ \"        mutt -v[v]\\n\"\n#~ \"\\n\"\n#~ \"參數：\\n\"\n#~ \"  -a <檔案>\\t\\t將檔案附在信件中\\n\"\n#~ \"  -b <地址>\\t\\t指定一個 秘密複製 (BCC) 的地址\\n\"\n#~ \"  -c <地址>\\t\\t指定一個 複製 (CC) 的地址\\n\"\n#~ \"  -e <命令>\\t\\t指定一個初始化後要被執行的命令\\n\"\n#~ \"  -f <檔案>\\t\\t指定要閱讀那一個郵筒\\n\"\n#~ \"  -F <檔案>\\t\\t指定另一個 muttrc 檔案\\n\"\n#~ \"  -H <檔案>\\t\\t指定一個範本檔案以讀取標題來源\\n\"\n#~ \"  -i <檔案>\\t\\t指定一個包括在回覆中的檔案\\n\"\n#~ \"  -m <類型>\\t\\t指定一個預設的郵筒類型\\n\"\n#~ \"  -n\\t\\t使 Mutt 不去讀取系統的 Muttrc 檔\\n\"\n#~ \"  -p\\t\\t叫回一個延後寄送的信件\\n\"\n#~ \"  -R\\t\\t以唯讀模式開啟郵筒\\n\"\n#~ \"  -s <主題>\\t\\t指定一個主題 (如果有空白的話必須被包括在引言中)\\n\"\n#~ \"  -v\\t\\t顯示版本和編譯時所定義的參數\\n\"\n#~ \"  -x\\t\\t模擬 mailx 寄送模式\\n\"\n#~ \"  -y\\t\\t選擇一個被指定在您郵筒清單中的郵筒\\n\"\n#~ \"  -z\\t\\t如果沒有訊息在郵筒中的話，立即離開\\n\"\n#~ \"  -Z\\t\\t開啟第一個附有新郵件的資料夾，如果沒有的話立即離開\\n\"\n#~ \"  -h\\t\\t這個說明訊息\"\n\n#, fuzzy\n#~ msgid \"Can't change 'important' flag on POP server.\"\n#~ msgstr \"無法編輯 POP 伺服器上的信件。\"\n\n#~ msgid \"Can't edit message on POP server.\"\n#~ msgstr \"無法編輯 POP 伺服器上的信件。\"\n\n#~ msgid \"Reading %s... %d (%d%%)\"\n#~ msgstr \"讀取 %s 中… %d (%d%%)\"\n\n#~ msgid \"Writing messages... %d (%d%%)\"\n#~ msgstr \"寫入信件中… %d (%d%%)\"\n\n#~ msgid \"Reading %s... %d\"\n#~ msgstr \"讀取 %s… %d\"\n\n#~ msgid \"Invoking pgp...\"\n#~ msgstr \"啟動 pgp…\"\n\n#~ msgid \"Fatal error.  Message count is out of sync!\"\n#~ msgstr \"嚴重錯誤。信件數量不協調！\"\n\n#~ msgid \"CLOSE failed\"\n#~ msgstr \"CLOSE 失敗\"\n\n#, fuzzy\n#~ msgid \"\"\n#~ \"Copyright (C) 1996-2004 Michael R. Elkins <me@mutt.org>\\n\"\n#~ \"Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>\\n\"\n#~ \"Copyright (C) 1997-2005 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"Copyright (C) 1999-2005 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"Lots of others not mentioned here contributed lots of code,\\n\"\n#~ \"fixes, and suggestions.\\n\"\n#~ \"\\n\"\n#~ \"    This program is free software; you can redistribute it and/or modify\\n\"\n#~ \"    it under the terms of the GNU General Public License as published by\\n\"\n#~ \"    the Free Software Foundation; either version 2 of the License, or\\n\"\n#~ \"    (at your option) any later version.\\n\"\n#~ \"\\n\"\n#~ \"    This program is distributed in the hope that it will be useful,\\n\"\n#~ \"    but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n#~ \"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n\"\n#~ \"    GNU General Public License for more details.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the GNU General Public License\\n\"\n#~ \"    along with this program; if not, write to the Free Software\\n\"\n#~ \"    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  \"\n#~ \"02110-1301, USA.\\n\"\n#~ msgstr \"\"\n#~ \"版權所有 (C) 1996-2000 Michael R. Elkins <me@cs.hmc.edu>\\n\"\n#~ \"版權所有 (C) 1996-2000 Brandon Long <blong@fiction.net>\\n\"\n#~ \"版權所有 (C) 1997-2000 Thomas Roessler <roessler@does-not-exist.org>\\n\"\n#~ \"版權所有 (C) 1998-2000 Werner Koch <wk@isil.d.shuttle.de>\\n\"\n#~ \"版權所有 (C) 1999-2000 Brendan Cully <brendan@kublai.com>\\n\"\n#~ \"版權所有 (C) 1999-2000 Tommi Komulainen <Tommi.Komulainen@iki.fi>\\n\"\n#~ \"版權所有 (C) 2000-2001 Edmund Grimley Evans <edmundo@rano.org>\\n\"\n#~ \"\\n\"\n#~ \"還有許多在這裡沒有提及到的人仕，他們曾提供程式碼，修正，和意見。\\n\"\n#~ \"\\n\"\n#~ \"    這個應用程式是自由軟體；您可以在自由軟體基金會的 GNU 一般公共\\n\"\n#~ \"    授權書（版本 2，或i隨你喜好使用以後的版本）下重複散布並/或修\\n\"\n#~ \"    正它。\\n\"\n#~ \"\\n\"\n#~ \"    發布這個應用程式的目的是希望它會對你有用，但絕不包括任何保証；\\n\"\n#~ \"    就連銷售性和適於特定目的之暗示擔保亦然。在 GNU 一般公共授權書\\n\"\n#~ \"    中將會獲得更多資料。\\n\"\n#~ \"\\n\"\n#~ \"    您應已連同應用程式收到一份 GNU 一般公共授權書；如果沒有，請寫信\\n\"\n#~ \"    至 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\\n\"\n#~ \"    Boston, MA  02110-1301, USA.\\n\"\n\n#~ msgid \"First entry is shown.\"\n#~ msgstr \"正在顯示第一項。\"\n\n#~ msgid \"Last entry is shown.\"\n#~ msgstr \"正在顯示最後一項。\"\n\n#~ msgid \"Unable to append to IMAP mailboxes at this server\"\n#~ msgstr \"無法附加在這個伺服器上的 IMAP 信箱\"\n\n#, fuzzy\n#~ msgid \"Create a traditional (inline) PGP message?\"\n#~ msgstr \"建立一封 application/pgp 的信件？\"\n\n#, fuzzy\n#~ msgid \"%s: stat: %s\"\n#~ msgstr \"無法讀取：%s\"\n\n#, fuzzy\n#~ msgid \"%s: not a regular file\"\n#~ msgstr \"%s 不是信箱。\"\n\n#, fuzzy\n#~ msgid \"Invoking OpenSSL...\"\n#~ msgstr \"啟動 OpenSSL…\"\n\n#~ msgid \"Bounce message to %s...?\"\n#~ msgstr \"把郵件直接傳送至 %s…？\"\n\n#~ msgid \"Bounce messages to %s...?\"\n#~ msgstr \"把郵件直接傳送至 %s…？\"\n\n#, fuzzy\n#~ msgid \"ewsabf\"\n#~ msgstr \"12345\"\n\n#, fuzzy\n#~ msgid \"Certificate *NOT* added.\"\n#~ msgstr \"驗証已儲存\"\n\n#~ msgid \"This ID's validity level is undefined.\"\n#~ msgstr \"這個 ID 的可接受程度不明。\"\n\n#~ msgid \"Decode-save\"\n#~ msgstr \"解碼並儲存\"\n\n#~ msgid \"Decode-copy\"\n#~ msgstr \"解碼並拷貝\"\n\n#~ msgid \"Decrypt-save\"\n#~ msgstr \"解密並儲存\"\n\n#~ msgid \"Decrypt-copy\"\n#~ msgstr \"解密並拷貝\"\n\n#~ msgid \"Copy\"\n#~ msgstr \"拷貝\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"[-- End of PGP output --]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"[-- PGP 輸出的資料結束 --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"MIC algorithm: \"\n#~ msgstr \"MIC 演算法：\"\n\n#~ msgid \"This doesn't make sense if you don't want to sign the message.\"\n#~ msgstr \"如果您不想把信件簽名，這樣做就沒有什麼意思啦。\"\n\n#~ msgid \"Unknown MIC algorithm, valid ones are: pgp-md5, pgp-sha1, pgp-rmd160\"\n#~ msgstr \"不明的 MIC 演算法。有效的如下: pgp-md5, pgp-sha1, pgp-rmd160\"\n\n#~ msgid \"%s: no such command\"\n#~ msgstr \"%s：無此指令\"\n\n#~ msgid \"Authentication method is unknown.\"\n#~ msgstr \"不明的驗證方法。\"\n\n#~ msgid \"\"\n#~ \"\\n\"\n#~ \"SHA1 implementation Copyright (C) 1995-1997 Eric A. Young <eay@cryptsoft.\"\n#~ \"com>\\n\"\n#~ \"\\n\"\n#~ \"    Redistribution and use in source and binary forms, with or without\\n\"\n#~ \"    modification, are permitted under certain conditions.\\n\"\n#~ \"\\n\"\n#~ \"    The SHA1 implementation comes AS IS, and ANY EXPRESS OR IMPLIED\\n\"\n#~ \"    WARRANTIES, including, but not limited to, the implied warranties of\\n\"\n#~ \"    merchantability and fitness for a particular purpose ARE DISCLAIMED.\\n\"\n#~ \"\\n\"\n#~ \"    You should have received a copy of the full distribution terms\\n\"\n#~ \"    along with this program; if not, write to the program's developers.\\n\"\n#~ msgstr \"\"\n#~ \"\\n\"\n#~ \"SHA1 implementation 版權所有 (C) 1995-7 Eric A. Young <eay@cryptsoft.\"\n#~ \"com>\\n\"\n#~ \"\\n\"\n#~ \"     重複散布並使用原始程式碼和編譯過的程式碼，不管有否經過修改，\\n\"\n#~ \"     在某些條件下是許可的。\\n\"\n#~ \"\\n\"\n#~ \"     SHA1 程序不附帶任何擔保，不論係明示還是暗示，包括但不限於銷售性\\n\"\n#~ \"     和適於特定目的之暗示擔保。\\n\"\n#~ \"\\n\"\n#~ \"     您應該收到一份此應用程式的完整的散布條文；如果沒有，請寫信給\\n\"\n#~ \"     應用程式的開發人員.\\n\"\n\n#~ msgid \"POP Username: \"\n#~ msgstr \"POP 用戶名稱：\"\n\n#~ msgid \"Reading new message (%d bytes)...\"\n#~ msgstr \"讀取新信件中 (%d 歌位元組)…\"\n\n#~ msgid \"%s [%d message read]\"\n#~ msgstr \"%s [已閱讀 %d 封信件]\"\n\n#~ msgid \"Creating mailboxes is not yet supported.\"\n#~ msgstr \"未支援製造郵箱。\"\n\n#~ msgid \"We can't currently handle utf-8 at this point.\"\n#~ msgstr \"我們還未能處理 utf-8。\"\n\n#~ msgid \"Can't open %s: %s.\"\n#~ msgstr \"無法開啟 %s：%s.\"\n\n#~ msgid \"Error while recoding %s. Leave it unchanged.\"\n#~ msgstr \"當轉換編碼 %s 時發生錯誤，因此不會做任何改變。\"\n\n#~ msgid \"Error while recoding %s. See %s for recovering your data.\"\n#~ msgstr \"當轉換編碼 %s 發生錯誤。看 %s 來修復你的資料。\"\n\n#~ msgid \"Can't change character set for non-text attachments!\"\n#~ msgstr \"非文字的附件是不能改變字符集的！\"\n\n#~ msgid \"Enter character set: \"\n#~ msgstr \"請輸入字符集：\"\n\n#~ msgid \"UTF-8 encoding attachments has not yet been implemented.\"\n#~ msgstr \"還未支援 UTF-8 編碼的附件。\"\n\n#~ msgid \"Compose\"\n#~ msgstr \"寫信\"\n\n#~ msgid \"We currently can't encode to utf-8.\"\n#~ msgstr \"我們現在還未能重新編碼至 utf-8。\"\n\n#~ msgid \"Recoding successful.\"\n#~ msgstr \"重新編碼成功。\"\n\n#~ msgid \"CRAM key for %s@%s: \"\n#~ msgstr \"%s@%s 的 CRAM 鑰匙\"\n\n#~ msgid \"Skipping CRAM-MD5 authentication.\"\n#~ msgstr \"掠過 CRAM-MD5 驗證\"\n\n#~ msgid \"Reopening mailbox... %s\"\n#~ msgstr \"重新開啟信箱中… %s\"\n\n#~ msgid \"Closing mailbox...\"\n#~ msgstr \"關閉信箱中…\"\n\n#~ msgid \"Sending APPEND command ...\"\n#~ msgstr \"正在送出 APPEND 命令…\"\n\n#~ msgid \"change an attachment's character set\"\n#~ msgstr \"改變附件的字符集\"\n\n#~ msgid \"recode this attachment to/from the local charset\"\n#~ msgstr \"重新將附件編碼至本地字符集，或由本地字符集重新編碼\"\n\n#~ msgid \"%d kept.\"\n#~ msgstr \"%d 保留了。\"\n\n#~ msgid \"POP Password: \"\n#~ msgstr \"POP 密碼：\"\n\n#~ msgid \"No POP username is defined.\"\n#~ msgstr \"沒有被定義的 POP 使用者名稱。\"\n\n#~ msgid \"Attachment saved\"\n#~ msgstr \"附件已被儲存。\"\n\n#~ msgid \"move to the last undelete message\"\n#~ msgstr \"移動到最後一封未刪除的信件\"\n\n#~ msgid \"return to the main-menu\"\n#~ msgstr \"回到主選單\"\n\n#~ msgid \"ignoring empty header field: %s\"\n#~ msgstr \"不理會空的標頭欄位：%s\"\n\n#, fuzzy\n#~ msgid \"Recoding only affetcs text attachments.\"\n#~ msgstr \"只重新編碼受影響的文字附件\"\n\n#, fuzzy\n#~ msgid \"display message with full headers\"\n#~ msgstr \"編輯信件的標頭\"\n\n#, fuzzy\n#~ msgid \"This operation is not currently supported for PGP messages.\"\n#~ msgstr \"暫不支援瀏覽 IMAP 目錄\"\n\n#~ msgid \"imap_error(): unexpected response in %s: %s\\n\"\n#~ msgstr \"imap_error()：%s 的意外回應：%s\\n\"\n\n#~ msgid \"Can't open your secret key ring!\"\n#~ msgstr \"無法開啟您的祕密鑰匙環！\"\n\n#~ msgid \"An unkown PGP version was defined for signing.\"\n#~ msgstr \"定義了一個不明的 PGP 版本來簽名\"\n\n#~ msgid \"===== Attachments =====\"\n#~ msgstr \"===== 附件 =====\"\n\n#~ msgid \"Sending CREATE command ...\"\n#~ msgstr \"正在送出 CREATE 命令…\"\n\n#~ msgid \"Unknown PGP version \\\"%s\\\".\"\n#~ msgstr \"不明的 PGP 版本 \\\"%s\\\"。\"\n\n#~ msgid \"\"\n#~ \"[-- Error: this message does not comply with the PGP/MIME specification! \"\n#~ \"--]\\n\"\n#~ \"\\n\"\n#~ msgstr \"\"\n#~ \"[-- 錯誤：這封信件不符合 PGP/MIME 的規格！ --]\\n\"\n#~ \"\\n\"\n\n#~ msgid \"reserved\"\n#~ msgstr \"保留的\"\n\n#~ msgid \"Signature Packet\"\n#~ msgstr \"簽名封包\"\n\n#~ msgid \"Conventionally Encrypted Session Key Packet\"\n#~ msgstr \"一般加密鑰匙封包\"\n\n#~ msgid \"One-Pass Signature Packet\"\n#~ msgstr \"單一通道的簽名封包\"\n\n#~ msgid \"Secret Key Packet\"\n#~ msgstr \"秘密鑰匙封包\"\n\n#~ msgid \"Public Key Packet\"\n#~ msgstr \"公共鑰匙封包\"\n\n#~ msgid \"Secret Subkey Packet\"\n#~ msgstr \"秘密次鑰匙封包\"\n\n#~ msgid \"Compressed Data Packet\"\n#~ msgstr \"壓縮資料封包\"\n\n#~ msgid \"Symmetrically Encrypted Data Packet\"\n#~ msgstr \"對稱加密資料封包\"\n\n#~ msgid \"Marker Packet\"\n#~ msgstr \"記號封包\"\n\n#~ msgid \"Literal Data Packet\"\n#~ msgstr \"文字資料封包\"\n\n#~ msgid \"Trust Packet\"\n#~ msgstr \"被信托封包\"\n\n#~ msgid \"Name Packet\"\n#~ msgstr \"名稱封包\"\n\n#~ msgid \"Subkey Packet\"\n#~ msgstr \"次鑰匙 (subkey) 封包\"\n\n#~ msgid \"Reserved\"\n#~ msgstr \"保留的\"\n\n#~ msgid \"Comment Packet\"\n#~ msgstr \"注解封包\"\n\n#~ msgid \"Message edited. Really send?\"\n#~ msgstr \"信件已經編輯過。確定要寄出？\"\n\n#~ msgid \"Saved output of child process to %s.\\n\"\n#~ msgstr \"輸出子程序儲存至 %s.\\n\"\n"
  },
  {
    "path": "pop.c",
    "content": "/*\n * Copyright (C) 2000-2002 Vsevolod Volkov <vvv@mutt.org.ua>\n * Copyright (C) 2006-2007,2009 Rocco Rutte <pdmef@gmx.net>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mx.h\"\n#include \"pop.h\"\n#include \"mutt_crypt.h\"\n#include \"bcache.h\"\n#if USE_HCACHE\n#include \"hcache.h\"\n#endif\n\n#include <string.h>\n#include <unistd.h>\n#include <errno.h>\n\n#ifdef USE_HCACHE\n#define HC_FNAME\t\"mutt\"\t\t/* filename for hcache as POP lacks paths */\n#define HC_FEXT\t\t\"hcache\"\t/* extension for hcache as POP lacks paths */\n#endif\n\n/* write line to file */\nstatic int fetch_message (char *line, void *file)\n{\n  FILE *f = (FILE *) file;\n\n  fputs (line, f);\n  if (fputc ('\\n', f) == EOF)\n    return -1;\n\n  return 0;\n}\n\n/*\n * Read header\n * returns:\n *  0 on success\n * -1 - connection lost,\n * -2 - invalid command or execution error,\n * -3 - error writing to tempfile\n */\nstatic int pop_read_header (POP_DATA *pop_data, HEADER *h)\n{\n  FILE *f;\n  int ret, index;\n  long length;\n  char buf[LONG_STRING];\n  char tempfile[_POSIX_PATH_MAX];\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if (!(f = safe_fopen (tempfile, \"w+\")))\n  {\n    mutt_perror (tempfile);\n    return -3;\n  }\n\n  snprintf (buf, sizeof (buf), \"LIST %d\\r\\n\", h->refno);\n  ret = pop_query (pop_data, buf, sizeof (buf));\n  if (ret == 0)\n  {\n    sscanf (buf, \"+OK %d %ld\", &index, &length);\n\n    snprintf (buf, sizeof (buf), \"TOP %d 0\\r\\n\", h->refno);\n    ret = pop_fetch_data (pop_data, buf, NULL, fetch_message, f);\n\n    if (pop_data->cmd_top == 2)\n    {\n      if (ret == 0)\n      {\n\tpop_data->cmd_top = 1;\n\n\tdprint (1, (debugfile, \"pop_read_header: set TOP capability\\n\"));\n      }\n\n      if (ret == -2)\n      {\n\tpop_data->cmd_top = 0;\n\n\tdprint (1, (debugfile, \"pop_read_header: unset TOP capability\\n\"));\n\tsnprintf (pop_data->err_msg, sizeof (pop_data->err_msg),\n\t\t_(\"Command TOP is not supported by server.\"));\n      }\n    }\n  }\n\n  switch (ret)\n  {\n    case 0:\n    {\n      rewind (f);\n      h->env = mutt_read_rfc822_header (f, h, 0, 0);\n      h->content->length = length - h->content->offset + 1;\n      rewind (f);\n      while (!feof (f))\n      {\n\th->content->length--;\n\tfgets (buf, sizeof (buf), f);\n      }\n      break;\n    }\n    case -2:\n    {\n      mutt_error (\"%s\", pop_data->err_msg);\n      break;\n    }\n    case -3:\n    {\n      mutt_error _(\"Can't write header to temporary file!\");\n      break;\n    }\n  }\n\n  safe_fclose (&f);\n  unlink (tempfile);\n  return ret;\n}\n\n/* parse UIDL */\nstatic int fetch_uidl (char *line, void *data)\n{\n  int i, index;\n  CONTEXT *ctx = (CONTEXT *)data;\n  POP_DATA *pop_data = (POP_DATA *)ctx->data;\n  char *endp;\n\n  errno = 0;\n  index = strtol(line, &endp, 10);\n  if (errno)\n      return -1;\n  while (*endp == ' ')\n      endp++;\n  memmove(line, endp, strlen(endp) + 1);\n\n  for (i = 0; i < ctx->msgcount; i++)\n    if (!mutt_strcmp (line, ctx->hdrs[i]->data))\n      break;\n\n  if (i == ctx->msgcount)\n  {\n    dprint (1, (debugfile, \"pop_fetch_headers: new header %d %s\\n\", index, line));\n\n    if (i >= ctx->hdrmax)\n      mx_alloc_memory(ctx);\n\n    ctx->msgcount++;\n    ctx->hdrs[i] = mutt_new_header ();\n    ctx->hdrs[i]->data = safe_strdup (line);\n  }\n  else if (ctx->hdrs[i]->index != index - 1)\n    pop_data->clear_cache = 1;\n\n  ctx->hdrs[i]->refno = index;\n  ctx->hdrs[i]->index = index - 1;\n\n  return 0;\n}\n\nstatic int msg_cache_check (const char *id, body_cache_t *bcache, void *data)\n{\n  CONTEXT *ctx;\n  POP_DATA *pop_data;\n  int i;\n\n  if (!(ctx = (CONTEXT *)data))\n    return -1;\n  if (!(pop_data = (POP_DATA *)ctx->data))\n    return -1;\n\n#ifdef USE_HCACHE\n  /* keep hcache file if hcache == bcache */\n  if (strcmp (HC_FNAME \".\" HC_FEXT, id) == 0)\n    return 0;\n#endif\n\n  for (i = 0; i < ctx->msgcount; i++)\n    /* if the id we get is known for a header: done (i.e. keep in cache) */\n    if (ctx->hdrs[i]->data && mutt_strcmp (ctx->hdrs[i]->data, id) == 0)\n      return 0;\n\n  /* message not found in context -> remove it from cache\n   * return the result of bcache, so we stop upon its first error\n   */\n  return mutt_bcache_del (bcache, id);\n}\n\n#ifdef USE_HCACHE\nstatic int pop_hcache_namer (const char *path, char *dest, size_t destlen)\n{\n  return snprintf (dest, destlen, \"%s.\" HC_FEXT, path);\n}\n\nstatic header_cache_t *pop_hcache_open (POP_DATA *pop_data, const char *path)\n{\n  ciss_url_t url;\n  char p[LONG_STRING];\n\n  if (!pop_data || !pop_data->conn)\n    return mutt_hcache_open (HeaderCache, path, NULL);\n\n  mutt_account_tourl (&pop_data->conn->account, &url);\n  url.path = HC_FNAME;\n  url_ciss_tostring (&url, p, sizeof (p), U_PATH);\n  return mutt_hcache_open (HeaderCache, p, pop_hcache_namer);\n}\n#endif\n\n/*\n * Read headers\n * returns:\n *  0 on success\n * -1 - connection lost,\n * -2 - invalid command or execution error,\n * -3 - error writing to tempfile\n */\nstatic int pop_fetch_headers (CONTEXT *ctx)\n{\n  int i, ret, old_count, new_count, deleted;\n  unsigned short hcached = 0, bcached;\n  POP_DATA *pop_data = (POP_DATA *)ctx->data;\n  progress_t progress;\n\n#ifdef USE_HCACHE\n  header_cache_t *hc = NULL;\n  void *data;\n\n  hc = pop_hcache_open (pop_data, ctx->path);\n#endif\n\n  time (&pop_data->check_time);\n  pop_data->clear_cache = 0;\n\n  for (i = 0; i < ctx->msgcount; i++)\n    ctx->hdrs[i]->refno = -1;\n\n  old_count = ctx->msgcount;\n  ret = pop_fetch_data (pop_data, \"UIDL\\r\\n\", NULL, fetch_uidl, ctx);\n  new_count = ctx->msgcount;\n  ctx->msgcount = old_count;\n\n  if (pop_data->cmd_uidl == 2)\n  {\n    if (ret == 0)\n    {\n      pop_data->cmd_uidl = 1;\n\n      dprint (1, (debugfile, \"pop_fetch_headers: set UIDL capability\\n\"));\n    }\n\n    if (ret == -2 && pop_data->cmd_uidl == 2)\n    {\n      pop_data->cmd_uidl = 0;\n\n      dprint (1, (debugfile, \"pop_fetch_headers: unset UIDL capability\\n\"));\n      snprintf (pop_data->err_msg, sizeof (pop_data->err_msg),\n\t      _(\"Command UIDL is not supported by server.\"));\n    }\n  }\n\n  if (!ctx->quiet)\n    mutt_progress_init (&progress, _(\"Fetching message headers...\"),\n                        M_PROGRESS_MSG, ReadInc, new_count - old_count);\n\n  if (ret == 0)\n  {\n    for (i = 0, deleted = 0; i < old_count; i++)\n    {\n      if (ctx->hdrs[i]->refno == -1)\n      {\n\tctx->hdrs[i]->deleted = 1;\n\tdeleted++;\n      }\n    }\n    if (deleted > 0)\n    {\n      mutt_error (_(\"%d messages have been lost. Try reopening the mailbox.\"),\n\t\t  deleted);\n      mutt_sleep (2);\n    }\n\n    for (i = old_count; i < new_count; i++)\n    {\n      if (!ctx->quiet)\n\tmutt_progress_update (&progress, i + 1 - old_count, -1);\n#if USE_HCACHE\n      if ((data = mutt_hcache_fetch (hc, ctx->hdrs[i]->data, strlen)))\n      {\n\tchar *uidl = safe_strdup (ctx->hdrs[i]->data);\n\tint refno = ctx->hdrs[i]->refno;\n\tint index = ctx->hdrs[i]->index;\n\t/*\n\t * - POP dynamically numbers headers and relies on h->refno\n\t *   to map messages; so restore header and overwrite restored\n\t *   refno with current refno, same for index\n\t * - h->data needs to a separate pointer as it's driver-specific\n\t *   data freed separately elsewhere\n\t *   (the old h->data should point inside a malloc'd block from\n\t *   hcache so there shouldn't be a memleak here)\n\t */\n\tHEADER *h = mutt_hcache_restore ((unsigned char *) data, NULL);\n\tmutt_free_header (&ctx->hdrs[i]);\n\tctx->hdrs[i] = h;\n\tctx->hdrs[i]->refno = refno;\n\tctx->hdrs[i]->index = index;\n\tctx->hdrs[i]->data = uidl;\n\tret = 0;\n\thcached = 1;\n      }\n      else\n#endif\n      if ((ret = pop_read_header (pop_data, ctx->hdrs[i])) < 0)\n\tbreak;\n#if USE_HCACHE\n      else\n      {\n\tmutt_hcache_store (hc, ctx->hdrs[i]->data, ctx->hdrs[i], 0, strlen, M_GENERATE_UIDVALIDITY);\n      }\n\n      FREE(&data);\n#endif\n\n      /*\n       * faked support for flags works like this:\n       * - if 'hcached' is 1, we have the message in our hcache:\n       *        - if we also have a body: read\n       *        - if we don't have a body: old\n       *          (if $mark_old is set which is maybe wrong as\n       *          $mark_old should be considered for syncing the\n       *          folder and not when opening it XXX)\n       * - if 'hcached' is 0, we don't have the message in our hcache:\n       *        - if we also have a body: read\n       *        - if we don't have a body: new\n       */\n      bcached = mutt_bcache_exists (pop_data->bcache, ctx->hdrs[i]->data) == 0;\n      ctx->hdrs[i]->old = 0;\n      ctx->hdrs[i]->read = 0;\n      if (hcached)\n      {\n        if (bcached)\n          ctx->hdrs[i]->read = 1;\n        else if (option (OPTMARKOLD))\n          ctx->hdrs[i]->old = 1;\n      }\n      else\n      {\n        if (bcached)\n          ctx->hdrs[i]->read = 1;\n      }\n\n      ctx->msgcount++;\n    }\n\n    if (i > old_count)\n      mx_update_context (ctx, i - old_count);\n  }\n\n#if USE_HCACHE\n    mutt_hcache_close (hc);\n#endif\n\n  if (ret < 0)\n  {\n    for (i = ctx->msgcount; i < new_count; i++)\n      mutt_free_header (&ctx->hdrs[i]);\n    return ret;\n  }\n\n  /* after putting the result into our structures,\n   * clean up cache, i.e. wipe messages deleted outside\n   * the availability of our cache\n   */\n  if (option (OPTMESSAGECACHECLEAN))\n    mutt_bcache_list (pop_data->bcache, msg_cache_check, (void*)ctx);\n\n  mutt_clear_error ();\n  return (new_count - old_count);\n}\n\n/* open POP mailbox - fetch only headers */\nint pop_open_mailbox (CONTEXT *ctx)\n{\n  int ret;\n  char buf[LONG_STRING];\n  CONNECTION *conn;\n  ACCOUNT acct;\n  POP_DATA *pop_data;\n  ciss_url_t url;\n\n  if (pop_parse_path (ctx->path, &acct))\n  {\n    mutt_error (_(\"%s is an invalid POP path\"), ctx->path);\n    mutt_sleep (2);\n    return -1;\n  }\n\n  mutt_account_tourl (&acct, &url);\n  url.path = NULL;\n  url_ciss_tostring (&url, buf, sizeof (buf), 0);\n  conn = mutt_conn_find (NULL, &acct);\n  if (!conn)\n    return -1;\n\n  FREE (&ctx->path);\n  ctx->path = safe_strdup (buf);\n\n  pop_data = safe_calloc (1, sizeof (POP_DATA));\n  pop_data->conn = conn;\n  ctx->data = pop_data;\n  ctx->mx_close = pop_close_mailbox;\n\n  if (pop_open_connection (pop_data) < 0)\n    return -1;\n\n  conn->data = pop_data;\n  pop_data->bcache = mutt_bcache_open (&acct, NULL);\n\n  /* init (hard-coded) ACL rights */\n  memset (ctx->rights, 0, sizeof (ctx->rights));\n  mutt_bit_set (ctx->rights, M_ACL_SEEN);\n  mutt_bit_set (ctx->rights, M_ACL_DELETE);\n#if USE_HCACHE\n  /* flags are managed using header cache, so it only makes sense to\n   * enable them in that case */\n  mutt_bit_set (ctx->rights, M_ACL_WRITE);\n#endif\n\n  FOREVER\n  {\n    if (pop_reconnect (ctx) < 0)\n      return -1;\n\n    ctx->size = pop_data->size;\n\n    mutt_message _(\"Fetching list of messages...\");\n\n    ret = pop_fetch_headers (ctx);\n\n    if (ret >= 0)\n      return 0;\n\n    if (ret < -1)\n    {\n      mutt_sleep (2);\n      return -1;\n    }\n  }\n}\n\n/* delete all cached messages */\nstatic void pop_clear_cache (POP_DATA *pop_data)\n{\n  int i;\n\n  if (!pop_data->clear_cache)\n    return;\n\n  dprint (1, (debugfile, \"pop_clear_cache: delete cached messages\\n\"));\n\n  for (i = 0; i < POP_CACHE_LEN; i++)\n  {\n    if (pop_data->cache[i].path)\n    {\n      unlink (pop_data->cache[i].path);\n      FREE (&pop_data->cache[i].path);\n    }\n  }\n}\n\n/* close POP mailbox */\nint pop_close_mailbox (CONTEXT *ctx)\n{\n  POP_DATA *pop_data = (POP_DATA *)ctx->data;\n\n  if (!pop_data)\n    return 0;\n\n  pop_logout (ctx);\n\n  if (pop_data->status != POP_NONE)\n    mutt_socket_close (pop_data->conn);\n\n  pop_data->status = POP_NONE;\n\n  pop_data->clear_cache = 1;\n  pop_clear_cache (pop_data);\n\n  if (!pop_data->conn->data)\n    mutt_socket_free (pop_data->conn);\n\n  mutt_bcache_close (&pop_data->bcache);\n\n  return 0;\n}\n\n/* fetch message from POP server */\nint pop_fetch_message (MESSAGE* msg, CONTEXT* ctx, int msgno)\n{\n  int ret;\n  void *uidl;\n  char buf[LONG_STRING];\n  char path[_POSIX_PATH_MAX];\n  progress_t progressbar;\n  POP_DATA *pop_data = (POP_DATA *)ctx->data;\n  POP_CACHE *cache;\n  HEADER *h = ctx->hdrs[msgno];\n  unsigned short bcache = 1;\n\n  /* see if we already have the message in body cache */\n  if ((msg->fp = mutt_bcache_get (pop_data->bcache, h->data)))\n    return 0;\n\n  /*\n   * see if we already have the message in our cache in\n   * case $message_cachedir is unset\n   */\n  cache = &pop_data->cache[h->index % POP_CACHE_LEN];\n\n  if (cache->path)\n  {\n    if (cache->index == h->index)\n    {\n      /* yes, so just return a pointer to the message */\n      msg->fp = fopen (cache->path, \"r\");\n      if (msg->fp)\n\treturn 0;\n      \n      mutt_perror (cache->path);\n      mutt_sleep (2);\n      return -1;\n    }\n    else\n    {\n      /* clear the previous entry */\n      unlink (cache->path);\n      FREE (&cache->path);\n    }\n  }\n\n  FOREVER\n  {\n    if (pop_reconnect (ctx) < 0)\n      return -1;\n\n    /* verify that massage index is correct */\n    if (h->refno < 0)\n    {\n      mutt_error _(\"The message index is incorrect. Try reopening the mailbox.\");\n      mutt_sleep (2);\n      return -1;\n    }\n\n    mutt_progress_init (&progressbar, _(\"Fetching message...\"),\n\t\t\tM_PROGRESS_SIZE, NetInc, h->content->length + h->content->offset - 1);\n\n    /* see if we can put in body cache; use our cache as fallback */\n    if (!(msg->fp = mutt_bcache_put (pop_data->bcache, h->data, 1)))\n    {\n      /* no */\n      bcache = 0;\n      mutt_mktemp (path, sizeof (path));\n      if (!(msg->fp = safe_fopen (path, \"w+\")))\n      {\n\tmutt_perror (path);\n\tmutt_sleep (2);\n\treturn -1;\n      }\n    }\n\n    snprintf (buf, sizeof (buf), \"RETR %d\\r\\n\", h->refno);\n\n    ret = pop_fetch_data (pop_data, buf, &progressbar, fetch_message, msg->fp);\n    if (ret == 0)\n      break;\n\n    safe_fclose (&msg->fp);\n\n    /* if RETR failed (e.g. connection closed), be sure to remove either\n     * the file in bcache or from POP's own cache since the next iteration\n     * of the loop will re-attempt to put() the message */\n    if (!bcache)\n      unlink (path);\n\n    if (ret == -2)\n    {\n      mutt_error (\"%s\", pop_data->err_msg);\n      mutt_sleep (2);\n      return -1;\n    }\n\n    if (ret == -3)\n    {\n      mutt_error _(\"Can't write message to temporary file!\");\n      mutt_sleep (2);\n      return -1;\n    }\n  }\n\n  /* Update the header information.  Previously, we only downloaded a\n   * portion of the headers, those required for the main display.\n   */\n  if (bcache)\n    mutt_bcache_commit (pop_data->bcache, h->data);\n  else\n  {\n    cache->index = h->index;\n    cache->path = safe_strdup (path);\n  }\n  rewind (msg->fp);\n  uidl = h->data;\n\n  /* we replace envelop, key in subj_hash has to be updated as well */\n  if (ctx->subj_hash && h->env->real_subj)\n    hash_delete (ctx->subj_hash, h->env->real_subj, h, NULL);\n  mutt_free_envelope (&h->env);\n  h->env = mutt_read_rfc822_header (msg->fp, h, 0, 0);\n  if (ctx->subj_hash && h->env->real_subj)\n    hash_insert (ctx->subj_hash, h->env->real_subj, h, 1);\n\n  h->data = uidl;\n  h->lines = 0;\n  fgets (buf, sizeof (buf), msg->fp);\n  while (!feof (msg->fp))\n  {\n    ctx->hdrs[msgno]->lines++;\n    fgets (buf, sizeof (buf), msg->fp);\n  }\n\n  h->content->length = ftello (msg->fp) - h->content->offset;\n\n  /* This needs to be done in case this is a multipart message */\n  if (!WithCrypto)\n    h->security = crypt_query (h->content);\n\n  mutt_clear_error();\n  rewind (msg->fp);\n\n  return 0;\n}\n\n/* update POP mailbox - delete messages from server */\nint pop_sync_mailbox (CONTEXT *ctx, int *index_hint)\n{\n  int i, j, ret = 0;\n  char buf[LONG_STRING];\n  POP_DATA *pop_data = (POP_DATA *)ctx->data;\n  progress_t progress;\n#ifdef USE_HCACHE\n  header_cache_t *hc = NULL;\n#endif\n\n  pop_data->check_time = 0;\n\n  FOREVER\n  {\n    if (pop_reconnect (ctx) < 0)\n      return -1;\n\n    mutt_progress_init (&progress, _(\"Marking messages deleted...\"),\n\t\t\tM_PROGRESS_MSG, WriteInc, ctx->deleted);\n\n#if USE_HCACHE\n    hc = pop_hcache_open (pop_data, ctx->path);\n#endif\n\n    for (i = 0, j = 0, ret = 0; ret == 0 && i < ctx->msgcount; i++)\n    {\n      if (ctx->hdrs[i]->deleted && ctx->hdrs[i]->refno != -1)\n      {\n\tj++;\n\tif (!ctx->quiet)\n\t  mutt_progress_update (&progress, j, -1);\n\tsnprintf (buf, sizeof (buf), \"DELE %d\\r\\n\", ctx->hdrs[i]->refno);\n\tif ((ret = pop_query (pop_data, buf, sizeof (buf))) == 0)\n\t{\n\t  mutt_bcache_del (pop_data->bcache, ctx->hdrs[i]->data);\n#if USE_HCACHE\n\t  mutt_hcache_delete (hc, ctx->hdrs[i]->data, strlen);\n#endif\n\t}\n      }\n\n#if USE_HCACHE\n      if (ctx->hdrs[i]->changed)\n      {\n\tmutt_hcache_store (hc, ctx->hdrs[i]->data, ctx->hdrs[i], 0, strlen, M_GENERATE_UIDVALIDITY);\n      }\n#endif\n\n    }\n\n#if USE_HCACHE\n    mutt_hcache_close (hc);\n#endif\n\n    if (ret == 0)\n    {\n      strfcpy (buf, \"QUIT\\r\\n\", sizeof (buf));\n      ret = pop_query (pop_data, buf, sizeof (buf));\n    }\n\n    if (ret == 0)\n    {\n      pop_data->clear_cache = 1;\n      pop_clear_cache (pop_data);\n      pop_data->status = POP_DISCONNECTED;\n      return 0;\n    }\n\n    if (ret == -2)\n    {\n      mutt_error (\"%s\", pop_data->err_msg);\n      mutt_sleep (2);\n      return -1;\n    }\n  }\n}\n\n/* Check for new messages and fetch headers */\nint pop_check_mailbox (CONTEXT *ctx, int *index_hint)\n{\n  int ret;\n  POP_DATA *pop_data = (POP_DATA *)ctx->data;\n\n  if ((pop_data->check_time + PopCheckTimeout) > time (NULL))\n    return 0;\n\n  pop_logout (ctx);\n\n  mutt_socket_close (pop_data->conn);\n\n  if (pop_open_connection (pop_data) < 0)\n    return -1;\n\n  ctx->size = pop_data->size;\n\n  mutt_message _(\"Checking for new messages...\");\n\n  ret = pop_fetch_headers (ctx);\n  pop_clear_cache (pop_data);\n\n  if (ret < 0)\n    return -1;\n\n  if (ret > 0)\n    return M_NEW_MAIL;\n\n  return 0;\n}\n\n/* Fetch messages and save them in $spoolfile */\nvoid pop_fetch_mail (void)\n{\n  char buffer[LONG_STRING];\n  char msgbuf[SHORT_STRING];\n  char *url, *p;\n  int i, delanswer, last = 0, msgs, bytes, rset = 0, ret;\n  CONNECTION *conn;\n  CONTEXT ctx;\n  MESSAGE *msg = NULL;\n  ACCOUNT acct;\n  POP_DATA *pop_data;\n\n  if (!PopHost)\n  {\n    mutt_error _(\"POP host is not defined.\");\n    return;\n  }\n\n  url = p = safe_calloc (strlen (PopHost) + 7, sizeof (char));\n  if (url_check_scheme (PopHost) == U_UNKNOWN)\n  {\n    strcpy (url, \"pop://\");\t/* __STRCPY_CHECKED__ */\n    p = strchr (url, '\\0');\n  }\n  strcpy (p, PopHost);\t\t/* __STRCPY_CHECKED__ */\n\n  ret = pop_parse_path (url, &acct);\n  FREE (&url);\n  if (ret)\n  {\n    mutt_error (_(\"%s is an invalid POP path\"), PopHost);\n    return;\n  }\n\n  conn = mutt_conn_find (NULL, &acct);\n  if (!conn)\n    return;\n\n  pop_data = safe_calloc (1, sizeof (POP_DATA));\n  pop_data->conn = conn;\n\n  if (pop_open_connection (pop_data) < 0)\n  {\n    mutt_socket_free (pop_data->conn);\n    FREE (&pop_data);\n    return;\n  }\n\n  conn->data = pop_data;\n\n  mutt_message _(\"Checking for new messages...\");\n\n  /* find out how many messages are in the mailbox. */\n  strfcpy (buffer, \"STAT\\r\\n\", sizeof (buffer));\n  ret = pop_query (pop_data, buffer, sizeof (buffer));\n  if (ret == -1)\n    goto fail;\n  if (ret == -2)\n  {\n    mutt_error (\"%s\", pop_data->err_msg);\n    goto finish;\n  }\n\n  sscanf (buffer, \"+OK %d %d\", &msgs, &bytes);\n\n  /* only get unread messages */\n  if (msgs > 0 && option (OPTPOPLAST))\n  {\n    strfcpy (buffer, \"LAST\\r\\n\", sizeof (buffer));\n    ret = pop_query (pop_data, buffer, sizeof (buffer));\n    if (ret == -1)\n      goto fail;\n    if (ret == 0)\n      sscanf (buffer, \"+OK %d\", &last);\n  }\n\n  if (msgs <= last)\n  {\n    mutt_message _(\"No new mail in POP mailbox.\");\n    goto finish;\n  }\n\n  if (mx_open_mailbox (NONULL (Spoolfile), M_APPEND, &ctx) == NULL)\n    goto finish;\n\n  delanswer = query_quadoption (OPT_POPDELETE, _(\"Delete messages from server?\"));\n\n  snprintf (msgbuf, sizeof (msgbuf), _(\"Reading new messages (%d bytes)...\"), bytes);\n  mutt_message (\"%s\", msgbuf);\n\n  for (i = last + 1 ; i <= msgs ; i++)\n  {\n    if ((msg = mx_open_new_message (&ctx, NULL, M_ADD_FROM)) == NULL)\n      ret = -3;\n    else\n    {\n      snprintf (buffer, sizeof (buffer), \"RETR %d\\r\\n\", i);\n      ret = pop_fetch_data (pop_data, buffer, NULL, fetch_message, msg->fp);\n      if (ret == -3)\n\trset = 1;\n\n      if (ret == 0 && mx_commit_message (msg, &ctx) != 0)\n      {\n\trset = 1;\n\tret = -3;\n      }\n\n      mx_close_message (&msg);\n    }\n\n    if (ret == 0 && delanswer == M_YES)\n    {\n      /* delete the message on the server */\n      snprintf (buffer, sizeof (buffer), \"DELE %d\\r\\n\", i);\n      ret = pop_query (pop_data, buffer, sizeof (buffer));\n    }\n\n    if (ret == -1)\n    {\n      mx_close_mailbox (&ctx, NULL);\n      goto fail;\n    }\n    if (ret == -2)\n    {\n      mutt_error (\"%s\", pop_data->err_msg);\n      break;\n    }\n    if (ret == -3)\n    {\n      mutt_error _(\"Error while writing mailbox!\");\n      break;\n    }\n\n    mutt_message (_(\"%s [%d of %d messages read]\"), msgbuf, i - last, msgs - last);\n  }\n\n  mx_close_mailbox (&ctx, NULL);\n\n  if (rset)\n  {\n    /* make sure no messages get deleted */\n    strfcpy (buffer, \"RSET\\r\\n\", sizeof (buffer));\n    if (pop_query (pop_data, buffer, sizeof (buffer)) == -1)\n      goto fail;\n  }\n\nfinish:\n  /* exit gracefully */\n  strfcpy (buffer, \"QUIT\\r\\n\", sizeof (buffer));\n  if (pop_query (pop_data, buffer, sizeof (buffer)) == -1)\n    goto fail;\n  mutt_socket_close (conn);\n  FREE (&pop_data);\n  return;\n\nfail:\n  mutt_error _(\"Server closed connection!\");\n  mutt_socket_close (conn);\n  FREE (&pop_data);\n}\n"
  },
  {
    "path": "pop.h",
    "content": "/*\n * Copyright (C) 2000-2003 Vsevolod Volkov <vvv@mutt.org.ua>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _POP_H\n#define _POP_H 1\n\n#include \"mailbox.h\"\n#include \"mutt_socket.h\"\n#include \"mutt_curses.h\"\n#include \"bcache.h\"\n\n#define POP_PORT 110\n#define POP_SSL_PORT 995\n\n/* number of entries in the hash table */\n#define POP_CACHE_LEN 10\n\n/* maximal length of the server response (RFC1939) */\n#define POP_CMD_RESPONSE 512\n\nenum\n{\n  /* Status */\n  POP_NONE = 0,\n  POP_CONNECTED,\n  POP_DISCONNECTED,\n  POP_BYE\n};\n\ntypedef enum\n{\n  POP_A_SUCCESS = 0,\n  POP_A_SOCKET,\n  POP_A_FAILURE,\n  POP_A_UNAVAIL\n} pop_auth_res_t;\n\ntypedef struct\n{\n  unsigned int index;\n  char *path;\n} POP_CACHE;\n\ntypedef struct\n{\n  CONNECTION *conn;\n  unsigned int status : 2;\n  unsigned int capabilities : 1;\n  unsigned int use_stls : 2;\n  unsigned int cmd_capa : 1;\t/* optional command CAPA */\n  unsigned int cmd_stls : 1;\t/* optional command STLS */\n  unsigned int cmd_user : 2;\t/* optional command USER */\n  unsigned int cmd_uidl : 2;\t/* optional command UIDL */\n  unsigned int cmd_top : 2;\t/* optional command TOP */\n  unsigned int resp_codes : 1;\t/* server supports extended response codes */\n  unsigned int expire : 1;\t/* expire is greater than 0 */\n  unsigned int clear_cache : 1;\n  size_t size;\n  time_t check_time;\n  time_t login_delay;\t\t/* minimal login delay  capability */\n  char *auth_list;\t\t/* list of auth mechanisms */\n  char *timestamp;\n  body_cache_t *bcache;\t\t/* body cache */\n  char err_msg[POP_CMD_RESPONSE];\n  POP_CACHE cache[POP_CACHE_LEN];\n} POP_DATA;\n\ntypedef struct\n{\n  /* do authentication, using named method or any available if method is NULL */\n  pop_auth_res_t (*authenticate) (POP_DATA *, const char *);\n  /* name of authentication method supported, NULL means variable. If this\n   * is not null, authenticate may ignore the second parameter. */\n  const char* method;\n} pop_auth_t;\n\n/* pop_auth.c */\nint pop_authenticate (POP_DATA *);\nvoid pop_apop_timestamp (POP_DATA *, char *);\n\n/* pop_lib.c */\n#define pop_query(A,B,C) pop_query_d(A,B,C,NULL)\nint pop_parse_path (const char *, ACCOUNT *);\nint pop_connect (POP_DATA *);\nint pop_open_connection (POP_DATA *);\nint pop_query_d (POP_DATA *, char *, size_t, char *);\nint pop_fetch_data (POP_DATA *, char *, progress_t *, int (*funct) (char *, void *), void *);\nint pop_reconnect (CONTEXT *);\nvoid pop_logout (CONTEXT *);\nvoid pop_error (POP_DATA *, char *);\n\n/* pop.c */\nint pop_check_mailbox (CONTEXT *, int *);\nint pop_open_mailbox (CONTEXT *);\nint pop_sync_mailbox (CONTEXT *, int *);\nint pop_fetch_message (MESSAGE *, CONTEXT *, int);\nint pop_close_mailbox (CONTEXT *);\nvoid pop_fetch_mail (void);\n\n#endif\n"
  },
  {
    "path": "pop_auth.c",
    "content": "/*\n * Copyright (C) 2000-2001 Vsevolod Volkov <vvv@mutt.org.ua>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mx.h\"\n#include \"md5.h\"\n#include \"pop.h\"\n\n#include <string.h>\n#include <unistd.h>\n\n#ifdef USE_SASL\n#include <sasl/sasl.h>\n#include <sasl/saslutil.h>\n\n#include \"mutt_sasl.h\"\n#endif\n\n#ifdef USE_SASL\n/* SASL authenticator */\nstatic pop_auth_res_t pop_auth_sasl (POP_DATA *pop_data, const char *method)\n{\n  sasl_conn_t *saslconn;\n  sasl_interact_t *interaction = NULL;\n  int rc;\n  char *buf = NULL;\n  size_t bufsize = 0;\n  char inbuf[LONG_STRING];\n  const char* mech;\n  const char *pc = NULL;\n  unsigned int len, olen, client_start;\n\n  if (mutt_sasl_client_new (pop_data->conn, &saslconn) < 0)\n  {\n    dprint (1, (debugfile, \"pop_auth_sasl: Error allocating SASL connection.\\n\"));\n    return POP_A_FAILURE;\n  }\n\n  if (!method)\n    method = pop_data->auth_list;\n\n  FOREVER\n  {\n    rc = sasl_client_start(saslconn, method, &interaction, &pc, &olen, &mech);\n    if (rc != SASL_INTERACT)\n      break;\n    mutt_sasl_interact (interaction);\n  }\n\n  if (rc != SASL_OK && rc != SASL_CONTINUE)\n  {\n    dprint (1, (debugfile, \"pop_auth_sasl: Failure starting authentication exchange. No shared mechanisms?\\n\"));\n\n    /* SASL doesn't support suggested mechanisms, so fall back */\n    return POP_A_UNAVAIL;\n  }\n\n  client_start = olen;\n\n  mutt_message _(\"Authenticating (SASL)...\");\n\n  bufsize = ((olen * 2) > LONG_STRING) ? (olen * 2) : LONG_STRING;\n  buf = safe_malloc (bufsize);\n\n  snprintf (buf, bufsize, \"AUTH %s\", mech);\n  olen = strlen (buf);\n\n  /* looping protocol */\n  FOREVER\n  {\n    strfcpy (buf + olen, \"\\r\\n\", bufsize - olen);\n    mutt_socket_write (pop_data->conn, buf);\n    if (mutt_socket_readln (inbuf, sizeof (inbuf), pop_data->conn) < 0)\n    {\n      sasl_dispose (&saslconn);\n      pop_data->status = POP_DISCONNECTED;\n      FREE (&buf);\n      return POP_A_SOCKET;\n    }\n\n    if (!client_start && rc != SASL_CONTINUE)\n      break;\n\n    if (!mutt_strncmp (inbuf, \"+ \", 2)\n        && sasl_decode64 (inbuf+2, strlen (inbuf+2), buf, bufsize - 1, &len) != SASL_OK)\n    {\n      dprint (1, (debugfile, \"pop_auth_sasl: error base64-decoding server response.\\n\"));\n      goto bail;\n    }\n\n    if (!client_start)\n      FOREVER\n      {\n\trc = sasl_client_step (saslconn, buf, len, &interaction, &pc, &olen);\n\tif (rc != SASL_INTERACT)\n\t  break;\n\tmutt_sasl_interact (interaction);\n      }\n    else\n    {\n      olen = client_start;\n      client_start = 0;\n    }\n\n    if (rc != SASL_CONTINUE && (olen == 0 || rc != SASL_OK))\n      break;\n\n    /* send out response, or line break if none needed */\n    if (pc)\n    {\n      if ((olen * 2) > bufsize)\n      {\n        bufsize = olen * 2;\n        safe_realloc (&buf, bufsize);\n      }\n      if (sasl_encode64 (pc, olen, buf, bufsize, &olen) != SASL_OK)\n      {\n\tdprint (1, (debugfile, \"pop_auth_sasl: error base64-encoding client response.\\n\"));\n\tgoto bail;\n      }\n    }\n  }\n\n  if (rc != SASL_OK)\n    goto bail;\n\n  if (!mutt_strncmp (inbuf, \"+OK\", 3))\n  {\n    mutt_sasl_setup_conn (pop_data->conn, saslconn);\n    FREE (&buf);\n    return POP_A_SUCCESS;\n  }\n\nbail:\n  sasl_dispose (&saslconn);\n\n  /* terminate SASL session if the last response is not +OK nor -ERR */\n  if (!mutt_strncmp (inbuf, \"+ \", 2))\n  {\n    snprintf (buf, bufsize, \"*\\r\\n\");\n    if (pop_query (pop_data, buf, sizeof (buf)) == -1)\n    {\n      FREE (&buf);\n      return POP_A_SOCKET;\n    }\n  }\n\n  FREE (&buf);\n  mutt_error _(\"SASL authentication failed.\");\n  mutt_sleep (2);\n\n  return POP_A_FAILURE;\n}\n#endif\n\n/* Get the server timestamp for APOP authentication */\nvoid pop_apop_timestamp (POP_DATA *pop_data, char *buf)\n{\n  char *p1, *p2;\n\n  FREE (&pop_data->timestamp);\n\n  if ((p1 = strchr (buf, '<')) && (p2 = strchr (p1, '>')))\n  {\n    p2[1] = '\\0';\n    pop_data->timestamp = safe_strdup (p1);\n  }\n}\n\n/* APOP authenticator */\nstatic pop_auth_res_t pop_auth_apop (POP_DATA *pop_data, const char *method)\n{\n  struct md5_ctx ctx;\n  unsigned char digest[16];\n  char hash[33];\n  char buf[LONG_STRING];\n  size_t i;\n\n  if (!pop_data->timestamp)\n    return POP_A_UNAVAIL;\n\n  if (rfc822_valid_msgid (pop_data->timestamp) < 0)\n  {\n    mutt_error _(\"POP timestamp is invalid!\");\n    mutt_sleep (2);\n    return POP_A_UNAVAIL;\n  }\n\n  mutt_message _(\"Authenticating (APOP)...\");\n\n  /* Compute the authentication hash to send to the server */\n  md5_init_ctx (&ctx);\n  md5_process_bytes (pop_data->timestamp, strlen (pop_data->timestamp), &ctx);\n  md5_process_bytes (pop_data->conn->account.pass,\n\t\t     strlen (pop_data->conn->account.pass), &ctx);\n  md5_finish_ctx (&ctx, digest);\n\n  for (i = 0; i < sizeof (digest); i++)\n    sprintf (hash + 2 * i, \"%02x\", digest[i]);\n\n  /* Send APOP command to server */\n  snprintf (buf, sizeof (buf), \"APOP %s %s\\r\\n\", pop_data->conn->account.user, hash);\n\n  switch (pop_query (pop_data, buf, sizeof (buf)))\n  {\n    case 0:\n      return POP_A_SUCCESS;\n    case -1:\n      return POP_A_SOCKET;\n  }\n\n  mutt_error _(\"APOP authentication failed.\");\n  mutt_sleep (2);\n\n  return POP_A_FAILURE;\n}\n\n/* USER authenticator */\nstatic pop_auth_res_t pop_auth_user (POP_DATA *pop_data, const char *method)\n{\n  char buf[LONG_STRING];\n  int ret;\n\n  if (!pop_data->cmd_user)\n    return POP_A_UNAVAIL;\n\n  mutt_message _(\"Logging in...\");\n\n  snprintf (buf, sizeof (buf), \"USER %s\\r\\n\", pop_data->conn->account.user);\n  ret = pop_query (pop_data, buf, sizeof (buf));\n\n  if (pop_data->cmd_user == 2)\n  {\n    if (ret == 0)\n    {\n      pop_data->cmd_user = 1;\n\n      dprint (1, (debugfile, \"pop_auth_user: set USER capability\\n\"));\n    }\n\n    if (ret == -2)\n    {\n      pop_data->cmd_user = 0;\n\n      dprint (1, (debugfile, \"pop_auth_user: unset USER capability\\n\"));\n      snprintf (pop_data->err_msg, sizeof (pop_data->err_msg),\n              _(\"Command USER is not supported by server.\"));\n    }\n  }\n\n  if (ret == 0)\n  {\n    snprintf (buf, sizeof (buf), \"PASS %s\\r\\n\", pop_data->conn->account.pass);\n    ret = pop_query_d (pop_data, buf, sizeof (buf), \n#ifdef DEBUG\n\t/* don't print the password unless we're at the ungodly debugging level */\n\tdebuglevel < M_SOCK_LOG_FULL ? \"PASS *\\r\\n\" :\n#endif\n\tNULL);\n  }\n\n  switch (ret)\n  {\n    case 0:\n      return POP_A_SUCCESS;\n    case -1:\n      return POP_A_SOCKET;\n  }\n\n  mutt_error (\"%s %s\", _(\"Login failed.\"), pop_data->err_msg);\n  mutt_sleep (2);\n\n  return POP_A_FAILURE;\n}\n\nstatic const pop_auth_t pop_authenticators[] = {\n#ifdef USE_SASL\n  { pop_auth_sasl, NULL },\n#endif\n  { pop_auth_apop, \"apop\" },\n  { pop_auth_user, \"user\" },\n  { NULL,\t   NULL }\n};\n\n/*\n * Authentication\n *  0 - successful,\n * -1 - connection lost,\n * -2 - login failed,\n * -3 - authentication canceled.\n*/\nint pop_authenticate (POP_DATA* pop_data)\n{\n  ACCOUNT *acct = &pop_data->conn->account;\n  const pop_auth_t* authenticator;\n  char* methods;\n  char* comma;\n  char* method;\n  int attempts = 0;\n  int ret = POP_A_UNAVAIL;\n\n  if (mutt_account_getuser (acct) || !acct->user[0] ||\n      mutt_account_getpass (acct) || !acct->pass[0])\n    return -3;\n\n  if (PopAuthenticators && *PopAuthenticators)\n  {\n    /* Try user-specified list of authentication methods */\n    methods = safe_strdup (PopAuthenticators);\n    method = methods;\n\n    while (method)\n    {\n      comma = strchr (method, ':');\n      if (comma)\n\t*comma++ = '\\0';\n      dprint (2, (debugfile, \"pop_authenticate: Trying method %s\\n\", method));\n      authenticator = pop_authenticators;\n\n      while (authenticator->authenticate)\n      {\n\tif (!authenticator->method ||\n\t    !ascii_strcasecmp (authenticator->method, method))\n\t{\n\t  ret = authenticator->authenticate (pop_data, method);\n\t  if (ret == POP_A_SOCKET)\n\t    switch (pop_connect (pop_data))\n\t    {\n\t      case 0:\n\t      {\n\t\tret = authenticator->authenticate (pop_data, method);\n\t\tbreak;\n\t      }\n\t      case -2:\n\t\tret = POP_A_FAILURE;\n\t    }\n\n\t  if (ret != POP_A_UNAVAIL)\n\t    attempts++;\n\t  if (ret == POP_A_SUCCESS || ret == POP_A_SOCKET ||\n\t      (ret == POP_A_FAILURE && !option (OPTPOPAUTHTRYALL)))\n\t  {\n\t    comma = NULL;\n\t    break;\n\t  }\n\t}\n\tauthenticator++;\n      }\n\n      method = comma;\n    }\n\n    FREE (&methods);\n  }\n  else\n  {\n    /* Fall back to default: any authenticator */\n    dprint (2, (debugfile, \"pop_authenticate: Using any available method.\\n\"));\n    authenticator = pop_authenticators;\n\n    while (authenticator->authenticate)\n    {\n      ret = authenticator->authenticate (pop_data, authenticator->method);\n      if (ret == POP_A_SOCKET)\n\tswitch (pop_connect (pop_data))\n\t{\n\t  case 0:\n\t  {\n\t    ret = authenticator->authenticate (pop_data, authenticator->method);\n\t    break;\n\t  }\n\t  case -2:\n\t    ret = POP_A_FAILURE;\n\t}\n\n      if (ret != POP_A_UNAVAIL)\n\tattempts++;\n      if (ret == POP_A_SUCCESS || ret == POP_A_SOCKET ||\n\t  (ret == POP_A_FAILURE && !option (OPTPOPAUTHTRYALL)))\n\tbreak;\n\n      authenticator++;\n    }\n  }\n\n  switch (ret)\n  {\n    case POP_A_SUCCESS:\n      return 0;\n    case POP_A_SOCKET:\n      return -1;\n    case POP_A_UNAVAIL:\n      if (!attempts)\n\tmutt_error (_(\"No authenticators available\"));\n  }\n\n  return -2;\n}\n"
  },
  {
    "path": "pop_lib.c",
    "content": "/*\n * Copyright (C) 2000-2003 Vsevolod Volkov <vvv@mutt.org.ua>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mx.h\"\n#include \"url.h\"\n#include \"pop.h\"\n#if defined(USE_SSL)\n# include \"mutt_ssl.h\"\n#endif\n\n#include <string.h>\n#include <unistd.h>\n#include <ctype.h>\n#include <netdb.h>\n#include <errno.h>\n#include <netinet/in.h>\n\n/* given an POP mailbox name, return host, port, username and password */\nint pop_parse_path (const char* path, ACCOUNT* acct)\n{\n  ciss_url_t url;\n  char *c;\n  struct servent *service;\n\n  /* Defaults */\n  acct->flags = 0;\n  acct->type = M_ACCT_TYPE_POP;\n  acct->port = 0;\n\n  c = safe_strdup (path);\n  url_parse_ciss (&url, c);\n\n  if ((url.scheme != U_POP && url.scheme != U_POPS) ||\n      mutt_account_fromurl (acct, &url) < 0)\n  {\n    FREE(&c);\n    mutt_error(_(\"Invalid POP URL: %s\\n\"), path);\n    mutt_sleep(1);\n    return -1;\n  }\n\n  if (url.scheme == U_POPS)\n    acct->flags |= M_ACCT_SSL;\n\n  service = getservbyname (url.scheme == U_POP ? \"pop3\" : \"pop3s\", \"tcp\");\n  if (!acct->port) {\n    if (service)\n      acct->port = ntohs (service->s_port);\n    else\n      acct->port = url.scheme == U_POP ? POP_PORT : POP_SSL_PORT;;\n  }\n\n  FREE (&c);\n  return 0;\n}\n\n/* Copy error message to err_msg buffer */\nvoid pop_error (POP_DATA *pop_data, char *msg)\n{\n  char *t, *c, *c2;\n\n  t = strchr (pop_data->err_msg, '\\0');\n  c = msg;\n\n  if (!mutt_strncmp (msg, \"-ERR \", 5))\n  {\n    c2 = skip_email_wsp(msg + 5);\n\n    if (*c2)\n      c = c2;\n  }\n\n  strfcpy (t, c, sizeof (pop_data->err_msg) - strlen (pop_data->err_msg));\n  mutt_remove_trailing_ws (pop_data->err_msg);\n}\n\n/* Parse CAPA output */\nstatic int fetch_capa (char *line, void *data)\n{\n  POP_DATA *pop_data = (POP_DATA *)data;\n  char *c;\n\n  if (!ascii_strncasecmp (line, \"SASL\", 4))\n  {\n    FREE (&pop_data->auth_list);\n    c = skip_email_wsp(line + 4);\n    pop_data->auth_list = safe_strdup (c);\n  }\n\n  else if (!ascii_strncasecmp (line, \"STLS\", 4))\n    pop_data->cmd_stls = 1;\n\n  else if (!ascii_strncasecmp (line, \"USER\", 4))\n    pop_data->cmd_user = 1;\n\n  else if (!ascii_strncasecmp (line, \"UIDL\", 4))\n    pop_data->cmd_uidl = 1;\n\n  else if (!ascii_strncasecmp (line, \"TOP\", 3))\n    pop_data->cmd_top = 1;\n\n  return 0;\n}\n\n/* Fetch list of the authentication mechanisms */\nstatic int fetch_auth (char *line, void *data)\n{\n  POP_DATA *pop_data = (POP_DATA *)data;\n\n  if (!pop_data->auth_list)\n  {\n    pop_data->auth_list = safe_malloc (strlen (line) + 1);\n    *pop_data->auth_list = '\\0';\n  }\n  else\n  {\n    safe_realloc (&pop_data->auth_list,\n\t    strlen (pop_data->auth_list) + strlen (line) + 2);\n    strcat (pop_data->auth_list, \" \");\t/* __STRCAT_CHECKED__ */\n  }\n  strcat (pop_data->auth_list, line);\t/* __STRCAT_CHECKED__ */\n\n  return 0;\n}\n\n/*\n * Get capabilities\n *  0 - successful,\n * -1 - connection lost,\n * -2 - execution error.\n*/\nstatic int pop_capabilities (POP_DATA *pop_data, int mode)\n{\n  char buf[LONG_STRING];\n\n  /* don't check capabilities on reconnect */\n  if (pop_data->capabilities)\n    return 0;\n\n  /* init capabilities */\n  if (mode == 0)\n  {\n    pop_data->cmd_capa = 0;\n    pop_data->cmd_stls = 0;\n    pop_data->cmd_user = 0;\n    pop_data->cmd_uidl = 0;\n    pop_data->cmd_top = 0;\n    pop_data->resp_codes = 0;\n    pop_data->expire = 1;\n    pop_data->login_delay = 0;\n    FREE (&pop_data->auth_list);\n  }\n\n  /* Execute CAPA command */\n  if (mode == 0 || pop_data->cmd_capa)\n  {\n    strfcpy (buf, \"CAPA\\r\\n\", sizeof (buf));\n    switch (pop_fetch_data (pop_data, buf, NULL, fetch_capa, pop_data))\n    {\n      case 0:\n      {\n\tpop_data->cmd_capa = 1;\n\tbreak;\n      }\n      case -1:\n\treturn -1;\n    }\n  }\n\n  /* CAPA not supported, use defaults */\n  if (mode == 0 && !pop_data->cmd_capa)\n  {\n    pop_data->cmd_user = 2;\n    pop_data->cmd_uidl = 2;\n    pop_data->cmd_top = 2;\n\n    strfcpy (buf, \"AUTH\\r\\n\", sizeof (buf));\n    if (pop_fetch_data (pop_data, buf, NULL, fetch_auth, pop_data) == -1)\n      return -1;\n  }\n\n  /* Check capabilities */\n  if (mode == 2)\n  {\n    char *msg = NULL;\n\n    if (!pop_data->expire)\n      msg = _(\"Unable to leave messages on server.\");\n    if (!pop_data->cmd_top)\n      msg = _(\"Command TOP is not supported by server.\");\n    if (!pop_data->cmd_uidl)\n      msg = _(\"Command UIDL is not supported by server.\");\n    if (msg && pop_data->cmd_capa)\n    {\n      mutt_error (msg);\n      return -2;\n    }\n    pop_data->capabilities = 1;\n  }\n\n  return 0;\n}\n\n/*\n * Open connection\n *  0 - successful,\n * -1 - connection lost,\n * -2 - invalid response.\n*/\nint pop_connect (POP_DATA *pop_data)\n{\n  char buf[LONG_STRING];\n\n  pop_data->status = POP_NONE;\n  if (mutt_socket_open (pop_data->conn) < 0 ||\n      mutt_socket_readln (buf, sizeof (buf), pop_data->conn) < 0)\n  {\n    mutt_error (_(\"Error connecting to server: %s\"), pop_data->conn->account.host);\n    return -1;\n  }\n\n  pop_data->status = POP_CONNECTED;\n\n  if (mutt_strncmp (buf, \"+OK\", 3))\n  {\n    *pop_data->err_msg = '\\0';\n    pop_error (pop_data, buf);\n    mutt_error (\"%s\", pop_data->err_msg);\n    return -2;\n  }\n\n  pop_apop_timestamp (pop_data, buf);\n\n  return 0;\n}\n\n/*\n * Open connection and authenticate\n *  0 - successful,\n * -1 - connection lost,\n * -2 - invalid command or execution error,\n * -3 - authentication canceled.\n*/\nint pop_open_connection (POP_DATA *pop_data)\n{\n  int ret;\n  unsigned int n, size;\n  char buf[LONG_STRING];\n\n  ret = pop_connect (pop_data);\n  if (ret < 0)\n  {\n    mutt_sleep (2);\n    return ret;\n  }\n\n  ret = pop_capabilities (pop_data, 0);\n  if (ret == -1)\n    goto err_conn;\n  if (ret == -2)\n  {\n    mutt_sleep (2);\n    return -2;\n  }\n\n#if defined(USE_SSL)\n  /* Attempt STLS if available and desired. */\n  if (!pop_data->conn->ssf && (pop_data->cmd_stls || option(OPTSSLFORCETLS)))\n  {\n    if (option(OPTSSLFORCETLS))\n      pop_data->use_stls = 2;\n    if (pop_data->use_stls == 0)\n    {\n      ret = query_quadoption (OPT_SSLSTARTTLS,\n\t    _(\"Secure connection with TLS?\"));\n      if (ret == -1)\n\treturn -2;\n      pop_data->use_stls = 1;\n      if (ret == M_YES)\n\tpop_data->use_stls = 2;\n    }\n    if (pop_data->use_stls == 2)\n    {\n      strfcpy (buf, \"STLS\\r\\n\", sizeof (buf));\n      ret = pop_query (pop_data, buf, sizeof (buf));\n      if (ret == -1)\n\tgoto err_conn;\n      if (ret != 0)\n      {\n\tmutt_error (\"%s\", pop_data->err_msg);\n\tmutt_sleep (2);\n      }\n      else if (mutt_ssl_starttls (pop_data->conn))\n      {\n\tmutt_error (_(\"Could not negotiate TLS connection\"));\n\tmutt_sleep (2);\n\treturn -2;\n      }\n      else\n      {\n\t/* recheck capabilities after STLS completes */\n\tret = pop_capabilities (pop_data, 1);\n\tif (ret == -1)\n\t  goto err_conn;\n\tif (ret == -2)\n\t{\n\t  mutt_sleep (2);\n\t  return -2;\n\t}\n      }\n    }\n  }\n\n  if (option(OPTSSLFORCETLS) && !pop_data->conn->ssf)\n  {\n    mutt_error _(\"Encrypted connection unavailable\");\n    mutt_sleep (1);\n    return -2;\n  }\n#endif\n\n  ret = pop_authenticate (pop_data);\n  if (ret == -1)\n    goto err_conn;\n  if (ret == -3)\n    mutt_clear_error ();\n  if (ret != 0)\n    return ret;\n\n  /* recheck capabilities after authentication */\n  ret = pop_capabilities (pop_data, 2);\n  if (ret == -1)\n    goto err_conn;\n  if (ret == -2)\n  {\n    mutt_sleep (2);\n    return -2;\n  }\n\n  /* get total size of mailbox */\n  strfcpy (buf, \"STAT\\r\\n\", sizeof (buf));\n  ret = pop_query (pop_data, buf, sizeof (buf));\n  if (ret == -1)\n    goto err_conn;\n  if (ret == -2)\n  {\n    mutt_error (\"%s\", pop_data->err_msg);\n    mutt_sleep (2);\n    return ret;\n  }\n\n  sscanf (buf, \"+OK %u %u\", &n, &size);\n  pop_data->size = size;\n  return 0;\n\nerr_conn:\n  pop_data->status = POP_DISCONNECTED;\n  mutt_error _(\"Server closed connection!\");\n  mutt_sleep (2);\n  return -1;\n}\n\n/* logout from POP server */\nvoid pop_logout (CONTEXT *ctx)\n{\n  int ret = 0;\n  char buf[LONG_STRING];\n  POP_DATA *pop_data = (POP_DATA *)ctx->data;\n\n  if (pop_data->status == POP_CONNECTED)\n  {\n    mutt_message _(\"Closing connection to POP server...\");\n\n    if (ctx->readonly)\n    {\n      strfcpy (buf, \"RSET\\r\\n\", sizeof (buf));\n      ret = pop_query (pop_data, buf, sizeof (buf));\n    }\n\n    if (ret != -1)\n    {\n      strfcpy (buf, \"QUIT\\r\\n\", sizeof (buf));\n      pop_query (pop_data, buf, sizeof (buf));\n    }\n\n    mutt_clear_error ();\n  }\n\n  pop_data->status = POP_DISCONNECTED;\n  return;\n}\n\n/*\n * Send data from buffer and receive answer to the same buffer\n *  0 - successful,\n * -1 - connection lost,\n * -2 - invalid command or execution error.\n*/\nint pop_query_d (POP_DATA *pop_data, char *buf, size_t buflen, char *msg)\n{\n  int dbg = M_SOCK_LOG_CMD;\n  char *c;\n\n  if (pop_data->status != POP_CONNECTED)\n    return -1;\n\n#ifdef DEBUG\n    /* print msg instead of real command */\n    if (msg)\n    {\n      dbg = M_SOCK_LOG_FULL;\n      dprint (M_SOCK_LOG_CMD, (debugfile, \"> %s\", msg));\n    }\n#endif\n\n  mutt_socket_write_d (pop_data->conn, buf, -1, dbg);\n\n  c = strpbrk (buf, \" \\r\\n\");\n  *c = '\\0';\n  snprintf (pop_data->err_msg, sizeof (pop_data->err_msg), \"%s: \", buf);\n\n  if (mutt_socket_readln (buf, buflen, pop_data->conn) < 0)\n  {\n    pop_data->status = POP_DISCONNECTED;\n    return -1;\n  }\n  if (!mutt_strncmp (buf, \"+OK\", 3))\n    return 0;\n\n  pop_error (pop_data, buf);\n  return -2;\n}\n\n/*\n * This function calls  funct(*line, *data)  for each received line,\n * funct(NULL, *data)  if  rewind(*data)  needs, exits when fail or done.\n * Returned codes:\n *  0 - successful,\n * -1 - connection lost,\n * -2 - invalid command or execution error,\n * -3 - error in funct(*line, *data)\n */\nint pop_fetch_data (POP_DATA *pop_data, char *query, progress_t *progressbar,\n\t\t    int (*funct) (char *, void *), void *data)\n{\n  char buf[LONG_STRING];\n  char *inbuf;\n  char *p;\n  int ret, chunk = 0;\n  long pos = 0;\n  size_t lenbuf = 0;\n\n  strfcpy (buf, query, sizeof (buf));\n  ret = pop_query (pop_data, buf, sizeof (buf));\n  if (ret < 0)\n    return ret;\n\n  inbuf = safe_malloc (sizeof (buf));\n\n  FOREVER\n  {\n    chunk = mutt_socket_readln_d (buf, sizeof (buf), pop_data->conn, M_SOCK_LOG_HDR);\n    if (chunk < 0)\n    {\n      pop_data->status = POP_DISCONNECTED;\n      ret = -1;\n      break;\n    }\n\n    p = buf;\n    if (!lenbuf && buf[0] == '.')\n    {\n      if (buf[1] != '.')\n\tbreak;\n      p++;\n    }\n\n    strfcpy (inbuf + lenbuf, p, sizeof (buf));\n    pos += chunk;\n\n    /* cast is safe since we break out of the loop when chunk<=0 */\n    if ((size_t)chunk >= sizeof (buf))\n    {\n      lenbuf += strlen (p);\n    }\n    else\n    {\n      if (progressbar)\n\tmutt_progress_update (progressbar, pos, -1);\n      if (ret == 0 && funct (inbuf, data) < 0)\n\tret = -3;\n      lenbuf = 0;\n    }\n\n    safe_realloc (&inbuf, lenbuf + sizeof (buf));\n  }\n\n  FREE (&inbuf);\n  return ret;\n}\n\n/* find message with this UIDL and set refno */\nstatic int check_uidl (char *line, void *data)\n{\n  int i;\n  unsigned int index;\n  CONTEXT *ctx = (CONTEXT *)data;\n  char *endp;\n\n  errno = 0;\n  index = strtoul(line, &endp, 10);\n  if (errno)\n      return -1;\n  while (*endp == ' ')\n      endp++;\n  memmove(line, endp, strlen(endp) + 1);\n\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    if (!mutt_strcmp (ctx->hdrs[i]->data, line))\n    {\n      ctx->hdrs[i]->refno = index;\n      break;\n    }\n  }\n\n  return 0;\n}\n\n/* reconnect and verify idnexes if connection was lost */\nint pop_reconnect (CONTEXT *ctx)\n{\n  int ret;\n  POP_DATA *pop_data = (POP_DATA *)ctx->data;\n  progress_t progressbar;\n\n  if (pop_data->status == POP_CONNECTED)\n    return 0;\n  if (pop_data->status == POP_BYE)\n    return -1;\n\n  FOREVER\n  {\n    mutt_socket_close (pop_data->conn);\n\n    ret = pop_open_connection (pop_data);\n    if (ret == 0)\n    {\n      int i;\n\n      mutt_progress_init (&progressbar, _(\"Verifying message indexes...\"),\n\t\t\t  M_PROGRESS_SIZE, NetInc, 0);\n\n      for (i = 0; i < ctx->msgcount; i++)\n\tctx->hdrs[i]->refno = -1;\n\n      ret = pop_fetch_data (pop_data, \"UIDL\\r\\n\", &progressbar, check_uidl, ctx);\n      if (ret == -2)\n      {\n        mutt_error (\"%s\", pop_data->err_msg);\n        mutt_sleep (2);\n      }\n    }\n    if (ret == 0)\n      return 0;\n\n    pop_logout (ctx);\n\n    if (ret < -1)\n      return -1;\n\n    if (query_quadoption (OPT_POPRECONNECT,\n\t\t_(\"Connection lost. Reconnect to POP server?\")) != M_YES)\n      return -1;\n  }\n}\n"
  },
  {
    "path": "postpone.c",
    "content": "/*\n * Copyright (C) 1996-2002,2012-2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2002,2004 Thomas Roessler <roessler@does-not-exist.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_menu.h\"\n#include \"mime.h\"\n#include \"mailbox.h\"\n#include \"mapping.h\"\n#include \"sort.h\"\n#ifdef USE_IMAP\n#include \"imap.h\"\n#endif\n#include \"mutt_crypt.h\"\n\n#include <ctype.h>\n#include <unistd.h>\n#include <string.h>\n#include <sys/stat.h>\n\nstatic const struct mapping_t PostponeHelp[] = {\n  { N_(\"Exit\"),  OP_EXIT },\n  { N_(\"Del\"),   OP_DELETE },\n  { N_(\"Undel\"), OP_UNDELETE },\n  { N_(\"Help\"),  OP_HELP },\n  { NULL,        0 }\n};\n\n\n\nstatic short PostCount = 0;\nstatic CONTEXT *PostContext = NULL;\nstatic short UpdateNumPostponed = 0;\n\n/* Return the number of postponed messages.\n * if force is 0, use a cached value if it is costly to get a fresh\n * count (IMAP) - else check.\n */\nint mutt_num_postponed (int force)\n{\n  struct stat st;\n  CONTEXT ctx;\n\n  static time_t LastModify = 0;\n  static char *OldPostponed = NULL;\n\n  if (UpdateNumPostponed)\n  {\n    UpdateNumPostponed = 0;\n    force = 1;\n  }\n\n  if (mutt_strcmp (Postponed, OldPostponed))\n  {\n    FREE (&OldPostponed);\n    OldPostponed = safe_strdup (Postponed);\n    LastModify = 0;\n    force = 1;\n  }\n\n  if (!Postponed)\n    return 0;\n\n#ifdef USE_IMAP\n  /* LastModify is useless for IMAP */\n  if (mx_is_imap (Postponed))\n  {\n    if (force)\n    {\n      short newpc;\n\n      newpc = imap_status (Postponed, 0);\n      if (newpc >= 0)\n      {\n\tPostCount = newpc;\n\tdprint (3, (debugfile, \"mutt_num_postponed: %d postponed IMAP messages found.\\n\", PostCount));\n      }\n      else\n\tdprint (3, (debugfile, \"mutt_num_postponed: using old IMAP postponed count.\\n\"));\n    }\n    return PostCount;\n  }\n#endif\n\n  if (stat (Postponed, &st) == -1)\n  {\n     PostCount = 0;\n     LastModify = 0;\n     return (0);\n  }\n\n  if (S_ISDIR (st.st_mode))\n  {\n    /* if we have a maildir mailbox, we need to stat the \"new\" dir */\n\n    char buf[_POSIX_PATH_MAX];\n\n    snprintf (buf, sizeof (buf), \"%s/new\", Postponed);\n    if (access (buf, F_OK) == 0 && stat (buf, &st) == -1)\n    {\n      PostCount = 0;\n      LastModify = 0;\n      return 0;\n    }\n  }\n\n  if (LastModify < st.st_mtime)\n  {\n    LastModify = st.st_mtime;\n\n    if (access (Postponed, R_OK | F_OK) != 0)\n      return (PostCount = 0);\n    if (mx_open_mailbox (Postponed, M_NOSORT | M_QUIET, &ctx) == NULL)\n      PostCount = 0;\n    else\n      PostCount = ctx.msgcount;\n    mx_fastclose_mailbox (&ctx);\n  }\n\n  return (PostCount);\n}\n\nvoid mutt_update_num_postponed (void)\n{\n  UpdateNumPostponed = 1;\n}\n\nstatic void post_entry (char *s, size_t slen, MUTTMENU *menu, int entry)\n{\n  CONTEXT *ctx = (CONTEXT *) menu->data;\n\n  _mutt_make_string (s, slen, NONULL (HdrFmt), ctx, ctx->hdrs[entry],\n\t\t     M_FORMAT_ARROWCURSOR);\n}\n\nstatic HEADER *select_msg (void)\n{\n  MUTTMENU *menu;\n  int i, done=0, r=-1;\n  char helpstr[LONG_STRING];\n  short orig_sort;\n\n  menu = mutt_new_menu (MENU_POST);\n  menu->make_entry = post_entry;\n  menu->max = PostContext->msgcount;\n  menu->title = _(\"Postponed Messages\");\n  menu->data = PostContext;\n  menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_POST, PostponeHelp);\n\n  /* The postponed mailbox is setup to have sorting disabled, but the global\n   * Sort variable may indicate something different.   Sorting has to be\n   * disabled while the postpone menu is being displayed. */\n  orig_sort = Sort;\n  Sort = SORT_ORDER;\n\n  while (!done)\n  {\n    switch (i = mutt_menuLoop (menu))\n    {\n      case OP_DELETE:\n      case OP_UNDELETE:\n\tmutt_set_flag (PostContext, PostContext->hdrs[menu->current], M_DELETE, (i == OP_DELETE) ? 1 : 0);\n\tPostCount = PostContext->msgcount - PostContext->deleted;\n\tif (option (OPTRESOLVE) && menu->current < menu->max - 1)\n\t{\n\t  menu->oldcurrent = menu->current;\n\t  menu->current++;\n\t  if (menu->current >= menu->top + menu->pagelen)\n\t  {\n\t    menu->top = menu->current;\n\t    menu->redraw = REDRAW_INDEX | REDRAW_STATUS;\n\t  }\n\t  else\n\t    menu->redraw |= REDRAW_MOTION_RESYNCH;\n\t}\n\telse\n\t  menu->redraw = REDRAW_CURRENT;\n\tbreak;\n\n      case OP_GENERIC_SELECT_ENTRY:\n\tr = menu->current;\n\tdone = 1;\n\tbreak;\n\n      case OP_EXIT:\n\tdone = 1;\n\tbreak;\n    }\n  }\n\n  Sort = orig_sort;\n  mutt_menuDestroy (&menu);\n  return (r > -1 ? PostContext->hdrs[r] : NULL);\n}\n\n/* args:\n *      ctx\tContext info, used when recalling a message to which\n *              we reply.\n *\thdr\tenvelope/attachment info for recalled message\n *\tcur\tif message was a reply, `cur' is set to the message which\n *\t\t`hdr' is in reply to\n *\tfcc\tfcc for the recalled message\n *\tfcclen\tmax length of fcc\n *\n * return vals:\n *\t-1\t\terror/no messages\n *\t0\t\tnormal exit\n *\tSENDREPLY\trecalled message is a reply\n */\nint mutt_get_postponed (CONTEXT *ctx, HEADER *hdr, HEADER **cur, char *fcc, size_t fcclen)\n{\n  HEADER *h;\n  int code = SENDPOSTPONED;\n  LIST *tmp;\n  LIST *last = NULL;\n  LIST *next;\n  const char *p;\n  int opt_delete;\n\n  if (!Postponed)\n    return (-1);\n\n  if ((PostContext = mx_open_mailbox (Postponed, M_NOSORT, NULL)) == NULL)\n  {\n    PostCount = 0;\n    mutt_error _(\"No postponed messages.\");\n    return (-1);\n  }\n\n  if (! PostContext->msgcount)\n  {\n    PostCount = 0;\n    mx_close_mailbox (PostContext, NULL);\n    FREE (&PostContext);\n    mutt_error _(\"No postponed messages.\");\n    return (-1);\n  }\n\n  if (PostContext->msgcount == 1)\n  {\n    /* only one message, so just use that one. */\n    h = PostContext->hdrs[0];\n  }\n  else if ((h = select_msg ()) == NULL)\n  {\n    mx_close_mailbox (PostContext, NULL);\n    FREE (&PostContext);\n    return (-1);\n  }\n\n  if (mutt_prepare_template (NULL, PostContext, hdr, h, 0) < 0)\n  {\n    mx_fastclose_mailbox (PostContext);\n    FREE (&PostContext);\n    return (-1);\n  }\n\n  /* finished with this message, so delete it. */\n  mutt_set_flag (PostContext, h, M_DELETE, 1);\n\n  /* update the count for the status display */\n  PostCount = PostContext->msgcount - PostContext->deleted;\n\n  /* avoid the \"purge deleted messages\" prompt */\n  opt_delete = quadoption (OPT_DELETE);\n  set_quadoption (OPT_DELETE, M_YES);\n  mx_close_mailbox (PostContext, NULL);\n  set_quadoption (OPT_DELETE, opt_delete);\n\n  FREE (&PostContext);\n\n  for (tmp = hdr->env->userhdrs; tmp; )\n  {\n    if (ascii_strncasecmp (\"X-Mutt-References:\", tmp->data, 18) == 0)\n    {\n      if (ctx)\n      {\n\t/* if a mailbox is currently open, look to see if the orignal message\n\t   the user attempted to reply to is in this mailbox */\n\tp = skip_email_wsp(tmp->data + 18);\n\tif (!ctx->id_hash)\n\t  ctx->id_hash = mutt_make_id_hash (ctx);\n\t*cur = hash_find (ctx->id_hash, p);\n      }\n\n      /* Remove the X-Mutt-References: header field. */\n      next = tmp->next;\n      if (last)\n\tlast->next = tmp->next;\n      else\n\thdr->env->userhdrs = tmp->next;\n      tmp->next = NULL;\n      mutt_free_list (&tmp);\n      tmp = next;\n      if (*cur)\n\tcode |= SENDREPLY;\n    }\n    else if (ascii_strncasecmp (\"X-Mutt-Fcc:\", tmp->data, 11) == 0)\n    {\n      p = skip_email_wsp(tmp->data + 11);\n      strfcpy (fcc, p, fcclen);\n      mutt_pretty_mailbox (fcc, fcclen);\n\n      /* remove the X-Mutt-Fcc: header field */\n      next = tmp->next;\n      if (last)\n\tlast->next = tmp->next;\n      else\n\thdr->env->userhdrs = tmp->next;\n      tmp->next = NULL;\n      mutt_free_list (&tmp);\n      tmp = next;\n     /* note that x-mutt-fcc was present.  we do this because we want to add a\n      * default fcc if the header was missing, but preserve the request of the\n      * user to not make a copy if the header field is present, but empty.\n      * see http://dev.mutt.org/trac/ticket/3653\n      */\n      code |= SENDPOSTPONEDFCC;\n    }\n    else if ((WithCrypto & APPLICATION_PGP)\n             && (mutt_strncmp (\"Pgp:\", tmp->data, 4) == 0 /* this is generated\n\t\t\t\t\t\t       * by old mutt versions\n\t\t\t\t\t\t       */\n                 || mutt_strncmp (\"X-Mutt-PGP:\", tmp->data, 11) == 0))\n    {\n      hdr->security = mutt_parse_crypt_hdr (strchr (tmp->data, ':') + 1, 1,\n\t\t\t\t\t    APPLICATION_PGP);\n      hdr->security |= APPLICATION_PGP;\n\n      /* remove the pgp field */\n      next = tmp->next;\n      if (last)\n\tlast->next = tmp->next;\n      else\n\thdr->env->userhdrs = tmp->next;\n      tmp->next = NULL;\n      mutt_free_list (&tmp);\n      tmp = next;\n    }\n    else if ((WithCrypto & APPLICATION_SMIME)\n             && mutt_strncmp (\"X-Mutt-SMIME:\", tmp->data, 13) == 0)\n    {\n      hdr->security = mutt_parse_crypt_hdr (strchr (tmp->data, ':') + 1, 1,\n\t\t\t\t\t    APPLICATION_SMIME);\n      hdr->security |= APPLICATION_SMIME;\n\n      /* remove the smime field */\n      next = tmp->next;\n      if (last)\n\tlast->next = tmp->next;\n      else\n\thdr->env->userhdrs = tmp->next;\n      tmp->next = NULL;\n      mutt_free_list (&tmp);\n      tmp = next;\n    }\n\n#ifdef MIXMASTER\n    else if (mutt_strncmp (\"X-Mutt-Mix:\", tmp->data, 11) == 0)\n    {\n      char *t;\n      mutt_free_list (&hdr->chain);\n\n      t = strtok (tmp->data + 11, \" \\t\\n\");\n      while (t)\n      {\n\thdr->chain = mutt_add_list (hdr->chain, t);\n\tt = strtok (NULL, \" \\t\\n\");\n      }\n\n      next = tmp->next;\n      if (last)\n\tlast->next = tmp->next;\n      else\n\thdr->env->userhdrs = tmp->next;\n      tmp->next = NULL;\n      mutt_free_list (&tmp);\n      tmp = next;\n    }\n#endif\n\n    else\n    {\n      last = tmp;\n      tmp = tmp->next;\n    }\n  }\n\n  if (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n    crypt_opportunistic_encrypt (hdr);\n\n  return (code);\n}\n\n\n\nint mutt_parse_crypt_hdr (const char *p, int set_empty_signas, int crypt_app)\n{\n  char smime_cryptalg[LONG_STRING] = \"\\0\";\n  char sign_as[LONG_STRING] = \"\\0\", *q;\n  int flags = 0;\n\n  if (!WithCrypto)\n    return 0;\n\n  p = skip_email_wsp(p);\n  for (; *p; p++)\n  {\n\n    switch (*p)\n    {\n      case 'e':\n      case 'E':\n        flags |= ENCRYPT;\n        break;\n\n      case 'o':\n      case 'O':\n        flags |= OPPENCRYPT;\n        break;\n\n      case 's':\n      case 'S':\n        flags |= SIGN;\n        q = sign_as;\n\n        if (*(p+1) == '<')\n        {\n          for (p += 2;\n\t       *p && *p != '>' && q < sign_as + sizeof (sign_as) - 1;\n               *q++ = *p++)\n\t    ;\n\n          if (*p!='>')\n          {\n            mutt_error _(\"Illegal crypto header\");\n            return 0;\n          }\n        }\n\n        *q = '\\0';\n        break;\n\n      /* This used to be the micalg parameter.\n       *\n       * It's no longer needed, so we just skip the parameter in order\n       * to be able to recall old messages.\n       */\n      case 'm':\n      case 'M':\n        if(*(p+1) == '<')\n        {\n\t  for (p += 2; *p && *p != '>'; p++)\n\t    ;\n\t  if(*p != '>')\n\t  {\n\t    mutt_error _(\"Illegal crypto header\");\n\t    return 0;\n\t  }\n\t}\n\n\tbreak;\n\n\n      case 'c':\n      case 'C':\n   \tq = smime_cryptalg;\n\n        if(*(p+1) == '<')\n\t{\n\t  for(p += 2; *p && *p != '>' && q < smime_cryptalg + sizeof(smime_cryptalg) - 1;\n\t      *q++ = *p++)\n\t    ;\n\n\t  if(*p != '>')\n\t  {\n\t    mutt_error _(\"Illegal S/MIME header\");\n\t    return 0;\n\t  }\n\t}\n\n\t*q = '\\0';\n\tbreak;\n\n      case 'i':\n      case 'I':\n\tflags |= INLINE;\n\tbreak;\n\n      default:\n        mutt_error _(\"Illegal crypto header\");\n        return 0;\n    }\n\n  }\n\n  /* the cryptalg field must not be empty */\n  if ((WithCrypto & APPLICATION_SMIME) && *smime_cryptalg)\n    mutt_str_replace (&SmimeCryptAlg, smime_cryptalg);\n\n  /* Set {Smime,Pgp}SignAs, if desired. */\n\n  if ((WithCrypto & APPLICATION_PGP) && (crypt_app == APPLICATION_PGP)\n      && (flags & SIGN)\n      && (set_empty_signas || *sign_as))\n    mutt_str_replace (&PgpSignAs, sign_as);\n\n  if ((WithCrypto & APPLICATION_SMIME) && (crypt_app == APPLICATION_SMIME)\n      && (flags & SIGN)\n      && (set_empty_signas || *sign_as))\n    mutt_str_replace (&SmimeDefaultKey, sign_as);\n\n  return flags;\n}\n\n\n\nint mutt_prepare_template (FILE *fp, CONTEXT *ctx, HEADER *newhdr, HEADER *hdr,\n\t\t\t       short weed)\n{\n  MESSAGE *msg = NULL;\n  char file[_POSIX_PATH_MAX];\n  BODY *b;\n  FILE *bfp;\n  int rv = -1;\n  STATE s;\n  int sec_type;\n\n  memset (&s, 0, sizeof (s));\n\n  if (!fp && (msg = mx_open_message (ctx, hdr->msgno)) == NULL)\n    return (-1);\n\n  if (!fp) fp = msg->fp;\n\n  bfp = fp;\n\n  /* parse the message header and MIME structure */\n\n  fseeko (fp, hdr->offset, 0);\n  newhdr->offset = hdr->offset;\n  newhdr->env = mutt_read_rfc822_header (fp, newhdr, 1, weed);\n  newhdr->content->length = hdr->content->length;\n  mutt_parse_part (fp, newhdr->content);\n\n  /* If message_id is set, then we are resending a message and don't want\n   * message_id or mail_followup_to. Otherwise, we are resuming a\n   * postponed message, and want to keep the mail_followup_to.\n   */\n  if (newhdr->env->message_id != NULL)\n  {\n    FREE (&newhdr->env->message_id);\n    FREE (&newhdr->env->mail_followup_to);\n  }\n\n  /* decrypt pgp/mime encoded messages */\n\n  if ((WithCrypto & APPLICATION_PGP) &&\n      (sec_type = mutt_is_multipart_encrypted (newhdr->content)))\n  {\n    newhdr->security |= sec_type;\n    if (!crypt_valid_passphrase (sec_type))\n      goto err;\n\n    mutt_message _(\"Decrypting message...\");\n    if ((crypt_pgp_decrypt_mime (fp, &bfp, newhdr->content, &b) == -1)\n\t|| b == NULL)\n    {\n err:\n      mx_close_message (&msg);\n      mutt_free_envelope (&newhdr->env);\n      mutt_free_body (&newhdr->content);\n      mutt_error _(\"Decryption failed.\");\n      return -1;\n    }\n\n    mutt_free_body (&newhdr->content);\n    newhdr->content = b;\n\n    mutt_clear_error ();\n  }\n\n  /*\n   * remove a potential multipart/signed layer - useful when\n   * resending messages\n   */\n\n  if (WithCrypto && mutt_is_multipart_signed (newhdr->content))\n  {\n    newhdr->security |= SIGN;\n    if ((WithCrypto & APPLICATION_PGP)\n        && ascii_strcasecmp (mutt_get_parameter (\"protocol\", newhdr->content->parameter), \"application/pgp-signature\") == 0)\n      newhdr->security |= APPLICATION_PGP;\n    else if ((WithCrypto & APPLICATION_SMIME))\n      newhdr->security |= APPLICATION_SMIME;\n\n    /* destroy the signature */\n    mutt_free_body (&newhdr->content->parts->next);\n    newhdr->content = mutt_remove_multipart (newhdr->content);\n  }\n\n\n  /*\n   * We don't need no primary multipart.\n   * Note: We _do_ preserve messages!\n   *\n   * XXX - we don't handle multipart/alternative in any\n   * smart way when sending messages.  However, one may\n   * consider this a feature.\n   *\n   */\n\n  if (newhdr->content->type == TYPEMULTIPART)\n    newhdr->content = mutt_remove_multipart (newhdr->content);\n\n  s.fpin = bfp;\n\n  /* create temporary files for all attachments */\n  for (b = newhdr->content; b; b = b->next)\n  {\n\n    /* what follows is roughly a receive-mode variant of\n     * mutt_get_tmp_attachment () from muttlib.c\n     */\n\n    file[0] = '\\0';\n    if (b->filename)\n    {\n      strfcpy (file, b->filename, sizeof (file));\n      b->d_filename = safe_strdup (b->filename);\n    }\n    else\n    {\n      /* avoid Content-Disposition: header with temporary filename */\n      b->use_disp = 0;\n    }\n\n    /* set up state flags */\n\n    s.flags = 0;\n\n    if (b->type == TYPETEXT)\n    {\n      if (!ascii_strcasecmp (\"yes\", mutt_get_parameter (\"x-mutt-noconv\", b->parameter)))\n\tb->noconv = 1;\n      else\n      {\n\ts.flags |= M_CHARCONV;\n\tb->noconv = 0;\n      }\n\n      mutt_delete_parameter (\"x-mutt-noconv\", &b->parameter);\n    }\n\n    mutt_adv_mktemp (file, sizeof(file));\n    if ((s.fpout = safe_fopen (file, \"w\")) == NULL)\n      goto bail;\n\n\n    if ((WithCrypto & APPLICATION_PGP) &&\n\t((sec_type = mutt_is_application_pgp (b)) & (ENCRYPT|SIGN)))\n    {\n      mutt_body_handler (b, &s);\n\n      newhdr->security |= sec_type;\n\n      b->type = TYPETEXT;\n      mutt_str_replace (&b->subtype, \"plain\");\n      mutt_delete_parameter (\"x-action\", &b->parameter);\n    }\n    else if ((WithCrypto & APPLICATION_SMIME) &&\n             ((sec_type = mutt_is_application_smime (b)) & (ENCRYPT|SIGN)))\n    {\n      mutt_body_handler (b, &s);\n\n      newhdr->security |= sec_type;\n      b->type = TYPETEXT;\n      mutt_str_replace (&b->subtype, \"plain\");\n    }\n    else\n      mutt_decode_attachment (b, &s);\n\n    if (safe_fclose (&s.fpout) != 0)\n      goto bail;\n\n    mutt_str_replace (&b->filename, file);\n    b->unlink = 1;\n\n    mutt_stamp_attachment (b);\n\n    mutt_free_body (&b->parts);\n    if (b->hdr) b->hdr->content = NULL; /* avoid dangling pointer */\n  }\n\n  /* Fix encryption flags. */\n\n  /* No inline if multipart. */\n  if (WithCrypto && (newhdr->security & INLINE) && newhdr->content->next)\n    newhdr->security &= ~INLINE;\n\n  /* Do we even support multiple mechanisms? */\n  newhdr->security &= WithCrypto | ~(APPLICATION_PGP|APPLICATION_SMIME);\n\n  /* Theoretically, both could be set. Take the one the user wants to set by default. */\n  if ((newhdr->security & APPLICATION_PGP) && (newhdr->security & APPLICATION_SMIME))\n  {\n    if (option (OPTSMIMEISDEFAULT))\n      newhdr->security &= ~APPLICATION_PGP;\n    else\n      newhdr->security &= ~APPLICATION_SMIME;\n  }\n\n  rv = 0;\n\n  bail:\n\n  /* that's it. */\n  if (bfp != fp) safe_fclose (&bfp);\n  if (msg) mx_close_message (&msg);\n\n  if (rv == -1)\n  {\n    mutt_free_envelope (&newhdr->env);\n    mutt_free_body (&newhdr->content);\n  }\n\n  return rv;\n}\n"
  },
  {
    "path": "prepare",
    "content": "#!/bin/sh\n\nif autoreconf --install && ./configure \"$@\"\nthen\n  echo\n  echo \"The mutt source code was successfully prepared and configured.\"\n  echo \"Type   make && make install   to build and install mutt.\"\n  echo\nelse\n  echo\n  echo \"Some part of the preparation process failed.\"\n  echo \"Please refer to doc/devel-notes.txt for details.\"\n  echo\n  exit 1\nfi\n"
  },
  {
    "path": "protos.h",
    "content": "/*\n * Copyright (C) 1996-2000,2007,2010,2013 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2013 Karel Zak <kzak@redhat.com>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n\n#ifdef HAVE_INTTYPES_H\n# include <inttypes.h>\n#endif\n\n#include \"mbyte.h\"\n\n#define MoreArgs(p) (*p->dptr && *p->dptr != ';' && *p->dptr != '#')\n\n#define mutt_make_string(A,B,C,D,E) _mutt_make_string(A,B,C,D,E,0)\nvoid _mutt_make_string (char *, size_t, const char *, CONTEXT *,\n\tHEADER *, format_flag);\n\nstruct hdr_format_info\n{\n  CONTEXT *ctx;\n  HEADER *hdr;\n  const char *pager_progress;\n};\n\nvoid mutt_make_string_info (char *, size_t, const char *, struct hdr_format_info *, format_flag);\n\nint mutt_extract_token (BUFFER *, BUFFER *, int);\nBUFFER *mutt_buffer_new (void);\nBUFFER * mutt_buffer_init (BUFFER *);\nBUFFER * mutt_buffer_from (char *);\nvoid mutt_buffer_free(BUFFER **);\nint mutt_buffer_printf (BUFFER*, const char*, ...);\nvoid mutt_buffer_add (BUFFER*, const char*, size_t);\nvoid mutt_buffer_addstr (BUFFER*, const char*);\nvoid mutt_buffer_addch (BUFFER*, char);\nvoid mutt_free_opts (void);\n\n#define mutt_system(x) _mutt_system(x,0)\nint _mutt_system (const char *, int);\n\n#define mutt_next_thread(x) _mutt_aside_thread(x,1,0)\n#define mutt_previous_thread(x) _mutt_aside_thread(x,0,0)\n#define mutt_next_subthread(x) _mutt_aside_thread(x,1,1)\n#define mutt_previous_subthread(x) _mutt_aside_thread(x,0,1)\nint _mutt_aside_thread (HEADER *, short, short);\n\n#define mutt_collapse_thread(x,y) _mutt_traverse_thread (x,y,M_THREAD_COLLAPSE)\n#define mutt_uncollapse_thread(x,y) _mutt_traverse_thread (x,y,M_THREAD_UNCOLLAPSE)\n#define mutt_get_hidden(x,y)_mutt_traverse_thread (x,y,M_THREAD_GET_HIDDEN) \n#define mutt_thread_contains_unread(x,y) _mutt_traverse_thread (x,y,M_THREAD_UNREAD)\n#define mutt_thread_next_unread(x,y) _mutt_traverse_thread(x,y,M_THREAD_NEXT_UNREAD)\nint _mutt_traverse_thread (CONTEXT *ctx, HEADER *hdr, int flag);\n\n\n#define mutt_new_parameter() safe_calloc (1, sizeof (PARAMETER))\n#define mutt_new_header() safe_calloc (1, sizeof (HEADER))\n#define mutt_new_envelope() safe_calloc (1, sizeof (ENVELOPE))\n#define mutt_new_enter_state() safe_calloc (1, sizeof (ENTER_STATE))\n\ntypedef const char * format_t (char *, size_t, size_t, char, const char *, const char *, const char *, const char *, unsigned long, format_flag);\n\nvoid mutt_FormatString (char *, size_t, size_t, const char *, format_t *, unsigned long, format_flag);\nvoid mutt_parse_content_type (char *, BODY *);\nvoid mutt_generate_boundary (PARAMETER **);\nvoid mutt_delete_parameter (const char *attribute, PARAMETER **p);\nvoid mutt_set_parameter (const char *, const char *, PARAMETER **);\n\n#ifdef USE_NOTMUCH\nint mutt_parse_virtual_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *err);\n#endif\n\nFILE *mutt_open_read (const char *, pid_t *);\n\nvoid set_quadoption (int, int);\nint query_quadoption (int, const char *);\nint quadoption (int);\n\nchar* mutt_extract_message_id (const char *, const char **);\n\nADDRESS *mutt_default_from (void);\nADDRESS *mutt_get_address (ENVELOPE *, char **);\nADDRESS *mutt_lookup_alias (const char *s);\nADDRESS *mutt_remove_duplicates (ADDRESS *);\nADDRESS *mutt_remove_xrefs (ADDRESS *, ADDRESS *);\nADDRESS *mutt_expand_aliases (ADDRESS *);\nADDRESS *mutt_parse_adrlist (ADDRESS *, const char *);\n\nBODY *mutt_make_file_attach (const char *);\nBODY *mutt_make_message_attach (CONTEXT *, HEADER *, int);\nBODY *mutt_remove_multipart (BODY *);\nBODY *mutt_make_multipart (BODY *);\nBODY *mutt_new_body (void);\nBODY *mutt_parse_multipart (FILE *, const char *, LOFF_T, int);\nBODY *mutt_parse_messageRFC822 (FILE *, BODY *);\nBODY *mutt_read_mime_header (FILE *, int);\n\nCONTENT *mutt_get_content_info (const char *fname, BODY *b);\n\nHASH *mutt_make_id_hash (CONTEXT *);\nHASH *mutt_make_subj_hash (CONTEXT *);\n\nLIST *mutt_make_references(ENVELOPE *e);\n\nchar *mutt_read_rfc822_line (FILE *, char *, size_t *);\nENVELOPE *mutt_read_rfc822_header (FILE *, HEADER *, short, short);\nHEADER *mutt_dup_header (HEADER *);\n\nvoid mutt_set_mtime (const char *from, const char *to);\ntime_t mutt_decrease_mtime (const char *, struct stat *);\ntime_t mutt_local_tz (time_t);\ntime_t mutt_mktime (struct tm *, int);\ntime_t mutt_parse_date (const char *, HEADER *);\nint is_from (const char *, char *, size_t, time_t *);\n\nconst char *mutt_attach_fmt (\n\tchar *dest,\n\tsize_t destlen,\n\tsize_t col,\n\tchar op,\n\tconst char *src,\n\tconst char *prefix,\n\tconst char *ifstring,\n\tconst char *elsestring,\n\tunsigned long data,\n\tformat_flag flags);\n\n\nchar *mutt_charset_hook (const char *);\nchar *mutt_iconv_hook (const char *);\nchar *mutt_expand_path (char *, size_t);\nchar *_mutt_expand_path (char *, size_t, int);\nchar *mutt_find_hook (int, const char *);\nchar *mutt_gecos_name (char *, size_t, struct passwd *);\nchar *mutt_gen_msgid (void);\nchar *mutt_get_body_charset (char *, size_t, BODY *);\nconst char *mutt_get_name (ADDRESS *);\nchar *mutt_get_parameter (const char *, PARAMETER *);\nLIST *mutt_crypt_hook (ADDRESS *);\nchar *mutt_make_date (char *, size_t);\n\nconst char *mutt_make_version (void);\n\nconst char *mutt_fqdn(short);\n\ngroup_t *mutt_pattern_group (const char *);\n\nREGEXP *mutt_compile_regexp (const char *, int);\n\nvoid mutt_account_hook (const char* url);\nvoid mutt_add_to_reference_headers (ENVELOPE *env, ENVELOPE *curenv, LIST ***pp, LIST ***qq);\nvoid mutt_adv_mktemp (char *, size_t);\nvoid mutt_alias_menu (char *, size_t, ALIAS *);\nvoid mutt_allow_interrupt (int);\nvoid mutt_attach_init (BODY *);\nvoid mutt_block_signals (void);\nvoid mutt_block_signals_system (void);\nint mutt_body_handler (BODY *, STATE *);\nint  mutt_bounce_message (FILE *fp, HEADER *, ADDRESS *);\nvoid mutt_break_thread (HEADER *);\nvoid mutt_buffy (char *, size_t);\nint  mutt_buffy_list (void);\nvoid mutt_canonical_charset (char *, size_t, const char *);\nint mutt_count_body_parts (CONTEXT *, HEADER *);\nvoid mutt_check_rescore (CONTEXT *);\nvoid mutt_clear_error (void);\nvoid mutt_create_alias (ENVELOPE *, ADDRESS *);\nvoid mutt_decode_attachment (BODY *, STATE *);\nvoid mutt_decode_base64 (STATE *s, long len, int istext, iconv_t cd);\nvoid mutt_default_save (char *, size_t, HEADER *);\nvoid mutt_display_address (ENVELOPE *);\nvoid mutt_display_sanitize (char *);\nvoid mutt_draw_statusline (int n, char *);\nvoid mutt_edit_content_type (HEADER *, BODY *, FILE *);\nvoid mutt_edit_file (const char *, const char *);\nvoid mutt_edit_headers (const char *, const char *, HEADER *, char *, size_t);\nint mutt_filter_unprintable (char **);\nvoid mutt_curses_error (const char *, ...);\nvoid mutt_curses_message (const char *, ...);\nvoid mutt_encode_descriptions (BODY *, short);\nvoid mutt_encode_path (char *, size_t, const char *);\nvoid mutt_enter_command (void);\nvoid mutt_expand_aliases_env (ENVELOPE *);\nvoid mutt_expand_file_fmt (char *, size_t, const char *, const char *);\nvoid mutt_expand_fmt (char *, size_t, const char *, const char *);\nvoid mutt_expand_link (char *, const char *, const char *);\nvoid mutt_fix_reply_recipients (ENVELOPE *env);\nvoid mutt_folder_hook (char *);\nvoid mutt_format_string (char *, size_t, int, int, int, char, const char *, size_t, int);\nvoid mutt_format_s (char *, size_t, const char *, const char *);\nvoid mutt_format_s_tree (char *, size_t, const char *, const char *);\nvoid mutt_forward_intro (FILE *fp, HEADER *cur);\nvoid mutt_forward_trailer (FILE *fp);\nvoid mutt_free_alias (ALIAS **);\nvoid mutt_free_body (BODY **);\nvoid mutt_free_color (int fg, int bg);\nvoid mutt_free_enter_state (ENTER_STATE **);\nvoid mutt_free_envelope (ENVELOPE **);\nvoid mutt_free_header (HEADER **);\nvoid mutt_free_parameter (PARAMETER **);\nvoid mutt_free_regexp (REGEXP **);\nvoid mutt_generate_header (char *, size_t, HEADER *, int);\nvoid mutt_help (int);\nvoid mutt_draw_tree (CONTEXT *);\nvoid mutt_check_lookup_list (BODY *, char *, int);\nvoid mutt_make_attribution (CONTEXT *ctx, HEADER *cur, FILE *out);\nvoid mutt_make_forward_subject (ENVELOPE *env, CONTEXT *ctx, HEADER *cur);\nvoid mutt_make_help (char *, size_t, const char *, int, int);\nvoid mutt_make_misc_reply_headers (ENVELOPE *env, CONTEXT *ctx, HEADER *cur, ENVELOPE *curenv);\nvoid mutt_make_post_indent (CONTEXT *ctx, HEADER *cur, FILE *out);\nvoid mutt_merge_envelopes(ENVELOPE* base, ENVELOPE** extra);\nvoid mutt_message_to_7bit (BODY *, FILE *);\n#define mutt_mktemp(a,b) mutt_mktemp_pfx_sfx (a, b, \"mutt\", NULL)\n#define mutt_mktemp_pfx_sfx(a,b,c,d)  _mutt_mktemp (a, b, c, d, __FILE__, __LINE__)\nvoid _mutt_mktemp (char *, size_t, const char *, const char *, const char *, int);\nvoid mutt_normalize_time (struct tm *);\nvoid mutt_paddstr (int, const char *);\nvoid mutt_parse_mime_message (CONTEXT *ctx, HEADER *);\nvoid mutt_parse_part (FILE *, BODY *);\nvoid mutt_perror (const char *);\nvoid mutt_prepare_envelope (ENVELOPE *, int);\nvoid mutt_unprepare_envelope (ENVELOPE *);\nvoid mutt_pretty_mailbox (char *, size_t);\nvoid mutt_pretty_size (char *, size_t, LOFF_T);\nvoid mutt_pipe_message (HEADER *);\nvoid mutt_print_message (HEADER *);\nvoid mutt_print_patchlist (void);\nvoid mutt_query_exit (void);\nvoid mutt_query_menu (char *, size_t);\nvoid mutt_safe_path (char *s, size_t l, ADDRESS *a);\nvoid mutt_save_path (char *s, size_t l, ADDRESS *a);\nvoid mutt_score_message (CONTEXT *, HEADER *, int);\nvoid mutt_select_fcc (char *, size_t, HEADER *);\n#define mutt_select_file(A,B,C) _mutt_select_file(A,B,C,NULL,NULL)\nvoid _mutt_select_file (char *, size_t, int, char ***, int *);\nvoid mutt_message_hook (CONTEXT *, HEADER *, int);\nvoid _mutt_set_flag (CONTEXT *, HEADER *, int, int, int);\n#define mutt_set_flag(a,b,c,d) _mutt_set_flag(a,b,c,d,1)\nvoid mutt_set_followup_to (ENVELOPE *);\nvoid mutt_shell_escape (void);\nvoid mutt_show_error (void);\nvoid mutt_signal_init (void);\nvoid mutt_stamp_attachment (BODY *a);\nvoid mutt_tabs_to_spaces (char *);\nvoid mutt_tag_set_flag (int, int);\nshort mutt_ts_capability (void);\nvoid mutt_unblock_signals (void);\nvoid mutt_unblock_signals_system (int);\nvoid mutt_update_encoding (BODY *a);\nvoid mutt_version (void);\nvoid mutt_view_attachments (HEADER *);\nvoid mutt_write_address_list (ADDRESS *adr, FILE *fp, int linelen, int display);\nvoid mutt_set_virtual (CONTEXT *);\n\nint mutt_add_to_rx_list (RX_LIST **list, const char *s, int flags, BUFFER *err);\nint mutt_addr_is_user (ADDRESS *);\nint mutt_addwch (wchar_t);\nint mutt_alias_complete (char *, size_t);\nvoid mutt_alias_add_reverse (ALIAS *t);\nvoid mutt_alias_delete_reverse (ALIAS *t);\nint mutt_alloc_color (int fg, int bg);\nint mutt_any_key_to_continue (const char *);\nint mutt_buffy_check (int);\nint mutt_buffy_notify (void);\nint mutt_builtin_editor (const char *, HEADER *, HEADER *);\nint mutt_can_decode (BODY *);\nint mutt_change_flag (HEADER *, int);\nint mutt_check_alias_name (const char *, char *, size_t);\nint mutt_check_encoding (const char *);\nint mutt_check_key (const char *);\nint mutt_check_menu (const char *);\nint mutt_check_mime_type (const char *);\nint mutt_check_month (const char *);\nint mutt_check_overwrite (const char *, const char *, char *, size_t, int *, char **);\nint mutt_check_traditional_pgp (HEADER *, int *);\nint mutt_command_complete (char *, size_t, int, int);\nint mutt_var_value_complete (char *, size_t, int);\n#if USE_NOTMUCH\nint mutt_nm_query_complete (char *buffer, size_t len, int pos, int numtabs);\nint mutt_nm_tag_complete (char *buffer, size_t len, int pos, int numtabs);\n#endif\nint mutt_complete (char *, size_t);\nint mutt_compose_attachment (BODY *a);\nint mutt_copy_body (FILE *, BODY **, BODY *);\nint mutt_decode_save_attachment (FILE *, BODY *, char *, int, int);\nint mutt_display_message (HEADER *h);\nint mutt_dump_variables (void);\nint mutt_edit_attachment(BODY *);\nint mutt_edit_message (CONTEXT *, HEADER *);\nint mutt_fetch_recips (ENVELOPE *out, ENVELOPE *in, int flags);\nint mutt_chscmp (const char *s, const char *chs);\n#define mutt_is_utf8(a) mutt_chscmp (a, \"utf-8\")\n#define mutt_is_us_ascii(a) mutt_chscmp (a, \"us-ascii\")\nint mutt_parent_message (CONTEXT *, HEADER *);\nint mutt_prepare_template(FILE*, CONTEXT *, HEADER *, HEADER *, short);\nint mutt_resend_message (FILE *, CONTEXT *, HEADER *);\n#define mutt_enter_fname(A,B,C,D,E) _mutt_enter_fname(A,B,C,D,E,0,NULL,NULL,0)\n#define mutt_enter_vfolder(A,B,C,D,E) _mutt_enter_fname(A,B,C,D,E,0,NULL,NULL,M_SEL_VFOLDER)\n\nint _mutt_enter_fname (const char *, char *, size_t, int *, int, int, char ***, int *, int);\nint  mutt_enter_string (char *buf, size_t buflen, int y, int x, int flags);\nint _mutt_enter_string (char *, size_t, int, int, int, int, char ***, int *, ENTER_STATE *);\n#define mutt_get_field(A,B,C,D) _mutt_get_field(A,B,C,D,0,NULL,NULL)\nint _mutt_get_field (const char *, char *, size_t, int, int, char ***, int *);\nint mutt_get_hook_type (const char *);\nint mutt_get_field_unbuffered (char *, char *, size_t, int);\n#define mutt_get_password(A,B,C) mutt_get_field_unbuffered(A,B,C,M_PASS)\nint mutt_get_postponed (CONTEXT *, HEADER *, HEADER **, char *, size_t);\nint mutt_get_tmp_attachment (BODY *);\nint mutt_index_menu (void);\nint mutt_invoke_sendmail (ADDRESS *, ADDRESS *, ADDRESS *, ADDRESS *, const char *, int);\nint mutt_is_mail_list (ADDRESS *);\nint mutt_is_message_type(int, const char *);\nint mutt_is_list_cc (int, ADDRESS *, ADDRESS *);\nint mutt_is_list_recipient (int, ADDRESS *, ADDRESS *);\nint mutt_is_subscribed_list (ADDRESS *);\nint mutt_is_text_part (BODY *);\nint mutt_is_valid_mailbox (const char *);\nint mutt_link_threads (HEADER *, HEADER *, CONTEXT *);\nint mutt_lookup_mime_type (BODY *, const char *);\nint mutt_match_rx_list (const char *, RX_LIST *);\nint mutt_match_spam_list (const char *, SPAM_LIST *, char *, int);\nint mutt_messages_in_thread (CONTEXT *, HEADER *, int);\nint mutt_multi_choice (char *prompt, char *letters);\nint mutt_needs_mailcap (BODY *);\nint mutt_num_postponed (int);\nint mutt_parse_bind (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_exec (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_color (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_uncolor (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_hook (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_macro (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_mailboxes (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_mono (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_unmono (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_push (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_rc_line (/* const */ char *, BUFFER *, BUFFER *);\nint mutt_parse_rfc822_line (ENVELOPE *e, HEADER *hdr, char *line, char *p,\n  short user_hdrs, short weed, short do_2047, LIST **lastp);\nint mutt_parse_score (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_unscore (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_parse_unhook (BUFFER *, BUFFER *, unsigned long, BUFFER *);\nint mutt_pattern_func (int, char *);\nint mutt_pipe_attachment (FILE *, BODY *, const char *, char *); \nint mutt_print_attachment (FILE *, BODY *);\nint mutt_query_complete (char *, size_t);\nint mutt_query_variables (LIST *queries);\nint mutt_save_attachment (FILE *, BODY *, char *, int, HEADER *);\nint _mutt_save_message (HEADER *, CONTEXT *, int, int, int);\nint mutt_save_message (HEADER *, int, int, int, int *);\nint mutt_search_command (int, int);\n#ifdef USE_SMTP\nint mutt_smtp_send (const ADDRESS *, const ADDRESS *, const ADDRESS *,\n                    const ADDRESS *, const char *, int);\n#endif\nsize_t mutt_wstr_trunc (const char *, size_t, size_t, size_t *);\nint mutt_charlen (const char *s, int *);\nint mutt_strwidth (const char *);\nint mutt_compose_menu (HEADER *, char *, size_t, HEADER *, int);\nint mutt_thread_set_flag (HEADER *, int, int, int);\nint mutt_user_is_recipient (HEADER *);\nvoid mutt_update_num_postponed (void);\nint mutt_wait_filter (pid_t);\nint mutt_which_case (const char *);\nint mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int, char *, char **);\nint mutt_write_mime_body (BODY *, FILE *);\nint mutt_write_mime_header (BODY *, FILE *);\nint mutt_write_one_header (FILE *fp, const char *tag, const char *value, const char *pfx, int wraplen, int flags);\nint mutt_write_rfc822_header (FILE *, ENVELOPE *, BODY *, int, int);\nvoid mutt_write_references (LIST *, FILE *, int);\nint mutt_yesorno (const char *, int);\nvoid mutt_set_header_color(CONTEXT *, HEADER *);\nvoid mutt_sleep (short);\nint mutt_save_confirm (const char  *, struct stat *);\nvoid mutt_randbuf(void *out, size_t len);\n#define MUTT_RANDTAG_LEN (16)\nvoid mutt_rand_base32(void *out, size_t len);\nuint32_t mutt_rand32(void);\nuint64_t mutt_rand64(void);\n\nint mh_valid_message (const char *);\n\npid_t mutt_create_filter (const char *, FILE **, FILE **, FILE **);\npid_t mutt_create_filter_fd (const char *, FILE **, FILE **, FILE **, int, int, int);\n\nADDRESS *alias_reverse_lookup (ADDRESS *);\n\n/* base64.c */\nvoid mutt_to_base64 (unsigned char*, const unsigned char*, size_t, size_t);\nint mutt_from_base64 (char*, const char*);\n\n/* utf8.c */\nint mutt_wctoutf8 (char *s, unsigned int c, size_t buflen);\n\n#ifdef LOCALES_HACK\n#define IsPrint(c) (isprint((unsigned char)(c)) || \\\n\t((unsigned char)(c) >= 0xa0))\n#define IsWPrint(wc) (iswprint(wc) || wc >= 0xa0)\n#else\n#define IsPrint(c) (isprint((unsigned char)(c)) || \\\n\t(option (OPTLOCALES) ? 0 : \\\n\t((unsigned char)(c) >= 0xa0)))\n#define IsWPrint(wc) (iswprint(wc) || \\\n\t(option (OPTLOCALES) ? 0 : (wc >= 0xa0)))\n#endif\n\n#define new_pattern() safe_calloc(1, sizeof (pattern_t))\n\nint mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, HEADER *h);\npattern_t *mutt_pattern_comp (/* const */ char *s, int flags, BUFFER *err);\nvoid mutt_check_simple (char *s, size_t len, const char *simple);\nvoid mutt_pattern_free (pattern_t **pat);\n\n/* ----------------------------------------------------------------------------\n * Prototypes for broken systems\n */\n\n#ifdef HAVE_LONG_LONG_INT\n#ifdef LONGLONG\n#error LONGLONG is already defined\n#endif\n#define LONGLONG long long\n#else\n#define LONGLONG long\n#endif\n\n/* HP-UX, ConvexOS and UNIXware don't have this macro */\n#ifndef S_ISLNK\n#define S_ISLNK(x) (((x) & S_IFMT) == S_IFLNK ? 1 : 0)\n#endif\n\nint getdnsdomainname (char *, size_t);\n\n/* According to SCO support, this is how to detect SCO */\n#if defined (_M_UNIX) || defined (M_OS)\n#define SCO\n#endif\n\n/* SCO Unix uses chsize() instead of ftruncate() */\n#ifndef HAVE_FTRUNCATE\n#define ftruncate chsize\n#endif\n\n#ifndef HAVE_SNPRINTF\nextern int snprintf (char *, size_t, const char *, ...);\n#endif\n\n#ifndef HAVE_VSNPRINTF\nextern int vsnprintf (char *, size_t, const char *, va_list);\n#endif\n\n#ifndef HAVE_STRERROR\n#ifndef STDC_HEADERS\nextern int sys_nerr;\nextern char *sys_errlist[];\n#endif\n\n#define strerror(x) ((x) > 0 && (x) < sys_nerr) ? sys_errlist[(x)] : 0\n#endif /* !HAVE_STRERROR */\n\n#ifndef HAVE_MEMMOVE\n#define memmove(d,s,n) bcopy((s),(d),(n))\n#endif\n\n/* AIX doesn't define these in any headers (sigh) */\nint strcasecmp (const char *, const char *);\nint strncasecmp (const char *, const char *, size_t);\n\n#ifdef _AIX\nint setegid (gid_t);\n#endif /* _AIX */\n\n#ifndef STDC_HEADERS\nextern FILE *fdopen ();\nextern int system ();\nextern int puts ();\nextern int fputs ();\nextern int fputc ();\nextern int fseek ();\nextern char *strchr ();\nextern int getopt ();\nextern int fputs ();\nextern int fputc ();\nextern int fclose ();\nextern int fprintf();\nextern int printf ();\nextern int fgetc ();\nextern int tolower ();\nextern int toupper ();\nextern int sscanf ();\nextern size_t fread ();\nextern size_t fwrite ();\nextern int system ();\nextern int rename ();\nextern time_t time ();\nextern struct tm *localtime ();\nextern char *asctime ();\nextern char *strpbrk ();\nextern int fflush ();\nextern long lrand48 ();\nextern void srand48 ();\nextern time_t mktime ();\nextern int vsprintf ();\nextern int ungetc ();\nextern int ftruncate ();\nextern void *memset ();\nextern int pclose ();\nextern int socket ();\nextern int connect ();\nextern size_t strftime ();\nextern int lstat ();\nextern void rewind ();\nextern int readlink ();\n\n/* IRIX barfs on empty var decls because the system include file uses elipsis\n   in the declaration.  So declare all the args to avoid compiler errors.  This\n   should be harmless on other systems.  */\nint ioctl (int, int, ...);\n\n#endif\n\n/* unsorted */\nvoid ci_bounce_message (HEADER *, int *);\nint ci_send_message (int, HEADER *, char *, CONTEXT *, HEADER *);\n\n/* prototypes for compatibility functions */\n\n#ifndef HAVE_SETENV\nint setenv (const char *, const char *, int);\n#endif\n\n#ifndef HAVE_STRCASECMP\nint strcasecmp (char *, char *);\nint strncasecmp (char *, char *, size_t);\n#endif\n\n#ifndef HAVE_STRDUP\nchar *strdup (const char *);\n#endif\n\n#ifndef HAVE_STRSEP\nchar *strsep (char **, const char *);\n#endif\n\n#ifndef HAVE_STRTOK_R\nchar *strtok_r (char *, const char *, char **);\n#endif\n\n#ifndef HAVE_WCSCASECMP\nint wcscasecmp (const wchar_t *a, const wchar_t *b);\n#endif\n\n#ifndef HAVE_STRCASESTR\nchar *strcasestr (const char *, const char *);\n#endif\n\n#ifndef HAVE_MKDTEMP\nchar *mkdtemp (char *tmpl);\n#endif\n\n#ifndef HAVE_STRNLEN\nsize_t strnlen(const char *s, size_t maxlen);\n#endif\n\n#ifndef HAVE_STRNDUP\nchar *strndup(const char *s, size_t n);\n#endif\n"
  },
  {
    "path": "query.c",
    "content": "/*\n * Copyright (C) 1996-2000,2003,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_idna.h\"\n#include \"mapping.h\"\n\n#include <string.h>\n#include <stdlib.h>\n#include <ctype.h>\n\ntypedef struct query\n{\n  int num;\n  ADDRESS *addr;\n  char *name;\n  char *other;\n  struct query *next;\n} QUERY;\n\ntypedef struct entry\n{\n  int tagged;\n  QUERY *data;\n} ENTRY;\n\nstatic const struct mapping_t QueryHelp[] = {\n  { N_(\"Exit\"),   OP_EXIT },\n  { N_(\"Mail\"),   OP_MAIL },\n  { N_(\"New Query\"),  OP_QUERY },\n  { N_(\"Make Alias\"), OP_CREATE_ALIAS },\n  { N_(\"Search\"), OP_SEARCH },\n  { N_(\"Help\"),   OP_HELP },\n  { NULL,\t  0 }\n};\n\nstatic void query_menu (char *buf, size_t buflen, QUERY *results, int retbuf);\n\nstatic ADDRESS *result_to_addr (QUERY *r)\n{\n  static ADDRESS *tmp;\n  \n  if (!(tmp = rfc822_cpy_adr (r->addr, 0)))\n    return NULL;\n  \n  if(!tmp->next && !tmp->personal)\n    tmp->personal = safe_strdup (r->name);\n  \n  mutt_addrlist_to_intl (tmp, NULL);\n  return tmp;\n}\n\nstatic void free_query (QUERY **query)\n{\n  QUERY *p;\n\n  if (!query)\n    return;\n\n  while (*query)\n  {\n    p = *query;\n    *query = (*query)->next;\n\n    rfc822_free_address (&p->addr);\n    FREE (&p->name);\n    FREE (&p->other);\n    FREE (&p);\n  }\n}\n\nstatic QUERY *run_query (char *s, int quiet)\n{\n  FILE *fp;\n  QUERY *first = NULL;\n  QUERY *cur = NULL;\n  char cmd[_POSIX_PATH_MAX];\n  char *buf = NULL;\n  size_t buflen;\n  int dummy = 0;\n  char msg[STRING];\n  char *p;\n  pid_t thepid;\n\n\n  mutt_expand_file_fmt (cmd, sizeof(cmd), QueryCmd, s);\n\n  if ((thepid = mutt_create_filter (cmd, NULL, &fp, NULL)) < 0)\n  {\n    dprint (1, (debugfile, \"unable to fork command: %s\", cmd));\n    return 0;\n  }\n  if (!quiet)\n    mutt_message _(\"Waiting for response...\");\n  fgets (msg, sizeof (msg), fp);\n  if ((p = strrchr (msg, '\\n')))\n    *p = '\\0';\n  while ((buf = mutt_read_line (buf, &buflen, fp, &dummy, 0)) != NULL)\n  {\n    if ((p = strtok(buf, \"\\t\\n\")))\n    {\n      if (first == NULL)\n      {\n\tfirst = (QUERY *) safe_calloc (1, sizeof (QUERY));\n\tcur = first;\n      }\n      else\n      {\n\tcur->next = (QUERY *) safe_calloc (1, sizeof (QUERY));\n\tcur = cur->next;\n      }\n\n      cur->addr = rfc822_parse_adrlist (cur->addr, p);\n      p = strtok(NULL, \"\\t\\n\");\n      if (p)\n      {\n\tcur->name = safe_strdup (p);\n\tp = strtok(NULL, \"\\t\\n\");\n\tif (p)\n\t  cur->other = safe_strdup (p);\n      }\n    }\n  }\n  FREE (&buf);\n  safe_fclose (&fp);\n  if (mutt_wait_filter (thepid))\n  {\n    dprint (1, (debugfile, \"Error: %s\\n\", msg));\n    if (!quiet)  mutt_error (\"%s\", msg);\n  }\n  else\n  {\n    if (!quiet)\n      mutt_message (\"%s\", msg);\n  }\n  \n  return first;\n}\n\nstatic int query_search (MUTTMENU *m, regex_t *re, int n)\n{\n  ENTRY *table = (ENTRY *) m->data;\n\n  if (table[n].data->name && !regexec (re, table[n].data->name, 0, NULL, 0))\n    return 0;\n  if (table[n].data->other && !regexec (re, table[n].data->other, 0, NULL, 0))\n    return 0;\n  if (table[n].data->addr)\n  {\n    if (table[n].data->addr->personal && \n\t!regexec (re, table[n].data->addr->personal, 0, NULL, 0))\n      return 0;\n    if (table[n].data->addr->mailbox &&\n\t!regexec (re, table[n].data->addr->mailbox, 0, NULL, 0))\n      return 0;\n#ifdef EXACT_ADDRESS\n    if (table[n].data->addr->val &&\n\t!regexec (re, table[n].data->addr->val, 0, NULL, 0))\n      return 0;\n#endif\n  }\n  \n  return REG_NOMATCH;\n}\n\nstatic const char * query_format_str (char *dest, size_t destlen, size_t col,\n\t\t\t\t      char op, const char *src,\n\t\t\t\t      const char *fmt, const char *ifstring,\n\t\t\t\t      const char *elsestring,\n\t\t\t\t      unsigned long data, format_flag flags)\n{\n  ENTRY *entry = (ENTRY *)data;\n  QUERY *query = entry->data;\n  char tmp[SHORT_STRING];\n  char buf2[STRING] = \"\";\n  int optional = (flags & M_FORMAT_OPTIONAL);\n\n  switch (op)\n  {\n  case 'a':\n    rfc822_write_address (buf2, sizeof (buf2), query->addr, 1);\n    snprintf (tmp, sizeof (tmp), \"%%%ss\", fmt);\n    snprintf (dest, destlen, tmp, buf2);\n    break;\n  case 'c':\n    snprintf (tmp, sizeof (tmp), \"%%%sd\", fmt);\n    snprintf (dest, destlen, tmp, query->num + 1);\n    break;\n  case 'e':\n    if (!optional)\n    {\n      snprintf (tmp, sizeof (tmp), \"%%%ss\", fmt);\n      snprintf (dest, destlen, tmp, NONULL (query->other));\n    }\n    else if (!query->other || !*query->other)\n      optional = 0;\n    break;\n  case 'n':\n    snprintf (tmp, sizeof (tmp), \"%%%ss\", fmt);\n    snprintf (dest, destlen, tmp, NONULL (query->name));\n    break;\n  case 't':\n    snprintf (tmp, sizeof (tmp), \"%%%sc\", fmt);\n    snprintf (dest, destlen, tmp, entry->tagged ? '*' : ' ');\n    break;\n  default:\n    snprintf (tmp, sizeof (tmp), \"%%%sc\", fmt);\n    snprintf (dest, destlen, tmp, op);\n    break;\n  }\n\n  if (optional)\n    mutt_FormatString (dest, destlen, col, ifstring, query_format_str, data, 0);\n  else if (flags & M_FORMAT_OPTIONAL)\n    mutt_FormatString (dest, destlen, col, elsestring, query_format_str, data, 0);\n\n  return src;\n}\n\nstatic void query_entry (char *s, size_t slen, MUTTMENU *m, int num)\n{\n  ENTRY *entry = &((ENTRY *) m->data)[num];\n\n  entry->data->num = num;\n  mutt_FormatString (s, slen, 0, NONULL (QueryFormat), query_format_str,\n\t\t     (unsigned long) entry, M_FORMAT_ARROWCURSOR);\n}\n\nstatic int query_tag (MUTTMENU *menu, int n, int m)\n{\n  ENTRY *cur = &((ENTRY *) menu->data)[n];\n  int ot = cur->tagged;\n  \n  cur->tagged = m >= 0 ? m : !cur->tagged;\n  return cur->tagged - ot;\n}\n\nint mutt_query_complete (char *buf, size_t buflen)\n{\n  QUERY *results = NULL;\n  ADDRESS *tmpa;\n\n  if (!QueryCmd)\n  {\n    mutt_error _(\"Query command not defined.\");\n    return 0;\n  }\n\n  results = run_query (buf, 1);\n  if (results)\n  {\n    /* only one response? */\n    if (results->next == NULL)\n    {\n      tmpa = result_to_addr (results);\n      mutt_addrlist_to_local (tmpa);\n      buf[0] = '\\0';\n      rfc822_write_address (buf, buflen, tmpa, 0);\n      rfc822_free_address (&tmpa);\n      free_query (&results);\n      mutt_clear_error ();\n      return (0);\n    }\n    /* multiple results, choose from query menu */\n    query_menu (buf, buflen, results, 1);\n  }\n  return (0);\n}\n\nvoid mutt_query_menu (char *buf, size_t buflen)\n{\n  if (!QueryCmd)\n  {\n    mutt_error _(\"Query command not defined.\");\n    return;\n  }\n\n  if (buf == NULL)\n  {\n    char buffer[STRING] = \"\";\n\n    query_menu (buffer, sizeof (buffer), NULL, 0);\n  }\n  else\n  {\n    query_menu (buf, buflen, NULL, 1);\n  }\n}\n\nstatic void query_menu (char *buf, size_t buflen, QUERY *results, int retbuf)\n{\n  MUTTMENU *menu;\n  HEADER *msg = NULL;\n  ENTRY *QueryTable = NULL;\n  QUERY *queryp = NULL;\n  int i, done = 0;\n  int op;\n  char helpstr[LONG_STRING];\n  char title[STRING];\n\n  snprintf (title, sizeof (title), _(\"Query\")); /* FIXME */\n\n  menu = mutt_new_menu (MENU_QUERY);\n  menu->make_entry = query_entry;\n  menu->search = query_search;\n  menu->tag = query_tag;\n  menu->title = title;\n  menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_QUERY, QueryHelp);\n\n  if (results == NULL)\n  {\n    /* Prompt for Query */\n    if (mutt_get_field (_(\"Query: \"), buf, buflen, 0) == 0 && buf[0])\n    {\n      results = run_query (buf, 0);\n    }\n  }\n\n  if (results)\n  {\n    snprintf (title, sizeof (title), _(\"Query '%s'\"), buf);\n\n    /* count the number of results */\n    for (queryp = results; queryp; queryp = queryp->next)\n      menu->max++;\n\n    menu->data = QueryTable = (ENTRY *) safe_calloc (menu->max, sizeof (ENTRY));\n\n    for (i = 0, queryp = results; queryp; queryp = queryp->next, i++)\n      QueryTable[i].data = queryp;\n\n    while (!done)\n    {\n      switch ((op = mutt_menuLoop (menu)))\n      {\n\tcase OP_QUERY_APPEND:\n\tcase OP_QUERY:\n\t  if (mutt_get_field (_(\"Query: \"), buf, buflen, 0) == 0 && buf[0])\n\t  {\n\t    QUERY *newresults = NULL;\n\n\t    newresults = run_query (buf, 0);\n\n\t    menu->redraw = REDRAW_FULL;\n\t    if (newresults)\n\t    {\n\t      snprintf (title, sizeof (title), _(\"Query '%s'\"), buf);\n\n\t      if (op == OP_QUERY)\n\t      {\n                free_query (&results);\n\t\tresults = newresults;\n\t\tFREE (&QueryTable);\n\t      }\n\t      else\n\t      {\n\t\t/* append */\n\t\tfor (queryp = results; queryp->next; queryp = queryp->next);\n\n\t\tqueryp->next = newresults;\n\t      }\n\n\n\t      menu->current = 0;\n\t      mutt_menuDestroy (&menu);\n\t      menu = mutt_new_menu (MENU_QUERY);\n\t      menu->make_entry = query_entry;\n\t      menu->search = query_search;\n\t      menu->tag = query_tag;\n\t      menu->title = title;\n\t      menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_QUERY, QueryHelp);\n\n\t      /* count the number of results */\n\t      for (queryp = results; queryp; queryp = queryp->next)\n\t\tmenu->max++;\n\n\t      if (op == OP_QUERY)\n\t      {\n\t\tmenu->data = QueryTable = \n\t\t  (ENTRY *) safe_calloc (menu->max, sizeof (ENTRY));\n\n\t\tfor (i = 0, queryp = results; queryp; \n\t\t     queryp = queryp->next, i++)\n\t\t  QueryTable[i].data = queryp;\n\t      }\n\t      else\n\t      {\n\t\tint clear = 0;\n\n\t\t/* append */\n\t\tsafe_realloc (&QueryTable, menu->max * sizeof (ENTRY));\n\n\t\tmenu->data = QueryTable;\n\n\t\tfor (i = 0, queryp = results; queryp; \n\t\t     queryp = queryp->next, i++)\n\t\t{\n\t\t  /* once we hit new entries, clear/init the tag */\n\t\t  if (queryp == newresults)\n\t\t    clear = 1;\n\n\t\t  QueryTable[i].data = queryp;\n\t\t  if (clear)\n\t\t    QueryTable[i].tagged = 0;\n\t\t}\n\t      }\n\t    }\n\t  }\n\t  break;\n\n\tcase OP_CREATE_ALIAS:\n\t  if (menu->tagprefix)\n\t  {\n\t    ADDRESS *naddr = NULL;\n\n\t    for (i = 0; i < menu->max; i++)\n\t      if (QueryTable[i].tagged)\n\t      {\n\t\tADDRESS *a = result_to_addr(QueryTable[i].data);\n\t\trfc822_append (&naddr, a, 0);\n\t\trfc822_free_address (&a);\n\t      }\n\n\t    mutt_create_alias (NULL, naddr);\n\t  }\n\t  else\n\t  {\n\t    ADDRESS *a = result_to_addr(QueryTable[menu->current].data);\n\t    mutt_create_alias (NULL, a);\n\t    rfc822_free_address (&a);\n\t  }\n\t  break;\n\n\tcase OP_GENERIC_SELECT_ENTRY:\n\t  if (retbuf)\n\t  {\n\t    done = 2;\n\t    break;\n\t  }\n\t  /* fall through to OP_MAIL */\n\n\tcase OP_MAIL:\n\t  msg = mutt_new_header ();\n\t  msg->env = mutt_new_envelope ();\n\t  if (!menu->tagprefix)\n\t  {\n\t    msg->env->to = result_to_addr(QueryTable[menu->current].data);\n\t  }\n\t  else\n\t  {\n\t    for (i = 0; i < menu->max; i++)\n\t      if (QueryTable[i].tagged)\n\t      {\n\t\tADDRESS *a = result_to_addr(QueryTable[i].data);\n\t\trfc822_append (&msg->env->to, a, 0);\n\t\trfc822_free_address (&a);\n\t      }\n\t  }\n\t  ci_send_message (0, msg, NULL, Context, NULL);\n\t  menu->redraw = REDRAW_FULL;\n\t  break;\n\n\tcase OP_EXIT:\n\t  done = 1;\n\t  break;\n      }\n    }\n\n    /* if we need to return the selected entries */\n    if (retbuf && (done == 2))\n    {\n      int tagged = 0;\n      size_t curpos = 0;\n\n      memset (buf, 0, buflen); \n\n      /* check for tagged entries */\n      for (i = 0; i < menu->max; i++)\n      {\n\tif (QueryTable[i].tagged)\n\t{\n\t  if (curpos == 0)\n\t  {\n\t    ADDRESS *tmpa = result_to_addr (QueryTable[i].data);\n\t    mutt_addrlist_to_local (tmpa);\n\t    tagged = 1;\n\t    rfc822_write_address (buf, buflen, tmpa, 0);\n\t    curpos = mutt_strlen (buf);\n\t    rfc822_free_address (&tmpa);\n\t  }\n\t  else if (curpos + 2 < buflen)\n\t  {\n\t    ADDRESS *tmpa = result_to_addr (QueryTable[i].data);\n\t    mutt_addrlist_to_local (tmpa);\n\t    strcat (buf, \", \");\t/* __STRCAT_CHECKED__ */\n\t    rfc822_write_address ((char *) buf + curpos + 1, buflen - curpos - 1,\n\t\t\t\t  tmpa, 0);\n\t    curpos = mutt_strlen (buf);\n\t    rfc822_free_address (&tmpa);\n\t  }\n\t}\n      }\n      /* then enter current message */\n      if (!tagged)\n      {\n\tADDRESS *tmpa = result_to_addr (QueryTable[menu->current].data);\n\tmutt_addrlist_to_local (tmpa);\n\trfc822_write_address (buf, buflen, tmpa, 0);\n\trfc822_free_address (&tmpa);\n      }\n      \n    }\n\n    free_query (&results);\n    FREE (&QueryTable);\n    \n    /* tell whoever called me to redraw the screen when I return */\n    set_option (OPTNEEDREDRAW);\n  }\n\n  mutt_menuDestroy (&menu);\n}\n"
  },
  {
    "path": "recvattach.c",
    "content": "/*\n * Copyright (C) 1996-2000,2002,2007,2010 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 1999-2006 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"rfc1524.h\"\n#include \"mime.h\"\n#include \"mailbox.h\"\n#include \"attach.h\"\n#include \"mapping.h\"\n#include \"mx.h\"\n#include \"mutt_crypt.h\"\n\n#include <ctype.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/wait.h>\n#include <sys/stat.h>\n#include <string.h>\n#include <errno.h>\n\nstatic const char *Mailbox_is_read_only = N_(\"Mailbox is read-only.\");\n\n#define CHECK_READONLY if (Context->readonly) \\\n{\\\n    mutt_flushinp (); \\\n    mutt_error _(Mailbox_is_read_only); \\\n    break; \\\n}\n\nstatic const struct mapping_t AttachHelp[] = {\n  { N_(\"Exit\"),  OP_EXIT },\n  { N_(\"Save\"),  OP_SAVE },\n  { N_(\"Pipe\"),  OP_PIPE },\n  { N_(\"Print\"), OP_PRINT },\n  { N_(\"Help\"),  OP_HELP },\n  { NULL,        0 }\n};\n\nvoid mutt_update_tree (ATTACHPTR **idx, short idxlen)\n{\n  char buf[STRING];\n  char *s;\n  int x;\n\n  for (x = 0; x < idxlen; x++)\n  {\n    idx[x]->num = x;\n    if (2 * (idx[x]->level + 2) < sizeof (buf))\n    {\n      if (idx[x]->level)\n      {\n\ts = buf + 2 * (idx[x]->level - 1);\n\t*s++ = (idx[x]->content->next) ? M_TREE_LTEE : M_TREE_LLCORNER;\n\t*s++ = M_TREE_HLINE;\n\t*s++ = M_TREE_RARROW;\n      }\n      else\n\ts = buf;\n      *s = 0;\n    }\n\n    if (idx[x]->tree)\n    {\n      if (mutt_strcmp (idx[x]->tree, buf) != 0)\n\tmutt_str_replace (&idx[x]->tree, buf);\n    }\n    else\n      idx[x]->tree = safe_strdup (buf);\n\n    if (2 * (idx[x]->level + 2) < sizeof (buf) && idx[x]->level)\n    {\n      s = buf + 2 * (idx[x]->level - 1);\n      *s++ = (idx[x]->content->next) ? '\\005' : '\\006';\n      *s++ = '\\006';\n    }\n  }\n}\n\nATTACHPTR **mutt_gen_attach_list (BODY *m,\n\t\t\t\t  int parent_type,\n\t\t\t\t  ATTACHPTR **idx,\n\t\t\t\t  short *idxlen,\n\t\t\t\t  short *idxmax,\n\t\t\t\t  int level,\n\t\t\t\t  int compose)\n{\n  ATTACHPTR *new;\n  int i;\n  \n  for (; m; m = m->next)\n  {\n    if (*idxlen == *idxmax)\n    {\n      safe_realloc (&idx, sizeof (ATTACHPTR *) * ((*idxmax) += 5));\n      for (i = *idxlen; i < *idxmax; i++)\n\tidx[i] = NULL;\n    }\n\n    if (m->type == TYPEMULTIPART && m->parts\n\t&& (compose || (parent_type == -1 && ascii_strcasecmp (\"alternative\", m->subtype)))\n        && (!(WithCrypto & APPLICATION_PGP) || !mutt_is_multipart_encrypted(m))\n\t)\n    {\n      idx = mutt_gen_attach_list (m->parts, m->type, idx, idxlen, idxmax, level, compose);\n    }\n    else\n    {\n      if (!idx[*idxlen])\n\tidx[*idxlen] = (ATTACHPTR *) safe_calloc (1, sizeof (ATTACHPTR));\n\n      new = idx[(*idxlen)++];\n      new->content = m;\n      m->aptr = new;\n      new->parent_type = parent_type;\n      new->level = level;\n\n      /* We don't support multipart messages in the compose menu yet */\n      if (!compose && !m->collapsed && \n\t  ((m->type == TYPEMULTIPART\n            && (!(WithCrypto & APPLICATION_PGP)\n                || !mutt_is_multipart_encrypted (m))\n\t    )\n\t   || mutt_is_message_type(m->type, m->subtype)))\n      {\n\tidx = mutt_gen_attach_list (m->parts, m->type, idx, idxlen, idxmax, level + 1, compose);\n      }\n    }\n  }\n\n  if (level == 0)\n    mutt_update_tree (idx, *idxlen);\n\n  return (idx);\n}\n\n/* %c = character set: convert?\n * %C = character set\n * %D = deleted flag\n * %d = description\n * %e = MIME content-transfer-encoding\n * %f = filename\n * %I = content-disposition, either I (inline) or A (attachment)\n * %t = tagged flag\n * %T = tree chars\n * %m = major MIME type\n * %M = MIME subtype\n * %n = attachment number\n * %s = size\n * %u = unlink \n */\nconst char *mutt_attach_fmt (char *dest,\n    size_t destlen,\n    size_t col,\n    char op,\n    const char *src,\n    const char *prefix,\n    const char *ifstring,\n    const char *elsestring,\n    unsigned long data,\n    format_flag flags)\n{\n  char fmt[16];\n  char tmp[SHORT_STRING];\n  char charset[SHORT_STRING];\n  ATTACHPTR *aptr = (ATTACHPTR *) data;\n  int optional = (flags & M_FORMAT_OPTIONAL);\n  size_t l;\n  \n  switch (op)\n  {\n    case 'C':\n      if (!optional)\n      {\n\tif (mutt_is_text_part (aptr->content) &&\n\t    mutt_get_body_charset (charset, sizeof (charset), aptr->content))\n\t  mutt_format_s (dest, destlen, prefix, charset);\n\telse\n\t  mutt_format_s (dest, destlen, prefix, \"\");\n      }\n      else if (!mutt_is_text_part (aptr->content) ||\n\t       !mutt_get_body_charset (charset, sizeof (charset), aptr->content))\n        optional = 0;\n      break;\n    case 'c':\n      /* XXX */\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sc\", prefix);\n\tsnprintf (dest, destlen, fmt, aptr->content->type != TYPETEXT ||\n\t\t  aptr->content->noconv ? 'n' : 'c');\n      }\n      else if (aptr->content->type != TYPETEXT || aptr->content->noconv)\n        optional = 0;\n      break;\n    case 'd':\n      if(!optional)\n      {\n\tif (aptr->content->description)\n\t{\n\t  mutt_format_s (dest, destlen, prefix, aptr->content->description);\n\t  break;\n\t}\n\tif (mutt_is_message_type(aptr->content->type, aptr->content->subtype) &&\n\t    MsgFmt && aptr->content->hdr)\n\t{\n\t  char s[SHORT_STRING];\n\t  _mutt_make_string (s, sizeof (s), MsgFmt, NULL, aptr->content->hdr,\n\t\t\t     M_FORMAT_FORCESUBJ | M_FORMAT_MAKEPRINT | M_FORMAT_ARROWCURSOR);\n\t  if (*s)\n\t  {\n\t    mutt_format_s (dest, destlen, prefix, s);\n\t    break;\n\t  }\n\t}\n\tif (!aptr->content->filename)\n\t{\n\t  mutt_format_s (dest, destlen, prefix, \"<no description>\");\n\t  break;\n\t}\n      }\n      else if(aptr->content->description || \n\t      (mutt_is_message_type (aptr->content->type, aptr->content->subtype)\n\t      && MsgFmt && aptr->content->hdr))\n        break;\n    /* FALLS THROUGH TO 'f' */\n    case 'f':\n      if(!optional)\n      {\n\tif (aptr->content->filename && *aptr->content->filename == '/')\n\t{\n\t  char path[_POSIX_PATH_MAX];\n\t  \n\t  strfcpy (path, aptr->content->filename, sizeof (path));\n\t  mutt_pretty_mailbox (path, sizeof (path));\n\t  mutt_format_s (dest, destlen, prefix, path);\n\t}\n\telse\n\t  mutt_format_s (dest, destlen, prefix, NONULL (aptr->content->filename));\n      }\n      else if(!aptr->content->filename)\n        optional = 0;\n      break;\n    case 'D':\n      if(!optional)\n\tsnprintf (dest, destlen, \"%c\", aptr->content->deleted ? 'D' : ' ');\n      else if(!aptr->content->deleted)\n        optional = 0;\n      break;\n    case 'e':\n      if(!optional)\n\tmutt_format_s (dest, destlen, prefix,\n\t\t      ENCODING (aptr->content->encoding));\n      break;\n    case 'I':\n      if (!optional)\n      {\n\tconst char dispchar[] = { 'I', 'A', 'F', '-' };\n\tchar ch;\n\n\tif (aptr->content->disposition < sizeof(dispchar))\n\t  ch = dispchar[aptr->content->disposition];\n\telse\n\t{\n\t  dprint(1, (debugfile, \"ERROR: invalid content-disposition %d\\n\", aptr->content->disposition));\n\t  ch = '!';\n\t}\n\tsnprintf (dest, destlen, \"%c\", ch);\n      }\n      break;\n    case 'm':\n      if(!optional)\n\tmutt_format_s (dest, destlen, prefix, TYPE (aptr->content));\n      break;\n    case 'M':\n      if(!optional)\n\tmutt_format_s (dest, destlen, prefix, aptr->content->subtype);\n      else if(!aptr->content->subtype)\n        optional = 0;\n      break;\n    case 'n':\n      if(!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (dest, destlen, fmt, aptr->num + 1);\n      }\n      break;\n    case 'Q':\n      if (optional)\n        optional = aptr->content->attach_qualifies;\n      else {\n\t    snprintf (fmt, sizeof (fmt), \"%%%sc\", prefix);\n        mutt_format_s (dest, destlen, fmt, \"Q\");\n      }\n      break;\n    case 's':\n      if (flags & M_FORMAT_STAT_FILE)\n      {\n\tstruct stat st;\n\tstat (aptr->content->filename, &st);\n\tl = st.st_size;\n      }\n      else\n        l = aptr->content->length;\n      \n      if(!optional)\n      {\n\tmutt_pretty_size (tmp, sizeof(tmp), l);\n\tmutt_format_s (dest, destlen, prefix, tmp);\n      }\n      else if (l == 0)\n        optional = 0;\n\n      break;\n    case 't':\n      if(!optional)\n        snprintf (dest, destlen, \"%c\", aptr->content->tagged ? '*' : ' ');\n      else if(!aptr->content->tagged)\n        optional = 0;\n      break;\n    case 'T':\n      if(!optional)\n\tmutt_format_s_tree (dest, destlen, prefix, NONULL (aptr->tree));\n      else if (!aptr->tree)\n        optional = 0;\n      break;\n    case 'u':\n      if(!optional)\n        snprintf (dest, destlen, \"%c\", aptr->content->unlink ? '-' : ' ');\n      else if (!aptr->content->unlink)\n        optional = 0;\n      break;\n    case 'X':\n      if (optional)\n        optional = (aptr->content->attach_count + aptr->content->attach_qualifies) != 0;\n      else\n      {\n        snprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n        snprintf (dest, destlen, fmt, aptr->content->attach_count + aptr->content->attach_qualifies);\n      }\n      break;\n    default:\n      *dest = 0;\n  }\n  \n  if (optional)\n    mutt_FormatString (dest, destlen, col, ifstring, mutt_attach_fmt, data, 0);\n  else if (flags & M_FORMAT_OPTIONAL)\n    mutt_FormatString (dest, destlen, col, elsestring, mutt_attach_fmt, data, 0);\n  return (src);\n}\n\nstatic void attach_entry (char *b, size_t blen, MUTTMENU *menu, int num)\n{\n  mutt_FormatString (b, blen, 0, NONULL (AttachFormat), mutt_attach_fmt, (unsigned long) (((ATTACHPTR **)menu->data)[num]), M_FORMAT_ARROWCURSOR);\n}\n\nint mutt_tag_attach (MUTTMENU *menu, int n, int m)\n{\n  BODY *cur = ((ATTACHPTR **) menu->data)[n]->content;\n  int ot = cur->tagged;\n  \n  cur->tagged = (m >= 0 ? m : !cur->tagged);\n  return cur->tagged - ot;\n}\n\nint mutt_is_message_type (int type, const char *subtype)\n{\n  if (type != TYPEMESSAGE)\n    return 0;\n\n  subtype = NONULL(subtype);\n  return (ascii_strcasecmp (subtype, \"rfc822\") == 0 || ascii_strcasecmp (subtype, \"news\") == 0);\n}\n\nstatic void prepend_curdir (char *dst, size_t dstlen)\n{\n  size_t l;\n\n  if (!dst || !*dst || *dst == '/' || dstlen < 3 ||\n      /* XXX bad modularization, these are special to mutt_expand_path() */\n      !strchr (\"~=+@<>!-^\", *dst))\n    return;\n\n  dstlen -= 3;\n  l = strlen (dst) + 2;\n  l = (l > dstlen ? dstlen : l);\n  memmove (dst + 2, dst, l);\n  dst[0] = '.';\n  dst[1] = '/';\n  dst[l + 2] = 0;\n}\n\nstatic int mutt_query_save_attachment (FILE *fp, BODY *body, HEADER *hdr, char **directory)\n{\n  char *prompt;\n  char buf[_POSIX_PATH_MAX], tfile[_POSIX_PATH_MAX];\n  int is_message;\n  int append = 0;\n  int rc;\n  \n  if (body->filename) \n  {\n    if (directory && *directory)\n      mutt_concat_path (buf, *directory, mutt_basename (body->filename), sizeof (buf));\n    else\n      strfcpy (buf, body->filename, sizeof (buf));\n  }\n  else if(body->hdr &&\n\t  body->encoding != ENCBASE64 &&\n\t  body->encoding != ENCQUOTEDPRINTABLE &&\n\t  mutt_is_message_type(body->type, body->subtype))\n    mutt_default_save(buf, sizeof(buf), body->hdr);\n  else\n    buf[0] = 0;\n\n  prepend_curdir (buf, sizeof (buf));\n\n  prompt = _(\"Save to file: \");\n  while (prompt)\n  {\n    if (mutt_get_field (prompt, buf, sizeof (buf), M_FILE | M_CLEAR) != 0\n\t|| !buf[0])\n    {\n      mutt_clear_error ();\n      return -1;\n    }\n    \n    prompt = NULL;\n    mutt_expand_path (buf, sizeof (buf));\n    \n    is_message = (fp && \n\t\t  body->hdr && \n\t\t  body->encoding != ENCBASE64 && \n\t\t  body->encoding != ENCQUOTEDPRINTABLE && \n\t\t  mutt_is_message_type (body->type, body->subtype));\n    \n    if (is_message)\n    {\n      struct stat st;\n      \n      /* check to make sure that this file is really the one the user wants */\n      if ((rc = mutt_save_confirm (buf, &st)) == 1)\n      {\n\tprompt = _(\"Save to file: \");\n\tcontinue;\n      } \n      else if (rc == -1)\n\treturn -1;\n      strfcpy(tfile, buf, sizeof(tfile));\n    }\n    else\n    {\n      if ((rc = mutt_check_overwrite (body->filename, buf, tfile, sizeof (tfile), &append, directory)) == -1)\n\treturn -1;\n      else if (rc == 1)\n      {\n\tprompt = _(\"Save to file: \");\n\tcontinue;\n      }\n    }\n    \n    mutt_message _(\"Saving...\");\n    if (mutt_save_attachment (fp, body, tfile, append, (hdr || !is_message) ? hdr : body->hdr) == 0)\n    {\n      mutt_message _(\"Attachment saved.\");\n      return 0;\n    }\n    else\n    {\n      prompt = _(\"Save to file: \");\n      continue;\n    }\n  }\n  return 0;\n}\n    \nvoid mutt_save_attachment_list (FILE *fp, int tag, BODY *top, HEADER *hdr, MUTTMENU *menu)\n{\n  char buf[_POSIX_PATH_MAX], tfile[_POSIX_PATH_MAX];\n  char *directory = NULL;\n  int rc = 1;\n  int last = menu ? menu->current : -1;\n  FILE *fpout;\n\n  buf[0] = 0;\n\n  for (; top; top = top->next)\n  {\n    if (!tag || top->tagged)\n    {\n      if (!option (OPTATTACHSPLIT))\n      {\n\tif (!buf[0])\n\t{\n\t  int append = 0;\n\n\t  strfcpy (buf, mutt_basename (NONULL (top->filename)), sizeof (buf));\n\t  prepend_curdir (buf, sizeof (buf));\n\n\t  if (mutt_get_field (_(\"Save to file: \"), buf, sizeof (buf),\n\t\t\t\t    M_FILE | M_CLEAR) != 0 || !buf[0])\n\t    return;\n\t  mutt_expand_path (buf, sizeof (buf));\n\t  if (mutt_check_overwrite (top->filename, buf, tfile,\n\t\t\t\t    sizeof (tfile), &append, NULL))\n\t    return;\n\t  rc = mutt_save_attachment (fp, top, tfile, append, hdr);\n\t  if (rc == 0 && AttachSep && (fpout = fopen (tfile,\"a\")) != NULL)\n\t  {\n\t    fprintf(fpout, \"%s\", AttachSep);\n\t    safe_fclose (&fpout);\n\t  }\n\t}\n\telse\n\t{\n\t  rc = mutt_save_attachment (fp, top, tfile, M_SAVE_APPEND, hdr);\n\t  if (rc == 0 && AttachSep && (fpout = fopen (tfile,\"a\")) != NULL)\n\t  {\n\t    fprintf(fpout, \"%s\", AttachSep);\n\t    safe_fclose (&fpout);\n\t  }\n\t}\n      }\n      else \n      {\n\tif (tag && menu && top->aptr)\n\t{\n\t  menu->oldcurrent = menu->current;\n\t  menu->current = top->aptr->num;\n\t  menu_check_recenter (menu);\n\t  menu->redraw |= REDRAW_MOTION;\n\n\t  menu_redraw (menu);\n\t}\n\tif (mutt_query_save_attachment (fp, top, hdr, &directory) == -1)\n\t  break;\n      }\n    }\n    else if (top->parts)\n      mutt_save_attachment_list (fp, 1, top->parts, hdr, menu);\n    if (!tag)\n      break;\n  }\n\n  FREE (&directory);\n\n  if (tag && menu)\n  {\n    menu->oldcurrent = menu->current;\n    menu->current = last;\n    menu_check_recenter (menu);\n    menu->redraw |= REDRAW_MOTION;\n  }\n  \n  if (!option (OPTATTACHSPLIT) && (rc == 0))\n    mutt_message _(\"Attachment saved.\");\n}\n\nstatic void\nmutt_query_pipe_attachment (char *command, FILE *fp, BODY *body, int filter)\n{\n  char tfile[_POSIX_PATH_MAX];\n  char warning[STRING+_POSIX_PATH_MAX];\n\n  if (filter)\n  {\n    snprintf (warning, sizeof (warning),\n\t      _(\"WARNING!  You are about to overwrite %s, continue?\"),\n\t      body->filename);\n    if (mutt_yesorno (warning, M_NO) != M_YES) {\n      CLEARLINE (LINES-1);\n      return;\n    }\n    mutt_mktemp (tfile, sizeof (tfile));\n  }\n  else\n    tfile[0] = 0;\n\n  if (mutt_pipe_attachment (fp, body, command, tfile))\n  {\n    if (filter)\n    {\n      mutt_unlink (body->filename);\n      mutt_rename_file (tfile, body->filename);\n      mutt_update_encoding (body);\n      mutt_message _(\"Attachment filtered.\");\n    }\n  }\n  else\n  {\n    if (filter && tfile[0])\n      mutt_unlink (tfile);\n  }\n}\n\nstatic void pipe_attachment (FILE *fp, BODY *b, STATE *state)\n{\n  FILE *ifp;\n\n  if (fp)\n  {\n    state->fpin = fp;\n    mutt_decode_attachment (b, state);\n    if (AttachSep)\n      state_puts (AttachSep, state);\n  }\n  else\n  {\n    if ((ifp = fopen (b->filename, \"r\")) == NULL)\n    {\n      mutt_perror (\"fopen\");\n      return;\n    }\n    mutt_copy_stream (ifp, state->fpout);\n    safe_fclose (&ifp);\n    if (AttachSep)\n      state_puts (AttachSep, state);\n  }\n}\n\nstatic void\npipe_attachment_list (char *command, FILE *fp, int tag, BODY *top, int filter,\n\t\t      STATE *state)\n{\n  for (; top; top = top->next)\n  {\n    if (!tag || top->tagged)\n    {\n      if (!filter && !option (OPTATTACHSPLIT))\n\tpipe_attachment (fp, top, state);\n      else\n\tmutt_query_pipe_attachment (command, fp, top, filter);\n    }\n    else if (top->parts)\n      pipe_attachment_list (command, fp, tag, top->parts, filter, state);\n    if (!tag)\n      break;\n  }\n}\n\nvoid mutt_pipe_attachment_list (FILE *fp, int tag, BODY *top, int filter)\n{\n  STATE state;\n  char buf[SHORT_STRING];\n  pid_t thepid;\n\n  if (fp)\n    filter = 0; /* sanity check: we can't filter in the recv case yet */\n\n  buf[0] = 0;\n  memset (&state, 0, sizeof (STATE));\n\n  if (mutt_get_field ((filter ? _(\"Filter through: \") : _(\"Pipe to: \")),\n\t\t\t\t  buf, sizeof (buf), M_CMD) != 0 || !buf[0])\n    return;\n\n  mutt_expand_path (buf, sizeof (buf));\n\n  if (!filter && !option (OPTATTACHSPLIT))\n  {\n    mutt_endwin (NULL);\n    thepid = mutt_create_filter (buf, &state.fpout, NULL, NULL);\n    pipe_attachment_list (buf, fp, tag, top, filter, &state);\n    safe_fclose (&state.fpout);\n    if (mutt_wait_filter (thepid) != 0 || option (OPTWAITKEY))\n      mutt_any_key_to_continue (NULL);\n  }\n  else\n    pipe_attachment_list (buf, fp, tag, top, filter, &state);\n}\n\nstatic int can_print (BODY *top, int tag)\n{\n  char type [STRING];\n\n  for (; top; top = top->next)\n  {\n    snprintf (type, sizeof (type), \"%s/%s\", TYPE (top), top->subtype);\n    if (!tag || top->tagged)\n    {\n      if (!rfc1524_mailcap_lookup (top, type, NULL, M_PRINT))\n      {\n\tif (ascii_strcasecmp (\"text/plain\", top->subtype) &&\n\t    ascii_strcasecmp (\"application/postscript\", top->subtype))\n\t{\n\t  if (!mutt_can_decode (top))\n\t  {\n\t    mutt_error (_(\"I don't know how to print %s attachments!\"), type);\n\t    return (0);\n\t  }\n\t}\n      }\n    }\n    else if (top->parts)\n      return (can_print (top->parts, tag));\n    if (!tag)\n      break;\n  }\n  return (1);\n}\n\nstatic void print_attachment_list (FILE *fp, int tag, BODY *top, STATE *state)\n{\n  char type [STRING];\n\n\n  for (; top; top = top->next)\n  {\n    if (!tag || top->tagged)\n    {\n      snprintf (type, sizeof (type), \"%s/%s\", TYPE (top), top->subtype);\n      if (!option (OPTATTACHSPLIT) && !rfc1524_mailcap_lookup (top, type, NULL, M_PRINT))\n      {\n\tif (!ascii_strcasecmp (\"text/plain\", top->subtype) ||\n\t    !ascii_strcasecmp (\"application/postscript\", top->subtype))\n\t  pipe_attachment (fp, top, state);\n\telse if (mutt_can_decode (top))\n\t{\n\t  /* decode and print */\n\n\t  char newfile[_POSIX_PATH_MAX] = \"\";\n\t  FILE *ifp;\n\n\t  mutt_mktemp (newfile, sizeof (newfile));\n\t  if (mutt_decode_save_attachment (fp, top, newfile, M_PRINTING, 0) == 0)\n\t  {\n\t    if ((ifp = fopen (newfile, \"r\")) != NULL)\n\t    {\n\t      mutt_copy_stream (ifp, state->fpout);\n\t      safe_fclose (&ifp);\n\t      if (AttachSep)\n\t\tstate_puts (AttachSep, state);\n\t    }\n\t  }\n\t  mutt_unlink (newfile);\n\t}\n      }\n      else\n\tmutt_print_attachment (fp, top);\n    }\n    else if (top->parts)\n      print_attachment_list (fp, tag, top->parts, state);\n    if (!tag)\n      return;\n  }\n}\n\nvoid mutt_print_attachment_list (FILE *fp, int tag, BODY *top)\n{\n  STATE state;\n  \n  pid_t thepid;\n  if (query_quadoption (OPT_PRINT, tag ? _(\"Print tagged attachment(s)?\") : _(\"Print attachment?\")) != M_YES)\n    return;\n\n  if (!option (OPTATTACHSPLIT))\n  {\n    if (!can_print (top, tag))\n      return;\n    mutt_endwin (NULL);\n    memset (&state, 0, sizeof (STATE));\n    thepid = mutt_create_filter (NONULL (PrintCmd), &state.fpout, NULL, NULL);\n    print_attachment_list (fp, tag, top, &state);\n    safe_fclose (&state.fpout);\n    if (mutt_wait_filter (thepid) != 0 || option (OPTWAITKEY))\n      mutt_any_key_to_continue (NULL);\n  }\n  else\n    print_attachment_list (fp, tag, top, &state);\n}\n\nstatic void\nmutt_update_attach_index (BODY *cur, ATTACHPTR ***idxp,\n\t\t\t\t      short *idxlen, short *idxmax,\n\t\t\t\t      MUTTMENU *menu)\n{\n  ATTACHPTR **idx = *idxp;\n  while (--(*idxlen) >= 0)\n    idx[(*idxlen)]->content = NULL;\n  *idxlen = 0;\n\n  idx = *idxp = mutt_gen_attach_list (cur, -1, idx, idxlen, idxmax, 0, 0);\n  \n  menu->max  = *idxlen;\n  menu->data = *idxp;\n\n  if (menu->current >= menu->max)\n    menu->current = menu->max - 1;\n  menu_check_recenter (menu);\n  menu->redraw |= REDRAW_INDEX;\n  \n}\n\n\nint\nmutt_attach_display_loop (MUTTMENU *menu, int op, FILE *fp, HEADER *hdr,\n\t\t\t  BODY *cur, ATTACHPTR ***idxp, short *idxlen, short *idxmax,\n\t\t\t  int recv)\n{\n  ATTACHPTR **idx = *idxp;\n#if 0\n  int old_optweed = option (OPTWEED);\n  set_option (OPTWEED);\n#endif\n  \n  do\n  {\n    switch (op)\n    {\n      case OP_DISPLAY_HEADERS:\n\ttoggle_option (OPTWEED);\n\t/* fall through */\n\n      case OP_VIEW_ATTACH:\n\top = mutt_view_attachment (fp, idx[menu->current]->content, M_REGULAR,\n\t\t\t\t   hdr, idx, *idxlen);\n\tbreak;\n\n      case OP_NEXT_ENTRY:\n      case OP_MAIN_NEXT_UNDELETED: /* hack */\n\tif (menu->current < menu->max - 1)\n\t{\n\t  menu->current++;\n\t  op = OP_VIEW_ATTACH;\n\t}\n\telse\n\t  op = OP_NULL;\n\tbreak;\n      case OP_PREV_ENTRY:\n      case OP_MAIN_PREV_UNDELETED: /* hack */\n\tif (menu->current > 0)\n\t{\n\t  menu->current--;\n\t  op = OP_VIEW_ATTACH;\n\t}\n\telse\n\t  op = OP_NULL;\n\tbreak;\n      case OP_EDIT_TYPE:\n\t/* when we edit the content-type, we should redisplay the attachment\n\t   immediately */\n\tmutt_edit_content_type (hdr, idx[menu->current]->content, fp);\n        if (idxmax)\n        {\n\t  mutt_update_attach_index (cur, idxp, idxlen, idxmax, menu);\n\t  idx = *idxp;\n\t}\n        op = OP_VIEW_ATTACH;\n\tbreak;\n      /* functions which are passed through from the pager */\n      case OP_CHECK_TRADITIONAL:\n        if (!(WithCrypto & APPLICATION_PGP) || (hdr && hdr->security & PGP_TRADITIONAL_CHECKED))\n        {\n          op = OP_NULL;\n          break;\n        }\n        /* fall through */\n      case OP_ATTACH_COLLAPSE:\n        if (recv)\n          return op;\n      default:\n\top = OP_NULL;\n    }\n  }\n  while (op != OP_NULL);\n\n#if 0\n  if (option (OPTWEED) != old_optweed)\n    toggle_option (OPTWEED);\n#endif\n  return op;\n}\n\nstatic void attach_collapse (BODY *b, short collapse, short init, short just_one)\n{\n  short i;\n  for (; b; b = b->next)\n  {\n    i = init || b->collapsed;\n    if (i && option (OPTDIGESTCOLLAPSE) && b->type == TYPEMULTIPART\n\t&& !ascii_strcasecmp (b->subtype, \"digest\"))\n      attach_collapse (b->parts, 1, 1, 0);\n    else if (b->type == TYPEMULTIPART || mutt_is_message_type (b->type, b->subtype))\n      attach_collapse (b->parts, collapse, i, 0);\n    b->collapsed = collapse;\n    if (just_one)\n      return;\n  }\n}\n\nvoid mutt_attach_init (BODY *b)\n{\n  for (; b; b = b->next)\n  {\n    b->tagged = 0;\n    b->collapsed = 0;\n    if (b->parts) \n      mutt_attach_init (b->parts);\n  }\n}\n\nstatic const char *Function_not_permitted = N_(\"Function not permitted in attach-message mode.\");\n\n#define CHECK_ATTACH if(option(OPTATTACHMSG)) \\\n\t\t     {\\\n\t\t\tmutt_flushinp (); \\\n\t\t\tmutt_error _(Function_not_permitted); \\\n\t\t\tbreak; \\\n\t\t     }\n\n\n\n\nvoid mutt_view_attachments (HEADER *hdr)\n{\n  int secured = 0;\n  int need_secured = 0;\n\n  char helpstr[LONG_STRING];\n  MUTTMENU *menu;\n  BODY *cur = NULL;\n  MESSAGE *msg;\n  FILE *fp;\n  ATTACHPTR **idx = NULL;\n  short idxlen = 0;\n  short idxmax = 0;\n  int flags = 0;\n  int op = OP_NULL;\n  \n  /* make sure we have parsed this message */\n  mutt_parse_mime_message (Context, hdr);\n\n  mutt_message_hook (Context, hdr, M_MESSAGEHOOK);\n  \n  if ((msg = mx_open_message (Context, hdr->msgno)) == NULL)\n    return;\n\n\n  if (WithCrypto && ((hdr->security & ENCRYPT) ||\n                     (mutt_is_application_smime(hdr->content) & SMIMEOPAQUE)))\n  {\n    need_secured  = 1;\n\n    if ((hdr->security & ENCRYPT) && !crypt_valid_passphrase(hdr->security))\n    {\n      mx_close_message (&msg);\n      return;\n    }\n    if ((WithCrypto & APPLICATION_SMIME) && (hdr->security & APPLICATION_SMIME))\n    {\n      if (hdr->env)\n\t  crypt_smime_getkeys (hdr->env);\n\n      if (mutt_is_application_smime(hdr->content))\n      {\n\tsecured = ! crypt_smime_decrypt_mime (msg->fp, &fp,\n                                              hdr->content, &cur);\n\t\n\t/* S/MIME nesting */\n\tif ((mutt_is_application_smime (cur) & SMIMEOPAQUE))\n\t{\n\t  BODY *_cur = cur;\n\t  FILE *_fp = fp;\n\t  \n\t  fp = NULL; cur = NULL;\n\t  secured = !crypt_smime_decrypt_mime (_fp, &fp, _cur, &cur);\n\t  \n\t  mutt_free_body (&_cur);\n\t  safe_fclose (&_fp);\n\t}\n      }\n      else\n\tneed_secured = 0;\n    }\n    if ((WithCrypto & APPLICATION_PGP) && (hdr->security & APPLICATION_PGP))\n    {\n      if (mutt_is_multipart_encrypted(hdr->content) ||\n          mutt_is_malformed_multipart_pgp_encrypted(hdr->content))\n\tsecured = !crypt_pgp_decrypt_mime (msg->fp, &fp, hdr->content, &cur);\n      else\n\tneed_secured = 0;\n    }\n\n    if (need_secured && !secured)\n    {\n      mx_close_message (&msg);\n      mutt_error _(\"Can't decrypt encrypted message!\");\n      return;\n    }\n  }\n  \n  if (!WithCrypto || !need_secured)\n  {\n    fp = msg->fp;\n    cur = hdr->content;\n  }\n\n  menu = mutt_new_menu (MENU_ATTACH);\n  menu->title = _(\"Attachments\");\n  menu->make_entry = attach_entry;\n  menu->tag = mutt_tag_attach;\n  menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_ATTACH, AttachHelp);\n\n  mutt_attach_init (cur);\n  attach_collapse (cur, 0, 1, 0);\n  mutt_update_attach_index (cur, &idx, &idxlen, &idxmax, menu);\n\n  FOREVER\n  {\n    if (op == OP_NULL)\n      op = mutt_menuLoop (menu);\n    switch (op)\n    {\n      case OP_ATTACH_VIEW_MAILCAP:\n\tmutt_view_attachment (fp, idx[menu->current]->content, M_MAILCAP,\n\t\t\t      hdr, idx, idxlen);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_ATTACH_VIEW_TEXT:\n\tmutt_view_attachment (fp, idx[menu->current]->content, M_AS_TEXT,\n\t\t\t      hdr, idx, idxlen);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_DISPLAY_HEADERS:\n      case OP_VIEW_ATTACH:\n        op = mutt_attach_display_loop (menu, op, fp, hdr, cur, &idx, &idxlen, &idxmax, 1);\n        menu->redraw = REDRAW_FULL;\n        continue;\n\n      case OP_ATTACH_COLLAPSE:\n        if (!idx[menu->current]->content->parts)\n        {\n\t  mutt_error _(\"There are no subparts to show!\");\n\t  break;\n\t}\n        if (!idx[menu->current]->content->collapsed)\n\t  attach_collapse (idx[menu->current]->content, 1, 0, 1);\n        else\n\t  attach_collapse (idx[menu->current]->content, 0, 1, 1);\n        mutt_update_attach_index (cur, &idx, &idxlen, &idxmax, menu);\n        break;\n      \n      case OP_FORGET_PASSPHRASE:\n        crypt_forget_passphrase ();\n        break;\n\n      case OP_EXTRACT_KEYS:\n        if ((WithCrypto & APPLICATION_PGP))\n        {\n          crypt_pgp_extract_keys_from_attachment_list (fp, menu->tagprefix, \n\t\t    menu->tagprefix ? cur : idx[menu->current]->content);\n          menu->redraw = REDRAW_FULL;\n        }\n        break;\n      \n      case OP_CHECK_TRADITIONAL:\n        if ((WithCrypto & APPLICATION_PGP)\n            && crypt_pgp_check_traditional (fp, menu->tagprefix ? cur\n                                              : idx[menu->current]->content,\n                                      menu->tagprefix))\n        {\n\t  hdr->security = crypt_query (cur);\n\t  menu->redraw = REDRAW_FULL;\n\t}\n        break;\n\n      case OP_PRINT:\n\tmutt_print_attachment_list (fp, menu->tagprefix, \n\t\t  menu->tagprefix ? cur : idx[menu->current]->content);\n\tbreak;\n\n      case OP_PIPE:\n\tmutt_pipe_attachment_list (fp, menu->tagprefix, \n\t\t  menu->tagprefix ? cur : idx[menu->current]->content, 0);\n\tbreak;\n\n      case OP_SAVE:\n\tmutt_save_attachment_list (fp, menu->tagprefix, \n\t\t  menu->tagprefix ?  cur : idx[menu->current]->content, hdr, menu);\n\n        if (!menu->tagprefix && option (OPTRESOLVE) && menu->current < menu->max - 1)\n\t  menu->current++;\n      \n        menu->redraw = REDRAW_MOTION_RESYNCH | REDRAW_FULL;\n\tbreak;\n\n      case OP_DELETE:\n\tCHECK_READONLY;\n\n#ifdef USE_POP\n\tif (Context->magic == M_POP)\n\t{\n\t  mutt_flushinp ();\n\t  mutt_error _(\"Can't delete attachment from POP server.\");\n\t  break;\n\t}\n#endif\n\n        if (WithCrypto && (hdr->security & ENCRYPT))\n        {\n          mutt_message _(\n            \"Deletion of attachments from encrypted messages is unsupported.\");\n          break;\n        }\n        if (WithCrypto && (hdr->security & (SIGN | PARTSIGN)))\n        {\n          mutt_message _(\n            \"Deletion of attachments from signed messages may invalidate the signature.\");\n        }\n        if (!menu->tagprefix)\n        {\n          if (idx[menu->current]->parent_type == TYPEMULTIPART)\n          {\n            idx[menu->current]->content->deleted = 1;\n            if (option (OPTRESOLVE) && menu->current < menu->max - 1)\n            {\n              menu->current++;\n              menu->redraw = REDRAW_MOTION_RESYNCH;\n            }\n            else\n              menu->redraw = REDRAW_CURRENT;\n          }\n          else\n            mutt_message _(\n              \"Only deletion of multipart attachments is supported.\");\n        }\n        else\n        {\n          int x;\n\n          for (x = 0; x < menu->max; x++)\n          {\n            if (idx[x]->content->tagged)\n            {\n              if (idx[x]->parent_type == TYPEMULTIPART)\n              {\n                idx[x]->content->deleted = 1;\n                menu->redraw = REDRAW_INDEX;\n              }\n              else\n                mutt_message _(\n                  \"Only deletion of multipart attachments is supported.\");\n            }\n          }\n        }\n        break;\n\n      case OP_UNDELETE:\n       CHECK_READONLY;\n       if (!menu->tagprefix)\n       {\n\t idx[menu->current]->content->deleted = 0;\n\t if (option (OPTRESOLVE) && menu->current < menu->max - 1)\n\t {\n\t   menu->current++;\n\t   menu->redraw = REDRAW_MOTION_RESYNCH;\n\t }\n\t else\n\t   menu->redraw = REDRAW_CURRENT;\n       }\n       else\n       {\n\t int x;\n\n\t for (x = 0; x < menu->max; x++)\n\t {\n\t   if (idx[x]->content->tagged)\n\t   {\n\t     idx[x]->content->deleted = 0;\n\t     menu->redraw = REDRAW_INDEX;\n\t   }\n\t }\n       }\n       break;\n\n      case OP_RESEND:\n        CHECK_ATTACH;\n        mutt_attach_resend (fp, hdr, idx, idxlen,\n\t\t\t     menu->tagprefix ? NULL : idx[menu->current]->content);\n        menu->redraw = REDRAW_FULL;\n      \tbreak;\n      \n      case OP_BOUNCE_MESSAGE:\n        CHECK_ATTACH;\n        mutt_attach_bounce (fp, hdr, idx, idxlen,\n\t\t\t     menu->tagprefix ? NULL : idx[menu->current]->content);\n        menu->redraw = REDRAW_FULL;\n      \tbreak;\n\n      case OP_FORWARD_MESSAGE:\n        CHECK_ATTACH;\n        mutt_attach_forward (fp, hdr, idx, idxlen,\n\t\t\t     menu->tagprefix ? NULL : idx[menu->current]->content);\n        menu->redraw = REDRAW_FULL;\n        break;\n      \n      case OP_REPLY:\n      case OP_GROUP_REPLY:\n      case OP_LIST_REPLY:\n\n        CHECK_ATTACH;\n      \n        flags = SENDREPLY | \n\t  (op == OP_GROUP_REPLY ? SENDGROUPREPLY : 0) |\n\t  (op == OP_LIST_REPLY ? SENDLISTREPLY : 0);\n        mutt_attach_reply (fp, hdr, idx, idxlen, \n\t\t\t   menu->tagprefix ? NULL : idx[menu->current]->content, flags);\n\tmenu->redraw = REDRAW_FULL;\n\tbreak;\n\n      case OP_EDIT_TYPE:\n\tmutt_edit_content_type (hdr, idx[menu->current]->content, fp);\n        mutt_update_attach_index (cur, &idx, &idxlen, &idxmax, menu);\n\tbreak;\n\n      case OP_EXIT:\n\tmx_close_message (&msg);\n\thdr->attach_del = 0;\n\twhile (idxmax-- > 0)\n\t{\n\t  if (!idx[idxmax])\n\t    continue;\n\t  if (idx[idxmax]->content && idx[idxmax]->content->deleted)\n\t    hdr->attach_del = 1;\n\t  if (idx[idxmax]->content)\n\t    idx[idxmax]->content->aptr = NULL;\n\t  FREE (&idx[idxmax]->tree);\n\t  FREE (&idx[idxmax]);\n\t}\n\tif (hdr->attach_del)\n\t  hdr->changed = 1;\n\tFREE (&idx);\n\tidxmax = 0;\n\n        if (WithCrypto && need_secured && secured)\n\t{\n\t  safe_fclose (&fp);\n\t  mutt_free_body (&cur);\n\t}\n\n\tmutt_menuDestroy  (&menu);\n\treturn;\n    }\n\n    op = OP_NULL;\n  }\n\n  /* not reached */\n}\n"
  },
  {
    "path": "recvcmd.c",
    "content": "/*\n * Copyright (C) 1999-2004 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA. \n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"attach.h\"\n#include \"mapping.h\"\n#include \"copy.h\"\n#include \"mutt_idna.h\"\n\n/* some helper functions to verify that we are exclusively operating\n * on message/rfc822 attachments\n */\n\nstatic short check_msg (BODY * b, short err)\n{\n  if (!mutt_is_message_type (b->type, b->subtype))\n  {\n    if (err)\n      mutt_error _(\"You may only bounce message/rfc822 parts.\");\n    return -1;\n  }\n  return 0;\n}\n\nstatic short check_all_msg (ATTACHPTR ** idx, short idxlen,\n\t\t\t    BODY * cur, short err)\n{\n  short i;\n\n  if (cur && check_msg (cur, err) == -1)\n    return -1;\n  else if (!cur)\n  {\n    for (i = 0; i < idxlen; i++)\n    {\n      if (idx[i]->content->tagged)\n      {\n\tif (check_msg (idx[i]->content, err) == -1)\n\t  return -1;\n      }\n    }\n  }\n  return 0;\n}\n\n\n/* can we decode all tagged attachments? */\n\nstatic short check_can_decode (ATTACHPTR ** idx, short idxlen, \n\t\t\t      BODY * cur)\n{\n  short i;\n\n  if (cur)\n    return mutt_can_decode (cur);\n\n  for (i = 0; i < idxlen; i++)\n    if (idx[i]->content->tagged && !mutt_can_decode (idx[i]->content))\n      return 0;\n\n  return 1;\n}\n\nstatic short count_tagged (ATTACHPTR **idx, short idxlen)\n{\n  short count = 0;\n  short i;\n  \n  for (i = 0; i < idxlen; i++)\n    if (idx[i]->content->tagged)\n      count++;\n  \n  return count;\n}\n\n/* count the number of tagged children below a multipart or message\n * attachment.\n */\n\nstatic short count_tagged_children (ATTACHPTR ** idx, \n\t\t\t\t    short idxlen, short i)\n{\n  short level = idx[i]->level;\n  short count = 0;\n\n  while ((++i < idxlen) && (level < idx[i]->level))\n    if (idx[i]->content->tagged)\n      count++;\n\n  return count;\n}\n\n\n\f\n/**\n **\n ** The bounce function, from the attachment menu\n **\n **/\n\nvoid mutt_attach_bounce (FILE * fp, HEADER * hdr, \n\t   ATTACHPTR ** idx, short idxlen, BODY * cur)\n{\n  short i;\n  char prompt[STRING];\n  char buf[HUGE_STRING];\n  char *err = NULL;\n  ADDRESS *adr = NULL;\n  int ret = 0;\n  int p   = 0;\n\n  if (check_all_msg (idx, idxlen, cur, 1) == -1)\n    return;\n\n  /* one or more messages? */\n  p = (cur || count_tagged (idx, idxlen) == 1);\n\n  /* RfC 5322 mandates a From: header, so warn before bouncing\n   * messages without one */\n  if (cur)\n  {\n    if (!cur->hdr->env->from)\n    {\n      mutt_error _(\"Warning: message contains no From: header\");\n      mutt_sleep (2);\n      mutt_clear_error ();\n    }\n  }\n  else\n  {\n    for (i = 0; i < idxlen; i++)\n    {\n      if (idx[i]->content->tagged)\n      {\n\tif (!idx[i]->content->hdr->env->from)\n\t{\n\t  mutt_error _(\"Warning: message contains no From: header\");\n\t  mutt_sleep (2);\n\t  mutt_clear_error ();\n\t  break;\n\t}\n      }\n    }\n  }\n\n  if (p)\n    strfcpy (prompt, _(\"Bounce message to: \"), sizeof (prompt));\n  else\n    strfcpy (prompt, _(\"Bounce tagged messages to: \"), sizeof (prompt));\n\n  buf[0] = '\\0';\n  if (mutt_get_field (prompt, buf, sizeof (buf), M_ALIAS) \n      || buf[0] == '\\0')\n    return;\n\n  if (!(adr = rfc822_parse_adrlist (adr, buf)))\n  {\n    mutt_error _(\"Error parsing address!\");\n    return;\n  }\n\n  adr = mutt_expand_aliases (adr);\n  \n  if (mutt_addrlist_to_intl (adr, &err) < 0)\n  {\n    mutt_error (_(\"Bad IDN: '%s'\"), err);\n    FREE (&err);\n    rfc822_free_address (&adr);\n    return;\n  }\n  \n  buf[0] = 0;\n  rfc822_write_address (buf, sizeof (buf), adr, 1);\n\n#define extra_space (15+7+2)\n  /*\n   * See commands.c.\n   */\n  snprintf (prompt, sizeof (prompt) - 4, \n   (p ? _(\"Bounce message to %s\") : _(\"Bounce messages to %s\")), buf);\n  \n  if (mutt_strwidth (prompt) > COLS - extra_space)\n  {\n    mutt_format_string (prompt, sizeof (prompt) - 4,\n\t\t\t0, COLS-extra_space, FMT_LEFT, 0,\n\t\t\tprompt, sizeof (prompt), 0);\n    safe_strcat (prompt, sizeof (prompt), \"...?\");\n  }\n  else\n    safe_strcat (prompt, sizeof (prompt), \"?\");\n\n  if (query_quadoption (OPT_BOUNCE, prompt) != M_YES)\n  {\n    rfc822_free_address (&adr);\n    CLEARLINE (LINES - 1);\n    mutt_message (p ? _(\"Message not bounced.\") : _(\"Messages not bounced.\"));\n    return;\n  }\n  \n  CLEARLINE (LINES - 1);\n  \n  if (cur)\n    ret = mutt_bounce_message (fp, cur->hdr, adr);\n  else\n  {\n    for (i = 0; i < idxlen; i++)\n    {\n      if (idx[i]->content->tagged)\n\tif (mutt_bounce_message (fp, idx[i]->content->hdr, adr))\n\t  ret = 1;\n    }\n  }\n\n  if (!ret)\n    mutt_message (p ? _(\"Message bounced.\") : _(\"Messages bounced.\"));\n  else\n    mutt_error (p ? _(\"Error bouncing message!\") : _(\"Error bouncing messages!\"));\n}\n\n\n\f\n/**\n **\n ** resend-message, from the attachment menu \n **\n **\n **/\n\nvoid mutt_attach_resend (FILE * fp, HEADER * hdr, ATTACHPTR ** idx, \n\t\t\t short idxlen, BODY * cur)\n{\n  short i;\n\n  if (check_all_msg (idx, idxlen, cur, 1) == -1)\n    return;\n\n  if (cur)\n    mutt_resend_message (fp, Context, cur->hdr);\n  else\n  {\n    for (i = 0; i < idxlen; i++)\n      if (idx[i]->content->tagged)\n\tmutt_resend_message (fp, Context, idx[i]->content->hdr);\n  }\n}\n\n\f\n/**\n **\n ** forward-message, from the attachment menu \n **\n **/\n  \n/* try to find a common parent message for the tagged attachments. */\n\nstatic HEADER *find_common_parent (ATTACHPTR ** idx, short idxlen,\n\t\t\t\t   short nattach)\n{\n  short i;\n  short nchildren;\n\n  for (i = 0; i < idxlen; i++)\n    if (idx[i]->content->tagged)\n      break;\n  \n  while (--i >= 0)\n  {\n    if (mutt_is_message_type (idx[i]->content->type, idx[i]->content->subtype))\n    {\n      nchildren = count_tagged_children (idx, idxlen, i);\n      if (nchildren == nattach)\n\treturn idx[i]->content->hdr;\n    }\n  }\n\n  return NULL;\n}\n\n/* \n * check whether attachment #i is a parent of the attachment\n * pointed to by cur\n * \n * Note: This and the calling procedure could be optimized quite a \n * bit.  For now, it's not worth the effort.\n */\n\nstatic int is_parent (short i, ATTACHPTR **idx, short idxlen, BODY *cur)\n{\n  short level = idx[i]->level;\n\n  while ((++i < idxlen) && idx[i]->level > level)\n  {\n    if (idx[i]->content == cur)\n      return 1;\n  }\n\n  return 0;\n}\n\nstatic HEADER *find_parent (ATTACHPTR **idx, short idxlen, BODY *cur, short nattach)\n{\n  short i;\n  HEADER *parent = NULL;\n  \n  if (cur)\n  {\n    for (i = 0; i < idxlen; i++)\n    {\n      if (mutt_is_message_type (idx[i]->content->type, idx[i]->content->subtype) \n\t  && is_parent (i, idx, idxlen, cur))\n\tparent = idx[i]->content->hdr;\n      if (idx[i]->content == cur)\n\tbreak;\n    }\n  }\n  else if (nattach)\n    parent = find_common_parent (idx, idxlen, nattach);\n  \n  return parent;\n}\n\nstatic void include_header (int quote, FILE * ifp,\n\t\t\t    HEADER * hdr, FILE * ofp,\n\t\t\t    char *_prefix)\n{\n  int chflags = CH_DECODE;\n  char prefix[SHORT_STRING];\n  \n  if (option (OPTWEED))\n    chflags |= CH_WEED | CH_REORDER;\n\n  if (quote)\n  {\n    if (_prefix)\n      strfcpy (prefix, _prefix, sizeof (prefix));\n    else if (!option (OPTTEXTFLOWED))\n      _mutt_make_string (prefix, sizeof (prefix), NONULL (Prefix), \n\t\t\t Context, hdr, 0);\n    else\n      strfcpy (prefix, \">\", sizeof (prefix));\n\n    chflags |= CH_PREFIX;\n  }\n  \n  mutt_copy_header (ifp, hdr, ofp, chflags, quote ? prefix : NULL);\n}\n\n/* Attach all the body parts which can't be decoded. \n * This code is shared by forwarding and replying. */\n\nstatic BODY ** copy_problematic_attachments (FILE *fp,\n\t\t\t\t\t     BODY **last, \n\t\t\t\t\t     ATTACHPTR **idx, \n\t\t\t\t\t     short idxlen,\n\t\t\t\t\t     short force)\n{\n  short i;\n  \n  for (i = 0; i < idxlen; i++)\n  {\n    if (idx[i]->content->tagged && \n\t(force || !mutt_can_decode (idx[i]->content)))\n    {\n      if (mutt_copy_body (fp, last, idx[i]->content) == -1)\n\treturn NULL;\t\t/* XXXXX - may lead to crashes */\n      last = &((*last)->next);\n    }\n  }\n  return last;\n}\n\n/* \n * forward one or several MIME bodies \n * (non-message types)\n */\n\nstatic void attach_forward_bodies (FILE * fp, HEADER * hdr,\n\t\t\t\t   ATTACHPTR ** idx, short idxlen,\n\t\t\t\t   BODY * cur,\n\t\t\t\t   short nattach)\n{\n  short i;\n  short mime_fwd_all = 0;\n  short mime_fwd_any = 1;\n  HEADER *parent = NULL;\n  HEADER *tmphdr = NULL;\n  BODY **last;\n  char tmpbody[_POSIX_PATH_MAX];\n  FILE *tmpfp = NULL;\n\n  char prefix[STRING];\n\n  int rc = 0;\n\n  STATE st;\n\n  /* \n   * First, find the parent message.\n   * Note: This could be made an option by just\n   * putting the following lines into an if block.\n   */\n\n\n  parent = find_parent (idx, idxlen, cur, nattach);\n  \n  if (parent == NULL)\n    parent = hdr;\n\n\n  tmphdr = mutt_new_header ();\n  tmphdr->env = mutt_new_envelope ();\n  mutt_make_forward_subject (tmphdr->env, Context, parent);\n\n  mutt_mktemp (tmpbody, sizeof (tmpbody));\n  if ((tmpfp = safe_fopen (tmpbody, \"w\")) == NULL)\n  {\n    mutt_error (_(\"Can't open temporary file %s.\"), tmpbody);\n    return;\n  }\n\n  mutt_forward_intro (tmpfp, parent);\n\n  /* prepare the prefix here since we'll need it later. */\n\n  if (option (OPTFORWQUOTE))\n  {\n    if (!option (OPTTEXTFLOWED))\n      _mutt_make_string (prefix, sizeof (prefix), NONULL (Prefix), Context,\n\t\t\t parent, 0);\n    else\n      strfcpy (prefix, \">\", sizeof (prefix));\n  }\n    \n  include_header (option (OPTFORWQUOTE), fp, parent,\n\t\t  tmpfp, prefix);\n\n\n  /* \n   * Now, we have prepared the first part of the message body: The\n   * original message's header. \n   *\n   * The next part is more interesting: either include the message bodies,\n   * or attach them.\n   */\n\n  if ((!cur || mutt_can_decode (cur)) &&\n      (rc = query_quadoption (OPT_MIMEFWD, \n\t\t\t      _(\"Forward as attachments?\"))) == M_YES)\n    mime_fwd_all = 1;\n  else if (rc == -1)\n    goto bail;\n\n  /* \n   * shortcut MIMEFWDREST when there is only one attachment.  Is \n   * this intuitive?\n   */\n\n  if (!mime_fwd_all && !cur && (nattach > 1) \n      && !check_can_decode (idx, idxlen, cur))\n  {\n    if ((rc = query_quadoption (OPT_MIMEFWDREST,\n_(\"Can't decode all tagged attachments.  MIME-forward the others?\"))) == -1)\n      goto bail;\n    else if (rc == M_NO)\n      mime_fwd_any = 0;\n  }\n\n  /* initialize a state structure */\n  \n  memset (&st, 0, sizeof (st));\n  \n  if (option (OPTFORWQUOTE))\n    st.prefix = prefix;\n  st.flags = M_CHARCONV;\n  if (option (OPTWEED))\n    st.flags |= M_WEED;\n  st.fpin = fp;\n  st.fpout = tmpfp;\n\n  /* where do we append new MIME parts? */\n  last = &tmphdr->content;\n\n  if (cur)\n  {\n    /* single body case */\n\n    if (!mime_fwd_all && mutt_can_decode (cur))\n    {\n      mutt_body_handler (cur, &st);\n      state_putc ('\\n', &st);\n    }\n    else\n    {\n      if (mutt_copy_body (fp, last, cur) == -1)\n\tgoto bail;\n      last = &((*last)->next);\n    }\n  }\n  else\n  {\n    /* multiple body case */\n\n    if (!mime_fwd_all)\n    {\n      for (i = 0; i < idxlen; i++)\n      {\n\tif (idx[i]->content->tagged && mutt_can_decode (idx[i]->content))\n\t{\n\t  mutt_body_handler (idx[i]->content, &st);\n\t  state_putc ('\\n', &st);\n\t}\n      }\n    }\n\n    if (mime_fwd_any && \n\tcopy_problematic_attachments (fp, last, idx, idxlen, mime_fwd_all) == NULL)\n      goto bail;\n  }\n  \n  mutt_forward_trailer (tmpfp);\n  \n  safe_fclose (&tmpfp);\n  tmpfp = NULL;\n\n  /* now that we have the template, send it. */\n  ci_send_message (0, tmphdr, tmpbody, NULL, parent);\n  return;\n  \n  bail:\n  \n  if (tmpfp)\n  {\n    safe_fclose (&tmpfp);\n    mutt_unlink (tmpbody);\n  }\n\n  mutt_free_header (&tmphdr);\n}\n\n\n/* \n * Forward one or several message-type attachments. This \n * is different from the previous function\n * since we want to mimic the index menu's behavior.\n *\n * Code reuse from ci_send_message is not possible here -\n * ci_send_message relies on a context structure to find messages,\n * while, on the attachment menu, messages are referenced through\n * the attachment index. \n */\n\nstatic void attach_forward_msgs (FILE * fp, HEADER * hdr, \n\t       ATTACHPTR ** idx, short idxlen, BODY * cur)\n{\n  HEADER *curhdr = NULL;\n  HEADER *tmphdr;\n  short i;\n  int rc;\n\n  BODY **last;\n  char tmpbody[_POSIX_PATH_MAX];\n  FILE *tmpfp = NULL;\n\n  int cmflags = 0;\n  int chflags = CH_XMIT;\n  \n  if (cur)\n    curhdr = cur->hdr;\n  else\n  {\n    for (i = 0; i < idxlen; i++)\n      if (idx[i]->content->tagged)\n      {\n\tcurhdr = idx[i]->content->hdr;\n\tbreak;\n      }\n  }\n\n  tmphdr = mutt_new_header ();\n  tmphdr->env = mutt_new_envelope ();\n  mutt_make_forward_subject (tmphdr->env, Context, curhdr);\n\n\n  tmpbody[0] = '\\0';\n\n  if ((rc = query_quadoption (OPT_MIMEFWD, \n\t\t _(\"Forward MIME encapsulated?\"))) == M_NO)\n  {\n    \n    /* no MIME encapsulation */\n    \n    mutt_mktemp (tmpbody, sizeof (tmpbody));\n    if (!(tmpfp = safe_fopen (tmpbody, \"w\")))\n    {\n      mutt_error (_(\"Can't create %s.\"), tmpbody);\n      mutt_free_header (&tmphdr);\n      return;\n    }\n\n    if (option (OPTFORWQUOTE))\n    {\n      chflags |= CH_PREFIX;\n      cmflags |= M_CM_PREFIX;\n    }\n\n    if (option (OPTFORWDECODE))\n    {\n      cmflags |= M_CM_DECODE | M_CM_CHARCONV;\n      if (option (OPTWEED))\n      {\n\tchflags |= CH_WEED | CH_REORDER;\n\tcmflags |= M_CM_WEED;\n      }\n    }\n    \n    \n    if (cur)\n    {\n      /* mutt_message_hook (cur->hdr, M_MESSAGEHOOK); */ \n      mutt_forward_intro (tmpfp, cur->hdr);\n      _mutt_copy_message (tmpfp, fp, cur->hdr, cur->hdr->content, cmflags, chflags);\n      mutt_forward_trailer (tmpfp);\n    }\n    else\n    {\n      for (i = 0; i < idxlen; i++)\n      {\n\tif (idx[i]->content->tagged)\n\t{\n\t  /* mutt_message_hook (idx[i]->content->hdr, M_MESSAGEHOOK); */ \n\t  mutt_forward_intro (tmpfp, idx[i]->content->hdr);\n\t  _mutt_copy_message (tmpfp, fp, idx[i]->content->hdr,\n\t\t\t      idx[i]->content->hdr->content, cmflags, chflags);\n\t  mutt_forward_trailer (tmpfp);\n\t}\n      }\n    }\n    safe_fclose (&tmpfp);\n  }\n  else if (rc == M_YES)\t/* do MIME encapsulation - we don't need to do much here */\n  {\n    last = &tmphdr->content;\n    if (cur)\n      mutt_copy_body (fp, last, cur);\n    else\n    {\n      for (i = 0; i < idxlen; i++)\n\tif (idx[i]->content->tagged)\n\t{\n\t  mutt_copy_body (fp, last, idx[i]->content);\n\t  last = &((*last)->next);\n\t}\n    }\n  }\n  else\n    mutt_free_header (&tmphdr);\n\n  ci_send_message (0, tmphdr, *tmpbody ? tmpbody : NULL, \n\t\t   NULL, curhdr);\n\n}\n\nvoid mutt_attach_forward (FILE * fp, HEADER * hdr, \n\t\t\t  ATTACHPTR ** idx, short idxlen, BODY * cur)\n{\n  short nattach;\n  \n\n  if (check_all_msg (idx, idxlen, cur, 0) == 0)\n    attach_forward_msgs (fp, hdr, idx, idxlen, cur);\n  else\n  {\n    nattach = count_tagged (idx, idxlen);\n    attach_forward_bodies (fp, hdr, idx, idxlen, cur, nattach);\n  }\n}\n\n\n\f\n/**\n ** \n ** the various reply functions, from the attachment menu\n **\n **\n **/\n\n/* Create the envelope defaults for a reply.\n *\n * This function can be invoked in two ways.\n * \n * Either, parent is NULL.  In this case, all tagged bodies are of a message type,\n * and the header information is fetched from them.\n * \n * Or, parent is non-NULL.  In this case, cur is the common parent of all the\n * tagged attachments.\n * \n * Note that this code is horribly similar to envelope_defaults () from send.c.\n */\n  \nstatic int\nattach_reply_envelope_defaults (ENVELOPE *env, ATTACHPTR **idx, short idxlen,\n\t\t\t\tHEADER *parent, int flags)\n{\n  ENVELOPE *curenv = NULL;\n  HEADER *curhdr = NULL;\n  short i;\n  \n  if (!parent)\n  {\n    for (i = 0; i < idxlen; i++)\n    {\n      if (idx[i]->content->tagged)\n      {\n\tcurhdr = idx[i]->content->hdr;\n\tcurenv = curhdr->env;\n\tbreak;\n      }\n    }\n  }\n  else\n  {\n    curenv = parent->env;\n    curhdr = parent;\n  }\n\n  if (curenv == NULL  ||  curhdr == NULL)\n  {\n    mutt_error _(\"Can't find any tagged messages.\");\n    return -1;\n  }\n\n  if (parent)\n  {\n    if (mutt_fetch_recips (env, curenv, flags) == -1)\n      return -1;\n  }\n  else\n  {\n    for (i = 0; i < idxlen; i++)\n    {\n      if (idx[i]->content->tagged\n\t  && mutt_fetch_recips (env, idx[i]->content->hdr->env, flags) == -1)\n\treturn -1;\n    }\n  }\n  \n  if ((flags & SENDLISTREPLY) && !env->to)\n  {\n    mutt_error _(\"No mailing lists found!\");\n    return (-1);\n  }\n  \n  mutt_fix_reply_recipients (env);\n  mutt_make_misc_reply_headers (env, Context, curhdr, curenv);\n\n  if (parent)\n    mutt_add_to_reference_headers (env, curenv, NULL, NULL);\n  else\n  {\n    LIST **p = NULL, **q = NULL;\n    \n    for (i = 0; i < idxlen; i++)\n    {\n      if (idx[i]->content->tagged)\n\tmutt_add_to_reference_headers (env, idx[i]->content->hdr->env, &p, &q);\n    }\n  }\n  \n  return 0;\n}\n\n\n/*  This is _very_ similar to send.c's include_reply(). */\n\nstatic void attach_include_reply (FILE *fp, FILE *tmpfp, HEADER *cur, int flags)\n{\n  int cmflags = M_CM_PREFIX | M_CM_DECODE | M_CM_CHARCONV;\n  int chflags = CH_DECODE;\n\n  /* mutt_message_hook (cur, M_MESSAGEHOOK); */ \n  \n  mutt_make_attribution (Context, cur, tmpfp);\n  \n  if (!option (OPTHEADER))\n    cmflags |= M_CM_NOHEADER;\n  if (option (OPTWEED))\n  {\n    chflags |= CH_WEED;\n    cmflags |= M_CM_WEED;\n  }\n\n  _mutt_copy_message (tmpfp, fp, cur, cur->content, cmflags, chflags);\n  mutt_make_post_indent (Context, cur, tmpfp);\n}\n  \nvoid mutt_attach_reply (FILE * fp, HEADER * hdr, \n\t\t\tATTACHPTR ** idx, short idxlen, BODY * cur, \n\t\t\tint flags)\n{\n  short mime_reply_any = 0;\n  \n  short nattach = 0;\n  HEADER *parent = NULL;\n  HEADER *tmphdr = NULL;\n  short i;\n\n  STATE st;\n  char tmpbody[_POSIX_PATH_MAX];\n  FILE *tmpfp;\n  \n  char prefix[SHORT_STRING];\n  int rc;\n  \n  if (check_all_msg (idx, idxlen, cur, 0) == -1)\n  {\n    nattach = count_tagged (idx, idxlen);\n    if ((parent = find_parent (idx, idxlen, cur, nattach)) == NULL)\n      parent = hdr;\n  }\n\n  if (nattach > 1 && !check_can_decode (idx, idxlen, cur))\n  {\n    if ((rc = query_quadoption (OPT_MIMEFWDREST,\n      _(\"Can't decode all tagged attachments.  MIME-encapsulate the others?\"))) == -1)\n      return;\n    else if (rc == M_YES)\n      mime_reply_any = 1;\n  }\n  else if (nattach == 1)\n    mime_reply_any = 1;\n\n  tmphdr = mutt_new_header ();\n  tmphdr->env = mutt_new_envelope ();\n\n  if (attach_reply_envelope_defaults (tmphdr->env, idx, idxlen, \n\t\t\t\t      parent ? parent : (cur ? cur->hdr : NULL), flags) == -1)\n  {\n    mutt_free_header (&tmphdr);\n    return;\n  }\n  \n  mutt_mktemp (tmpbody, sizeof (tmpbody));\n  if ((tmpfp = safe_fopen (tmpbody, \"w\")) == NULL)\n  {\n    mutt_error (_(\"Can't create %s.\"), tmpbody);\n    mutt_free_header (&tmphdr);\n    return;\n  }\n\n  if (!parent)\n  {\n    if (cur)\n      attach_include_reply (fp, tmpfp, cur->hdr, flags);\n    else\n    {\n      for (i = 0; i < idxlen; i++)\n      {\n\tif (idx[i]->content->tagged)\n\t  attach_include_reply (fp, tmpfp, idx[i]->content->hdr, flags);\n      }\n    }\n  }\n  else\n  {\n    mutt_make_attribution (Context, parent, tmpfp);\n    \n    memset (&st, 0, sizeof (STATE));\n    st.fpin = fp;\n    st.fpout = tmpfp;\n\n    if (!option (OPTTEXTFLOWED))\n      _mutt_make_string (prefix, sizeof (prefix), NONULL (Prefix), \n\t\t\t Context, parent, 0);\n    else\n      strfcpy (prefix, \">\", sizeof (prefix));\n\n    st.prefix = prefix;\n    st.flags  = M_CHARCONV;\n    \n    if (option (OPTWEED)) \n      st.flags |= M_WEED;\n\n    if (option (OPTHEADER))\n      include_header (1, fp, parent, tmpfp, prefix);\n\n    if (cur)\n    {\n      if (mutt_can_decode (cur))\n      {\n\tmutt_body_handler (cur, &st);\n\tstate_putc ('\\n', &st);\n      }\n      else\n\tmutt_copy_body (fp, &tmphdr->content, cur);\n    }\n    else\n    {\n      for (i = 0; i < idxlen; i++)\n      {\n\tif (idx[i]->content->tagged && mutt_can_decode (idx[i]->content))\n\t{\n\t  mutt_body_handler (idx[i]->content, &st);\n\t  state_putc ('\\n', &st);\n\t}\n      }\n    }\n\n    mutt_make_post_indent (Context, parent, tmpfp);\n\n    if (mime_reply_any && !cur && \n\tcopy_problematic_attachments (fp, &tmphdr->content, idx, idxlen, 0) == NULL)\n    {\n      mutt_free_header (&tmphdr);\n      safe_fclose (&tmpfp);\n      return;\n    }\n  }\n\n  safe_fclose (&tmpfp);\n  \n  if (ci_send_message (flags, tmphdr, tmpbody, NULL,\n\t\t\t  parent ? parent : (cur ? cur->hdr : NULL)) == 0)\n    mutt_set_flag (Context, hdr, M_REPLIED, 1);\n}\n\n"
  },
  {
    "path": "regex.c",
    "content": "/* Extended regular expression matching and search library,\n * version 0.12.\n * (Implements POSIX draft P1003.2/D11.2, except for some of the\n * internationalization features.)\n * \n * Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.\n * \n * This file is part of the GNU C Library.  Its master source is NOT part of\n * the C library, however.  The master source lives in /gd/gnu/lib.\n * \n * The GNU C Library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Library General Public License as\n * published by the Free Software Foundation; either version 2 of the\n * License, or (at your option) any later version.\n * \n * The GNU C Library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Library General Public License for more details.\n * \n * You should have received a copy of the GNU Library General Public\n * License along with the GNU C Library; see the file COPYING.LIB.  If not,\n * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n * Boston, MA  02110-1301, USA.  \n */\n\n/*\n * Modifications:\n * \n * Use _regex.h instead of regex.h.  tlr, 1999-01-06\n * Make REGEX_MALLOC depend on HAVE_ALLOCA &c.\n * \t\t\t\t     tlr, 1999-02-14\n * Don't switch on regex debugging when debugging mutt.\n * \t                             tlr, 1999-02-25\n */\n\n/* The following doesn't mix too well with autoconfiguring\n * the use of alloca.  So let's disable it for AIX.\n */\n\n#if 0\n\n/* AIX requires this to be the first thing in the file. */\n# if defined (_AIX) && !defined (REGEX_MALLOC)\n#  pragma alloca\n# endif\n\n#endif\n\n#undef\t_GNU_SOURCE\n#define _GNU_SOURCE\n\n#if HAVE_CONFIG_H\n# include <config.h>\n#endif\n\n#undef DEBUG\n\n/* On OS X 10.5.x, wide char functions are inlined by default breaking\n * --without-wc-funcs compilation\n */\n#ifdef __APPLE_CC__\n#define _DONT_USE_CTYPE_INLINE_\n#endif\n\n#if (defined(HAVE_ALLOCA_H) && !defined(_AIX))\n# include <alloca.h>\n#endif\n\n#if (!defined(HAVE_ALLOCA) || defined(_AIX))\n# define REGEX_MALLOC\n#endif\n\n#if defined(STDC_HEADERS) && !defined(emacs)\n#include <stddef.h>\n#else\n/* We need this for `regex.h', and perhaps for the Emacs include files.  */\n#include <sys/types.h>\n#endif\n\n/* For platform which support the ISO C amendment 1 functionality we\n   support user defined character classes.  */\n#ifdef HAVE_WCHAR_H\n# include <wchar.h>\n#endif\n#if defined(HAVE_WCTYPE_H) && defined(HAVE_WC_FUNCS)\n# include <wctype.h>\n#endif\n\n/* This is for other GNU distributions with internationalized messages.  */\n#if HAVE_LIBINTL_H || defined (_LIBC)\n# include <libintl.h>\n#else\n# define gettext(msgid) (msgid)\n#endif\n\n#ifndef gettext_noop\n/* This define is so xgettext can find the internationalizable\n   strings.  */\n#define gettext_noop(String) String\n#endif\n\n/* The `emacs' switch turns on certain matching commands\n   that make sense only in Emacs. */\n#ifdef emacs\n\n#include \"lisp.h\"\n#include \"buffer.h\"\n#include \"syntax.h\"\n\n#else  /* not emacs */\n\n/* If we are not linking with Emacs proper,\n   we can't use the relocating allocator\n   even if config.h says that we can.  */\n#undef REL_ALLOC\n\n#if defined (STDC_HEADERS) || defined (_LIBC)\n#include <stdlib.h>\n#else\nchar *malloc ();\t/* __MEM_CHECKED__ */\nchar *realloc ();\t/* __MEM_CHECKED__ */\n#endif\n\n/* When used in Emacs's lib-src, we need to get bzero and bcopy somehow.\n   If nothing else has been done, use the method below.  */\n#ifdef INHIBIT_STRING_HEADER\n#if !(defined (HAVE_BZERO) && defined (HAVE_BCOPY))\n#if !defined (bzero) && !defined (bcopy)\n#undef INHIBIT_STRING_HEADER\n#endif\n#endif\n#endif\n\n/* This is the normal way of making sure we have a bcopy and a bzero.\n   This is used in most programs--a few other programs avoid this\n   by defining INHIBIT_STRING_HEADER.  */\n#ifndef INHIBIT_STRING_HEADER\n#if defined (HAVE_STRING_H) || defined (STDC_HEADERS) || defined (_LIBC)\n#include <string.h>\n#ifndef bcmp\n#define bcmp(s1, s2, n)\tmemcmp ((s1), (s2), (n))\n#endif\n#ifndef bcopy\n#define bcopy(s, d, n)\tmemcpy ((d), (s), (n))\n#endif\n#ifndef bzero\n#define bzero(s, n)\tmemset ((s), 0, (n))\n#endif\n#else\n#include <strings.h>\n#endif\n#endif\n\n/* Define the syntax stuff for \\<, \\>, etc.  */\n\n/* This must be nonzero for the wordchar and notwordchar pattern\n   commands in re_match_2.  */\n#ifndef Sword\n#define Sword 1\n#endif\n\n#ifdef SWITCH_ENUM_BUG\n#define SWITCH_ENUM_CAST(x) ((int)(x))\n#else\n#define SWITCH_ENUM_CAST(x) (x)\n#endif\n\n#ifdef SYNTAX_TABLE\n\nextern char *re_syntax_table;\n\n#else /* not SYNTAX_TABLE */\n\n/* How many characters in the character set.  */\n#define CHAR_SET_SIZE 256\n\nstatic char re_syntax_table[CHAR_SET_SIZE];\n\nstatic void\ninit_syntax_once ()\n{\n   register int c;\n   static int done = 0;\n\n   if (done)\n     return;\n\n   bzero (re_syntax_table, sizeof re_syntax_table);\n\n   for (c = 'a'; c <= 'z'; c++)\n     re_syntax_table[c] = Sword;\n\n   for (c = 'A'; c <= 'Z'; c++)\n     re_syntax_table[c] = Sword;\n\n   for (c = '0'; c <= '9'; c++)\n     re_syntax_table[c] = Sword;\n\n   re_syntax_table['_'] = Sword;\n\n   done = 1;\n}\n\n#endif /* not SYNTAX_TABLE */\n\n#define SYNTAX(c) re_syntax_table[c]\n\n#endif /* not emacs */\n\f\n/* Get the interface, including the syntax bits.  */\n\n/* Changed to fit into mutt - tlr, 1999-01-06 */\n\n#include \"_regex.h\"\n\n/* isalpha etc. are used for the character classes.  */\n#include <ctype.h>\n\n/* Jim Meyering writes:\n\n   \"... Some ctype macros are valid only for character codes that\n   isascii says are ASCII (SGI's IRIX-4.0.5 is one such system --when\n   using /bin/cc or gcc but without giving an ansi option).  So, all\n   ctype uses should be through macros like ISPRINT...  If\n   STDC_HEADERS is defined, then autoconf has verified that the ctype\n   macros don't need to be guarded with references to isascii. ...\n   Defining isascii to 1 should let any compiler worth its salt\n   eliminate the && through constant folding.\"  */\n\n#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))\n#define ISASCII(c) 1\n#else\n#define ISASCII(c) isascii(c)\n#endif\n\n#ifdef isblank\n#define ISBLANK(c) (ISASCII (c) && isblank (c))\n#else\n#define ISBLANK(c) ((c) == ' ' || (c) == '\\t')\n#endif\n#ifdef isgraph\n#define ISGRAPH(c) (ISASCII (c) && isgraph (c))\n#else\n#define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c))\n#endif\n\n#define ISPRINT(c) (ISASCII (c) && isprint (c))\n#define ISDIGIT(c) (ISASCII (c) && isdigit (c))\n#define ISALNUM(c) (ISASCII (c) && isalnum (c))\n#define ISALPHA(c) (ISASCII (c) && isalpha (c))\n#define ISCNTRL(c) (ISASCII (c) && iscntrl (c))\n#define ISLOWER(c) (ISASCII (c) && islower (c))\n#define ISPUNCT(c) (ISASCII (c) && ispunct (c))\n#define ISSPACE(c) (ISASCII (c) && isspace (c))\n#define ISUPPER(c) (ISASCII (c) && isupper (c))\n#define ISXDIGIT(c) (ISASCII (c) && isxdigit (c))\n\n#ifndef NULL\n#define NULL (void *)0\n#endif\n\n/* We remove any previous definition of `SIGN_EXTEND_CHAR',\n   since ours (we hope) works properly with all combinations of\n   machines, compilers, `char' and `unsigned char' argument types.\n   (Per Bothner suggested the basic approach.)  */\n#undef SIGN_EXTEND_CHAR\n#if __STDC__\n#define SIGN_EXTEND_CHAR(c) ((signed char) (c))\n#else  /* not __STDC__ */\n/* As in Harbison and Steele.  */\n#define SIGN_EXTEND_CHAR(c) ((((unsigned char) (c)) ^ 128) - 128)\n#endif\n\f\n/* Should we use malloc or alloca?  If REGEX_MALLOC is not defined, we\n   use `alloca' instead of `malloc'.  This is because using malloc in\n   re_search* or re_match* could cause memory leaks when C-g is used in\n   Emacs; also, malloc is slower and causes storage fragmentation.  On\n   the other hand, malloc is more portable, and easier to debug.\n\n   Because we sometimes use alloca, some routines have to be macros,\n   not functions -- `alloca'-allocated space disappears at the end of the\n   function it is called in.  */\n\n#ifdef REGEX_MALLOC\n\n#define REGEX_ALLOCATE malloc\n#define REGEX_REALLOCATE(source, osize, nsize) realloc (source, nsize)\n#define REGEX_FREE free\n\n#else /* not REGEX_MALLOC  */\n\n/* Emacs already defines alloca, sometimes.  */\n#ifndef alloca\n\n/* Make alloca work the best possible way.  */\n#ifdef __GNUC__\n#define alloca __builtin_alloca\n#else /* not __GNUC__ */\n#if HAVE_ALLOCA_H\n#include <alloca.h>\n#else /* not __GNUC__ or HAVE_ALLOCA_H */\n#if 0 /* It is a bad idea to declare alloca.  We always cast the result.  */\n#ifndef _AIX /* Already did AIX, up at the top.  */\nchar *alloca ();\n#endif /* not _AIX */\n#endif\n#endif /* not HAVE_ALLOCA_H */\n#endif /* not __GNUC__ */\n\n#endif /* not alloca */\n\n#define REGEX_ALLOCATE alloca\n\n/* Assumes a `char *destination' variable.  */\n#define REGEX_REALLOCATE(source, osize, nsize)\t\t\t\t\\\n  (destination = (char *) alloca (nsize),\t\t\t\t\\\n   bcopy (source, destination, osize),\t\t\t\t\t\\\n   destination)\n\n/* No need to do anything to free, after alloca.  */\n#define REGEX_FREE(arg) ((void)0) /* Do nothing!  But inhibit gcc warning.  */\n\n#endif /* not REGEX_MALLOC */\n\n/* Define how to allocate the failure stack.  */\n\n#if defined (REL_ALLOC) && defined (REGEX_MALLOC)\n\n#define REGEX_ALLOCATE_STACK(size)\t\t\t\t\\\n  r_alloc (&failure_stack_ptr, (size))\n#define REGEX_REALLOCATE_STACK(source, osize, nsize)\t\t\\\n  r_re_alloc (&failure_stack_ptr, (nsize))\n#define REGEX_FREE_STACK(ptr)\t\t\t\t\t\\\n  r_alloc_free (&failure_stack_ptr)\n\n#else /* not using relocating allocator */\n\n#ifdef REGEX_MALLOC\n\n#define REGEX_ALLOCATE_STACK malloc\n#define REGEX_REALLOCATE_STACK(source, osize, nsize) realloc (source, nsize)\n#define REGEX_FREE_STACK free\n\n#else /* not REGEX_MALLOC */\n\n#define REGEX_ALLOCATE_STACK alloca\n\n#define REGEX_REALLOCATE_STACK(source, osize, nsize)\t\t\t\\\n   REGEX_REALLOCATE (source, osize, nsize)\n/* No need to explicitly free anything.  */\n#define REGEX_FREE_STACK(arg)\n\n#endif /* not REGEX_MALLOC */\n#endif /* not using relocating allocator */\n\n\n/* True if `size1' is non-NULL and PTR is pointing anywhere inside\n   `string1' or just past its end.  This works if PTR is NULL, which is\n   a good thing.  */\n#define FIRST_STRING_P(ptr) \t\t\t\t\t\\\n  (size1 && string1 <= (ptr) && (ptr) <= string1 + size1)\n\n/* (Re)Allocate N items of type T using malloc, or fail.  */\n#define TALLOC(n, t) ((t *) malloc ((n) * sizeof (t)))\n#define RETALLOC(addr, n, t) ((addr) = (t *) realloc (addr, (n) * sizeof (t)))\n#define RETALLOC_IF(addr, n, t) \\\n  if (addr) RETALLOC((addr), (n), t); else (addr) = TALLOC ((n), t)\n#define REGEX_TALLOC(n, t) ((t *) REGEX_ALLOCATE ((n) * sizeof (t)))\n\n#define BYTEWIDTH 8 /* In bits.  */\n\n#define STREQ(s1, s2) ((strcmp (s1, s2) == 0))\n\n#undef MAX\n#undef MIN\n#define MAX(a, b) ((a) > (b) ? (a) : (b))\n#define MIN(a, b) ((a) < (b) ? (a) : (b))\n\ntypedef char boolean;\n#define false 0\n#define true 1\n\nstatic int re_match_2_internal ();\n\f\n/* These are the command codes that appear in compiled regular\n   expressions.  Some opcodes are followed by argument bytes.  A\n   command code can specify any interpretation whatsoever for its\n   arguments.  Zero bytes may appear in the compiled regular expression.  */\n\ntypedef enum\n{\n  no_op = 0,\n\n  /* Succeed right away--no more backtracking.  */\n  succeed,\n\n        /* Followed by one byte giving n, then by n literal bytes.  */\n  exactn,\n\n        /* Matches any (more or less) character.  */\n  anychar,\n\n        /* Matches any one char belonging to specified set.  First\n           following byte is number of bitmap bytes.  Then come bytes\n           for a bitmap saying which chars are in.  Bits in each byte\n           are ordered low-bit-first.  A character is in the set if its\n           bit is 1.  A character too large to have a bit in the map is\n           automatically not in the set.  */\n  charset,\n\n        /* Same parameters as charset, but match any character that is\n           not one of those specified.  */\n  charset_not,\n\n        /* Start remembering the text that is matched, for storing in a\n           register.  Followed by one byte with the register number, in\n           the range 0 to one less than the pattern buffer's re_nsub\n           field.  Then followed by one byte with the number of groups\n           inner to this one.  (This last has to be part of the\n           start_memory only because we need it in the on_failure_jump\n           of re_match_2.)  */\n  start_memory,\n\n        /* Stop remembering the text that is matched and store it in a\n           memory register.  Followed by one byte with the register\n           number, in the range 0 to one less than `re_nsub' in the\n           pattern buffer, and one byte with the number of inner groups,\n           just like `start_memory'.  (We need the number of inner\n           groups here because we don't have any easy way of finding the\n           corresponding start_memory when we're at a stop_memory.)  */\n  stop_memory,\n\n        /* Match a duplicate of something remembered. Followed by one\n           byte containing the register number.  */\n  duplicate,\n\n        /* Fail unless at beginning of line.  */\n  begline,\n\n        /* Fail unless at end of line.  */\n  endline,\n\n        /* Succeeds if at beginning of buffer (if emacs) or at beginning\n           of string to be matched (if not).  */\n  begbuf,\n\n        /* Analogously, for end of buffer/string.  */\n  endbuf,\n\n        /* Followed by two byte relative address to which to jump.  */\n  jump,\n\n\t/* Same as jump, but marks the end of an alternative.  */\n  jump_past_alt,\n\n        /* Followed by two-byte relative address of place to resume at\n           in case of failure.  */\n  on_failure_jump,\n\n        /* Like on_failure_jump, but pushes a placeholder instead of the\n           current string position when executed.  */\n  on_failure_keep_string_jump,\n\n        /* Throw away latest failure point and then jump to following\n           two-byte relative address.  */\n  pop_failure_jump,\n\n        /* Change to pop_failure_jump if know won't have to backtrack to\n           match; otherwise change to jump.  This is used to jump\n           back to the beginning of a repeat.  If what follows this jump\n           clearly won't match what the repeat does, such that we can be\n           sure that there is no use backtracking out of repetitions\n           already matched, then we change it to a pop_failure_jump.\n           Followed by two-byte address.  */\n  maybe_pop_jump,\n\n        /* Jump to following two-byte address, and push a dummy failure\n           point. This failure point will be thrown away if an attempt\n           is made to use it for a failure.  A `+' construct makes this\n           before the first repeat.  Also used as an intermediary kind\n           of jump when compiling an alternative.  */\n  dummy_failure_jump,\n\n\t/* Push a dummy failure point and continue.  Used at the end of\n\t   alternatives.  */\n  push_dummy_failure,\n\n        /* Followed by two-byte relative address and two-byte number n.\n           After matching N times, jump to the address upon failure.  */\n  succeed_n,\n\n        /* Followed by two-byte relative address, and two-byte number n.\n           Jump to the address N times, then fail.  */\n  jump_n,\n\n        /* Set the following two-byte relative address to the\n           subsequent two-byte number.  The address *includes* the two\n           bytes of number.  */\n  set_number_at,\n\n  wordchar,\t/* Matches any word-constituent character.  */\n  notwordchar,\t/* Matches any char that is not a word-constituent.  */\n\n  wordbeg,\t/* Succeeds if at word beginning.  */\n  wordend,\t/* Succeeds if at word end.  */\n\n  wordbound,\t/* Succeeds if at a word boundary.  */\n  notwordbound\t/* Succeeds if not at a word boundary.  */\n\n#ifdef emacs\n  ,before_dot,\t/* Succeeds if before point.  */\n  at_dot,\t/* Succeeds if at point.  */\n  after_dot,\t/* Succeeds if after point.  */\n\n\t/* Matches any character whose syntax is specified.  Followed by\n           a byte which contains a syntax code, e.g., Sword.  */\n  syntaxspec,\n\n\t/* Matches any character whose syntax is not that specified.  */\n  notsyntaxspec\n#endif /* emacs */\n} re_opcode_t;\n\f\n/* Common operations on the compiled pattern.  */\n\n/* Store NUMBER in two contiguous bytes starting at DESTINATION.  */\n\n#define STORE_NUMBER(destination, number)\t\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    (destination)[0] = (number) & 0377;\t\t\t\t\t\\\n    (destination)[1] = (number) >> 8;\t\t\t\t\t\\\n  } while (0)\n\n/* Same as STORE_NUMBER, except increment DESTINATION to\n   the byte after where the number is stored.  Therefore, DESTINATION\n   must be an lvalue.  */\n\n#define STORE_NUMBER_AND_INCR(destination, number)\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    STORE_NUMBER (destination, number);\t\t\t\t\t\\\n    (destination) += 2;\t\t\t\t\t\t\t\\\n  } while (0)\n\n/* Put into DESTINATION a number stored in two contiguous bytes starting\n   at SOURCE.  */\n\n#define EXTRACT_NUMBER(destination, source)\t\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    (destination) = *(source) & 0377;\t\t\t\t\t\\\n    (destination) += SIGN_EXTEND_CHAR (*((source) + 1)) << 8;\t\t\\\n  } while (0)\n\n#ifdef DEBUG\nstatic void extract_number _RE_ARGS ((int *dest, unsigned char *source));\nstatic void\nextract_number (dest, source)\n    int *dest;\n    unsigned char *source;\n{\n  int temp = SIGN_EXTEND_CHAR (*(source + 1));\n  *dest = *source & 0377;\n  *dest += temp << 8;\n}\n\n#ifndef EXTRACT_MACROS /* To debug the macros.  */\n#undef EXTRACT_NUMBER\n#define EXTRACT_NUMBER(dest, src) extract_number (&dest, src)\n#endif /* not EXTRACT_MACROS */\n\n#endif /* DEBUG */\n\n/* Same as EXTRACT_NUMBER, except increment SOURCE to after the number.\n   SOURCE must be an lvalue.  */\n\n#define EXTRACT_NUMBER_AND_INCR(destination, source)\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    EXTRACT_NUMBER (destination, source);\t\t\t\t\\\n    (source) += 2; \t\t\t\t\t\t\t\\\n  } while (0)\n\n#ifdef DEBUG\nstatic void extract_number_and_incr _RE_ARGS ((int *destination,\n\t\t\t\t\t       unsigned char **source));\nstatic void\nextract_number_and_incr (destination, source)\n    int *destination;\n    unsigned char **source;\n{\n  extract_number (destination, *source);\n  *source += 2;\n}\n\n#ifndef EXTRACT_MACROS\n#undef EXTRACT_NUMBER_AND_INCR\n#define EXTRACT_NUMBER_AND_INCR(dest, src) \\\n  extract_number_and_incr (&dest, &src)\n#endif /* not EXTRACT_MACROS */\n\n#endif /* DEBUG */\n\f\n/* If DEBUG is defined, Regex prints many voluminous messages about what\n   it is doing (if the variable `debug' is nonzero).  If linked with the\n   main program in `iregex.c', you can enter patterns and strings\n   interactively.  And if linked with the main program in `main.c' and\n   the other test files, you can run the already-written tests.  */\n\n#ifdef DEBUG\n\n/* We use standard I/O for debugging.  */\n#include <stdio.h>\n\n/* It is useful to test things that ``must'' be true when debugging.  */\n#include <assert.h>\n\nstatic int debug = 0;\n\n#define DEBUG_STATEMENT(e) e\n#define DEBUG_PRINT1(x) if (debug) printf (x)\n#define DEBUG_PRINT2(x1, x2) if (debug) printf (x1, x2)\n#define DEBUG_PRINT3(x1, x2, x3) if (debug) printf (x1, x2, x3)\n#define DEBUG_PRINT4(x1, x2, x3, x4) if (debug) printf (x1, x2, x3, x4)\n#define DEBUG_PRINT_COMPILED_PATTERN(p, s, e) \t\t\t\t\\\n  if (debug) print_partial_compiled_pattern (s, e)\n#define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2)\t\t\t\\\n  if (debug) print_double_string (w, s1, sz1, s2, sz2)\n\n\n/* Print the fastmap in human-readable form.  */\n\nvoid\nprint_fastmap (fastmap)\n    char *fastmap;\n{\n  unsigned was_a_range = 0;\n  unsigned i = 0;\n\n  while (i < (1 << BYTEWIDTH))\n    {\n      if (fastmap[i++])\n\t{\n\t  was_a_range = 0;\n          putchar (i - 1);\n          while (i < (1 << BYTEWIDTH)  &&  fastmap[i])\n            {\n              was_a_range = 1;\n              i++;\n            }\n\t  if (was_a_range)\n            {\n              printf (\"-\");\n              putchar (i - 1);\n            }\n        }\n    }\n  putchar ('\\n');\n}\n\n\n/* Print a compiled pattern string in human-readable form, starting at\n   the START pointer into it and ending just before the pointer END.  */\n\nvoid\nprint_partial_compiled_pattern (start, end)\n    unsigned char *start;\n    unsigned char *end;\n{\n  int mcnt, mcnt2;\n  unsigned char *p1;\n  unsigned char *p = start;\n  unsigned char *pend = end;\n\n  if (start == NULL)\n    {\n      printf (\"(null)\\n\");\n      return;\n    }\n\n  /* Loop over pattern commands.  */\n  while (p < pend)\n    {\n      printf (\"%d:\\t\", p - start);\n\n      switch ((re_opcode_t) *p++)\n\t{\n        case no_op:\n          printf (\"/no_op\");\n          break;\n\n\tcase exactn:\n\t  mcnt = *p++;\n          printf (\"/exactn/%d\", mcnt);\n          do\n\t    {\n              putchar ('/');\n\t      putchar (*p++);\n            }\n          while (--mcnt);\n          break;\n\n\tcase start_memory:\n          mcnt = *p++;\n          printf (\"/start_memory/%d/%d\", mcnt, *p++);\n          break;\n\n\tcase stop_memory:\n          mcnt = *p++;\n\t  printf (\"/stop_memory/%d/%d\", mcnt, *p++);\n          break;\n\n\tcase duplicate:\n\t  printf (\"/duplicate/%d\", *p++);\n\t  break;\n\n\tcase anychar:\n\t  printf (\"/anychar\");\n\t  break;\n\n\tcase charset:\n        case charset_not:\n          {\n            register int c, last = -100;\n\t    register int in_range = 0;\n\n\t    printf (\"/charset [%s\",\n\t            (re_opcode_t) *(p - 1) == charset_not ? \"^\" : \"\");\n\n            assert (p + *p < pend);\n\n            for (c = 0; c < 256; c++)\n\t      if (c / 8 < *p\n\t\t  && (p[1 + (c/8)] & (1 << (c % 8))))\n\t\t{\n\t\t  /* Are we starting a range?  */\n\t\t  if (last + 1 == c && ! in_range)\n\t\t    {\n\t\t      putchar ('-');\n\t\t      in_range = 1;\n\t\t    }\n\t\t  /* Have we broken a range?  */\n\t\t  else if (last + 1 != c && in_range)\n              {\n\t\t      putchar (last);\n\t\t      in_range = 0;\n\t\t    }\n\n\t\t  if (! in_range)\n\t\t    putchar (c);\n\n\t\t  last = c;\n              }\n\n\t    if (in_range)\n\t      putchar (last);\n\n\t    putchar (']');\n\n\t    p += 1 + *p;\n\t  }\n\t  break;\n\n\tcase begline:\n\t  printf (\"/begline\");\n          break;\n\n\tcase endline:\n          printf (\"/endline\");\n          break;\n\n\tcase on_failure_jump:\n          extract_number_and_incr (&mcnt, &p);\n  \t  printf (\"/on_failure_jump to %d\", p + mcnt - start);\n          break;\n\n\tcase on_failure_keep_string_jump:\n          extract_number_and_incr (&mcnt, &p);\n  \t  printf (\"/on_failure_keep_string_jump to %d\", p + mcnt - start);\n          break;\n\n\tcase dummy_failure_jump:\n          extract_number_and_incr (&mcnt, &p);\n  \t  printf (\"/dummy_failure_jump to %d\", p + mcnt - start);\n          break;\n\n\tcase push_dummy_failure:\n          printf (\"/push_dummy_failure\");\n          break;\n\n        case maybe_pop_jump:\n          extract_number_and_incr (&mcnt, &p);\n  \t  printf (\"/maybe_pop_jump to %d\", p + mcnt - start);\n\t  break;\n\n        case pop_failure_jump:\n\t  extract_number_and_incr (&mcnt, &p);\n  \t  printf (\"/pop_failure_jump to %d\", p + mcnt - start);\n\t  break;\n\n        case jump_past_alt:\n\t  extract_number_and_incr (&mcnt, &p);\n  \t  printf (\"/jump_past_alt to %d\", p + mcnt - start);\n\t  break;\n\n        case jump:\n\t  extract_number_and_incr (&mcnt, &p);\n  \t  printf (\"/jump to %d\", p + mcnt - start);\n\t  break;\n\n        case succeed_n:\n          extract_number_and_incr (&mcnt, &p);\n\t  p1 = p + mcnt;\n          extract_number_and_incr (&mcnt2, &p);\n\t  printf (\"/succeed_n to %d, %d times\", p1 - start, mcnt2);\n          break;\n\n        case jump_n:\n          extract_number_and_incr (&mcnt, &p);\n\t  p1 = p + mcnt;\n          extract_number_and_incr (&mcnt2, &p);\n\t  printf (\"/jump_n to %d, %d times\", p1 - start, mcnt2);\n          break;\n\n        case set_number_at:\n          extract_number_and_incr (&mcnt, &p);\n\t  p1 = p + mcnt;\n          extract_number_and_incr (&mcnt2, &p);\n\t  printf (\"/set_number_at location %d to %d\", p1 - start, mcnt2);\n          break;\n\n        case wordbound:\n\t  printf (\"/wordbound\");\n\t  break;\n\n\tcase notwordbound:\n\t  printf (\"/notwordbound\");\n          break;\n\n\tcase wordbeg:\n\t  printf (\"/wordbeg\");\n\t  break;\n\n\tcase wordend:\n\t  printf (\"/wordend\");\n\n#ifdef emacs\n\tcase before_dot:\n\t  printf (\"/before_dot\");\n          break;\n\n\tcase at_dot:\n\t  printf (\"/at_dot\");\n          break;\n\n\tcase after_dot:\n\t  printf (\"/after_dot\");\n          break;\n\n\tcase syntaxspec:\n          printf (\"/syntaxspec\");\n\t  mcnt = *p++;\n\t  printf (\"/%d\", mcnt);\n          break;\n\n\tcase notsyntaxspec:\n          printf (\"/notsyntaxspec\");\n\t  mcnt = *p++;\n\t  printf (\"/%d\", mcnt);\n\t  break;\n#endif /* emacs */\n\n\tcase wordchar:\n\t  printf (\"/wordchar\");\n          break;\n\n\tcase notwordchar:\n\t  printf (\"/notwordchar\");\n          break;\n\n\tcase begbuf:\n\t  printf (\"/begbuf\");\n          break;\n\n\tcase endbuf:\n\t  printf (\"/endbuf\");\n          break;\n\n        default:\n          printf (\"?%d\", *(p-1));\n\t}\n\n      putchar ('\\n');\n    }\n\n  printf (\"%d:\\tend of pattern.\\n\", p - start);\n}\n\n\nvoid\nprint_compiled_pattern (bufp)\n    struct re_pattern_buffer *bufp;\n{\n  unsigned char *buffer = bufp->buffer;\n\n  print_partial_compiled_pattern (buffer, buffer + bufp->used);\n  printf (\"%ld bytes used/%ld bytes allocated.\\n\",\n\t  bufp->used, bufp->allocated);\n\n  if (bufp->fastmap_accurate && bufp->fastmap)\n    {\n      printf (\"fastmap: \");\n      print_fastmap (bufp->fastmap);\n    }\n\n  printf (\"re_nsub: %d\\t\", bufp->re_nsub);\n  printf (\"regs_alloc: %d\\t\", bufp->regs_allocated);\n  printf (\"can_be_null: %d\\t\", bufp->can_be_null);\n  printf (\"newline_anchor: %d\\n\", bufp->newline_anchor);\n  printf (\"no_sub: %d\\t\", bufp->no_sub);\n  printf (\"not_bol: %d\\t\", bufp->not_bol);\n  printf (\"not_eol: %d\\t\", bufp->not_eol);\n  printf (\"syntax: %lx\\n\", bufp->syntax);\n  /* Perhaps we should print the translate table?  */\n}\n\n\nvoid\nprint_double_string (where, string1, size1, string2, size2)\n    const char *where;\n    const char *string1;\n    const char *string2;\n    int size1;\n    int size2;\n{\n  int this_char;\n\n  if (where == NULL)\n    printf (\"(null)\");\n  else\n    {\n      if (FIRST_STRING_P (where))\n        {\n          for (this_char = where - string1; this_char < size1; this_char++)\n            putchar (string1[this_char]);\n\n          where = string2;\n        }\n\n      for (this_char = where - string2; this_char < size2; this_char++)\n        putchar (string2[this_char]);\n    }\n}\n\nvoid\nprintchar (c)\n     int c;\n{\n  putc (c, stderr);\n}\n\n#else /* not DEBUG */\n\n#undef assert\n#define assert(e)\n\n#define DEBUG_STATEMENT(e)\n#define DEBUG_PRINT1(x)\n#define DEBUG_PRINT2(x1, x2)\n#define DEBUG_PRINT3(x1, x2, x3)\n#define DEBUG_PRINT4(x1, x2, x3, x4)\n#define DEBUG_PRINT_COMPILED_PATTERN(p, s, e)\n#define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2)\n\n#endif /* not DEBUG */\n\f\n/* Set by `re_set_syntax' to the current regexp syntax to recognize.  Can\n   also be assigned to arbitrarily: each pattern buffer stores its own\n   syntax, so it can be changed between regex compilations.  */\n/* This has no initializer because initialized variables in Emacs\n   become read-only after dumping.  */\nreg_syntax_t re_syntax_options;\n\n\n/* Specify the precise syntax of regexps for compilation.  This provides\n   for compatibility for various utilities which historically have\n   different, incompatible syntaxes.\n\n   The argument SYNTAX is a bit mask comprised of the various bits\n   defined in regex.h.  We return the old syntax.  */\n\nreg_syntax_t\nre_set_syntax (syntax)\n    reg_syntax_t syntax;\n{\n  reg_syntax_t ret = re_syntax_options;\n\n  re_syntax_options = syntax;\n#ifdef DEBUG\n  if (syntax & RE_DEBUG)\n    debug = 1;\n  else if (debug) /* was on but now is not */\n    debug = 0;\n#endif /* DEBUG */\n  return ret;\n}\n\f\n/* This table gives an error message for each of the error codes listed\n   in regex.h.  Obviously the order here has to be same as there.\n   POSIX doesn't require that we do anything for REG_NOERROR,\n   but why not be nice?  */\n\nstatic const char *re_error_msgid[] =\n  {\n    gettext_noop (\"Success\"),\t/* REG_NOERROR */\n    gettext_noop (\"No match\"),\t/* REG_NOMATCH */\n    gettext_noop (\"Invalid regular expression\"), /* REG_BADPAT */\n    gettext_noop (\"Invalid collation character\"), /* REG_ECOLLATE */\n    gettext_noop (\"Invalid character class name\"), /* REG_ECTYPE */\n    gettext_noop (\"Trailing backslash\"), /* REG_EESCAPE */\n    gettext_noop (\"Invalid back reference\"), /* REG_ESUBREG */\n    gettext_noop (\"Unmatched [ or [^\"),\t/* REG_EBRACK */\n    gettext_noop (\"Unmatched ( or \\\\(\"), /* REG_EPAREN */\n    gettext_noop (\"Unmatched \\\\{\"), /* REG_EBRACE */\n    gettext_noop (\"Invalid content of \\\\{\\\\}\"), /* REG_BADBR */\n    gettext_noop (\"Invalid range end\"),\t/* REG_ERANGE */\n    gettext_noop (\"Memory exhausted\"), /* REG_ESPACE */\n    gettext_noop (\"Invalid preceding regular expression\"), /* REG_BADRPT */\n    gettext_noop (\"Premature end of regular expression\"), /* REG_EEND */\n    gettext_noop (\"Regular expression too big\"), /* REG_ESIZE */\n    gettext_noop (\"Unmatched ) or \\\\)\"), /* REG_ERPAREN */\n  };\n\f\n/* Avoiding alloca during matching, to placate r_alloc.  */\n\n/* Define MATCH_MAY_ALLOCATE unless we need to make sure that the\n   searching and matching functions should not call alloca.  On some\n   systems, alloca is implemented in terms of malloc, and if we're\n   using the relocating allocator routines, then malloc could cause a\n   relocation, which might (if the strings being searched are in the\n   ralloc heap) shift the data out from underneath the regexp\n   routines.\n\n   Here's another reason to avoid allocation: Emacs\n   processes input from X in a signal handler; processing X input may\n   call malloc; if input arrives while a matching routine is calling\n   malloc, then we're scrod.  But Emacs can't just block input while\n   calling matching routines; then we don't notice interrupts when\n   they come in.  So, Emacs blocks input around all regexp calls\n   except the matching calls, which it leaves unprotected, in the\n   faith that they will not malloc.  */\n\n/* Normally, this is fine.  */\n#define MATCH_MAY_ALLOCATE\n\n/* When using GNU C, we are not REALLY using the C alloca, no matter\n   what config.h may say.  So don't take precautions for it.  */\n#ifdef __GNUC__\n#undef C_ALLOCA\n#endif\n\n/* The match routines may not allocate if (1) they would do it with malloc\n   and (2) it's not safe for them to use malloc.\n   Note that if REL_ALLOC is defined, matching would not use malloc for the\n   failure stack, but we would still use it for the register vectors;\n   so REL_ALLOC should not affect this.  */\n#if (defined (C_ALLOCA) || defined (REGEX_MALLOC)) && defined (emacs)\n#undef MATCH_MAY_ALLOCATE\n#endif\n\n\f\n/* Failure stack declarations and macros; both re_compile_fastmap and\n   re_match_2 use a failure stack.  These have to be macros because of\n   REGEX_ALLOCATE_STACK.  */\n\n\n/* Number of failure points for which to initially allocate space\n   when matching.  If this number is exceeded, we allocate more\n   space, so it is not a hard limit.  */\n#ifndef INIT_FAILURE_ALLOC\n#define INIT_FAILURE_ALLOC 5\n#endif\n\n/* Roughly the maximum number of failure points on the stack.  Would be\n   exactly that if always used MAX_FAILURE_ITEMS items each time we failed.\n   This is a variable only so users of regex can assign to it; we never\n   change it ourselves.  */\n\n#ifdef INT_IS_16BIT\n\n#if defined (MATCH_MAY_ALLOCATE)\n/* 4400 was enough to cause a crash on Alpha OSF/1,\n   whose default stack limit is 2mb.  */\nlong int re_max_failures = 4000;\n#else\nlong int re_max_failures = 2000;\n#endif\n\nunion fail_stack_elt\n{\n  unsigned char *pointer;\n  long int integer;\n};\n\ntypedef union fail_stack_elt fail_stack_elt_t;\n\ntypedef struct\n{\n  fail_stack_elt_t *stack;\n  unsigned long int size;\n  unsigned long int avail;\t\t/* Offset of next open position.  */\n} fail_stack_type;\n\n#else /* not INT_IS_16BIT */\n\n#if defined (MATCH_MAY_ALLOCATE)\n/* 4400 was enough to cause a crash on Alpha OSF/1,\n   whose default stack limit is 2mb.  */\nint re_max_failures = 20000;\n#else\nint re_max_failures = 2000;\n#endif\n\nunion fail_stack_elt\n{\n  unsigned char *pointer;\n  int integer;\n};\n\ntypedef union fail_stack_elt fail_stack_elt_t;\n\ntypedef struct\n{\n  fail_stack_elt_t *stack;\n  unsigned size;\n  unsigned avail;\t\t\t/* Offset of next open position.  */\n} fail_stack_type;\n\n#endif /* INT_IS_16BIT */\n\n#define FAIL_STACK_EMPTY()     (fail_stack.avail == 0)\n#define FAIL_STACK_PTR_EMPTY() (fail_stack_ptr->avail == 0)\n#define FAIL_STACK_FULL()      (fail_stack.avail == fail_stack.size)\n\n\n/* Define macros to initialize and free the failure stack.\n   Do `return -2' if the alloc fails.  */\n\n#ifdef MATCH_MAY_ALLOCATE\n#define INIT_FAIL_STACK()\t\t\t\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    fail_stack.stack = (fail_stack_elt_t *)\t\t\t\t\\\n      REGEX_ALLOCATE_STACK (INIT_FAILURE_ALLOC * sizeof (fail_stack_elt_t));\t\\\n\t\t\t\t\t\t\t\t\t\\\n    if (fail_stack.stack == NULL)\t\t\t\t\t\\\n      return -2;\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    fail_stack.size = INIT_FAILURE_ALLOC;\t\t\t\t\\\n    fail_stack.avail = 0;\t\t\t\t\t\t\\\n  } while (0)\n\n#define RESET_FAIL_STACK()  REGEX_FREE_STACK (fail_stack.stack)\n#else\n#define INIT_FAIL_STACK()\t\t\t\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    fail_stack.avail = 0;\t\t\t\t\t\t\\\n  } while (0)\n\n#define RESET_FAIL_STACK()\n#endif\n\n\n/* Double the size of FAIL_STACK, up to approximately `re_max_failures' items.\n\n   Return 1 if succeeds, and 0 if either ran out of memory\n   allocating space for it or it was already too large.\n\n   REGEX_REALLOCATE_STACK requires `destination' be declared.   */\n\n#define DOUBLE_FAIL_STACK(fail_stack)\t\t\t\t\t\\\n  ((fail_stack).size > (unsigned) (re_max_failures * MAX_FAILURE_ITEMS)\t\\\n   ? 0\t\t\t\t\t\t\t\t\t\\\n   : ((fail_stack).stack = (fail_stack_elt_t *)\t\t\t\t\\\n        REGEX_REALLOCATE_STACK ((fail_stack).stack, \t\t\t\\\n          (fail_stack).size * sizeof (fail_stack_elt_t),\t\t\\\n          ((fail_stack).size << 1) * sizeof (fail_stack_elt_t)),\t\\\n\t\t\t\t\t\t\t\t\t\\\n      (fail_stack).stack == NULL\t\t\t\t\t\\\n      ? 0\t\t\t\t\t\t\t\t\\\n      : ((fail_stack).size <<= 1, \t\t\t\t\t\\\n         1)))\n\n\n/* Push pointer POINTER on FAIL_STACK.\n   Return 1 if was able to do so and 0 if ran out of memory allocating\n   space to do so.  */\n#define PUSH_PATTERN_OP(POINTER, FAIL_STACK)\t\t\t\t\\\n  ((FAIL_STACK_FULL ()\t\t\t\t\t\t\t\\\n    && !DOUBLE_FAIL_STACK (FAIL_STACK))\t\t\t\t\t\\\n   ? 0\t\t\t\t\t\t\t\t\t\\\n   : ((FAIL_STACK).stack[(FAIL_STACK).avail++].pointer = POINTER,\t\\\n      1))\n\n/* Push a pointer value onto the failure stack.\n   Assumes the variable `fail_stack'.  Probably should only\n   be called from within `PUSH_FAILURE_POINT'.  */\n#define PUSH_FAILURE_POINTER(item)\t\t\t\t\t\\\n  fail_stack.stack[fail_stack.avail++].pointer = (unsigned char *) (item)\n\n/* This pushes an integer-valued item onto the failure stack.\n   Assumes the variable `fail_stack'.  Probably should only\n   be called from within `PUSH_FAILURE_POINT'.  */\n#define PUSH_FAILURE_INT(item)\t\t\t\t\t\\\n  fail_stack.stack[fail_stack.avail++].integer = (item)\n\n/* Push a fail_stack_elt_t value onto the failure stack.\n   Assumes the variable `fail_stack'.  Probably should only\n   be called from within `PUSH_FAILURE_POINT'.  */\n#define PUSH_FAILURE_ELT(item)\t\t\t\t\t\\\n  fail_stack.stack[fail_stack.avail++] =  (item)\n\n/* These three POP... operations complement the three PUSH... operations.\n   All assume that `fail_stack' is nonempty.  */\n#define POP_FAILURE_POINTER() fail_stack.stack[--fail_stack.avail].pointer\n#define POP_FAILURE_INT() fail_stack.stack[--fail_stack.avail].integer\n#define POP_FAILURE_ELT() fail_stack.stack[--fail_stack.avail]\n\n/* Used to omit pushing failure point id's when we're not debugging.  */\n#ifdef DEBUG\n#define DEBUG_PUSH PUSH_FAILURE_INT\n#define DEBUG_POP(item_addr) (item_addr)->integer = POP_FAILURE_INT ()\n#else\n#define DEBUG_PUSH(item)\n#define DEBUG_POP(item_addr)\n#endif\n\n\n/* Push the information about the state we will need\n   if we ever fail back to it.\n\n   Requires variables fail_stack, regstart, regend, reg_info, and\n   num_regs be declared.  DOUBLE_FAIL_STACK requires `destination' be\n   declared.\n\n   Does `return FAILURE_CODE' if runs out of memory.  */\n\n#define PUSH_FAILURE_POINT(pattern_place, string_place, failure_code)\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    char *destination;\t\t\t\t\t\t\t\\\n    /* Must be int, so when we don't save any registers, the arithmetic\t\\\n       of 0 + -1 isn't done as unsigned.  */\t\t\t\t\\\n    /* Can't be int, since there is not a shred of a guarantee that int\t\\\n       is wide enough to hold a value of something to which pointer can\t\\\n       be assigned */\t\t\t\t\t\t\t\\\n    s_reg_t this_reg;\t\t\t\t\t\t\t\\\n    \t\t\t\t\t\t\t\t\t\\\n    DEBUG_STATEMENT (failure_id++);\t\t\t\t\t\\\n    DEBUG_STATEMENT (nfailure_points_pushed++);\t\t\t\t\\\n    DEBUG_PRINT2 (\"\\nPUSH_FAILURE_POINT #%u:\\n\", failure_id);\t\t\\\n    DEBUG_PRINT2 (\"  Before push, next avail: %d\\n\", (fail_stack).avail);\\\n    DEBUG_PRINT2 (\"                     size: %d\\n\", (fail_stack).size);\\\n\t\t\t\t\t\t\t\t\t\\\n    DEBUG_PRINT2 (\"  slots needed: %d\\n\", NUM_FAILURE_ITEMS);\t\t\\\n    DEBUG_PRINT2 (\"     available: %d\\n\", REMAINING_AVAIL_SLOTS);\t\\\n\t\t\t\t\t\t\t\t\t\\\n    /* Ensure we have enough space allocated for what we will push.  */\t\\\n    while (REMAINING_AVAIL_SLOTS < NUM_FAILURE_ITEMS)\t\t\t\\\n      {\t\t\t\t\t\t\t\t\t\\\n        if (!DOUBLE_FAIL_STACK (fail_stack))\t\t\t\t\\\n          return failure_code;\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n        DEBUG_PRINT2 (\"\\n  Doubled stack; size now: %d\\n\",\t\t\\\n\t\t       (fail_stack).size);\t\t\t\t\\\n        DEBUG_PRINT2 (\"  slots available: %d\\n\", REMAINING_AVAIL_SLOTS);\\\n      }\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    /* Push the info, starting with the registers.  */\t\t\t\\\n    DEBUG_PRINT1 (\"\\n\");\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    if (1)\t\t\t\t\t\t\t\t\\\n      for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \\\n\t   this_reg++)\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\\\n\t  DEBUG_PRINT2 (\"  Pushing reg: %d\\n\", this_reg);\t\t\\\n\t  DEBUG_STATEMENT (num_regs_pushed++);\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t  DEBUG_PRINT2 (\"    start: 0x%x\\n\", regstart[this_reg]);\t\\\n\t  PUSH_FAILURE_POINTER (regstart[this_reg]);\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t  DEBUG_PRINT2 (\"    end: 0x%x\\n\", regend[this_reg]);\t\t\\\n\t  PUSH_FAILURE_POINTER (regend[this_reg]);\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t  DEBUG_PRINT2 (\"    info: 0x%x\\n      \", reg_info[this_reg]);\t\\\n\t  DEBUG_PRINT2 (\" match_null=%d\",\t\t\t\t\\\n\t\t\tREG_MATCH_NULL_STRING_P (reg_info[this_reg]));\t\\\n\t  DEBUG_PRINT2 (\" active=%d\", IS_ACTIVE (reg_info[this_reg]));\t\\\n\t  DEBUG_PRINT2 (\" matched_something=%d\",\t\t\t\\\n\t\t\tMATCHED_SOMETHING (reg_info[this_reg]));\t\\\n\t  DEBUG_PRINT2 (\" ever_matched=%d\",\t\t\t\t\\\n\t\t\tEVER_MATCHED_SOMETHING (reg_info[this_reg]));\t\\\n\t  DEBUG_PRINT1 (\"\\n\");\t\t\t\t\t\t\\\n\t  PUSH_FAILURE_ELT (reg_info[this_reg].word);\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    DEBUG_PRINT2 (\"  Pushing  low active reg: %d\\n\", lowest_active_reg);\\\n    PUSH_FAILURE_INT (lowest_active_reg);\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    DEBUG_PRINT2 (\"  Pushing high active reg: %d\\n\", highest_active_reg);\\\n    PUSH_FAILURE_INT (highest_active_reg);\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    DEBUG_PRINT2 (\"  Pushing pattern 0x%x:\\n\", pattern_place);\t\t\\\n    DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend);\t\t\\\n    PUSH_FAILURE_POINTER (pattern_place);\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    DEBUG_PRINT2 (\"  Pushing string 0x%x: `\", string_place);\t\t\\\n    DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2,   \\\n\t\t\t\t size2);\t\t\t\t\\\n    DEBUG_PRINT1 (\"'\\n\");\t\t\t\t\t\t\\\n    PUSH_FAILURE_POINTER (string_place);\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    DEBUG_PRINT2 (\"  Pushing failure id: %u\\n\", failure_id);\t\t\\\n    DEBUG_PUSH (failure_id);\t\t\t\t\t\t\\\n  } while (0)\n\n/* This is the number of items that are pushed and popped on the stack\n   for each register.  */\n#define NUM_REG_ITEMS  3\n\n/* Individual items aside from the registers.  */\n#ifdef DEBUG\n#define NUM_NONREG_ITEMS 5 /* Includes failure point id.  */\n#else\n#define NUM_NONREG_ITEMS 4\n#endif\n\n/* We push at most this many items on the stack.  */\n/* We used to use (num_regs - 1), which is the number of registers\n   this regexp will save; but that was changed to 5\n   to avoid stack overflow for a regexp with lots of parens.  */\n#define MAX_FAILURE_ITEMS (5 * NUM_REG_ITEMS + NUM_NONREG_ITEMS)\n\n/* We actually push this many items.  */\n#define NUM_FAILURE_ITEMS\t\t\t\t\\\n  (((0\t\t\t\t\t\t\t\\\n     ? 0 : highest_active_reg - lowest_active_reg + 1)\t\\\n    * NUM_REG_ITEMS)\t\t\t\t\t\\\n   + NUM_NONREG_ITEMS)\n\n/* How many items can still be added to the stack without overflowing it.  */\n#define REMAINING_AVAIL_SLOTS ((fail_stack).size - (fail_stack).avail)\n\n\n/* Pops what PUSH_FAIL_STACK pushes.\n\n   We restore into the parameters, all of which should be lvalues:\n     STR -- the saved data position.\n     PAT -- the saved pattern position.\n     LOW_REG, HIGH_REG -- the highest and lowest active registers.\n     REGSTART, REGEND -- arrays of string positions.\n     REG_INFO -- array of information about each subexpression.\n\n   Also assumes the variables `fail_stack' and (if debugging), `bufp',\n   `pend', `string1', `size1', `string2', and `size2'.  */\n\n#define POP_FAILURE_POINT(str, pat, low_reg, high_reg, regstart, regend, reg_info)\\\n{\t\t\t\t\t\t\t\t\t\\\n  DEBUG_STATEMENT (fail_stack_elt_t failure_id;)\t\t\t\\\n  s_reg_t this_reg;\t\t\t\t\t\t\t\\\n  const unsigned char *string_temp;\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  assert (!FAIL_STACK_EMPTY ());\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  /* Remove failure points and point to how many regs pushed.  */\t\\\n  DEBUG_PRINT1 (\"POP_FAILURE_POINT:\\n\");\t\t\t\t\\\n  DEBUG_PRINT2 (\"  Before pop, next avail: %d\\n\", fail_stack.avail);\t\\\n  DEBUG_PRINT2 (\"                    size: %d\\n\", fail_stack.size);\t\\\n\t\t\t\t\t\t\t\t\t\\\n  assert (fail_stack.avail >= NUM_NONREG_ITEMS);\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  DEBUG_POP (&failure_id);\t\t\t\t\t\t\\\n  DEBUG_PRINT2 (\"  Popping failure id: %u\\n\", failure_id);\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  /* If the saved string location is NULL, it came from an\t\t\\\n     on_failure_keep_string_jump opcode, and we want to throw away the\t\\\n     saved NULL, thus retaining our current position in the string.  */\t\\\n  string_temp = POP_FAILURE_POINTER ();\t\t\t\t\t\\\n  if (string_temp != NULL)\t\t\t\t\t\t\\\n    str = (const char *) string_temp;\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  DEBUG_PRINT2 (\"  Popping string 0x%x: `\", str);\t\t\t\\\n  DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2);\t\\\n  DEBUG_PRINT1 (\"'\\n\");\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  pat = (unsigned char *) POP_FAILURE_POINTER ();\t\t\t\\\n  DEBUG_PRINT2 (\"  Popping pattern 0x%x:\\n\", pat);\t\t\t\\\n  DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend);\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  /* Restore register info.  */\t\t\t\t\t\t\\\n  high_reg = (active_reg_t) POP_FAILURE_INT ();\t\t\t\t\\\n  DEBUG_PRINT2 (\"  Popping high active reg: %d\\n\", high_reg);\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  low_reg = (active_reg_t) POP_FAILURE_INT ();\t\t\t\t\\\n  DEBUG_PRINT2 (\"  Popping  low active reg: %d\\n\", low_reg);\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  if (1)\t\t\t\t\t\t\t\t\\\n    for (this_reg = high_reg; this_reg >= low_reg; this_reg--)\t\t\\\n      {\t\t\t\t\t\t\t\t\t\\\n\tDEBUG_PRINT2 (\"    Popping reg: %d\\n\", this_reg);\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\treg_info[this_reg].word = POP_FAILURE_ELT ();\t\t\t\\\n\tDEBUG_PRINT2 (\"      info: 0x%x\\n\", reg_info[this_reg]);\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tregend[this_reg] = (const char *) POP_FAILURE_POINTER ();\t\\\n\tDEBUG_PRINT2 (\"      end: 0x%x\\n\", regend[this_reg]);\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tregstart[this_reg] = (const char *) POP_FAILURE_POINTER ();\t\\\n\tDEBUG_PRINT2 (\"      start: 0x%x\\n\", regstart[this_reg]);\t\\\n      }\t\t\t\t\t\t\t\t\t\\\n  else\t\t\t\t\t\t\t\t\t\\\n    {\t\t\t\t\t\t\t\t\t\\\n      for (this_reg = highest_active_reg; this_reg > high_reg; this_reg--) \\\n\t{\t\t\t\t\t\t\t\t\\\n\t  reg_info[this_reg].word.integer = 0;\t\t\t\t\\\n\t  regend[this_reg] = 0;\t\t\t\t\t\t\\\n\t  regstart[this_reg] = 0;\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\\\n      highest_active_reg = high_reg;\t\t\t\t\t\\\n    }\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n  set_regs_matched_done = 0;\t\t\t\t\t\t\\\n  DEBUG_STATEMENT (nfailure_points_popped++);\t\t\t\t\\\n} /* POP_FAILURE_POINT */\n\n\n\f\n/* Structure for per-register (a.k.a. per-group) information.\n   Other register information, such as the\n   starting and ending positions (which are addresses), and the list of\n   inner groups (which is a bits list) are maintained in separate\n   variables.\n\n   We are making a (strictly speaking) nonportable assumption here: that\n   the compiler will pack our bit fields into something that fits into\n   the type of `word', i.e., is something that fits into one item on the\n   failure stack.  */\n\n\n/* Declarations and macros for re_match_2.  */\n\ntypedef union\n{\n  fail_stack_elt_t word;\n  struct\n  {\n      /* This field is one if this group can match the empty string,\n         zero if not.  If not yet determined,  `MATCH_NULL_UNSET_VALUE'.  */\n#define MATCH_NULL_UNSET_VALUE 3\n    unsigned match_null_string_p : 2;\n    unsigned is_active : 1;\n    unsigned matched_something : 1;\n    unsigned ever_matched_something : 1;\n  } bits;\n} register_info_type;\n\n#define REG_MATCH_NULL_STRING_P(R)  ((R).bits.match_null_string_p)\n#define IS_ACTIVE(R)  ((R).bits.is_active)\n#define MATCHED_SOMETHING(R)  ((R).bits.matched_something)\n#define EVER_MATCHED_SOMETHING(R)  ((R).bits.ever_matched_something)\n\n\n/* Call this when have matched a real character; it sets `matched' flags\n   for the subexpressions which we are currently inside.  Also records\n   that those subexprs have matched.  */\n#define SET_REGS_MATCHED()\t\t\t\t\t\t\\\n  do\t\t\t\t\t\t\t\t\t\\\n    {\t\t\t\t\t\t\t\t\t\\\n      if (!set_regs_matched_done)\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\\\n\t  active_reg_t r;\t\t\t\t\t\t\\\n\t  set_regs_matched_done = 1;\t\t\t\t\t\\\n\t  for (r = lowest_active_reg; r <= highest_active_reg; r++)\t\\\n\t    {\t\t\t\t\t\t\t\t\\\n\t      MATCHED_SOMETHING (reg_info[r])\t\t\t\t\\\n\t\t= EVER_MATCHED_SOMETHING (reg_info[r])\t\t\t\\\n\t\t= 1;\t\t\t\t\t\t\t\\\n\t    }\t\t\t\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\\\n    }\t\t\t\t\t\t\t\t\t\\\n  while (0)\n\n/* Registers are set to a sentinel when they haven't yet matched.  */\nstatic char reg_unset_dummy;\n#define REG_UNSET_VALUE (&reg_unset_dummy)\n#define REG_UNSET(e) ((e) == REG_UNSET_VALUE)\n\f\n/* Subroutine declarations and macros for regex_compile.  */\n\nstatic reg_errcode_t regex_compile _RE_ARGS ((const char *pattern, size_t size,\n\t\t\t\t\t      reg_syntax_t syntax,\n\t\t\t\t\t      struct re_pattern_buffer *bufp));\nstatic void store_op1 _RE_ARGS ((re_opcode_t op, unsigned char *loc, int arg));\nstatic void store_op2 _RE_ARGS ((re_opcode_t op, unsigned char *loc,\n\t\t\t\t int arg1, int arg2));\nstatic void insert_op1 _RE_ARGS ((re_opcode_t op, unsigned char *loc,\n\t\t\t\t  int arg, unsigned char *end));\nstatic void insert_op2 _RE_ARGS ((re_opcode_t op, unsigned char *loc,\n\t\t\t\t  int arg1, int arg2, unsigned char *end));\nstatic boolean at_begline_loc_p _RE_ARGS ((const char *pattern, const char *p,\n\t\t\t\t\t   reg_syntax_t syntax));\nstatic boolean at_endline_loc_p _RE_ARGS ((const char *p, const char *pend,\n\t\t\t\t\t   reg_syntax_t syntax));\nstatic reg_errcode_t compile_range _RE_ARGS ((const char **p_ptr,\n\t\t\t\t\t      const char *pend,\n\t\t\t\t\t      char *translate,\n\t\t\t\t\t      reg_syntax_t syntax,\n\t\t\t\t\t      unsigned char *b));\n\n/* Fetch the next character in the uncompiled pattern---translating it\n   if necessary.  Also cast from a signed character in the constant\n   string passed to us by the user to an unsigned char that we can use\n   as an array index (in, e.g., `translate').  */\n#ifndef PATFETCH\n#define PATFETCH(c)\t\t\t\t\t\t\t\\\n  do {if (p == pend) return REG_EEND;\t\t\t\t\t\\\n    c = (unsigned char) *p++;\t\t\t\t\t\t\\\n    if (translate) c = (unsigned char) translate[c];\t\t\t\\\n  } while (0)\n#endif\n\n/* Fetch the next character in the uncompiled pattern, with no\n   translation.  */\n#define PATFETCH_RAW(c)\t\t\t\t\t\t\t\\\n  do {if (p == pend) return REG_EEND;\t\t\t\t\t\\\n    c = (unsigned char) *p++; \t\t\t\t\t\t\\\n  } while (0)\n\n/* Go backwards one character in the pattern.  */\n#define PATUNFETCH p--\n\n\n/* If `translate' is non-null, return translate[D], else just D.  We\n   cast the subscript to translate because some data is declared as\n   `char *', to avoid warnings when a string constant is passed.  But\n   when we use a character as a subscript we must make it unsigned.  */\n#ifndef TRANSLATE\n#define TRANSLATE(d) \\\n  (translate ? (char) translate[(unsigned char) (d)] : (d))\n#endif\n\n\n/* Macros for outputting the compiled pattern into `buffer'.  */\n\n/* If the buffer isn't allocated when it comes in, use this.  */\n#define INIT_BUF_SIZE  32\n\n/* Make sure we have at least N more bytes of space in buffer.  */\n#define GET_BUFFER_SPACE(n)\t\t\t\t\t\t\\\n    while ((unsigned long) (b - bufp->buffer + (n)) > bufp->allocated)\t\\\n      EXTEND_BUFFER ()\n\n/* Make sure we have one more byte of buffer space and then add C to it.  */\n#define BUF_PUSH(c)\t\t\t\t\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    GET_BUFFER_SPACE (1);\t\t\t\t\t\t\\\n    *b++ = (unsigned char) (c);\t\t\t\t\t\t\\\n  } while (0)\n\n\n/* Ensure we have two more bytes of buffer space and then append C1 and C2.  */\n#define BUF_PUSH_2(c1, c2)\t\t\t\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    GET_BUFFER_SPACE (2);\t\t\t\t\t\t\\\n    *b++ = (unsigned char) (c1);\t\t\t\t\t\\\n    *b++ = (unsigned char) (c2);\t\t\t\t\t\\\n  } while (0)\n\n\n/* As with BUF_PUSH_2, except for three bytes.  */\n#define BUF_PUSH_3(c1, c2, c3)\t\t\t\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    GET_BUFFER_SPACE (3);\t\t\t\t\t\t\\\n    *b++ = (unsigned char) (c1);\t\t\t\t\t\\\n    *b++ = (unsigned char) (c2);\t\t\t\t\t\\\n    *b++ = (unsigned char) (c3);\t\t\t\t\t\\\n  } while (0)\n\n\n/* Store a jump with opcode OP at LOC to location TO.  We store a\n   relative address offset by the three bytes the jump itself occupies.  */\n#define STORE_JUMP(op, loc, to) \\\n  store_op1 (op, loc, (int) ((to) - (loc) - 3))\n\n/* Likewise, for a two-argument jump.  */\n#define STORE_JUMP2(op, loc, to, arg) \\\n  store_op2 (op, loc, (int) ((to) - (loc) - 3), arg)\n\n/* Like `STORE_JUMP', but for inserting.  Assume `b' is the buffer end.  */\n#define INSERT_JUMP(op, loc, to) \\\n  insert_op1 (op, loc, (int) ((to) - (loc) - 3), b)\n\n/* Like `STORE_JUMP2', but for inserting.  Assume `b' is the buffer end.  */\n#define INSERT_JUMP2(op, loc, to, arg) \\\n  insert_op2 (op, loc, (int) ((to) - (loc) - 3), arg, b)\n\n\n/* This is not an arbitrary limit: the arguments which represent offsets\n   into the pattern are two bytes long.  So if 2^16 bytes turns out to\n   be too small, many things would have to change.  */\n/* Any other compiler which, like MSC, has allocation limit below 2^16\n   bytes will have to use approach similar to what was done below for\n   MSC and drop MAX_BUF_SIZE a bit.  Otherwise you may end up\n   reallocating to 0 bytes.  Such thing is not going to work too well.\n   You have been warned!!  */\n#if defined(_MSC_VER)  && !defined(WIN32)\n/* Microsoft C 16-bit versions limit malloc to approx 65512 bytes.\n   The REALLOC define eliminates a flurry of conversion warnings,\n   but is not required. */\n#define MAX_BUF_SIZE  65500L\n#define REALLOC(p,s) realloc ((p), (size_t) (s))\n#else\n#define MAX_BUF_SIZE (1L << 16)\n#define REALLOC(p,s) realloc ((p), (s))\n#endif\n\n/* Extend the buffer by twice its current size via realloc and\n   reset the pointers that pointed into the old block to point to the\n   correct places in the new one.  If extending the buffer results in it\n   being larger than MAX_BUF_SIZE, then flag memory exhausted.  */\n#define EXTEND_BUFFER()\t\t\t\t\t\t\t\\\n  do { \t\t\t\t\t\t\t\t\t\\\n    unsigned char *old_buffer = bufp->buffer;\t\t\t\t\\\n    if (bufp->allocated == MAX_BUF_SIZE) \t\t\t\t\\\n      return REG_ESIZE;\t\t\t\t\t\t\t\\\n    bufp->allocated <<= 1;\t\t\t\t\t\t\\\n    if (bufp->allocated > MAX_BUF_SIZE)\t\t\t\t\t\\\n      bufp->allocated = MAX_BUF_SIZE; \t\t\t\t\t\\\n    bufp->buffer = (unsigned char *) REALLOC (bufp->buffer, bufp->allocated);\\\n    if (bufp->buffer == NULL)\t\t\t\t\t\t\\\n      return REG_ESPACE;\t\t\t\t\t\t\\\n    /* If the buffer moved, move all the pointers into it.  */\t\t\\\n    if (old_buffer != bufp->buffer)\t\t\t\t\t\\\n      {\t\t\t\t\t\t\t\t\t\\\n        b = (b - old_buffer) + bufp->buffer;\t\t\t\t\\\n        begalt = (begalt - old_buffer) + bufp->buffer;\t\t\t\\\n        if (fixup_alt_jump)\t\t\t\t\t\t\\\n          fixup_alt_jump = (fixup_alt_jump - old_buffer) + bufp->buffer;\\\n        if (laststart)\t\t\t\t\t\t\t\\\n          laststart = (laststart - old_buffer) + bufp->buffer;\t\t\\\n        if (pending_exact)\t\t\t\t\t\t\\\n          pending_exact = (pending_exact - old_buffer) + bufp->buffer;\t\\\n      }\t\t\t\t\t\t\t\t\t\\\n  } while (0)\n\n\n/* Since we have one byte reserved for the register number argument to\n   {start,stop}_memory, the maximum number of groups we can report\n   things about is what fits in that byte.  */\n#define MAX_REGNUM 255\n\n/* But patterns can have more than `MAX_REGNUM' registers.  We just\n   ignore the excess.  */\ntypedef unsigned regnum_t;\n\n\n/* Macros for the compile stack.  */\n\n/* Since offsets can go either forwards or backwards, this type needs to\n   be able to hold values from -(MAX_BUF_SIZE - 1) to MAX_BUF_SIZE - 1.  */\n/* int may be not enough when sizeof(int) == 2.  */\ntypedef long pattern_offset_t;\n\ntypedef struct\n{\n  pattern_offset_t begalt_offset;\n  pattern_offset_t fixup_alt_jump;\n  pattern_offset_t inner_group_offset;\n  pattern_offset_t laststart_offset;\n  regnum_t regnum;\n} compile_stack_elt_t;\n\n\ntypedef struct\n{\n  compile_stack_elt_t *stack;\n  unsigned size;\n  unsigned avail;\t\t\t/* Offset of next open position.  */\n} compile_stack_type;\n\n\n#define INIT_COMPILE_STACK_SIZE 32\n\n#define COMPILE_STACK_EMPTY  (compile_stack.avail == 0)\n#define COMPILE_STACK_FULL  (compile_stack.avail == compile_stack.size)\n\n/* The next available element.  */\n#define COMPILE_STACK_TOP (compile_stack.stack[compile_stack.avail])\n\n\n/* Set the bit for character C in a list.  */\n#define SET_LIST_BIT(c)                               \\\n  (b[((unsigned char) (c)) / BYTEWIDTH]               \\\n   |= 1 << (((unsigned char) c) % BYTEWIDTH))\n\n\n/* Get the next unsigned number in the uncompiled pattern.  */\n#define GET_UNSIGNED_NUMBER(num) \t\t\t\t\t\\\n  { if (p != pend)\t\t\t\t\t\t\t\\\n     {\t\t\t\t\t\t\t\t\t\\\n       PATFETCH (c); \t\t\t\t\t\t\t\\\n       while (ISDIGIT (c)) \t\t\t\t\t\t\\\n         { \t\t\t\t\t\t\t\t\\\n           if (num < 0)\t\t\t\t\t\t\t\\\n              num = 0;\t\t\t\t\t\t\t\\\n           num = num * 10 + c - '0'; \t\t\t\t\t\\\n           if (p == pend) \t\t\t\t\t\t\\\n              break; \t\t\t\t\t\t\t\\\n           PATFETCH (c);\t\t\t\t\t\t\\\n         } \t\t\t\t\t\t\t\t\\\n       } \t\t\t\t\t\t\t\t\\\n    }\n\n#if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H)\n/* The GNU C library provides support for user-defined character classes\n   and the functions from ISO C amendment 1.  */\n# ifdef CHARCLASS_NAME_MAX\n#  define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX\n# else\n/* This shouldn't happen but some implementation might still have this\n   problem.  Use a reasonable default value.  */\n#  define CHAR_CLASS_MAX_LENGTH 256\n# endif\n\n# define IS_CHAR_CLASS(string) wctype (string)\n#else\n# define CHAR_CLASS_MAX_LENGTH  6 /* Namely, `xdigit'.  */\n\n# define IS_CHAR_CLASS(string)\t\t\t\t\t\t\\\n   (STREQ (string, \"alpha\") || STREQ (string, \"upper\")\t\t\t\\\n    || STREQ (string, \"lower\") || STREQ (string, \"digit\")\t\t\\\n    || STREQ (string, \"alnum\") || STREQ (string, \"xdigit\")\t\t\\\n    || STREQ (string, \"space\") || STREQ (string, \"print\")\t\t\\\n    || STREQ (string, \"punct\") || STREQ (string, \"graph\")\t\t\\\n    || STREQ (string, \"cntrl\") || STREQ (string, \"blank\"))\n#endif\n\f\n#ifndef MATCH_MAY_ALLOCATE\n\n/* If we cannot allocate large objects within re_match_2_internal,\n   we make the fail stack and register vectors global.\n   The fail stack, we grow to the maximum size when a regexp\n   is compiled.\n   The register vectors, we adjust in size each time we\n   compile a regexp, according to the number of registers it needs.  */\n\nstatic fail_stack_type fail_stack;\n\n/* Size with which the following vectors are currently allocated.\n   That is so we can make them bigger as needed,\n   but never make them smaller.  */\nstatic int regs_allocated_size;\n\nstatic const char **     regstart, **     regend;\nstatic const char ** old_regstart, ** old_regend;\nstatic const char **best_regstart, **best_regend;\nstatic register_info_type *reg_info;\nstatic const char **reg_dummy;\nstatic register_info_type *reg_info_dummy;\n\n/* Make the register vectors big enough for NUM_REGS registers,\n   but don't make them smaller.  */\n\nstatic\nregex_grow_registers (num_regs)\n     int num_regs;\n{\n  if (num_regs > regs_allocated_size)\n    {\n      RETALLOC_IF (regstart,\t num_regs, const char *);\n      RETALLOC_IF (regend,\t num_regs, const char *);\n      RETALLOC_IF (old_regstart, num_regs, const char *);\n      RETALLOC_IF (old_regend,\t num_regs, const char *);\n      RETALLOC_IF (best_regstart, num_regs, const char *);\n      RETALLOC_IF (best_regend,\t num_regs, const char *);\n      RETALLOC_IF (reg_info,\t num_regs, register_info_type);\n      RETALLOC_IF (reg_dummy,\t num_regs, const char *);\n      RETALLOC_IF (reg_info_dummy, num_regs, register_info_type);\n\n      regs_allocated_size = num_regs;\n    }\n}\n\n#endif /* not MATCH_MAY_ALLOCATE */\n\f\nstatic boolean group_in_compile_stack _RE_ARGS ((compile_stack_type\n\t\t\t\t\t\t compile_stack,\n\t\t\t\t\t\t regnum_t regnum));\n\n/* `regex_compile' compiles PATTERN (of length SIZE) according to SYNTAX.\n   Returns one of error codes defined in `regex.h', or zero for success.\n\n   Assumes the `allocated' (and perhaps `buffer') and `translate'\n   fields are set in BUFP on entry.\n\n   If it succeeds, results are put in BUFP (if it returns an error, the\n   contents of BUFP are undefined):\n     `buffer' is the compiled pattern;\n     `syntax' is set to SYNTAX;\n     `used' is set to the length of the compiled pattern;\n     `fastmap_accurate' is zero;\n     `re_nsub' is the number of subexpressions in PATTERN;\n     `not_bol' and `not_eol' are zero;\n\n   The `fastmap' and `newline_anchor' fields are neither\n   examined nor set.  */\n\n/* Return, freeing storage we allocated.  */\n#define FREE_STACK_RETURN(value)\t\t\\\n  return (free (compile_stack.stack), value)\t\t/* __MEM_CHECKED__ */\n\nstatic reg_errcode_t\nregex_compile (pattern, size, syntax, bufp)\n     const char *pattern;\n     size_t size;\n     reg_syntax_t syntax;\n     struct re_pattern_buffer *bufp;\n{\n  /* We fetch characters from PATTERN here.  Even though PATTERN is\n     `char *' (i.e., signed), we declare these variables as unsigned, so\n     they can be reliably used as array indices.  */\n  register unsigned char c, c1;\n\n  /* A random temporary spot in PATTERN.  */\n  const char *p1;\n\n  /* Points to the end of the buffer, where we should append.  */\n  register unsigned char *b;\n\n  /* Keeps track of unclosed groups.  */\n  compile_stack_type compile_stack;\n\n  /* Points to the current (ending) position in the pattern.  */\n  const char *p = pattern;\n  const char *pend = pattern + size;\n\n  /* How to translate the characters in the pattern.  */\n  RE_TRANSLATE_TYPE translate = bufp->translate;\n\n  /* Address of the count-byte of the most recently inserted `exactn'\n     command.  This makes it possible to tell if a new exact-match\n     character can be added to that command or if the character requires\n     a new `exactn' command.  */\n  unsigned char *pending_exact = 0;\n\n  /* Address of start of the most recently finished expression.\n     This tells, e.g., postfix * where to find the start of its\n     operand.  Reset at the beginning of groups and alternatives.  */\n  unsigned char *laststart = 0;\n\n  /* Address of beginning of regexp, or inside of last group.  */\n  unsigned char *begalt;\n\n  /* Place in the uncompiled pattern (i.e., the {) to\n     which to go back if the interval is invalid.  */\n  const char *beg_interval;\n\n  /* Address of the place where a forward jump should go to the end of\n     the containing expression.  Each alternative of an `or' -- except the\n     last -- ends with a forward jump of this sort.  */\n  unsigned char *fixup_alt_jump = 0;\n\n  /* Counts open-groups as they are encountered.  Remembered for the\n     matching close-group on the compile stack, so the same register\n     number is put in the stop_memory as the start_memory.  */\n  regnum_t regnum = 0;\n\n#ifdef DEBUG\n  DEBUG_PRINT1 (\"\\nCompiling pattern: \");\n  if (debug)\n    {\n      unsigned debug_count;\n\n      for (debug_count = 0; debug_count < size; debug_count++)\n        putchar (pattern[debug_count]);\n      putchar ('\\n');\n    }\n#endif /* DEBUG */\n\n  /* Initialize the compile stack.  */\n  compile_stack.stack = TALLOC (INIT_COMPILE_STACK_SIZE, compile_stack_elt_t);\n  if (compile_stack.stack == NULL)\n    return REG_ESPACE;\n\n  compile_stack.size = INIT_COMPILE_STACK_SIZE;\n  compile_stack.avail = 0;\n\n  /* Initialize the pattern buffer.  */\n  bufp->syntax = syntax;\n  bufp->fastmap_accurate = 0;\n  bufp->not_bol = bufp->not_eol = 0;\n\n  /* Set `used' to zero, so that if we return an error, the pattern\n     printer (for debugging) will think there's no pattern.  We reset it\n     at the end.  */\n  bufp->used = 0;\n\n  /* Always count groups, whether or not bufp->no_sub is set.  */\n  bufp->re_nsub = 0;\n\n#if !defined (emacs) && !defined (SYNTAX_TABLE)\n  /* Initialize the syntax table.  */\n   init_syntax_once ();\n#endif\n\n  if (bufp->allocated == 0)\n    {\n      if (bufp->buffer)\n\t{ /* If zero allocated, but buffer is non-null, try to realloc\n             enough space.  This loses if buffer's address is bogus, but\n             that is the user's responsibility.  */\n          RETALLOC (bufp->buffer, INIT_BUF_SIZE, unsigned char);\n        }\n      else\n        { /* Caller did not allocate a buffer.  Do it for them.  */\n          bufp->buffer = TALLOC (INIT_BUF_SIZE, unsigned char);\n        }\n      if (!bufp->buffer) FREE_STACK_RETURN (REG_ESPACE);\n\n      bufp->allocated = INIT_BUF_SIZE;\n    }\n\n  begalt = b = bufp->buffer;\n\n  /* Loop through the uncompiled pattern until we're at the end.  */\n  while (p != pend)\n    {\n      PATFETCH (c);\n\n      switch (c)\n        {\n        case '^':\n          {\n            if (   /* If at start of pattern, it's an operator.  */\n                   p == pattern + 1\n                   /* If context independent, it's an operator.  */\n                || syntax & RE_CONTEXT_INDEP_ANCHORS\n                   /* Otherwise, depends on what's come before.  */\n                || at_begline_loc_p (pattern, p, syntax))\n              BUF_PUSH (begline);\n            else\n              goto normal_char;\n          }\n          break;\n\n\n        case '$':\n          {\n            if (   /* If at end of pattern, it's an operator.  */\n                   p == pend\n                   /* If context independent, it's an operator.  */\n                || syntax & RE_CONTEXT_INDEP_ANCHORS\n                   /* Otherwise, depends on what's next.  */\n                || at_endline_loc_p (p, pend, syntax))\n               BUF_PUSH (endline);\n             else\n               goto normal_char;\n           }\n           break;\n\n\n\tcase '+':\n        case '?':\n          if ((syntax & RE_BK_PLUS_QM)\n              || (syntax & RE_LIMITED_OPS))\n            goto normal_char;\n        handle_plus:\n        case '*':\n          /* If there is no previous pattern... */\n          if (!laststart)\n            {\n              if (syntax & RE_CONTEXT_INVALID_OPS)\n                FREE_STACK_RETURN (REG_BADRPT);\n              else if (!(syntax & RE_CONTEXT_INDEP_OPS))\n                goto normal_char;\n            }\n\n          {\n            /* Are we optimizing this jump?  */\n            boolean keep_string_p = false;\n\n            /* 1 means zero (many) matches is allowed.  */\n            char zero_times_ok = 0, many_times_ok = 0;\n\n            /* If there is a sequence of repetition chars, collapse it\n               down to just one (the right one).  We can't combine\n               interval operators with these because of, e.g., `a{2}*',\n               which should only match an even number of `a's.  */\n\n            for (;;)\n              {\n                zero_times_ok |= c != '+';\n                many_times_ok |= c != '?';\n\n                if (p == pend)\n                  break;\n\n                PATFETCH (c);\n\n                if (c == '*'\n                    || (!(syntax & RE_BK_PLUS_QM) && (c == '+' || c == '?')))\n                  ;\n\n                else if (syntax & RE_BK_PLUS_QM  &&  c == '\\\\')\n                  {\n                    if (p == pend) FREE_STACK_RETURN (REG_EESCAPE);\n\n                    PATFETCH (c1);\n                    if (!(c1 == '+' || c1 == '?'))\n                      {\n                        PATUNFETCH;\n                        PATUNFETCH;\n                        break;\n                      }\n\n                    c = c1;\n                  }\n                else\n                  {\n                    PATUNFETCH;\n                    break;\n                  }\n\n                /* If we get here, we found another repeat character.  */\n               }\n\n            /* Star, etc. applied to an empty pattern is equivalent\n               to an empty pattern.  */\n            if (!laststart)\n              break;\n\n            /* Now we know whether or not zero matches is allowed\n               and also whether or not two or more matches is allowed.  */\n            if (many_times_ok)\n              { /* More than one repetition is allowed, so put in at the\n                   end a backward relative jump from `b' to before the next\n                   jump we're going to put in below (which jumps from\n                   laststart to after this jump).\n\n                   But if we are at the `*' in the exact sequence `.*\\n',\n                   insert an unconditional jump backwards to the .,\n                   instead of the beginning of the loop.  This way we only\n                   push a failure point once, instead of every time\n                   through the loop.  */\n                assert (p - 1 > pattern);\n\n                /* Allocate the space for the jump.  */\n                GET_BUFFER_SPACE (3);\n\n                /* We know we are not at the first character of the pattern,\n                   because laststart was nonzero.  And we've already\n                   incremented `p', by the way, to be the character after\n                   the `*'.  Do we have to do something analogous here\n                   for null bytes, because of RE_DOT_NOT_NULL?  */\n                if (TRANSLATE (*(p - 2)) == TRANSLATE ('.')\n\t\t    && zero_times_ok\n                    && p < pend && TRANSLATE (*p) == TRANSLATE ('\\n')\n                    && !(syntax & RE_DOT_NEWLINE))\n                  { /* We have .*\\n.  */\n                    STORE_JUMP (jump, b, laststart);\n                    keep_string_p = true;\n                  }\n                else\n                  /* Anything else.  */\n                  STORE_JUMP (maybe_pop_jump, b, laststart - 3);\n\n                /* We've added more stuff to the buffer.  */\n                b += 3;\n              }\n\n            /* On failure, jump from laststart to b + 3, which will be the\n               end of the buffer after this jump is inserted.  */\n            GET_BUFFER_SPACE (3);\n            INSERT_JUMP (keep_string_p ? on_failure_keep_string_jump\n                                       : on_failure_jump,\n                         laststart, b + 3);\n            pending_exact = 0;\n            b += 3;\n\n            if (!zero_times_ok)\n              {\n                /* At least one repetition is required, so insert a\n                   `dummy_failure_jump' before the initial\n                   `on_failure_jump' instruction of the loop. This\n                   effects a skip over that instruction the first time\n                   we hit that loop.  */\n                GET_BUFFER_SPACE (3);\n                INSERT_JUMP (dummy_failure_jump, laststart, laststart + 6);\n                b += 3;\n              }\n            }\n\t  break;\n\n\n\tcase '.':\n          laststart = b;\n          BUF_PUSH (anychar);\n          break;\n\n\n        case '[':\n          {\n            boolean had_char_class = false;\n\n            if (p == pend) FREE_STACK_RETURN (REG_EBRACK);\n\n            /* Ensure that we have enough space to push a charset: the\n               opcode, the length count, and the bitset; 34 bytes in all.  */\n\t    GET_BUFFER_SPACE (34);\n\n            laststart = b;\n\n            /* We test `*p == '^' twice, instead of using an if\n               statement, so we only need one BUF_PUSH.  */\n            BUF_PUSH (*p == '^' ? charset_not : charset);\n            if (*p == '^')\n              p++;\n\n            /* Remember the first position in the bracket expression.  */\n            p1 = p;\n\n            /* Push the number of bytes in the bitmap.  */\n            BUF_PUSH ((1 << BYTEWIDTH) / BYTEWIDTH);\n\n            /* Clear the whole map.  */\n            bzero (b, (1 << BYTEWIDTH) / BYTEWIDTH);\n\n            /* charset_not matches newline according to a syntax bit.  */\n            if ((re_opcode_t) b[-2] == charset_not\n                && (syntax & RE_HAT_LISTS_NOT_NEWLINE))\n              SET_LIST_BIT ('\\n');\n\n            /* Read in characters and ranges, setting map bits.  */\n            for (;;)\n              {\n                if (p == pend) FREE_STACK_RETURN (REG_EBRACK);\n\n                PATFETCH (c);\n\n                /* \\ might escape characters inside [...] and [^...].  */\n                if ((syntax & RE_BACKSLASH_ESCAPE_IN_LISTS) && c == '\\\\')\n                  {\n                    if (p == pend) FREE_STACK_RETURN (REG_EESCAPE);\n\n                    PATFETCH (c1);\n                    SET_LIST_BIT (c1);\n                    continue;\n                  }\n\n                /* Could be the end of the bracket expression.  If it's\n                   not (i.e., when the bracket expression is `[]' so\n                   far), the ']' character bit gets set way below.  */\n                if (c == ']' && p != p1 + 1)\n                  break;\n\n                /* Look ahead to see if it's a range when the last thing\n                   was a character class.  */\n                if (had_char_class && c == '-' && *p != ']')\n                  FREE_STACK_RETURN (REG_ERANGE);\n\n                /* Look ahead to see if it's a range when the last thing\n                   was a character: if this is a hyphen not at the\n                   beginning or the end of a list, then it's the range\n                   operator.  */\n                if (c == '-'\n                    && !(p - 2 >= pattern && p[-2] == '[')\n                    && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^')\n                    && *p != ']')\n                  {\n                    reg_errcode_t ret\n                      = compile_range (&p, pend, translate, syntax, b);\n                    if (ret != REG_NOERROR) FREE_STACK_RETURN (ret);\n                  }\n\n                else if (p[0] == '-' && p[1] != ']')\n                  { /* This handles ranges made up of characters only.  */\n                    reg_errcode_t ret;\n\n\t\t    /* Move past the `-'.  */\n                    PATFETCH (c1);\n\n                    ret = compile_range (&p, pend, translate, syntax, b);\n                    if (ret != REG_NOERROR) FREE_STACK_RETURN (ret);\n                  }\n\n                /* See if we're at the beginning of a possible character\n                   class.  */\n\n                else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == ':')\n                  { /* Leave room for the null.  */\n                    char str[CHAR_CLASS_MAX_LENGTH + 1];\n\n                    PATFETCH (c);\n                    c1 = 0;\n\n                    /* If pattern is `[[:'.  */\n                    if (p == pend) FREE_STACK_RETURN (REG_EBRACK);\n\n                    for (;;)\n                      {\n                        PATFETCH (c);\n                        if (c == ':' || c == ']' || p == pend\n                            || (unsigned int)c1 == CHAR_CLASS_MAX_LENGTH)\n                          break;\n                        str[c1++] = c;\n                      }\n                    str[c1] = '\\0';\n\n                    /* If isn't a word bracketed by `[:' and:`]':\n                       undo the ending character, the letters, and leave\n                       the leading `:' and `[' (but set bits for them).  */\n                    if (c == ':' && *p == ']')\n                      {\n#if defined _LIBC || (defined HAVE_WC_FUNCS && defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H)\n                        boolean is_lower = STREQ (str, \"lower\");\n                        boolean is_upper = STREQ (str, \"upper\");\n\t\t\twctype_t wt;\n\t\t\twchar_t twt;\n                        int ch;\n\n\t\t\twt = wctype (str);\n\t\t\tif (wt == 0)\n\t\t\t  FREE_STACK_RETURN (REG_ECTYPE);\n\n                        /* Throw away the ] at the end of the character\n                           class.  */\n                        PATFETCH (c);\n\n                        if (p == pend) FREE_STACK_RETURN (REG_EBRACK);\n\n                        for (ch = 0; ch < 1 << BYTEWIDTH; ++ch)\n\t\t\t  {\n\t\t\t    if (mbtowc (&twt, (char *)&ch, 1) >= 0 && iswctype (twt, wt))\n\t\t\t      SET_LIST_BIT (ch);\n\n\t\t\t    if (translate && (is_upper || is_lower)\n\t\t\t\t&& (ISUPPER (ch) || ISLOWER (ch)))\n\t\t\t      SET_LIST_BIT (ch);\n\t\t\t  }\n\n                        had_char_class = true;\n#else\n                        int ch;\n                        boolean is_alnum = STREQ (str, \"alnum\");\n                        boolean is_alpha = STREQ (str, \"alpha\");\n                        boolean is_blank = STREQ (str, \"blank\");\n                        boolean is_cntrl = STREQ (str, \"cntrl\");\n                        boolean is_digit = STREQ (str, \"digit\");\n                        boolean is_graph = STREQ (str, \"graph\");\n                        boolean is_lower = STREQ (str, \"lower\");\n                        boolean is_print = STREQ (str, \"print\");\n                        boolean is_punct = STREQ (str, \"punct\");\n                        boolean is_space = STREQ (str, \"space\");\n                        boolean is_upper = STREQ (str, \"upper\");\n                        boolean is_xdigit = STREQ (str, \"xdigit\");\n\n                        if (!IS_CHAR_CLASS (str))\n\t\t\t  FREE_STACK_RETURN (REG_ECTYPE);\n\n                        /* Throw away the ] at the end of the character\n                           class.  */\n                        PATFETCH (c);\n\n                        if (p == pend) FREE_STACK_RETURN (REG_EBRACK);\n\n                        for (ch = 0; ch < 1 << BYTEWIDTH; ch++)\n                          {\n\t\t\t    /* This was split into 3 if's to\n\t\t\t       avoid an arbitrary limit in some compiler.  */\n                            if (   (is_alnum  && ISALNUM (ch))\n                                || (is_alpha  && ISALPHA (ch))\n                                || (is_blank  && ISBLANK (ch))\n                                || (is_cntrl  && ISCNTRL (ch)))\n\t\t\t      SET_LIST_BIT (ch);\n\t\t\t    if (   (is_digit  && ISDIGIT (ch))\n                                || (is_graph  && ISGRAPH (ch))\n                                || (is_lower  && ISLOWER (ch))\n                                || (is_print  && ISPRINT (ch)))\n\t\t\t      SET_LIST_BIT (ch);\n\t\t\t    if (   (is_punct  && ISPUNCT (ch))\n                                || (is_space  && ISSPACE (ch))\n                                || (is_upper  && ISUPPER (ch))\n                                || (is_xdigit && ISXDIGIT (ch)))\n\t\t\t      SET_LIST_BIT (ch);\n\t\t\t    if (   translate && (is_upper || is_lower)\n\t\t\t\t&& (ISUPPER (ch) || ISLOWER (ch)))\n\t\t\t      SET_LIST_BIT (ch);\n                          }\n                        had_char_class = true;\n#endif\t/* libc || wctype.h */\n                      }\n                    else\n                      {\n                        c1++;\n                        while (c1--)\n                          PATUNFETCH;\n                        SET_LIST_BIT ('[');\n                        SET_LIST_BIT (':');\n                        had_char_class = false;\n                      }\n                  }\n                else\n                  {\n                    had_char_class = false;\n                    SET_LIST_BIT (c);\n                  }\n              }\n\n            /* Discard any (non)matching list bytes that are all 0 at the\n               end of the map.  Decrease the map-length byte too.  */\n            while ((int) b[-1] > 0 && b[b[-1] - 1] == 0)\n              b[-1]--;\n            b += b[-1];\n          }\n          break;\n\n\n\tcase '(':\n          if (syntax & RE_NO_BK_PARENS)\n            goto handle_open;\n          else\n            goto normal_char;\n\n\n        case ')':\n          if (syntax & RE_NO_BK_PARENS)\n            goto handle_close;\n          else\n            goto normal_char;\n\n\n        case '\\n':\n          if (syntax & RE_NEWLINE_ALT)\n            goto handle_alt;\n          else\n            goto normal_char;\n\n\n\tcase '|':\n          if (syntax & RE_NO_BK_VBAR)\n            goto handle_alt;\n          else\n            goto normal_char;\n\n\n        case '{':\n           if (syntax & RE_INTERVALS && syntax & RE_NO_BK_BRACES)\n             goto handle_interval;\n           else\n             goto normal_char;\n\n\n        case '\\\\':\n          if (p == pend) FREE_STACK_RETURN (REG_EESCAPE);\n\n          /* Do not translate the character after the \\, so that we can\n             distinguish, e.g., \\B from \\b, even if we normally would\n             translate, e.g., B to b.  */\n          PATFETCH_RAW (c);\n\n          switch (c)\n            {\n            case '(':\n              if (syntax & RE_NO_BK_PARENS)\n                goto normal_backslash;\n\n            handle_open:\n              bufp->re_nsub++;\n              regnum++;\n\n              if (COMPILE_STACK_FULL)\n                {\n                  RETALLOC (compile_stack.stack, compile_stack.size << 1,\n                            compile_stack_elt_t);\n                  if (compile_stack.stack == NULL) return REG_ESPACE;\n\n                  compile_stack.size <<= 1;\n                }\n\n              /* These are the values to restore when we hit end of this\n                 group.  They are all relative offsets, so that if the\n                 whole pattern moves because of realloc, they will still\n                 be valid.  */\n              COMPILE_STACK_TOP.begalt_offset = begalt - bufp->buffer;\n              COMPILE_STACK_TOP.fixup_alt_jump\n                = fixup_alt_jump ? fixup_alt_jump - bufp->buffer + 1 : 0;\n              COMPILE_STACK_TOP.laststart_offset = b - bufp->buffer;\n              COMPILE_STACK_TOP.regnum = regnum;\n\n              /* We will eventually replace the 0 with the number of\n                 groups inner to this one.  But do not push a\n                 start_memory for groups beyond the last one we can\n                 represent in the compiled pattern.  */\n              if (regnum <= MAX_REGNUM)\n                {\n                  COMPILE_STACK_TOP.inner_group_offset = b - bufp->buffer + 2;\n                  BUF_PUSH_3 (start_memory, regnum, 0);\n                }\n\n              compile_stack.avail++;\n\n              fixup_alt_jump = 0;\n              laststart = 0;\n              begalt = b;\n\t      /* If we've reached MAX_REGNUM groups, then this open\n\t\t won't actually generate any code, so we'll have to\n\t\t clear pending_exact explicitly.  */\n\t      pending_exact = 0;\n              break;\n\n\n            case ')':\n              if (syntax & RE_NO_BK_PARENS) goto normal_backslash;\n\n              if (COMPILE_STACK_EMPTY)\n\t      {\n                if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD)\n                  goto normal_backslash;\n                else\n                  FREE_STACK_RETURN (REG_ERPAREN);\n\t      }\n\n            handle_close:\n              if (fixup_alt_jump)\n                { /* Push a dummy failure point at the end of the\n                     alternative for a possible future\n                     `pop_failure_jump' to pop.  See comments at\n                     `push_dummy_failure' in `re_match_2'.  */\n                  BUF_PUSH (push_dummy_failure);\n\n                  /* We allocated space for this jump when we assigned\n                     to `fixup_alt_jump', in the `handle_alt' case below.  */\n                  STORE_JUMP (jump_past_alt, fixup_alt_jump, b - 1);\n                }\n\n              /* See similar code for backslashed left paren above.  */\n              if (COMPILE_STACK_EMPTY)\n\t      {\n                if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD)\n                  goto normal_char;\n                else\n                  FREE_STACK_RETURN (REG_ERPAREN);\n\t      }\n\n              /* Since we just checked for an empty stack above, this\n                 ``can't happen''.  */\n              assert (compile_stack.avail != 0);\n              {\n                /* We don't just want to restore into `regnum', because\n                   later groups should continue to be numbered higher,\n                   as in `(ab)c(de)' -- the second group is #2.  */\n                regnum_t this_group_regnum;\n\n                compile_stack.avail--;\n                begalt = bufp->buffer + COMPILE_STACK_TOP.begalt_offset;\n                fixup_alt_jump\n                  = COMPILE_STACK_TOP.fixup_alt_jump\n                    ? bufp->buffer + COMPILE_STACK_TOP.fixup_alt_jump - 1\n                    : 0;\n                laststart = bufp->buffer + COMPILE_STACK_TOP.laststart_offset;\n                this_group_regnum = COMPILE_STACK_TOP.regnum;\n\t\t/* If we've reached MAX_REGNUM groups, then this open\n\t\t   won't actually generate any code, so we'll have to\n\t\t   clear pending_exact explicitly.  */\n\t\tpending_exact = 0;\n\n                /* We're at the end of the group, so now we know how many\n                   groups were inside this one.  */\n                if (this_group_regnum <= MAX_REGNUM)\n                  {\n                    unsigned char *inner_group_loc\n                      = bufp->buffer + COMPILE_STACK_TOP.inner_group_offset;\n\n                    *inner_group_loc = regnum - this_group_regnum;\n                    BUF_PUSH_3 (stop_memory, this_group_regnum,\n                                regnum - this_group_regnum);\n                  }\n              }\n              break;\n\n\n            case '|':\t\t\t\t\t/* `\\|'.  */\n              if (syntax & RE_LIMITED_OPS || syntax & RE_NO_BK_VBAR)\n                goto normal_backslash;\n            handle_alt:\n              if (syntax & RE_LIMITED_OPS)\n                goto normal_char;\n\n              /* Insert before the previous alternative a jump which\n                 jumps to this alternative if the former fails.  */\n              GET_BUFFER_SPACE (3);\n              INSERT_JUMP (on_failure_jump, begalt, b + 6);\n              pending_exact = 0;\n              b += 3;\n\n              /* The alternative before this one has a jump after it\n                 which gets executed if it gets matched.  Adjust that\n                 jump so it will jump to this alternative's analogous\n                 jump (put in below, which in turn will jump to the next\n                 (if any) alternative's such jump, etc.).  The last such\n                 jump jumps to the correct final destination.  A picture:\n                          _____ _____\n                          |   | |   |\n                          |   v |   v\n                         a | b   | c\n\n                 If we are at `b', then fixup_alt_jump right now points to a\n                 three-byte space after `a'.  We'll put in the jump, set\n                 fixup_alt_jump to right after `b', and leave behind three\n                 bytes which we'll fill in when we get to after `c'.  */\n\n              if (fixup_alt_jump)\n                STORE_JUMP (jump_past_alt, fixup_alt_jump, b);\n\n              /* Mark and leave space for a jump after this alternative,\n                 to be filled in later either by next alternative or\n                 when know we're at the end of a series of alternatives.  */\n              fixup_alt_jump = b;\n              GET_BUFFER_SPACE (3);\n              b += 3;\n\n              laststart = 0;\n              begalt = b;\n              break;\n\n\n            case '{':\n              /* If \\{ is a literal.  */\n              if (!(syntax & RE_INTERVALS)\n                     /* If we're at `\\{' and it's not the open-interval\n                        operator.  */\n                  || ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))\n                  || (p - 2 == pattern  &&  p == pend))\n                goto normal_backslash;\n\n            handle_interval:\n              {\n                /* If got here, then the syntax allows intervals.  */\n\n                /* At least (most) this many matches must be made.  */\n                int lower_bound = -1, upper_bound = -1;\n\n                beg_interval = p - 1;\n\n                if (p == pend)\n                  {\n                    if (syntax & RE_NO_BK_BRACES)\n                      goto unfetch_interval;\n                    else\n                      FREE_STACK_RETURN (REG_EBRACE);\n                  }\n\n                GET_UNSIGNED_NUMBER (lower_bound);\n\n                if (c == ',')\n                  {\n                    GET_UNSIGNED_NUMBER (upper_bound);\n                    if (upper_bound < 0) upper_bound = RE_DUP_MAX;\n                  }\n                else\n                  /* Interval such as `{1}' => match exactly once. */\n                  upper_bound = lower_bound;\n\n                if (lower_bound < 0 || upper_bound > RE_DUP_MAX\n                    || lower_bound > upper_bound)\n                  {\n                    if (syntax & RE_NO_BK_BRACES)\n                      goto unfetch_interval;\n                    else\n                      FREE_STACK_RETURN (REG_BADBR);\n                  }\n\n                if (!(syntax & RE_NO_BK_BRACES))\n                  {\n                    if (c != '\\\\') FREE_STACK_RETURN (REG_EBRACE);\n\n                    PATFETCH (c);\n                  }\n\n                if (c != '}')\n                  {\n                    if (syntax & RE_NO_BK_BRACES)\n                      goto unfetch_interval;\n                    else\n                      FREE_STACK_RETURN (REG_BADBR);\n                  }\n\n                /* We just parsed a valid interval.  */\n\n                /* If it's invalid to have no preceding re.  */\n                if (!laststart)\n                  {\n                    if (syntax & RE_CONTEXT_INVALID_OPS)\n                      FREE_STACK_RETURN (REG_BADRPT);\n                    else if (syntax & RE_CONTEXT_INDEP_OPS)\n                      laststart = b;\n                    else\n                      goto unfetch_interval;\n                  }\n\n                /* If the upper bound is zero, don't want to succeed at\n                   all; jump from `laststart' to `b + 3', which will be\n                   the end of the buffer after we insert the jump.  */\n                 if (upper_bound == 0)\n                   {\n                     GET_BUFFER_SPACE (3);\n                     INSERT_JUMP (jump, laststart, b + 3);\n                     b += 3;\n                   }\n\n                 /* Otherwise, we have a nontrivial interval.  When\n                    we're all done, the pattern will look like:\n                      set_number_at <jump count> <upper bound>\n                      set_number_at <succeed_n count> <lower bound>\n                      succeed_n <after jump addr> <succeed_n count>\n                      <body of loop>\n                      jump_n <succeed_n addr> <jump count>\n                    (The upper bound and `jump_n' are omitted if\n                    `upper_bound' is 1, though.)  */\n                 else\n                   { /* If the upper bound is > 1, we need to insert\n                        more at the end of the loop.  */\n                     unsigned nbytes = 10 + (upper_bound > 1) * 10;\n\n                     GET_BUFFER_SPACE (nbytes);\n\n                     /* Initialize lower bound of the `succeed_n', even\n                        though it will be set during matching by its\n                        attendant `set_number_at' (inserted next),\n                        because `re_compile_fastmap' needs to know.\n                        Jump to the `jump_n' we might insert below.  */\n                     INSERT_JUMP2 (succeed_n, laststart,\n                                   b + 5 + (upper_bound > 1) * 5,\n                                   lower_bound);\n                     b += 5;\n\n                     /* Code to initialize the lower bound.  Insert\n                        before the `succeed_n'.  The `5' is the last two\n                        bytes of this `set_number_at', plus 3 bytes of\n                        the following `succeed_n'.  */\n                     insert_op2 (set_number_at, laststart, 5, lower_bound, b);\n                     b += 5;\n\n                     if (upper_bound > 1)\n                       { /* More than one repetition is allowed, so\n                            append a backward jump to the `succeed_n'\n                            that starts this interval.\n\n                            When we've reached this during matching,\n                            we'll have matched the interval once, so\n                            jump back only `upper_bound - 1' times.  */\n                         STORE_JUMP2 (jump_n, b, laststart + 5,\n                                      upper_bound - 1);\n                         b += 5;\n\n                         /* The location we want to set is the second\n                            parameter of the `jump_n'; that is `b-2' as\n                            an absolute address.  `laststart' will be\n                            the `set_number_at' we're about to insert;\n                            `laststart+3' the number to set, the source\n                            for the relative address.  But we are\n                            inserting into the middle of the pattern --\n                            so everything is getting moved up by 5.\n                            Conclusion: (b - 2) - (laststart + 3) + 5,\n                            i.e., b - laststart.\n\n                            We insert this at the beginning of the loop\n                            so that if we fail during matching, we'll\n                            reinitialize the bounds.  */\n                         insert_op2 (set_number_at, laststart, b - laststart,\n                                     upper_bound - 1, b);\n                         b += 5;\n                       }\n                   }\n                pending_exact = 0;\n                beg_interval = NULL;\n              }\n              break;\n\n            unfetch_interval:\n              /* If an invalid interval, match the characters as literals.  */\n               assert (beg_interval);\n               p = beg_interval;\n               beg_interval = NULL;\n\n               /* normal_char and normal_backslash need `c'.  */\n               PATFETCH (c);\n\n               if (!(syntax & RE_NO_BK_BRACES))\n                 {\n                   if (p > pattern  &&  p[-1] == '\\\\')\n                     goto normal_backslash;\n                 }\n               goto normal_char;\n\n#ifdef emacs\n            /* There is no way to specify the before_dot and after_dot\n               operators.  rms says this is ok.  --karl  */\n            case '=':\n              BUF_PUSH (at_dot);\n              break;\n\n            case 's':\n              laststart = b;\n              PATFETCH (c);\n              BUF_PUSH_2 (syntaxspec, syntax_spec_code[c]);\n              break;\n\n            case 'S':\n              laststart = b;\n              PATFETCH (c);\n              BUF_PUSH_2 (notsyntaxspec, syntax_spec_code[c]);\n              break;\n#endif /* emacs */\n\n\n            case 'w':\n\t      if (re_syntax_options & RE_NO_GNU_OPS)\n\t\tgoto normal_char;\n              laststart = b;\n              BUF_PUSH (wordchar);\n              break;\n\n\n            case 'W':\n\t      if (re_syntax_options & RE_NO_GNU_OPS)\n\t\tgoto normal_char;\n              laststart = b;\n              BUF_PUSH (notwordchar);\n              break;\n\n\n            case '<':\n\t      if (re_syntax_options & RE_NO_GNU_OPS)\n\t\tgoto normal_char;\n              BUF_PUSH (wordbeg);\n              break;\n\n            case '>':\n\t      if (re_syntax_options & RE_NO_GNU_OPS)\n\t\tgoto normal_char;\n              BUF_PUSH (wordend);\n              break;\n\n            case 'b':\n\t      if (re_syntax_options & RE_NO_GNU_OPS)\n\t\tgoto normal_char;\n              BUF_PUSH (wordbound);\n              break;\n\n            case 'B':\n\t      if (re_syntax_options & RE_NO_GNU_OPS)\n\t\tgoto normal_char;\n              BUF_PUSH (notwordbound);\n              break;\n\n            case '`':\n\t      if (re_syntax_options & RE_NO_GNU_OPS)\n\t\tgoto normal_char;\n              BUF_PUSH (begbuf);\n              break;\n\n            case '\\'':\n\t      if (re_syntax_options & RE_NO_GNU_OPS)\n\t\tgoto normal_char;\n              BUF_PUSH (endbuf);\n              break;\n\n            case '1': case '2': case '3': case '4': case '5':\n            case '6': case '7': case '8': case '9':\n              if (syntax & RE_NO_BK_REFS)\n                goto normal_char;\n\n              c1 = c - '0';\n\n              if (c1 > regnum)\n                FREE_STACK_RETURN (REG_ESUBREG);\n\n              /* Can't back reference to a subexpression if inside of it.  */\n              if (group_in_compile_stack (compile_stack, (regnum_t) c1))\n                goto normal_char;\n\n              laststart = b;\n              BUF_PUSH_2 (duplicate, c1);\n              break;\n\n\n            case '+':\n            case '?':\n              if (syntax & RE_BK_PLUS_QM)\n                goto handle_plus;\n              else\n                goto normal_backslash;\n\n            default:\n            normal_backslash:\n              /* You might think it would be useful for \\ to mean\n                 not to translate; but if we don't translate it\n                 it will never match anything.  */\n              c = TRANSLATE (c);\n              goto normal_char;\n            }\n          break;\n\n\n\tdefault:\n        /* Expects the character in `c'.  */\n\tnormal_char:\n\t      /* If no exactn currently being built.  */\n          if (!pending_exact\n\n              /* If last exactn not at current position.  */\n              || pending_exact + *pending_exact + 1 != b\n\n              /* We have only one byte following the exactn for the count.  */\n\t      || *pending_exact == (1 << BYTEWIDTH) - 1\n\n              /* If followed by a repetition operator.  */\n              || *p == '*' || *p == '^'\n\t      || ((syntax & RE_BK_PLUS_QM)\n\t\t  ? *p == '\\\\' && (p[1] == '+' || p[1] == '?')\n\t\t  : (*p == '+' || *p == '?'))\n\t      || ((syntax & RE_INTERVALS)\n                  && ((syntax & RE_NO_BK_BRACES)\n\t\t      ? *p == '{'\n                      : (p[0] == '\\\\' && p[1] == '{'))))\n\t    {\n\t      /* Start building a new exactn.  */\n\n              laststart = b;\n\n\t      BUF_PUSH_2 (exactn, 0);\n\t      pending_exact = b - 1;\n            }\n\n\t  BUF_PUSH (c);\n          (*pending_exact)++;\n\t  break;\n        } /* switch (c) */\n    } /* while p != pend */\n\n\n  /* Through the pattern now.  */\n\n  if (fixup_alt_jump)\n    STORE_JUMP (jump_past_alt, fixup_alt_jump, b);\n\n  if (!COMPILE_STACK_EMPTY)\n    FREE_STACK_RETURN (REG_EPAREN);\n\n  /* If we don't want backtracking, force success\n     the first time we reach the end of the compiled pattern.  */\n  if (syntax & RE_NO_POSIX_BACKTRACKING)\n    BUF_PUSH (succeed);\n\n  free (compile_stack.stack);\t/* __MEM_CHECKED__ */\n\n  /* We have succeeded; set the length of the buffer.  */\n  bufp->used = b - bufp->buffer;\n\n#ifdef DEBUG\n  if (debug)\n    {\n      DEBUG_PRINT1 (\"\\nCompiled pattern: \\n\");\n      print_compiled_pattern (bufp);\n    }\n#endif /* DEBUG */\n\n#ifndef MATCH_MAY_ALLOCATE\n  /* Initialize the failure stack to the largest possible stack.  This\n     isn't necessary unless we're trying to avoid calling alloca in\n     the search and match routines.  */\n  {\n    int num_regs = bufp->re_nsub + 1;\n\n    /* Since DOUBLE_FAIL_STACK refuses to double only if the current size\n       is strictly greater than re_max_failures, the largest possible stack\n       is 2 * re_max_failures failure points.  */\n    if (fail_stack.size < (2 * re_max_failures * MAX_FAILURE_ITEMS))\n      {\n\tfail_stack.size = (2 * re_max_failures * MAX_FAILURE_ITEMS);\n\n#ifdef emacs\n\tif (! fail_stack.stack)\n\t  fail_stack.stack\n\t    = (fail_stack_elt_t *) xmalloc (fail_stack.size\n\t\t\t\t\t    * sizeof (fail_stack_elt_t));\n\telse\n\t  fail_stack.stack\n\t    = (fail_stack_elt_t *) xrealloc (fail_stack.stack,\n\t\t\t\t\t     (fail_stack.size\n\t\t\t\t\t      * sizeof (fail_stack_elt_t)));\n#else /* not emacs */\n\tif (! fail_stack.stack)\n\t  fail_stack.stack\n\t    = (fail_stack_elt_t *) malloc (fail_stack.size\t/* __MEM_CHECKED__ */\n\t\t\t\t\t   * sizeof (fail_stack_elt_t));\n\telse\n\t  fail_stack.stack\n\t    = (fail_stack_elt_t *) realloc (fail_stack.stack,\t/* __MEM_CHECKED__ */\n\t\t\t\t\t    (fail_stack.size\n\t\t\t\t\t     * sizeof (fail_stack_elt_t)));\n#endif /* not emacs */\n      }\n\n    regex_grow_registers (num_regs);\n  }\n#endif /* not MATCH_MAY_ALLOCATE */\n\n  return REG_NOERROR;\n} /* regex_compile */\n\f\n/* Subroutines for `regex_compile'.  */\n\n/* Store OP at LOC followed by two-byte integer parameter ARG.  */\n\nstatic void\nstore_op1 (op, loc, arg)\n    re_opcode_t op;\n    unsigned char *loc;\n    int arg;\n{\n  *loc = (unsigned char) op;\n  STORE_NUMBER (loc + 1, arg);\n}\n\n\n/* Like `store_op1', but for two two-byte parameters ARG1 and ARG2.  */\n\nstatic void\nstore_op2 (op, loc, arg1, arg2)\n    re_opcode_t op;\n    unsigned char *loc;\n    int arg1, arg2;\n{\n  *loc = (unsigned char) op;\n  STORE_NUMBER (loc + 1, arg1);\n  STORE_NUMBER (loc + 3, arg2);\n}\n\n\n/* Copy the bytes from LOC to END to open up three bytes of space at LOC\n   for OP followed by two-byte integer parameter ARG.  */\n\nstatic void\ninsert_op1 (op, loc, arg, end)\n    re_opcode_t op;\n    unsigned char *loc;\n    int arg;\n    unsigned char *end;\n{\n  register unsigned char *pfrom = end;\n  register unsigned char *pto = end + 3;\n\n  while (pfrom != loc)\n    *--pto = *--pfrom;\n\n  store_op1 (op, loc, arg);\n}\n\n\n/* Like `insert_op1', but for two two-byte parameters ARG1 and ARG2.  */\n\nstatic void\ninsert_op2 (op, loc, arg1, arg2, end)\n    re_opcode_t op;\n    unsigned char *loc;\n    int arg1, arg2;\n    unsigned char *end;\n{\n  register unsigned char *pfrom = end;\n  register unsigned char *pto = end + 5;\n\n  while (pfrom != loc)\n    *--pto = *--pfrom;\n\n  store_op2 (op, loc, arg1, arg2);\n}\n\n\n/* P points to just after a ^ in PATTERN.  Return true if that ^ comes\n   after an alternative or a begin-subexpression.  We assume there is at\n   least one character before the ^.  */\n\nstatic boolean\nat_begline_loc_p (pattern, p, syntax)\n    const char *pattern, *p;\n    reg_syntax_t syntax;\n{\n  const char *prev = p - 2;\n  boolean prev_prev_backslash = prev > pattern && prev[-1] == '\\\\';\n\n  return\n       /* After a subexpression?  */\n       (*prev == '(' && (syntax & RE_NO_BK_PARENS || prev_prev_backslash))\n       /* After an alternative?  */\n    || (*prev == '|' && (syntax & RE_NO_BK_VBAR || prev_prev_backslash));\n}\n\n\n/* The dual of at_begline_loc_p.  This one is for $.  We assume there is\n   at least one character after the $, i.e., `P < PEND'.  */\n\nstatic boolean\nat_endline_loc_p (p, pend, syntax)\n    const char *p, *pend;\n    reg_syntax_t syntax;\n{\n  const char *next = p;\n  boolean next_backslash = *next == '\\\\';\n  const char *next_next = p + 1 < pend ? p + 1 : 0;\n\n  return\n       /* Before a subexpression?  */\n       (syntax & RE_NO_BK_PARENS ? *next == ')'\n        : next_backslash && next_next && *next_next == ')')\n       /* Before an alternative?  */\n    || (syntax & RE_NO_BK_VBAR ? *next == '|'\n        : next_backslash && next_next && *next_next == '|');\n}\n\n\n/* Returns true if REGNUM is in one of COMPILE_STACK's elements and\n   false if it's not.  */\n\nstatic boolean\ngroup_in_compile_stack (compile_stack, regnum)\n    compile_stack_type compile_stack;\n    regnum_t regnum;\n{\n  int this_element;\n\n  for (this_element = compile_stack.avail - 1;\n       this_element >= 0;\n       this_element--)\n    if (compile_stack.stack[this_element].regnum == regnum)\n      return true;\n\n  return false;\n}\n\n\n/* Read the ending character of a range (in a bracket expression) from the\n   uncompiled pattern *P_PTR (which ends at PEND).  We assume the\n   starting character is in `P[-2]'.  (`P[-1]' is the character `-'.)\n   Then we set the translation of all bits between the starting and\n   ending characters (inclusive) in the compiled pattern B.\n\n   Return an error code.\n\n   We use these short variable names so we can use the same macros as\n   `regex_compile' itself.  */\n\nstatic reg_errcode_t\ncompile_range (p_ptr, pend, translate, syntax, b)\n    const char **p_ptr, *pend;\n    RE_TRANSLATE_TYPE translate;\n    reg_syntax_t syntax;\n    unsigned char *b;\n{\n  unsigned this_char;\n\n  const char *p = *p_ptr;\n  unsigned int range_start, range_end;\n\n  if (p == pend)\n    return REG_ERANGE;\n\n  /* Even though the pattern is a signed `char *', we need to fetch\n     with unsigned char *'s; if the high bit of the pattern character\n     is set, the range endpoints will be negative if we fetch using a\n     signed char *.\n\n     We also want to fetch the endpoints without translating them; the\n     appropriate translation is done in the bit-setting loop below.  */\n  /* The SVR4 compiler on the 3B2 had trouble with unsigned const char *.  */\n  range_start = ((const unsigned char *) p)[-2];\n  range_end   = ((const unsigned char *) p)[0];\n\n  /* Have to increment the pointer into the pattern string, so the\n     caller isn't still at the ending character.  */\n  (*p_ptr)++;\n\n  /* If the start is after the end, the range is empty.  */\n  if (range_start > range_end)\n    return syntax & RE_NO_EMPTY_RANGES ? REG_ERANGE : REG_NOERROR;\n\n  /* Here we see why `this_char' has to be larger than an `unsigned\n     char' -- the range is inclusive, so if `range_end' == 0xff\n     (assuming 8-bit characters), we would otherwise go into an infinite\n     loop, since all characters <= 0xff.  */\n  for (this_char = range_start; this_char <= range_end; this_char++)\n    {\n      SET_LIST_BIT (TRANSLATE (this_char));\n    }\n\n  return REG_NOERROR;\n}\n\f\n/* re_compile_fastmap computes a ``fastmap'' for the compiled pattern in\n   BUFP.  A fastmap records which of the (1 << BYTEWIDTH) possible\n   characters can start a string that matches the pattern.  This fastmap\n   is used by re_search to skip quickly over impossible starting points.\n\n   The caller must supply the address of a (1 << BYTEWIDTH)-byte data\n   area as BUFP->fastmap.\n\n   We set the `fastmap', `fastmap_accurate', and `can_be_null' fields in\n   the pattern buffer.\n\n   Returns 0 if we succeed, -2 if an internal error.   */\n\nint\nre_compile_fastmap (bufp)\n     struct re_pattern_buffer *bufp;\n{\n  int j, k;\n#ifdef MATCH_MAY_ALLOCATE\n  fail_stack_type fail_stack;\n#endif\n#ifndef REGEX_MALLOC\n  char *destination;\n#endif\n  register char *fastmap = bufp->fastmap;\n  unsigned char *pattern = bufp->buffer;\n  unsigned char *p = pattern;\n  register unsigned char *pend = pattern + bufp->used;\n\n#ifdef REL_ALLOC\n  /* This holds the pointer to the failure stack, when\n     it is allocated relocatably.  */\n  fail_stack_elt_t *failure_stack_ptr;\n#endif\n\n  /* Assume that each path through the pattern can be null until\n     proven otherwise.  We set this false at the bottom of switch\n     statement, to which we get only if a particular path doesn't\n     match the empty string.  */\n  boolean path_can_be_null = true;\n\n  /* We aren't doing a `succeed_n' to begin with.  */\n  boolean succeed_n_p = false;\n\n  assert (fastmap != NULL && p != NULL);\n\n  INIT_FAIL_STACK ();\n  bzero (fastmap, 1 << BYTEWIDTH);  /* Assume nothing's valid.  */\n  bufp->fastmap_accurate = 1;\t    /* It will be when we're done.  */\n  bufp->can_be_null = 0;\n\n  while (1)\n    {\n      if (p == pend || *p == succeed)\n\t{\n\t  /* We have reached the (effective) end of pattern.  */\n\t  if (!FAIL_STACK_EMPTY ())\n\t    {\n\t      bufp->can_be_null |= path_can_be_null;\n\n\t      /* Reset for next path.  */\n\t      path_can_be_null = true;\n\n\t      p = fail_stack.stack[--fail_stack.avail].pointer;\n\n\t      continue;\n\t    }\n\t  else\n\t    break;\n\t}\n\n      /* We should never be about to go beyond the end of the pattern.  */\n      assert (p < pend);\n\n      switch (SWITCH_ENUM_CAST ((re_opcode_t) *p++))\n\t{\n\n        /* I guess the idea here is to simply not bother with a fastmap\n           if a backreference is used, since it's too hard to figure out\n           the fastmap for the corresponding group.  Setting\n           `can_be_null' stops `re_search_2' from using the fastmap, so\n           that is all we do.  */\n\tcase duplicate:\n\t  bufp->can_be_null = 1;\n          goto done;\n\n\n      /* Following are the cases which match a character.  These end\n         with `break'.  */\n\n\tcase exactn:\n          fastmap[p[1]] = 1;\n\t  break;\n\n\n        case charset:\n          for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--)\n\t    if (p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH)))\n              fastmap[j] = 1;\n\t  break;\n\n\n\tcase charset_not:\n\t  /* Chars beyond end of map must be allowed.  */\n\t  for (j = *p * BYTEWIDTH; j < (1 << BYTEWIDTH); j++)\n            fastmap[j] = 1;\n\n\t  for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--)\n\t    if (!(p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH))))\n              fastmap[j] = 1;\n          break;\n\n\n\tcase wordchar:\n\t  for (j = 0; j < (1 << BYTEWIDTH); j++)\n\t    if (SYNTAX (j) == Sword)\n\t      fastmap[j] = 1;\n\t  break;\n\n\n\tcase notwordchar:\n\t  for (j = 0; j < (1 << BYTEWIDTH); j++)\n\t    if (SYNTAX (j) != Sword)\n\t      fastmap[j] = 1;\n\t  break;\n\n\n        case anychar:\n\t  {\n\t    int fastmap_newline = fastmap['\\n'];\n\n\t    /* `.' matches anything ...  */\n\t    for (j = 0; j < (1 << BYTEWIDTH); j++)\n\t      fastmap[j] = 1;\n\n\t    /* ... except perhaps newline.  */\n\t    if (!(bufp->syntax & RE_DOT_NEWLINE))\n\t      fastmap['\\n'] = fastmap_newline;\n\n\t    /* Return if we have already set `can_be_null'; if we have,\n\t       then the fastmap is irrelevant.  Something's wrong here.  */\n\t    else if (bufp->can_be_null)\n\t      goto done;\n\n\t    /* Otherwise, have to check alternative paths.  */\n\t    break;\n\t  }\n\n#ifdef emacs\n        case syntaxspec:\n\t  k = *p++;\n\t  for (j = 0; j < (1 << BYTEWIDTH); j++)\n\t    if (SYNTAX (j) == (enum syntaxcode) k)\n\t      fastmap[j] = 1;\n\t  break;\n\n\n\tcase notsyntaxspec:\n\t  k = *p++;\n\t  for (j = 0; j < (1 << BYTEWIDTH); j++)\n\t    if (SYNTAX (j) != (enum syntaxcode) k)\n\t      fastmap[j] = 1;\n\t  break;\n\n\n      /* All cases after this match the empty string.  These end with\n         `continue'.  */\n\n\n\tcase before_dot:\n\tcase at_dot:\n\tcase after_dot:\n          continue;\n#endif /* emacs */\n\n\n        case no_op:\n        case begline:\n        case endline:\n\tcase begbuf:\n\tcase endbuf:\n\tcase wordbound:\n\tcase notwordbound:\n\tcase wordbeg:\n\tcase wordend:\n        case push_dummy_failure:\n          continue;\n\n\n\tcase jump_n:\n        case pop_failure_jump:\n\tcase maybe_pop_jump:\n\tcase jump:\n        case jump_past_alt:\n\tcase dummy_failure_jump:\n          EXTRACT_NUMBER_AND_INCR (j, p);\n\t  p += j;\n\t  if (j > 0)\n\t    continue;\n\n          /* Jump backward implies we just went through the body of a\n             loop and matched nothing.  Opcode jumped to should be\n             `on_failure_jump' or `succeed_n'.  Just treat it like an\n             ordinary jump.  For a * loop, it has pushed its failure\n             point already; if so, discard that as redundant.  */\n          if ((re_opcode_t) *p != on_failure_jump\n\t      && (re_opcode_t) *p != succeed_n)\n\t    continue;\n\n          p++;\n          EXTRACT_NUMBER_AND_INCR (j, p);\n          p += j;\n\n          /* If what's on the stack is where we are now, pop it.  */\n          if (!FAIL_STACK_EMPTY ()\n\t      && fail_stack.stack[fail_stack.avail - 1].pointer == p)\n            fail_stack.avail--;\n\n          continue;\n\n\n        case on_failure_jump:\n        case on_failure_keep_string_jump:\n\thandle_on_failure_jump:\n          EXTRACT_NUMBER_AND_INCR (j, p);\n\n          /* For some patterns, e.g., `(a?)?', `p+j' here points to the\n             end of the pattern.  We don't want to push such a point,\n             since when we restore it above, entering the switch will\n             increment `p' past the end of the pattern.  We don't need\n             to push such a point since we obviously won't find any more\n             fastmap entries beyond `pend'.  Such a pattern can match\n             the null string, though.  */\n          if (p + j < pend)\n            {\n              if (!PUSH_PATTERN_OP (p + j, fail_stack))\n\t\t{\n\t\t  RESET_FAIL_STACK ();\n\t\t  return -2;\n\t\t}\n            }\n          else\n            bufp->can_be_null = 1;\n\n          if (succeed_n_p)\n            {\n              EXTRACT_NUMBER_AND_INCR (k, p);\t/* Skip the n.  */\n              succeed_n_p = false;\n\t    }\n\n          continue;\n\n\n\tcase succeed_n:\n          /* Get to the number of times to succeed.  */\n          p += 2;\n\n          /* Increment p past the n for when k != 0.  */\n          EXTRACT_NUMBER_AND_INCR (k, p);\n          if (k == 0)\n\t    {\n              p -= 4;\n  \t      succeed_n_p = true;  /* Spaghetti code alert.  */\n              goto handle_on_failure_jump;\n            }\n          continue;\n\n\n\tcase set_number_at:\n          p += 4;\n          continue;\n\n\n\tcase start_memory:\n        case stop_memory:\n\t  p += 2;\n\t  continue;\n\n\n\tdefault:\n          abort (); /* We have listed all the cases.  */\n        } /* switch *p++ */\n\n      /* Getting here means we have found the possible starting\n         characters for one path of the pattern -- and that the empty\n         string does not match.  We need not follow this path further.\n         Instead, look at the next alternative (remembered on the\n         stack), or quit if no more.  The test at the top of the loop\n         does these things.  */\n      path_can_be_null = false;\n      p = pend;\n    } /* while p */\n\n  /* Set `can_be_null' for the last path (also the first path, if the\n     pattern is empty).  */\n  bufp->can_be_null |= path_can_be_null;\n\n done:\n  RESET_FAIL_STACK ();\n  return 0;\n} /* re_compile_fastmap */\n\f\n/* Set REGS to hold NUM_REGS registers, storing them in STARTS and\n   ENDS.  Subsequent matches using PATTERN_BUFFER and REGS will use\n   this memory for recording register information.  STARTS and ENDS\n   must be allocated using the malloc library routine, and must each\n   be at least NUM_REGS * sizeof (regoff_t) bytes long.\n\n   If NUM_REGS == 0, then subsequent matches should allocate their own\n   register data.\n\n   Unless this function is called, the first search or match using\n   PATTERN_BUFFER will allocate its own register data, without\n   freeing the old data.  */\n\nvoid\nre_set_registers (bufp, regs, num_regs, starts, ends)\n    struct re_pattern_buffer *bufp;\n    struct re_registers *regs;\n    unsigned num_regs;\n    regoff_t *starts, *ends;\n{\n  if (num_regs)\n    {\n      bufp->regs_allocated = REGS_REALLOCATE;\n      regs->num_regs = num_regs;\n      regs->start = starts;\n      regs->end = ends;\n    }\n  else\n    {\n      bufp->regs_allocated = REGS_UNALLOCATED;\n      regs->num_regs = 0;\n      regs->start = regs->end = (regoff_t *) 0;\n    }\n}\n\f\n/* Searching routines.  */\n\n/* Like re_search_2, below, but only one string is specified, and\n   doesn't let you say where to stop matching. */\n\nint\nre_search (bufp, string, size, startpos, range, regs)\n     struct re_pattern_buffer *bufp;\n     const char *string;\n     int size, startpos, range;\n     struct re_registers *regs;\n{\n  return re_search_2 (bufp, NULL, 0, string, size, startpos, range,\n\t\t      regs, size);\n}\n\n\n/* Using the compiled pattern in BUFP->buffer, first tries to match the\n   virtual concatenation of STRING1 and STRING2, starting first at index\n   STARTPOS, then at STARTPOS + 1, and so on.\n\n   STRING1 and STRING2 have length SIZE1 and SIZE2, respectively.\n\n   RANGE is how far to scan while trying to match.  RANGE = 0 means try\n   only at STARTPOS; in general, the last start tried is STARTPOS +\n   RANGE.\n\n   In REGS, return the indices of the virtual concatenation of STRING1\n   and STRING2 that matched the entire BUFP->buffer and its contained\n   subexpressions.\n\n   Do not consider matching one past the index STOP in the virtual\n   concatenation of STRING1 and STRING2.\n\n   We return either the position in the strings at which the match was\n   found, -1 if no match, or -2 if error (such as failure\n   stack overflow).  */\n\nint\nre_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop)\n     struct re_pattern_buffer *bufp;\n     const char *string1, *string2;\n     int size1, size2;\n     int startpos;\n     int range;\n     struct re_registers *regs;\n     int stop;\n{\n  int val;\n  register char *fastmap = bufp->fastmap;\n  register RE_TRANSLATE_TYPE translate = bufp->translate;\n  int total_size = size1 + size2;\n  int endpos = startpos + range;\n\n  /* Check for out-of-range STARTPOS.  */\n  if (startpos < 0 || startpos > total_size)\n    return -1;\n\n  /* Fix up RANGE if it might eventually take us outside\n     the virtual concatenation of STRING1 and STRING2.\n     Make sure we won't move STARTPOS below 0 or above TOTAL_SIZE.  */\n  if (endpos < 0)\n    range = 0 - startpos;\n  else if (endpos > total_size)\n    range = total_size - startpos;\n\n  /* If the search isn't to be a backwards one, don't waste time in a\n     search for a pattern that must be anchored.  */\n  if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == begbuf && range > 0)\n    {\n      if (startpos > 0)\n\treturn -1;\n      else\n\trange = 1;\n    }\n\n#ifdef emacs\n  /* In a forward search for something that starts with \\=.\n     don't keep searching past point.  */\n  if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == at_dot && range > 0)\n    {\n      range = PT - startpos;\n      if (range <= 0)\n\treturn -1;\n    }\n#endif /* emacs */\n\n  /* Update the fastmap now if not correct already.  */\n  if (fastmap && !bufp->fastmap_accurate)\n    if (re_compile_fastmap (bufp) == -2)\n      return -2;\n\n  /* Loop through the string, looking for a place to start matching.  */\n  for (;;)\n    {\n      /* If a fastmap is supplied, skip quickly over characters that\n         cannot be the start of a match.  If the pattern can match the\n         null string, however, we don't need to skip characters; we want\n         the first null string.  */\n      if (fastmap && startpos < total_size && !bufp->can_be_null)\n\t{\n\t  if (range > 0)\t/* Searching forwards.  */\n\t    {\n\t      register const char *d;\n\t      register int lim = 0;\n\t      int irange = range;\n\n              if (startpos < size1 && startpos + range >= size1)\n                lim = range - (size1 - startpos);\n\n\t      d = (startpos >= size1 ? string2 - size1 : string1) + startpos;\n\n              /* Written out as an if-else to avoid testing `translate'\n                 inside the loop.  */\n\t      if (translate)\n                while (range > lim\n                       && !fastmap[(unsigned char)\n\t\t\t\t   translate[(unsigned char) *d++]])\n                  range--;\n\t      else\n                while (range > lim && !fastmap[(unsigned char) *d++])\n                  range--;\n\n\t      startpos += irange - range;\n\t    }\n\t  else\t\t\t\t/* Searching backwards.  */\n\t    {\n\t      register char c = (size1 == 0 || startpos >= size1\n                                 ? string2[startpos - size1]\n                                 : string1[startpos]);\n\n\t      if (!fastmap[(unsigned char) TRANSLATE (c)])\n\t\tgoto advance;\n\t    }\n\t}\n\n      /* If can't match the null string, and that's all we have left, fail.  */\n      if (range >= 0 && startpos == total_size && fastmap\n          && !bufp->can_be_null)\n\treturn -1;\n\n      val = re_match_2_internal (bufp, string1, size1, string2, size2,\n\t\t\t\t startpos, regs, stop);\n#ifndef REGEX_MALLOC\n#ifdef C_ALLOCA\n      alloca (0);\n#endif\n#endif\n\n      if (val >= 0)\n\treturn startpos;\n\n      if (val == -2)\n\treturn -2;\n\n    advance:\n      if (!range)\n        break;\n      else if (range > 0)\n        {\n          range--;\n          startpos++;\n        }\n      else\n        {\n          range++;\n          startpos--;\n        }\n    }\n  return -1;\n} /* re_search_2 */\n\f\n/* This converts PTR, a pointer into one of the search strings `string1'\n   and `string2' into an offset from the beginning of that string.  */\n#define POINTER_TO_OFFSET(ptr)\t\t\t\\\n  (FIRST_STRING_P (ptr)\t\t\t\t\\\n   ? ((regoff_t) ((ptr) - string1))\t\t\\\n   : ((regoff_t) ((ptr) - string2 + size1)))\n\n/* Macros for dealing with the split strings in re_match_2.  */\n\n#define MATCHING_IN_FIRST_STRING  (dend == end_match_1)\n\n/* Call before fetching a character with *d.  This switches over to\n   string2 if necessary.  */\n#define PREFETCH()\t\t\t\t\t\t\t\\\n  while (d == dend)\t\t\t\t\t\t    \t\\\n    {\t\t\t\t\t\t\t\t\t\\\n      /* End of string2 => fail.  */\t\t\t\t\t\\\n      if (dend == end_match_2) \t\t\t\t\t\t\\\n        goto fail;\t\t\t\t\t\t\t\\\n      /* End of string1 => advance to string2.  */ \t\t\t\\\n      d = string2;\t\t\t\t\t\t        \\\n      dend = end_match_2;\t\t\t\t\t\t\\\n    }\n\n\n/* Test if at very beginning or at very end of the virtual concatenation\n   of `string1' and `string2'.  If only one string, it's `string2'.  */\n#define AT_STRINGS_BEG(d) ((d) == (size1 ? string1 : string2) || !size2)\n#define AT_STRINGS_END(d) ((d) == end2)\n\n\n/* Test if D points to a character which is word-constituent.  We have\n   two special cases to check for: if past the end of string1, look at\n   the first character in string2; and if before the beginning of\n   string2, look at the last character in string1.  */\n#define WORDCHAR_P(d)\t\t\t\t\t\t\t\\\n  (SYNTAX ((d) == end1 ? *string2\t\t\t\t\t\\\n           : (d) == string2 - 1 ? *(end1 - 1) : *(d))\t\t\t\\\n   == Sword)\n\n/* Disabled due to a compiler bug -- see comment at case wordbound */\n#if 0\n/* Test if the character before D and the one at D differ with respect\n   to being word-constituent.  */\n#define AT_WORD_BOUNDARY(d)\t\t\t\t\t\t\\\n  (AT_STRINGS_BEG (d) || AT_STRINGS_END (d)\t\t\t\t\\\n   || WORDCHAR_P (d - 1) != WORDCHAR_P (d))\n#endif\n\n/* Free everything we malloc.  */\n#ifdef MATCH_MAY_ALLOCATE\n#define FREE_VAR(var) if (var) REGEX_FREE (var); var = NULL\n#define FREE_VARIABLES()\t\t\t\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    REGEX_FREE_STACK (fail_stack.stack);\t\t\t\t\\\n    FREE_VAR (regstart);\t\t\t\t\t\t\\\n    FREE_VAR (regend);\t\t\t\t\t\t\t\\\n    FREE_VAR (old_regstart);\t\t\t\t\t\t\\\n    FREE_VAR (old_regend);\t\t\t\t\t\t\\\n    FREE_VAR (best_regstart);\t\t\t\t\t\t\\\n    FREE_VAR (best_regend);\t\t\t\t\t\t\\\n    FREE_VAR (reg_info);\t\t\t\t\t\t\\\n    FREE_VAR (reg_dummy);\t\t\t\t\t\t\\\n    FREE_VAR (reg_info_dummy);\t\t\t\t\t\t\\\n  } while (0)\n#else\n#define FREE_VARIABLES() ((void)0) /* Do nothing!  But inhibit gcc warning.  */\n#endif /* not MATCH_MAY_ALLOCATE */\n\n/* These values must meet several constraints.  They must not be valid\n   register values; since we have a limit of 255 registers (because\n   we use only one byte in the pattern for the register number), we can\n   use numbers larger than 255.  They must differ by 1, because of\n   NUM_FAILURE_ITEMS above.  And the value for the lowest register must\n   be larger than the value for the highest register, so we do not try\n   to actually save any registers when none are active.  */\n#define NO_HIGHEST_ACTIVE_REG (1 << BYTEWIDTH)\n#define NO_LOWEST_ACTIVE_REG (NO_HIGHEST_ACTIVE_REG + 1)\n\f\n/* Matching routines.  */\n\n#ifndef emacs   /* Emacs never uses this.  */\n/* re_match is like re_match_2 except it takes only a single string.  */\n\nint\nre_match (bufp, string, size, pos, regs)\n     struct re_pattern_buffer *bufp;\n     const char *string;\n     int size, pos;\n     struct re_registers *regs;\n{\n  int result = re_match_2_internal (bufp, NULL, 0, string, size,\n\t\t\t\t    pos, regs, size);\n#ifndef REGEX_MALLOC\n#ifdef C_ALLOCA\n  alloca (0);\n#endif\n#endif\n  return result;\n}\n#endif /* not emacs */\n\nstatic boolean group_match_null_string_p _RE_ARGS ((unsigned char **p,\n\t\t\t\t\t\t    unsigned char *end,\n\t\t\t\t\t\tregister_info_type *reg_info));\nstatic boolean alt_match_null_string_p _RE_ARGS ((unsigned char *p,\n\t\t\t\t\t\t  unsigned char *end,\n\t\t\t\t\t\tregister_info_type *reg_info));\nstatic boolean common_op_match_null_string_p _RE_ARGS ((unsigned char **p,\n\t\t\t\t\t\t\tunsigned char *end,\n\t\t\t\t\t\tregister_info_type *reg_info));\nstatic int bcmp_translate _RE_ARGS ((const char *s1, const char *s2,\n\t\t\t\t     int len, char *translate));\n\n/* re_match_2 matches the compiled pattern in BUFP against the\n   the (virtual) concatenation of STRING1 and STRING2 (of length SIZE1\n   and SIZE2, respectively).  We start matching at POS, and stop\n   matching at STOP.\n\n   If REGS is non-null and the `no_sub' field of BUFP is nonzero, we\n   store offsets for the substring each group matched in REGS.  See the\n   documentation for exactly how many groups we fill.\n\n   We return -1 if no match, -2 if an internal error (such as the\n   failure stack overflowing).  Otherwise, we return the length of the\n   matched substring.  */\n\nint\nre_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)\n     struct re_pattern_buffer *bufp;\n     const char *string1, *string2;\n     int size1, size2;\n     int pos;\n     struct re_registers *regs;\n     int stop;\n{\n  int result = re_match_2_internal (bufp, string1, size1, string2, size2,\n\t\t\t\t    pos, regs, stop);\n#ifndef REGEX_MALLOC\n#ifdef C_ALLOCA\n  alloca (0);\n#endif\n#endif\n  return result;\n}\n\n/* This is a separate function so that we can force an alloca cleanup\n   afterwards.  */\nstatic int\nre_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)\n     struct re_pattern_buffer *bufp;\n     const char *string1, *string2;\n     int size1, size2;\n     int pos;\n     struct re_registers *regs;\n     int stop;\n{\n  /* General temporaries.  */\n  int mcnt;\n  unsigned char *p1;\n\n  /* Just past the end of the corresponding string.  */\n  const char *end1, *end2;\n\n  /* Pointers into string1 and string2, just past the last characters in\n     each to consider matching.  */\n  const char *end_match_1, *end_match_2;\n\n  /* Where we are in the data, and the end of the current string.  */\n  const char *d, *dend;\n\n  /* Where we are in the pattern, and the end of the pattern.  */\n  unsigned char *p = bufp->buffer;\n  register unsigned char *pend = p + bufp->used;\n\n  /* Mark the opcode just after a start_memory, so we can test for an\n     empty subpattern when we get to the stop_memory.  */\n  unsigned char *just_past_start_mem = 0;\n\n  /* We use this to map every character in the string.  */\n  RE_TRANSLATE_TYPE translate = bufp->translate;\n\n  /* Failure point stack.  Each place that can handle a failure further\n     down the line pushes a failure point on this stack.  It consists of\n     restart, regend, and reg_info for all registers corresponding to\n     the subexpressions we're currently inside, plus the number of such\n     registers, and, finally, two char *'s.  The first char * is where\n     to resume scanning the pattern; the second one is where to resume\n     scanning the strings.  If the latter is zero, the failure point is\n     a ``dummy''; if a failure happens and the failure point is a dummy,\n     it gets discarded and the next next one is tried.  */\n#ifdef MATCH_MAY_ALLOCATE /* otherwise, this is global.  */\n  fail_stack_type fail_stack;\n#endif\n#ifdef DEBUG\n  static unsigned failure_id = 0;\n  unsigned nfailure_points_pushed = 0, nfailure_points_popped = 0;\n#endif\n\n#ifdef REL_ALLOC\n  /* This holds the pointer to the failure stack, when\n     it is allocated relocatably.  */\n  fail_stack_elt_t *failure_stack_ptr;\n#endif\n\n  /* We fill all the registers internally, independent of what we\n     return, for use in backreferences.  The number here includes\n     an element for register zero.  */\n  size_t num_regs = bufp->re_nsub + 1;\n\n  /* The currently active registers.  */\n  active_reg_t lowest_active_reg = NO_LOWEST_ACTIVE_REG;\n  active_reg_t highest_active_reg = NO_HIGHEST_ACTIVE_REG;\n\n  /* Information on the contents of registers. These are pointers into\n     the input strings; they record just what was matched (on this\n     attempt) by a subexpression part of the pattern, that is, the\n     regnum-th regstart pointer points to where in the pattern we began\n     matching and the regnum-th regend points to right after where we\n     stopped matching the regnum-th subexpression.  (The zeroth register\n     keeps track of what the whole pattern matches.)  */\n#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global.  */\n  const char **regstart, **regend;\n#endif\n\n  /* If a group that's operated upon by a repetition operator fails to\n     match anything, then the register for its start will need to be\n     restored because it will have been set to wherever in the string we\n     are when we last see its open-group operator.  Similarly for a\n     register's end.  */\n#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global.  */\n  const char **old_regstart, **old_regend;\n#endif\n\n  /* The is_active field of reg_info helps us keep track of which (possibly\n     nested) subexpressions we are currently in. The matched_something\n     field of reg_info[reg_num] helps us tell whether or not we have\n     matched any of the pattern so far this time through the reg_num-th\n     subexpression.  These two fields get reset each time through any\n     loop their register is in.  */\n#ifdef MATCH_MAY_ALLOCATE /* otherwise, this is global.  */\n  register_info_type *reg_info;\n#endif\n\n  /* The following record the register info as found in the above\n     variables when we find a match better than any we've seen before.\n     This happens as we backtrack through the failure points, which in\n     turn happens only if we have not yet matched the entire string. */\n  unsigned best_regs_set = false;\n#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global.  */\n  const char **best_regstart, **best_regend;\n#endif\n\n  /* Logically, this is `best_regend[0]'.  But we don't want to have to\n     allocate space for that if we're not allocating space for anything\n     else (see below).  Also, we never need info about register 0 for\n     any of the other register vectors, and it seems rather a kludge to\n     treat `best_regend' differently than the rest.  So we keep track of\n     the end of the best match so far in a separate variable.  We\n     initialize this to NULL so that when we backtrack the first time\n     and need to test it, it's not garbage.  */\n  const char *match_end = NULL;\n\n  /* This helps SET_REGS_MATCHED avoid doing redundant work.  */\n  int set_regs_matched_done = 0;\n\n  /* Used when we pop values we don't care about.  */\n#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global.  */\n  const char **reg_dummy;\n  register_info_type *reg_info_dummy;\n#endif\n\n#ifdef DEBUG\n  /* Counts the total number of registers pushed.  */\n  unsigned num_regs_pushed = 0;\n#endif\n\n  DEBUG_PRINT1 (\"\\n\\nEntering re_match_2.\\n\");\n\n  INIT_FAIL_STACK ();\n\n#ifdef MATCH_MAY_ALLOCATE\n  /* Do not bother to initialize all the register variables if there are\n     no groups in the pattern, as it takes a fair amount of time.  If\n     there are groups, we include space for register 0 (the whole\n     pattern), even though we never use it, since it simplifies the\n     array indexing.  We should fix this.  */\n  if (bufp->re_nsub)\n    {\n      regstart = REGEX_TALLOC (num_regs, const char *);\n      regend = REGEX_TALLOC (num_regs, const char *);\n      old_regstart = REGEX_TALLOC (num_regs, const char *);\n      old_regend = REGEX_TALLOC (num_regs, const char *);\n      best_regstart = REGEX_TALLOC (num_regs, const char *);\n      best_regend = REGEX_TALLOC (num_regs, const char *);\n      reg_info = REGEX_TALLOC (num_regs, register_info_type);\n      reg_dummy = REGEX_TALLOC (num_regs, const char *);\n      reg_info_dummy = REGEX_TALLOC (num_regs, register_info_type);\n\n      if (!(regstart && regend && old_regstart && old_regend && reg_info\n            && best_regstart && best_regend && reg_dummy && reg_info_dummy))\n        {\n          FREE_VARIABLES ();\n          return -2;\n        }\n    }\n  else\n    {\n      /* We must initialize all our variables to NULL, so that\n         `FREE_VARIABLES' doesn't try to free them.  */\n      regstart = regend = old_regstart = old_regend = best_regstart\n        = best_regend = reg_dummy = NULL;\n      reg_info = reg_info_dummy = (register_info_type *) NULL;\n    }\n#endif /* MATCH_MAY_ALLOCATE */\n\n  /* The starting position is bogus.  */\n  if (pos < 0 || pos > size1 + size2)\n    {\n      FREE_VARIABLES ();\n      return -1;\n    }\n\n  /* Initialize subexpression text positions to -1 to mark ones that no\n     start_memory/stop_memory has been seen for. Also initialize the\n     register information struct.  */\n  for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++)\n    {\n      regstart[mcnt] = regend[mcnt]\n        = old_regstart[mcnt] = old_regend[mcnt] = REG_UNSET_VALUE;\n\n      REG_MATCH_NULL_STRING_P (reg_info[mcnt]) = MATCH_NULL_UNSET_VALUE;\n      IS_ACTIVE (reg_info[mcnt]) = 0;\n      MATCHED_SOMETHING (reg_info[mcnt]) = 0;\n      EVER_MATCHED_SOMETHING (reg_info[mcnt]) = 0;\n    }\n\n  /* We move `string1' into `string2' if the latter's empty -- but not if\n     `string1' is null.  */\n  if (size2 == 0 && string1 != NULL)\n    {\n      string2 = string1;\n      size2 = size1;\n      string1 = 0;\n      size1 = 0;\n    }\n  end1 = string1 + size1;\n  end2 = string2 + size2;\n\n  /* Compute where to stop matching, within the two strings.  */\n  if (stop <= size1)\n    {\n      end_match_1 = string1 + stop;\n      end_match_2 = string2;\n    }\n  else\n    {\n      end_match_1 = end1;\n      end_match_2 = string2 + stop - size1;\n    }\n\n  /* `p' scans through the pattern as `d' scans through the data.\n     `dend' is the end of the input string that `d' points within.  `d'\n     is advanced into the following input string whenever necessary, but\n     this happens before fetching; therefore, at the beginning of the\n     loop, `d' can be pointing at the end of a string, but it cannot\n     equal `string2'.  */\n  if (size1 > 0 && pos <= size1)\n    {\n      d = string1 + pos;\n      dend = end_match_1;\n    }\n  else\n    {\n      d = string2 + pos - size1;\n      dend = end_match_2;\n    }\n\n  DEBUG_PRINT1 (\"The compiled pattern is:\\n\");\n  DEBUG_PRINT_COMPILED_PATTERN (bufp, p, pend);\n  DEBUG_PRINT1 (\"The string to match is: `\");\n  DEBUG_PRINT_DOUBLE_STRING (d, string1, size1, string2, size2);\n  DEBUG_PRINT1 (\"'\\n\");\n\n  /* This loops over pattern commands.  It exits by returning from the\n     function if the match is complete, or it drops through if the match\n     fails at this starting point in the input data.  */\n  for (;;)\n    {\n#ifdef _LIBC\n      DEBUG_PRINT2 (\"\\n%p: \", p);\n#else\n      DEBUG_PRINT2 (\"\\n0x%x: \", p);\n#endif\n\n      if (p == pend)\n\t{ /* End of pattern means we might have succeeded.  */\n          DEBUG_PRINT1 (\"end of pattern ... \");\n\n\t  /* If we haven't matched the entire string, and we want the\n             longest match, try backtracking.  */\n          if (d != end_match_2)\n\t    {\n\t      /* 1 if this match ends in the same string (string1 or string2)\n\t\t as the best previous match.  */\n\t      boolean same_str_p = (FIRST_STRING_P (match_end)\n\t\t\t\t    == MATCHING_IN_FIRST_STRING);\n\t      /* 1 if this match is the best seen so far.  */\n\t      boolean best_match_p;\n\n\t      /* AIX compiler got confused when this was combined\n\t\t with the previous declaration.  */\n\t      if (same_str_p)\n\t\tbest_match_p = d > match_end;\n\t      else\n\t\tbest_match_p = !MATCHING_IN_FIRST_STRING;\n\n              DEBUG_PRINT1 (\"backtracking.\\n\");\n\n              if (!FAIL_STACK_EMPTY ())\n                { /* More failure points to try.  */\n\n                  /* If exceeds best match so far, save it.  */\n                  if (!best_regs_set || best_match_p)\n                    {\n                      best_regs_set = true;\n                      match_end = d;\n\n                      DEBUG_PRINT1 (\"\\nSAVING match as best so far.\\n\");\n\n                      for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++)\n                        {\n                          best_regstart[mcnt] = regstart[mcnt];\n                          best_regend[mcnt] = regend[mcnt];\n                        }\n                    }\n                  goto fail;\n                }\n\n              /* If no failure points, don't restore garbage.  And if\n                 last match is real best match, don't restore second\n                 best one. */\n              else if (best_regs_set && !best_match_p)\n                {\n  \t        restore_best_regs:\n                  /* Restore best match.  It may happen that `dend ==\n                     end_match_1' while the restored d is in string2.\n                     For example, the pattern `x.*y.*z' against the\n                     strings `x-' and `y-z-', if the two strings are\n                     not consecutive in memory.  */\n                  DEBUG_PRINT1 (\"Restoring best registers.\\n\");\n\n                  d = match_end;\n                  dend = ((d >= string1 && d <= end1)\n\t\t           ? end_match_1 : end_match_2);\n\n\t\t  for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++)\n\t\t    {\n\t\t      regstart[mcnt] = best_regstart[mcnt];\n\t\t      regend[mcnt] = best_regend[mcnt];\n\t\t    }\n                }\n            } /* d != end_match_2 */\n\n\tsucceed_label:\n          DEBUG_PRINT1 (\"Accepting match.\\n\");\n\n          /* If caller wants register contents data back, do it.  */\n          if (regs && !bufp->no_sub)\n\t    {\n              /* Have the register data arrays been allocated?  */\n              if (bufp->regs_allocated == REGS_UNALLOCATED)\n                { /* No.  So allocate them with malloc.  We need one\n                     extra element beyond `num_regs' for the `-1' marker\n                     GNU code uses.  */\n                  regs->num_regs = MAX (RE_NREGS, num_regs + 1);\n                  regs->start = TALLOC (regs->num_regs, regoff_t);\n                  regs->end = TALLOC (regs->num_regs, regoff_t);\n                  if (regs->start == NULL || regs->end == NULL)\n\t\t    {\n\t\t      FREE_VARIABLES ();\n\t\t      return -2;\n\t\t    }\n                  bufp->regs_allocated = REGS_REALLOCATE;\n                }\n              else if (bufp->regs_allocated == REGS_REALLOCATE)\n                { /* Yes.  If we need more elements than were already\n                     allocated, reallocate them.  If we need fewer, just\n                     leave it alone.  */\n                  if (regs->num_regs < num_regs + 1)\n                    {\n                      regs->num_regs = num_regs + 1;\n                      RETALLOC (regs->start, regs->num_regs, regoff_t);\n                      RETALLOC (regs->end, regs->num_regs, regoff_t);\n                      if (regs->start == NULL || regs->end == NULL)\n\t\t\t{\n\t\t\t  FREE_VARIABLES ();\n\t\t\t  return -2;\n\t\t\t}\n                    }\n                }\n              else\n\t\t{\n\t\t  /* These braces fend off a \"empty body in an else-statement\"\n\t\t     warning under GCC when assert expands to nothing.  */\n\t\t  assert (bufp->regs_allocated == REGS_FIXED);\n\t\t}\n\n              /* Convert the pointer data in `regstart' and `regend' to\n                 indices.  Register zero has to be set differently,\n                 since we haven't kept track of any info for it.  */\n              if (regs->num_regs > 0)\n                {\n                  regs->start[0] = pos;\n                  regs->end[0] = (MATCHING_IN_FIRST_STRING\n\t\t\t\t  ? ((regoff_t) (d - string1))\n\t\t\t          : ((regoff_t) (d - string2 + size1)));\n                }\n\n              /* Go through the first `min (num_regs, regs->num_regs)'\n                 registers, since that is all we initialized.  */\n\t      for (mcnt = 1; (unsigned) mcnt < MIN (num_regs, regs->num_regs);\n\t\t   mcnt++)\n\t\t{\n                  if (REG_UNSET (regstart[mcnt]) || REG_UNSET (regend[mcnt]))\n                    regs->start[mcnt] = regs->end[mcnt] = -1;\n                  else\n                    {\n\t\t      regs->start[mcnt]\n\t\t\t= (regoff_t) POINTER_TO_OFFSET (regstart[mcnt]);\n                      regs->end[mcnt]\n\t\t\t= (regoff_t) POINTER_TO_OFFSET (regend[mcnt]);\n                    }\n\t\t}\n\n              /* If the regs structure we return has more elements than\n                 were in the pattern, set the extra elements to -1.  If\n                 we (re)allocated the registers, this is the case,\n                 because we always allocate enough to have at least one\n                 -1 at the end.  */\n              for (mcnt = num_regs; (unsigned) mcnt < regs->num_regs; mcnt++)\n                regs->start[mcnt] = regs->end[mcnt] = -1;\n\t    } /* regs && !bufp->no_sub */\n\n          DEBUG_PRINT4 (\"%u failure points pushed, %u popped (%u remain).\\n\",\n                        nfailure_points_pushed, nfailure_points_popped,\n                        nfailure_points_pushed - nfailure_points_popped);\n          DEBUG_PRINT2 (\"%u registers pushed.\\n\", num_regs_pushed);\n\n          mcnt = d - pos - (MATCHING_IN_FIRST_STRING\n\t\t\t    ? string1\n\t\t\t    : string2 - size1);\n\n          DEBUG_PRINT2 (\"Returning %d from re_match_2.\\n\", mcnt);\n\n          FREE_VARIABLES ();\n          return mcnt;\n        }\n\n      /* Otherwise match next pattern command.  */\n      switch (SWITCH_ENUM_CAST ((re_opcode_t) *p++))\n\t{\n        /* Ignore these.  Used to ignore the n of succeed_n's which\n           currently have n == 0.  */\n        case no_op:\n          DEBUG_PRINT1 (\"EXECUTING no_op.\\n\");\n          break;\n\n\tcase succeed:\n          DEBUG_PRINT1 (\"EXECUTING succeed.\\n\");\n\t  goto succeed_label;\n\n        /* Match the next n pattern characters exactly.  The following\n           byte in the pattern defines n, and the n bytes after that\n           are the characters to match.  */\n\tcase exactn:\n\t  mcnt = *p++;\n          DEBUG_PRINT2 (\"EXECUTING exactn %d.\\n\", mcnt);\n\n          /* This is written out as an if-else so we don't waste time\n             testing `translate' inside the loop.  */\n          if (translate)\n\t    {\n\t      do\n\t\t{\n\t\t  PREFETCH ();\n\t\t  if ((unsigned char) translate[(unsigned char) *d++]\n\t\t      != (unsigned char) *p++)\n                    goto fail;\n\t\t}\n\t      while (--mcnt);\n\t    }\n\t  else\n\t    {\n\t      do\n\t\t{\n\t\t  PREFETCH ();\n\t\t  if (*d++ != (char) *p++) goto fail;\n\t\t}\n\t      while (--mcnt);\n\t    }\n\t  SET_REGS_MATCHED ();\n          break;\n\n\n        /* Match any character except possibly a newline or a null.  */\n\tcase anychar:\n          DEBUG_PRINT1 (\"EXECUTING anychar.\\n\");\n\n          PREFETCH ();\n\n          if ((!(bufp->syntax & RE_DOT_NEWLINE) && TRANSLATE (*d) == '\\n')\n              || (bufp->syntax & RE_DOT_NOT_NULL && TRANSLATE (*d) == '\\000'))\n\t    goto fail;\n\n          SET_REGS_MATCHED ();\n          DEBUG_PRINT2 (\"  Matched `%d'.\\n\", *d);\n          d++;\n\t  break;\n\n\n\tcase charset:\n\tcase charset_not:\n\t  {\n\t    register unsigned char c;\n\t    boolean not = (re_opcode_t) *(p - 1) == charset_not;\n\n            DEBUG_PRINT2 (\"EXECUTING charset%s.\\n\", not ? \"_not\" : \"\");\n\n\t    PREFETCH ();\n\t    c = TRANSLATE (*d); /* The character to match.  */\n\n            /* Cast to `unsigned' instead of `unsigned char' in case the\n               bit list is a full 32 bytes long.  */\n\t    if (c < (unsigned) (*p * BYTEWIDTH)\n\t\t&& p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))\n\t      not = !not;\n\n\t    p += 1 + *p;\n\n\t    if (!not) goto fail;\n\n\t    SET_REGS_MATCHED ();\n            d++;\n\t    break;\n\t  }\n\n\n        /* The beginning of a group is represented by start_memory.\n           The arguments are the register number in the next byte, and the\n           number of groups inner to this one in the next.  The text\n           matched within the group is recorded (in the internal\n           registers data structure) under the register number.  */\n        case start_memory:\n\t  DEBUG_PRINT3 (\"EXECUTING start_memory %d (%d):\\n\", *p, p[1]);\n\n          /* Find out if this group can match the empty string.  */\n\t  p1 = p;\t\t/* To send to group_match_null_string_p.  */\n\n          if (REG_MATCH_NULL_STRING_P (reg_info[*p]) == MATCH_NULL_UNSET_VALUE)\n            REG_MATCH_NULL_STRING_P (reg_info[*p])\n              = group_match_null_string_p (&p1, pend, reg_info);\n\n          /* Save the position in the string where we were the last time\n             we were at this open-group operator in case the group is\n             operated upon by a repetition operator, e.g., with `(a*)*b'\n             against `ab'; then we want to ignore where we are now in\n             the string in case this attempt to match fails.  */\n          old_regstart[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p])\n                             ? REG_UNSET (regstart[*p]) ? d : regstart[*p]\n                             : regstart[*p];\n\t  DEBUG_PRINT2 (\"  old_regstart: %d\\n\",\n\t\t\t POINTER_TO_OFFSET (old_regstart[*p]));\n\n          regstart[*p] = d;\n\t  DEBUG_PRINT2 (\"  regstart: %d\\n\", POINTER_TO_OFFSET (regstart[*p]));\n\n          IS_ACTIVE (reg_info[*p]) = 1;\n          MATCHED_SOMETHING (reg_info[*p]) = 0;\n\n\t  /* Clear this whenever we change the register activity status.  */\n\t  set_regs_matched_done = 0;\n\n          /* This is the new highest active register.  */\n          highest_active_reg = *p;\n\n          /* If nothing was active before, this is the new lowest active\n             register.  */\n          if (lowest_active_reg == NO_LOWEST_ACTIVE_REG)\n            lowest_active_reg = *p;\n\n          /* Move past the register number and inner group count.  */\n          p += 2;\n\t  just_past_start_mem = p;\n\n          break;\n\n\n        /* The stop_memory opcode represents the end of a group.  Its\n           arguments are the same as start_memory's: the register\n           number, and the number of inner groups.  */\n\tcase stop_memory:\n\t  DEBUG_PRINT3 (\"EXECUTING stop_memory %d (%d):\\n\", *p, p[1]);\n\n          /* We need to save the string position the last time we were at\n             this close-group operator in case the group is operated\n             upon by a repetition operator, e.g., with `((a*)*(b*)*)*'\n             against `aba'; then we want to ignore where we are now in\n             the string in case this attempt to match fails.  */\n          old_regend[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p])\n                           ? REG_UNSET (regend[*p]) ? d : regend[*p]\n\t\t\t   : regend[*p];\n\t  DEBUG_PRINT2 (\"      old_regend: %d\\n\",\n\t\t\t POINTER_TO_OFFSET (old_regend[*p]));\n\n          regend[*p] = d;\n\t  DEBUG_PRINT2 (\"      regend: %d\\n\", POINTER_TO_OFFSET (regend[*p]));\n\n          /* This register isn't active anymore.  */\n          IS_ACTIVE (reg_info[*p]) = 0;\n\n\t  /* Clear this whenever we change the register activity status.  */\n\t  set_regs_matched_done = 0;\n\n          /* If this was the only register active, nothing is active\n             anymore.  */\n          if (lowest_active_reg == highest_active_reg)\n            {\n              lowest_active_reg = NO_LOWEST_ACTIVE_REG;\n              highest_active_reg = NO_HIGHEST_ACTIVE_REG;\n            }\n          else\n            { /* We must scan for the new highest active register, since\n                 it isn't necessarily one less than now: consider\n                 (a(b)c(d(e)f)g).  When group 3 ends, after the f), the\n                 new highest active register is 1.  */\n              unsigned char r = *p - 1;\n              while (r > 0 && !IS_ACTIVE (reg_info[r]))\n                r--;\n\n              /* If we end up at register zero, that means that we saved\n                 the registers as the result of an `on_failure_jump', not\n                 a `start_memory', and we jumped to past the innermost\n                 `stop_memory'.  For example, in ((.)*) we save\n                 registers 1 and 2 as a result of the *, but when we pop\n                 back to the second ), we are at the stop_memory 1.\n                 Thus, nothing is active.  */\n\t      if (r == 0)\n                {\n                  lowest_active_reg = NO_LOWEST_ACTIVE_REG;\n                  highest_active_reg = NO_HIGHEST_ACTIVE_REG;\n                }\n              else\n                highest_active_reg = r;\n            }\n\n          /* If just failed to match something this time around with a\n             group that's operated on by a repetition operator, try to\n             force exit from the ``loop'', and restore the register\n             information for this group that we had before trying this\n             last match.  */\n          if ((!MATCHED_SOMETHING (reg_info[*p])\n               || just_past_start_mem == p - 1)\n\t      && (p + 2) < pend)\n            {\n              boolean is_a_jump_n = false;\n\n              p1 = p + 2;\n              mcnt = 0;\n              switch ((re_opcode_t) *p1++)\n                {\n                  case jump_n:\n\t\t    is_a_jump_n = true;\n                  case pop_failure_jump:\n\t\t  case maybe_pop_jump:\n\t\t  case jump:\n\t\t  case dummy_failure_jump:\n                    EXTRACT_NUMBER_AND_INCR (mcnt, p1);\n\t\t    if (is_a_jump_n)\n\t\t      p1 += 2;\n                    break;\n\n                  default:\n                    /* do nothing */ ;\n                }\n\t      p1 += mcnt;\n\n              /* If the next operation is a jump backwards in the pattern\n\t         to an on_failure_jump right before the start_memory\n                 corresponding to this stop_memory, exit from the loop\n                 by forcing a failure after pushing on the stack the\n                 on_failure_jump's jump in the pattern, and d.  */\n              if (mcnt < 0 && (re_opcode_t) *p1 == on_failure_jump\n                  && (re_opcode_t) p1[3] == start_memory && p1[4] == *p)\n\t\t{\n                  /* If this group ever matched anything, then restore\n                     what its registers were before trying this last\n                     failed match, e.g., with `(a*)*b' against `ab' for\n                     regstart[1], and, e.g., with `((a*)*(b*)*)*'\n                     against `aba' for regend[3].\n\n                     Also restore the registers for inner groups for,\n                     e.g., `((a*)(b*))*' against `aba' (register 3 would\n                     otherwise get trashed).  */\n\n                  if (EVER_MATCHED_SOMETHING (reg_info[*p]))\n\t\t    {\n\t\t      unsigned r;\n\n                      EVER_MATCHED_SOMETHING (reg_info[*p]) = 0;\n\n\t\t      /* Restore this and inner groups' (if any) registers.  */\n                      for (r = *p; r < (unsigned) *p + (unsigned) *(p + 1);\n\t\t\t   r++)\n                        {\n                          regstart[r] = old_regstart[r];\n\n                          /* xx why this test?  */\n                          if (old_regend[r] >= regstart[r])\n                            regend[r] = old_regend[r];\n                        }\n                    }\n\t\t  p1++;\n                  EXTRACT_NUMBER_AND_INCR (mcnt, p1);\n                  PUSH_FAILURE_POINT (p1 + mcnt, d, -2);\n\n                  goto fail;\n                }\n            }\n\n          /* Move past the register number and the inner group count.  */\n          p += 2;\n          break;\n\n\n\t/* \\<digit> has been turned into a `duplicate' command which is\n           followed by the numeric value of <digit> as the register number.  */\n        case duplicate:\n\t  {\n\t    register const char *d2, *dend2;\n\t    int regno = *p++;   /* Get which register to match against.  */\n\t    DEBUG_PRINT2 (\"EXECUTING duplicate %d.\\n\", regno);\n\n\t    /* Can't back reference a group which we've never matched.  */\n            if (REG_UNSET (regstart[regno]) || REG_UNSET (regend[regno]))\n              goto fail;\n\n            /* Where in input to try to start matching.  */\n            d2 = regstart[regno];\n\n            /* Where to stop matching; if both the place to start and\n               the place to stop matching are in the same string, then\n               set to the place to stop, otherwise, for now have to use\n               the end of the first string.  */\n\n            dend2 = ((FIRST_STRING_P (regstart[regno])\n\t\t      == FIRST_STRING_P (regend[regno]))\n\t\t     ? regend[regno] : end_match_1);\n\t    for (;;)\n\t      {\n\t\t/* If necessary, advance to next segment in register\n                   contents.  */\n\t\twhile (d2 == dend2)\n\t\t  {\n\t\t    if (dend2 == end_match_2) break;\n\t\t    if (dend2 == regend[regno]) break;\n\n                    /* End of string1 => advance to string2. */\n                    d2 = string2;\n                    dend2 = regend[regno];\n\t\t  }\n\t\t/* At end of register contents => success */\n\t\tif (d2 == dend2) break;\n\n\t\t/* If necessary, advance to next segment in data.  */\n\t\tPREFETCH ();\n\n\t\t/* How many characters left in this segment to match.  */\n\t\tmcnt = dend - d;\n\n\t\t/* Want how many consecutive characters we can match in\n                   one shot, so, if necessary, adjust the count.  */\n                if (mcnt > dend2 - d2)\n\t\t  mcnt = dend2 - d2;\n\n\t\t/* Compare that many; failure if mismatch, else move\n                   past them.  */\n\t\tif (translate\n                    ? bcmp_translate (d, d2, mcnt, translate)\n                    : bcmp (d, d2, mcnt))\n\t\t  goto fail;\n\t\td += mcnt, d2 += mcnt;\n\n\t\t/* Do this because we've match some characters.  */\n\t\tSET_REGS_MATCHED ();\n\t      }\n\t  }\n\t  break;\n\n\n        /* begline matches the empty string at the beginning of the string\n           (unless `not_bol' is set in `bufp'), and, if\n           `newline_anchor' is set, after newlines.  */\n\tcase begline:\n          DEBUG_PRINT1 (\"EXECUTING begline.\\n\");\n\n          if (AT_STRINGS_BEG (d))\n            {\n              if (!bufp->not_bol) break;\n            }\n          else if (d[-1] == '\\n' && bufp->newline_anchor)\n            {\n              break;\n            }\n          /* In all other cases, we fail.  */\n          goto fail;\n\n\n        /* endline is the dual of begline.  */\n\tcase endline:\n          DEBUG_PRINT1 (\"EXECUTING endline.\\n\");\n\n          if (AT_STRINGS_END (d))\n            {\n              if (!bufp->not_eol) break;\n            }\n\n          /* We have to ``prefetch'' the next character.  */\n          else if ((d == end1 ? *string2 : *d) == '\\n'\n                   && bufp->newline_anchor)\n            {\n              break;\n            }\n          goto fail;\n\n\n\t/* Match at the very beginning of the data.  */\n        case begbuf:\n          DEBUG_PRINT1 (\"EXECUTING begbuf.\\n\");\n          if (AT_STRINGS_BEG (d))\n            break;\n          goto fail;\n\n\n\t/* Match at the very end of the data.  */\n        case endbuf:\n          DEBUG_PRINT1 (\"EXECUTING endbuf.\\n\");\n\t  if (AT_STRINGS_END (d))\n\t    break;\n          goto fail;\n\n\n        /* on_failure_keep_string_jump is used to optimize `.*\\n'.  It\n           pushes NULL as the value for the string on the stack.  Then\n           `pop_failure_point' will keep the current value for the\n           string, instead of restoring it.  To see why, consider\n           matching `foo\\nbar' against `.*\\n'.  The .* matches the foo;\n           then the . fails against the \\n.  But the next thing we want\n           to do is match the \\n against the \\n; if we restored the\n           string value, we would be back at the foo.\n\n           Because this is used only in specific cases, we don't need to\n           check all the things that `on_failure_jump' does, to make\n           sure the right things get saved on the stack.  Hence we don't\n           share its code.  The only reason to push anything on the\n           stack at all is that otherwise we would have to change\n           `anychar's code to do something besides goto fail in this\n           case; that seems worse than this.  */\n        case on_failure_keep_string_jump:\n          DEBUG_PRINT1 (\"EXECUTING on_failure_keep_string_jump\");\n\n          EXTRACT_NUMBER_AND_INCR (mcnt, p);\n#ifdef _LIBC\n          DEBUG_PRINT3 (\" %d (to %p):\\n\", mcnt, p + mcnt);\n#else\n          DEBUG_PRINT3 (\" %d (to 0x%x):\\n\", mcnt, p + mcnt);\n#endif\n\n          PUSH_FAILURE_POINT (p + mcnt, NULL, -2);\n          break;\n\n\n\t/* Uses of on_failure_jump:\n\n           Each alternative starts with an on_failure_jump that points\n           to the beginning of the next alternative.  Each alternative\n           except the last ends with a jump that in effect jumps past\n           the rest of the alternatives.  (They really jump to the\n           ending jump of the following alternative, because tensioning\n           these jumps is a hassle.)\n\n           Repeats start with an on_failure_jump that points past both\n           the repetition text and either the following jump or\n           pop_failure_jump back to this on_failure_jump.  */\n\tcase on_failure_jump:\n        on_failure:\n          DEBUG_PRINT1 (\"EXECUTING on_failure_jump\");\n\n          EXTRACT_NUMBER_AND_INCR (mcnt, p);\n#ifdef _LIBC\n          DEBUG_PRINT3 (\" %d (to %p)\", mcnt, p + mcnt);\n#else\n          DEBUG_PRINT3 (\" %d (to 0x%x)\", mcnt, p + mcnt);\n#endif\n\n          /* If this on_failure_jump comes right before a group (i.e.,\n             the original * applied to a group), save the information\n             for that group and all inner ones, so that if we fail back\n             to this point, the group's information will be correct.\n             For example, in \\(a*\\)*\\1, we need the preceding group,\n             and in \\(zz\\(a*\\)b*\\)\\2, we need the inner group.  */\n\n          /* We can't use `p' to check ahead because we push\n             a failure point to `p + mcnt' after we do this.  */\n          p1 = p;\n\n          /* We need to skip no_op's before we look for the\n             start_memory in case this on_failure_jump is happening as\n             the result of a completed succeed_n, as in \\(a\\)\\{1,3\\}b\\1\n             against aba.  */\n          while (p1 < pend && (re_opcode_t) *p1 == no_op)\n            p1++;\n\n          if (p1 < pend && (re_opcode_t) *p1 == start_memory)\n            {\n              /* We have a new highest active register now.  This will\n                 get reset at the start_memory we are about to get to,\n                 but we will have saved all the registers relevant to\n                 this repetition op, as described above.  */\n              highest_active_reg = *(p1 + 1) + *(p1 + 2);\n              if (lowest_active_reg == NO_LOWEST_ACTIVE_REG)\n                lowest_active_reg = *(p1 + 1);\n            }\n\n          DEBUG_PRINT1 (\":\\n\");\n          PUSH_FAILURE_POINT (p + mcnt, d, -2);\n          break;\n\n\n        /* A smart repeat ends with `maybe_pop_jump'.\n\t   We change it to either `pop_failure_jump' or `jump'.  */\n        case maybe_pop_jump:\n          EXTRACT_NUMBER_AND_INCR (mcnt, p);\n          DEBUG_PRINT2 (\"EXECUTING maybe_pop_jump %d.\\n\", mcnt);\n          {\n\t    register unsigned char *p2 = p;\n\n            /* Compare the beginning of the repeat with what in the\n               pattern follows its end. If we can establish that there\n               is nothing that they would both match, i.e., that we\n               would have to backtrack because of (as in, e.g., `a*a')\n               then we can change to pop_failure_jump, because we'll\n               never have to backtrack.\n\n               This is not true in the case of alternatives: in\n               `(a|ab)*' we do need to backtrack to the `ab' alternative\n               (e.g., if the string was `ab').  But instead of trying to\n               detect that here, the alternative has put on a dummy\n               failure point which is what we will end up popping.  */\n\n\t    /* Skip over open/close-group commands.\n\t       If what follows this loop is a ...+ construct,\n\t       look at what begins its body, since we will have to\n\t       match at least one of that.  */\n\t    while (1)\n\t      {\n\t\tif (p2 + 2 < pend\n\t\t    && ((re_opcode_t) *p2 == stop_memory\n\t\t\t|| (re_opcode_t) *p2 == start_memory))\n\t\t  p2 += 3;\n\t\telse if (p2 + 6 < pend\n\t\t\t && (re_opcode_t) *p2 == dummy_failure_jump)\n\t\t  p2 += 6;\n\t\telse\n\t\t  break;\n\t      }\n\n\t    p1 = p + mcnt;\n\t    /* p1[0] ... p1[2] are the `on_failure_jump' corresponding\n\t       to the `maybe_finalize_jump' of this case.  Examine what\n\t       follows.  */\n\n            /* If we're at the end of the pattern, we can change.  */\n            if (p2 == pend)\n\t      {\n\t\t/* Consider what happens when matching \":\\(.*\\)\"\n\t\t   against \":/\".  I don't really understand this code\n\t\t   yet.  */\n  \t        p[-3] = (unsigned char) pop_failure_jump;\n                DEBUG_PRINT1\n                  (\"  End of pattern: change to `pop_failure_jump'.\\n\");\n              }\n\n            else if ((re_opcode_t) *p2 == exactn\n\t\t     || (bufp->newline_anchor && (re_opcode_t) *p2 == endline))\n\t      {\n\t\tregister unsigned char c\n                  = *p2 == (unsigned char) endline ? '\\n' : p2[2];\n\n                if ((re_opcode_t) p1[3] == exactn && p1[5] != c)\n                  {\n  \t\t    p[-3] = (unsigned char) pop_failure_jump;\n                    DEBUG_PRINT3 (\"  %c != %c => pop_failure_jump.\\n\",\n                                  c, p1[5]);\n                  }\n\n\t\telse if ((re_opcode_t) p1[3] == charset\n\t\t\t || (re_opcode_t) p1[3] == charset_not)\n\t\t  {\n\t\t    int not = (re_opcode_t) p1[3] == charset_not;\n\n\t\t    if (c < (unsigned char) (p1[4] * BYTEWIDTH)\n\t\t\t&& p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))\n\t\t      not = !not;\n\n                    /* `not' is equal to 1 if c would match, which means\n                        that we can't change to pop_failure_jump.  */\n\t\t    if (!not)\n                      {\n  \t\t        p[-3] = (unsigned char) pop_failure_jump;\n                        DEBUG_PRINT1 (\"  No match => pop_failure_jump.\\n\");\n                      }\n\t\t  }\n\t      }\n            else if ((re_opcode_t) *p2 == charset)\n\t      {\n#ifdef DEBUG\n\t\tregister unsigned char c\n                  = *p2 == (unsigned char) endline ? '\\n' : p2[2];\n#endif\n\n#if 0\n                if ((re_opcode_t) p1[3] == exactn\n\t\t    && ! ((int) p2[1] * BYTEWIDTH > (int) p1[5]\n\t\t\t  && (p2[2 + p1[5] / BYTEWIDTH]\n\t\t\t      & (1 << (p1[5] % BYTEWIDTH)))))\n#else\n                if ((re_opcode_t) p1[3] == exactn\n\t\t    && ! ((int) p2[1] * BYTEWIDTH > (int) p1[4]\n\t\t\t  && (p2[2 + p1[4] / BYTEWIDTH]\n\t\t\t      & (1 << (p1[4] % BYTEWIDTH)))))\n#endif\n                  {\n  \t\t    p[-3] = (unsigned char) pop_failure_jump;\n                    DEBUG_PRINT3 (\"  %c != %c => pop_failure_jump.\\n\",\n                                  c, p1[5]);\n                  }\n\n\t\telse if ((re_opcode_t) p1[3] == charset_not)\n\t\t  {\n\t\t    int idx;\n\t\t    /* We win if the charset_not inside the loop\n\t\t       lists every character listed in the charset after.  */\n\t\t    for (idx = 0; idx < (int) p2[1]; idx++)\n\t\t      if (! (p2[2 + idx] == 0\n\t\t\t     || (idx < (int) p1[4]\n\t\t\t\t && ((p2[2 + idx] & ~ p1[5 + idx]) == 0))))\n\t\t\tbreak;\n\n\t\t    if (idx == p2[1])\n                      {\n  \t\t        p[-3] = (unsigned char) pop_failure_jump;\n                        DEBUG_PRINT1 (\"  No match => pop_failure_jump.\\n\");\n                      }\n\t\t  }\n\t\telse if ((re_opcode_t) p1[3] == charset)\n\t\t  {\n\t\t    int idx;\n\t\t    /* We win if the charset inside the loop\n\t\t       has no overlap with the one after the loop.  */\n\t\t    for (idx = 0;\n\t\t\t idx < (int) p2[1] && idx < (int) p1[4];\n\t\t\t idx++)\n\t\t      if ((p2[2 + idx] & p1[5 + idx]) != 0)\n\t\t\tbreak;\n\n\t\t    if (idx == p2[1] || idx == p1[4])\n                      {\n  \t\t        p[-3] = (unsigned char) pop_failure_jump;\n                        DEBUG_PRINT1 (\"  No match => pop_failure_jump.\\n\");\n                      }\n\t\t  }\n\t      }\n\t  }\n\t  p -= 2;\t\t/* Point at relative address again.  */\n\t  if ((re_opcode_t) p[-1] != pop_failure_jump)\n\t    {\n\t      p[-1] = (unsigned char) jump;\n              DEBUG_PRINT1 (\"  Match => jump.\\n\");\n\t      goto unconditional_jump;\n\t    }\n        /* Note fall through.  */\n\n\n\t/* The end of a simple repeat has a pop_failure_jump back to\n           its matching on_failure_jump, where the latter will push a\n           failure point.  The pop_failure_jump takes off failure\n           points put on by this pop_failure_jump's matching\n           on_failure_jump; we got through the pattern to here from the\n           matching on_failure_jump, so didn't fail.  */\n        case pop_failure_jump:\n          {\n            /* We need to pass separate storage for the lowest and\n               highest registers, even though we don't care about the\n               actual values.  Otherwise, we will restore only one\n               register from the stack, since lowest will == highest in\n               `pop_failure_point'.  */\n            active_reg_t dummy_low_reg, dummy_high_reg;\n            unsigned char *pdummy;\n            const char *sdummy;\n\n            DEBUG_PRINT1 (\"EXECUTING pop_failure_jump.\\n\");\n            POP_FAILURE_POINT (sdummy, pdummy,\n                               dummy_low_reg, dummy_high_reg,\n                               reg_dummy, reg_dummy, reg_info_dummy);\n          }\n\t  /* Note fall through.  */\n\n\tunconditional_jump:\n#ifdef _LIBC\n\t  DEBUG_PRINT2 (\"\\n%p: \", p);\n#else\n\t  DEBUG_PRINT2 (\"\\n0x%x: \", p);\n#endif\n          /* Note fall through.  */\n\n        /* Unconditionally jump (without popping any failure points).  */\n        case jump:\n\t  EXTRACT_NUMBER_AND_INCR (mcnt, p);\t/* Get the amount to jump.  */\n          DEBUG_PRINT2 (\"EXECUTING jump %d \", mcnt);\n\t  p += mcnt;\t\t\t\t/* Do the jump.  */\n#ifdef _LIBC\n          DEBUG_PRINT2 (\"(to %p).\\n\", p);\n#else\n          DEBUG_PRINT2 (\"(to 0x%x).\\n\", p);\n#endif\n\t  break;\n\n\n        /* We need this opcode so we can detect where alternatives end\n           in `group_match_null_string_p' et al.  */\n        case jump_past_alt:\n          DEBUG_PRINT1 (\"EXECUTING jump_past_alt.\\n\");\n          goto unconditional_jump;\n\n\n        /* Normally, the on_failure_jump pushes a failure point, which\n           then gets popped at pop_failure_jump.  We will end up at\n           pop_failure_jump, also, and with a pattern of, say, `a+', we\n           are skipping over the on_failure_jump, so we have to push\n           something meaningless for pop_failure_jump to pop.  */\n        case dummy_failure_jump:\n          DEBUG_PRINT1 (\"EXECUTING dummy_failure_jump.\\n\");\n          /* It doesn't matter what we push for the string here.  What\n             the code at `fail' tests is the value for the pattern.  */\n          PUSH_FAILURE_POINT (0, 0, -2);\n          goto unconditional_jump;\n\n\n        /* At the end of an alternative, we need to push a dummy failure\n           point in case we are followed by a `pop_failure_jump', because\n           we don't want the failure point for the alternative to be\n           popped.  For example, matching `(a|ab)*' against `aab'\n           requires that we match the `ab' alternative.  */\n        case push_dummy_failure:\n          DEBUG_PRINT1 (\"EXECUTING push_dummy_failure.\\n\");\n          /* See comments just above at `dummy_failure_jump' about the\n             two zeroes.  */\n          PUSH_FAILURE_POINT (0, 0, -2);\n          break;\n\n        /* Have to succeed matching what follows at least n times.\n           After that, handle like `on_failure_jump'.  */\n        case succeed_n:\n          EXTRACT_NUMBER (mcnt, p + 2);\n          DEBUG_PRINT2 (\"EXECUTING succeed_n %d.\\n\", mcnt);\n\n          assert (mcnt >= 0);\n          /* Originally, this is how many times we HAVE to succeed.  */\n          if (mcnt > 0)\n            {\n               mcnt--;\n\t       p += 2;\n               STORE_NUMBER_AND_INCR (p, mcnt);\n#ifdef _LIBC\n               DEBUG_PRINT3 (\"  Setting %p to %d.\\n\", p - 2, mcnt);\n#else\n               DEBUG_PRINT3 (\"  Setting 0x%x to %d.\\n\", p - 2, mcnt);\n#endif\n            }\n\t  else if (mcnt == 0)\n            {\n#ifdef _LIBC\n              DEBUG_PRINT2 (\"  Setting two bytes from %p to no_op.\\n\", p+2);\n#else\n              DEBUG_PRINT2 (\"  Setting two bytes from 0x%x to no_op.\\n\", p+2);\n#endif\n\t      p[2] = (unsigned char) no_op;\n              p[3] = (unsigned char) no_op;\n              goto on_failure;\n            }\n          break;\n\n        case jump_n:\n          EXTRACT_NUMBER (mcnt, p + 2);\n          DEBUG_PRINT2 (\"EXECUTING jump_n %d.\\n\", mcnt);\n\n          /* Originally, this is how many times we CAN jump.  */\n          if (mcnt)\n            {\n               mcnt--;\n               STORE_NUMBER (p + 2, mcnt);\n#ifdef _LIBC\n               DEBUG_PRINT3 (\"  Setting %p to %d.\\n\", p + 2, mcnt);\n#else\n               DEBUG_PRINT3 (\"  Setting 0x%x to %d.\\n\", p + 2, mcnt);\n#endif\n\t       goto unconditional_jump;\n            }\n          /* If don't have to jump any more, skip over the rest of command.  */\n\t  else\n\t    p += 4;\n          break;\n\n\tcase set_number_at:\n\t  {\n            DEBUG_PRINT1 (\"EXECUTING set_number_at.\\n\");\n\n            EXTRACT_NUMBER_AND_INCR (mcnt, p);\n            p1 = p + mcnt;\n            EXTRACT_NUMBER_AND_INCR (mcnt, p);\n#ifdef _LIBC\n            DEBUG_PRINT3 (\"  Setting %p to %d.\\n\", p1, mcnt);\n#else\n            DEBUG_PRINT3 (\"  Setting 0x%x to %d.\\n\", p1, mcnt);\n#endif\n\t    STORE_NUMBER (p1, mcnt);\n            break;\n          }\n\n#if 0\n\t/* The DEC Alpha C compiler 3.x generates incorrect code for the\n\t   test  WORDCHAR_P (d - 1) != WORDCHAR_P (d)  in the expansion of\n\t   AT_WORD_BOUNDARY, so this code is disabled.  Expanding the\n\t   macro and introducing temporary variables works around the bug.  */\n\n\tcase wordbound:\n\t  DEBUG_PRINT1 (\"EXECUTING wordbound.\\n\");\n\t  if (AT_WORD_BOUNDARY (d))\n\t    break;\n\t  goto fail;\n\n\tcase notwordbound:\n\t  DEBUG_PRINT1 (\"EXECUTING notwordbound.\\n\");\n\t  if (AT_WORD_BOUNDARY (d))\n\t    goto fail;\n\t  break;\n#else\n\tcase wordbound:\n\t{\n\t  boolean prevchar, thischar;\n\n\t  DEBUG_PRINT1 (\"EXECUTING wordbound.\\n\");\n\t  if (AT_STRINGS_BEG (d) || AT_STRINGS_END (d))\n\t    break;\n\n\t  prevchar = WORDCHAR_P (d - 1);\n\t  thischar = WORDCHAR_P (d);\n\t  if (prevchar != thischar)\n\t    break;\n\t  goto fail;\n\t}\n\n      case notwordbound:\n\t{\n\t  boolean prevchar, thischar;\n\n\t  DEBUG_PRINT1 (\"EXECUTING notwordbound.\\n\");\n\t  if (AT_STRINGS_BEG (d) || AT_STRINGS_END (d))\n\t    goto fail;\n\n\t  prevchar = WORDCHAR_P (d - 1);\n\t  thischar = WORDCHAR_P (d);\n\t  if (prevchar != thischar)\n\t    goto fail;\n\t  break;\n\t}\n#endif\n\n\tcase wordbeg:\n          DEBUG_PRINT1 (\"EXECUTING wordbeg.\\n\");\n\t  if (WORDCHAR_P (d) && (AT_STRINGS_BEG (d) || !WORDCHAR_P (d - 1)))\n\t    break;\n          goto fail;\n\n\tcase wordend:\n          DEBUG_PRINT1 (\"EXECUTING wordend.\\n\");\n\t  if (!AT_STRINGS_BEG (d) && WORDCHAR_P (d - 1)\n              && (!WORDCHAR_P (d) || AT_STRINGS_END (d)))\n\t    break;\n          goto fail;\n\n#ifdef emacs\n  \tcase before_dot:\n          DEBUG_PRINT1 (\"EXECUTING before_dot.\\n\");\n \t  if (PTR_CHAR_POS ((unsigned char *) d) >= point)\n  \t    goto fail;\n  \t  break;\n\n  \tcase at_dot:\n          DEBUG_PRINT1 (\"EXECUTING at_dot.\\n\");\n \t  if (PTR_CHAR_POS ((unsigned char *) d) != point)\n  \t    goto fail;\n  \t  break;\n\n  \tcase after_dot:\n          DEBUG_PRINT1 (\"EXECUTING after_dot.\\n\");\n          if (PTR_CHAR_POS ((unsigned char *) d) <= point)\n  \t    goto fail;\n  \t  break;\n\n\tcase syntaxspec:\n          DEBUG_PRINT2 (\"EXECUTING syntaxspec %d.\\n\", mcnt);\n\t  mcnt = *p++;\n\t  goto matchsyntax;\n\n        case wordchar:\n          DEBUG_PRINT1 (\"EXECUTING Emacs wordchar.\\n\");\n\t  mcnt = (int) Sword;\n        matchsyntax:\n\t  PREFETCH ();\n\t  /* Can't use *d++ here; SYNTAX may be an unsafe macro.  */\n\t  d++;\n\t  if (SYNTAX (d[-1]) != (enum syntaxcode) mcnt)\n\t    goto fail;\n          SET_REGS_MATCHED ();\n\t  break;\n\n\tcase notsyntaxspec:\n          DEBUG_PRINT2 (\"EXECUTING notsyntaxspec %d.\\n\", mcnt);\n\t  mcnt = *p++;\n\t  goto matchnotsyntax;\n\n        case notwordchar:\n          DEBUG_PRINT1 (\"EXECUTING Emacs notwordchar.\\n\");\n\t  mcnt = (int) Sword;\n        matchnotsyntax:\n\t  PREFETCH ();\n\t  /* Can't use *d++ here; SYNTAX may be an unsafe macro.  */\n\t  d++;\n\t  if (SYNTAX (d[-1]) == (enum syntaxcode) mcnt)\n\t    goto fail;\n\t  SET_REGS_MATCHED ();\n          break;\n\n#else /* not emacs */\n\tcase wordchar:\n          DEBUG_PRINT1 (\"EXECUTING non-Emacs wordchar.\\n\");\n\t  PREFETCH ();\n          if (!WORDCHAR_P (d))\n            goto fail;\n\t  SET_REGS_MATCHED ();\n          d++;\n\t  break;\n\n\tcase notwordchar:\n          DEBUG_PRINT1 (\"EXECUTING non-Emacs notwordchar.\\n\");\n\t  PREFETCH ();\n\t  if (WORDCHAR_P (d))\n            goto fail;\n          SET_REGS_MATCHED ();\n          d++;\n\t  break;\n#endif /* not emacs */\n\n        default:\n          abort ();\n\t}\n      continue;  /* Successfully executed one pattern command; keep going.  */\n\n\n    /* We goto here if a matching operation fails. */\n    fail:\n      if (!FAIL_STACK_EMPTY ())\n\t{ /* A restart point is known.  Restore to that state.  */\n          DEBUG_PRINT1 (\"\\nFAIL:\\n\");\n          POP_FAILURE_POINT (d, p,\n                             lowest_active_reg, highest_active_reg,\n                             regstart, regend, reg_info);\n\n          /* If this failure point is a dummy, try the next one.  */\n          if (!p)\n\t    goto fail;\n\n          /* If we failed to the end of the pattern, don't examine *p.  */\n\t  assert (p <= pend);\n          if (p < pend)\n            {\n              boolean is_a_jump_n = false;\n\n              /* If failed to a backwards jump that's part of a repetition\n                 loop, need to pop this failure point and use the next one.  */\n              switch ((re_opcode_t) *p)\n                {\n                case jump_n:\n                  is_a_jump_n = true;\n                case maybe_pop_jump:\n                case pop_failure_jump:\n                case jump:\n                  p1 = p + 1;\n                  EXTRACT_NUMBER_AND_INCR (mcnt, p1);\n                  p1 += mcnt;\n\n                  if ((is_a_jump_n && (re_opcode_t) *p1 == succeed_n)\n                      || (!is_a_jump_n\n                          && (re_opcode_t) *p1 == on_failure_jump))\n                    goto fail;\n                  break;\n                default:\n                  /* do nothing */ ;\n                }\n            }\n\n          if (d >= string1 && d <= end1)\n\t    dend = end_match_1;\n        }\n      else\n        break;   /* Matching at this starting point really fails.  */\n    } /* for (;;) */\n\n  if (best_regs_set)\n    goto restore_best_regs;\n\n  FREE_VARIABLES ();\n\n  return -1;         \t\t\t/* Failure to match.  */\n} /* re_match_2 */\n\f\n/* Subroutine definitions for re_match_2.  */\n\n\n/* We are passed P pointing to a register number after a start_memory.\n\n   Return true if the pattern up to the corresponding stop_memory can\n   match the empty string, and false otherwise.\n\n   If we find the matching stop_memory, sets P to point to one past its number.\n   Otherwise, sets P to an undefined byte less than or equal to END.\n\n   We don't handle duplicates properly (yet).  */\n\nstatic boolean\ngroup_match_null_string_p (p, end, reg_info)\n    unsigned char **p, *end;\n    register_info_type *reg_info;\n{\n  int mcnt;\n  /* Point to after the args to the start_memory.  */\n  unsigned char *p1 = *p + 2;\n\n  while (p1 < end)\n    {\n      /* Skip over opcodes that can match nothing, and return true or\n\t false, as appropriate, when we get to one that can't, or to the\n         matching stop_memory.  */\n\n      switch ((re_opcode_t) *p1)\n        {\n        /* Could be either a loop or a series of alternatives.  */\n        case on_failure_jump:\n          p1++;\n          EXTRACT_NUMBER_AND_INCR (mcnt, p1);\n\n          /* If the next operation is not a jump backwards in the\n\t     pattern.  */\n\n\t  if (mcnt >= 0)\n\t    {\n              /* Go through the on_failure_jumps of the alternatives,\n                 seeing if any of the alternatives cannot match nothing.\n                 The last alternative starts with only a jump,\n                 whereas the rest start with on_failure_jump and end\n                 with a jump, e.g., here is the pattern for `a|b|c':\n\n                 /on_failure_jump/0/6/exactn/1/a/jump_past_alt/0/6\n                 /on_failure_jump/0/6/exactn/1/b/jump_past_alt/0/3\n                 /exactn/1/c\n\n                 So, we have to first go through the first (n-1)\n                 alternatives and then deal with the last one separately.  */\n\n\n              /* Deal with the first (n-1) alternatives, which start\n                 with an on_failure_jump (see above) that jumps to right\n                 past a jump_past_alt.  */\n\n              while ((re_opcode_t) p1[mcnt-3] == jump_past_alt)\n                {\n                  /* `mcnt' holds how many bytes long the alternative\n                     is, including the ending `jump_past_alt' and\n                     its number.  */\n\n                  if (!alt_match_null_string_p (p1, p1 + mcnt - 3,\n\t\t\t\t                      reg_info))\n                    return false;\n\n                  /* Move to right after this alternative, including the\n\t\t     jump_past_alt.  */\n                  p1 += mcnt;\n\n                  /* Break if it's the beginning of an n-th alternative\n                     that doesn't begin with an on_failure_jump.  */\n                  if ((re_opcode_t) *p1 != on_failure_jump)\n                    break;\n\n\t\t  /* Still have to check that it's not an n-th\n\t\t     alternative that starts with an on_failure_jump.  */\n\t\t  p1++;\n                  EXTRACT_NUMBER_AND_INCR (mcnt, p1);\n                  if ((re_opcode_t) p1[mcnt-3] != jump_past_alt)\n                    {\n\t\t      /* Get to the beginning of the n-th alternative.  */\n                      p1 -= 3;\n                      break;\n                    }\n                }\n\n              /* Deal with the last alternative: go back and get number\n                 of the `jump_past_alt' just before it.  `mcnt' contains\n                 the length of the alternative.  */\n              EXTRACT_NUMBER (mcnt, p1 - 2);\n\n              if (!alt_match_null_string_p (p1, p1 + mcnt, reg_info))\n                return false;\n\n              p1 += mcnt;\t/* Get past the n-th alternative.  */\n            } /* if mcnt > 0 */\n          break;\n\n\n        case stop_memory:\n\t  assert (p1[1] == **p);\n          *p = p1 + 2;\n          return true;\n\n\n        default:\n          if (!common_op_match_null_string_p (&p1, end, reg_info))\n            return false;\n        }\n    } /* while p1 < end */\n\n  return false;\n} /* group_match_null_string_p */\n\n\n/* Similar to group_match_null_string_p, but doesn't deal with alternatives:\n   It expects P to be the first byte of a single alternative and END one\n   byte past the last. The alternative can contain groups.  */\n\nstatic boolean\nalt_match_null_string_p (p, end, reg_info)\n    unsigned char *p, *end;\n    register_info_type *reg_info;\n{\n  int mcnt;\n  unsigned char *p1 = p;\n\n  while (p1 < end)\n    {\n      /* Skip over opcodes that can match nothing, and break when we get\n         to one that can't.  */\n\n      switch ((re_opcode_t) *p1)\n        {\n\t/* It's a loop.  */\n        case on_failure_jump:\n          p1++;\n          EXTRACT_NUMBER_AND_INCR (mcnt, p1);\n          p1 += mcnt;\n          break;\n\n\tdefault:\n          if (!common_op_match_null_string_p (&p1, end, reg_info))\n            return false;\n        }\n    }  /* while p1 < end */\n\n  return true;\n} /* alt_match_null_string_p */\n\n\n/* Deals with the ops common to group_match_null_string_p and\n   alt_match_null_string_p.\n\n   Sets P to one after the op and its arguments, if any.  */\n\nstatic boolean\ncommon_op_match_null_string_p (p, end, reg_info)\n    unsigned char **p, *end;\n    register_info_type *reg_info;\n{\n  int mcnt;\n  boolean ret;\n  int reg_no;\n  unsigned char *p1 = *p;\n\n  switch ((re_opcode_t) *p1++)\n    {\n    case no_op:\n    case begline:\n    case endline:\n    case begbuf:\n    case endbuf:\n    case wordbeg:\n    case wordend:\n    case wordbound:\n    case notwordbound:\n#ifdef emacs\n    case before_dot:\n    case at_dot:\n    case after_dot:\n#endif\n      break;\n\n    case start_memory:\n      reg_no = *p1;\n      assert (reg_no > 0 && reg_no <= MAX_REGNUM);\n      ret = group_match_null_string_p (&p1, end, reg_info);\n\n      /* Have to set this here in case we're checking a group which\n         contains a group and a back reference to it.  */\n\n      if (REG_MATCH_NULL_STRING_P (reg_info[reg_no]) == MATCH_NULL_UNSET_VALUE)\n        REG_MATCH_NULL_STRING_P (reg_info[reg_no]) = ret;\n\n      if (!ret)\n        return false;\n      break;\n\n    /* If this is an optimized succeed_n for zero times, make the jump.  */\n    case jump:\n      EXTRACT_NUMBER_AND_INCR (mcnt, p1);\n      if (mcnt >= 0)\n        p1 += mcnt;\n      else\n        return false;\n      break;\n\n    case succeed_n:\n      /* Get to the number of times to succeed.  */\n      p1 += 2;\n      EXTRACT_NUMBER_AND_INCR (mcnt, p1);\n\n      if (mcnt == 0)\n        {\n          p1 -= 4;\n          EXTRACT_NUMBER_AND_INCR (mcnt, p1);\n          p1 += mcnt;\n        }\n      else\n        return false;\n      break;\n\n    case duplicate:\n      if (!REG_MATCH_NULL_STRING_P (reg_info[*p1]))\n        return false;\n      break;\n\n    case set_number_at:\n      p1 += 4;\n\n    default:\n      /* All other opcodes mean we cannot match the empty string.  */\n      return false;\n  }\n\n  *p = p1;\n  return true;\n} /* common_op_match_null_string_p */\n\n\n/* Return zero if TRANSLATE[S1] and TRANSLATE[S2] are identical for LEN\n   bytes; nonzero otherwise.  */\n\nstatic int\nbcmp_translate (s1, s2, len, translate)\n     const char *s1, *s2;\n     register int len;\n     RE_TRANSLATE_TYPE translate;\n{\n  register const unsigned char *p1 = (const unsigned char *) s1;\n  register const unsigned char *p2 = (const unsigned char *) s2;\n  while (len)\n    {\n      if (translate[*p1++] != translate[*p2++]) return 1;\n      len--;\n    }\n  return 0;\n}\n\f\n/* Entry points for GNU code.  */\n\n/* re_compile_pattern is the GNU regular expression compiler: it\n   compiles PATTERN (of length SIZE) and puts the result in BUFP.\n   Returns 0 if the pattern was valid, otherwise an error string.\n\n   Assumes the `allocated' (and perhaps `buffer') and `translate' fields\n   are set in BUFP on entry.\n\n   We call regex_compile to do the actual compilation.  */\n\nconst char *\nre_compile_pattern (pattern, length, bufp)\n     const char *pattern;\n     size_t length;\n     struct re_pattern_buffer *bufp;\n{\n  reg_errcode_t ret;\n\n  /* GNU code is written to assume at least RE_NREGS registers will be set\n     (and at least one extra will be -1).  */\n  bufp->regs_allocated = REGS_UNALLOCATED;\n\n  /* And GNU code determines whether or not to get register information\n     by passing null for the REGS argument to re_match, etc., not by\n     setting no_sub.  */\n  bufp->no_sub = 0;\n\n  /* Match anchors at newline.  */\n  bufp->newline_anchor = 1;\n\n  ret = regex_compile (pattern, length, re_syntax_options, bufp);\n\n  if (!ret)\n    return NULL;\n  return gettext (re_error_msgid[(int) ret]);\n}\n\f\n/* Entry points compatible with 4.2 BSD regex library.  We don't define\n   them unless specifically requested.  */\n\n#if defined (_REGEX_RE_COMP) || defined (_LIBC)\n\n/* BSD has one and only one pattern buffer.  */\nstatic struct re_pattern_buffer re_comp_buf;\n\nchar *\n#ifdef _LIBC\n/* Make these definitions weak in libc, so POSIX programs can redefine\n   these names if they don't use our functions, and still use\n   regcomp/regexec below without link errors.  */\nweak_function\n#endif\nre_comp (s)\n    const char *s;\n{\n  reg_errcode_t ret;\n\n  if (!s)\n    {\n      if (!re_comp_buf.buffer)\n\treturn gettext (\"No previous regular expression\");\n      return 0;\n    }\n\n  if (!re_comp_buf.buffer)\n    {\n      re_comp_buf.buffer = (unsigned char *) malloc (200);\t/* __MEM_CHECKED__ */\n      if (re_comp_buf.buffer == NULL)\n        return gettext (re_error_msgid[(int) REG_ESPACE]);\n      re_comp_buf.allocated = 200;\n\n      re_comp_buf.fastmap = (char *) malloc (1 << BYTEWIDTH);\t/* __MEM_CHECKED__ */\n      if (re_comp_buf.fastmap == NULL)\n\treturn gettext (re_error_msgid[(int) REG_ESPACE]);\n    }\n\n  /* Since `re_exec' always passes NULL for the `regs' argument, we\n     don't need to initialize the pattern buffer fields which affect it.  */\n\n  /* Match anchors at newlines.  */\n  re_comp_buf.newline_anchor = 1;\n\n  ret = regex_compile (s, strlen (s), re_syntax_options, &re_comp_buf);\n\n  if (!ret)\n    return NULL;\n\n  /* Yes, we're discarding `const' here if !HAVE_LIBINTL.  */\n  return (char *) gettext (re_error_msgid[(int) ret]);\n}\n\n\nint\n#ifdef _LIBC\nweak_function\n#endif\nre_exec (s)\n    const char *s;\n{\n  const int len = strlen (s);\n  return\n    0 <= re_search (&re_comp_buf, s, len, 0, len, (struct re_registers *) 0);\n}\n\n#endif /* _REGEX_RE_COMP */\n\f\n/* POSIX.2 functions.  Don't define these for Emacs.  */\n\n#ifndef emacs\n\n/* regcomp takes a regular expression as a string and compiles it.\n\n   PREG is a regex_t *.  We do not expect any fields to be initialized,\n   since POSIX says we shouldn't.  Thus, we set\n\n     `buffer' to the compiled pattern;\n     `used' to the length of the compiled pattern;\n     `syntax' to RE_SYNTAX_POSIX_EXTENDED if the\n       REG_EXTENDED bit in CFLAGS is set; otherwise, to\n       RE_SYNTAX_POSIX_BASIC;\n     `newline_anchor' to REG_NEWLINE being set in CFLAGS;\n     `fastmap' and `fastmap_accurate' to zero;\n     `re_nsub' to the number of subexpressions in PATTERN.\n\n   PATTERN is the address of the pattern string.\n\n   CFLAGS is a series of bits which affect compilation.\n\n     If REG_EXTENDED is set, we use POSIX extended syntax; otherwise, we\n     use POSIX basic syntax.\n\n     If REG_NEWLINE is set, then . and [^...] don't match newline.\n     Also, regexec will try a match beginning after every newline.\n\n     If REG_ICASE is set, then we considers upper- and lowercase\n     versions of letters to be equivalent when matching.\n\n     If REG_NOSUB is set, then when PREG is passed to regexec, that\n     routine will report only success or failure, and nothing about the\n     registers.\n\n   It returns 0 if it succeeds, nonzero if it doesn't.  (See regex.h for\n   the return codes and their meanings.)  */\n\nint\nregcomp (preg, pattern, cflags)\n    regex_t *preg;\n    const char *pattern;\n    int cflags;\n{\n  reg_errcode_t ret;\n  reg_syntax_t syntax\n    = (cflags & REG_EXTENDED) ?\n      RE_SYNTAX_POSIX_EXTENDED : RE_SYNTAX_POSIX_BASIC;\n\n  /* regex_compile will allocate the space for the compiled pattern.  */\n  preg->buffer = 0;\n  preg->allocated = 0;\n  preg->used = 0;\n\n  /* Don't bother to use a fastmap when searching.  This simplifies the\n     REG_NEWLINE case: if we used a fastmap, we'd have to put all the\n     characters after newlines into the fastmap.  This way, we just try\n     every character.  */\n  preg->fastmap = 0;\n\n  if (cflags & REG_ICASE)\n    {\n      unsigned i;\n\n      preg->translate\n\t= (RE_TRANSLATE_TYPE) malloc (CHAR_SET_SIZE\t/* __MEM_CHECKED__ */\n\t\t\t\t      * sizeof (*(RE_TRANSLATE_TYPE)0));\n      if (preg->translate == NULL)\n        return (int) REG_ESPACE;\n\n      /* Map uppercase characters to corresponding lowercase ones.  */\n      for (i = 0; i < CHAR_SET_SIZE; i++)\n        preg->translate[i] = ISUPPER (i) ? tolower (i) : i;\n    }\n  else\n    preg->translate = NULL;\n\n  /* If REG_NEWLINE is set, newlines are treated differently.  */\n  if (cflags & REG_NEWLINE)\n    { /* REG_NEWLINE implies neither . nor [^...] match newline.  */\n      syntax &= ~RE_DOT_NEWLINE;\n      syntax |= RE_HAT_LISTS_NOT_NEWLINE;\n      /* It also changes the matching behavior.  */\n      preg->newline_anchor = 1;\n    }\n  else\n    preg->newline_anchor = 0;\n\n  preg->no_sub = !!(cflags & REG_NOSUB);\n\n  /* POSIX says a null character in the pattern terminates it, so we\n     can use strlen here in compiling the pattern.  */\n  ret = regex_compile (pattern, strlen (pattern), syntax, preg);\n\n  /* POSIX doesn't distinguish between an unmatched open-group and an\n     unmatched close-group: both are REG_EPAREN.  */\n  if (ret == REG_ERPAREN) ret = REG_EPAREN;\n\n  return (int) ret;\n}\n\n\n/* regexec searches for a given pattern, specified by PREG, in the\n   string STRING.\n\n   If NMATCH is zero or REG_NOSUB was set in the cflags argument to\n   `regcomp', we ignore PMATCH.  Otherwise, we assume PMATCH has at\n   least NMATCH elements, and we set them to the offsets of the\n   corresponding matched substrings.\n\n   EFLAGS specifies `execution flags' which affect matching: if\n   REG_NOTBOL is set, then ^ does not match at the beginning of the\n   string; if REG_NOTEOL is set, then $ does not match at the end.\n\n   We return 0 if we find a match and REG_NOMATCH if not.  */\n\nint\nregexec (preg, string, nmatch, pmatch, eflags)\n    const regex_t *preg;\n    const char *string;\n    size_t nmatch;\n    regmatch_t pmatch[];\n    int eflags;\n{\n  int ret;\n  struct re_registers regs;\n  regex_t private_preg;\n  int len = strlen (string);\n  boolean want_reg_info = !preg->no_sub && nmatch > 0;\n\n  private_preg = *preg;\n\n  private_preg.not_bol = !!(eflags & REG_NOTBOL);\n  private_preg.not_eol = !!(eflags & REG_NOTEOL);\n\n  /* The user has told us exactly how many registers to return\n     information about, via `nmatch'.  We have to pass that on to the\n     matching routines.  */\n  private_preg.regs_allocated = REGS_FIXED;\n\n  if (want_reg_info)\n    {\n      regs.num_regs = nmatch;\n      regs.start = TALLOC (nmatch, regoff_t);\n      regs.end = TALLOC (nmatch, regoff_t);\n      if (regs.start == NULL || regs.end == NULL)\n        return (int) REG_NOMATCH;\n    }\n\n  /* Perform the searching operation.  */\n  ret = re_search (&private_preg, string, len,\n                   /* start: */ 0, /* range: */ len,\n                   want_reg_info ? &regs : (struct re_registers *) 0);\n\n  /* Copy the register information to the POSIX structure.  */\n  if (want_reg_info)\n    {\n      if (ret >= 0)\n        {\n          unsigned r;\n\n          for (r = 0; r < nmatch; r++)\n            {\n              pmatch[r].rm_so = regs.start[r];\n              pmatch[r].rm_eo = regs.end[r];\n            }\n        }\n\n      /* If we needed the temporary register info, free the space now.  */\n      free (regs.start);\t/* __MEM_CHECKED__ */\n      free (regs.end);\t\t/* __MEM_CHECKED__ */\n    }\n\n  /* We want zero return to mean success, unlike `re_search'.  */\n  return ret >= 0 ? (int) REG_NOERROR : (int) REG_NOMATCH;\n}\n\n\n/* Returns a message corresponding to an error code, ERRCODE, returned\n   from either regcomp or regexec.   We don't use PREG here.  */\n\nsize_t\nregerror (errcode, preg, errbuf, errbuf_size)\n    int errcode;\n    const regex_t *preg;\n    char *errbuf;\n    size_t errbuf_size;\n{\n  const char *msg;\n  size_t msg_size;\n\n  if (errcode < 0\n      || errcode >= (int) (sizeof (re_error_msgid)\n\t\t\t   / sizeof (re_error_msgid[0])))\n    /* Only error codes returned by the rest of the code should be passed\n       to this routine.  If we are given anything else, or if other regex\n       code generates an invalid error code, then the program has a bug.\n       Dump core so we can fix it.  */\n    abort ();\n\n  msg = gettext (re_error_msgid[errcode]);\n\n  msg_size = strlen (msg) + 1; /* Includes the null.  */\n\n  if (errbuf_size != 0)\n    {\n      if (msg_size > errbuf_size)\n        {\n          strncpy (errbuf, msg, errbuf_size - 1);\n          errbuf[errbuf_size - 1] = 0;\n        }\n      else\n        strcpy (errbuf, msg);\t/* __STRCPY_CHECKED__ */\n    }\n\n  return msg_size;\n}\n\n\n/* Free dynamically allocated space used by PREG.  */\n\nvoid\nregfree (preg)\n    regex_t *preg;\n{\n  if (preg->buffer != NULL)\n    free (preg->buffer);\t/* __MEM_CHECKED__ */\n  preg->buffer = NULL;\n\n  preg->allocated = 0;\n  preg->used = 0;\n\n  if (preg->fastmap != NULL)\n    free (preg->fastmap);\t/* __MEM_CHECKED__ */\n  preg->fastmap = NULL;\n  preg->fastmap_accurate = 0;\n\n  if (preg->translate != NULL)\n    free (preg->translate);\t/* __MEM_CHECKED__ */\n  preg->translate = NULL;\n}\n\n#endif /* not emacs  */\n"
  },
  {
    "path": "remailer.c",
    "content": "/*\n * Copyright (C) 1999-2001 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */ \n\n/*\n * Mixmaster support for Mutt\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_regex.h\"\n#include \"mapping.h\"\n\n#include \"remailer.h\"\n\n#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n\n#include <sys/types.h>\n#include <sys/file.h>\n#include <fcntl.h>\n\n#ifdef MIXMASTER\n\nstruct coord\n{\n  short r, c;\n};\n\nstatic REMAILER **mix_type2_list (size_t *l);\nstatic REMAILER *mix_new_remailer (void);\nstatic const char *mix_format_caps (REMAILER *r);\nstatic int mix_chain_add (MIXCHAIN *chain, const char *s, REMAILER **type2_list);\nstatic int mix_get_caps (const char *capstr);\nstatic void mix_add_entry (REMAILER ***, REMAILER *, size_t *, size_t *);\nstatic void mix_entry (char *b, size_t blen, MUTTMENU *menu, int num);\nstatic void mix_free_remailer (REMAILER **r);\nstatic void mix_free_type2_list (REMAILER ***ttlp);\nstatic void mix_redraw_ce (REMAILER **type2_list, struct coord *coords, MIXCHAIN *chain, int i, short selected);\nstatic void mix_redraw_chain (REMAILER **type2_list, struct coord *coords, MIXCHAIN *chain, int cur);\nstatic void mix_redraw_head (MIXCHAIN *);\nstatic void mix_screen_coordinates (REMAILER **type2_list, struct coord **, MIXCHAIN *, int);\n\nstatic int mix_get_caps (const char *capstr)\n{\n  int caps = 0;\n\n  while (*capstr)\n  {\n    switch (*capstr)\n    {\n      case 'C':\n      \tcaps |= MIX_CAP_COMPRESS;\n        break;\n      \n      case 'M':\n        caps |= MIX_CAP_MIDDLEMAN;\n        break;\n      \n      case 'N':\n      {\n\tswitch (*++capstr)\n\t{\n\t  case 'm':\n\t    caps |= MIX_CAP_NEWSMAIL;\n\t    break;\n\t  \n\t  case 'p':\n\t    caps |= MIX_CAP_NEWSPOST;\n\t    break;\n\t  \n\t}\n      }\n    }\n    \n    if (*capstr) capstr++;\n  }\n  \n  return caps;\n}\n\nstatic void mix_add_entry (REMAILER ***type2_list, REMAILER *entry,\n\t\t\t   size_t *slots, size_t *used)\n{\n  if (*used == *slots)\n  {\n    *slots += 5;\n    safe_realloc (type2_list, sizeof (REMAILER *) * (*slots));\n  }\n  \n  (*type2_list)[(*used)++] = entry;\n  if (entry) entry->num = *used;\n}\n\nstatic REMAILER *mix_new_remailer (void)\n{\n  return safe_calloc (1, sizeof (REMAILER));\n}\n\nstatic void mix_free_remailer (REMAILER **r)\n{\n  FREE (&(*r)->shortname);\n  FREE (&(*r)->addr);\n  FREE (&(*r)->ver);\n  \n  FREE (r);\t\t/* __FREE_CHECKED__ */\n}\n\n/* parse the type2.list as given by mixmaster -T */\n\nstatic REMAILER **mix_type2_list (size_t *l)\n{\n  FILE *fp;\n  pid_t mm_pid;\n  int devnull;\n\n  char cmd[HUGE_STRING + _POSIX_PATH_MAX];\n  char line[HUGE_STRING];\n  char *t;\n  \n  REMAILER **type2_list = NULL, *p;\n  size_t slots = 0, used = 0;\n\n  if (!l)\n    return NULL;\n  \n  if ((devnull = open (\"/dev/null\", O_RDWR)) == -1)\n    return NULL;\n  \n  snprintf (cmd, sizeof (cmd), \"%s -T\", Mixmaster);\n  \n  if ((mm_pid = mutt_create_filter_fd (cmd, NULL, &fp, NULL, devnull, -1, devnull)) == -1)\n  {\n    close (devnull);\n    return NULL;\n  }\n\n  /* first, generate the \"random\" remailer */\n  \n  p = mix_new_remailer ();\n  p->shortname = safe_strdup (\"<random>\");\n  mix_add_entry (&type2_list, p, &slots, &used);\n  \n  while (fgets (line, sizeof (line), fp))\n  {\n    p = mix_new_remailer ();\n    \n    if (!(t = strtok (line, \" \\t\\n\")))\n      goto problem;\n    \n    p->shortname = safe_strdup (t);\n    \n    if (!(t = strtok (NULL, \" \\t\\n\")))\n      goto problem;\n\n    p->addr = safe_strdup (t);\n    \n    if (!(t = strtok (NULL, \" \\t\\n\")))\n      goto problem;\n\n    if (!(t = strtok (NULL, \" \\t\\n\")))\n      goto problem;\n\n    p->ver = safe_strdup (t);\n    \n    if (!(t = strtok (NULL, \" \\t\\n\")))\n      goto problem;\n\n    p->caps = mix_get_caps (t);\n    \n    mix_add_entry (&type2_list, p, &slots, &used);\n    continue;\n    \n    problem:\n    mix_free_remailer (&p);\n  }\n  \n  *l = used;\n\n  mix_add_entry (&type2_list, NULL, &slots, &used);\n  mutt_wait_filter (mm_pid);\n\n  close (devnull);\n  \n  return type2_list;\n}\n\nstatic void mix_free_type2_list (REMAILER ***ttlp)\n{\n  int i;\n  REMAILER **type2_list = *ttlp;\n  \n  for (i = 0; type2_list[i]; i++)\n    mix_free_remailer (&type2_list[i]);\n  \n  FREE (type2_list);\t\t/* __FREE_CHECKED__ */\n}\n\n\n#define MIX_HOFFSET 2\n#define MIX_VOFFSET (LINES - 6)\n#define MIX_MAXROW  (LINES - 3)\n\n\nstatic void mix_screen_coordinates (REMAILER **type2_list,\n\t\t\t\t    struct coord **coordsp,\n\t\t\t\t    MIXCHAIN *chain,\n\t\t\t\t    int i)\n{\n  short c, r, oc;\n  struct coord *coords;\n\n  if (!chain->cl)\n    return;\n  \n  safe_realloc (coordsp, sizeof (struct coord) * chain->cl);\n  \n  coords = *coordsp;\n  \n  if (i)\n  {\n    c = coords[i-1].c + strlen (type2_list[chain->ch[i-1]]->shortname) + 2;\n    r = coords[i-1].r;\n  }\n  else\n  {\n    r = MIX_VOFFSET;\n    c = MIX_HOFFSET;\n  }\n    \n  \n  for (; i < chain->cl; i++)\n  {\n    oc = c;\n    c += strlen (type2_list[chain->ch[i]]->shortname) + 2;\n\n    if (c  >= COLS)\n    {\n      oc = c = MIX_HOFFSET;\n      r++;\n    }\n    \n    coords[i].c = oc;\n    coords[i].r = r;\n    \n  }\n  \n}\n\nstatic void mix_redraw_ce (REMAILER **type2_list,\n\t\t\t   struct coord *coords,\n\t\t\t   MIXCHAIN *chain,\n\t\t\t   int i,\n\t\t\t   short selected)\n{\n  if (!coords || !chain)\n    return;\n  \n  if (coords[i].r < MIX_MAXROW)\n  {\n    \n    if (selected)\n      SETCOLOR (MT_COLOR_INDICATOR);\n    else\n      NORMAL_COLOR;\n    \n    mvaddstr (coords[i].r, coords[i].c, type2_list[chain->ch[i]]->shortname);\n    NORMAL_COLOR;\n\n    if (i + 1 < chain->cl)\n      addstr (\", \");\n  }\n}\n\nstatic void mix_redraw_chain (REMAILER **type2_list,\n\t\t\t      struct coord *coords,\n\t\t\t      MIXCHAIN *chain,\n\t\t\t      int cur)\n{\n  int i;\n  \n  for (i = MIX_VOFFSET; i < MIX_MAXROW; i++)\n  {\n    move (i, 0);\n    clrtoeol ();\n  }\n\n  for (i = 0; i < chain->cl; i++)\n    mix_redraw_ce (type2_list, coords, chain, i, i == cur);\n}\n\nstatic void mix_redraw_head (MIXCHAIN *chain)\n{\n  SETCOLOR (MT_COLOR_STATUS);\n  mvprintw (MIX_VOFFSET - 1, 0, \"-- Remailer chain [Length: %d]\", chain ? chain->cl : 0);\n  clrtoeol ();\n  NORMAL_COLOR;\n}\n\nstatic const char *mix_format_caps (REMAILER *r)\n{\n  static char capbuff[10];\n  char *t = capbuff;\n  \n  if (r->caps & MIX_CAP_COMPRESS)\n    *t++ = 'C';\n  else\n    *t++ = ' ';\n  \n  if (r->caps & MIX_CAP_MIDDLEMAN)\n    *t++ = 'M';\n  else\n    *t++ = ' ';\n  \n  if (r->caps & MIX_CAP_NEWSPOST)\n  {\n    *t++ = 'N';\n    *t++ = 'p';\n  }\n  else\n  {\n    *t++ = ' ';\n    *t++ = ' ';\n  }\n   \n  if (r->caps & MIX_CAP_NEWSMAIL)\n  {\n    *t++ = 'N';\n    *t++ = 'm';\n  }\n  else\n  {\n    *t++ = ' ';\n    *t++ = ' ';\n  }\n  \n  *t = '\\0';\n  \n  return capbuff;\n}\n\n/*\n * Format an entry for the remailer menu.\n * \n * %n\tnumber\n * %c\tcapabilities\n * %s\tshort name\n * %a\taddress\n *\n */\n\nstatic const char *mix_entry_fmt (char *dest,\n\t\t\t\t  size_t destlen,\n\t\t\t\t  size_t col,\n\t\t\t\t  char op,\n\t\t\t\t  const char *src,\n\t\t\t\t  const char *prefix,\n\t\t\t\t  const char *ifstring,\n\t\t\t\t  const char *elsestring,\n\t\t\t\t  unsigned long data,\n\t\t\t\t  format_flag flags)\n{\n  char fmt[16];\n  REMAILER *remailer = (REMAILER *) data;\n  int optional = (flags & M_FORMAT_OPTIONAL);\n\n  switch (op)\n  {\n    case 'n':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (dest, destlen, fmt, remailer->num);\n      }\n      break;\n    case 'c':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, mix_format_caps(remailer));\n      }\n      break;\n    case 's':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL(remailer->shortname));\n      }\n      else if (!remailer->shortname)\n        optional = 0;\n      break;\n    case 'a':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL(remailer->addr));\n      }\n      else if (!remailer->addr)\n        optional = 0;\n      break;\n    \n    default:\n      *dest = '\\0';\n  }\n\n  if (optional)\n    mutt_FormatString (dest, destlen, col, ifstring, mutt_attach_fmt, data, 0);\n  else if (flags & M_FORMAT_OPTIONAL)\n    mutt_FormatString (dest, destlen, col, elsestring, mutt_attach_fmt, data, 0);\n  return (src);\n}\n\n\n  \nstatic void mix_entry (char *b, size_t blen, MUTTMENU *menu, int num)\n{\n  REMAILER **type2_list = (REMAILER **) menu->data;\n  mutt_FormatString (b, blen, 0, NONULL (MixEntryFormat), mix_entry_fmt,\n\t\t     (unsigned long) type2_list[num], M_FORMAT_ARROWCURSOR);\n}\n\nstatic int mix_chain_add (MIXCHAIN *chain, const char *s, \n\t\t\t  REMAILER **type2_list)\n{\n  int i;\n  \n  if (chain->cl >= MAXMIXES)\n    return -1;\n  \n  if (!mutt_strcmp (s, \"0\") || !ascii_strcasecmp (s, \"<random>\"))\n  {\n    chain->ch[chain->cl++] = 0;\n    return 0;\n  }\n\n  for (i = 0; type2_list[i]; i++)\n  {\n    if (!ascii_strcasecmp (s, type2_list[i]->shortname))\n    {\n      chain->ch[chain->cl++] = i;\n      return 0;\n    }\n  }\n  \n  /* replace unknown remailers by <random> */\n  \n  if (!type2_list[i])\n    chain->ch[chain->cl++] = 0;\n\n  return 0;\n}\n\nstatic const struct mapping_t RemailerHelp[] = \n{\n  { N_(\"Append\"), OP_MIX_APPEND },\n  { N_(\"Insert\"), OP_MIX_INSERT },\n  { N_(\"Delete\"), OP_MIX_DELETE },\n  { N_(\"Abort\"),  OP_EXIT       },\n  { N_(\"OK\"),     OP_MIX_USE    },\n  { NULL,         0 }\n};\n  \n\nvoid mix_make_chain (LIST **chainp, int *redraw)\n{\n  LIST *p;\n  MIXCHAIN *chain;\n  int c_cur = 0, c_old = 0;\n  int m_len;\n  short c_redraw = 1;\n  \n  REMAILER **type2_list = NULL;\n  size_t ttll = 0;\n  \n  struct coord *coords = NULL;\n  \n  MUTTMENU *menu;\n  char helpstr[LONG_STRING];\n  short loop = 1;\n  int op;\n  \n  int i, j;\n  char *t;\n\n  if (!(type2_list = mix_type2_list (&ttll)))\n  {\n    mutt_error _(\"Can't get mixmaster's type2.list!\");\n    return;\n  }\n\n  *redraw = REDRAW_FULL;\n  \n  chain = safe_calloc (sizeof (MIXCHAIN), 1);\n  for (p = *chainp; p; p = p->next)\n    mix_chain_add (chain, (char *) p->data, type2_list);\n\n  mutt_free_list (chainp);\n  \n  /* safety check */\n  for (i = 0; i < chain->cl; i++)\n  {\n    if (chain->ch[i] >= ttll)\n      chain->ch[i] = 0;\n  }\n  \n  mix_screen_coordinates (type2_list, &coords, chain, 0);\n  \n  menu = mutt_new_menu (MENU_MIX);\n  menu->max = ttll;\n  menu->make_entry = mix_entry;\n  menu->tag = NULL;\n  menu->title = _(\"Select a remailer chain.\");\n  menu->data = type2_list;\n  menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_MIX, RemailerHelp);\n\n  m_len = menu->pagelen = MIX_VOFFSET - menu->offset - 1;\n  \n  while (loop) \n  {\n    if (menu->pagelen != m_len)\n    {\n      menu->pagelen = m_len;\n      menu->redraw = REDRAW_FULL;\n    }\n    \n    if (c_redraw)\n    {\n      mix_redraw_head (chain);\n      mix_redraw_chain (type2_list, coords, chain, c_cur);\n      c_redraw = 0;\n    }\n    else if (c_cur != c_old)\n    {\n      mix_redraw_ce (type2_list, coords, chain, c_old, 0);\n      mix_redraw_ce (type2_list, coords, chain, c_cur, 1);\n    }\n    \n    c_old = c_cur;\n    \n    switch ((op = mutt_menuLoop (menu)))\n    {\n      case OP_REDRAW:\n      {\n\tmenu_redraw_status (menu);\n\tmix_redraw_head (chain);\n\tmix_screen_coordinates (type2_list, &coords, chain, 0);\n\tmix_redraw_chain (type2_list, coords, chain, c_cur);\n\tmenu->pagelen = m_len = MIX_VOFFSET - menu->offset - 1;\n\tbreak;\n      }\n      \n      case OP_EXIT:\n      {\n\tchain->cl = 0;\n\tloop = 0;\n\tbreak;\n      }\n\n      case OP_MIX_USE:\n      {\n\tif (!chain->cl)\n\t{\n\t  chain->cl++;\n\t  chain->ch[0] = menu->current;\n\t  mix_screen_coordinates (type2_list, &coords, chain, c_cur);\n\t  c_redraw = 1;\n\t}\n\t\n\tif (chain->cl && chain->ch[chain->cl - 1] && \n\t    (type2_list[chain->ch[chain->cl-1]]->caps & MIX_CAP_MIDDLEMAN))\n\t{\n\t  mutt_error ( _(\"Error: %s can't be used as the final remailer of a chain.\"),\n\t\t    type2_list[chain->ch[chain->cl - 1]]->shortname);\n\t}\n\telse\n\t{\n\t  loop = 0;\n\t}\n\tbreak;\n      }\n\n      case OP_GENERIC_SELECT_ENTRY:\n      case OP_MIX_APPEND:\n      {\n\tif (chain->cl < MAXMIXES && c_cur < chain->cl)\n\t  c_cur++;\n      }\n      /* fallthrough */\n      case OP_MIX_INSERT:\n      {\n\tif (chain->cl < MAXMIXES)\n\t{\n\t  chain->cl++;\n\t  for (i = chain->cl - 1; i > c_cur; i--)\n\t    chain->ch[i] = chain->ch[i-1];\n\t  \n\t  chain->ch[c_cur] = menu->current;\n\t  mix_screen_coordinates (type2_list, &coords, chain, c_cur);\n\t  c_redraw = 1;\n\t}\n\telse\n\t  mutt_error ( _(\"Mixmaster chains are limited to %d elements.\"),\n\t\t    MAXMIXES);\n\t\n\tbreak;\n      }\n      \n      case OP_MIX_DELETE:\n      {\n\tif (chain->cl)\n\t{\n\t  chain->cl--;\n\t  \n\t  for (i = c_cur; i < chain->cl; i++)\n\t    chain->ch[i] = chain->ch[i+1];\n\n\t  if (c_cur == chain->cl && c_cur)\n\t    c_cur--;\n\t  \n\t  mix_screen_coordinates (type2_list, &coords, chain, c_cur);\n\t  c_redraw = 1;\n\t}\n\telse\n\t{\n\t  mutt_error _(\"The remailer chain is already empty.\");\n\t}\n\tbreak;\n      }\n      \n      case OP_MIX_CHAIN_PREV:\n      {\n\tif (c_cur) \n\t  c_cur--;\n\telse\n\t  mutt_error _(\"You already have the first chain element selected.\");\n\t\n\tbreak;\n      }\n      \n      case OP_MIX_CHAIN_NEXT:\n      {\n\tif (chain->cl && c_cur < chain->cl - 1)\n\t  c_cur++;\n\telse\n\t  mutt_error _(\"You already have the last chain element selected.\");\n\t\n\tbreak;\n      }\n    }\n  }\n  \n  mutt_menuDestroy (&menu);\n\n  /* construct the remailer list */\n  \n  if (chain->cl)\n  {\n    for (i = 0; i < chain->cl; i++)\n    {\n      if ((j = chain->ch[i]))\n\tt = type2_list[j]->shortname;\n      else\n\tt = \"*\";\n      \n      *chainp = mutt_add_list (*chainp, t);\n    }\n  }\n  \n  mix_free_type2_list (&type2_list);\n  FREE (&coords);\n  FREE (&chain);\n}\n\n/* some safety checks before piping the message to mixmaster */\n\nint mix_check_message (HEADER *msg)\n{\n  const char *fqdn;\n  short need_hostname = 0;\n  ADDRESS *p;\n  \n  if (msg->env->cc || msg->env->bcc)\n  {\n    mutt_error _(\"Mixmaster doesn't accept Cc or Bcc headers.\");\n    return -1;\n  }\n\n  /* When using mixmaster, we MUST qualify any addresses since\n   * the message will be delivered through remote systems.\n   * \n   * use_domain won't be respected at this point, hidden_host will.\n   */\n\n  for (p = msg->env->to; p; p = p->next)\n  {\n    if (!p->group && strchr (p->mailbox, '@') == NULL)\n    {\n      need_hostname = 1;\n      break;\n    }\n  }\n    \n  if (need_hostname)\n  {\n    \n    if (!(fqdn = mutt_fqdn (1)))\n    {\n      mutt_error _(\"Please set the hostname variable to a proper value when using mixmaster!\");\n      return (-1);\n    }\n  \n    /* Cc and Bcc are empty at this point. */\n    rfc822_qualify (msg->env->to, fqdn);\n    rfc822_qualify (msg->env->reply_to, fqdn);\n    rfc822_qualify (msg->env->mail_followup_to, fqdn);\n  }\n\n  return 0;\n}\n\nint mix_send_message (LIST *chain, const char *tempfile)\n{\n  char cmd[HUGE_STRING];\n  char tmp[HUGE_STRING];\n  char cd_quoted[STRING];\n  int i;\n\n  snprintf (cmd, sizeof (cmd), \"cat %s | %s -m \", tempfile, Mixmaster);\n  \n  for (i = 0; chain; chain = chain->next, i = 1)\n  {\n    strfcpy (tmp, cmd, sizeof (tmp));\n    mutt_quote_filename (cd_quoted, sizeof (cd_quoted), (char *) chain->data);\n    snprintf (cmd, sizeof (cmd), \"%s%s%s\", tmp, i ? \",\" : \" -l \", cd_quoted);\n  }\n\n  if (!option (OPTNOCURSES))\n    mutt_endwin (NULL);\n  \n  if ((i = mutt_system (cmd)))\n  {\n    fprintf (stderr, _(\"Error sending message, child exited %d.\\n\"), i);\n    if (!option (OPTNOCURSES))\n    {\n      mutt_any_key_to_continue (NULL);\n      mutt_error _(\"Error sending message.\");\n    }\n  }\n\n  unlink (tempfile);\n  return i;\n}\n  \n\n#endif\n"
  },
  {
    "path": "remailer.h",
    "content": "#ifndef _REMAILER_H\n#define _REMAILER_H\n\n/*\n * Copyright (C) 1999-2000 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/*\n * Mixmaster support for Mutt\n */\n\n#ifdef MIXMASTER\n\n#define MIX_CAP_COMPRESS  (1 << 0)\n#define MIX_CAP_MIDDLEMAN (1 << 1)\n#define MIX_CAP_NEWSPOST  (1 << 2)\n#define MIX_CAP_NEWSMAIL  (1 << 3)\n\n/* Mixmaster's maximum chain length.  Don't change this. */\n\n#define MAXMIXES 19\n\nstruct type2\n{\n  int num;\n  char *shortname;\n  char *addr;\n  char *ver;\n  int caps;\n};\n\ntypedef struct type2 REMAILER;\n\n\nstruct mixchain\n{\n  size_t cl;\n  int ch[MAXMIXES];\n};\n\ntypedef struct mixchain MIXCHAIN;\n\nint mix_send_message (LIST *, const char *);\nint mix_check_message (HEADER *msg);\nvoid mix_make_chain (LIST **, int *);\n\n#endif /* MIXMASTER */\n\n#endif /* _REMAILER_H */\n"
  },
  {
    "path": "resize.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n\n#include <stdlib.h>\n#include <unistd.h>\n#include <fcntl.h>\n#include <termios.h>\n\n#ifdef HAVE_SYS_IOCTL_H\n#include <sys/ioctl.h>\n#else\n# ifdef HAVE_IOCTL_H\n# include <ioctl.h>\n# endif\n#endif\n\n/* this routine should be called after receiving SIGWINCH */\nvoid mutt_resize_screen (void)\n{\n  char *cp;\n  int fd;\n  struct winsize w;\n#ifdef HAVE_RESIZETERM\n  int SLtt_Screen_Rows, SLtt_Screen_Cols;\n#endif\n\n  SLtt_Screen_Rows = -1;\n  SLtt_Screen_Cols = -1;\n  if ((fd = open (\"/dev/tty\", O_RDONLY)) != -1)\n  {\n    if (ioctl (fd, TIOCGWINSZ, &w) != -1)\n    {\n      SLtt_Screen_Rows = w.ws_row;\n      SLtt_Screen_Cols = w.ws_col;\n    }\n    close (fd);\n  }\n  if (SLtt_Screen_Rows <= 0)\n  {\n    if ((cp = getenv (\"LINES\")) != NULL && mutt_atoi (cp, &SLtt_Screen_Rows) < 0)\n      SLtt_Screen_Rows = 24;\n  }\n  if (SLtt_Screen_Cols <= 0)\n  {\n    if ((cp = getenv (\"COLUMNS\")) != NULL && mutt_atoi (cp, &SLtt_Screen_Cols) < 0)\n      SLtt_Screen_Cols = 80;\n  }\n#ifdef USE_SLANG_CURSES\n  delwin (stdscr);\n  SLsmg_reset_smg ();\n  SLsmg_init_smg ();\n  stdscr = newwin (0, 0, 0, 0);\n  keypad (stdscr, TRUE);\n#else\n  resizeterm (SLtt_Screen_Rows, SLtt_Screen_Cols);\n#endif\n}\n"
  },
  {
    "path": "rfc1524.c",
    "content": "/*\n * Copyright (C) 1996-2000,2003,2012 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/* \n * rfc1524 defines a format for the Multimedia Mail Configuration, which\n * is the standard mailcap file format under Unix which specifies what \n * external programs should be used to view/compose/edit multimedia files\n * based on content type.\n *\n * This file contains various functions for implementing a fair subset of \n * rfc1524.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"rfc1524.h\"\n\n#include <string.h>\n#include <stdlib.h>\n#include <ctype.h>\n\n#include <sys/stat.h>\n#include <sys/wait.h>\n#include <errno.h>\n#include <unistd.h>\n\n/* The command semantics include the following:\n * %s is the filename that contains the mail body data\n * %t is the content type, like text/plain\n * %{parameter} is replaced by the parameter value from the content-type field\n * \\% is %\n * Unsupported rfc1524 parameters: these would probably require some doing\n * by mutt, and can probably just be done by piping the message to metamail\n * %n is the integer number of sub-parts in the multipart\n * %F is \"content-type filename\" repeated for each sub-part\n *\n * In addition, this function returns a 0 if the command works on a file,\n * and 1 if the command works on a pipe.\n */\nint rfc1524_expand_command (BODY *a, char *filename, char *_type,\n    char *command, int clen)\n{\n  int x=0,y=0;\n  int needspipe = TRUE;\n  char buf[LONG_STRING];\n  char type[LONG_STRING];\n  \n  strfcpy (type, _type, sizeof (type));\n  \n  if (option (OPTMAILCAPSANITIZE))\n    mutt_sanitize_filename (type, 0);\n\n  while (x < clen - 1 && command[x] && y < sizeof (buf) - 1)\n  {\n    if (command[x] == '\\\\')\n    {\n      x++;\n      buf[y++] = command[x++];\n    }\n    else if (command[x] == '%') \n    {\n      x++;\n      if (command[x] == '{') \n      {\n\tchar param[STRING];\n\tchar pvalue[STRING];\n\tchar *_pvalue;\n\tint z = 0;\n\n\tx++;\n\twhile (command[x] && command[x] != '}' && z < sizeof (param) - 1)\n\t  param[z++] = command[x++];\n\tparam[z] = '\\0';\n\t\n\t_pvalue = mutt_get_parameter (param, a->parameter);\n\tstrfcpy (pvalue, NONULL(_pvalue), sizeof (pvalue));\n\tif (option (OPTMAILCAPSANITIZE))\n\t  mutt_sanitize_filename (pvalue, 0);\n\t\n\ty += mutt_quote_filename (buf + y, sizeof (buf) - y, pvalue);\n      }\n      else if (command[x] == 's' && filename != NULL)\n      {\n\ty += mutt_quote_filename (buf + y, sizeof (buf) - y, filename);\n\tneedspipe = FALSE;\n      }\n      else if (command[x] == 't')\n      {\n\ty += mutt_quote_filename (buf + y, sizeof (buf) - y, type);\n      }\n      x++;\n    }\n    else\n      buf[y++] = command[x++];\n  }\n  buf[y] = '\\0';\n  strfcpy (command, buf, clen);\n\n  return needspipe;\n}\n\n/* NUL terminates a rfc 1524 field,\n * returns start of next field or NULL */\nstatic char *get_field (char *s)\n{\n  char *ch;\n\n  if (!s)\n    return NULL;\n\n  while ((ch = strpbrk (s, \";\\\\\")) != NULL)\n  {\n    if (*ch == '\\\\')\n    {\n      s = ch + 1;\n      if (*s)\n\ts++;\n    }\n    else\n    {\n      *ch = 0;\n      ch = skip_email_wsp(ch + 1);\n      break;\n    }\n  }\n  mutt_remove_trailing_ws (s);\n  return ch;\n}\n\nstatic int get_field_text (char *field, char **entry,\n\t\t\t   char *type, char *filename, int line)\n{\n  field = mutt_skip_whitespace (field);\n  if (*field == '=')\n  {\n    if (entry)\n    {\n      field++;\n      field = mutt_skip_whitespace (field);\n      mutt_str_replace (entry, field);\n    }\n    return 1;\n  }\n  else \n  {\n    mutt_error (_(\"Improperly formatted entry for type %s in \\\"%s\\\" line %d\"),\n\t\ttype, filename, line);\n    return 0;\n  }\n}\n\nstatic int rfc1524_mailcap_parse (BODY *a,\n\t\t\t\t  char *filename,\n\t\t\t\t  char *type, \n\t\t\t\t  rfc1524_entry *entry,\n\t\t\t\t  int opt)\n{\n  FILE *fp;\n  char *buf = NULL;\n  size_t buflen;\n  char *ch;\n  char *field;\n  int found = FALSE;\n  int copiousoutput;\n  int composecommand;\n  int editcommand;\n  int printcommand;\n  int btlen;\n  int line = 0;\n\n  /* rfc1524 mailcap file is of the format:\n   * base/type; command; extradefs\n   * type can be * for matching all\n   * base with no /type is an implicit wild\n   * command contains a %s for the filename to pass, default to pipe on stdin\n   * extradefs are of the form:\n   *  def1=\"definition\"; def2=\"define \\;\";\n   * line wraps with a \\ at the end of the line\n   * # for comments\n   */\n\n  /* find length of basetype */\n  if ((ch = strchr (type, '/')) == NULL)\n    return FALSE;\n  btlen = ch - type;\n\n  if ((fp = fopen (filename, \"r\")) != NULL)\n  {\n    while (!found && (buf = mutt_read_line (buf, &buflen, fp, &line, M_CONT)) != NULL)\n    {\n      /* ignore comments */\n      if (*buf == '#')\n\tcontinue;\n      dprint (2, (debugfile, \"mailcap entry: %s\\n\", buf));\n\n      /* check type */\n      ch = get_field (buf);\n      if (ascii_strcasecmp (buf, type) &&\n\t  (ascii_strncasecmp (buf, type, btlen) ||\n\t   (buf[btlen] != 0 &&\t\t\t/* implicit wild */\n\t    mutt_strcmp (buf + btlen, \"/*\"))))\t/* wildsubtype */\n\tcontinue;\n\n      /* next field is the viewcommand */\n      field = ch;\n      ch = get_field (ch);\n      if (entry)\n\tentry->command = safe_strdup (field);\n\n      /* parse the optional fields */\n      found = TRUE;\n      copiousoutput = FALSE;\n      composecommand = FALSE;\n      editcommand = FALSE;\n      printcommand = FALSE;\n\n      while (ch)\n      {\n\tfield = ch;\n\tch = get_field (ch);\n\tdprint (2, (debugfile, \"field: %s\\n\", field));\n\n\tif (!ascii_strcasecmp (field, \"needsterminal\"))\n\t{\n\t  if (entry)\n\t    entry->needsterminal = TRUE;\n\t}\n\telse if (!ascii_strcasecmp (field, \"copiousoutput\"))\n\t{\n\t  copiousoutput = TRUE;\n\t  if (entry)\n\t    entry->copiousoutput = TRUE;\n\t}\n\telse if (!ascii_strncasecmp (field, \"composetyped\", 12))\n\t{\n\t  /* this compare most occur before compose to match correctly */\n\t  if (get_field_text (field + 12, entry ? &entry->composetypecommand : NULL,\n\t\t\t      type, filename, line))\n\t    composecommand = TRUE;\n\t}\n\telse if (!ascii_strncasecmp (field, \"compose\", 7))\n\t{\n\t  if (get_field_text (field + 7, entry ? &entry->composecommand : NULL,\n\t\t\t      type, filename, line))\n\t    composecommand = TRUE;\n\t}\n\telse if (!ascii_strncasecmp (field, \"print\", 5))\n\t{\n\t  if (get_field_text (field + 5, entry ? &entry->printcommand : NULL,\n\t\t\t      type, filename, line))\n\t    printcommand = TRUE;\n\t}\n\telse if (!ascii_strncasecmp (field, \"edit\", 4))\n\t{\n\t  if (get_field_text (field + 4, entry ? &entry->editcommand : NULL,\n\t\t\t      type, filename, line))\n\t    editcommand = TRUE;\n\t}\n\telse if (!ascii_strncasecmp (field, \"nametemplate\", 12))\n\t{\n\t  get_field_text (field + 12, entry ? &entry->nametemplate : NULL,\n\t\t\t  type, filename, line);\n\t}\n\telse if (!ascii_strncasecmp (field, \"x-convert\", 9))\n\t{\n\t  get_field_text (field + 9, entry ? &entry->convert : NULL,\n\t\t\t  type, filename, line);\n\t}\n\telse if (!ascii_strncasecmp (field, \"test\", 4))\n\t{\n\t  /* \n\t   * This routine executes the given test command to determine\n\t   * if this is the right entry.\n\t   */\n\t  char *test_command = NULL;\n\t  size_t len;\n\n\t  if (get_field_text (field + 4, &test_command, type, filename, line)\n\t      && test_command)\n\t  {\n\t    len = mutt_strlen (test_command) + STRING;\n\t    safe_realloc (&test_command, len);\n\t    rfc1524_expand_command (a, a->filename, type, test_command, len);\n\t    if (mutt_system (test_command))\n\t    {\n\t      /* a non-zero exit code means test failed */\n\t      found = FALSE;\n\t    }\n\t    FREE (&test_command);\n\t  }\n\t}\n      } /* while (ch) */\n\n      if (opt == M_AUTOVIEW)\n      {\n\tif (!copiousoutput)\n\t  found = FALSE;\n      }\n      else if (opt == M_COMPOSE)\n      {\n\tif (!composecommand)\n\t  found = FALSE;\n      }\n      else if (opt == M_EDIT)\n      {\n\tif (!editcommand)\n\t  found = FALSE;\n      }\n      else if (opt == M_PRINT)\n      {\n\tif (!printcommand)\n\t  found = FALSE;\n      }\n      \n      if (!found)\n      {\n\t/* reset */\n\tif (entry)\n\t{\n\t  FREE (&entry->command);\n\t  FREE (&entry->composecommand);\n\t  FREE (&entry->composetypecommand);\n\t  FREE (&entry->editcommand);\n\t  FREE (&entry->printcommand);\n\t  FREE (&entry->nametemplate);\n\t  FREE (&entry->convert);\n\t  entry->needsterminal = 0;\n\t  entry->copiousoutput = 0;\n\t}\n      }\n    } /* while (!found && (buf = mutt_read_line ())) */\n    safe_fclose (&fp);\n  } /* if ((fp = fopen ())) */\n  FREE (&buf);\n  return found;\n}\n\nrfc1524_entry *rfc1524_new_entry(void)\n{\n  return (rfc1524_entry *)safe_calloc(1, sizeof(rfc1524_entry));\n}\n\nvoid rfc1524_free_entry(rfc1524_entry **entry)\n{\n  rfc1524_entry *p = *entry;\n\n  FREE (&p->command);\n  FREE (&p->testcommand);\n  FREE (&p->composecommand);\n  FREE (&p->composetypecommand);\n  FREE (&p->editcommand);\n  FREE (&p->printcommand);\n  FREE (&p->nametemplate);\n  FREE (entry);\t\t/* __FREE_CHECKED__ */\n}\n\n/*\n * rfc1524_mailcap_lookup attempts to find the given type in the\n * list of mailcap files.  On success, this returns the entry information\n * in *entry, and returns 1.  On failure (not found), returns 0.\n * If entry == NULL just return 1 if the given type is found.\n */\nint rfc1524_mailcap_lookup (BODY *a, char *type, rfc1524_entry *entry, int opt)\n{\n  char path[_POSIX_PATH_MAX];\n  int x;\n  int found = FALSE;\n  char *curr = MailcapPath;\n\n  /* rfc1524 specifies that a path of mailcap files should be searched.\n   * joy.  They say \n   * $HOME/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap, etc\n   * and overridden by the MAILCAPS environment variable, and, just to be nice,\n   * we'll make it specifiable in .muttrc\n   */\n  if (!curr || !*curr)\n  {\n    mutt_error _(\"No mailcap path specified\");\n    return 0;\n  }\n\n  mutt_check_lookup_list (a, type, SHORT_STRING);\n\n  while (!found && *curr)\n  {\n    x = 0;\n    while (*curr && *curr != ':' && x < sizeof (path) - 1)\n    {\n      path[x++] = *curr;\n      curr++;\n    }\n    if (*curr)\n      curr++;\n\n    if (!x)\n      continue;\n    \n    path[x] = '\\0';\n    mutt_expand_path (path, sizeof (path));\n\n    dprint(2,(debugfile,\"Checking mailcap file: %s\\n\",path));\n    found = rfc1524_mailcap_parse (a, path, type, entry, opt);\n  }\n\n  if (entry && !found)\n    mutt_error (_(\"mailcap entry for type %s not found\"), type);\n\n  return found;\n}\n\n\n/* This routine will create a _temporary_ filename matching the\n * name template given if this needs to be done.\n * \n * Please note that only the last path element of the\n * template and/or the old file name will be used for the\n * comparison and the temporary file name.\n * \n * Returns 0 if oldfile is fine as is.\n * Returns 1 if newfile specified\n */\n\nstatic void strnfcpy(char *d, char *s, size_t siz, size_t len)\n{\n  if(len > siz)\n    len = siz - 1;\n  strfcpy(d, s, len);\n}\n\nint rfc1524_expand_filename (char *nametemplate,\n\t\t\t     char *oldfile, \n\t\t\t     char *newfile,\n\t\t\t     size_t nflen)\n{\n  int i, j, k, ps;\n  char *s;\n  short lmatch = 0, rmatch = 0; \n  char left[_POSIX_PATH_MAX];\n  char right[_POSIX_PATH_MAX];\n  \n  newfile[0] = 0;\n\n  /* first, ignore leading path components.\n   */\n  \n  if (nametemplate && (s = strrchr (nametemplate, '/')))\n    nametemplate = s + 1;\n\n  if (oldfile && (s = strrchr (oldfile, '/')))\n    oldfile = s + 1;\n    \n  if (!nametemplate)\n  {\n    if (oldfile)\n      strfcpy (newfile, oldfile, nflen);\n  }\n  else if (!oldfile)\n  {\n    mutt_expand_fmt (newfile, nflen, nametemplate, \"mutt\");\n  }\n  else /* oldfile && nametemplate */\n  {\n\n    /* first, compare everything left from the \"%s\" \n     * (if there is one).\n     */\n    \n    lmatch = 1; ps = 0;\n    for(i = 0; nametemplate[i]; i++)\n    {\n      if(nametemplate[i] == '%' && nametemplate[i+1] == 's')\n      { \n\tps = 1;\n\tbreak;\n      }\n\n      /* note that the following will _not_ read beyond oldfile's end. */\n\n      if(lmatch && nametemplate[i] != oldfile[i])\n\tlmatch = 0;\n    }\n\n    if(ps)\n    {\n      \n      /* If we had a \"%s\", check the rest. */\n      \n      /* now, for the right part: compare everything right from \n       * the \"%s\" to the final part of oldfile.\n       * \n       * The logic here is as follows:\n       * \n       * - We start reading from the end.\n       * - There must be a match _right_ from the \"%s\",\n       *   thus the i + 2.  \n       * - If there was a left hand match, this stuff\n       *   must not be counted again.  That's done by the\n       *   condition (j >= (lmatch ? i : 0)).\n       */\n      \n      rmatch = 1;\n\n      for(j = mutt_strlen(oldfile) - 1, k = mutt_strlen(nametemplate) - 1 ;\n\t  j >= (lmatch ? i : 0) && k >= i + 2;\n\t  j--, k--)\n      {\n\tif(nametemplate[k] != oldfile[j])\n\t{\n\t  rmatch = 0;\n\t  break;\n\t}\n      }\n      \n      /* Now, check if we had a full match. */\n      \n      if(k >= i + 2)\n\trmatch = 0;\n      \n      if(lmatch) *left = 0;\n      else strnfcpy(left, nametemplate, sizeof(left), i);\n      \n      if(rmatch) *right = 0;\n      else strfcpy(right, nametemplate + i + 2, sizeof(right));\n      \n      snprintf(newfile, nflen, \"%s%s%s\", left, oldfile, right);\n    }\n    else\n    {\n      /* no \"%s\" in the name template. */\n      strfcpy(newfile, nametemplate, nflen);\n    }\n  }\n  \n  mutt_adv_mktemp(newfile, nflen);\n\n  if(rmatch && lmatch)\n    return 0;\n  else \n    return 1;\n  \n}\n\n/* If rfc1524_expand_command() is used on a recv'd message, then\n * the filename doesn't exist yet, but if its used while sending a message,\n * then we need to rename the existing file.\n *\n * This function returns 0 on successful move, 1 on old file doesn't exist,\n * 2 on new file already exists, and 3 on other failure.\n */\n\n/* note on access(2) use: No dangling symlink problems here due to\n * safe_fopen().\n */\n\nint mutt_rename_file (char *oldfile, char *newfile)\n{\n  FILE *ofp, *nfp;\n\n  if (access (oldfile, F_OK) != 0)\n    return 1;\n  if (access (newfile, F_OK) == 0)\n    return 2;\n  if ((ofp = fopen (oldfile,\"r\")) == NULL)\n    return 3;\n  if ((nfp = safe_fopen (newfile,\"w\")) == NULL)\n  {\n    safe_fclose (&ofp);\n    return 3;\n  }\n  mutt_copy_stream (ofp,nfp);\n  safe_fclose (&nfp);\n  safe_fclose (&ofp);\n  mutt_unlink (oldfile);\n  return 0;\n}\n"
  },
  {
    "path": "rfc1524.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef _RFC1524_H\n#define _RFC1524_H\n\ntypedef struct rfc1524_mailcap_entry {\n/*  char *contenttype; */ /* we don't need this, as we search for it */\n  char *command;\n  char *testcommand;\n  char *composecommand;\n  char *composetypecommand;\n  char *editcommand;\n  char *printcommand;\n  char *nametemplate;\n  char *convert;\n/*  char *description; */ /* we don't need this */\n  unsigned int needsterminal : 1;  /* endwin() and system */\n  unsigned int copiousoutput : 1;  /* needs pager, basically */\n} rfc1524_entry;\n\nrfc1524_entry *rfc1524_new_entry (void);\nvoid rfc1524_free_entry (rfc1524_entry **);\nint rfc1524_expand_command (BODY *, char *, char *, char *, int);\nint rfc1524_expand_filename (char *, char *, char *, size_t);\nint rfc1524_mailcap_lookup (BODY *, char *, rfc1524_entry *, int);\nint mutt_rename_file (char *, char *);\n\n#endif /* _RFC1524_H */\n"
  },
  {
    "path": "rfc2047.c",
    "content": "/*\n * Copyright (C) 1996-2000,2010 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mime.h\"\n#include \"charset.h\"\n#include \"rfc2047.h\"\n\n#include <ctype.h>\n#include <errno.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n/* If you are debugging this file, comment out the following line. */\n/*#define NDEBUG*/\n\n#ifdef NDEBUG\n#define assert(x)\n#else\n#include <assert.h>\n#endif\n\n#define ENCWORD_LEN_MAX 75\n#define ENCWORD_LEN_MIN 9 /* strlen (\"=?.?.?.?=\") */\n\n#define HSPACE(x) ((x) == '\\0' || (x) == ' ' || (x) == '\\t')\n\n#define CONTINUATION_BYTE(c) (((c) & 0xc0) == 0x80)\n\nextern char RFC822Specials[];\n\ntypedef size_t (*encoder_t) (char *, ICONV_CONST char *, size_t,\n\t\t\t     const char *);\n\nstatic size_t convert_string (ICONV_CONST char *f, size_t flen,\n\t\t\t      const char *from, const char *to,\n\t\t\t      char **t, size_t *tlen)\n{\n  iconv_t cd;\n  char *buf, *ob;\n  size_t obl, n;\n  int e;\n\n  cd = mutt_iconv_open (to, from, 0);\n  if (cd == (iconv_t)(-1))\n    return (size_t)(-1);\n  obl = 4 * flen + 1;\n  ob = buf = safe_malloc (obl);\n  n = iconv (cd, &f, &flen, &ob, &obl);\n  if (n == (size_t)(-1) || iconv (cd, 0, 0, &ob, &obl) == (size_t)(-1))\n  {\n    e = errno;\n    FREE (&buf);\n    iconv_close (cd);\n    errno = e;\n    return (size_t)(-1);\n  }\n  *ob = '\\0';\n  \n  *tlen = ob - buf;\n\n  safe_realloc (&buf, ob - buf + 1);\n  *t = buf;\n  iconv_close (cd);\n\n  return n;\n}\n\nint convert_nonmime_string (char **ps)\n{\n  const char *c, *c1;\n\n  for (c = AssumedCharset; c; c = c1 ? c1 + 1 : 0)\n  {\n    char *u = *ps;\n    char *s;\n    char *fromcode;\n    size_t m, n;\n    size_t ulen = mutt_strlen (*ps);\n    size_t slen;\n\n    if (!u || !*u)\n      return 0;\n\n    c1 = strchr (c, ':');\n    n = c1 ? c1 - c : mutt_strlen (c);\n    if (!n)\n      return 0;\n    fromcode = safe_malloc (n + 1);\n    strfcpy (fromcode, c, n + 1);\n    m = convert_string (u, ulen, fromcode, Charset, &s, &slen);\n    FREE (&fromcode);\n    if (m != (size_t)(-1))\n    {\n      FREE (ps); /* __FREE_CHECKED__ */\n      *ps = s;\n      return 0;\n    }\n  }\n  mutt_convert_string (ps,\n      (const char *)mutt_get_default_charset (),\n      Charset, M_ICONV_HOOK_FROM);\n  return -1;\n}\n\nchar *mutt_choose_charset (const char *fromcode, const char *charsets,\n\t\t      char *u, size_t ulen, char **d, size_t *dlen)\n{\n  char canonical_buff[LONG_STRING];\n  char *e = 0, *tocode = 0;\n  size_t elen = 0, bestn = 0;\n  const char *p, *q;\n\n  for (p = charsets; p; p = q ? q + 1 : 0)\n  {\n    char *s, *t;\n    size_t slen, n;\n\n    q = strchr (p, ':');\n\n    n = q ? q - p : strlen (p);\n\n    if (!n ||\n\t/* Assume that we never need more than 12 characters of\n\t   encoded-text to encode a single character. */\n\tn > (ENCWORD_LEN_MAX - ENCWORD_LEN_MIN + 2 - 12))\n      continue;\n\n    t = safe_malloc (n + 1);\n    memcpy (t, p, n);\n    t[n] = '\\0';\n\n    n = convert_string (u, ulen, fromcode, t, &s, &slen);\n    if (n == (size_t)(-1))\n      continue;\n\n    if (!tocode || n < bestn)\n    {\n      bestn = n;\n      FREE (&tocode);\n      tocode = t;\n      if (d)\n      {\n\tFREE (&e);\n\te = s;\n      }\n      else\n\tFREE (&s);\n      elen = slen;\n      if (!bestn)\n\tbreak;\n    }\n    else\n    {\n      FREE (&t);\n      FREE (&s);\n    }\n  }\n  if (tocode)\n  {\n    if (d)\n      *d = e;\n    if (dlen)\n      *dlen = elen;\n    \n    mutt_canonical_charset (canonical_buff, sizeof (canonical_buff), tocode);\n    mutt_str_replace (&tocode, canonical_buff);\n  }\n  return tocode;\n}\n\nstatic size_t b_encoder (char *s, ICONV_CONST char *d, size_t dlen,\n\t\t\t const char *tocode)\n{\n  char *s0 = s;\n\n  memcpy (s, \"=?\", 2), s += 2;\n  memcpy (s, tocode, strlen (tocode)), s += strlen (tocode);\n  memcpy (s, \"?B?\", 3), s += 3;\n  for (;;)\n  {\n    if (!dlen)\n      break;\n    else if (dlen == 1)\n    {\n      *s++ = B64Chars[(*d >> 2) & 0x3f];\n      *s++ = B64Chars[(*d & 0x03) << 4];\n      *s++ = '=';\n      *s++ = '=';\n      break;\n    }\n    else if (dlen == 2)\n    {\n      *s++ = B64Chars[(*d >> 2) & 0x3f];\n      *s++ = B64Chars[((*d & 0x03) << 4) | ((d[1] >> 4) & 0x0f)];\n      *s++ = B64Chars[(d[1] & 0x0f) << 2];\n      *s++ = '=';\n      break;\n    }\n    else\n    {\n      *s++ = B64Chars[(*d >> 2) & 0x3f];\n      *s++ = B64Chars[((*d & 0x03) << 4) | ((d[1] >> 4) & 0x0f)];\n      *s++ = B64Chars[((d[1] & 0x0f) << 2) | ((d[2] >> 6) & 0x03)];\n      *s++ = B64Chars[d[2] & 0x3f];\n      d += 3, dlen -= 3;\n    }\n  }\n  memcpy (s, \"?=\", 2), s += 2;\n  return s - s0;\n}\n\nstatic size_t q_encoder (char *s, ICONV_CONST char *d, size_t dlen,\n\t\t\t const char *tocode)\n{\n  static const char hex[] = \"0123456789ABCDEF\";\n  char *s0 = s;\n\n  memcpy (s, \"=?\", 2), s += 2;\n  memcpy (s, tocode, strlen (tocode)), s += strlen (tocode);\n  memcpy (s, \"?Q?\", 3), s += 3;\n  while (dlen--)\n  {\n    unsigned char c = *d++;\n    if (c == ' ')\n      *s++ = '_';\n    else if (c >= 0x7f || c < 0x20 || c == '_' ||  strchr (MimeSpecials, c))\n    {\n      *s++ = '=';\n      *s++ = hex[(c & 0xf0) >> 4];\n      *s++ = hex[c & 0x0f];\n    }\n    else\n      *s++ = c;\n  }\n  memcpy (s, \"?=\", 2), s += 2;\n  return s - s0;\n}\n\n/*\n * Return 0 if and set *encoder and *wlen if the data (d, dlen) could\n * be converted to an encoded word of length *wlen using *encoder.\n * Otherwise return an upper bound on the maximum length of the data\n * which could be converted.\n * The data is converted from fromcode (which must be stateless) to\n * tocode, unless fromcode is 0, in which case the data is assumed to\n * be already in tocode, which should be 8-bit and stateless.\n */\nstatic size_t try_block (ICONV_CONST char *d, size_t dlen,\n\t\t\t const char *fromcode, const char *tocode,\n\t\t\t encoder_t *encoder, size_t *wlen)\n{\n  char buf1[ENCWORD_LEN_MAX - ENCWORD_LEN_MIN + 1];\n  iconv_t cd;\n  ICONV_CONST char *ib;\n  char *ob, *p;\n  size_t ibl, obl;\n  int count, len, len_b, len_q;\n\n  if (fromcode)\n  {\n    cd = mutt_iconv_open (tocode, fromcode, 0);\n    assert (cd != (iconv_t)(-1));\n    ib = d, ibl = dlen, ob = buf1, obl = sizeof (buf1) - strlen (tocode);\n    if (iconv (cd, &ib, &ibl, &ob, &obl) == (size_t)(-1) ||\n\ticonv (cd, 0, 0, &ob, &obl) == (size_t)(-1))\n    {\n      assert (errno == E2BIG);\n      iconv_close (cd);\n      assert (ib > d);\n      return (ib - d == dlen) ? dlen : ib - d + 1;\n    }\n    iconv_close (cd);\n  }\n  else\n  {\n    if (dlen > sizeof (buf1) - strlen (tocode))\n      return sizeof (buf1) - strlen (tocode) + 1;\n    memcpy (buf1, d, dlen);\n    ob = buf1 + dlen;\n  }\n\n  count = 0;\n  for (p = buf1; p < ob; p++)\n  {\n    unsigned char c = *p;\n    assert (strchr (MimeSpecials, '?'));\n    if (c >= 0x7f || c < 0x20 || *p == '_' ||\n\t(c != ' ' && strchr (MimeSpecials, *p)))\n      ++count;\n  }\n\n  len = ENCWORD_LEN_MIN - 2 + strlen (tocode);\n  len_b = len + (((ob - buf1) + 2) / 3) * 4;\n  len_q = len + (ob - buf1) + 2 * count;\n\n  /* Apparently RFC 1468 says to use B encoding for iso-2022-jp. */\n  if (!ascii_strcasecmp (tocode, \"ISO-2022-JP\"))\n    len_q = ENCWORD_LEN_MAX + 1;\n\n  if (len_b < len_q && len_b <= ENCWORD_LEN_MAX)\n  {\n    *encoder = b_encoder;\n    *wlen = len_b;\n    return 0;\n  }\n  else if (len_q <= ENCWORD_LEN_MAX)\n  {\n    *encoder = q_encoder;\n    *wlen = len_q;\n    return 0;\n  }\n  else\n    return dlen;\n}\n\n/*\n * Encode the data (d, dlen) into s using the encoder.\n * Return the length of the encoded word.\n */\nstatic size_t encode_block (char *s, char *d, size_t dlen,\n\t\t\t    const char *fromcode, const char *tocode,\n\t\t\t    encoder_t encoder)\n{\n  char buf1[ENCWORD_LEN_MAX - ENCWORD_LEN_MIN + 1];\n  iconv_t cd;\n  ICONV_CONST char *ib;\n  char *ob;\n  size_t ibl, obl, n1, n2;\n\n  if (fromcode)\n  {\n    cd = mutt_iconv_open (tocode, fromcode, 0);\n    assert (cd != (iconv_t)(-1));\n    ib = d, ibl = dlen, ob = buf1, obl = sizeof (buf1) - strlen (tocode);\n    n1 = iconv (cd, &ib, &ibl, &ob, &obl);\n    n2 = iconv (cd, 0, 0, &ob, &obl);\n    assert (n1 != (size_t)(-1) && n2 != (size_t)(-1));\n    iconv_close (cd);\n    return (*encoder) (s, buf1, ob - buf1, tocode);\n  }\n  else\n    return (*encoder) (s, d, dlen, tocode);\n}\n\n/*\n * Discover how much of the data (d, dlen) can be converted into\n * a single encoded word. Return how much data can be converted,\n * and set the length *wlen of the encoded word and *encoder.\n * We start in column col, which limits the length of the word.\n */\nstatic size_t choose_block (char *d, size_t dlen, int col,\n\t\t\t    const char *fromcode, const char *tocode,\n\t\t\t    encoder_t *encoder, size_t *wlen)\n{\n  size_t n, nn;\n  int utf8 = fromcode && !ascii_strcasecmp (fromcode, \"utf-8\");\n\n  n = dlen;\n  for (;;)\n  {\n    assert (d + n > d);\n    nn = try_block (d, n, fromcode, tocode, encoder, wlen);\n    if (!nn && (col + *wlen <= ENCWORD_LEN_MAX + 1 || n <= 1))\n      break;\n    n = (nn ? nn : n) - 1;\n    assert (n > 0);\n    if (utf8)\n      while (n > 1 && CONTINUATION_BYTE(d[n]))\n\t--n;\n  }\n  return n;\n}\n\n/*\n * Place the result of RFC-2047-encoding (d, dlen) into the dynamically\n * allocated buffer (e, elen). The input data is in charset fromcode\n * and is converted into a charset chosen from charsets.\n * Return 1 if the conversion to UTF-8 failed, 2 if conversion from UTF-8\n * failed, otherwise 0. If conversion failed, fromcode is assumed to be\n * compatible with us-ascii and the original data is used.\n * The input data is assumed to be a single line starting at column col;\n * if col is non-zero, the preceding character was a space.\n */\nstatic int rfc2047_encode (ICONV_CONST char *d, size_t dlen, int col,\n\t\t\t   const char *fromcode, const char *charsets,\n\t\t\t   char **e, size_t *elen, char *specials)\n{\n  int ret = 0;\n  char *buf;\n  size_t bufpos, buflen;\n  char *u, *t0, *t1, *t;\n  char *s0, *s1;\n  size_t ulen, r, n, wlen;\n  encoder_t encoder;\n  char *tocode1 = 0;\n  const char *tocode;\n  char *icode = \"utf-8\";\n\n  /* Try to convert to UTF-8. */\n  if (convert_string (d, dlen, fromcode, icode, &u, &ulen))\n  {\n    ret = 1; \n    icode = 0;\n    u = safe_malloc ((ulen = dlen) + 1);\n    memcpy (u, d, dlen);\n    u[ulen] = 0;\n  }\n\n  /* Find earliest and latest things we must encode. */\n  s0 = s1 = t0 = t1 = 0;\n  for (t = u; t < u + ulen; t++)\n  {\n    if ((*t & 0x80) || \n\t(*t == '=' && t[1] == '?' && (t == u || HSPACE(*(t-1)))))\n    {\n      if (!t0) t0 = t;\n      t1 = t;\n    }\n    else if (specials && *t && strchr (specials, *t))\n    {\n      if (!s0) s0 = t;\n      s1 = t;\n    }\n  }\n\n  /* If we have something to encode, include RFC822 specials */\n  if (t0 && s0 && s0 < t0)\n    t0 = s0;\n  if (t1 && s1 && s1 > t1)\n    t1 = s1;\n\n  if (!t0)\n  {\n    /* No encoding is required. */\n    *e = u;\n    *elen = ulen;\n    return ret;\n  }\n\n  /* Choose target charset. */\n  tocode = fromcode;\n  if (icode)\n  {\n    if ((tocode1 = mutt_choose_charset (icode, charsets, u, ulen, 0, 0)))\n      tocode = tocode1;\n    else\n      ret = 2, icode = 0;\n  }\n\n  /* Hack to avoid labelling 8-bit data as us-ascii. */\n  if (!icode && mutt_is_us_ascii (tocode))\n    tocode = \"unknown-8bit\";\n  \n  /* Adjust t0 for maximum length of line. */\n  t = u + (ENCWORD_LEN_MAX + 1) - col - ENCWORD_LEN_MIN;\n  if (t < u)  t = u;\n  if (t < t0) t0 = t;\n  \n\n  /* Adjust t0 until we can encode a character after a space. */\n  for (; t0 > u; t0--)\n  {\n    if (!HSPACE(*(t0-1)))\n      continue;\n    t = t0 + 1;\n    if (icode)\n      while (t < u + ulen && CONTINUATION_BYTE(*t))\n\t++t;\n    if (!try_block (t0, t - t0, icode, tocode, &encoder, &wlen) &&\n\tcol + (t0 - u) + wlen <= ENCWORD_LEN_MAX + 1)\n      break;\n  }\n\n  /* Adjust t1 until we can encode a character before a space. */\n  for (; t1 < u + ulen; t1++)\n  {\n    if (!HSPACE(*t1))\n      continue;\n    t = t1 - 1;\n    if (icode)\n      while (CONTINUATION_BYTE(*t))\n\t--t;\n    if (!try_block (t, t1 - t, icode, tocode, &encoder, &wlen) &&\n\t1 + wlen + (u + ulen - t1) <= ENCWORD_LEN_MAX + 1)\n      break;\n  }\n\n  /* We shall encode the region [t0,t1). */\n\n  /* Initialise the output buffer with the us-ascii prefix. */\n  buflen = 2 * ulen;\n  buf = safe_malloc (buflen);\n  bufpos = t0 - u;\n  memcpy (buf, u, t0 - u);\n\n  col += t0 - u;\n\n  t = t0;\n  for (;;)\n  {\n    /* Find how much we can encode. */\n    n = choose_block (t, t1 - t, col, icode, tocode, &encoder, &wlen);\n    if (n == t1 - t)\n    {\n      /* See if we can fit the us-ascii suffix, too. */\n      if (col + wlen + (u + ulen - t1) <= ENCWORD_LEN_MAX + 1)\n\tbreak;\n      n = t1 - t - 1;\n      if (icode)\n\twhile (CONTINUATION_BYTE(t[n]))\n\t  --n;\n      assert (t + n >= t);\n      if (!n)\n      {\n\t/* This should only happen in the really stupid case where the\n\t   only word that needs encoding is one character long, but\n\t   there is too much us-ascii stuff after it to use a single\n\t   encoded word. We add the next word to the encoded region\n\t   and try again. */\n\tassert (t1 < u + ulen);\n\tfor (t1++; t1 < u + ulen && !HSPACE(*t1); t1++)\n\t  ;\n\tcontinue;\n      }\n      n = choose_block (t, n, col, icode, tocode, &encoder, &wlen);\n    }\n\n    /* Add to output buffer. */\n#define LINEBREAK \"\\n\\t\"\n    if (bufpos + wlen + strlen (LINEBREAK) > buflen)\n    {\n      buflen = bufpos + wlen + strlen (LINEBREAK);\n      safe_realloc (&buf, buflen);\n    }\n    r = encode_block (buf + bufpos, t, n, icode, tocode, encoder);\n    assert (r == wlen);\n    bufpos += wlen;\n    memcpy (buf + bufpos, LINEBREAK, strlen (LINEBREAK));\n    bufpos += strlen (LINEBREAK);\n#undef LINEBREAK\n\n    col = 1;\n\n    t += n;\n  }\n\n  /* Add last encoded word and us-ascii suffix to buffer. */\n  buflen = bufpos + wlen + (u + ulen - t1);\n  safe_realloc (&buf, buflen + 1);\n  r = encode_block (buf + bufpos, t, t1 - t, icode, tocode, encoder);\n  assert (r == wlen);\n  bufpos += wlen;\n  memcpy (buf + bufpos, t1, u + ulen - t1);\n\n  FREE (&tocode1);\n  FREE (&u);\n\n  buf[buflen] = '\\0';\n  \n  *e = buf;\n  *elen = buflen + 1;\n  return ret;\n}\n\nvoid _rfc2047_encode_string (char **pd, int encode_specials, int col)\n{\n  char *e;\n  size_t elen;\n  char *charsets;\n\n  if (!Charset || !*pd)\n    return;\n\n  charsets = SendCharset;\n  if (!charsets || !*charsets)\n    charsets = \"utf-8\";\n\n  rfc2047_encode (*pd, strlen (*pd), col,\n\t\t  Charset, charsets, &e, &elen,\n\t\t  encode_specials ? RFC822Specials : NULL);\n\n  FREE (pd);\t\t/* __FREE_CHECKED__ */\n  *pd = e;\n}\n\nvoid rfc2047_encode_adrlist (ADDRESS *addr, const char *tag)\n{\n  ADDRESS *ptr = addr;\n  int col = tag ? strlen (tag) + 2 : 32;\n  \n  while (ptr)\n  {\n    if (ptr->personal)\n      _rfc2047_encode_string (&ptr->personal, 1, col);\n    else if (ptr->group && ptr->mailbox)\n      _rfc2047_encode_string (&ptr->mailbox, 1, col);\n#ifdef EXACT_ADDRESS\n    if (ptr->val)\n      _rfc2047_encode_string (&ptr->val, 1, col);\n#endif\n    ptr = ptr->next;\n  }\n}\n\nstatic int rfc2047_decode_word (char *d, const char *s, size_t len)\n{\n  const char *pp, *pp1;\n  char *pd, *d0;\n  const char *t, *t1;\n  int enc = 0, count = 0;\n  char *charset = NULL;\n  int rv = -1;\n\n  pd = d0 = safe_malloc (strlen (s));\n\n  for (pp = s; (pp1 = strchr (pp, '?')); pp = pp1 + 1)\n  {\n    count++;\n\n    /* hack for non-compliant MUAs that allow unquoted question marks in encoded-text */\n    if (count == 4)\n    {\n      while (pp1 && *(pp1 + 1) != '=')\n\tpp1 = strchr(pp1 + 1, '?');\n      if (!pp1)\n\t  goto error_out_0;\n    }\n\n    switch (count)\n    {\n      case 2:\n\t/* ignore language specification a la RFC 2231 */        \n\tt = pp1;\n        if ((t1 = memchr (pp, '*', t - pp)))\n\t  t = t1;\n\tcharset = mutt_substrdup (pp, t);\n\tbreak;\n      case 3:\n\tif (toupper ((unsigned char) *pp) == 'Q')\n\t  enc = ENCQUOTEDPRINTABLE;\n\telse if (toupper ((unsigned char) *pp) == 'B')\n\t  enc = ENCBASE64;\n\telse\n\t  goto error_out_0;\n\tbreak;\n      case 4:\n\tif (enc == ENCQUOTEDPRINTABLE)\n\t{\n\t  for (; pp < pp1; pp++)\n\t  {\n\t    if (*pp == '_')\n\t      *pd++ = ' ';\n\t    else if (*pp == '=' &&\n\t\t     (!(pp[1] & ~127) && hexval(pp[1]) != -1) &&\n\t\t     (!(pp[2] & ~127) && hexval(pp[2]) != -1))\n\t    {\n\t      *pd++ = (hexval(pp[1]) << 4) | hexval(pp[2]);\n\t      pp += 2;\n\t    }\n\t    else\n\t      *pd++ = *pp;\n\t  }\n\t  *pd = 0;\n\t}\n\telse if (enc == ENCBASE64)\n\t{\n\t  int c, b = 0, k = 0;\n\n\t  for (; pp < pp1; pp++)\n\t  {\n\t    if (*pp == '=')\n\t      break;\n\t    if ((*pp & ~127) || (c = base64val(*pp)) == -1)\n\t      continue;\n\t    if (k + 6 >= 8)\n\t    {\n\t      k -= 2;\n\t      *pd++ = b | (c >> k);\n\t      b = c << (8 - k);\n\t    }\n\t    else\n\t    {\n\t      b |= c << (k + 2);\n\t      k += 6;\n\t    }\n\t  }\n\t  *pd = 0;\n\t}\n\tbreak;\n    }\n  }\n  \n  if (charset)\n    mutt_convert_string (&d0, charset, Charset, M_ICONV_HOOK_FROM);\n  mutt_filter_unprintable (&d0);\n  strfcpy (d, d0, len);\n  rv = 0;\nerror_out_0:\n  FREE (&charset);\n  FREE (&d0);\n  return rv;\n}\n\n/*\n * Find the start and end of the first encoded word in the string.\n * We use the grammar in section 2 of RFC 2047, but the \"encoding\"\n * must be B or Q. Also, we don't require the encoded word to be\n * separated by linear-white-space (section 5(1)).\n */\nstatic const char *find_encoded_word (const char *s, const char **x)\n{\n  const char *p, *q;\n\n  q = s;\n  while ((p = strstr (q, \"=?\")))\n  {\n    for (q = p + 2;\n\t 0x20 < *q && *q < 0x7f && !strchr (\"()<>@,;:\\\"/[]?.=\", *q);\n\t q++)\n      ;\n    if (q[0] != '?' || q[1] == '\\0' || !strchr (\"BbQq\", q[1]) || q[2] != '?')\n      continue;\n    /* non-strict check since many MUAs will not encode spaces and question marks */\n    for (q = q + 3; 0x20 <= *q && *q < 0x7f && (*q != '?' || q[1] != '='); q++)\n      ;\n    if (q[0] != '?' || q[1] != '=')\n    {\n      --q;\n      continue;\n    }\n\n    *x = q + 2;\n    return p;\n  }\n\n  return 0;\n}\n\n/* return length of linear-white-space */\nstatic size_t lwslen (const char *s, size_t n)\n{\n  const char *p = s;\n  size_t len = n;\n\n  if (n <= 0)\n    return 0;\n\n  for (; p < s + n; p++)\n    if (!strchr (\" \\t\\r\\n\", *p))\n    {\n      len = (size_t)(p - s);\n      break;\n    }\n  if (strchr (\"\\r\\n\", *(p-1))) /* LWS doesn't end with CRLF */\n    len = (size_t)0;\n  return len;\n}\n\n/* return length of linear-white-space : reverse */\nstatic size_t lwsrlen (const char *s, size_t n)\n{\n  const char *p = s + n - 1;\n  size_t len = n;\n\n  if (n <= 0)\n    return 0;\n\n  if (strchr (\"\\r\\n\", *p)) /* LWS doesn't end with CRLF */\n    return (size_t)0;\n\n  for (; p >= s; p--)\n    if (!strchr (\" \\t\\r\\n\", *p))\n    {\n      len = (size_t)(s + n - 1 - p);\n      break;\n    }\n  return len;\n}\n\n/* try to decode anything that looks like a valid RFC2047 encoded\n * header field, ignoring RFC822 parsing rules\n */\nvoid rfc2047_decode (char **pd)\n{\n  const char *p, *q;\n  size_t m, n;\n  int found_encoded = 0;\n  char *d0, *d;\n  const char *s = *pd;\n  size_t dlen;\n\n  if (!s || !*s)\n    return;\n\n  dlen = 4 * strlen (s); /* should be enough */\n  d = d0 = safe_malloc (dlen + 1);\n\n  while (*s && dlen > 0)\n  {\n    if (!(p = find_encoded_word (s, &q)))\n    {\n      /* no encoded words */\n      if (option (OPTIGNORELWS))\n      {\n        n = mutt_strlen (s);\n        if (found_encoded && (m = lwslen (s, n)) != 0)\n        {\n          if (m != n)\n            *d = ' ', d++, dlen--;\n          s += m;\n        }\n      }\n      if (AssumedCharset && *AssumedCharset)\n      {\n\tchar *t;\n\tsize_t tlen;\n\n\tn = mutt_strlen (s);\n\tt = safe_malloc (n + 1);\n\tstrfcpy (t, s, n + 1);\n\tconvert_nonmime_string (&t);\n\ttlen = mutt_strlen (t);\n\tstrncpy (d, t, tlen);\n\td += tlen;\n\tFREE (&t);\n\tbreak;\n      }\n      strncpy (d, s, dlen);\n      d += dlen;\n      break;\n    }\n\n    if (p != s)\n    {\n      n = (size_t) (p - s);\n      /* ignore spaces between encoded word\n       * and linear-white-space between encoded word and *text */\n      if (option (OPTIGNORELWS))\n      {\n        if (found_encoded && (m = lwslen (s, n)) != 0)\n        {\n          if (m != n)\n            *d = ' ', d++, dlen--;\n          n -= m, s += m;\n        }\n\n        if ((m = n - lwsrlen (s, n)) != 0)\n        {\n          if (m > dlen)\n            m = dlen;\n          memcpy (d, s, m);\n          d += m;\n          dlen -= m;\n          if (m != n)\n            *d = ' ', d++, dlen--;\n        }\n      }\n      else if (!found_encoded || strspn (s, \" \\t\\r\\n\") != n)\n      {\n\tif (n > dlen)\n\t  n = dlen;\n\tmemcpy (d, s, n);\n\td += n;\n\tdlen -= n;\n      }\n    }\n\n    if (rfc2047_decode_word (d, p, dlen) == -1)\n    {\n      /* could not decode word, fall back to displaying the raw string */\n      strfcpy(d, p, dlen);\n    }\n    found_encoded = 1;\n    s = q;\n    n = mutt_strlen (d);\n    dlen -= n;\n    d += n;\n  }\n  *d = 0;\n\n  FREE (pd);\t\t/* __FREE_CHECKED__ */\n  *pd = d0;\n  mutt_str_adjust (pd);\n}\n\nvoid rfc2047_decode_adrlist (ADDRESS *a)\n{\n  while (a)\n  {\n    if (a->personal && ((strstr (a->personal, \"=?\") != NULL) || \n\t\t\t(AssumedCharset && *AssumedCharset)))\n      rfc2047_decode (&a->personal);\n    else if (a->group && a->mailbox && (strstr (a->mailbox, \"=?\") != NULL))\n      rfc2047_decode (&a->mailbox);\n#ifdef EXACT_ADDRESS\n    if (a->val && strstr (a->val, \"=?\") != NULL)\n      rfc2047_decode (&a->val);\n#endif\n    a = a->next;\n  }\n}\n"
  },
  {
    "path": "rfc2047.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\nchar *mutt_choose_charset (const char *fromcode, const char *charsets,\n\t\t      char *u, size_t ulen, char **d, size_t *dlen);\nint convert_nonmime_string (char **);\n\nvoid _rfc2047_encode_string (char **, int, int);\nvoid rfc2047_encode_adrlist (ADDRESS *, const char *);\n\n#define rfc2047_encode_string(a) _rfc2047_encode_string (a, 0, 32);\n\nvoid rfc2047_decode (char **);\nvoid rfc2047_decode_adrlist (ADDRESS *);\n"
  },
  {
    "path": "rfc2231.c",
    "content": "/*\n * Copyright (C) 1999-2001 Thomas Roessler <roessler@does-not-exist.org>\n *\n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n * \n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n * \n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */\n\n/*\n * Yet another MIME encoding for header data.  This time, it's\n * parameters, specified in RFC 2231, and modeled after the\n * encoding used in URLs.\n * \n * Additionally, continuations and encoding are mixed in an, errrm,\n * interesting manner.\n *\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mime.h\"\n#include \"charset.h\"\n#include \"rfc2047.h\"\n#include \"rfc2231.h\"\n\n#include <ctype.h>\n#include <string.h>\n#include <stdlib.h>\n\nstruct rfc2231_parameter\n{\n  char *attribute;\n  char *value;\n  int  index;\n  int  encoded;\n  struct rfc2231_parameter \n       *next;\n};\n\nstatic char *rfc2231_get_charset (char *, char *, size_t);\nstatic struct rfc2231_parameter *rfc2231_new_parameter (void);\nstatic void rfc2231_decode_one (char *, char *);\nstatic void rfc2231_free_parameter (struct rfc2231_parameter **);\nstatic void rfc2231_join_continuations (PARAMETER **, struct rfc2231_parameter *);\nstatic void rfc2231_list_insert (struct rfc2231_parameter **, struct rfc2231_parameter *);\n\nstatic void purge_empty_parameters (PARAMETER **headp)\n{\n  PARAMETER *p, *q, **last;\n  \n  for (last = headp, p = *headp; p; p = q)\n  {\n    q = p->next;\n    if (!p->attribute || !p->value)\n    {\n      *last = q;\n      p->next = NULL;\n      mutt_free_parameter (&p);\n    }\n    else\n      last = &p->next;\n  }\n}\n\n\nvoid rfc2231_decode_parameters (PARAMETER **headp)\n{\n  PARAMETER *head = NULL;\n  PARAMETER **last;\n  PARAMETER *p, *q;\n\n  struct rfc2231_parameter *conthead = NULL;\n  struct rfc2231_parameter *conttmp;\n\n  char *s, *t;\n  char charset[STRING];\n\n  int encoded;\n  int index;\n  short dirty = 0;\t/* set to 1 when we may have created\n\t\t\t * empty parameters.\n\t\t\t */\n  \n  if (!headp) return;\n\n  purge_empty_parameters (headp);\n  \n  for (last = &head, p = *headp; p; p = q)\n  {\n    q = p->next;\n\n    if (!(s = strchr (p->attribute, '*')))\n    {\n\n      /* \n       * Using RFC 2047 encoding in MIME parameters is explicitly\n       * forbidden by that document.  Nevertheless, it's being\n       * generated by some software, including certain Lotus Notes to \n       * Internet Gateways.  So we actually decode it.\n       */\n\n      if (option (OPTRFC2047PARAMS) && p->value && strstr (p->value, \"=?\"))\n\trfc2047_decode (&p->value);\n      else if (AssumedCharset && *AssumedCharset)\n        convert_nonmime_string (&p->value);\n\n      *last = p;\n      last = &p->next;\n      p->next = NULL;\n    }\n    else if (*(s + 1) == '\\0')\n    {\n      *s = '\\0';\n      \n      s = rfc2231_get_charset (p->value, charset, sizeof (charset));\n      rfc2231_decode_one (p->value, s);\n      mutt_convert_string (&p->value, charset, Charset, M_ICONV_HOOK_FROM);\n      mutt_filter_unprintable (&p->value);\n\n      *last = p;\n      last = &p->next;\n      p->next = NULL;\n      \n      dirty = 1;\n    }\n    else\n    {\n      *s = '\\0'; s++; /* let s point to the first character of index. */\n      for (t = s; *t && isdigit ((unsigned char) *t); t++)\n\t;\n      encoded = (*t == '*');\n      *t = '\\0';\n\n      index = atoi (s);\n\n      conttmp = rfc2231_new_parameter ();\n      conttmp->attribute = p->attribute;\n      conttmp->value = p->value;\n      conttmp->encoded = encoded;\n      conttmp->index = index;\n      \n      p->attribute = NULL;\n      p->value = NULL;\n      FREE (&p);\n\n      rfc2231_list_insert (&conthead, conttmp);\n    }\n  }\n\n  if (conthead)\n  {\n    rfc2231_join_continuations (last, conthead);\n    dirty = 1;\n  }\n  \n  *headp = head;\n  \n  if (dirty)\n    purge_empty_parameters (headp);\n}\n  \nstatic struct rfc2231_parameter *rfc2231_new_parameter (void)\n{\n  return safe_calloc (sizeof (struct rfc2231_parameter), 1);\n}\n\nstatic void rfc2231_free_parameter (struct rfc2231_parameter **p)\n{\n  if (*p)\n  {\n    FREE (&(*p)->attribute);\n    FREE (&(*p)->value);\n    FREE (p);\t\t/* __FREE_CHECKED__ */\n  }\n}\n\nstatic char *rfc2231_get_charset (char *value, char *charset, size_t chslen)\n{\n  char *t, *u;\n  \n  if (!(t = strchr (value, '\\'')))\n  {\n    charset[0] = '\\0';\n    return value;\n  }\n  \n  *t = '\\0';\n  strfcpy (charset, value, chslen);\n  \n  if ((u = strchr (t + 1, '\\'')))\n    return u + 1;\n  else\n    return t + 1;\n}\n\nstatic void rfc2231_decode_one (char *dest, char *src)\n{\n  char *d;\n\n  for (d = dest; *src; src++)\n  {\n    if (*src == '%' &&\n        isxdigit ((unsigned char) *(src + 1)) &&\n        isxdigit ((unsigned char) *(src + 2)))\n    {\n      *d++ = (hexval (*(src + 1)) << 4) | (hexval (*(src + 2)));\n      src += 2;\n    }\n    else\n      *d++ = *src;\n  }\n  \n  *d = '\\0';\n}\n\n/* insert parameter into an ordered list.\n * \n * Primary sorting key: attribute\n * Secondary sorting key: index\n */\n\nstatic void rfc2231_list_insert (struct rfc2231_parameter **list,\n\t\t\t\t struct rfc2231_parameter *par)\n{\n  struct rfc2231_parameter **last = list;\n  struct rfc2231_parameter *p = *list;\n  int c;\n\n  while (p)\n  {\n    c = strcmp (par->attribute, p->attribute);\n    if ((c < 0) || (c == 0 && par->index <= p->index))\n      break;\n\n    last = &p->next;\n    p = p->next;\n  }\n\n  par->next = p;\n  *last = par;\n}\n\n/* process continuation parameters */\n\nstatic void rfc2231_join_continuations (PARAMETER **head,\n\t\t\t\t\tstruct rfc2231_parameter *par)\n{\n  struct rfc2231_parameter *q;\n\n  char attribute[STRING];\n  char charset[STRING];\n  char *value = NULL;\n  char *valp;\n  int encoded;\n\n  size_t l, vl;\n  \n  while (par)\n  {\n    value = NULL; l = 0;\n    \n    strfcpy (attribute, par->attribute, sizeof (attribute));\n\n    if ((encoded = par->encoded))\n      valp = rfc2231_get_charset (par->value, charset, sizeof (charset));\n    else\n      valp = par->value;\n\n    do \n    {\n      if (encoded && par->encoded)\n\trfc2231_decode_one (par->value, valp);\n      \n      vl = strlen (par->value);\n      \n      safe_realloc (&value, l + vl + 1);\n      strcpy (value + l, par->value);\t/* __STRCPY_CHECKED__ */\n      l += vl;\n\n      q = par->next;\n      rfc2231_free_parameter (&par);\n      if ((par = q))\n\tvalp = par->value;\n    } while (par && !strcmp (par->attribute, attribute));\n    \n    if (value)\n    {\n      if (encoded)\n\tmutt_convert_string (&value, charset, Charset, M_ICONV_HOOK_FROM);\n      *head = mutt_new_parameter ();\n      (*head)->attribute = safe_strdup (attribute);\n      (*head)->value = value;\n      head = &(*head)->next;\n    }\n  }\n}\n\nint rfc2231_encode_string (char **pd)\n{\n  int ext = 0, encode = 0;\n  char *charset, *s, *t, *e, *d = 0;\n  size_t slen, dlen = 0;\n\n  /* \n   * A shortcut to detect pure 7bit data.\n   * \n   * This should prevent the worst when character set handling\n   * is flawed.\n   */\n\n  for (s = *pd; *s; s++)\n    if (*s & 0x80)\n      break;\n  \n  if (!*s)\n    return 0;\n  \n  if (!Charset || !SendCharset ||\n      !(charset = mutt_choose_charset (Charset, SendCharset,\n\t\t\t\t  *pd, strlen (*pd), &d, &dlen)))\n  {\n    charset = safe_strdup (Charset ? Charset : \"unknown-8bit\");\n    d = *pd;\n    dlen = strlen (d);\n  }\n\n  if (!mutt_is_us_ascii (charset))\n    encode = 1;\n\n  for (s = d, slen = dlen; slen; s++, slen--)\n    if (*s < 0x20 || *s >= 0x7f)\n      encode = 1, ++ext;\n    else if (strchr (MimeSpecials, *s) || strchr (\"*'%\", *s))\n      ++ext;\n\n  if (encode)\n  {\n    e = safe_malloc (dlen + 2*ext + strlen (charset) + 3);\n    sprintf (e, \"%s''\", charset);\t/* __SPRINTF_CHECKED__ */\n    t = e + strlen (e);\n    for (s = d, slen = dlen; slen; s++, slen--)\n      if (*s < 0x20 || *s >= 0x7f ||\n\t  strchr (MimeSpecials, *s) || strchr (\"*'%\", *s))\n      {\n\tsprintf (t, \"%%%02X\", (unsigned char)*s);\n\tt += 3;\n      }\n      else\n\t*t++ = *s;\n    *t = '\\0';\n\n    if (d != *pd)\n      FREE (&d);\n    FREE (pd);\t\t/* __FREE_CHECKED__ */\n    *pd = e;\n  }\n  else if (d != *pd)\n  {\n    FREE (pd);\t\t/* __FREE_CHECKED__ */\n    *pd = d;\n  }\n  \n  FREE (&charset);\n  \n  return encode;\n}\n\n"
  },
  {
    "path": "rfc2231.h",
    "content": "/*\n * Copyright (C) 1999-2000 Thomas Roessler <roessler@does-not-exist.org>\n *\n *     This program is free software; you can redistribute it\n *     and/or modify it under the terms of the GNU General Public\n *     License as published by the Free Software Foundation; either\n *     version 2 of the License, or (at your option) any later\n *     version.\n *\n *     This program is distributed in the hope that it will be\n *     useful, but WITHOUT ANY WARRANTY; without even the implied\n *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n *     PURPOSE.  See the GNU General Public License for more\n *     details.\n *\n *     You should have received a copy of the GNU General Public\n *     License along with this program; if not, write to the Free\n *     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n *     Boston, MA  02110-1301, USA.\n */\n\nvoid rfc2231_decode_parameters (PARAMETER **);\nint rfc2231_encode_string (char **);\n\n"
  },
  {
    "path": "rfc3676.c",
    "content": "/*\n * Copyright (C) 2005 Andreas Krennmair <ak@synflood.at>\n * Copyright (C) 2005 Peter J. Holzer <hjp@hjp.net>\n * Copyright (C) 2005-2009 Rocco Rutte <pdmef@gmx.net>\n * Copyright (C) 2010 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */ \n\n/* This file was originally part of mutt-ng */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <ctype.h>\n#include <sys/wait.h>\n#include <sys/stat.h>\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"ascii.h\"\n#include \"lib.h\"\n\n#define FLOWED_MAX 72\n\ntypedef struct flowed_state\n{\n  size_t width;\n  size_t spaces;\n  int delsp;\n} flowed_state_t;\n\nstatic int get_quote_level (const char *line)\n{\n  int quoted = 0;\n  char *p = (char *) line;\n\n  while (p && *p == '>')\n  {\n    quoted++;\n    p++;\n  }\n\n  return quoted;\n}\n\n/* Determines whether to add spacing between/after each quote level:\n *    >>>foo\n * becomes\n *    > > > foo\n */\nstatic int space_quotes (STATE *s)\n{\n  /* Allow quote spacing in the pager even for OPTTEXTFLOWED,\n   * but obviously not when replying.\n   */\n  if (option (OPTTEXTFLOWED) && (s->flags & M_REPLYING))\n    return 0;\n\n  return option (OPTREFLOWSPACEQUOTES);\n}\n\n/* Determines whether to add a trailing space to quotes:\n *    >>> foo\n * as opposed to\n *    >>>foo\n */\nstatic int add_quote_suffix (STATE *s, int ql)\n{\n  if (s->flags & M_REPLYING)\n    return 0;\n\n  if (space_quotes (s))\n    return 0;\n\n  if (!ql && !s->prefix)\n    return 0;\n\n  /* The prefix will add its own space */\n  if (!option (OPTTEXTFLOWED) && !ql && s->prefix)\n    return 0;\n\n  return 1;\n}\n\nstatic size_t print_indent (int ql, STATE *s, int add_suffix)\n{\n  int i;\n  size_t wid = 0;\n\n  if (s->prefix)\n  {\n    /* use given prefix only for format=fixed replies to format=flowed,\n     * for format=flowed replies to format=flowed, use '>' indentation\n     */\n    if (option (OPTTEXTFLOWED))\n      ql++;\n    else\n    {\n      state_puts (s->prefix, s);\n      wid = mutt_strwidth (s->prefix);\n    }\n  }\n  for (i = 0; i < ql; i++)\n  {\n    state_putc ('>', s);\n    if (space_quotes (s) )\n      state_putc (' ', s);\n  }\n  if (add_suffix)\n    state_putc (' ', s);\n\n  if (space_quotes (s))\n    ql *= 2;\n\n  return ql + add_suffix + wid;\n}\n\nstatic void flush_par (STATE *s, flowed_state_t *fst)\n{\n  if (fst->width > 0)\n  {\n    state_putc ('\\n', s);\n    fst->width = 0;\n  }\n  fst->spaces = 0;\n}\n\n/* Calculate the paragraph width based upon the current quote level. The start\n * of a quoted line will be \">>> \", so we need to subtract the space required\n * for the prefix from the terminal width. */\nstatic int quote_width (STATE *s, int ql)\n{\n  int width = mutt_term_width (ReflowWrap);\n  if (option(OPTTEXTFLOWED) && (s->flags & M_REPLYING))\n  {\n    /* When replying, force a wrap at FLOWED_MAX to comply with RFC3676\n     * guidelines */\n    if (width > FLOWED_MAX)\n      width = FLOWED_MAX;\n    ++ql; /* When replying, we will add an additional quote level */\n  }\n  /* adjust the paragraph width subtracting the number of prefix chars */\n  width -= space_quotes (s) ? ql*2 : ql;\n  /* When displaying (not replying), there may be a space between the prefix\n   * string and the paragraph */\n  if (add_quote_suffix (s, ql))\n    --width;\n  /* failsafe for really long quotes */\n  if (width <= 0)\n    width = FLOWED_MAX; /* arbitrary, since the line will wrap */\n  return width;\n}\n\nstatic void print_flowed_line (char *line, STATE *s, int ql,\n\t\t\t       flowed_state_t *fst, int term)\n{\n  size_t width, w, words = 0;\n  char *p;\n  char last;\n\n  if (!line || !*line)\n  {\n    /* flush current paragraph (if any) first */\n    flush_par (s, fst);\n    print_indent (ql, s, 0);\n    state_putc ('\\n', s);\n    return;\n  }\n\n  width = quote_width (s, ql);\n  last = line[mutt_strlen (line) - 1];\n\n  dprint (4, (debugfile, \"f=f: line [%s], width = %ld, spaces = %d\\n\",\n\t      NONULL(line), (long)width, fst->spaces));\n\n  for (p = (char *)line, words = 0; (p = strsep (&line, \" \")) != NULL ; )\n  {\n    dprint(4,(debugfile,\"f=f: word [%s], width: %d, remaining = [%s]\\n\",\n\t      p, fst->width, line));\n\n    /* remember number of spaces */\n    if (!*p)\n    {\n      dprint(4,(debugfile,\"f=f: additional space\\n\"));\n      fst->spaces++;\n      continue;\n    }\n    /* there's exactly one space prior to every but the first word */\n    if (words)\n      fst->spaces++;\n\n    w = mutt_strwidth (p);\n    /* see if we need to break the line but make sure the first\n       word is put on the line regardless;\n       if for DelSp=yes only one trailing space is used, we probably\n       have a long word that we should break within (we leave that\n       up to the pager or user) */\n    if (!(!fst->spaces && fst->delsp && last != ' ') &&\n\tw < width && w + fst->width + fst->spaces > width)\n    {\n      dprint(4,(debugfile,\"f=f: break line at %d, %d spaces left\\n\",\n\t\tfst->width, fst->spaces));\n      /* only honor trailing spaces for format=flowed replies */\n      if (option(OPTTEXTFLOWED))\n\tfor ( ; fst->spaces; fst->spaces--)\n\t  state_putc (' ', s);\n      state_putc ('\\n', s);\n      fst->width = 0;\n      fst->spaces = 0;\n      words = 0;\n    }\n\n    if (!words && !fst->width)\n      fst->width = print_indent (ql, s, add_quote_suffix (s, ql));\n    fst->width += w + fst->spaces;\n    for ( ; fst->spaces; fst->spaces--)\n      state_putc (' ', s);\n    state_puts (p, s);\n    words++;\n  }\n\n  if (term)\n    flush_par (s, fst);\n}\n\nstatic void print_fixed_line (const char *line, STATE *s, int ql,\n\t\t\t      flowed_state_t *fst)\n{\n  print_indent (ql, s, add_quote_suffix (s, ql));\n  if (line && *line)\n    state_puts (line, s);\n  state_putc ('\\n', s);\n\n  fst->width = 0;\n  fst->spaces = 0;\n}\n\nint rfc3676_handler (BODY * a, STATE * s)\n{\n  char *buf = NULL, *t = NULL;\n  unsigned int quotelevel = 0, newql = 0, sigsep = 0;\n  int buf_off = 0, delsp = 0, fixed = 0;\n  size_t buf_len = 0, sz = 0;\n  flowed_state_t fst;\n\n  memset (&fst, 0, sizeof (fst));\n\n  /* respect DelSp of RfC3676 only with f=f parts */\n  if ((t = (char *) mutt_get_parameter (\"delsp\", a->parameter)))\n  {\n    delsp = mutt_strlen (t) == 3 && ascii_strncasecmp (t, \"yes\", 3) == 0;\n    t = NULL;\n    fst.delsp = 1;\n  }\n\n  dprint (4, (debugfile, \"f=f: DelSp: %s\\n\", delsp ? \"yes\" : \"no\"));\n\n  while ((buf = mutt_read_line (buf, &sz, s->fpin, NULL, 0)))\n  {\n    buf_len = mutt_strlen (buf);\n    newql = get_quote_level (buf);\n\n    /* end flowed paragraph (if we're within one) if quoting level\n     * changes (should not but can happen, see RFC 3676, sec. 4.5.)\n     */\n    if (newql != quotelevel)\n      flush_par (s, &fst);\n\n    quotelevel = newql;\n    buf_off = newql;\n\n    /* respect sender's space-stuffing by removing one leading space */\n    if (buf[buf_off] == ' ')\n      buf_off++;\n\n    /* test for signature separator */\n    sigsep = ascii_strcmp (buf + buf_off, \"-- \") == 0;\n\n    /* a fixed line either has no trailing space or is the\n     * signature separator */\n    fixed = buf_len == buf_off || buf[buf_len - 1] != ' ' || sigsep;\n\n    /* print fixed-and-standalone, fixed-and-empty and sigsep lines as\n     * fixed lines */\n    if ((fixed && (!fst.width || !buf_len)) || sigsep)\n    {\n      /* if we're within a flowed paragraph, terminate it */\n      flush_par (s, &fst);\n      print_fixed_line (buf + buf_off, s, quotelevel, &fst);\n      continue;\n    }\n\n    /* for DelSp=yes, we need to strip one SP prior to CRLF on flowed lines */\n    if (delsp && !fixed)\n      buf[--buf_len] = '\\0';\n\n    print_flowed_line (buf + buf_off, s, quotelevel, &fst, fixed);\n  }\n\n  flush_par (s, &fst);\n\n  FREE (&buf);\n  return (0);\n}\n\n/*\n * This routine does RfC3676 space stuffing since it's a MUST.\n * Space stuffing means that we have to add leading spaces to\n * certain lines:\n *   - lines starting with a space\n *   - lines starting with 'From '\n * This routine is only called once right after editing the\n * initial message so it's up to the user to take care of stuffing\n * when editing the message several times before actually sending it\n *\n * This is more or less a hack as it replaces the message's content with\n * a freshly created copy in a tempfile and modifies the file's mtime\n * so we don't trigger code paths watching for mtime changes\n */\nvoid rfc3676_space_stuff (HEADER* hdr)\n{\n#if DEBUG\n  int lc = 0;\n  size_t len = 0;\n  unsigned char c = '\\0';\n#endif\n  FILE *in = NULL, *out = NULL;\n  char buf[LONG_STRING];\n  char tmpfile[_POSIX_PATH_MAX];\n\n  if (!hdr || !hdr->content || !hdr->content->filename)\n    return;\n\n  dprint (2, (debugfile, \"f=f: postprocess %s\\n\", hdr->content->filename));\n\n  if ((in = safe_fopen (hdr->content->filename, \"r\")) == NULL)\n    return;\n\n  mutt_mktemp (tmpfile, sizeof (tmpfile));\n  if ((out = safe_fopen (tmpfile, \"w+\")) == NULL)\n  {\n    safe_fclose (&in);\n    return;\n  }\n\n  while (fgets (buf, sizeof (buf), in))\n  {\n    if (ascii_strncmp (\"From \", buf, 5) == 0 || buf[0] == ' ') {\n      fputc (' ', out);\n#if DEBUG\n      lc++;\n      len = mutt_strlen (buf);\n      if (len > 0)\n      {\n        c = buf[len-1];\n        buf[len-1] = '\\0';\n      }\n      dprint (4, (debugfile, \"f=f: line %d needs space-stuffing: '%s'\\n\",\n                  lc, buf));\n      if (len > 0)\n        buf[len-1] = c;\n#endif\n    }\n    fputs (buf, out);\n  }\n  safe_fclose (&in);\n  safe_fclose (&out);\n  mutt_set_mtime (hdr->content->filename, tmpfile);\n  unlink (hdr->content->filename);\n  mutt_str_replace (&hdr->content->filename, tmpfile);\n}\n"
  },
  {
    "path": "rfc3676.h",
    "content": "/*\n * Copyright (C) 2005 Andreas Krennmair <ak@synflood.at>\n * Copyright (C) 2005 Peter J. Holzer <hjp@hjp.net>\n * Copyright (C) 2005,2007 Rocco Rutte <pdmef@gmx.net>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n *\n */ \n\n/* This file was originally part of mutt-ng */\n\n#ifndef _MUTT_RFC3676_H\n#define _MUTT_RFC3676_H\n\n#include \"mutt.h\"\n\n/* body handler implementing RfC 3676 for format=flowed */\nint rfc3676_handler (BODY *a, STATE *s);\n\n/* this does the space-stuffing for RfC3676 style messages */\nvoid rfc3676_space_stuff (HEADER *hdr);\n\n#endif /* !_MUTT_RFC3676_H */\n"
  },
  {
    "path": "rfc822.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2011-2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <string.h>\n#include <stdlib.h>\n\n#ifndef TESTING\n#include \"mutt.h\"\n#else\n#define safe_strdup strdup\n#define safe_malloc malloc\n#define FREE(x) safe_free(x)\n#define strfcpy(a,b,c) {if (c) {strncpy(a,b,c);a[c-1]=0;}}\n#define LONG_STRING 1024\n#include \"rfc822.h\"\n#endif\n\n#include \"mutt_idna.h\"\n\n#define terminate_string(a, b, c) do { if ((b) < (c)) a[(b)] = 0; else \\\n\ta[(c)] = 0; } while (0)\n\n#define terminate_buffer(a, b) terminate_string(a, b, sizeof (a) - 1)\n\nconst char RFC822Specials[] = \"@.,:;<>[]\\\\\\\"()\";\n#define is_special(x) strchr(RFC822Specials,x)\n\nint RFC822Error = 0;\n\n/* these must defined in the same order as the numerated errors given in rfc822.h */\nconst char * const RFC822Errors[] = {\n  \"out of memory\",\n  \"mismatched parenthesis\",\n  \"mismatched quotes\",\n  \"bad route in <>\",\n  \"bad address in <>\",\n  \"bad address spec\"\n};\n\nvoid rfc822_dequote_comment (char *s)\n{\n  char *w = s;\n\n  for (; *s; s++)\n  {\n    if (*s == '\\\\')\n    {\n      if (!*++s)\n\tbreak; /* error? */\n      *w++ = *s;\n    }\n    else if (*s != '\\\"')\n    {\n      if (w != s)\n\t*w = *s;\n      w++;\n    }\n  }\n  *w = 0;\n}\n\nstatic void free_address (ADDRESS *a)\n{\n  FREE(&a->personal);\n  FREE(&a->mailbox);\n#ifdef EXACT_ADDRESS\n  FREE(&a->val);\n#endif\n  FREE(&a);\n}\n\nint rfc822_remove_from_adrlist (ADDRESS **a, const char *mailbox)\n{\n  ADDRESS *p, *last = NULL, *t;\n  int rv = -1;\n\n  p = *a;\n  last = NULL;\n  while (p)\n  {\n    if (ascii_strcasecmp (mailbox, p->mailbox) == 0)\n    {\n      if (last)\n\tlast->next = p->next;\n      else\n\t(*a) = p->next;\n      t = p;\n      p = p->next;\n      free_address (t);\n      rv = 0;\n    }\n    else\n    {\n      last = p;\n      p = p->next;\n    }\n  }\n\n  return (rv);\n}\n\nvoid rfc822_free_address (ADDRESS **p)\n{\n  ADDRESS *t;\n\n  while (*p)\n  {\n    t = *p;\n    *p = (*p)->next;\n#ifdef EXACT_ADDRESS\n    FREE (&t->val);\n#endif\n    FREE (&t->personal);\n    FREE (&t->mailbox);\n    FREE (&t);\n  }\n}\n\nstatic const char *\nparse_comment (const char *s,\n\t       char *comment, size_t *commentlen, size_t commentmax)\n{\n  int level = 1;\n  \n  while (*s && level)\n  {\n    if (*s == '(')\n      level++;\n    else if (*s == ')')\n    {\n      if (--level == 0)\n      {\n\ts++;\n\tbreak;\n      }\n    }\n    else if (*s == '\\\\')\n    {\n      if (!*++s)\n\tbreak;\n    }\n    if (*commentlen < commentmax)\n      comment[(*commentlen)++] = *s;\n    s++;\n  }\n  if (level)\n  {\n    RFC822Error = ERR_MISMATCH_PAREN;\n    return NULL;\n  }\n  return s;\n}\n\nstatic const char *\nparse_quote (const char *s, char *token, size_t *tokenlen, size_t tokenmax)\n{\n  while (*s)\n  {\n    if (*tokenlen < tokenmax)\n      token[*tokenlen] = *s;\n    if (*s == '\\\\')\n    {\n      if (!*++s)\n\tbreak;\n\n      if (*tokenlen < tokenmax)\n\ttoken[*tokenlen] = *s;\n    }\n    else if (*s == '\"')\n      return (s + 1);\n    (*tokenlen)++;\n    s++;\n  }\n  RFC822Error = ERR_MISMATCH_QUOTE;\n  return NULL;\n}\n\nstatic const char *\nnext_token (const char *s, char *token, size_t *tokenlen, size_t tokenmax)\n{\n  if (*s == '(')\n    return (parse_comment (s + 1, token, tokenlen, tokenmax));\n  if (*s == '\"')\n    return (parse_quote (s + 1, token, tokenlen, tokenmax));\n  if (*s && is_special (*s))\n  {\n    if (*tokenlen < tokenmax)\n      token[(*tokenlen)++] = *s;\n    return (s + 1);\n  }\n  while (*s)\n  {\n    if (is_email_wsp(*s) || is_special (*s))\n      break;\n    if (*tokenlen < tokenmax)\n      token[(*tokenlen)++] = *s;\n    s++;\n  }\n  return s;\n}\n\nstatic const char *\nparse_mailboxdomain (const char *s, const char *nonspecial,\n\t\t     char *mailbox, size_t *mailboxlen, size_t mailboxmax,\n\t\t     char *comment, size_t *commentlen, size_t commentmax)\n{\n  const char *ps;\n\n  while (*s)\n  {\n    s = skip_email_wsp(s);\n    if (! *s)\n      return s;\n\n    if (strchr (nonspecial, *s) == NULL && is_special (*s))\n      return s;\n\n    if (*s == '(')\n    {\n      if (*commentlen && *commentlen < commentmax)\n\tcomment[(*commentlen)++] = ' ';\n      ps = next_token (s, comment, commentlen, commentmax);\n    }\n    else\n      ps = next_token (s, mailbox, mailboxlen, mailboxmax);\n    if (!ps)\n      return NULL;\n    s = ps;\n  }\n\n  return s;\n}\n\nstatic const char *\nparse_address (const char *s,\n               char *token, size_t *tokenlen, size_t tokenmax,\n\t       char *comment, size_t *commentlen, size_t commentmax,\n\t       ADDRESS *addr)\n{\n  s = parse_mailboxdomain (s, \".\\\"(\\\\\",\n\t\t\t   token, tokenlen, tokenmax,\n\t\t\t   comment, commentlen, commentmax);\n  if (!s)\n    return NULL;\n\n  if (*s == '@')\n  {\n    if (*tokenlen < tokenmax)\n      token[(*tokenlen)++] = '@';\n    s = parse_mailboxdomain (s + 1, \".([]\\\\\",\n\t\t\t     token, tokenlen, tokenmax,\n\t\t\t     comment, commentlen, commentmax);\n    if (!s)\n      return NULL;\n  }\n\n  terminate_string (token, *tokenlen, tokenmax);\n  addr->mailbox = safe_strdup (token);\n\n  if (*commentlen && !addr->personal)\n  {\n    terminate_string (comment, *commentlen, commentmax);\n    addr->personal = safe_strdup (comment);\n  }\n\n  return s;\n}\n\nstatic const char *\nparse_route_addr (const char *s,\n\t\t  char *comment, size_t *commentlen, size_t commentmax,\n\t\t  ADDRESS *addr)\n{\n  char token[LONG_STRING];\n  size_t tokenlen = 0;\n\n  s = skip_email_wsp(s);\n\n  /* find the end of the route */\n  if (*s == '@')\n  {\n    while (s && *s == '@')\n    {\n      if (tokenlen < sizeof (token) - 1)\n\ttoken[tokenlen++] = '@';\n      s = parse_mailboxdomain (s + 1, \",.\\\\[](\", token,\n\t\t\t       &tokenlen, sizeof (token) - 1,\n\t\t\t       comment, commentlen, commentmax);\n    }\n    if (!s || *s != ':')\n    {\n      RFC822Error = ERR_BAD_ROUTE;\n      return NULL; /* invalid route */\n    }\n\n    if (tokenlen < sizeof (token) - 1)\n      token[tokenlen++] = ':';\n    s++;\n  }\n\n  if ((s = parse_address (s, token, &tokenlen, sizeof (token) - 1, comment, commentlen, commentmax, addr)) == NULL)\n    return NULL;\n\n  if (*s != '>')\n  {\n    RFC822Error = ERR_BAD_ROUTE_ADDR;\n    return NULL;\n  }\n\n  if (!addr->mailbox)\n    addr->mailbox = safe_strdup (\"@\");\n\n  s++;\n  return s;\n}\n\nstatic const char *\nparse_addr_spec (const char *s,\n\t\t char *comment, size_t *commentlen, size_t commentmax,\n\t\t ADDRESS *addr)\n{\n  char token[LONG_STRING];\n  size_t tokenlen = 0;\n\n  s = parse_address (s, token, &tokenlen, sizeof (token) - 1, comment, commentlen, commentmax, addr);\n  if (s && *s && *s != ',' && *s != ';')\n  {\n    RFC822Error = ERR_BAD_ADDR_SPEC;\n    return NULL;\n  }\n  return s;\n}\n\nstatic void\nadd_addrspec (ADDRESS **top, ADDRESS **last, const char *phrase,\n\t      char *comment, size_t *commentlen, size_t commentmax)\n{\n  ADDRESS *cur = rfc822_new_address ();\n  \n  if (parse_addr_spec (phrase, comment, commentlen, commentmax, cur) == NULL)\n  {\n    rfc822_free_address (&cur);\n    return;\n  }\n\n  if (*last)\n    (*last)->next = cur;\n  else\n    *top = cur;\n  *last = cur;\n}\n\nADDRESS *rfc822_parse_adrlist (ADDRESS *top, const char *s)\n{\n  int ws_pending, nl;\n#ifdef EXACT_ADDRESS\n  const char *begin;\n#endif\n  const char *ps;\n  char comment[LONG_STRING], phrase[LONG_STRING];\n  size_t phraselen = 0, commentlen = 0;\n  ADDRESS *cur, *last = NULL;\n  \n  RFC822Error = 0;\n\n  last = top;\n  while (last && last->next)\n    last = last->next;\n\n  ws_pending = is_email_wsp (*s);\n  if ((nl = mutt_strlen (s)))\n    nl = s[nl - 1] == '\\n';\n  \n  s = skip_email_wsp(s);\n#ifdef EXACT_ADDRESS\n  begin = s;\n#endif\n  while (*s)\n  {\n    if (*s == ',')\n    {\n      if (phraselen)\n      {\n\tterminate_buffer (phrase, phraselen);\n\tadd_addrspec (&top, &last, phrase, comment, &commentlen, sizeof (comment) - 1);\n      }\n      else if (commentlen && last && !last->personal)\n      {\n\tterminate_buffer (comment, commentlen);\n\tlast->personal = safe_strdup (comment);\n      }\n\n#ifdef EXACT_ADDRESS\n      if (last && !last->val)\n\tlast->val = mutt_substrdup (begin, s);\n#endif\n      commentlen = 0;\n      phraselen = 0;\n      s++;\n#ifdef EXACT_ADDRESS\n      begin = skip_email_wsp(s);\n#endif\n    }\n    else if (*s == '(')\n    {\n      if (commentlen && commentlen < sizeof (comment) - 1)\n\tcomment[commentlen++] = ' ';\n      if ((ps = next_token (s, comment, &commentlen, sizeof (comment) - 1)) == NULL)\n      {\n\trfc822_free_address (&top);\n\treturn NULL;\n      }\n      s = ps;\n    }\n    else if (*s == '\"')\n    {\n      if (phraselen && phraselen < sizeof (phrase) - 1)\n        phrase[phraselen++] = ' ';\n      if ((ps = parse_quote (s + 1, phrase, &phraselen, sizeof (phrase) - 1)) == NULL)\n      {\n        rfc822_free_address (&top);\n        return NULL;\n      }\n      s = ps;\n    }\n    else if (*s == ':')\n    {\n      cur = rfc822_new_address ();\n      terminate_buffer (phrase, phraselen);\n      cur->mailbox = safe_strdup (phrase);\n      cur->group = 1;\n\n      if (last)\n\tlast->next = cur;\n      else\n\ttop = cur;\n      last = cur;\n\n#ifdef EXACT_ADDRESS\n      last->val = mutt_substrdup (begin, s);\n#endif\n\n      phraselen = 0;\n      commentlen = 0;\n      s++;\n#ifdef EXACT_ADDRESS\n      begin = skip_email_wsp(s);\n#endif\n    }\n    else if (*s == ';')\n    {\n      if (phraselen)\n      {\n\tterminate_buffer (phrase, phraselen);\n\tadd_addrspec (&top, &last, phrase, comment, &commentlen, sizeof (comment) - 1);\n      }\n      else if (commentlen && last && !last->personal)\n      {\n\tterminate_buffer (comment, commentlen);\n\tlast->personal = safe_strdup (comment);\n      }\n#ifdef EXACT_ADDRESS\n      if (last && !last->val)\n\tlast->val = mutt_substrdup (begin, s);\n#endif\n\n      /* add group terminator */\n      cur = rfc822_new_address ();\n      if (last)\n      {\n\tlast->next = cur;\n\tlast = cur;\n      }\n\n      phraselen = 0;\n      commentlen = 0;\n      s++;\n#ifdef EXACT_ADDRESS\n      begin = skip_email_wsp(s);\n#endif\n    }\n    else if (*s == '<')\n    {\n      terminate_buffer (phrase, phraselen);\n      cur = rfc822_new_address ();\n      if (phraselen)\n\tcur->personal = safe_strdup (phrase);\n      if ((ps = parse_route_addr (s + 1, comment, &commentlen, sizeof (comment) - 1, cur)) == NULL)\n      {\n\trfc822_free_address (&top);\n\trfc822_free_address (&cur);\n\treturn NULL;\n      }\n\n      if (last)\n\tlast->next = cur;\n      else\n\ttop = cur;\n      last = cur;\n\n      phraselen = 0;\n      commentlen = 0;\n      s = ps;\n    }\n    else\n    {\n      if (phraselen && phraselen < sizeof (phrase) - 1 && ws_pending)\n\tphrase[phraselen++] = ' ';\n      if ((ps = next_token (s, phrase, &phraselen, sizeof (phrase) - 1)) == NULL)\n      {\n\trfc822_free_address (&top);\n\treturn NULL;\n      }\n      s = ps;\n    }\n    ws_pending = is_email_wsp(*s);\n    s = skip_email_wsp(s);\n  }\n  \n  if (phraselen)\n  {\n    terminate_buffer (phrase, phraselen);\n    terminate_buffer (comment, commentlen);\n    add_addrspec (&top, &last, phrase, comment, &commentlen, sizeof (comment) - 1);\n  }\n  else if (commentlen && last && !last->personal)\n  {\n    terminate_buffer (comment, commentlen);\n    last->personal = safe_strdup (comment);\n  }\n#ifdef EXACT_ADDRESS\n  if (last)\n    last->val = mutt_substrdup (begin, s - nl < begin ? begin : s - nl);\n#endif\n\n  return top;\n}\n\nvoid rfc822_qualify (ADDRESS *addr, const char *host)\n{\n  char *p;\n\n  for (; addr; addr = addr->next)\n    if (!addr->group && addr->mailbox && strchr (addr->mailbox, '@') == NULL)\n    {\n      p = safe_malloc (mutt_strlen (addr->mailbox) + mutt_strlen (host) + 2);\n      sprintf (p, \"%s@%s\", addr->mailbox, host);\t/* __SPRINTF_CHECKED__ */\n      FREE (&addr->mailbox);\n      addr->mailbox = p;\n    }\n}\n\nvoid\nrfc822_cat (char *buf, size_t buflen, const char *value, const char *specials)\n{\n  if (strpbrk (value, specials))\n  {\n    char tmp[256], *pc = tmp;\n    size_t tmplen = sizeof (tmp) - 3;\n\n    *pc++ = '\"';\n    for (; *value && tmplen > 1; value++)\n    {\n      if (*value == '\\\\' || *value == '\"')\n      {\n\t*pc++ = '\\\\';\n\ttmplen--;\n      }\n      *pc++ = *value;\n      tmplen--;\n    }\n    *pc++ = '\"';\n    *pc = 0;\n    strfcpy (buf, tmp, buflen);\n  }\n  else\n    strfcpy (buf, value, buflen);\n}\n\nvoid rfc822_write_address_single (char *buf, size_t buflen, ADDRESS *addr,\n\t\t\t\t  int display)\n{\n  size_t len;\n  char *pbuf = buf;\n  char *pc;\n  \n  if (!addr)\n    return;\n\n  buflen--; /* save room for the terminal nul */\n\n#ifdef EXACT_ADDRESS\n  if (addr->val)\n  {\n    if (!buflen)\n      goto done;\n    strfcpy (pbuf, addr->val, buflen);\n    len = mutt_strlen (pbuf);\n    pbuf += len;\n    buflen -= len;\n    if (addr->group)\n    {\n      if (!buflen)\n\tgoto done;\n      *pbuf++ = ':';\n      buflen--;\n      *pbuf = 0;\n    }\n    return;\n  }\n#endif\n\n  if (addr->personal)\n  {\n    if (strpbrk (addr->personal, RFC822Specials))\n    {\n      if (!buflen)\n\tgoto done;\n      *pbuf++ = '\"';\n      buflen--;\n      for (pc = addr->personal; *pc && buflen > 0; pc++)\n      {\n\tif (*pc == '\"' || *pc == '\\\\')\n\t{\n\t  *pbuf++ = '\\\\';\n\t  buflen--;\n\t}\n\tif (!buflen)\n\t  goto done;\n\t*pbuf++ = *pc;\n\tbuflen--;\n      }\n      if (!buflen)\n\tgoto done;\n      *pbuf++ = '\"';\n      buflen--;\n    }\n    else\n    {\n      if (!buflen)\n\tgoto done;\n      strfcpy (pbuf, addr->personal, buflen);\n      len = mutt_strlen (pbuf);\n      pbuf += len;\n      buflen -= len;\n    }\n\n    if (!buflen)\n      goto done;\n    *pbuf++ = ' ';\n    buflen--;\n  }\n\n  if (addr->personal || (addr->mailbox && *addr->mailbox == '@'))\n  {\n    if (!buflen)\n      goto done;\n    *pbuf++ = '<';\n    buflen--;\n  }\n\n  if (addr->mailbox)\n  {\n    if (!buflen)\n      goto done;\n    if (ascii_strcmp (addr->mailbox, \"@\") && !display)\n    {\n      strfcpy (pbuf, addr->mailbox, buflen);\n      len = mutt_strlen (pbuf);\n    }\n    else if (ascii_strcmp (addr->mailbox, \"@\") && display)\n    {\n      strfcpy (pbuf, mutt_addr_for_display (addr), buflen);\n      len = mutt_strlen (pbuf);\n    }\n    else\n    {\n      *pbuf = '\\0';\n      len = 0;\n    }\n    pbuf += len;\n    buflen -= len;\n\n    if (addr->personal || (addr->mailbox && *addr->mailbox == '@'))\n    {\n      if (!buflen)\n\tgoto done;\n      *pbuf++ = '>';\n      buflen--;\n    }\n\n    if (addr->group)\n    {\n      if (!buflen)\n\tgoto done;\n      *pbuf++ = ':';\n      buflen--;\n      if (!buflen)\n\tgoto done;\n      *pbuf++ = ' ';\n      buflen--;\n    }\n  }\n  else\n  {\n    if (!buflen)\n      goto done;\n    *pbuf++ = ';';\n    buflen--;\n  }\ndone:\n  /* no need to check for length here since we already save space at the\n     beginning of this routine */\n  *pbuf = 0;\n}\n\n/* note: it is assumed that `buf' is nul terminated! */\nint rfc822_write_address (char *buf, size_t buflen, ADDRESS *addr, int display)\n{\n  char *pbuf = buf;\n  size_t len = mutt_strlen (buf);\n  \n  buflen--; /* save room for the terminal nul */\n\n  if (len > 0)\n  {\n    if (len > buflen)\n      return pbuf - buf; /* safety check for bogus arguments */\n\n    pbuf += len;\n    buflen -= len;\n    if (!buflen)\n      goto done;\n    *pbuf++ = ',';\n    buflen--;\n    if (!buflen)\n      goto done;\n    *pbuf++ = ' ';\n    buflen--;\n  }\n\n  for (; addr && buflen > 0; addr = addr->next)\n  {\n    /* use buflen+1 here because we already saved space for the trailing\n       nul char, and the subroutine can make use of it */\n    rfc822_write_address_single (pbuf, buflen + 1, addr, display);\n\n    /* this should be safe since we always have at least 1 char passed into\n       the above call, which means `pbuf' should always be nul terminated */\n    len = mutt_strlen (pbuf);\n    pbuf += len;\n    buflen -= len;\n\n    /* if there is another address, and its not a group mailbox name or\n       group terminator, add a comma to separate the addresses */\n    if (addr->next && addr->next->mailbox && !addr->group)\n    {\n      if (!buflen)\n\tgoto done;\n      *pbuf++ = ',';\n      buflen--;\n      if (!buflen)\n\tgoto done;\n      *pbuf++ = ' ';\n      buflen--;\n    }\n  }\ndone:\n  *pbuf = 0;\n  return pbuf - buf;\n}\n\n/* this should be rfc822_cpy_adr */\nADDRESS *rfc822_cpy_adr_real (ADDRESS *addr)\n{\n  ADDRESS *p = rfc822_new_address ();\n\n#ifdef EXACT_ADDRESS\n  p->val = safe_strdup (addr->val);\n#endif\n  p->personal = safe_strdup (addr->personal);\n  p->mailbox = safe_strdup (addr->mailbox);\n  p->group = addr->group;\n  p->is_intl = addr->is_intl;\n  p->intl_checked = addr->intl_checked;\n  return p;\n}\n\n/* this should be rfc822_cpy_adrlist */\nADDRESS *rfc822_cpy_adr (ADDRESS *addr, int prune)\n{\n  ADDRESS *top = NULL, *last = NULL;\n  \n  for (; addr; addr = addr->next)\n  {\n    if (prune && addr->group && (!addr->next || !addr->next->mailbox))\n    {\n      /* ignore this element of the list */\n    }\n    else if (last)\n    {\n      last->next = rfc822_cpy_adr_real (addr);\n      last = last->next;\n    }\n    else\n      top = last = rfc822_cpy_adr_real (addr);\n  }\n  return top;\n}\n\n/* append list 'b' to list 'a' and return the last element in the new list */\nADDRESS *rfc822_append (ADDRESS **a, ADDRESS *b, int prune)\n{\n  ADDRESS *tmp = *a;\n\n  while (tmp && tmp->next)\n    tmp = tmp->next;\n  if (!b)\n    return tmp;\n  if (tmp)\n    tmp->next = rfc822_cpy_adr (b, prune);\n  else\n    tmp = *a = rfc822_cpy_adr (b, prune);\n  while (tmp && tmp->next)\n    tmp = tmp->next;\n  return tmp;\n}\n\n/* incomplete. Only used to thwart the APOP MD5 attack (#2846). */\nint rfc822_valid_msgid (const char *msgid)\n{\n  /* msg-id         = \"<\" addr-spec \">\"\n   * addr-spec      = local-part \"@\" domain\n   * local-part     = word *(\".\" word)\n   * word           = atom / quoted-string\n   * atom           = 1*<any CHAR except specials, SPACE and CTLs>\n   * CHAR           = ( 0.-127. )\n   * specials       = \"(\" / \")\" / \"<\" / \">\" / \"@\"\n                    / \",\" / \";\" / \":\" / \"\\\" / <\">\n\t\t    / \".\" / \"[\" / \"]\"\n   * SPACE          = ( 32. )\n   * CTLS           = ( 0.-31., 127.)\n   * quoted-string  = <\"> *(qtext/quoted-pair) <\">\n   * qtext          = <any CHAR except <\">, \"\\\" and CR>\n   * CR             = ( 13. )\n   * quoted-pair    = \"\\\" CHAR\n   * domain         = sub-domain *(\".\" sub-domain)\n   * sub-domain     = domain-ref / domain-literal\n   * domain-ref     = atom\n   * domain-literal = \"[\" *(dtext / quoted-pair) \"]\"\n   */\n\n  unsigned int l, i;\n\n  if (!msgid || !*msgid)\n    return -1;\n\n  l = mutt_strlen (msgid);\n  if (l < 5) /* <atom@atom> */\n    return -1;\n  if (msgid[0] != '<' || msgid[l-1] != '>')\n    return -1;\n  if (!(strrchr (msgid, '@')))\n    return -1;\n\n  /* TODO: complete parser */\n  for (i = 0; i < l; i++)\n    if ((unsigned char)msgid[i] > 127)\n      return -1;\n\n  return 0;\n}\n\n#ifdef TESTING\nint safe_free (void **p)\t/* __SAFE_FREE_CHECKED__ */\n{\n  free(*p);\t\t/* __MEM_CHECKED__ */\n  *p = 0;\n}\n\nint main (int argc, char **argv)\n{\n  ADDRESS *list;\n  char buf[256];\n# if 0\n  char *str = \"michael, Michael Elkins <me@mutt.org>, testing a really complex address: this example <@contains.a.source.route,@with.multiple.hosts:address@example.com>;, lothar@of.the.hillpeople (lothar)\";\n# else\n  char *str = \"a b c \";\n# endif\n  \n  list = rfc822_parse_adrlist (NULL, str);\n  buf[0] = 0;\n  rfc822_write_address (buf, sizeof (buf), list);\n  rfc822_free_address (&list);\n  puts (buf);\n  exit (0);\n}\n#endif\n"
  },
  {
    "path": "rfc822.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2012 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#ifndef rfc822_h\n#define rfc822_h\n\n#include \"lib.h\"\n\n/* possible values for RFC822Error */\nenum\n{\n  ERR_MEMORY = 1,\n  ERR_MISMATCH_PAREN,\n  ERR_MISMATCH_QUOTE,\n  ERR_BAD_ROUTE,\n  ERR_BAD_ROUTE_ADDR,\n  ERR_BAD_ADDR_SPEC\n};\n\ntypedef struct address_t\n{\n#ifdef EXACT_ADDRESS\n  char *val;\t\t/* value of address as parsed */\n#endif\n  char *personal;\t/* real name of address */\n  char *mailbox;\t/* mailbox and host address */\n  int group;\t\t/* group mailbox? */\n  struct address_t *next;\n  unsigned is_intl      : 1;\n  unsigned intl_checked : 1;\n}\nADDRESS;\n\nvoid rfc822_dequote_comment (char *s);\nvoid rfc822_free_address (ADDRESS **);\nvoid rfc822_qualify (ADDRESS *, const char *);\nADDRESS *rfc822_parse_adrlist (ADDRESS *, const char *s);\nADDRESS *rfc822_cpy_adr (ADDRESS *addr, int);\nADDRESS *rfc822_cpy_adr_real (ADDRESS *addr);\nADDRESS *rfc822_append (ADDRESS **a, ADDRESS *b, int);\nint rfc822_write_address (char *, size_t, ADDRESS *, int);\nvoid rfc822_write_address_single (char *, size_t, ADDRESS *, int);\nvoid rfc822_free_address (ADDRESS **addr);\nvoid rfc822_cat (char *, size_t, const char *, const char *);\nint rfc822_valid_msgid (const char *msgid);\nint rfc822_remove_from_adrlist (ADDRESS **a, const char *mailbox);\n\nextern int RFC822Error;\nextern const char * const RFC822Errors[];\n\n#define rfc822_error(x) RFC822Errors[x]\n#define rfc822_new_address() safe_calloc(1,sizeof(ADDRESS))\n\n#endif /* rfc822_h */\n"
  },
  {
    "path": "safe_asprintf.c",
    "content": "/*\n * Copyright (C) 2010 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#include <stdio.h>\n#include \"lib.h\"\n\n/* NOTE: Currently there is no check in configure.ac for vasprintf(3).  the\n * undefined behavior of the error condition makes it difficult to write a safe\n * version using it.\n */\n\n#ifdef HAVE_VASPRINTF\nint safe_asprintf (char **strp, const char *fmt, ...)\n{\n  va_list ap;\n  int n;\n\n  va_start (ap, fmt);\n  n = vasprintf (strp, fmt, ap);\n  va_end (ap);\n\n  /* GNU libc man page for vasprintf(3) states that the value of *strp\n   * is undefined when the return code is -1.\n   */\n  if (n < 0)\n  {\n    mutt_error _(\"Out of memory!\");\n    sleep (1);\n    mutt_exit (1);\n  }\n\n  if (n == 0)\n  {\n    /* Mutt convention is to use NULL for 0-length strings */\n    FREE (strp); /* __FREE_CHECKED__ */\n  }\n\n  return n;\n}\n#else\n/* Allocate a C-string large enough to contain the formatted string.\n * This is essentially malloc+sprintf in one.\n */\nint safe_asprintf (char **strp, const char *fmt, ...)\n{\n  int rlen = STRING;\n  int n;\n\n  *strp = safe_malloc (rlen);\n  for (;;)\n  {\n    va_list ap;\n    va_start (ap, fmt);\n    n = vsnprintf (*strp, rlen, fmt, ap);\n    va_end (ap);\n    if (n < 0)\n    {\n      FREE (strp); /* __FREE_CHECKED__ */\n      return n;\n    }\n\n    if (n < rlen)\n    {\n      /* reduce space to just that which was used.  note that 'n' does not\n       * include the terminal nul char.\n       */\n      if (n == 0) /* convention is to use NULL for zero-length strings. */\n\tFREE (strp); /* __FREE_CHECKED__ */\n      else if (n != rlen - 1)\n\tsafe_realloc (strp, n + 1);\n      return n;\n    }\n    /* increase size and try again */\n    rlen = n + 1;\n    safe_realloc (strp, rlen);\n  }\n  /* not reached */\n}\n#endif /* HAVE_ASPRINTF */\n\n"
  },
  {
    "path": "score.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"sort.h\"\n#include <string.h>\n#include <stdlib.h>\n\ntypedef struct score_t\n{\n  char *str;\n  pattern_t *pat;\n  int val;\n  int exact;\t\t/* if this rule matches, don't evaluate any more */\n  struct score_t *next;\n} SCORE;\n\nstatic SCORE *Score = NULL;\n\nvoid mutt_check_rescore (CONTEXT *ctx)\n{\n  int i;\n\n  if (option (OPTNEEDRESCORE) && option (OPTSCORE))\n  {\n    if ((Sort & SORT_MASK) == SORT_SCORE ||\n\t(SortAux & SORT_MASK) == SORT_SCORE)\n    {\n      set_option (OPTNEEDRESORT);\n      if ((Sort & SORT_MASK) == SORT_THREADS)\n\tset_option (OPTSORTSUBTHREADS);\n    }\n\n    /* must redraw the index since the user might have %N in it */\n    set_option (OPTFORCEREDRAWINDEX);\n    set_option (OPTFORCEREDRAWPAGER);\n\n    for (i = 0; ctx && i < ctx->msgcount; i++)\n    {\n      mutt_score_message (ctx, ctx->hdrs[i], 1);\n      ctx->hdrs[i]->pair = 0;\n    }\n  }\n  unset_option (OPTNEEDRESCORE);\n}\n\nint mutt_parse_score (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  SCORE *ptr, *last;\n  char *pattern, *pc;\n  struct pattern_t *pat;\n\n  mutt_extract_token (buf, s, 0);\n  if (!MoreArgs (s))\n  {\n    strfcpy (err->data, _(\"score: too few arguments\"), err->dsize);\n    return (-1);\n  }\n  pattern = buf->data;\n  mutt_buffer_init (buf);\n  mutt_extract_token (buf, s, 0);\n  if (MoreArgs (s))\n  {\n    FREE (&pattern);\n    strfcpy (err->data, _(\"score: too many arguments\"), err->dsize);\n    return (-1);\n  }\n\n  /* look for an existing entry and update the value, else add it to the end\n     of the list */\n  for (ptr = Score, last = NULL; ptr; last = ptr, ptr = ptr->next)\n    if (mutt_strcmp (pattern, ptr->str) == 0)\n      break;\n  if (!ptr)\n  {\n    if ((pat = mutt_pattern_comp (pattern, 0, err)) == NULL)\n    {\n      FREE (&pattern);\n      return (-1);\n    }\n    ptr = safe_calloc (1, sizeof (SCORE));\n    if (last)\n      last->next = ptr;\n    else\n      Score = ptr;\n    ptr->pat = pat;\n    ptr->str = pattern;\n  } else\n    /* 'buf' arg was cleared and 'pattern' holds the only reference;\n     * as here 'ptr' != NULL -> update the value only in which case\n     * ptr->str already has the string, so pattern should be freed.\n     */\n    FREE (&pattern);\n  pc = buf->data;\n  if (*pc == '=')\n  {\n    ptr->exact = 1;\n    pc++;\n  }\n  if (mutt_atoi (pc, &ptr->val) < 0)\n  {\n    FREE (&pattern);\n    strfcpy (err->data, _(\"Error: score: invalid number\"), err->dsize);\n    return (-1);\n  }\n  set_option (OPTNEEDRESCORE);\n  return 0;\n}\n\nvoid mutt_score_message (CONTEXT *ctx, HEADER *hdr, int upd_ctx)\n{\n  SCORE *tmp;\n\n  hdr->score = 0; /* in case of re-scoring */\n  for (tmp = Score; tmp; tmp = tmp->next)\n  {\n    if (mutt_pattern_exec (tmp->pat, 0, NULL, hdr) > 0)\n    {\n      if (tmp->exact || tmp->val == 9999 || tmp->val == -9999)\n      {\n\thdr->score = tmp->val;\n\tbreak;\n      }\n      hdr->score += tmp->val;\n    }\n  }\n  if (hdr->score < 0)\n    hdr->score = 0;\n  \n  if (hdr->score <= ScoreThresholdDelete)\n    _mutt_set_flag (ctx, hdr, M_DELETE, 1, upd_ctx);\n  if (hdr->score <= ScoreThresholdRead)\n    _mutt_set_flag (ctx, hdr, M_READ, 1, upd_ctx);\n  if (hdr->score >= ScoreThresholdFlag)\n    _mutt_set_flag (ctx, hdr, M_FLAG, 1, upd_ctx);\n}\n\nint mutt_parse_unscore (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)\n{\n  SCORE *tmp, *last = NULL;\n\n  while (MoreArgs (s))\n  {\n    mutt_extract_token (buf, s, 0);\n    if (!mutt_strcmp (\"*\", buf->data))\n    {\n      for (tmp = Score; tmp; )\n      {\n\tlast = tmp;\n\ttmp = tmp->next;\n\tmutt_pattern_free (&last->pat);\n\tFREE (&last);\n      }\n      Score = NULL;\n    }\n    else\n    {\n      for (tmp = Score; tmp; last = tmp, tmp = tmp->next)\n      {\n\tif (!mutt_strcmp (buf->data, tmp->str))\n\t{\n\t  if (last)\n\t    last->next = tmp->next;\n\t  else\n\t    Score = tmp->next;\n\t  mutt_pattern_free (&tmp->pat);\n\t  FREE (&tmp);\n\t  /* there should only be one score per pattern, so we can stop here */\n\t  break;\n\t}\n      }\n    }\n  }\n  set_option (OPTNEEDRESCORE);\n  return 0;\n}\n"
  },
  {
    "path": "send.c",
    "content": "/*\n * Copyright (C) 1996-2002,2004,2010,2012-2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"rfc2047.h\"\n#include \"keymap.h\"\n#include \"mime.h\"\n#include \"mailbox.h\"\n#include \"copy.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_idna.h\"\n#include \"url.h\"\n#include \"rfc3676.h\"\n\n#include <ctype.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <string.h>\n#include <errno.h>\n#include <sys/stat.h>\n#include <sys/wait.h>\n#include <dirent.h>\n#include <time.h>\n#include <sys/types.h>\n#include <utime.h>\n\n#ifdef MIXMASTER\n#include \"remailer.h\"\n#endif\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\nstatic void append_signature (FILE *f)\n{\n  FILE *tmpfp;\n  pid_t thepid;\n\n  if (Signature && (tmpfp = mutt_open_read (Signature, &thepid)))\n  {\n    if (option (OPTSIGDASHES))\n      fputs (\"\\n-- \\n\", f);\n    mutt_copy_stream (tmpfp, f);\n    safe_fclose (&tmpfp);\n    if (thepid != -1)\n      mutt_wait_filter (thepid);\n  }\n}\n\n/* compare two e-mail addresses and return 1 if they are equivalent */\nstatic int mutt_addrcmp (ADDRESS *a, ADDRESS *b)\n{\n  if (!a->mailbox || !b->mailbox)\n    return 0;\n  if (ascii_strcasecmp (a->mailbox, b->mailbox))\n    return 0;\n  return 1;\n}\n\n/* search an e-mail address in a list */\nstatic int mutt_addrsrc (ADDRESS *a, ADDRESS *lst)\n{\n  for (; lst; lst = lst->next)\n  {\n    if (mutt_addrcmp (a, lst))\n      return (1);\n  }\n  return (0);\n}\n\n/* removes addresses from \"b\" which are contained in \"a\" */\nADDRESS *mutt_remove_xrefs (ADDRESS *a, ADDRESS *b)\n{\n  ADDRESS *top, *p, *prev = NULL;\n\n  top = b;\n  while (b)\n  {\n    for (p = a; p; p = p->next)\n    {\n      if (mutt_addrcmp (p, b))\n\tbreak;\n    }\n    if (p)\n    {\n      if (prev)\n      {\n\tprev->next = b->next;\n\tb->next = NULL;\n\trfc822_free_address (&b);\n\tb = prev;\n      }\n      else\n      {\n\ttop = top->next;\n\tb->next = NULL;\n\trfc822_free_address (&b);\n\tb = top;\n      }\n    }\n    else\n    {\n      prev = b;\n      b = b->next;\n    }\n  }\n  return top;\n}\n\n/* remove any address which matches the current user.  if `leave_only' is\n * nonzero, don't remove the user's address if it is the only one in the list\n */\nstatic ADDRESS *remove_user (ADDRESS *a, int leave_only)\n{\n  ADDRESS *top = NULL, *last = NULL;\n\n  while (a)\n  {\n    if (!mutt_addr_is_user (a))\n    {\n      if (top)\n      {\n        last->next = a;\n        last = last->next;\n      }\n      else\n        last = top = a;\n      a = a->next;\n      last->next = NULL;\n    }\n    else\n    {\n      ADDRESS *tmp = a;\n      \n      a = a->next;\n      if (!leave_only || a || last)\n      {\n\ttmp->next = NULL;\n\trfc822_free_address (&tmp);\n      }\n      else\n\tlast = top = tmp;\n    }\n  }\n  return top;\n}\n\nstatic ADDRESS *find_mailing_lists (ADDRESS *t, ADDRESS *c)\n{\n  ADDRESS *top = NULL, *ptr = NULL;\n\n  for (; t || c; t = c, c = NULL)\n  {\n    for (; t; t = t->next)\n    {\n      if (mutt_is_mail_list (t) && !t->group)\n      {\n\tif (top)\n\t{\n\t  ptr->next = rfc822_cpy_adr_real (t);\n\t  ptr = ptr->next;\n\t}\n\telse\n\t  ptr = top = rfc822_cpy_adr_real (t);\n      }\n    }\n  }\n  return top;\n}\n\nstatic int edit_address (ADDRESS **a, /* const */ char *field)\n{\n  char buf[HUGE_STRING];\n  char *err = NULL;\n  int idna_ok = 0;\n  \n  do\n  {\n    buf[0] = 0;\n    mutt_addrlist_to_local (*a);\n    rfc822_write_address (buf, sizeof (buf), *a, 0);\n    if (mutt_get_field (field, buf, sizeof (buf), M_ALIAS) != 0)\n      return (-1);\n    rfc822_free_address (a);\n    *a = mutt_expand_aliases (mutt_parse_adrlist (NULL, buf));\n    if ((idna_ok = mutt_addrlist_to_intl (*a, &err)) != 0)\n    {\n      mutt_error (_(\"Error: '%s' is a bad IDN.\"), err);\n      mutt_refresh ();\n      mutt_sleep (2);\n      FREE (&err);\n    }\n  } \n  while (idna_ok != 0);\n  return 0;\n}\n\nstatic int edit_envelope (ENVELOPE *en)\n{\n  char buf[HUGE_STRING];\n  LIST *uh = UserHeader;\n\n  if (edit_address (&en->to, \"To: \") == -1 || en->to == NULL)\n    return (-1);\n  if (option (OPTASKCC) && edit_address (&en->cc, \"Cc: \") == -1)\n    return (-1);\n  if (option (OPTASKBCC) && edit_address (&en->bcc, \"Bcc: \") == -1)\n    return (-1);\n\n  if (en->subject)\n  {\n    if (option (OPTFASTREPLY))\n      return (0);\n    else\n      strfcpy (buf, en->subject, sizeof (buf));\n  }\n  else\n  {\n    const char *p;\n\n    buf[0] = 0;\n    for (; uh; uh = uh->next)\n    {\n      if (ascii_strncasecmp (\"subject:\", uh->data, 8) == 0)\n      {\n\tp = skip_email_wsp(uh->data + 8);\n\tstrncpy (buf, p, sizeof (buf));\n      }\n    }\n  }\n  \n  if (mutt_get_field (\"Subject: \", buf, sizeof (buf), 0) != 0 ||\n      (!buf[0] && query_quadoption (OPT_SUBJECT, _(\"No subject, abort?\")) != M_NO))\n  {\n    mutt_message _(\"No subject, aborting.\");\n    return (-1);\n  }\n  mutt_str_replace (&en->subject, buf);\n\n  return 0;\n}\n\nstatic void process_user_recips (ENVELOPE *env)\n{\n  LIST *uh = UserHeader;\n\n  for (; uh; uh = uh->next)\n  {\n    if (ascii_strncasecmp (\"to:\", uh->data, 3) == 0)\n      env->to = rfc822_parse_adrlist (env->to, uh->data + 3);\n    else if (ascii_strncasecmp (\"cc:\", uh->data, 3) == 0)\n      env->cc = rfc822_parse_adrlist (env->cc, uh->data + 3);\n    else if (ascii_strncasecmp (\"bcc:\", uh->data, 4) == 0)\n      env->bcc = rfc822_parse_adrlist (env->bcc, uh->data + 4);\n  }\n}\n\nstatic void process_user_header (ENVELOPE *env)\n{\n  LIST *uh = UserHeader;\n  LIST *last = env->userhdrs;\n\n  if (last)\n    while (last->next)\n      last = last->next;\n\n  for (; uh; uh = uh->next)\n  {\n    if (ascii_strncasecmp (\"from:\", uh->data, 5) == 0)\n    {\n      /* User has specified a default From: address.  Remove default address */\n      rfc822_free_address (&env->from);\n      env->from = rfc822_parse_adrlist (env->from, uh->data + 5);\n    }\n    else if (ascii_strncasecmp (\"reply-to:\", uh->data, 9) == 0)\n    {\n      rfc822_free_address (&env->reply_to);\n      env->reply_to = rfc822_parse_adrlist (env->reply_to, uh->data + 9);\n    }\n    else if (ascii_strncasecmp (\"message-id:\", uh->data, 11) == 0)\n    {\n      char *tmp = mutt_extract_message_id (uh->data + 11, NULL);\n      if (rfc822_valid_msgid (tmp) >= 0)\n      {\n\tFREE(&env->message_id);\n\tenv->message_id = tmp;\n      } else\n\tFREE(&tmp);\n    }\n    else if (ascii_strncasecmp (\"to:\", uh->data, 3) != 0 &&\n\t     ascii_strncasecmp (\"cc:\", uh->data, 3) != 0 &&\n\t     ascii_strncasecmp (\"bcc:\", uh->data, 4) != 0 &&\n\t     ascii_strncasecmp (\"subject:\", uh->data, 8) != 0 &&\n\t     ascii_strncasecmp (\"return-path:\", uh->data, 12) != 0)\n    {\n      if (last)\n      {\n\tlast->next = mutt_new_list ();\n\tlast = last->next;\n      }\n      else\n\tlast = env->userhdrs = mutt_new_list ();\n      last->data = safe_strdup (uh->data);\n    }\n  }\n}\n\nLIST *mutt_copy_list (LIST *p)\n{\n  LIST *t, *r=NULL, *l=NULL;\n\n  for (; p; p = p->next)\n  {\n    t = (LIST *) safe_malloc (sizeof (LIST));\n    t->data = safe_strdup (p->data);\n    t->next = NULL;\n    if (l)\n    {\n      r->next = t;\n      r = r->next;\n    }\n    else\n      l = r = t;\n  }\n  return (l);\n}\n\nvoid mutt_forward_intro (FILE *fp, HEADER *cur)\n{\n  char buffer[STRING];\n  \n  fputs (\"----- Forwarded message from \", fp);\n  buffer[0] = 0;\n  rfc822_write_address (buffer, sizeof (buffer), cur->env->from, 1);\n  fputs (buffer, fp);\n  fputs (\" -----\\n\\n\", fp);\n}\n\nvoid mutt_forward_trailer (FILE *fp)\n{\n  fputs (\"\\n----- End forwarded message -----\\n\", fp);\n}\n\n\nstatic int include_forward (CONTEXT *ctx, HEADER *cur, FILE *out)\n{\n  int chflags = CH_DECODE, cmflags = 0;\n  \n  mutt_parse_mime_message (ctx, cur);\n  mutt_message_hook (ctx, cur, M_MESSAGEHOOK);\n\n  if (WithCrypto && (cur->security & ENCRYPT) && option (OPTFORWDECODE))\n  {\n    /* make sure we have the user's passphrase before proceeding... */\n    crypt_valid_passphrase (cur->security);\n  }\n\n  mutt_forward_intro (out, cur);\n\n  if (option (OPTFORWDECODE))\n  {\n    cmflags |= M_CM_DECODE | M_CM_CHARCONV;\n    if (option (OPTWEED))\n    {\n      chflags |= CH_WEED | CH_REORDER;\n      cmflags |= M_CM_WEED;\n    }\n  }\n  if (option (OPTFORWQUOTE))\n    cmflags |= M_CM_PREFIX;\n\n  /* wrapping headers for forwarding is considered a display\n   * rather than send action */\n  chflags |= CH_DISPLAY;\n\n  mutt_copy_message (out, ctx, cur, cmflags, chflags);\n  mutt_forward_trailer (out);\n  return 0;\n}\n\nvoid mutt_make_attribution (CONTEXT *ctx, HEADER *cur, FILE *out)\n{\n  char buffer[LONG_STRING];\n  if (Attribution)\n  {\n    mutt_make_string (buffer, sizeof (buffer), Attribution, ctx, cur);\n    fputs (buffer, out);\n    fputc ('\\n', out);\n  }\n}\n\nvoid mutt_make_post_indent (CONTEXT *ctx, HEADER *cur, FILE *out)\n{\n  char buffer[STRING];\n  if (PostIndentString)\n  {\n    mutt_make_string (buffer, sizeof (buffer), PostIndentString, ctx, cur);\n    fputs (buffer, out);\n    fputc ('\\n', out);\n  }\n}\n\nstatic int include_reply (CONTEXT *ctx, HEADER *cur, FILE *out)\n{\n  int cmflags = M_CM_PREFIX | M_CM_DECODE | M_CM_CHARCONV | M_CM_REPLYING;\n  int chflags = CH_DECODE;\n\n  if (WithCrypto && (cur->security & ENCRYPT))\n  {\n    /* make sure we have the user's passphrase before proceeding... */\n    crypt_valid_passphrase (cur->security);\n  }\n\n  mutt_parse_mime_message (ctx, cur);\n  mutt_message_hook (ctx, cur, M_MESSAGEHOOK);\n  \n  mutt_make_attribution (ctx, cur, out);\n  \n  if (!option (OPTHEADER))\n    cmflags |= M_CM_NOHEADER;\n  if (option (OPTWEED))\n  {\n    chflags |= CH_WEED | CH_REORDER;\n    cmflags |= M_CM_WEED;\n  }\n\n  mutt_copy_message (out, ctx, cur, cmflags, chflags);\n\n  mutt_make_post_indent (ctx, cur, out);\n  \n  return 0;\n}\n\nstatic int default_to (ADDRESS **to, ENVELOPE *env, int flags, int hmfupto)\n{\n  char prompt[STRING];\n\n  if (flags && env->mail_followup_to && hmfupto == M_YES) \n  {\n    rfc822_append (to, env->mail_followup_to, 1);\n    return 0;\n  }\n\n  /* Exit now if we're setting up the default Cc list for list-reply\n   * (only set if Mail-Followup-To is present and honoured).\n   */\n  if (flags & SENDLISTREPLY)\n    return 0;\n\n  if (!option(OPTREPLYSELF) && mutt_addr_is_user (env->from))\n  {\n    /* mail is from the user, assume replying to recipients */\n    rfc822_append (to, env->to, 1);\n  }\n  else if (env->reply_to)\n  {\n    if ((mutt_addrcmp (env->from, env->reply_to) && !env->reply_to->next) || \n\t(option (OPTIGNORELISTREPLYTO) &&\n\tmutt_is_mail_list (env->reply_to) &&\n\t(mutt_addrsrc (env->reply_to, env->to) ||\n\tmutt_addrsrc (env->reply_to, env->cc))))\n    {\n      /* If the Reply-To: address is a mailing list, assume that it was\n       * put there by the mailing list, and use the From: address\n       * \n       * We also take the from header if our correspondent has a reply-to\n       * header which is identical to the electronic mail address given\n       * in his From header.\n       * \n       */\n      rfc822_append (to, env->from, 0);\n    }\n    else if (!(mutt_addrcmp (env->from, env->reply_to) && \n\t       !env->reply_to->next) &&\n\t     quadoption (OPT_REPLYTO) != M_YES)\n    {\n      /* There are quite a few mailing lists which set the Reply-To:\n       * header field to the list address, which makes it quite impossible\n       * to send a message to only the sender of the message.  This\n       * provides a way to do that.\n       */\n      /* L10N:\n         Asks whether the user respects the reply-to header.\n         If she says no, mutt will reply to the from header's address instead. */\n      snprintf (prompt, sizeof (prompt), _(\"Reply to %s%s?\"),\n\t\tenv->reply_to->mailbox, \n\t\tenv->reply_to->next?\",...\":\"\");\n      switch (query_quadoption (OPT_REPLYTO, prompt))\n      {\n      case M_YES:\n\trfc822_append (to, env->reply_to, 0);\n\tbreak;\n\n      case M_NO:\n\trfc822_append (to, env->from, 0);\n\tbreak;\n\n      default:\n\treturn (-1); /* abort */\n      }\n    }\n    else\n      rfc822_append (to, env->reply_to, 0);\n  }\n  else\n    rfc822_append (to, env->from, 0);\n\n  return (0);\n}\n\nint mutt_fetch_recips (ENVELOPE *out, ENVELOPE *in, int flags)\n{\n  char prompt[STRING];\n  ADDRESS *tmp;\n  int hmfupto = -1;\n\n  if ((flags & (SENDLISTREPLY|SENDGROUPREPLY)) && in->mail_followup_to)\n  {\n    snprintf (prompt, sizeof (prompt), _(\"Follow-up to %s%s?\"),\n\t      in->mail_followup_to->mailbox,\n\t      in->mail_followup_to->next ? \",...\" : \"\");\n\n    if ((hmfupto = query_quadoption (OPT_MFUPTO, prompt)) == -1)\n      return -1;\n  }\n\n  if (flags & SENDLISTREPLY)\n  {\n    tmp = find_mailing_lists (in->to, in->cc);\n    rfc822_append (&out->to, tmp, 0);\n    rfc822_free_address (&tmp);\n\n    if (in->mail_followup_to && hmfupto == M_YES &&\n        default_to (&out->cc, in, flags & SENDLISTREPLY, hmfupto) == -1)\n      return (-1); /* abort */\n  }\n  else\n  {\n    if (default_to (&out->to, in, flags & SENDGROUPREPLY, hmfupto) == -1)\n      return (-1); /* abort */\n\n    if ((flags & SENDGROUPREPLY) && (!in->mail_followup_to || hmfupto != M_YES))\n    {\n      /* if(!mutt_addr_is_user(in->to)) */\n      rfc822_append (&out->cc, in->to, 1);\n      rfc822_append (&out->cc, in->cc, 1);\n    }\n  }\n  return 0;\n}\n\nLIST *mutt_make_references(ENVELOPE *e)\n{\n  LIST *t = NULL, *l = NULL;\n\n  if (e->references)\n    l = mutt_copy_list (e->references);\n  else\n    l = mutt_copy_list (e->in_reply_to);\n  \n  if (e->message_id)\n  {\n    t = mutt_new_list();\n    t->data = safe_strdup(e->message_id);\n    t->next = l;\n    l = t;\n  }\n  \n  return l;\n}\n\nvoid mutt_fix_reply_recipients (ENVELOPE *env)\n{\n  if (! option (OPTMETOO))\n  {\n    /* the order is important here.  do the CC: first so that if the\n     * the user is the only recipient, it ends up on the TO: field\n     */\n    env->cc = remove_user (env->cc, (env->to == NULL));\n    env->to = remove_user (env->to, (env->cc == NULL));\n  }\n  \n  /* the CC field can get cluttered, especially with lists */\n  env->to = mutt_remove_duplicates (env->to);\n  env->cc = mutt_remove_duplicates (env->cc);\n  env->cc = mutt_remove_xrefs (env->to, env->cc);\n  \n  if (env->cc && !env->to)\n  {\n    env->to = env->cc;\n    env->cc = NULL;\n  }\n}\n\nvoid mutt_make_forward_subject (ENVELOPE *env, CONTEXT *ctx, HEADER *cur)\n{\n  char buffer[STRING];\n\n  /* set the default subject for the message. */\n  mutt_make_string (buffer, sizeof (buffer), NONULL(ForwFmt), ctx, cur);\n  mutt_str_replace (&env->subject, buffer);\n}\n\nvoid mutt_make_misc_reply_headers (ENVELOPE *env, CONTEXT *ctx,\n\t\t\t\t    HEADER *cur, ENVELOPE *curenv)\n{\n  /* This takes precedence over a subject that might have\n   * been taken from a List-Post header.  Is that correct?\n   */\n  if (curenv->real_subj)\n  {\n    FREE (&env->subject);\n    env->subject = safe_malloc (mutt_strlen (curenv->real_subj) + 5);\n    sprintf (env->subject, \"Re: %s\", curenv->real_subj);\t/* __SPRINTF_CHECKED__ */\n  }\n  else if (!env->subject)\n    env->subject = safe_strdup (\"Re: your mail\");\n}\n\nvoid mutt_add_to_reference_headers (ENVELOPE *env, ENVELOPE *curenv, LIST ***pp, LIST ***qq)\n{\n  LIST **p = NULL, **q = NULL;\n\n  if (pp) p = *pp;\n  if (qq) q = *qq;\n  \n  if (!p) p = &env->references;\n  if (!q) q = &env->in_reply_to;\n  \n  while (*p) p = &(*p)->next;\n  while (*q) q = &(*q)->next;\n  \n  *p = mutt_make_references (curenv);\n  \n  if (curenv->message_id)\n  {\n    *q = mutt_new_list();\n    (*q)->data = safe_strdup (curenv->message_id);\n  }\n  \n  if (pp) *pp = p;\n  if (qq) *qq = q;\n  \n}\n\nstatic void \nmutt_make_reference_headers (ENVELOPE *curenv, ENVELOPE *env, CONTEXT *ctx)\n{\n  env->references = NULL;\n  env->in_reply_to = NULL;\n  \n  if (!curenv)\n  {\n    HEADER *h;\n    LIST **p = NULL, **q = NULL;\n    int i;\n    \n    for(i = 0; i < ctx->vcount; i++)\n    {\n      h = ctx->hdrs[ctx->v2r[i]];\n      if (h->tagged)\n\tmutt_add_to_reference_headers (env, h->env, &p, &q);\n    }\n  }\n  else\n    mutt_add_to_reference_headers (env, curenv, NULL, NULL);\n\n  /* if there's more than entry in In-Reply-To (i.e. message has\n     multiple parents), don't generate a References: header as it's\n     discouraged by RfC2822, sect. 3.6.4 */\n  if (ctx->tagged > 0 && env->in_reply_to && env->in_reply_to->next)\n    mutt_free_list (&env->references);\n}\n\nstatic int\nenvelope_defaults (ENVELOPE *env, CONTEXT *ctx, HEADER *cur, int flags)\n{\n  ENVELOPE *curenv = NULL;\n  int i = 0, tag = 0;\n\n  if (!cur)\n  {\n    tag = 1;\n    for (i = 0; i < ctx->vcount; i++)\n      if (ctx->hdrs[ctx->v2r[i]]->tagged)\n      {\n\tcur = ctx->hdrs[ctx->v2r[i]];\n\tcurenv = cur->env;\n\tbreak;\n      }\n\n    if (!cur)\n    {\n      /* This could happen if the user tagged some messages and then did\n       * a limit such that none of the tagged message are visible.\n       */\n      mutt_error _(\"No tagged messages are visible!\");\n      return (-1);\n    }\n  }\n  else\n    curenv = cur->env;\n\n  if (flags & SENDREPLY)\n  {\n    if (tag)\n    {\n      HEADER *h;\n\n      for (i = 0; i < ctx->vcount; i++)\n      {\n\th = ctx->hdrs[ctx->v2r[i]];\n\tif (h->tagged && mutt_fetch_recips (env, h->env, flags) == -1)\n\t  return -1;\n      }\n    }\n    else if (mutt_fetch_recips (env, curenv, flags) == -1)\n      return -1;\n\n    if ((flags & SENDLISTREPLY) && !env->to)\n    {\n      mutt_error _(\"No mailing lists found!\");\n      return (-1);\n    }\n\n    mutt_make_misc_reply_headers (env, ctx, cur, curenv);\n    mutt_make_reference_headers (tag ? NULL : curenv, env, ctx);\n  }\n  else if (flags & SENDFORWARD)\n    mutt_make_forward_subject (env, ctx, cur);\n\n  return (0);\n}\n\nstatic int\ngenerate_body (FILE *tempfp,\t/* stream for outgoing message */\n\t       HEADER *msg,\t/* header for outgoing message */\n\t       int flags,\t/* compose mode */\n\t       CONTEXT *ctx,\t/* current mailbox */\n\t       HEADER *cur)\t/* current message */\n{\n  int i;\n  HEADER *h;\n  BODY *tmp;\n\n  if (flags & SENDREPLY)\n  {\n    if ((i = query_quadoption (OPT_INCLUDE, _(\"Include message in reply?\"))) == -1)\n      return (-1);\n\n    if (i == M_YES)\n    {\n      mutt_message _(\"Including quoted message...\");\n      if (!cur)\n      {\n\tfor (i = 0; i < ctx->vcount; i++)\n\t{\n\t  h = ctx->hdrs[ctx->v2r[i]];\n\t  if (h->tagged)\n\t  {\n\t    if (include_reply (ctx, h, tempfp) == -1)\n\t    {\n\t      mutt_error _(\"Could not include all requested messages!\");\n\t      return (-1);\n\t    }\n\t    fputc ('\\n', tempfp);\n\t  }\n\t}\n      }\n      else\n\tinclude_reply (ctx, cur, tempfp);\n\n    }\n  }\n  else if (flags & SENDFORWARD)\n  {\n    if ((i = query_quadoption (OPT_MIMEFWD, _(\"Forward as attachment?\"))) == M_YES)\n    {\n      BODY *last = msg->content;\n\n      mutt_message _(\"Preparing forwarded message...\");\n      \n      while (last && last->next)\n\tlast = last->next;\n\n      if (cur)\n      {\n\ttmp = mutt_make_message_attach (ctx, cur, 0);\n\tif (last)\n\t  last->next = tmp;\n\telse\n\t  msg->content = tmp;\n      }\n      else\n      {\n\tfor (i = 0; i < ctx->vcount; i++)\n\t{\n\t  if (ctx->hdrs[ctx->v2r[i]]->tagged)\n\t  {\n\t    tmp = mutt_make_message_attach (ctx, ctx->hdrs[ctx->v2r[i]], 0);\n\t    if (last)\n\t    {\n\t      last->next = tmp;\n\t      last = tmp;\n\t    }\n\t    else\n\t      last = msg->content = tmp;\n\t  }\n\t}\n      }\n    }\n    else if (i != -1)\n    {\n      if (cur)\n\tinclude_forward (ctx, cur, tempfp);\n      else\n\tfor (i=0; i < ctx->vcount; i++)\n\t  if (ctx->hdrs[ctx->v2r[i]]->tagged)\n\t    include_forward (ctx, ctx->hdrs[ctx->v2r[i]], tempfp);\n    }\n    else if (i == -1)\n      return -1;\n  }\n  /* if (WithCrypto && (flags & SENDKEY)) */\n  else if ((WithCrypto & APPLICATION_PGP) && (flags & SENDKEY)) \n  {\n    BODY *tmp;\n\n    if ((WithCrypto & APPLICATION_PGP)\n        && (tmp = crypt_pgp_make_key_attachment (NULL)) == NULL)\n      return -1;\n\n    tmp->next = msg->content;\n    msg->content = tmp;\n  }\n\n  mutt_clear_error ();\n\n  return (0);\n}\n\nvoid mutt_set_followup_to (ENVELOPE *e)\n{\n  ADDRESS *t = NULL;\n  ADDRESS *from;\n\n  /* \n   * Only generate the Mail-Followup-To if the user has requested it, and\n   * it hasn't already been set\n   */\n\n  if (option (OPTFOLLOWUPTO) && !e->mail_followup_to)\n  {\n    if (mutt_is_list_cc (0, e->to, e->cc))\n    {\n      /* \n       * this message goes to known mailing lists, so create a proper\n       * mail-followup-to header\n       */\n\n      t = rfc822_append (&e->mail_followup_to, e->to, 0);\n      rfc822_append (&t, e->cc, 1);\n    }\n\n    /* remove ourselves from the mail-followup-to header */\n    e->mail_followup_to = remove_user (e->mail_followup_to, 0);\n\n    /*\n     * If we are not subscribed to any of the lists in question,\n     * re-add ourselves to the mail-followup-to header.  The \n     * mail-followup-to header generated is a no-op with group-reply,\n     * but makes sure list-reply has the desired effect.\n     */\n\n    if (e->mail_followup_to && !mutt_is_list_recipient (0, e->to, e->cc))\n    {\n      if (e->reply_to)\n\tfrom = rfc822_cpy_adr (e->reply_to, 0);\n      else if (e->from)\n\tfrom = rfc822_cpy_adr (e->from, 0);\n      else\n\tfrom = mutt_default_from ();\n      \n      if (from)\n      {\n\t/* Normally, this loop will not even be entered. */\n\tfor (t = from; t && t->next; t = t->next)\n\t  ;\n\t\n\tt->next = e->mail_followup_to; \t/* t cannot be NULL at this point. */\n\te->mail_followup_to = from;\n      }\n    }\n    \n    e->mail_followup_to = mutt_remove_duplicates (e->mail_followup_to);\n    \n  }\n}\n\n\n/* look through the recipients of the message we are replying to, and if\n   we find an address that matches $alternates, we use that as the default\n   from field */\nstatic ADDRESS *set_reverse_name (ENVELOPE *env)\n{\n  ADDRESS *tmp;\n\n  for (tmp = env->to; tmp; tmp = tmp->next)\n  {\n    if (mutt_addr_is_user (tmp))\n      break;\n  }\n  if (!tmp)\n  {\n    for (tmp = env->cc; tmp; tmp = tmp->next)\n    {\n      if (mutt_addr_is_user (tmp))\n\tbreak;\n    }\n  }\n  if (!tmp && mutt_addr_is_user (env->from))\n    tmp = env->from;\n  if (tmp)\n  {\n    tmp = rfc822_cpy_adr_real (tmp);\n    /* when $reverse_realname is not set, clear the personal name so that it\n     * may be set vi a reply- or send-hook.\n     */\n    if (!option (OPTREVREAL))\n      FREE (&tmp->personal);\n  }\n  return (tmp);\n}\n\nADDRESS *mutt_default_from (void)\n{\n  ADDRESS *adr;\n  const char *fqdn = mutt_fqdn(1);\n\n  /* \n   * Note: We let $from override $realname here.  Is this the right\n   * thing to do? \n   */\n\n  if (From)\n    adr = rfc822_cpy_adr_real (From);\n  else if (option (OPTUSEDOMAIN))\n  {\n    adr = rfc822_new_address ();\n    adr->mailbox = safe_malloc (mutt_strlen (Username) + mutt_strlen (fqdn) + 2);\n    sprintf (adr->mailbox, \"%s@%s\", NONULL(Username), NONULL(fqdn));\t/* __SPRINTF_CHECKED__ */\n  }\n  else\n  {\n    adr = rfc822_new_address ();\n    adr->mailbox = safe_strdup (NONULL(Username));\n  }\n  \n  return (adr);\n}\n\nstatic int send_message (HEADER *msg)\n{  \n  char tempfile[_POSIX_PATH_MAX];\n  FILE *tempfp;\n  int i;\n#ifdef USE_SMTP\n  short old_write_bcc;\n#endif\n  \n  /* Write out the message in MIME form. */\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((tempfp = safe_fopen (tempfile, \"w\")) == NULL)\n    return (-1);\n\n#ifdef USE_SMTP\n  old_write_bcc = option (OPTWRITEBCC);\n  if (SmtpUrl)\n    unset_option (OPTWRITEBCC);\n#endif\n#ifdef MIXMASTER\n  mutt_write_rfc822_header (tempfp, msg->env, msg->content, 0, msg->chain ? 1 : 0);\n#endif\n#ifndef MIXMASTER\n  mutt_write_rfc822_header (tempfp, msg->env, msg->content, 0, 0);\n#endif\n#ifdef USE_SMTP\n  if (old_write_bcc)\n    set_option (OPTWRITEBCC);\n#endif\n  \n  fputc ('\\n', tempfp); /* tie off the header. */\n\n  if ((mutt_write_mime_body (msg->content, tempfp) == -1))\n  {\n    safe_fclose (&tempfp);\n    unlink (tempfile);\n    return (-1);\n  }\n  \n  if (fclose (tempfp) != 0)\n  {\n    mutt_perror (tempfile);\n    unlink (tempfile);\n    return (-1);\n  }\n\n#ifdef MIXMASTER\n  if (msg->chain)\n    return mix_send_message (msg->chain, tempfile);\n#endif\n\n#if USE_SMTP\n  if (SmtpUrl)\n      return mutt_smtp_send (msg->env->from, msg->env->to, msg->env->cc,\n                             msg->env->bcc, tempfile,\n                             (msg->content->encoding == ENC8BIT));\n#endif /* USE_SMTP */\n\n  i = mutt_invoke_sendmail (msg->env->from, msg->env->to, msg->env->cc, \n\t\t\t    msg->env->bcc, tempfile,\n                            (msg->content->encoding == ENC8BIT));\n  return (i);\n}\n\n/* rfc2047 encode the content-descriptions */\nvoid mutt_encode_descriptions (BODY *b, short recurse)\n{\n  BODY *t;\n\n  for (t = b; t; t = t->next)\n  {\n    if (t->description)\n    {\n      rfc2047_encode_string (&t->description);\n    }\n    if (recurse && t->parts)\n      mutt_encode_descriptions (t->parts, recurse);\n  }\n}\n\n/* rfc2047 decode them in case of an error */\nstatic void decode_descriptions (BODY *b)\n{\n  BODY *t;\n  \n  for (t = b; t; t = t->next)\n  {\n    if (t->description)\n    {\n      rfc2047_decode (&t->description);\n    }\n    if (t->parts)\n      decode_descriptions (t->parts);\n  }\n}\n\nstatic void fix_end_of_file (const char *data)\n{\n  FILE *fp;\n  int c;\n  \n  if ((fp = safe_fopen (data, \"a+\")) == NULL)\n    return;\n  fseek (fp,-1,SEEK_END);\n  if ((c = fgetc(fp)) != '\\n')\n    fputc ('\\n', fp);\n  safe_fclose (&fp);\n}\n\nint mutt_resend_message (FILE *fp, CONTEXT *ctx, HEADER *cur)\n{\n  HEADER *msg = mutt_new_header ();\n  \n  if (mutt_prepare_template (fp, ctx, msg, cur, 1) < 0)\n    return -1;\n\n  if (WithCrypto)\n  {\n    /* mutt_prepare_template doesn't always flip on an application bit.\n     * so fix that here */\n    if (!(msg->security & (APPLICATION_SMIME | APPLICATION_PGP)))\n    {\n      if ((WithCrypto & APPLICATION_SMIME) && option (OPTSMIMEISDEFAULT))\n        msg->security |= APPLICATION_SMIME;\n      else if (WithCrypto & APPLICATION_PGP)\n        msg->security |= APPLICATION_PGP;\n      else\n        msg->security |= APPLICATION_SMIME;\n    }\n\n    if (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n    {\n      msg->security |= OPPENCRYPT;\n      crypt_opportunistic_encrypt(msg);\n    }\n  }\n\n  return ci_send_message (SENDRESEND, msg, NULL, ctx, cur);\n}\n\nstatic int is_reply (HEADER *reply, HEADER *orig)\n{\n  return mutt_find_list (orig->env->references, reply->env->message_id) ||\n         mutt_find_list (orig->env->in_reply_to, reply->env->message_id);\n}\n\nstatic int has_recips (ADDRESS *a)\n{\n  int c = 0;\n\n  for ( ; a; a = a->next)\n  {\n    if (!a->mailbox || a->group)\n      continue;\n    c++;\n  }\n  return c;\n}\n\n/*\n * Returns 0 if the message was successfully sent\n *        -1 if the message was aborted or an error occurred\n *         1 if the message was postponed\n */\nint\nci_send_message (int flags,\t\t/* send mode */\n\t\t HEADER *msg,\t\t/* template to use for new message */\n\t\t char *tempfile,\t/* file specified by -i or -H */\n\t\t CONTEXT *ctx,\t\t/* current mailbox */\n\t\t HEADER *cur)\t\t/* current message */\n{\n  char buffer[LONG_STRING];\n  char fcc[_POSIX_PATH_MAX] = \"\"; /* where to copy this message */\n  FILE *tempfp = NULL;\n  BODY *pbody;\n  int i, killfrom = 0;\n  int fcc_error = 0;\n  int free_clear_content = 0;\n\n  BODY *save_content = NULL;\n  BODY *clear_content = NULL;\n  char *pgpkeylist = NULL;\n  /* save current value of \"pgp_sign_as\"  and \"smime_default_key\" */\n  char *pgp_signas = NULL;\n  char *smime_default_key = NULL;\n  char *tag = NULL, *err = NULL;\n  char *ctype;\n  char *finalpath = NULL;\n\n  int rv = -1;\n  \n  if (!flags && !msg && quadoption (OPT_RECALL) != M_NO &&\n      mutt_num_postponed (1))\n  {\n    /* If the user is composing a new message, check to see if there\n     * are any postponed messages first.\n     */\n    if ((i = query_quadoption (OPT_RECALL, _(\"Recall postponed message?\"))) == -1)\n      return rv;\n\n    if(i == M_YES)\n      flags |= SENDPOSTPONED;\n  }\n  \n  \n  if (flags & SENDPOSTPONED)\n  {\n    if (WithCrypto & APPLICATION_PGP)\n      pgp_signas = safe_strdup(PgpSignAs);\n    if (WithCrypto & APPLICATION_SMIME)\n      smime_default_key = safe_strdup(SmimeDefaultKey);\n  }\n\n  /* Delay expansion of aliases until absolutely necessary--shouldn't\n   * be necessary unless we are prompting the user or about to execute a\n   * send-hook.\n   */\n\n  if (!msg)\n  {\n    msg = mutt_new_header ();\n\n    if (flags == SENDPOSTPONED)\n    {\n      if ((flags = mutt_get_postponed (ctx, msg, &cur, fcc, sizeof (fcc))) < 0)\n\tgoto cleanup;\n    }\n\n    if (flags & (SENDPOSTPONED|SENDRESEND))\n    {\n      if ((tempfp = safe_fopen (msg->content->filename, \"a+\")) == NULL)\n      {\n\tmutt_perror (msg->content->filename);\n\tgoto cleanup;\n      }\n    }\n\n    if (!msg->env)\n      msg->env = mutt_new_envelope ();\n  }\n\n  /* Parse and use an eventual list-post header */\n  if ((flags & SENDLISTREPLY) \n      && cur && cur->env && cur->env->list_post) \n  {\n    /* Use any list-post header as a template */\n    url_parse_mailto (msg->env, NULL, cur->env->list_post);\n    /* We don't let them set the sender's address. */\n    rfc822_free_address (&msg->env->from);\n  }\n  \n  if (! (flags & (SENDKEY | SENDPOSTPONED | SENDRESEND)))\n  {\n    /* When SENDDRAFTFILE is set, the caller has already\n     * created the \"parent\" body structure.\n     */\n    if (! (flags & SENDDRAFTFILE))\n    {\n      pbody = mutt_new_body ();\n      pbody->next = msg->content; /* don't kill command-line attachments */\n      msg->content = pbody;\n\n      if (!(ctype = safe_strdup (ContentType)))\n        ctype = safe_strdup (\"text/plain\");\n      mutt_parse_content_type (ctype, msg->content);\n      FREE (&ctype);\n      msg->content->unlink = 1;\n      msg->content->use_disp = 0;\n      msg->content->disposition = DISPINLINE;\n\n      if (!tempfile)\n      {\n        mutt_mktemp (buffer, sizeof (buffer));\n        tempfp = safe_fopen (buffer, \"w+\");\n        msg->content->filename = safe_strdup (buffer);\n      }\n      else\n      {\n        tempfp = safe_fopen (tempfile, \"a+\");\n        msg->content->filename = safe_strdup (tempfile);\n      }\n    }\n    else\n      tempfp = safe_fopen (msg->content->filename, \"a+\");\n\n    if (!tempfp)\n    {\n      dprint(1,(debugfile, \"newsend_message: can't create tempfile %s (errno=%d)\\n\", msg->content->filename, errno));\n      mutt_perror (msg->content->filename);\n      goto cleanup;\n    }\n  }\n\n  /* this is handled here so that the user can match ~f in send-hook */\n  if (cur && option (OPTREVNAME) && !(flags & (SENDPOSTPONED|SENDRESEND)))\n  {\n    /* we shouldn't have to worry about freeing `msg->env->from' before\n     * setting it here since this code will only execute when doing some\n     * sort of reply.  the pointer will only be set when using the -H command\n     * line option.\n     *\n     * We shouldn't have to worry about alias expansion here since we are\n     * either replying to a real or postponed message, therefore no aliases\n     * should exist since the user has not had the opportunity to add\n     * addresses to the list.  We just have to ensure the postponed messages\n     * have their aliases expanded.\n     */\n\n    msg->env->from = set_reverse_name (cur->env);\n  }\n\n  if (! (flags & (SENDPOSTPONED|SENDRESEND)) &&\n      ! ((flags & SENDDRAFTFILE) && option (OPTRESUMEDRAFTFILES)))\n  {\n    if ((flags & (SENDREPLY | SENDFORWARD)) && ctx &&\n\tenvelope_defaults (msg->env, ctx, cur, flags) == -1)\n      goto cleanup;\n\n    if (option (OPTHDRS))\n      process_user_recips (msg->env);\n\n    /* Expand aliases and remove duplicates/crossrefs */\n    mutt_expand_aliases_env (msg->env);\n    \n    if (flags & SENDREPLY)\n      mutt_fix_reply_recipients (msg->env);\n\n    if (! (flags & (SENDMAILX|SENDBATCH)) &&\n\t! (option (OPTAUTOEDIT) && option (OPTEDITHDRS)) &&\n\t! ((flags & SENDREPLY) && option (OPTFASTREPLY)))\n    {\n      if (edit_envelope (msg->env) == -1)\n\tgoto cleanup;\n    }\n\n    /* the from address must be set here regardless of whether or not\n     * $use_from is set so that the `~P' (from you) operator in send-hook\n     * patterns will work.  if $use_from is unset, the from address is killed\n     * after send-hooks are evaluated */\n\n    if (!msg->env->from)\n    {\n      msg->env->from = mutt_default_from ();\n      killfrom = 1;\n    }\n\n    if ((flags & SENDREPLY) && cur)\n    {\n      /* change setting based upon message we are replying to */\n      mutt_message_hook (ctx, cur, M_REPLYHOOK);\n\n      /*\n       * set the replied flag for the message we are generating so that the\n       * user can use ~Q in a send-hook to know when reply-hook's are also\n       * being used.\n       */\n      msg->replied = 1;\n    }\n\n    /* change settings based upon recipients */\n    \n    mutt_message_hook (NULL, msg, M_SENDHOOK);\n\n    /*\n     * Unset the replied flag from the message we are composing since it is\n     * no longer required.  This is done here because the FCC'd copy of\n     * this message was erroneously get the 'R'eplied flag when stored in\n     * a maildir-style mailbox.\n     */\n    msg->replied = 0;\n\n    if (! (flags & SENDKEY))\n    {\n      if (option (OPTTEXTFLOWED) && msg->content->type == TYPETEXT && !ascii_strcasecmp (msg->content->subtype, \"plain\"))\n        mutt_set_parameter (\"format\", \"flowed\", &msg->content->parameter);\n    }\n\n    /* $use_from and/or $from might have changed in a send-hook */\n    if (killfrom)\n    {\n      rfc822_free_address (&msg->env->from);\n      if (option (OPTUSEFROM) && !(flags & (SENDPOSTPONED|SENDRESEND)))\n\tmsg->env->from = mutt_default_from ();\n      killfrom = 0;\n    }\n\n    if (option (OPTHDRS))\n      process_user_header (msg->env);\n\n    if (flags & SENDBATCH)\n       mutt_copy_stream (stdin, tempfp);\n\n    if (option (OPTSIGONTOP) && ! (flags & (SENDMAILX|SENDKEY|SENDBATCH))\n\t&& Editor && mutt_strcmp (Editor, \"builtin\") != 0)\n      append_signature (tempfp);\n\n    /* include replies/forwarded messages, unless we are given a template */\n    if (!tempfile && (ctx || !(flags & (SENDREPLY|SENDFORWARD)))\n\t&& generate_body (tempfp, msg, flags, ctx, cur) == -1)\n      goto cleanup;\n\n    if (!option (OPTSIGONTOP) && ! (flags & (SENDMAILX|SENDKEY|SENDBATCH))\n\t&& Editor && mutt_strcmp (Editor, \"builtin\") != 0)\n      append_signature (tempfp);\n  }\n  \n  /* \n   * This hook is even called for postponed messages, and can, e.g., be\n   * used for setting the editor, the sendmail path, or the\n   * envelope sender.\n   */\n  mutt_message_hook (NULL, msg, M_SEND2HOOK);\n\n  /* wait until now to set the real name portion of our return address so\n     that $realname can be set in a send-hook */\n  if (msg->env->from && !msg->env->from->personal\n      && !(flags & (SENDRESEND|SENDPOSTPONED)))\n    msg->env->from->personal = safe_strdup (Realname);\n\n  if (!((WithCrypto & APPLICATION_PGP) && (flags & SENDKEY)))\n    safe_fclose (&tempfp);\n\n  if (flags & SENDMAILX)\n  {\n    if (mutt_builtin_editor (msg->content->filename, msg, cur) == -1)\n      goto cleanup;\n  }\n  else if (! (flags & SENDBATCH))\n  {\n    struct stat st;\n    time_t mtime = mutt_decrease_mtime (msg->content->filename, NULL);\n\n    mutt_update_encoding (msg->content);\n\n    /*\n     * Select whether or not the user's editor should be called now.  We\n     * don't want to do this when:\n     * 1) we are sending a key/cert\n     * 2) we are forwarding a message and the user doesn't want to edit it.\n     *    This is controlled by the quadoption $forward_edit.  However, if\n     *    both $edit_headers and $autoedit are set, we want to ignore the\n     *    setting of $forward_edit because the user probably needs to add the\n     *    recipients.\n     */\n    if (! (flags & SENDKEY) &&\n\t((flags & SENDFORWARD) == 0 ||\n\t (option (OPTEDITHDRS) && option (OPTAUTOEDIT)) ||\n\t query_quadoption (OPT_FORWEDIT, _(\"Edit forwarded message?\")) == M_YES))\n    {\n      /* If the this isn't a text message, look for a mailcap edit command */\n      if (mutt_needs_mailcap (msg->content))\n      {\n\tif (!mutt_edit_attachment (msg->content))\n          goto cleanup;\n      }\n      else if (!Editor || mutt_strcmp (\"builtin\", Editor) == 0)\n\tmutt_builtin_editor (msg->content->filename, msg, cur);\n      else if (option (OPTEDITHDRS))\n      {\n\tmutt_env_to_local (msg->env);\n\tmutt_edit_headers (Editor, msg->content->filename, msg, fcc, sizeof (fcc));\n\tmutt_env_to_intl (msg->env, NULL, NULL);\n      }\n      else\n      {\n\tmutt_edit_file (Editor, msg->content->filename);\n\tif (stat (msg->content->filename, &st) == 0)\n\t{\n\t  if (mtime != st.st_mtime)\n\t    fix_end_of_file (msg->content->filename);\n\t}\n\telse\n\t  mutt_perror (msg->content->filename);\n      }\n      \n      /* If using format=flowed, perform space stuffing.  Avoid stuffing when\n       * recalling a postponed message where the stuffing was already\n       * performed.  If it has already been performed, the format=flowed\n       * parameter will be present.\n       */\n      if (option (OPTTEXTFLOWED) && msg->content->type == TYPETEXT && !ascii_strcasecmp(\"plain\", msg->content->subtype))\n      {\n\tchar *p = mutt_get_parameter(\"format\", msg->content->parameter);\n\tif (ascii_strcasecmp(\"flowed\", NONULL(p)))\n\t  rfc3676_space_stuff (msg);\n      }\n\n      mutt_message_hook (NULL, msg, M_SEND2HOOK);\n    }\n\n    if (! (flags & (SENDPOSTPONED | SENDFORWARD | SENDKEY | SENDRESEND | SENDDRAFTFILE)))\n    {\n      if (stat (msg->content->filename, &st) == 0)\n      {\n\t/* if the file was not modified, bail out now */\n\tif (mtime == st.st_mtime && !msg->content->next &&\n\t    query_quadoption (OPT_ABORT, _(\"Abort unmodified message?\")) == M_YES)\n\t{\n\t  mutt_message _(\"Aborted unmodified message.\");\n\t  goto cleanup;\n\t}\n      }\n      else\n\tmutt_perror (msg->content->filename);\n    }\n  }\n\n  /* \n   * Set the message security unless:\n   * 1) crypto support is not enabled (WithCrypto==0)\n   * 2) pgp: header field was present during message editing with $edit_headers (msg->security != 0)\n   * 3) we are resending a message\n   * 4) we are recalling a postponed message (don't override the user's saved settings)\n   * 5) we are in mailx mode\n   * 6) we are in batch mode\n   *\n   * This is done after allowing the user to edit the message so that security\n   * settings can be configured with send2-hook and $edit_headers.\n   */\n  if (WithCrypto && (msg->security == 0) && !(flags & (SENDBATCH | SENDMAILX | SENDPOSTPONED | SENDRESEND)))\n  {\n    if (option (OPTCRYPTAUTOSIGN))\n      msg->security |= SIGN;\n    if (option (OPTCRYPTAUTOENCRYPT))\n      msg->security |= ENCRYPT;\n    if (option (OPTCRYPTREPLYENCRYPT) && cur && (cur->security & ENCRYPT))\n      msg->security |= ENCRYPT;\n    if (option (OPTCRYPTREPLYSIGN) && cur && (cur->security & SIGN))\n      msg->security |= SIGN;\n    if (option (OPTCRYPTREPLYSIGNENCRYPTED) && cur && (cur->security & ENCRYPT))\n      msg->security |= SIGN;\n    if (WithCrypto & APPLICATION_PGP && (msg->security & (ENCRYPT | SIGN)))\n    {\n      if (option (OPTPGPAUTOINLINE))\n\tmsg->security |= INLINE;\n      if (option (OPTPGPREPLYINLINE) && cur && (cur->security & INLINE))\n\tmsg->security |= INLINE;\n    }\n\n    if (msg->security || option (OPTCRYPTOPPORTUNISTICENCRYPT))\n    {\n      /* \n       * When replying / forwarding, use the original message's\n       * crypto system.  According to the documentation,\n       * smime_is_default should be disregarded here.\n       * \n       * Problem: At least with forwarding, this doesn't really\n       * make much sense. Should we have an option to completely\n       * disable individual mechanisms at run-time?\n       */\n      if (cur)\n      {\n\tif ((WithCrypto & APPLICATION_PGP) && option (OPTCRYPTAUTOPGP) \n\t    && (cur->security & APPLICATION_PGP))\n\t  msg->security |= APPLICATION_PGP;\n\telse if ((WithCrypto & APPLICATION_SMIME) && option (OPTCRYPTAUTOSMIME)\n\t    && (cur->security & APPLICATION_SMIME))\n\t  msg->security |= APPLICATION_SMIME;\n      }\n\n      /*\n       * No crypto mechanism selected? Use availability + smime_is_default\n       * for the decision. \n       */\n      if (!(msg->security & (APPLICATION_SMIME | APPLICATION_PGP)))\n      {\n\tif ((WithCrypto & APPLICATION_SMIME) && option (OPTCRYPTAUTOSMIME) \n\t    && option (OPTSMIMEISDEFAULT))\n\t  msg->security |= APPLICATION_SMIME;\n\telse if ((WithCrypto & APPLICATION_PGP) && option (OPTCRYPTAUTOPGP))\n\t  msg->security |= APPLICATION_PGP;\n\telse if ((WithCrypto & APPLICATION_SMIME) && option (OPTCRYPTAUTOSMIME))\n\t  msg->security |= APPLICATION_SMIME;\n      }\n    }\n\n    /* opportunistic encrypt relys on SMIME or PGP already being selected */\n    if (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n    {\n      /* If something has already enabled encryption, e.g. OPTCRYPTAUTOENCRYPT\n       * or OPTCRYPTREPLYENCRYPT, then don't enable opportunistic encrypt for\n       * the message.\n       */\n      if (! (msg->security & ENCRYPT))\n      {\n        msg->security |= OPPENCRYPT;\n        crypt_opportunistic_encrypt(msg);\n      }\n    }\n\n    /* No permissible mechanisms found.  Don't sign or encrypt. */\n    if (!(msg->security & (APPLICATION_SMIME|APPLICATION_PGP)))\n      msg->security = 0;\n  }\n\n  /* specify a default fcc.  if we are in batchmode, only save a copy of\n   * the message if the value of $copy is yes or ask-yes */\n\n  if (!fcc[0] && !(flags & (SENDPOSTPONEDFCC)) && (!(flags & SENDBATCH) || (quadoption (OPT_COPY) & 0x1)))\n  {\n    /* set the default FCC */\n    if (!msg->env->from)\n    {\n      msg->env->from = mutt_default_from ();\n      killfrom = 1; /* no need to check $use_from because if the user specified\n\t\t       a from address it would have already been set by now */\n    }\n    mutt_select_fcc (fcc, sizeof (fcc), msg);\n    if (killfrom)\n    {\n      rfc822_free_address (&msg->env->from);\n      killfrom = 0;\n    }\n  }\n\n  \n  mutt_update_encoding (msg->content);\n\n  if (! (flags & (SENDMAILX | SENDBATCH)))\n  {\nmain_loop:\n\n    fcc_error = 0; /* reset value since we may have failed before */\n    mutt_pretty_mailbox (fcc, sizeof (fcc));\n    i = mutt_compose_menu (msg, fcc, sizeof (fcc), cur,\n                           (flags & SENDNOFREEHEADER ? M_COMPOSE_NOFREEHEADER : 0));\n    if (i == -1)\n    {\n      /* abort */\n      mutt_message _(\"Mail not sent.\");\n      goto cleanup;\n    }\n    else if (i == 1)\n    {\n      /* postpone the message until later. */\n      if (msg->content->next)\n\tmsg->content = mutt_make_multipart (msg->content);\n\n      if (WithCrypto && option (OPTPOSTPONEENCRYPT) && PostponeEncryptAs\n          && (msg->security & ENCRYPT))\n      {\n        int is_signed = msg->security & SIGN;\n        if (is_signed)\n          msg->security &= ~SIGN;\n\n        pgpkeylist = safe_strdup (PostponeEncryptAs);\n        if (mutt_protect (msg, pgpkeylist) == -1)\n        {\n          if (is_signed)\n            msg->security |= SIGN;\n          FREE (&pgpkeylist);\n          msg->content = mutt_remove_multipart (msg->content);\n          goto main_loop;\n        }\n\n        if (is_signed)\n          msg->security |= SIGN;\n        FREE (&pgpkeylist);\n      }\n\n      /*\n       * make sure the message is written to the right part of a maildir \n       * postponed folder.\n       */\n      msg->read = 0; msg->old = 0;\n\n      mutt_encode_descriptions (msg->content, 1);\n      mutt_prepare_envelope (msg->env, 0);\n      mutt_env_to_intl (msg->env, NULL, NULL);\t/* Handle bad IDNAs the next time. */\n\n      if (!Postponed || mutt_write_fcc (NONULL (Postponed), msg,\n\t                    (cur && (flags & SENDREPLY)) ?\n\t\t\t             cur->env->message_id : NULL, 1, fcc, NULL) < 0)\n      {\n\tmsg->content = mutt_remove_multipart (msg->content);\n\tdecode_descriptions (msg->content);\n\tmutt_unprepare_envelope (msg->env);\n\tgoto main_loop;\n      }\n      mutt_update_num_postponed ();\n      mutt_message _(\"Message postponed.\");\n      rv = 1;\n      goto cleanup;\n    }\n  }\n\n  if (!has_recips (msg->env->to) && !has_recips (msg->env->cc) &&\n      !has_recips (msg->env->bcc))\n  {\n    if (! (flags & SENDBATCH))\n    {\n      mutt_error _(\"No recipients are specified!\");\n      goto main_loop;\n    }\n    else\n    {\n      puts _(\"No recipients were specified.\");\n      goto cleanup;\n    }\n  }\n\n  if (mutt_env_to_intl (msg->env, &tag, &err))\n  {\n    mutt_error (_(\"Bad IDN in \\\"%s\\\": '%s'\"), tag, err);\n    FREE (&err);\n    if (!(flags & SENDBATCH))\n      goto main_loop;\n    else \n      goto cleanup;\n  }\n  \n  if (!msg->env->subject && ! (flags & SENDBATCH) &&\n      (i = query_quadoption (OPT_SUBJECT, _(\"No subject, abort sending?\"))) != M_NO)\n  {\n    /* if the abort is automatic, print an error message */\n    if (quadoption (OPT_SUBJECT) == M_YES)\n      mutt_error _(\"No subject specified.\");\n    goto main_loop;\n  }\n\n  if (msg->content->next)\n    msg->content = mutt_make_multipart (msg->content);\n\n  /* \n   * Ok, we need to do it this way instead of handling all fcc stuff in\n   * one place in order to avoid going to main_loop with encoded \"env\"\n   * in case of error.  Ugh.\n   */\n\n  mutt_encode_descriptions (msg->content, 1);\n  \n  /*\n   * Make sure that clear_content and free_clear_content are\n   * properly initialized -- we may visit this particular place in\n   * the code multiple times, including after a failed call to\n   * mutt_protect().\n   */\n  \n  clear_content = NULL;\n  free_clear_content = 0;\n  \n  if (WithCrypto)\n  {\n    if (msg->security)  \n    {\n      /* save the decrypted attachments */\n      clear_content = msg->content;\n  \n      if ((crypt_get_keys (msg, &pgpkeylist, 0) == -1) ||\n          mutt_protect (msg, pgpkeylist) == -1)\n      {\n        msg->content = mutt_remove_multipart (msg->content);\n        \n\tFREE (&pgpkeylist);\n        \n        decode_descriptions (msg->content);\n        goto main_loop;\n      }\n      mutt_encode_descriptions (msg->content, 0);\n    }\n  \n    /* \n     * at this point, msg->content is one of the following three things:\n     * - multipart/signed.  In this case, clear_content is a child.\n     * - multipart/encrypted.  In this case, clear_content exists\n     *   independently\n     * - application/pgp.  In this case, clear_content exists independently.\n     * - something else.  In this case, it's the same as clear_content.\n     */\n  \n    /* This is ugly -- lack of \"reporting back\" from mutt_protect(). */\n    \n    if (clear_content && (msg->content != clear_content)\n        && (msg->content->parts != clear_content))\n      free_clear_content = 1;\n  }\n\n  if (!option (OPTNOCURSES) && !(flags & SENDMAILX))\n    mutt_message _(\"Sending message...\");\n\n  mutt_prepare_envelope (msg->env, 1);\n\n  /* save a copy of the message, if necessary. */\n\n  mutt_expand_path (fcc, sizeof (fcc));\n\n  \n  /* Don't save a copy when we are in batch-mode, and the FCC\n   * folder is on an IMAP server: This would involve possibly lots\n   * of user interaction, which is not available in batch mode. \n   * \n   * Note: A patch to fix the problems with the use of IMAP servers\n   * from non-curses mode is available from Brendan Cully.  However, \n   * I'd like to think a bit more about this before including it.\n   */\n\n#ifdef USE_IMAP\n  if ((flags & SENDBATCH) && fcc[0] && mx_is_imap (fcc))\n    fcc[0] = '\\0';\n#endif\n\n  if (*fcc && mutt_strcmp (\"/dev/null\", fcc) != 0)\n  {\n    BODY *tmpbody = msg->content;\n    BODY *save_sig = NULL;\n    BODY *save_parts = NULL;\n\n    if (WithCrypto && msg->security && option (OPTFCCCLEAR))\n      msg->content = clear_content;\n\n    /* check to see if the user wants copies of all attachments */\n    if (query_quadoption (OPT_FCCATTACH, _(\"Save attachments in Fcc?\")) != M_YES &&\n\tmsg->content->type == TYPEMULTIPART)\n    {\n      if (WithCrypto\n          && (mutt_strcmp (msg->content->subtype, \"encrypted\") == 0 ||\n              mutt_strcmp (msg->content->subtype, \"signed\") == 0))\n      {\n\tif (clear_content->type == TYPEMULTIPART)\n\t{\n\t  if(!(msg->security & ENCRYPT) && (msg->security & SIGN))\n\t  {\n\t    /* save initial signature and attachments */\n\t    save_sig = msg->content->parts->next;\n\t    save_parts = clear_content->parts->next;\n\t  }\n\n\t  /* this means writing only the main part */\n\t  msg->content = clear_content->parts;\n\n\t  if (mutt_protect (msg, pgpkeylist) == -1)\n\t  {\n\t    /* we can't do much about it at this point, so\n\t     * fallback to saving the whole thing to fcc\n\t     */\n\t    msg->content = tmpbody;\n\t    save_sig = NULL;\n\t    goto full_fcc;\n\t  }\n\n\t  save_content = msg->content;\n\t}\n      }\n      else\n\tmsg->content = msg->content->parts;\n    }\n\nfull_fcc:\n    if (msg->content)\n    {\n      /* update received time so that when storing to a mbox-style folder\n       * the From_ line contains the current time instead of when the\n       * message was first postponed.\n       */\n      msg->received = time (NULL);\n      if (mutt_write_fcc (fcc, msg, NULL, 0, NULL, &finalpath) == -1)\n      {\n\t/*\n\t * Error writing FCC, we should abort sending.\n\t */\n\tfcc_error = 1;\n      }\n    }\n\n    msg->content = tmpbody;\n\n    if (WithCrypto && save_sig)\n    {\n      /* cleanup the second signature structures */\n      if (save_content->parts)\n      {\n\tmutt_free_body (&save_content->parts->next);\n\tsave_content->parts = NULL;\n      }\n      mutt_free_body (&save_content);\n\n      /* restore old signature and attachments */\n      msg->content->parts->next = save_sig;\n      msg->content->parts->parts->next = save_parts;\n    }\n    else if (WithCrypto && save_content)\n    {\n      /* destroy the new encrypted body. */\n      mutt_free_body (&save_content);\n    }\n\n  }\n\n\n  /*\n   * Don't attempt to send the message if the FCC failed.  Just pretend\n   * the send failed as well so we give the user a chance to fix the\n   * error.\n   */\n  if (fcc_error || (i = send_message (msg)) < 0)\n  {\n    if (!(flags & SENDBATCH))\n    {\n      if (!WithCrypto)\n        ;\n      else if ((msg->security & ENCRYPT) || \n               ((msg->security & SIGN)\n                && msg->content->type == TYPEAPPLICATION))\n      {\n\tmutt_free_body (&msg->content); /* destroy PGP data */\n\tmsg->content = clear_content;\t/* restore clear text. */\n      }\n      else if ((msg->security & SIGN) && msg->content->type == TYPEMULTIPART)\n      {\n\tmutt_free_body (&msg->content->parts->next);\t     /* destroy sig */\n\tmsg->content = mutt_remove_multipart (msg->content); \n      }\n\n      msg->content = mutt_remove_multipart (msg->content);\n      decode_descriptions (msg->content);\n      mutt_unprepare_envelope (msg->env);\n      FREE(&finalpath);\n      goto main_loop;\n    }\n    else\n    {\n      puts _(\"Could not send the message.\");\n      goto cleanup;\n    }\n  }\n  else if (!option (OPTNOCURSES) && ! (flags & SENDMAILX)) {\n    mutt_message (i == 0 ? _(\"Mail sent.\") : _(\"Sending in background.\"));\n#ifdef USE_NOTMUCH\n    if (option(OPTNOTMUCHRECORD))\n      nm_record_message(ctx, finalpath, cur);\n#endif\n  }\n\n  if (WithCrypto && (msg->security & ENCRYPT))\n    FREE (&pgpkeylist);\n  \n  if (WithCrypto && free_clear_content)\n    mutt_free_body (&clear_content);\n\n  /* set 'replied' flag only if the user didn't change/remove\n     In-Reply-To: and References: headers during edit */\n  if (flags & SENDREPLY)\n  {\n    if (cur && ctx)\n      mutt_set_flag (ctx, cur, M_REPLIED, is_reply (cur, msg));\n    else if (!(flags & SENDPOSTPONED) && ctx && ctx->tagged)\n    {\n      for (i = 0; i < ctx->vcount; i++)\n\tif (ctx->hdrs[ctx->v2r[i]]->tagged)\n\t  mutt_set_flag (ctx, ctx->hdrs[ctx->v2r[i]], M_REPLIED,\n\t\t\t is_reply (ctx->hdrs[ctx->v2r[i]], msg));\n    }\n  }\n\n\n  rv = 0;\n  \ncleanup:\n\n  if (flags & SENDPOSTPONED)\n  {\n    if (WithCrypto & APPLICATION_PGP)\n    {\n      FREE (&PgpSignAs);\n      PgpSignAs = pgp_signas;\n    }\n    if (WithCrypto & APPLICATION_SMIME)\n    {\n      FREE (&SmimeDefaultKey);\n      SmimeDefaultKey = smime_default_key;\n    }\n  }\n   \n  safe_fclose (&tempfp);\n  if (! (flags & SENDNOFREEHEADER))\n    mutt_free_header (&msg);\n\n  FREE(&finalpath);\n  return rv;\n}\n\n/* vim: set sw=2: */\n"
  },
  {
    "path": "sendlib.c",
    "content": "/*\n * Copyright (C) 1996-2002,2009-2012 Michael R. Elkins <me@mutt.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#define _SENDLIB_C 1\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"rfc2047.h\"\n#include \"rfc2231.h\"\n#include \"mx.h\"\n#include \"mime.h\"\n#include \"mailbox.h\"\n#include \"copy.h\"\n#include \"pager.h\"\n#include \"charset.h\"\n#include \"mutt_crypt.h\"\n#include \"mutt_idna.h\"\n#include \"buffy.h\"\n\n#include <string.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <errno.h>\n#include <ctype.h>\n#include <sys/stat.h>\n#include <signal.h>\n#include <sys/wait.h>\n#include <fcntl.h>\n\n#ifdef HAVE_SYSEXITS_H\n#include <sysexits.h>\n#else /* Make sure EX_OK is defined <philiph@pobox.com> */\n#define EX_OK 0\n#endif\n\n/* If you are debugging this file, comment out the following line. */\n#define NDEBUG\n\n#ifdef NDEBUG\n#define assert(x)\n#else\n#include <assert.h>\n#endif\n\nextern char RFC822Specials[];\n\nconst char MimeSpecials[] = \"@.,;:<>[]\\\\\\\"()?/= \\t\";\n\nconst char B64Chars[64] = {\n  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',\n  'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',\n  'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',\n  't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',\n  '8', '9', '+', '/'\n};\n\nstatic void transform_to_7bit (BODY *a, FILE *fpin);\n\nstatic void encode_quoted (FGETCONV * fc, FILE *fout, int istext)\n{\n  int c, linelen = 0;\n  char line[77], savechar;\n\n  while ((c = fgetconv (fc)) != EOF)\n  {\n    /* Wrap the line if needed. */\n    if (linelen == 76 && ((istext && c != '\\n') || !istext))\n    {\n      /* If the last character is \"quoted\", then be sure to move all three\n       * characters to the next line.  Otherwise, just move the last\n       * character...\n       */\n      if (line[linelen-3] == '=')\n      {\n        line[linelen-3] = 0;\n        fputs (line, fout);\n        fputs (\"=\\n\", fout);\n        line[linelen] = 0;\n        line[0] = '=';\n        line[1] = line[linelen-2];\n        line[2] = line[linelen-1];\n        linelen = 3;\n      }\n      else\n      {\n        savechar = line[linelen-1];\n        line[linelen-1] = '=';\n        line[linelen] = 0;\n        fputs (line, fout);\n        fputc ('\\n', fout);\n        line[0] = savechar;\n        linelen = 1;\n      }\n    }\n\n    /* Escape lines that begin with/only contain \"the message separator\". */\n    if (linelen == 4 && !mutt_strncmp (\"From\", line, 4))\n    {\n      strfcpy (line, \"=46rom\", sizeof (line));\n      linelen = 6;\n    }\n    else if (linelen == 4 && !mutt_strncmp (\"from\", line, 4))\n    {\n      strfcpy (line, \"=66rom\", sizeof (line));\n      linelen = 6;\n    }\n    else if (linelen == 1 && line[0] == '.')\n    {\n      strfcpy (line, \"=2E\", sizeof (line));\n      linelen = 3;\n    }\n\n\n    if (c == '\\n' && istext)\n    {\n      /* Check to make sure there is no trailing space on this line. */\n      if (linelen > 0 && (line[linelen-1] == ' ' || line[linelen-1] == '\\t'))\n      {\n        if (linelen < 74)\n\t{\n          sprintf (line+linelen-1, \"=%2.2X\", (unsigned char) line[linelen-1]);\n          fputs (line, fout);\n        }\n        else\n\t{\n          int savechar = line[linelen-1];\n\n          line[linelen-1] = '=';\n          line[linelen] = 0;\n          fputs (line, fout);\n          fprintf (fout, \"\\n=%2.2X\", (unsigned char) savechar);\n        }\n      }\n      else\n      {\n        line[linelen] = 0;\n        fputs (line, fout);\n      }\n      fputc ('\\n', fout);\n      linelen = 0;\n    }\n    else if (c != 9 && (c < 32 || c > 126 || c == '='))\n    {\n      /* Check to make sure there is enough room for the quoted character.\n       * If not, wrap to the next line.\n       */\n      if (linelen > 73)\n      {\n        line[linelen++] = '=';\n        line[linelen] = 0;\n        fputs (line, fout);\n        fputc ('\\n', fout);\n        linelen = 0;\n      }\n      sprintf (line+linelen,\"=%2.2X\", (unsigned char) c);\n      linelen += 3;\n    }\n    else\n    {\n      /* Don't worry about wrapping the line here.  That will happen during\n       * the next iteration when I'll also know what the next character is.\n       */\n      line[linelen++] = c;\n    }\n  }\n\n  /* Take care of anything left in the buffer */\n  if (linelen > 0)\n  {\n    if (line[linelen-1] == ' ' || line[linelen-1] == '\\t')\n    {\n      /* take care of trailing whitespace */\n      if (linelen < 74)\n        sprintf (line+linelen-1, \"=%2.2X\", (unsigned char) line[linelen-1]);\n      else\n      {\n        savechar = line[linelen-1];\n        line[linelen-1] = '=';\n        line[linelen] = 0;\n        fputs (line, fout);\n        fputc ('\\n', fout);\n        sprintf (line, \"=%2.2X\", (unsigned char) savechar);\n      }\n    }\n    else\n      line[linelen] = 0;\n    fputs (line, fout);\n  }\n}\n\nstatic char b64_buffer[3];\nstatic short b64_num;\nstatic short b64_linelen;\n\nstatic void b64_flush(FILE *fout)\n{\n  short i;\n\n  if(!b64_num)\n    return;\n\n  if(b64_linelen >= 72)\n  {\n    fputc('\\n', fout);\n    b64_linelen = 0;\n  }\n\n  for(i = b64_num; i < 3; i++)\n    b64_buffer[i] = '\\0';\n\n  fputc(B64Chars[(b64_buffer[0] >> 2) & 0x3f], fout);\n  b64_linelen++;\n  fputc(B64Chars[((b64_buffer[0] & 0x3) << 4) | ((b64_buffer[1] >> 4) & 0xf) ], fout);\n  b64_linelen++;\n\n  if(b64_num > 1)\n  {\n    fputc(B64Chars[((b64_buffer[1] & 0xf) << 2) | ((b64_buffer[2] >> 6) & 0x3) ], fout);\n    b64_linelen++;\n    if(b64_num > 2)\n    {\n      fputc(B64Chars[b64_buffer[2] & 0x3f], fout);\n      b64_linelen++;\n    }\n  }\n\n  while(b64_linelen % 4)\n  {\n    fputc('=', fout);\n    b64_linelen++;\n  }\n\n  b64_num = 0;\n}\n\n\nstatic void b64_putc(char c, FILE *fout)\n{\n  if(b64_num == 3)\n    b64_flush(fout);\n\n  b64_buffer[b64_num++] = c;\n}\n\n\nstatic void encode_base64 (FGETCONV * fc, FILE *fout, int istext)\n{\n  int ch, ch1 = EOF;\n\n  b64_num = b64_linelen = 0;\n\n  while ((ch = fgetconv (fc)) != EOF)\n  {\n    if (istext && ch == '\\n' && ch1 != '\\r')\n      b64_putc('\\r', fout);\n    b64_putc(ch, fout);\n    ch1 = ch;\n  }\n  b64_flush(fout);\n  fputc('\\n', fout);\n}\n\nstatic void encode_8bit (FGETCONV *fc, FILE *fout, int istext)\n{\n  int ch;\n\n  while ((ch = fgetconv (fc)) != EOF)\n    fputc (ch, fout);\n}\n\n\nint mutt_write_mime_header (BODY *a, FILE *f)\n{\n  PARAMETER *p;\n  char buffer[STRING];\n  char *t;\n  char *fn;\n  int len;\n  int tmplen;\n  int encode;\n\n  fprintf (f, \"Content-Type: %s/%s\", TYPE (a), a->subtype);\n\n  if (a->parameter)\n  {\n    len = 25 + mutt_strlen (a->subtype); /* approximate len. of content-type */\n\n    for(p = a->parameter; p; p = p->next)\n    {\n      char *tmp;\n\n      if(!p->value)\n\tcontinue;\n\n      fputc (';', f);\n\n      buffer[0] = 0;\n      tmp = safe_strdup (p->value);\n      encode = rfc2231_encode_string (&tmp);\n      rfc822_cat (buffer, sizeof (buffer), tmp, MimeSpecials);\n\n      /* Dirty hack to make messages readable by Outlook Express\n       * for the Mac: force quotes around the boundary parameter\n       * even when they aren't needed.\n       */\n\n      if (!ascii_strcasecmp (p->attribute, \"boundary\") && !strcmp (buffer, tmp))\n\tsnprintf (buffer, sizeof (buffer), \"\\\"%s\\\"\", tmp);\n\n      FREE (&tmp);\n\n      tmplen = mutt_strlen (buffer) + mutt_strlen (p->attribute) + 1;\n\n      if (len + tmplen + 2 > 76)\n      {\n\tfputs (\"\\n\\t\", f);\n\tlen = tmplen + 8;\n      }\n      else\n      {\n\tfputc (' ', f);\n\tlen += tmplen + 1;\n      }\n\n      fprintf (f, \"%s%s=%s\", p->attribute, encode ? \"*\" : \"\", buffer);\n\n    }\n  }\n\n  fputc ('\\n', f);\n\n  if (a->description)\n    fprintf(f, \"Content-Description: %s\\n\", a->description);\n\n  if (a->disposition != DISPNONE)\n  {\n    const char *dispstr[] = {\n      \"inline\",\n      \"attachment\",\n      \"form-data\"\n    };\n\n    if (a->disposition < sizeof(dispstr)/sizeof(char*))\n    {\n      fprintf (f, \"Content-Disposition: %s\", dispstr[a->disposition]);\n\n      if (a->use_disp)\n      {\n\tif (!(fn = a->d_filename))\n\t  fn = a->filename;\n\n\tif (fn)\n\t{\n\t  char *tmp;\n\n\t  /* Strip off the leading path... */\n\t  if ((t = strrchr (fn, '/')))\n\t    t++;\n\t  else\n\t    t = fn;\n\n\t  buffer[0] = 0;\n\t  tmp = safe_strdup (t);\n\t  encode = rfc2231_encode_string (&tmp);\n\t  rfc822_cat (buffer, sizeof (buffer), tmp, MimeSpecials);\n\t  FREE (&tmp);\n\t  fprintf (f, \"; filename%s=%s\", encode ? \"*\" : \"\", buffer);\n\t}\n      }\n\n      fputc ('\\n', f);\n    }\n    else\n    {\n      dprint(1, (debugfile, \"ERROR: invalid content-disposition %d\\n\", a->disposition));\n    }\n  }\n\n  if (a->encoding != ENC7BIT)\n    fprintf(f, \"Content-Transfer-Encoding: %s\\n\", ENCODING (a->encoding));\n\n  /* Do NOT add the terminator here!!! */\n  return (ferror (f) ? -1 : 0);\n}\n\n# define write_as_text_part(a)  (mutt_is_text_part(a) \\\n                                 || ((WithCrypto & APPLICATION_PGP)\\\n                                      && mutt_is_application_pgp(a)))\n\nint mutt_write_mime_body (BODY *a, FILE *f)\n{\n  char *p, boundary[SHORT_STRING];\n  char send_charset[SHORT_STRING];\n  FILE *fpin;\n  BODY *t;\n  FGETCONV *fc;\n\n  if (a->type == TYPEMULTIPART)\n  {\n    /* First, find the boundary to use */\n    if (!(p = mutt_get_parameter (\"boundary\", a->parameter)))\n    {\n      dprint (1, (debugfile, \"mutt_write_mime_body(): no boundary parameter found!\\n\"));\n      mutt_error _(\"No boundary parameter found! [report this error]\");\n      return (-1);\n    }\n    strfcpy (boundary, p, sizeof (boundary));\n\n    for (t = a->parts; t ; t = t->next)\n    {\n      fprintf (f, \"\\n--%s\\n\", boundary);\n      if (mutt_write_mime_header (t, f) == -1)\n\treturn -1;\n      fputc ('\\n', f);\n      if (mutt_write_mime_body (t, f) == -1)\n\treturn -1;\n    }\n    fprintf (f, \"\\n--%s--\\n\", boundary);\n    return (ferror (f) ? -1 : 0);\n  }\n\n  /* This is pretty gross, but it's the best solution for now... */\n  if ((WithCrypto & APPLICATION_PGP)\n      && a->type == TYPEAPPLICATION\n      && mutt_strcmp (a->subtype, \"pgp-encrypted\") == 0)\n  {\n    fputs (\"Version: 1\\n\", f);\n    return 0;\n  }\n\n  if ((fpin = fopen (a->filename, \"r\")) == NULL)\n  {\n    dprint(1,(debugfile, \"write_mime_body: %s no longer exists!\\n\",a->filename));\n    mutt_error (_(\"%s no longer exists!\"), a->filename);\n    return -1;\n  }\n\n  if (a->type == TYPETEXT && (!a->noconv))\n    fc = fgetconv_open (fpin, a->charset,\n\t\t\tmutt_get_body_charset (send_charset, sizeof (send_charset), a),\n\t\t\t0);\n  else\n    fc = fgetconv_open (fpin, 0, 0, 0);\n\n  if (a->encoding == ENCQUOTEDPRINTABLE)\n    encode_quoted (fc, f, write_as_text_part (a));\n  else if (a->encoding == ENCBASE64)\n    encode_base64 (fc, f, write_as_text_part (a));\n  else if (a->type == TYPETEXT && (!a->noconv))\n    encode_8bit (fc, f, write_as_text_part (a));\n  else\n    mutt_copy_stream (fpin, f);\n\n  fgetconv_close (&fc);\n  safe_fclose (&fpin);\n\n  return (ferror (f) ? -1 : 0);\n}\n\n#undef write_as_text_part\n\nvoid mutt_generate_boundary (PARAMETER **parm)\n{\n  char rs[MUTT_RANDTAG_LEN + 1];\n\n  mutt_rand_base32(rs, sizeof(rs) - 1);\n  rs[MUTT_RANDTAG_LEN] = 0;\n  mutt_set_parameter (\"boundary\", rs, parm);\n}\n\ntypedef struct\n{\n  int from;\n  int whitespace;\n  int dot;\n  int linelen;\n  int was_cr;\n}\nCONTENT_STATE;\n\n\nstatic void update_content_info (CONTENT *info, CONTENT_STATE *s, char *d, size_t dlen)\n{\n  int from = s->from;\n  int whitespace = s->whitespace;\n  int dot = s->dot;\n  int linelen = s->linelen;\n  int was_cr = s->was_cr;\n\n  if (!d) /* This signals EOF */\n  {\n    if (was_cr)\n      info->binary = 1;\n    if (linelen > info->linemax)\n      info->linemax = linelen;\n\n    return;\n  }\n\n  for (; dlen; d++, dlen--)\n  {\n    char ch = *d;\n\n    if (was_cr)\n    {\n      was_cr = 0;\n      if (ch != '\\n')\n      {\n        info->binary = 1;\n      }\n      else\n      {\n        if (whitespace) info->space = 1;\n\tif (dot) info->dot = 1;\n        if (linelen > info->linemax) info->linemax = linelen;\n        whitespace = 0;\n\tdot = 0;\n        linelen = 0;\n\tcontinue;\n      }\n    }\n\n    linelen++;\n    if (ch == '\\n')\n    {\n      info->crlf++;\n      if (whitespace) info->space = 1;\n      if (dot) info->dot = 1;\n      if (linelen > info->linemax) info->linemax = linelen;\n      whitespace = 0;\n      linelen = 0;\n      dot = 0;\n    }\n    else if (ch == '\\r')\n    {\n      info->crlf++;\n      info->cr = 1;\n      was_cr = 1;\n      continue;\n    }\n    else if (ch & 0x80)\n      info->hibin++;\n    else if (ch == '\\t' || ch == '\\f')\n    {\n      info->ascii++;\n      whitespace++;\n    }\n    else if (ch < 32 || ch == 127)\n      info->lobin++;\n    else\n    {\n      if (linelen == 1)\n      {\n        if ((ch == 'F') || (ch == 'f'))\n          from = 1;\n        else\n          from = 0;\n        if (ch == '.')\n          dot = 1;\n        else\n          dot = 0;\n      }\n      else if (from)\n      {\n        if (linelen == 2 && ch != 'r') from = 0;\n        else if (linelen == 3 && ch != 'o') from = 0;\n        else if (linelen == 4)\n\t{\n          if (ch == 'm') info->from = 1;\n          from = 0;\n        }\n      }\n      if (ch == ' ') whitespace++;\n      info->ascii++;\n    }\n\n    if (linelen > 1) dot = 0;\n    if (ch != ' ' && ch != '\\t') whitespace = 0;\n  }\n\n  s->from = from;\n  s->whitespace = whitespace;\n  s->dot = dot;\n  s->linelen = linelen;\n  s->was_cr = was_cr;\n\n}\n\n/* Define as 1 if iconv sometimes returns -1(EILSEQ) instead of transcribing. */\n#define BUGGY_ICONV 1\n\n/*\n * Find the best charset conversion of the file from fromcode into one\n * of the tocodes. If successful, set *tocode and CONTENT *info and\n * return the number of characters converted inexactly. If no\n * conversion was possible, return -1.\n *\n * We convert via UTF-8 in order to avoid the condition -1(EINVAL),\n * which would otherwise prevent us from knowing the number of inexact\n * conversions. Where the candidate target charset is UTF-8 we avoid\n * doing the second conversion because iconv_open(\"UTF-8\", \"UTF-8\")\n * fails with some libraries.\n *\n * We assume that the output from iconv is never more than 4 times as\n * long as the input for any pair of charsets we might be interested\n * in.\n */\nstatic size_t convert_file_to (FILE *file, const char *fromcode,\n\t\t\t       int ncodes, const char **tocodes,\n\t\t\t       int *tocode, CONTENT *info)\n{\n#ifdef HAVE_ICONV\n  iconv_t cd1, *cd;\n  char bufi[256], bufu[512], bufo[4 * sizeof (bufi)];\n  ICONV_CONST char *ib, *ub;\n  char *ob;\n  size_t ibl, obl, ubl, ubl1, n, ret;\n  int i;\n  CONTENT *infos;\n  CONTENT_STATE *states;\n  size_t *score;\n\n  cd1 = mutt_iconv_open (\"utf-8\", fromcode, 0);\n  if (cd1 == (iconv_t)(-1))\n    return -1;\n\n  cd     = safe_calloc (ncodes, sizeof (iconv_t));\n  score  = safe_calloc (ncodes, sizeof (size_t));\n  states = safe_calloc (ncodes, sizeof (CONTENT_STATE));\n  infos  = safe_calloc (ncodes, sizeof (CONTENT));\n\n  for (i = 0; i < ncodes; i++)\n    if (ascii_strcasecmp (tocodes[i], \"utf-8\"))\n      cd[i] = mutt_iconv_open (tocodes[i], \"utf-8\", 0);\n    else\n      /* Special case for conversion to UTF-8 */\n      cd[i] = (iconv_t)(-1), score[i] = (size_t)(-1);\n\n  rewind (file);\n  ibl = 0;\n  for (;;)\n  {\n\n    /* Try to fill input buffer */\n    n = fread (bufi + ibl, 1, sizeof (bufi) - ibl, file);\n    ibl += n;\n\n    /* Convert to UTF-8 */\n    ib = bufi;\n    ob = bufu, obl = sizeof (bufu);\n    n = iconv (cd1, ibl ? &ib : 0, &ibl, &ob, &obl);\n    assert (n == (size_t)(-1) || !n || ICONV_NONTRANS);\n    if (n == (size_t)(-1) &&\n\t((errno != EINVAL && errno != E2BIG) || ib == bufi))\n    {\n      assert (errno == EILSEQ ||\n\t      (errno == EINVAL && ib == bufi && ibl < sizeof (bufi)));\n      ret = (size_t)(-1);\n      break;\n    }\n    ubl1 = ob - bufu;\n\n    /* Convert from UTF-8 */\n    for (i = 0; i < ncodes; i++)\n      if (cd[i] != (iconv_t)(-1) && score[i] != (size_t)(-1))\n      {\n\tub = bufu, ubl = ubl1;\n\tob = bufo, obl = sizeof (bufo);\n\tn = iconv (cd[i], (ibl || ubl) ? &ub : 0, &ubl, &ob, &obl);\n\tif (n == (size_t)(-1))\n\t{\n\t  assert (errno == E2BIG ||\n\t\t  (BUGGY_ICONV && (errno == EILSEQ || errno == ENOENT)));\n\t  score[i] = (size_t)(-1);\n\t}\n\telse\n\t{\n\t  score[i] += n;\n\t  update_content_info (&infos[i], &states[i], bufo, ob - bufo);\n\t}\n      }\n      else if (cd[i] == (iconv_t)(-1) && score[i] == (size_t)(-1))\n\t/* Special case for conversion to UTF-8 */\n\tupdate_content_info (&infos[i], &states[i], bufu, ubl1);\n\n    if (ibl)\n      /* Save unused input */\n      memmove (bufi, ib, ibl);\n    else if (!ubl1 && ib < bufi + sizeof (bufi))\n    {\n      ret = 0;\n      break;\n    }\n  }\n\n  if (!ret)\n  {\n    /* Find best score */\n    ret = (size_t)(-1);\n    for (i = 0; i < ncodes; i++)\n    {\n      if (cd[i] == (iconv_t)(-1) && score[i] == (size_t)(-1))\n      {\n\t/* Special case for conversion to UTF-8 */\n\t*tocode = i;\n\tret = 0;\n\tbreak;\n      }\n      else if (cd[i] == (iconv_t)(-1) || score[i] == (size_t)(-1))\n\tcontinue;\n      else if (ret == (size_t)(-1) || score[i] < ret)\n      {\n\t*tocode = i;\n\tret = score[i];\n\tif (!ret)\n\t  break;\n      }\n    }\n    if (ret != (size_t)(-1))\n    {\n      memcpy (info, &infos[*tocode], sizeof(CONTENT));\n      update_content_info (info, &states[*tocode], 0, 0); /* EOF */\n    }\n  }\n\n  for (i = 0; i < ncodes; i++)\n    if (cd[i] != (iconv_t)(-1))\n      iconv_close (cd[i]);\n\n  iconv_close (cd1);\n  FREE (&cd);\n  FREE (&infos);\n  FREE (&score);\n  FREE (&states);\n\n  return ret;\n#else\n  return -1;\n#endif /* !HAVE_ICONV */\n}\n\n/*\n * Find the first of the fromcodes that gives a valid conversion and\n * the best charset conversion of the file into one of the tocodes. If\n * successful, set *fromcode and *tocode to dynamically allocated\n * strings, set CONTENT *info, and return the number of characters\n * converted inexactly. If no conversion was possible, return -1.\n *\n * Both fromcodes and tocodes may be colon-separated lists of charsets.\n * However, if fromcode is zero then fromcodes is assumed to be the\n * name of a single charset even if it contains a colon.\n */\nstatic size_t convert_file_from_to (FILE *file,\n\t\t\t\t    const char *fromcodes, const char *tocodes,\n\t\t\t\t    char **fromcode, char **tocode, CONTENT *info)\n{\n  char *fcode = NULL;\n  char **tcode;\n  const char *c, *c1;\n  size_t ret;\n  int ncodes, i, cn;\n\n  /* Count the tocodes */\n  ncodes = 0;\n  for (c = tocodes; c; c = c1 ? c1 + 1 : 0)\n  {\n    if ((c1 = strchr (c, ':')) == c)\n      continue;\n    ++ncodes;\n  }\n\n  /* Copy them */\n  tcode = safe_malloc (ncodes * sizeof (char *));\n  for (c = tocodes, i = 0; c; c = c1 ? c1 + 1 : 0, i++)\n  {\n    if ((c1 = strchr (c, ':')) == c)\n      continue;\n    tcode[i] = mutt_substrdup (c, c1);\n  }\n\n  ret = (size_t)(-1);\n  if (fromcode)\n  {\n    /* Try each fromcode in turn */\n    for (c = fromcodes; c; c = c1 ? c1 + 1 : 0)\n    {\n      if ((c1 = strchr (c, ':')) == c)\n\tcontinue;\n      fcode = mutt_substrdup (c, c1);\n\n      ret = convert_file_to (file, fcode, ncodes, (const char **)tcode,\n\t\t\t     &cn, info);\n      if (ret != (size_t)(-1))\n      {\n\t*fromcode = fcode;\n\t*tocode = tcode[cn];\n\ttcode[cn] = 0;\n\tbreak;\n      }\n      FREE (&fcode);\n    }\n  }\n  else\n  {\n    /* There is only one fromcode */\n    ret = convert_file_to (file, fromcodes, ncodes, (const char **)tcode,\n\t\t\t   &cn, info);\n    if (ret != (size_t)(-1))\n    {\n      *tocode = tcode[cn];\n      tcode[cn] = 0;\n    }\n  }\n\n  /* Free memory */\n  for (i = 0; i < ncodes; i++)\n    FREE (&tcode[i]);\n\n  FREE (&tcode);\n\n  return ret;\n}\n\n/*\n * Analyze the contents of a file to determine which MIME encoding to use.\n * Also set the body charset, sometimes, or not.\n */\nCONTENT *mutt_get_content_info (const char *fname, BODY *b)\n{\n  CONTENT *info;\n  CONTENT_STATE state;\n  FILE *fp = NULL;\n  char *fromcode = NULL;\n  char *tocode;\n  char buffer[100];\n  char chsbuf[STRING];\n  size_t r;\n\n  struct stat sb;\n\n  if(b && !fname) fname = b->filename;\n\n  if (stat (fname, &sb) == -1)\n  {\n    mutt_error (_(\"Can't stat %s: %s\"), fname, strerror (errno));\n    return NULL;\n  }\n\n  if (!S_ISREG(sb.st_mode))\n  {\n    mutt_error (_(\"%s isn't a regular file.\"), fname);\n    return NULL;\n  }\n\n  if ((fp = fopen (fname, \"r\")) == NULL)\n  {\n    dprint (1, (debugfile, \"mutt_get_content_info: %s: %s (errno %d).\\n\",\n\t\tfname, strerror (errno), errno));\n    return (NULL);\n  }\n\n  info = safe_calloc (1, sizeof (CONTENT));\n  memset (&state, 0, sizeof (state));\n\n  if (b != NULL && b->type == TYPETEXT && (!b->noconv && !b->force_charset))\n  {\n    char *chs = mutt_get_parameter (\"charset\", b->parameter);\n    char *fchs = b->use_disp ? ((AttachCharset && *AttachCharset) ?\n                                AttachCharset : Charset) : Charset;\n    if (Charset && (chs || SendCharset) &&\n        convert_file_from_to (fp, fchs, chs ? chs : SendCharset,\n                              &fromcode, &tocode, info) != (size_t)(-1))\n    {\n      if (!chs)\n      {\n\tmutt_canonical_charset (chsbuf, sizeof (chsbuf), tocode);\n\tmutt_set_parameter (\"charset\", chsbuf, &b->parameter);\n      }\n      b->charset = fromcode;\n      FREE (&tocode);\n      safe_fclose (&fp);\n      return info;\n    }\n  }\n\n  rewind (fp);\n  while ((r = fread (buffer, 1, sizeof(buffer), fp)))\n    update_content_info (info, &state, buffer, r);\n  update_content_info (info, &state, 0, 0);\n\n  safe_fclose (&fp);\n\n  if (b != NULL && b->type == TYPETEXT && (!b->noconv && !b->force_charset))\n    mutt_set_parameter (\"charset\", (!info->hibin ? \"us-ascii\" :\n\t\t\t\t    Charset  && !mutt_is_us_ascii (Charset) ? Charset : \"unknown-8bit\"),\n\t\t\t&b->parameter);\n\n  return info;\n}\n\n/* Given a file with path ``s'', see if there is a registered MIME type.\n * returns the major MIME type, and copies the subtype to ``d''.  First look\n * for ~/.mime.types, then look in a system mime.types if we can find one.\n * The longest match is used so that we can match `ps.gz' when `gz' also\n * exists.\n */\n\nint mutt_lookup_mime_type (BODY *att, const char *path)\n{\n  FILE *f;\n  char *p, *q, *ct;\n  char buf[LONG_STRING];\n  char subtype[STRING], xtype[STRING];\n  int count;\n  int szf, sze, cur_sze;\n  int type;\n\n  *subtype = '\\0';\n  *xtype   = '\\0';\n  type     = TYPEOTHER;\n  cur_sze  = 0;\n\n  szf      = mutt_strlen (path);\n\n  for (count = 0 ; count < 3 ; count++)\n  {\n    /*\n     * can't use strtok() because we use it in an inner loop below, so use\n     * a switch statement here instead.\n     */\n    switch (count)\n    {\n      case 0:\n\tsnprintf (buf, sizeof (buf), \"%s/.mime.types\", NONULL(Homedir));\n\tbreak;\n      case 1:\n\tstrfcpy (buf, SYSCONFDIR\"/mime.types\", sizeof(buf));\n\tbreak;\n      case 2:\n\tstrfcpy (buf, PKGDATADIR\"/mime.types\", sizeof (buf));\n\tbreak;\n      default:\n        dprint (1, (debugfile, \"mutt_lookup_mime_type: Internal error, count = %d.\\n\", count));\n\tgoto bye;\t/* shouldn't happen */\n    }\n\n    if ((f = fopen (buf, \"r\")) != NULL)\n    {\n      while (fgets (buf, sizeof (buf) - 1, f) != NULL)\n      {\n\t/* weed out any comments */\n\tif ((p = strchr (buf, '#')))\n\t  *p = 0;\n\n\t/* remove any leading space. */\n\tct = buf;\n\tSKIPWS (ct);\n\n\t/* position on the next field in this line */\n\tif ((p = strpbrk (ct, \" \\t\")) == NULL)\n\t  continue;\n\t*p++ = 0;\n\tSKIPWS (p);\n\n\t/* cycle through the file extensions */\n\twhile ((p = strtok (p, \" \\t\\n\")))\n\t{\n\t  sze = mutt_strlen (p);\n\t  if ((sze > cur_sze) && (szf >= sze) &&\n\t      (mutt_strcasecmp (path + szf - sze, p) == 0 || ascii_strcasecmp (path + szf - sze, p) == 0) &&\n\t      (szf == sze || path[szf - sze - 1] == '.'))\n\t  {\n\t    /* get the content-type */\n\n\t    if ((p = strchr (ct, '/')) == NULL)\n\t    {\n\t      /* malformed line, just skip it. */\n\t      break;\n\t    }\n\t    *p++ = 0;\n\n\t    for (q = p; *q && !ISSPACE (*q); q++)\n\t      ;\n\n\t    mutt_substrcpy (subtype, p, q, sizeof (subtype));\n\n\t    if ((type = mutt_check_mime_type (ct)) == TYPEOTHER)\n\t      strfcpy (xtype, ct, sizeof (xtype));\n\n\t    cur_sze = sze;\n\t  }\n\t  p = NULL;\n\t}\n      }\n      safe_fclose (&f);\n    }\n  }\n\n bye:\n\n  if (type != TYPEOTHER || *xtype != '\\0')\n  {\n    att->type = type;\n    mutt_str_replace (&att->subtype, subtype);\n    mutt_str_replace (&att->xtype, xtype);\n  }\n\n  return (type);\n}\n\nvoid mutt_message_to_7bit (BODY *a, FILE *fp)\n{\n  char temp[_POSIX_PATH_MAX];\n  char *line = NULL;\n  FILE *fpin = NULL;\n  FILE *fpout = NULL;\n  struct stat sb;\n\n  if (!a->filename && fp)\n    fpin = fp;\n  else if (!a->filename || !(fpin = fopen (a->filename, \"r\")))\n  {\n    mutt_error (_(\"Could not open %s\"), a->filename ? a->filename : \"(null)\");\n    return;\n  }\n  else\n  {\n    a->offset = 0;\n    if (stat (a->filename, &sb) == -1)\n    {\n      mutt_perror (\"stat\");\n      safe_fclose (&fpin);\n    }\n    a->length = sb.st_size;\n  }\n\n  mutt_mktemp (temp, sizeof (temp));\n  if (!(fpout = safe_fopen (temp, \"w+\")))\n  {\n    mutt_perror (\"fopen\");\n    goto cleanup;\n  }\n\n  fseeko (fpin, a->offset, 0);\n  a->parts = mutt_parse_messageRFC822 (fpin, a);\n\n  transform_to_7bit (a->parts, fpin);\n\n  mutt_copy_hdr (fpin, fpout, a->offset, a->offset + a->length,\n\t\t CH_MIME | CH_NONEWLINE | CH_XMIT, NULL);\n\n  fputs (\"MIME-Version: 1.0\\n\", fpout);\n  mutt_write_mime_header (a->parts, fpout);\n  fputc ('\\n', fpout);\n  mutt_write_mime_body (a->parts, fpout);\n\n cleanup:\n  FREE (&line);\n\n  if (fpin && fpin != fp)\n    safe_fclose (&fpin);\n  if (fpout)\n    safe_fclose (&fpout);\n  else\n    return;\n\n  a->encoding = ENC7BIT;\n  a->d_filename = a->filename;\n  if (a->filename && a->unlink)\n    unlink (a->filename);\n  a->filename = safe_strdup (temp);\n  a->unlink = 1;\n  if(stat (a->filename, &sb) == -1)\n  {\n    mutt_perror (\"stat\");\n    return;\n  }\n  a->length = sb.st_size;\n  mutt_free_body (&a->parts);\n  a->hdr->content = NULL;\n}\n\nstatic void transform_to_7bit (BODY *a, FILE *fpin)\n{\n  char buff[_POSIX_PATH_MAX];\n  STATE s;\n  struct stat sb;\n\n  memset (&s, 0, sizeof (s));\n  for (; a; a = a->next)\n  {\n    if (a->type == TYPEMULTIPART)\n    {\n      if (a->encoding != ENC7BIT)\n\ta->encoding = ENC7BIT;\n\n      transform_to_7bit (a->parts, fpin);\n    }\n    else if (mutt_is_message_type(a->type, a->subtype))\n    {\n      mutt_message_to_7bit (a, fpin);\n    }\n    else\n    {\n      a->noconv = 1;\n      a->force_charset = 1;\n\n      mutt_mktemp (buff, sizeof (buff));\n      if ((s.fpout = safe_fopen (buff, \"w\")) == NULL)\n      {\n\tmutt_perror (\"fopen\");\n\treturn;\n      }\n      s.fpin = fpin;\n      mutt_decode_attachment (a, &s);\n      safe_fclose (&s.fpout);\n      a->d_filename = a->filename;\n      a->filename = safe_strdup (buff);\n      a->unlink = 1;\n      if (stat (a->filename, &sb) == -1)\n      {\n\tmutt_perror (\"stat\");\n\treturn;\n      }\n      a->length = sb.st_size;\n\n      mutt_update_encoding (a);\n      if (a->encoding == ENC8BIT)\n\ta->encoding = ENCQUOTEDPRINTABLE;\n      else if(a->encoding == ENCBINARY)\n\ta->encoding = ENCBASE64;\n    }\n  }\n}\n\n/* determine which Content-Transfer-Encoding to use */\nstatic void mutt_set_encoding (BODY *b, CONTENT *info)\n{\n  char send_charset[SHORT_STRING];\n\n  if (b->type == TYPETEXT)\n  {\n    char *chsname = mutt_get_body_charset (send_charset, sizeof (send_charset), b);\n    if ((info->lobin && ascii_strncasecmp (chsname, \"iso-2022\", 8)) || info->linemax > 990 || (info->from && option (OPTENCODEFROM)))\n      b->encoding = ENCQUOTEDPRINTABLE;\n    else if (info->hibin)\n      b->encoding = option (OPTALLOW8BIT) ? ENC8BIT : ENCQUOTEDPRINTABLE;\n    else\n      b->encoding = ENC7BIT;\n  }\n  else if (b->type == TYPEMESSAGE || b->type == TYPEMULTIPART)\n  {\n    if (info->lobin || info->hibin)\n    {\n      if (option (OPTALLOW8BIT) && !info->lobin)\n\tb->encoding = ENC8BIT;\n      else\n\tmutt_message_to_7bit (b, NULL);\n    }\n    else\n      b->encoding = ENC7BIT;\n  }\n  else if (b->type == TYPEAPPLICATION && ascii_strcasecmp (b->subtype, \"pgp-keys\") == 0)\n    b->encoding = ENC7BIT;\n  else\n#if 0\n    if (info->lobin || info->hibin || info->binary || info->linemax > 990\n\t   || info->cr || (/* option (OPTENCODEFROM) && */ info->from))\n#endif\n  {\n    /* Determine which encoding is smaller  */\n    if (1.33 * (float)(info->lobin+info->hibin+info->ascii) <\n\t 3.0 * (float)(info->lobin + info->hibin) + (float)info->ascii)\n      b->encoding = ENCBASE64;\n    else\n      b->encoding = ENCQUOTEDPRINTABLE;\n  }\n#if 0\n  else\n    b->encoding = ENC7BIT;\n#endif\n}\n\nvoid mutt_stamp_attachment(BODY *a)\n{\n  a->stamp = time(NULL);\n}\n\n/* Get a body's character set */\n\nchar *mutt_get_body_charset (char *d, size_t dlen, BODY *b)\n{\n  char *p = NULL;\n\n  if (b && b->type != TYPETEXT)\n    return NULL;\n\n  if (b)\n    p = mutt_get_parameter (\"charset\", b->parameter);\n\n  if (p)\n    mutt_canonical_charset (d, dlen, NONULL(p));\n  else\n    strfcpy (d, \"us-ascii\", dlen);\n\n  return d;\n}\n\n\n/* Assumes called from send mode where BODY->filename points to actual file */\nvoid mutt_update_encoding (BODY *a)\n{\n  CONTENT *info;\n  char chsbuff[STRING];\n\n  /* override noconv when it's us-ascii */\n  if (mutt_is_us_ascii (mutt_get_body_charset (chsbuff, sizeof (chsbuff), a)))\n    a->noconv = 0;\n\n  if (!a->force_charset && !a->noconv)\n    mutt_delete_parameter (\"charset\", &a->parameter);\n\n  if ((info = mutt_get_content_info (a->filename, a)) == NULL)\n    return;\n\n  mutt_set_encoding (a, info);\n  mutt_stamp_attachment(a);\n\n  FREE (&a->content);\n  a->content = info;\n\n}\n\nBODY *mutt_make_message_attach (CONTEXT *ctx, HEADER *hdr, int attach_msg)\n{\n  char buffer[LONG_STRING];\n  BODY *body;\n  FILE *fp;\n  int cmflags, chflags;\n  int pgp = WithCrypto? hdr->security : 0;\n\n  if (WithCrypto)\n  {\n    if ((option(OPTMIMEFORWDECODE) || option(OPTFORWDECRYPT)) &&\n        (hdr->security & ENCRYPT)) {\n      if (!crypt_valid_passphrase(hdr->security))\n        return (NULL);\n    }\n  }\n\n  mutt_mktemp (buffer, sizeof (buffer));\n  if ((fp = safe_fopen (buffer, \"w+\")) == NULL)\n    return NULL;\n\n  body = mutt_new_body ();\n  body->type = TYPEMESSAGE;\n  body->subtype = safe_strdup (\"rfc822\");\n  body->filename = safe_strdup (buffer);\n  body->unlink = 1;\n  body->use_disp = 0;\n  body->disposition = DISPINLINE;\n  body->noconv = 1;\n\n  mutt_parse_mime_message (ctx, hdr);\n\n  chflags = CH_XMIT;\n  cmflags = 0;\n\n  /* If we are attaching a message, ignore OPTMIMEFORWDECODE */\n  if (!attach_msg && option (OPTMIMEFORWDECODE))\n  {\n    chflags |= CH_MIME | CH_TXTPLAIN;\n    cmflags = M_CM_DECODE | M_CM_CHARCONV;\n    if ((WithCrypto & APPLICATION_PGP))\n      pgp &= ~PGPENCRYPT;\n    if ((WithCrypto & APPLICATION_SMIME))\n      pgp &= ~SMIMEENCRYPT;\n  }\n  else if (WithCrypto\n           && option (OPTFORWDECRYPT) && (hdr->security & ENCRYPT))\n  {\n    if ((WithCrypto & APPLICATION_PGP)\n        && mutt_is_multipart_encrypted (hdr->content))\n    {\n      chflags |= CH_MIME | CH_NONEWLINE;\n      cmflags = M_CM_DECODE_PGP;\n      pgp &= ~PGPENCRYPT;\n    }\n    else if ((WithCrypto & APPLICATION_PGP)\n             && (mutt_is_application_pgp (hdr->content) & PGPENCRYPT))\n    {\n      chflags |= CH_MIME | CH_TXTPLAIN;\n      cmflags = M_CM_DECODE | M_CM_CHARCONV;\n      pgp &= ~PGPENCRYPT;\n    }\n    else if ((WithCrypto & APPLICATION_SMIME)\n              && mutt_is_application_smime (hdr->content) & SMIMEENCRYPT)\n    {\n      chflags |= CH_MIME | CH_TXTPLAIN;\n      cmflags = M_CM_DECODE | M_CM_CHARCONV;\n      pgp &= ~SMIMEENCRYPT;\n    }\n  }\n\n  mutt_copy_message (fp, ctx, hdr, cmflags, chflags);\n\n  fflush(fp);\n  rewind(fp);\n\n  body->hdr = mutt_new_header();\n  body->hdr->offset = 0;\n  /* we don't need the user headers here */\n  body->hdr->env = mutt_read_rfc822_header(fp, body->hdr, 0, 0);\n  if (WithCrypto)\n    body->hdr->security = pgp;\n  mutt_update_encoding (body);\n  body->parts = body->hdr->content;\n\n  safe_fclose (&fp);\n\n  return (body);\n}\n\nBODY *mutt_make_file_attach (const char *path)\n{\n  BODY *att;\n  CONTENT *info;\n\n  att = mutt_new_body ();\n  att->filename = safe_strdup (path);\n\n  /* Attempt to determine the appropriate content-type based on the filename\n   * suffix.\n   */\n\n#if 0\n\n  if ((n = mutt_lookup_mime_type (buf, sizeof (buf), xbuf, sizeof (xbuf), path)) != TYPEOTHER\n      || *xbuf != '\\0')\n  {\n    att->type = n;\n    att->subtype = safe_strdup (buf);\n    att->xtype = safe_strdup (xbuf);\n  }\n\n#else\n\n  mutt_lookup_mime_type (att, path);\n\n#endif\n\n  if ((info = mutt_get_content_info (path, att)) == NULL)\n  {\n    mutt_free_body (&att);\n    return NULL;\n  }\n\n  if (!att->subtype)\n  {\n    if (info->lobin == 0 || (info->lobin + info->hibin + info->ascii)/ info->lobin >= 10)\n    {\n      /*\n       * Statistically speaking, there should be more than 10% \"lobin\"\n       * chars if this is really a binary file...\n       */\n      att->type = TYPETEXT;\n      att->subtype = safe_strdup (\"plain\");\n    }\n    else\n    {\n      att->type = TYPEAPPLICATION;\n      att->subtype = safe_strdup (\"octet-stream\");\n    }\n  }\n\n  FREE(&info);\n  mutt_update_encoding (att);\n  return (att);\n}\n\nstatic int get_toplevel_encoding (BODY *a)\n{\n  int e = ENC7BIT;\n\n  for (; a; a = a->next)\n  {\n    if (a->encoding == ENCBINARY)\n      return (ENCBINARY);\n    else if (a->encoding == ENC8BIT)\n      e = ENC8BIT;\n  }\n\n  return (e);\n}\n\n/* check for duplicate boundary. return 1 if duplicate */\nstatic int mutt_check_boundary (const char* boundary, BODY *b)\n{\n  char* p;\n\n  if (b->parts && mutt_check_boundary (boundary, b->parts))\n    return 1;\n\n  if (b->next && mutt_check_boundary (boundary, b->next))\n    return 1;\n\n  if ((p = mutt_get_parameter (\"boundary\", b->parameter))\n      && !ascii_strcmp (p, boundary))\n    return 1;\n  return 0;\n}\n\nBODY *mutt_make_multipart (BODY *b)\n{\n  BODY *new;\n\n  new = mutt_new_body ();\n  new->type = TYPEMULTIPART;\n  new->subtype = safe_strdup (\"mixed\");\n  new->encoding = get_toplevel_encoding (b);\n  do\n  {\n    mutt_generate_boundary (&new->parameter);\n    if (mutt_check_boundary (mutt_get_parameter (\"boundary\", new->parameter),\n\t\t\t     b))\n      mutt_delete_parameter (\"boundary\", &new->parameter);\n  }\n  while (!mutt_get_parameter (\"boundary\", new->parameter));\n  new->use_disp = 0;\n  new->disposition = DISPINLINE;\n  new->parts = b;\n\n  return new;\n}\n\n/* remove the multipart body if it exists */\nBODY *mutt_remove_multipart (BODY *b)\n{\n  BODY *t;\n\n  if (b->parts)\n  {\n    t = b;\n    b = b->parts;\n    t->parts = NULL;\n    mutt_free_body (&t);\n  }\n  return b;\n}\n\nchar *mutt_make_date (char *s, size_t len)\n{\n  time_t t = time (NULL);\n  struct tm *l = localtime (&t);\n  time_t tz = mutt_local_tz (t);\n\n  tz /= 60;\n\n  snprintf (s, len,  \"Date: %s, %d %s %d %02d:%02d:%02d %+03d%02d\\n\",\n\t    Weekdays[l->tm_wday], l->tm_mday, Months[l->tm_mon],\n\t    l->tm_year + 1900, l->tm_hour, l->tm_min, l->tm_sec,\n\t    (int) tz / 60, (int) abs ((int) tz) % 60);\n  return (s);\n}\n\n/* wrapper around mutt_write_address() so we can handle very large\n   recipient lists without needing a huge temporary buffer in memory */\nvoid mutt_write_address_list (ADDRESS *adr, FILE *fp, int linelen, int display)\n{\n  ADDRESS *tmp;\n  char buf[LONG_STRING];\n  int count = 0;\n  int len;\n\n  while (adr)\n  {\n    tmp = adr->next;\n    adr->next = NULL;\n    buf[0] = 0;\n    rfc822_write_address (buf, sizeof (buf), adr, display);\n    len = mutt_strlen (buf);\n    if (count && linelen + len > 74)\n    {\n      fputs (\"\\n\\t\", fp);\n      linelen = len + 8; /* tab is usually about 8 spaces... */\n    }\n    else\n    {\n      if (count && adr->mailbox)\n      {\n\tfputc (' ', fp);\n\tlinelen++;\n      }\n      linelen += len;\n    }\n    fputs (buf, fp);\n    adr->next = tmp;\n    if (!adr->group && adr->next && adr->next->mailbox)\n    {\n      linelen++;\n      fputc (',', fp);\n    }\n    adr = adr->next;\n    count++;\n  }\n  fputc ('\\n', fp);\n}\n\n/* arbitrary number of elements to grow the array by */\n#define REF_INC 16\n\n/* need to write the list in reverse because they are stored in reverse order\n * when parsed to speed up threading\n */\nvoid mutt_write_references (LIST *r, FILE *f, int trim)\n{\n  LIST **ref = NULL;\n  int refcnt = 0, refmax = 0;\n\n  for ( ; (trim == 0 || refcnt < trim) && r ; r = r->next)\n  {\n    if (refcnt == refmax)\n      safe_realloc (&ref, (refmax += REF_INC) * sizeof (LIST *));\n    ref[refcnt++] = r;\n  }\n\n  while (refcnt-- > 0)\n  {\n    fputc (' ', f);\n    fputs (ref[refcnt]->data, f);\n    if (refcnt >= 1)\n      fputc ('\\n', f);\n  }\n\n  FREE (&ref);\n}\n\nstatic const char *find_word (const char *src)\n{\n  const char *p = src;\n\n  while (p && *p && strchr (\" \\t\\n\", *p))\n    p++;\n  while (p && *p && !strchr (\" \\t\\n\", *p))\n    p++;\n  return p;\n}\n\n/* like wcwidth(), but gets const char* not wchar_t* */\nstatic int my_width (const char *str, int col, int flags)\n{\n  wchar_t wc;\n  int l, w = 0, nl = 0;\n  const char *p = str;\n\n  while (p && *p)\n  {\n    if (mbtowc (&wc, p, MB_CUR_MAX) >= 0)\n    {\n      l = wcwidth (wc);\n      if (l < 0)\n\tl = 1;\n      /* correctly calc tab stop, even for sending as the\n       * line should look pretty on the receiving end */\n      if (wc == L'\\t' || (nl && wc == L' '))\n      {\n\tnl = 0;\n\tl = 8 - (col % 8);\n      }\n      /* track newlines for display-case: if we have a space\n       * after a newline, assume 8 spaces as for display we\n       * always tab-fold */\n      else if ((flags & CH_DISPLAY) && wc == '\\n')\n\tnl = 1;\n    }\n    else\n      l = 1;\n    w += l;\n    p++;\n  }\n  return w;\n}\n\nstatic int print_val (FILE *fp, const char *pfx, const char *value,\n\t\t      int flags, size_t col)\n{\n  while (value && *value)\n  {\n    if (fputc (*value, fp) == EOF)\n      return -1;\n    /* corner-case: break words longer than 998 chars by force,\n     * mandated by RfC5322 */\n    if (!(flags & CH_DISPLAY) && ++col >= 998)\n    {\n      if (fputs (\"\\n \", fp) < 0)\n\treturn -1;\n      col = 1;\n    }\n    if (*value == '\\n')\n    {\n      if (*(value + 1) && pfx && *pfx && fputs (pfx, fp) == EOF)\n\treturn -1;\n      /* for display, turn folding spaces into folding tabs */\n      if ((flags & CH_DISPLAY) && (*(value + 1) == ' ' || *(value + 1) == '\\t'))\n      {\n\tvalue++;\n\twhile (*value && (*value == ' ' || *value == '\\t'))\n\t  value++;\n\tif (fputc ('\\t', fp) == EOF)\n\t  return -1;\n\tcontinue;\n      }\n    }\n    value++;\n  }\n  return 0;\n}\n\nstatic int fold_one_header (FILE *fp, const char *tag, const char *value,\n\t\t\t      const char *pfx, int wraplen, int flags)\n{\n  const char *p = value, *next, *sp;\n  char buf[HUGE_STRING] = \"\";\n  int first = 1, enc, col = 0, w, l = 0, fold;\n\n  dprint(4,(debugfile,\"mwoh: pfx=[%s], tag=[%s], flags=%d value=[%s]\\n\",\n\t    pfx, tag, flags, value));\n\n  if (tag && *tag && fprintf (fp, \"%s%s: \", NONULL (pfx), tag) < 0)\n    return -1;\n  col = mutt_strlen (tag) + (tag && *tag ? 2 : 0) + mutt_strlen (pfx);\n\n  while (p && *p)\n  {\n    fold = 0;\n\n    /* find the next word and place it in `buf'. it may start with\n     * whitespace we can fold before */\n    next = find_word (p);\n    l = MIN(sizeof (buf) - 1, next - p);\n    memcpy (buf, p, l);\n    buf[l] = 0;\n\n    /* determine width: character cells for display, bytes for sending\n     * (we get pure ascii only) */\n    w = my_width (buf, col, flags);\n    enc = mutt_strncmp (buf, \"=?\", 2) == 0;\n\n    dprint(5,(debugfile,\"mwoh: word=[%s], col=%d, w=%d, next=[0x0%x]\\n\",\n\t      buf, col, w, *next));\n\n    /* insert a folding \\n before the current word's lwsp except for\n     * header name, first word on a line (word longer than wrap width)\n     * and encoded words */\n    if (!first && !enc && col && col + w >= wraplen)\n    {\n      col = mutt_strlen (pfx);\n      fold = 1;\n      if (fprintf (fp, \"\\n%s\", NONULL(pfx)) <= 0)\n\treturn -1;\n    }\n\n    /* print the actual word; for display, ignore leading ws for word\n     * and fold with tab for readability */\n    if ((flags & CH_DISPLAY) && fold)\n    {\n      char *p = buf;\n      while (*p && (*p == ' ' || *p == '\\t'))\n      {\n\tp++;\n\tcol--;\n      }\n      if (fputc ('\\t', fp) == EOF)\n\treturn -1;\n      if (print_val (fp, pfx, p, flags, col) < 0)\n\treturn -1;\n      col += 8;\n    }\n    else if (print_val (fp, pfx, buf, flags, col) < 0)\n      return -1;\n    col += w;\n\n    /* if the current word ends in \\n, ignore all its trailing spaces\n     * and reset column; this prevents us from putting only spaces (or\n     * even none) on a line if the trailing spaces are located at our\n     * current line width\n     * XXX this covers ASCII space only, for display we probably\n     * XXX want something like iswspace() here */\n    sp = next;\n    while (*sp && (*sp == ' ' || *sp == '\\t'))\n      sp++;\n    if (*sp == '\\n')\n    {\n      next = sp;\n      col = 0;\n    }\n\n    p = next;\n    first = 0;\n  }\n\n  /* if we have printed something but didn't \\n-terminate it, do it\n   * except the last word we printed ended in \\n already */\n  if (col && (l == 0 || buf[l - 1] != '\\n'))\n    if (putc ('\\n', fp) == EOF)\n      return -1;\n\n  return 0;\n}\n\nstatic char *unfold_header (char *s)\n{\n  char *p = s, *q = s;\n\n  while (p && *p)\n  {\n    /* remove CRLF prior to FWSP, turn \\t into ' ' */\n    if (*p == '\\r' && *(p + 1) && *(p + 1) == '\\n' && *(p + 2) &&\n\t(*(p + 2) == ' ' || *(p + 2) == '\\t'))\n    {\n      *q++ = ' ';\n      p += 3;\n      continue;\n    }\n    /* remove LF prior to FWSP, turn \\t into ' ' */\n    else if (*p == '\\n' && *(p + 1) && (*(p + 1) == ' ' || *(p + 1) == '\\t'))\n    {\n      *q++ = ' ';\n      p += 2;\n      continue;\n    }\n    *q++ = *p++;\n  }\n  if (q)\n    *q = 0;\n\n  return s;\n}\n\nstatic int write_one_header (FILE *fp, int pfxw, int max, int wraplen,\n\t\t\t     const char *pfx, const char *start, const char *end,\n\t\t\t     int flags)\n{\n  char *tagbuf, *valbuf, *t;\n  int is_from = ((end - start) > 5 &&\n\t\t ascii_strncasecmp (start, \"from \", 5) == 0);\n\n  /* only pass through folding machinery if necessary for sending,\n     never wrap From_ headers on sending */\n  if (!(flags & CH_DISPLAY) && (pfxw + max <= wraplen || is_from))\n  {\n    valbuf = mutt_substrdup (start, end);\n    dprint(4,(debugfile,\"mwoh: buf[%s%s] short enough, \"\n\t      \"max width = %d <= %d\\n\",\n\t      NONULL(pfx), valbuf, max, wraplen));\n    if (pfx && *pfx)\n      if (fputs (pfx, fp) == EOF)\n\treturn -1;\n    if (!(t = strchr (valbuf, ':')))\n    {\n      dprint (1, (debugfile, \"mwoh: warning: header not in \"\n\t\t  \"'key: value' format!\\n\"));\n      return 0;\n    }\n    if (print_val (fp, pfx, valbuf, flags, mutt_strlen (pfx)) < 0)\n    {\n      FREE(&valbuf);\n      return -1;\n    }\n    FREE(&valbuf);\n  }\n  else\n  {\n    t = strchr (start, ':');\n    if (!t || t > end)\n    {\n      dprint (1, (debugfile, \"mwoh: warning: header not in \"\n\t\t  \"'key: value' format!\\n\"));\n      return 0;\n    }\n    if (is_from)\n    {\n      tagbuf = NULL;\n      valbuf = mutt_substrdup (start, end);\n    }\n    else\n    {\n      tagbuf = mutt_substrdup (start, t);\n      /* skip over the colon separating the header field name and value */\n      ++t;\n\n      /* skip over any leading whitespace (WSP, as defined in RFC5322)\n       * NOTE: skip_email_wsp() does the wrong thing here.\n       *       See tickets 3609 and 3716. */\n      while (*t == ' ' || *t == '\\t')\n        t++;\n\n      valbuf = mutt_substrdup (t, end);\n    }\n    dprint(4,(debugfile,\"mwoh: buf[%s%s] too long, \"\n\t      \"max width = %d > %d\\n\",\n\t      NONULL(pfx), valbuf, max, wraplen));\n    if (fold_one_header (fp, tagbuf, valbuf, pfx, wraplen, flags) < 0)\n      return -1;\n    FREE (&tagbuf);\n    FREE (&valbuf);\n  }\n  return 0;\n}\n\n/* split several headers into individual ones and call write_one_header\n * for each one */\nint mutt_write_one_header (FILE *fp, const char *tag, const char *value,\n\t\t\t   const char *pfx, int wraplen, int flags)\n{\n  char *p = (char *)value, *last, *line;\n  int max = 0, w, rc = -1;\n  int pfxw = mutt_strwidth (pfx);\n  char *v = safe_strdup (value);\n\n  if (!(flags & CH_DISPLAY) || option (OPTWEED))\n    v = unfold_header (v);\n\n  /* when not displaying, use sane wrap value */\n  if (!(flags & CH_DISPLAY))\n  {\n    if (WrapHeaders < 78 || WrapHeaders > 998)\n      wraplen = 78;\n    else\n      wraplen = WrapHeaders;\n  }\n  else if (wraplen <= 0 || wraplen > COLS)\n    wraplen = COLS;\n\n  if (tag)\n  {\n    /* if header is short enough, simply print it */\n    if (!(flags & CH_DISPLAY) && mutt_strwidth (tag) + 2 + pfxw +\n\tmutt_strwidth (v) <= wraplen)\n    {\n      dprint(4,(debugfile,\"mwoh: buf[%s%s: %s] is short enough\\n\",\n\t\tNONULL(pfx), tag, v));\n      if (fprintf (fp, \"%s%s: %s\\n\", NONULL(pfx), tag, v) <= 0)\n\tgoto out;\n      rc = 0;\n      goto out;\n    }\n    else\n    {\n      rc = fold_one_header (fp, tag, v, pfx, wraplen, flags);\n      goto out;\n    }\n  }\n\n  p = last = line = (char *)v;\n  while (p && *p)\n  {\n    p = strchr (p, '\\n');\n\n    /* find maximum line width in current header */\n    if (p)\n      *p = 0;\n    if ((w = my_width (line, 0, flags)) > max)\n      max = w;\n    if (p)\n      *p = '\\n';\n\n    if (!p)\n      break;\n\n    line = ++p;\n    if (*p != ' ' && *p != '\\t')\n    {\n      if (write_one_header (fp, pfxw, max, wraplen, pfx, last, p, flags) < 0)\n\tgoto out;\n      last = p;\n      max = 0;\n    }\n  }\n\n  if (last && *last)\n    if (write_one_header (fp, pfxw, max, wraplen, pfx, last, p, flags) < 0)\n      goto out;\n\n  rc = 0;\n\nout:\n  FREE (&v);\n  return rc;\n}\n\n\n/* Note: all RFC2047 encoding should be done outside of this routine, except\n * for the \"real name.\"  This will allow this routine to be used more than\n * once, if necessary.\n *\n * Likewise, all IDN processing should happen outside of this routine.\n *\n * mode == 1  => \"lite\" mode (used for edit_hdrs)\n * mode == 0  => normal mode.  write full header + MIME headers\n * mode == -1 => write just the envelope info (used for postponing messages)\n *\n * privacy != 0 => will omit any headers which may identify the user.\n *               Output generated is suitable for being sent through\n * \t\t anonymous remailer chains.\n *\n */\n\n\n\nint mutt_write_rfc822_header (FILE *fp, ENVELOPE *env, BODY *attach,\n\t\t\t      int mode, int privacy)\n{\n  char buffer[LONG_STRING];\n  char *p, *q;\n  LIST *tmp = env->userhdrs;\n  int has_agent = 0; /* user defined user-agent header field exists */\n\n  if (mode == 0 && !privacy)\n    fputs (mutt_make_date (buffer, sizeof(buffer)), fp);\n\n  /* OPTUSEFROM is not consulted here so that we can still write a From:\n   * field if the user sets it with the `my_hdr' command\n   */\n  if (env->from && !privacy)\n  {\n    buffer[0] = 0;\n    rfc822_write_address (buffer, sizeof (buffer), env->from, 0);\n    fprintf (fp, \"From: %s\\n\", buffer);\n  }\n\n  if (env->sender && !privacy)\n  {\n    buffer[0] = 0;\n    rfc822_write_address (buffer, sizeof (buffer), env->sender, 0);\n    fprintf (fp, \"Sender: %s\\n\", buffer);\n  }\n\n  if (env->to)\n  {\n    fputs (\"To: \", fp);\n    mutt_write_address_list (env->to, fp, 4, 0);\n  }\n  else if (mode > 0)\n    fputs (\"To: \\n\", fp);\n\n  if (env->cc)\n  {\n    fputs (\"Cc: \", fp);\n    mutt_write_address_list (env->cc, fp, 4, 0);\n  }\n  else if (mode > 0)\n    fputs (\"Cc: \\n\", fp);\n\n  if (env->bcc)\n  {\n    if(mode != 0 || option(OPTWRITEBCC))\n    {\n      fputs (\"Bcc: \", fp);\n      mutt_write_address_list (env->bcc, fp, 5, 0);\n    }\n  }\n  else if (mode > 0)\n    fputs (\"Bcc: \\n\", fp);\n\n  if (env->subject)\n    mutt_write_one_header (fp, \"Subject\", env->subject, NULL, 0, 0);\n  else if (mode == 1)\n    fputs (\"Subject: \\n\", fp);\n\n  /* save message id if the user has set it */\n  if (env->message_id && !privacy)\n    fprintf (fp, \"Message-ID: %s\\n\", env->message_id);\n\n  if (env->reply_to)\n  {\n    fputs (\"Reply-To: \", fp);\n    mutt_write_address_list (env->reply_to, fp, 10, 0);\n  }\n  else if (mode > 0)\n    fputs (\"Reply-To: \\n\", fp);\n\n  if (env->mail_followup_to)\n  {\n    fputs (\"Mail-Followup-To: \", fp);\n    mutt_write_address_list (env->mail_followup_to, fp, 18, 0);\n  }\n\n  if (mode <= 0)\n  {\n    if (env->references)\n    {\n      fputs (\"References:\", fp);\n      mutt_write_references (env->references, fp, 10);\n      fputc('\\n', fp);\n    }\n\n    /* Add the MIME headers */\n    fputs (\"MIME-Version: 1.0\\n\", fp);\n    mutt_write_mime_header (attach, fp);\n  }\n\n  if (env->in_reply_to)\n  {\n    fputs (\"In-Reply-To:\", fp);\n    mutt_write_references (env->in_reply_to, fp, 0);\n    fputc ('\\n', fp);\n  }\n\n  /* Add any user defined headers */\n  for (; tmp; tmp = tmp->next)\n  {\n    if ((p = strchr (tmp->data, ':')))\n    {\n      q = p;\n\n      *p = '\\0';\n\n      p = skip_email_wsp(p + 1);\n      if (!*p)\n      {\n\t*q = ':';\n\tcontinue;  /* don't emit empty fields. */\n      }\n\n      /* check to see if the user has overridden the user-agent field */\n      if (!ascii_strncasecmp (\"user-agent\", tmp->data, 10))\n      {\n\thas_agent = 1;\n\tif (privacy)\n\t{\n\t  *q = ':';\n\t  continue;\n\t}\n      }\n\n      mutt_write_one_header (fp, tmp->data, p, NULL, 0, 0);\n      *q = ':';\n    }\n  }\n\n  if (mode == 0 && !privacy && option (OPTXMAILER) && !has_agent)\n  {\n    /* Add a vanity header */\n    fprintf (fp, \"User-Agent: Mutt/%s (%s)\\n\", MUTT_VERSION, ReleaseDate);\n  }\n\n  return (ferror (fp) == 0 ? 0 : -1);\n}\n\nstatic void encode_headers (LIST *h)\n{\n  char *tmp;\n  char *p;\n  int i;\n\n  for (; h; h = h->next)\n  {\n    if (!(p = strchr (h->data, ':')))\n      continue;\n\n    i = p - h->data;\n    p = skip_email_wsp(p + 1);\n    tmp = safe_strdup (p);\n\n    if (!tmp)\n      continue;\n\n    rfc2047_encode_string (&tmp);\n    safe_realloc (&h->data, mutt_strlen (h->data) + 2 + mutt_strlen (tmp) + 1);\n\n    sprintf (h->data + i, \": %s\", NONULL (tmp));  /* __SPRINTF_CHECKED__ */\n\n    FREE (&tmp);\n  }\n}\n\nconst char *mutt_fqdn(short may_hide_host)\n{\n  char *p = NULL;\n\n  if(Fqdn && Fqdn[0] != '@')\n  {\n    p = Fqdn;\n\n    if(may_hide_host && option(OPTHIDDENHOST))\n    {\n      if((p = strchr(Fqdn, '.')))\n\tp++;\n\n      /* sanity check: don't hide the host if\n       * the fqdn is something like detebe.org.\n       */\n\n      if(!p || !strchr(p, '.'))\n\tp = Fqdn;\n    }\n  }\n\n  return p;\n}\n\nchar *mutt_gen_msgid (void)\n{\n  char buf[SHORT_STRING];\n  time_t now;\n  struct tm *tm;\n  const char *fqdn;\n  unsigned char rndid[MUTT_RANDTAG_LEN + 1];\n\n  mutt_rand_base32(rndid, sizeof(rndid) - 1);\n  rndid[MUTT_RANDTAG_LEN] = 0;\n  now = time (NULL);\n  tm = gmtime (&now);\n  if(!(fqdn = mutt_fqdn(0)))\n    fqdn = NONULL(Hostname);\n\n  snprintf (buf, sizeof (buf), \"<%d%02d%02d%02d%02d%02d.%s@%s>\",\n\t    tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour,\n\t    tm->tm_min, tm->tm_sec, rndid, fqdn);\n  return (safe_strdup (buf));\n}\n\nstatic void alarm_handler (int sig)\n{\n  SigAlrm = 1;\n}\n\n/* invoke sendmail in a subshell\n   path\t(in)\t\tpath to program to execute\n   args\t(in)\t\targuments to pass to program\n   msg (in)\t\ttemp file containing message to send\n   tempfile (out)\tif sendmail is put in the background, this points\n   \t\t\tto the temporary file containing the stdout of the\n\t\t\tchild process. If it is NULL, stderr and stdout\n                        are not redirected. */\nstatic int\nsend_msg (const char *path, char **args, const char *msg, char **tempfile)\n{\n  sigset_t set;\n  int fd, st;\n  pid_t pid, ppid;\n\n  mutt_block_signals_system ();\n\n  sigemptyset (&set);\n  /* we also don't want to be stopped right now */\n  sigaddset (&set, SIGTSTP);\n  sigprocmask (SIG_BLOCK, &set, NULL);\n\n  if (SendmailWait >= 0 && tempfile)\n  {\n    char tmp[_POSIX_PATH_MAX];\n\n    mutt_mktemp (tmp, sizeof (tmp));\n    *tempfile = safe_strdup (tmp);\n  }\n\n  if ((pid = fork ()) == 0)\n  {\n    struct sigaction act, oldalrm;\n\n    /* save parent's ID before setsid() */\n    ppid = getppid ();\n\n    /* we want the delivery to continue even after the main process dies,\n     * so we put ourselves into another session right away\n     */\n    setsid ();\n\n    /* next we close all open files */\n    close (0);\n#if defined(OPEN_MAX)\n    for (fd = tempfile ? 1 : 3; fd < OPEN_MAX; fd++)\n      close (fd);\n#elif defined(_POSIX_OPEN_MAX)\n    for (fd = tempfile ? 1 : 3; fd < _POSIX_OPEN_MAX; fd++)\n      close (fd);\n#else\n    if (tempfile)\n    {\n      close (1);\n      close (2);\n    }\n#endif\n\n    /* now the second fork() */\n    if ((pid = fork ()) == 0)\n    {\n      /* \"msg\" will be opened as stdin */\n      if (open (msg, O_RDONLY, 0) < 0)\n      {\n\tunlink (msg);\n\t_exit (S_ERR);\n      }\n      unlink (msg);\n\n      if (SendmailWait >= 0 && tempfile && *tempfile)\n      {\n\t/* *tempfile will be opened as stdout */\n\tif (open (*tempfile, O_WRONLY | O_APPEND | O_CREAT | O_EXCL, 0600) < 0)\n\t  _exit (S_ERR);\n\t/* redirect stderr to *tempfile too */\n\tif (dup (1) < 0)\n\t  _exit (S_ERR);\n      }\n      else if (tempfile)\n      {\n\tif (open (\"/dev/null\", O_WRONLY | O_APPEND) < 0)\t/* stdout */\n\t  _exit (S_ERR);\n\tif (open (\"/dev/null\", O_RDWR | O_APPEND) < 0)\t\t/* stderr */\n\t  _exit (S_ERR);\n      }\n\n      execvp (path, args);\n      _exit (S_ERR);\n    }\n    else if (pid == -1)\n    {\n      unlink (msg);\n      if (tempfile)\n\tFREE (tempfile);\t\t/* __FREE_CHECKED__ */\n      _exit (S_ERR);\n    }\n\n    /* SendmailWait > 0: interrupt waitpid() after SendmailWait seconds\n     * SendmailWait = 0: wait forever\n     * SendmailWait < 0: don't wait\n     */\n    if (SendmailWait > 0)\n    {\n      SigAlrm = 0;\n      act.sa_handler = alarm_handler;\n#ifdef SA_INTERRUPT\n      /* need to make sure waitpid() is interrupted on SIGALRM */\n      act.sa_flags = SA_INTERRUPT;\n#else\n      act.sa_flags = 0;\n#endif\n      sigemptyset (&act.sa_mask);\n      sigaction (SIGALRM, &act, &oldalrm);\n      alarm (SendmailWait);\n    }\n    else if (SendmailWait < 0)\n      _exit (0xff & EX_OK);\n\n    if (waitpid (pid, &st, 0) > 0)\n    {\n      st = WIFEXITED (st) ? WEXITSTATUS (st) : S_ERR;\n      if (SendmailWait && st == (0xff & EX_OK) && tempfile && *tempfile)\n      {\n\tunlink (*tempfile); /* no longer needed */\n\tFREE (tempfile);\t\t/* __FREE_CHECKED__ */\n      }\n    }\n    else\n    {\n      st = (SendmailWait > 0 && errno == EINTR && SigAlrm) ?\n\t      S_BKG : S_ERR;\n      if (SendmailWait > 0 && tempfile && *tempfile)\n      {\n\tunlink (*tempfile);\n\tFREE (tempfile);\t\t/* __FREE_CHECKED__ */\n      }\n    }\n\n    /* reset alarm; not really needed, but... */\n    alarm (0);\n    sigaction (SIGALRM, &oldalrm, NULL);\n\n    if (kill (ppid, 0) == -1 && errno == ESRCH && tempfile && *tempfile)\n    {\n      /* the parent is already dead */\n      unlink (*tempfile);\n      FREE (tempfile);\t\t/* __FREE_CHECKED__ */\n    }\n\n    _exit (st);\n  }\n\n  sigprocmask (SIG_UNBLOCK, &set, NULL);\n\n  if (pid != -1 && waitpid (pid, &st, 0) > 0)\n    st = WIFEXITED (st) ? WEXITSTATUS (st) : S_ERR; /* return child status */\n  else\n    st = S_ERR;\t/* error */\n\n  mutt_unblock_signals_system (1);\n\n  return (st);\n}\n\nstatic char **\nadd_args (char **args, size_t *argslen, size_t *argsmax, ADDRESS *addr)\n{\n  for (; addr; addr = addr->next)\n  {\n    /* weed out group mailboxes, since those are for display only */\n    if (addr->mailbox && !addr->group)\n    {\n      if (*argslen == *argsmax)\n\tsafe_realloc (&args, (*argsmax += 5) * sizeof (char *));\n      args[(*argslen)++] = addr->mailbox;\n    }\n  }\n  return (args);\n}\n\nstatic char **\nadd_option (char **args, size_t *argslen, size_t *argsmax, char *s)\n{\n  if (*argslen == *argsmax)\n    safe_realloc (&args, (*argsmax += 5) * sizeof (char *));\n  args[(*argslen)++] = s;\n  return (args);\n}\n\nint\nmutt_invoke_sendmail (ADDRESS *from,\t/* the sender */\n\t\t ADDRESS *to, ADDRESS *cc, ADDRESS *bcc, /* recips */\n\t\t const char *msg, /* file containing message */\n\t\t int eightbit) /* message contains 8bit chars */\n{\n  char *ps = NULL, *path = NULL, *s = safe_strdup (Sendmail), *childout = NULL;\n  char **args = NULL;\n  size_t argslen = 0, argsmax = 0;\n  int i;\n\n  /* ensure that $sendmail is set to avoid a crash. http://dev.mutt.org/trac/ticket/3548 */\n  if (!s)\n  {\n    mutt_error(_(\"$sendmail must be set in order to send mail.\"));\n    return -1;\n  }\n\n  ps = s;\n  i = 0;\n  while ((ps = strtok (ps, \" \")))\n  {\n    if (argslen == argsmax)\n      safe_realloc (&args, sizeof (char *) * (argsmax += 5));\n\n    if (i)\n      args[argslen++] = ps;\n    else\n    {\n      path = safe_strdup (ps);\n      ps = strrchr (ps, '/');\n      if (ps)\n\tps++;\n      else\n\tps = path;\n      args[argslen++] = ps;\n    }\n    ps = NULL;\n    i++;\n  }\n\n  if (eightbit && option (OPTUSE8BITMIME))\n    args = add_option (args, &argslen, &argsmax, \"-B8BITMIME\");\n\n  if (option (OPTENVFROM))\n  {\n    if (EnvFrom)\n    {\n      args = add_option (args, &argslen, &argsmax, \"-f\");\n      args = add_args   (args, &argslen, &argsmax, EnvFrom);\n    }\n    else if (from && !from->next)\n    {\n      args = add_option (args, &argslen, &argsmax, \"-f\");\n      args = add_args   (args, &argslen, &argsmax, from);\n    }\n  }\n\n  if (DsnNotify)\n  {\n    args = add_option (args, &argslen, &argsmax, \"-N\");\n    args = add_option (args, &argslen, &argsmax, DsnNotify);\n  }\n  if (DsnReturn)\n  {\n    args = add_option (args, &argslen, &argsmax, \"-R\");\n    args = add_option (args, &argslen, &argsmax, DsnReturn);\n  }\n  args = add_option (args, &argslen, &argsmax, \"--\");\n  args = add_args (args, &argslen, &argsmax, to);\n  args = add_args (args, &argslen, &argsmax, cc);\n  args = add_args (args, &argslen, &argsmax, bcc);\n\n  if (argslen == argsmax)\n    safe_realloc (&args, sizeof (char *) * (++argsmax));\n\n  args[argslen++] = NULL;\n\n  if ((i = send_msg (path, args, msg, option(OPTNOCURSES) ? NULL : &childout)) != (EX_OK & 0xff))\n  {\n    if (i != S_BKG)\n    {\n      const char *e = mutt_strsysexit (i);\n\n      e = mutt_strsysexit (i);\n      mutt_error (_(\"Error sending message, child exited %d (%s).\"), i, NONULL (e));\n      if (childout)\n      {\n\tstruct stat st;\n\n\tif (stat (childout, &st) == 0 && st.st_size > 0)\n\t  mutt_do_pager (_(\"Output of the delivery process\"), childout, 0, NULL);\n      }\n    }\n  }\n  else if (childout)\n    unlink (childout);\n\n  FREE (&childout);\n  FREE (&path);\n  FREE (&s);\n  FREE (&args);\n\n  if (i == (EX_OK & 0xff))\n    i = 0;\n  else if (i == S_BKG)\n    i = 1;\n  else\n    i = -1;\n  return (i);\n}\n\n/* For postponing (!final) do the necessary encodings only */\nvoid mutt_prepare_envelope (ENVELOPE *env, int final)\n{\n  char buffer[LONG_STRING];\n\n  if (final)\n  {\n    if (env->bcc && !(env->to || env->cc))\n    {\n      /* some MTA's will put an Apparently-To: header field showing the Bcc:\n       * recipients if there is no To: or Cc: field, so attempt to suppress\n       * it by using an empty To: field.\n       */\n      env->to = rfc822_new_address ();\n      env->to->group = 1;\n      env->to->next = rfc822_new_address ();\n\n      buffer[0] = 0;\n      rfc822_cat (buffer, sizeof (buffer), \"undisclosed-recipients\",\n\t\t  RFC822Specials);\n\n      env->to->mailbox = safe_strdup (buffer);\n    }\n\n    mutt_set_followup_to (env);\n\n    if (!env->message_id)\n      env->message_id = mutt_gen_msgid ();\n  }\n\n  /* Take care of 8-bit => 7-bit conversion. */\n  rfc2047_encode_adrlist (env->to, \"To\");\n  rfc2047_encode_adrlist (env->cc, \"Cc\");\n  rfc2047_encode_adrlist (env->bcc, \"Bcc\");\n  rfc2047_encode_adrlist (env->from, \"From\");\n  rfc2047_encode_adrlist (env->mail_followup_to, \"Mail-Followup-To\");\n  rfc2047_encode_adrlist (env->reply_to, \"Reply-To\");\n  rfc2047_encode_string (&env->x_label);\n\n  if (env->subject)\n  {\n    rfc2047_encode_string (&env->subject);\n  }\n  encode_headers (env->userhdrs);\n}\n\nvoid mutt_unprepare_envelope (ENVELOPE *env)\n{\n  LIST *item;\n\n  for (item = env->userhdrs; item; item = item->next)\n    rfc2047_decode (&item->data);\n\n  rfc822_free_address (&env->mail_followup_to);\n\n  /* back conversions */\n  rfc2047_decode_adrlist (env->to);\n  rfc2047_decode_adrlist (env->cc);\n  rfc2047_decode_adrlist (env->bcc);\n  rfc2047_decode_adrlist (env->from);\n  rfc2047_decode_adrlist (env->reply_to);\n  rfc2047_decode (&env->subject);\n  rfc2047_decode (&env->x_label);\n}\n\nstatic int _mutt_bounce_message (FILE *fp, HEADER *h, ADDRESS *to, const char *resent_from,\n\t\t\t\t  ADDRESS *env_from)\n{\n  int i, ret = 0;\n  FILE *f;\n  char date[SHORT_STRING], tempfile[_POSIX_PATH_MAX];\n  MESSAGE *msg = NULL;\n\n  if (!h)\n  {\n\t  /* Try to bounce each message out, aborting if we get any failures. */\n    for (i=0; i<Context->msgcount; i++)\n      if (Context->hdrs[i]->tagged)\n        ret |= _mutt_bounce_message (fp, Context->hdrs[i], to, resent_from, env_from);\n    return ret;\n  }\n\n  /* If we failed to open a message, return with error */\n  if (!fp && (msg = mx_open_message (Context, h->msgno)) == NULL)\n    return -1;\n\n  if (!fp) fp = msg->fp;\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((f = safe_fopen (tempfile, \"w\")) != NULL)\n  {\n    int ch_flags = CH_XMIT | CH_NONEWLINE | CH_NOQFROM;\n    char* msgid_str;\n\n    if (!option (OPTBOUNCEDELIVERED))\n      ch_flags |= CH_WEED_DELIVERED;\n\n    fseeko (fp, h->offset, 0);\n    fprintf (f, \"Resent-From: %s\", resent_from);\n    fprintf (f, \"\\nResent-%s\", mutt_make_date (date, sizeof(date)));\n    msgid_str = mutt_gen_msgid();\n    fprintf (f, \"Resent-Message-ID: %s\\n\", msgid_str);\n    fputs (\"Resent-To: \", f);\n    mutt_write_address_list (to, f, 11, 0);\n    mutt_copy_header (fp, h, f, ch_flags, NULL);\n    fputc ('\\n', f);\n    mutt_copy_bytes (fp, f, h->content->length);\n    FREE (&msgid_str);\n    if (safe_fclose (&f) != 0) {\n      mutt_perror(tempfile);\n      unlink(tempfile);\n      return -1;\n    }\n#if USE_SMTP\n    if (SmtpUrl)\n      ret = mutt_smtp_send (env_from, to, NULL, NULL, tempfile,\n                            h->content->encoding == ENC8BIT);\n    else\n#endif /* USE_SMTP */\n    ret = mutt_invoke_sendmail (env_from, to, NULL, NULL, tempfile,\n\t\t\t  \th->content->encoding == ENC8BIT);\n  }\n\n  if (msg)\n    mx_close_message (&msg);\n\n  return ret;\n}\n\nint mutt_bounce_message (FILE *fp, HEADER *h, ADDRESS *to)\n{\n  ADDRESS *from, *resent_to;\n  const char *fqdn = mutt_fqdn (1);\n  char resent_from[STRING];\n  int ret;\n  char *err;\n\n  resent_from[0] = '\\0';\n  from = mutt_default_from ();\n\n  /*\n   * mutt_default_from() does not use $realname if the real name is not set\n   * in $from, so we add it here.  The reason it is not added in\n   * mutt_default_from() is that during normal sending, we execute\n   * send-hooks and set the realname last so that it can be changed based\n   * upon message criteria.\n   */\n  if (! from->personal)\n    from->personal = safe_strdup(Realname);\n\n  if (fqdn)\n    rfc822_qualify (from, fqdn);\n\n  rfc2047_encode_adrlist (from, \"Resent-From\");\n  if (mutt_addrlist_to_intl (from, &err))\n  {\n    mutt_error (_(\"Bad IDN %s while preparing resent-from.\"),\n\t\terr);\n    rfc822_free_address (&from);\n    return -1;\n  }\n  rfc822_write_address (resent_from, sizeof (resent_from), from, 0);\n\n  /*\n   * prepare recipient list. idna conversion appears to happen before this\n   * function is called, since the user receives confirmation of the address\n   * list being bounced to.\n   */\n  resent_to = rfc822_cpy_adr(to, 0);\n  rfc2047_encode_adrlist(resent_to, \"Resent-To\");\n\n  ret = _mutt_bounce_message (fp, h, resent_to, resent_from, from);\n\n  rfc822_free_address (&resent_to);\n  rfc822_free_address (&from);\n\n  return ret;\n}\n\n\n/* given a list of addresses, return a list of unique addresses */\nADDRESS *mutt_remove_duplicates (ADDRESS *addr)\n{\n  ADDRESS *top = addr;\n  ADDRESS **last = &top;\n  ADDRESS *tmp;\n  int dup;\n\n  while (addr)\n  {\n    for (tmp = top, dup = 0; tmp && tmp != addr; tmp = tmp->next)\n    {\n      if (tmp->mailbox && addr->mailbox &&\n\t  !ascii_strcasecmp (addr->mailbox, tmp->mailbox))\n      {\n\tdup = 1;\n\tbreak;\n      }\n    }\n\n    if (dup)\n    {\n      dprint (2, (debugfile, \"mutt_remove_duplicates: Removing %s\\n\",\n\t\t  addr->mailbox));\n\n      *last = addr->next;\n\n      addr->next = NULL;\n      rfc822_free_address(&addr);\n\n      addr = *last;\n    }\n    else\n    {\n      last = &addr->next;\n      addr = addr->next;\n    }\n  }\n\n  return (top);\n}\n\nstatic void set_noconv_flags (BODY *b, short flag)\n{\n  for(; b; b = b->next)\n  {\n    if (b->type == TYPEMESSAGE || b->type == TYPEMULTIPART)\n      set_noconv_flags (b->parts, flag);\n    else if (b->type == TYPETEXT && b->noconv)\n    {\n      if (flag)\n\tmutt_set_parameter (\"x-mutt-noconv\", \"yes\", &b->parameter);\n      else\n\tmutt_delete_parameter (\"x-mutt-noconv\", &b->parameter);\n    }\n  }\n}\n\nint mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid,\n\t\t    int post, char *fcc, char **finalpath)\n{\n  CONTEXT f;\n  MESSAGE *msg;\n  char tempfile[_POSIX_PATH_MAX];\n  FILE *tempfp = NULL;\n  int r, need_buffy_cleanup = 0;\n  struct stat st;\n  char buf[SHORT_STRING];\n  int onm_flags;\n\n  if (post)\n    set_noconv_flags (hdr->content, 1);\n\n  if (mx_open_mailbox (path, M_APPEND | M_QUIET, &f) == NULL)\n  {\n    dprint (1, (debugfile, \"mutt_write_fcc(): unable to open mailbox %s in append-mode, aborting.\\n\",\n\t\tpath));\n    return (-1);\n  }\n\n  /* We need to add a Content-Length field to avoid problems where a line in\n   * the message body begins with \"From \"\n   */\n  if (f.magic == M_MMDF || f.magic == M_MBOX)\n  {\n    mutt_mktemp (tempfile, sizeof (tempfile));\n    if ((tempfp = safe_fopen (tempfile, \"w+\")) == NULL)\n    {\n      mutt_perror (tempfile);\n      mx_close_mailbox (&f, NULL);\n      return (-1);\n    }\n    /* remember new mail status before appending message */\n    need_buffy_cleanup = 1;\n    stat (path, &st);\n  }\n\n  hdr->read = !post; /* make sure to put it in the `cur' directory (maildir) */\n  onm_flags = M_ADD_FROM;\n  if (post)\n    onm_flags |= M_SET_DRAFT;\n  if ((msg = mx_open_new_message (&f, hdr, onm_flags)) == NULL)\n  {\n    mx_close_mailbox (&f, NULL);\n    return (-1);\n  }\n\n  /* post == 1 => postpone message. Set mode = -1 in mutt_write_rfc822_header()\n   * post == 0 => Normal mode. Set mode = 0 in mutt_write_rfc822_header()\n   * */\n  mutt_write_rfc822_header (msg->fp, hdr->env, hdr->content, post ? -post : 0, 0);\n\n  /* (postponment) if this was a reply of some sort, <msgid> contians the\n   * Message-ID: of message replied to.  Save it using a special X-Mutt-\n   * header so it can be picked up if the message is recalled at a later\n   * point in time.  This will allow the message to be marked as replied if\n   * the same mailbox is still open.\n   */\n  if (post && msgid)\n    fprintf (msg->fp, \"X-Mutt-References: %s\\n\", msgid);\n\n  /* (postponment) save the Fcc: using a special X-Mutt- header so that\n   * it can be picked up when the message is recalled\n   */\n  if (post && fcc)\n    fprintf (msg->fp, \"X-Mutt-Fcc: %s\\n\", fcc);\n\n  if (f.magic == M_MMDF || f.magic == M_MBOX)\n    fprintf (msg->fp, \"Status: RO\\n\");\n\n  /* mutt_write_rfc822_header() only writes out a Date: header with\n   * mode == 0, i.e. _not_ postponment; so write out one ourself */\n  if (post)\n    fprintf (msg->fp, \"%s\", mutt_make_date (buf, sizeof (buf)));\n\n  /* (postponment) if the mail is to be signed or encrypted, save this info */\n  if ((WithCrypto & APPLICATION_PGP)\n      && post && (hdr->security & APPLICATION_PGP))\n  {\n    fputs (\"X-Mutt-PGP: \", msg->fp);\n    if (hdr->security & ENCRYPT)\n      fputc ('E', msg->fp);\n    if (hdr->security & OPPENCRYPT)\n      fputc ('O', msg->fp);\n    if (hdr->security & SIGN)\n    {\n      fputc ('S', msg->fp);\n      if (PgpSignAs && *PgpSignAs)\n        fprintf (msg->fp, \"<%s>\", PgpSignAs);\n    }\n    if (hdr->security & INLINE)\n      fputc ('I', msg->fp);\n    fputc ('\\n', msg->fp);\n  }\n\n  /* (postponment) if the mail is to be signed or encrypted, save this info */\n  if ((WithCrypto & APPLICATION_SMIME)\n      && post && (hdr->security & APPLICATION_SMIME))\n  {\n    fputs (\"X-Mutt-SMIME: \", msg->fp);\n    if (hdr->security & ENCRYPT) {\n\tfputc ('E', msg->fp);\n\tif (SmimeCryptAlg && *SmimeCryptAlg)\n\t    fprintf (msg->fp, \"C<%s>\", SmimeCryptAlg);\n    }\n    if (hdr->security & OPPENCRYPT)\n      fputc ('O', msg->fp);\n    if (hdr->security & SIGN) {\n\tfputc ('S', msg->fp);\n\tif (SmimeDefaultKey && *SmimeDefaultKey)\n\t    fprintf (msg->fp, \"<%s>\", SmimeDefaultKey);\n    }\n    if (hdr->security & INLINE)\n      fputc ('I', msg->fp);\n    fputc ('\\n', msg->fp);\n  }\n\n#ifdef MIXMASTER\n  /* (postponement) if the mail is to be sent through a mixmaster\n   * chain, save that information\n   */\n\n  if (post && hdr->chain && hdr->chain)\n  {\n    LIST *p;\n\n    fputs (\"X-Mutt-Mix:\", msg->fp);\n    for (p = hdr->chain; p; p = p->next)\n      fprintf (msg->fp, \" %s\", (char *) p->data);\n\n    fputc ('\\n', msg->fp);\n  }\n#endif\n\n  if (tempfp)\n  {\n    char sasha[LONG_STRING];\n    int lines = 0;\n\n    mutt_write_mime_body (hdr->content, tempfp);\n\n    /* make sure the last line ends with a newline.  Emacs doesn't ensure\n     * this will happen, and it can cause problems parsing the mailbox\n     * later.\n     */\n    fseek (tempfp, -1, 2);\n    if (fgetc (tempfp) != '\\n')\n    {\n      fseek (tempfp, 0, 2);\n      fputc ('\\n', tempfp);\n    }\n\n    fflush (tempfp);\n    if (ferror (tempfp))\n    {\n      dprint (1, (debugfile, \"mutt_write_fcc(): %s: write failed.\\n\", tempfile));\n      safe_fclose (&tempfp);\n      unlink (tempfile);\n      mx_commit_message (msg, &f);\t/* XXX - really? */\n      mx_close_message (&msg);\n      mx_close_mailbox (&f, NULL);\n      return -1;\n    }\n\n    /* count the number of lines */\n    rewind (tempfp);\n    while (fgets (sasha, sizeof (sasha), tempfp) != NULL)\n      lines++;\n    fprintf (msg->fp, \"Content-Length: \" OFF_T_FMT \"\\n\", (LOFF_T) ftello (tempfp));\n    fprintf (msg->fp, \"Lines: %d\\n\\n\", lines);\n\n    /* copy the body and clean up */\n    rewind (tempfp);\n    r = mutt_copy_stream (tempfp, msg->fp);\n    if (fclose (tempfp) != 0)\n      r = -1;\n    /* if there was an error, leave the temp version */\n    if (!r)\n      unlink (tempfile);\n  }\n  else\n  {\n    fputc ('\\n', msg->fp); /* finish off the header */\n    r = mutt_write_mime_body (hdr->content, msg->fp);\n  }\n\n  if (mx_commit_message (msg, &f) != 0)\n    r = -1;\n  else if (finalpath)\n    *finalpath = safe_strdup(msg->commited_path);\n  mx_close_message (&msg);\n  mx_close_mailbox (&f, NULL);\n\n  if (!post && need_buffy_cleanup)\n    mutt_buffy_cleanup (path, &st);\n\n  if (post)\n    set_noconv_flags (hdr->content, 0);\n\n  return r;\n}\n"
  },
  {
    "path": "setenv.c",
    "content": "/*  Replacement for a missing setenv.\n**\n**  Written by Russ Allbery <rra@stanford.edu>\n**  This work is hereby placed in the public domain by its author.\n**\n**  Provides the same functionality as the standard library routine setenv\n**  for those platforms that don't have it.\n*/\n\n#include \"config.h\"\n\n#include <stdlib.h>\n#include <string.h>\n\nint\nsetenv(const char *name, const char *value, int overwrite)\n{\n    char *envstring;\n\n    if (!overwrite && getenv(name) != NULL)\n        return 0;\n\n    /* Allocate memory for the environment string.  We intentionally don't\n       use concat here, or the xmalloc family of allocation routines, since\n       the intention is to provide a replacement for the standard library\n       function which sets errno and returns in the event of a memory\n       allocation failure. */\n    envstring = malloc(strlen(name) + 1 + strlen(value) + 1); /* __MEM_CHECKED__ */\n    if (envstring == NULL)\n        return -1;\n\n    /* Build the environment string and add it to the environment using\n       putenv.  Systems without putenv lose, but XPG4 requires it. */\n    strcpy(envstring, name);  /* __STRCPY_CHECKED__ */\n    strcat(envstring, \"=\");   /* __STRCAT_CHECKED__ */\n    strcat(envstring, value); /* __STRCAT_CHECKED__ */\n    return putenv(envstring);\n\n    /* Note that the memory allocated is not freed.  This is intentional;\n       many implementations of putenv assume that the string passed to\n       putenv will never be freed and don't make a copy of it.  Repeated use\n       of this function will therefore leak memory, since most\n       implementations of putenv also don't free strings removed from the\n       environment (due to being overwritten). */\n}\n"
  },
  {
    "path": "sha1.c",
    "content": "/*\n SHA-1 in C\n\n By Steve Reid <steve@edmweb.com>, with small changes to make it\n fit into mutt by Thomas Roessler <roessler@does-not-exist.org>.\n\n 100% Public Domain.\n\n Test Vectors (from FIPS PUB 180-1)\n \"abc\"\n A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D\n \"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\"\n 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1\n A million repetitions of \"a\"\n 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F\n*/\n\n#define SHA1HANDSOFF\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include <string.h>\n\n#include \"sha1.h\"\n\n#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))\n\n/* blk0() and blk() perform the initial expand. */\n/* I got the idea of expanding during the round function from SSLeay */\n#ifdef WORDS_BIGENDIAN\n#  define blk0(i) block->l[i]\n#else\n#  define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \\\n\t\t    |(rol(block->l[i],8)&0x00FF00FF))\n#endif\n\n#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \\\n    ^block->l[(i+2)&15]^block->l[i&15],1))\n\n/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */\n#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);\n#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);\n#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);\n#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);\n#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);\n\n\n/* Hash a single 512-bit block. This is the core of the algorithm. */\n\nvoid SHA1Transform(uint32_t state[5], const unsigned char buffer[64])\n{\nuint32_t a, b, c, d, e;\ntypedef union {\n    unsigned char c[64];\n    uint32_t l[16];\n} CHAR64LONG16;\n#ifdef SHA1HANDSOFF\nCHAR64LONG16 block[1];  /* use array to appear as a pointer */\n    memcpy(block, buffer, 64);\n#else\n    /* The following had better never be used because it causes the\n     * pointer-to-const buffer to be cast into a pointer to non-const.\n     * And the result is written through.  I threw a \"const\" in, hoping\n     * this will cause a diagnostic.\n     */\nCHAR64LONG16* block = (const CHAR64LONG16*)buffer;\n#endif\n    /* Copy context->state[] to working vars */\n    a = state[0];\n    b = state[1];\n    c = state[2];\n    d = state[3];\n    e = state[4];\n    /* 4 rounds of 20 operations each. Loop unrolled. */\n    R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);\n    R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);\n    R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);\n    R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);\n    R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);\n    R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);\n    R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);\n    R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);\n    R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);\n    R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);\n    R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);\n    R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);\n    R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);\n    R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);\n    R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);\n    R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);\n    R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);\n    R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);\n    R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);\n    R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);\n    /* Add the working vars back into context.state[] */\n    state[0] += a;\n    state[1] += b;\n    state[2] += c;\n    state[3] += d;\n    state[4] += e;\n    /* Wipe variables */\n    a = b = c = d = e = 0;\n#ifdef SHA1HANDSOFF\n    memset(block, '\\0', sizeof(block));\n#endif\n}\n\n\n/* SHA1Init - Initialize new context */\n\nvoid SHA1Init(SHA1_CTX* context)\n{\n    /* SHA1 initialization constants */\n    context->state[0] = 0x67452301;\n    context->state[1] = 0xEFCDAB89;\n    context->state[2] = 0x98BADCFE;\n    context->state[3] = 0x10325476;\n    context->state[4] = 0xC3D2E1F0;\n    context->count[0] = context->count[1] = 0;\n}\n\n\n/* Run your data through this. */\n\nvoid SHA1Update(SHA1_CTX* context, const unsigned char* data, uint32_t len)\n{\nuint32_t i;\nuint32_t j;\n\n    j = context->count[0];\n    if ((context->count[0] += len << 3) < j)\n\tcontext->count[1]++;\n    context->count[1] += (len>>29);\n    j = (j >> 3) & 63;\n    if ((j + len) > 63) {\n        memcpy(&context->buffer[j], data, (i = 64-j));\n        SHA1Transform(context->state, context->buffer);\n        for ( ; i + 63 < len; i += 64) {\n            SHA1Transform(context->state, &data[i]);\n        }\n        j = 0;\n    }\n    else i = 0;\n    memcpy(&context->buffer[j], &data[i], len - i);\n}\n\n\n/* Add padding and return the message digest. */\n\nvoid SHA1Final(unsigned char digest[20], SHA1_CTX* context)\n{\nunsigned i;\nunsigned char finalcount[8];\nunsigned char c;\n\n#if 0\t/* untested \"improvement\" by DHR */\n    /* Convert context->count to a sequence of bytes\n     * in finalcount.  Second element first, but\n     * big-endian order within element.\n     * But we do it all backwards.\n     */\n    unsigned char *fcp = &finalcount[8];\n\n    for (i = 0; i < 2; i++)\n    {\n\tuint32_t t = context->count[i];\n\tint j;\n\n\tfor (j = 0; j < 4; t >>= 8, j++)\n\t    *--fcp = (unsigned char) t\n    }\n#else\n    for (i = 0; i < 8; i++) {\n        finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)]\n         >> ((3-(i & 3)) * 8) ) & 255);  /* Endian independent */\n    }\n#endif\n    c = 0200;\n    SHA1Update(context, &c, 1);\n    while ((context->count[0] & 504) != 448) {\n\tc = 0000;\n        SHA1Update(context, &c, 1);\n    }\n    SHA1Update(context, finalcount, 8);  /* Should cause a SHA1Transform() */\n    for (i = 0; i < 20; i++) {\n        digest[i] = (unsigned char)\n         ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);\n    }\n    /* Wipe variables */\n    memset(context, '\\0', sizeof(*context));\n    memset(&finalcount, '\\0', sizeof(finalcount));\n}\n"
  },
  {
    "path": "sha1.h",
    "content": "/*\n SHA-1 in C\n\n By Steve Reid <steve@edmweb.com>, with small changes to make it\n fit into mutt by Thomas Roessler <roessler@does-not-exist.org>.\n\n*/\n\n#ifndef _SHA1_H\n# define _SHA1_H\n\n#include \"crypthash.h\"\n\ntypedef struct {\n  uint32_t state[5];\n  uint32_t count[2];\n  unsigned char buffer[64];\n} SHA1_CTX;\n\nvoid SHA1Transform(uint32_t state[5], const unsigned char buffer[64]);\nvoid SHA1Init(SHA1_CTX* context);\nvoid SHA1Update(SHA1_CTX* context, const unsigned char* data, uint32_t len);\nvoid SHA1Final(unsigned char digest[20], SHA1_CTX* context);\n\n# define SHA1_Transform SHA1Transform\n# define SHA1_Init SHA1Init\n# define SHA1_Update SHA1Update\n# define SHA1_Final SHA1Final\n\n# define SHA_DIGEST_LENGTH 20\n\n#endif\n"
  },
  {
    "path": "sidebar.c",
    "content": "/* Copyright (C) 2004 Justin Hibbits <jrh29@po.cwru.edu>\n * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.com>\n * Copyright (C) 2015-2016 Richard Russon <rich@flatcap.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"buffy.h\"\n#include \"keymap.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"mx.h\"\n#include \"sort.h\"\n\n/* Previous values for some sidebar config */\nstatic short  OldVisible;\t/* sidebar_visible */\nstatic short  OldWidth;\t\t/* sidebar_width */\nstatic short  PreviousSort;\t/* sidebar_sort_method */\nstatic time_t LastRefresh;\t/* Time of last refresh */\n\n/* Keep track of various BUFFYs */\nstatic BUFFY *TopBuffy;\t\t/* First mailbox visible in sidebar */\nstatic BUFFY *OpnBuffy;\t\t/* Current (open) mailbox */\nstatic BUFFY *HilBuffy;\t\t/* Highlighted mailbox */\nstatic BUFFY *BotBuffy;\t\t/* Last mailbox visible in sidebar */\nstatic BUFFY *Outgoing;\t\t/* Last mailbox in the linked list */\n\n/**\n * struct sidebar_entry - Info about folders in the sidebar\n *\n * Used in the mutt_FormatString callback\n */\nstruct sidebar_entry {\n\tchar         box[SHORT_STRING];\n\tBUFFY       *buffy;\n};\n\nenum {\n\tSB_SRC_NONE = 0,\n\tSB_SRC_VIRT,\n\tSB_SRC_INCOMING\n};\nstatic int sidebar_source = SB_SRC_NONE;\n\nstatic BUFFY *\nget_incoming (void)\n{\n\tswitch (sidebar_source) {\n\tcase SB_SRC_NONE:\n\t\tsidebar_source = SB_SRC_INCOMING;\n\n#ifdef USE_NOTMUCH\n\t\tif (option (OPTVIRTSPOOLFILE) && VirtIncoming) {\n\t\t\tsidebar_source = SB_SRC_VIRT;\n\t\t\treturn VirtIncoming;\n\t\t}\n\t\tbreak;\n\tcase SB_SRC_VIRT:\n\t\tif (VirtIncoming) {\n\t\t\treturn VirtIncoming;\n\t\t}\n\t\tbreak;\n#endif\n\tcase SB_SRC_INCOMING:\n\t\tbreak;\n\t}\n\n\treturn Incoming;\t/* default */\n}\n\n/**\n * find_next_new - Find the next folder that contains new mail\n * @wrap: Wrap around to the beginning if the end is reached\n *\n * Search down the list of mail folders for one containing new mail.\n *\n * Returns:\n *\tBUFFY*: Success\n *\tNULL:   Failure\n */\nstatic BUFFY *\nfind_next_new (int wrap)\n{\n\tBUFFY *b = HilBuffy;\n\tif (!b)\n\t\treturn NULL;\n\n\tdo {\n\t\tb = b->next;\n\t\tif (!b && wrap) {\n\t\t\tb = get_incoming();\n\t\t}\n\t\tif (!b || (b == HilBuffy)) {\n\t\t\tbreak;\n\t\t}\n\t\tif (b->msg_unread > 0) {\n\t\t\treturn b;\n\t\t}\n\t} while (b);\n\n\treturn NULL;\n}\n\n/**\n * find_prev_new - Find the previous folder that contains new mail\n * @wrap: Wrap around to the beginning if the end is reached\n *\n * Search up the list of mail folders for one containing new mail.\n *\n * Returns:\n *\tBUFFY*: Success\n *\tNULL:   Failure\n */\nstatic BUFFY *\nfind_prev_new (int wrap)\n{\n\tBUFFY *b = HilBuffy;\n\tif (!b)\n\t\treturn NULL;\n\n\tdo {\n\t\tb = b->prev;\n\t\tif (!b && wrap) {\n\t\t\tb = Outgoing;\n\t\t}\n\t\tif (!b || (b == HilBuffy)) {\n\t\t\tbreak;\n\t\t}\n\t\tif (b->msg_unread > 0) {\n\t\t\treturn b;\n\t\t}\n\t} while (b);\n\n\treturn NULL;\n}\n\n/**\n * cb_format_str - Create the string to show in the sidebar\n * @dest:        Buffer in which to save string\n * @destlen:     Buffer length\n * @col:         Starting column, UNUSED\n * @op:          printf-like operator, e.g. 'B'\n * @src:         printf-like format string\n * @prefix:      Field formatting string, UNUSED\n * @ifstring:    If condition is met, display this string\n * @elsestring:  Otherwise, display this string\n * @data:        Pointer to our sidebar_entry\n * @flags:       Format flags, e.g. M_FORMAT_OPTIONAL\n *\n * cb_format_str is a callback function for mutt_FormatString.  It understands\n * five operators. '%B' : Mailbox name, '%F' : Number of flagged messages,\n * '%N' : Number of new messages, '%S' : Size (total number of messages),\n * '%!' : Icon denoting number of flagged messages.\n *\n * Returns: src (unchanged)\n */\nstatic const char *\ncb_format_str (char *dest, size_t destlen, size_t col, char op, const char *src,\n\tconst char *prefix, const char *ifstring, const char *elsestring,\n\tunsigned long data, format_flag flags)\n{\n\tstruct sidebar_entry *sbe = (struct sidebar_entry *) data;\n\tunsigned int optional;\n\tchar fmt[SHORT_STRING], buf[SHORT_STRING];\n\n\tif (!sbe || !dest)\n\t\treturn src;\n\n\tdest[0] = 0;\t/* Just in case there's nothing to do */\n\n\tBUFFY *b = sbe->buffy;\n\tif (!b)\n\t\treturn src;\n\n\tint c = Context && (mutt_strcmp (Context->path, b->path) == 0);\n\n\toptional = flags & M_FORMAT_OPTIONAL;\n\n\tswitch (op) {\n\t\tcase 'B':\n\t\t\tmutt_format_s (dest, destlen, prefix, sbe->box);\n\t\t\tbreak;\n\n\t\tcase 'd':\n\t\t\tif (!optional) {\n\t\t\t\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\t\t\t\tsnprintf (dest, destlen, fmt, c ? Context->deleted : 0);\n\t\t\t} else if ((c && Context->deleted == 0) || !c) {\n\t\t\t\toptional = 0;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'F':\n\t\t\tif (!optional) {\n\t\t\t\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\t\t\t\tsnprintf (dest, destlen, fmt, b->msg_flagged);\n\t\t\t} else if (b->msg_flagged == 0) {\n\t\t\t\toptional = 0;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'L':\n\t\t\tif (!optional) {\n\t\t\t\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\t\t\t\tsnprintf (dest, destlen, fmt, c ? Context->vcount : b->msg_count);\n\t\t\t} else if ((c && Context->vcount == b->msg_count) || !c) {\n\t\t\t\toptional = 0;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'N':\n\t\t\tif (!optional) {\n\t\t\t\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\t\t\t\tsnprintf (dest, destlen, fmt, b->msg_unread);\n\t\t\t} else if (b->msg_unread == 0) {\n\t\t\t\toptional = 0;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'S':\n\t\t\tif (!optional) {\n\t\t\t\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\t\t\t\tsnprintf (dest, destlen, fmt, b->msg_count);\n\t\t\t} else if (b->msg_count == 0) {\n\t\t\t\toptional = 0;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 't':\n\t\t\tif (!optional) {\n\t\t\t\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\t\t\t\tsnprintf (dest, destlen, fmt, c ? Context->tagged : 0);\n\t\t\t} else if ((c && Context->tagged == 0) || !c) {\n\t\t\t\toptional = 0;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase '!':\n\t\t\tif (b->msg_flagged == 0) {\n\t\t\t\tmutt_format_s (dest, destlen, prefix, \"\");\n\t\t\t} else if (b->msg_flagged == 1) {\n\t\t\t\tmutt_format_s (dest, destlen, prefix, \"!\");\n\t\t\t} else if (b->msg_flagged == 2) {\n\t\t\t\tmutt_format_s (dest, destlen, prefix, \"!!\");\n\t\t\t} else {\n\t\t\t\tsnprintf (buf, sizeof (buf), \"%d!\", b->msg_flagged);\n\t\t\t\tmutt_format_s (dest, destlen, prefix, buf);\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\tif (optional)\n\t\tmutt_FormatString (dest, destlen, col, ifstring,   cb_format_str, (unsigned long) sbe, flags);\n\telse if (flags & M_FORMAT_OPTIONAL)\n\t\tmutt_FormatString (dest, destlen, col, elsestring, cb_format_str, (unsigned long) sbe, flags);\n\n\t/* We return the format string, unchanged */\n\treturn src;\n}\n\n/**\n * make_sidebar_entry - Turn mailbox data into a sidebar string\n * @buf:     Buffer in which to save string\n * @buflen:  Buffer length\n * @width:   Desired width in screen cells\n * @box:     Mailbox name\n * @size:    Size (total number of messages)\n * @new:     Number of new messages\n * @flagged: Number of flagged messages\n *\n * Take all the relevant mailbox data and the desired screen width and then get\n * mutt_FormatString to do the actual work. mutt_FormatString will callback to\n * us using cb_format_str() for the sidebar specific formatting characters.\n */\nstatic void\nmake_sidebar_entry (char *buf, unsigned int buflen, int width, char *box,\n\tBUFFY *b)\n{\n\tstruct sidebar_entry sbe;\n\n\tif (!buf || !box || !b)\n\t\treturn;\n\n\tsbe.buffy = b;\n\tstrncpy (sbe.box, box, sizeof (sbe.box) - 1);\n\n\tint box_len = strlen (box);\n\tsbe.box[box_len] = '\\0';\n\n\t/* Temporarily lie about the screen width */\n\tint oc = COLS;\n\tCOLS = width + SidebarWidth;\n\tmutt_FormatString (buf, buflen, 0, NONULL(SidebarFormat), cb_format_str, (unsigned long) &sbe, 0);\n\tCOLS = oc;\n\n\t/* Force string to be exactly the right width */\n\tint w = mutt_strwidth (buf);\n\tint s = strlen (buf);\n\tif (w < width) {\n\t\t/* Pad with spaces */\n\t\tmemset (buf + s, ' ', width - w);\n\t\tbuf[s + width - w] = 0;\n\t} else if (w > width) {\n\t\t/* Truncate to fit */\n\t\tint len = mutt_wstr_trunc (buf, buflen, width, NULL);\n\t\tbuf[len] = 0;\n\t}\n}\n\n/**\n * cb_qsort_buffy - qsort callback to sort BUFFYs\n * @a: First  BUFFY to compare\n * @b: Second BUFFY to compare\n *\n * Compare the paths of two BUFFYs taking the locale into account.\n *\n * Returns:\n *\t-1: a precedes b\n *\t 0: a and b are identical\n *\t 1: b precedes a\n */\nstatic int\ncb_qsort_buffy (const void *a, const void *b)\n{\n\tconst BUFFY *b1 = *(const BUFFY **) a;\n\tconst BUFFY *b2 = *(const BUFFY **) b;\n\n\t/* Special case -- move hidden BUFFYs to the end */\n\tif (b1->is_hidden != b2->is_hidden) {\n\t\tif (b1->is_hidden)\n\t\t\treturn 1;\n\t\telse\n\t\t\treturn -1;\n\t}\n\n\tint result = 0;\n\n\tswitch ((SidebarSortMethod & SORT_MASK)) {\n\t\tcase SORT_COUNT:\n\t\t\tresult = (b2->msg_count - b1->msg_count);\n\t\t\tbreak;\n\t\tcase SORT_COUNT_NEW:\n\t\t\tresult = (b2->msg_unread - b1->msg_unread);\n\t\t\tbreak;\n\t\tcase SORT_DESC:\n\t\t\tresult = mutt_strcmp (b1->desc, b2->desc);\n\t\t\tbreak;\n\t\tcase SORT_FLAGGED:\n\t\t\tresult = (b2->msg_flagged - b1->msg_flagged);\n\t\t\tbreak;\n\t\tcase SORT_PATH:\n\t\t\tresult = mutt_strcasecmp (b1->path, b2->path);\n\t\t\tbreak;\n\t}\n\n\tif (SidebarSortMethod & SORT_REVERSE)\n\t\tresult = -result;\n\n\treturn result;\n}\n\n/**\n * buffy_going - Prevent our pointers becoming invalid\n * @b: BUFFY about to be deleted\n *\n * If we receive a delete-notification for a BUFFY, we need to change any\n * pointers we have to reference a different BUFFY, or set them to NULL.\n *\n * We don't update the prev/next pointers, they'll be fixed on the next\n * call to prepare_sidebar().\n *\n * Returns:\n *\tA valid alternative BUFFY, or NULL\n */\nstatic BUFFY *\nbuffy_going (const BUFFY *b)\n{\n\tif (!b)\n\t\treturn NULL;\n\n\tif (b->prev) {\n\t\tb->prev->next = NULL;\n\t}\n\n\tif (b->next) {\n\t\tb->next->prev = NULL;\n\t\treturn b->next;\n\t}\n\n\treturn b->prev;\n}\n\n/**\n * update_buffy_visibility - Should a BUFFY be displayed in the sidebar\n * @arr:     array of BUFFYs\n * @arr_len: number of BUFFYs in array\n *\n * For each BUFFY in the array, check whether we should display it.\n * This is determined by several criteria.  If the BUFFY:\n *\tis the currently open mailbox\n *\tis the currently highlighted mailbox\n *\thas unread messages\n *\thas flagged messages\n *\tis whitelisted\n */\nstatic void\nupdate_buffy_visibility (BUFFY **arr, int arr_len)\n{\n\tif (!arr)\n\t\treturn;\n\n\tshort new_only = option (OPTSIDEBARNEWMAILONLY);\n\n\tBUFFY *b;\n\tint i;\n\tfor (i = 0; i < arr_len; i++) {\n\t\tb = arr[i];\n\n\t\tb->is_hidden = 0;\n\n\t\tif (!new_only)\n\t\t\tcontinue;\n\n\t\tif ((b == OpnBuffy) || (b->msg_unread  > 0) ||\n\t\t    (b == HilBuffy) || (b->msg_flagged > 0)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (Context && (strcmp (b->path, Context->path) == 0)) {\n\t\t\t/* Spool directory */\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (mutt_find_list (SidebarWhitelist, b->path)) {\n\t\t\t/* Explicitly asked to be visible */\n\t\t\tcontinue;\n\t\t}\n\n\t\tb->is_hidden = 1;\n\t}\n}\n\n/**\n * sort_buffy_array - Sort an array of BUFFY pointers\n * @arr:     array of BUFFYs\n * @arr_len: number of BUFFYs in array\n *\n * Sort an array of BUFFY pointers according to the current sort config\n * option \"sidebar_sort_method\". This calls qsort to do the work which calls our\n * callback function \"cb_qsort_buffy\".\n *\n * Once sorted, the prev/next links will be reconstructed.\n */\nstatic void\nsort_buffy_array (BUFFY **arr, int arr_len)\n{\n\tif (!arr)\n\t\treturn;\n\n\t/* These are the only sort methods we understand */\n\tshort ssm = (SidebarSortMethod & SORT_MASK);\n\tif ((ssm == SORT_COUNT)     ||\n\t    (ssm == SORT_COUNT_NEW) ||\n\t    (ssm == SORT_DESC)      ||\n\t    (ssm == SORT_FLAGGED)   ||\n\t    (ssm == SORT_PATH)) {\n\t\tqsort (arr, arr_len, sizeof (*arr), cb_qsort_buffy);\n\t}\n\n\tint i;\n\tfor (i = 0; i < (arr_len - 1); i++) {\n\t\tarr[i]->next = arr[i + 1];\n\t}\n\tarr[arr_len - 1]->next = NULL;\n\n\tfor (i = 1; i < arr_len; i++) {\n\t\tarr[i]->prev = arr[i - 1];\n\t}\n\tarr[0]->prev = NULL;\n}\n\n/**\n * prepare_sidebar - Prepare the list of BUFFYs for the sidebar display\n * @page_size:  The number of lines on a page\n *\n * Before painting the sidebar, we count the BUFFYs, determine which are\n * visible, sort them and set up our page pointers.\n *\n * This is a lot of work to do each refresh, but there are many things that\n * can change outside of the sidebar that we don't hear about.\n *\n * Returns:\n *\t0:  No, don't draw the sidebar\n *\t1: Yes, draw the sidebar\n */\nstatic int\nprepare_sidebar (int page_size)\n{\n\tBUFFY *b = get_incoming();\n\tif (!b)\n\t\treturn 0;\n\n\tint count = 0;\n\tfor (; b; b = b->next)\n\t\tcount++;\n\n\tBUFFY **arr = safe_malloc (count * sizeof (*arr));\n\tif (!arr)\n\t\treturn 0;\n\n\tint i = 0;\n\tfor (b = get_incoming(); b; b = b->next, i++) {\n\t\tarr[i] = b;\n\t}\n\n\tupdate_buffy_visibility (arr, count);\n\tsort_buffy_array        (arr, count);\n\n\tif (sidebar_source == SB_SRC_INCOMING)\n\t\tIncoming = arr[0];\n\n\tint top_index =  0;\n\tint opn_index = -1;\n\tint hil_index = -1;\n\tint bot_index = -1;\n\n\tfor (i = 0; i < count; i++) {\n\t\tif (OpnBuffy == arr[i])\n\t\t\topn_index = i;\n\t\tif (HilBuffy == arr[i])\n\t\t\thil_index = i;\n\t}\n\n\tif (!HilBuffy || (SidebarSortMethod != PreviousSort)) {\n\t\tif (OpnBuffy) {\n\t\t\tHilBuffy  = OpnBuffy;\n\t\t\thil_index = opn_index;\n\t\t} else {\n\t\t\tHilBuffy  = arr[0];\n\t\t\thil_index = 0;\n\t\t}\n\t}\n\tif (TopBuffy) {\n\t\ttop_index = (hil_index / page_size) * page_size;\n\t} else {\n\t\ttop_index = hil_index;\n\t}\n\tTopBuffy = arr[top_index];\n\n\tbot_index = top_index + page_size - 1;\n\tif (bot_index > (count - 1)) {\n\t\tbot_index = count - 1;\n\t}\n\tBotBuffy  = arr[bot_index];\n\n\tOutgoing = arr[count - 1];\n\n\tPreviousSort = SidebarSortMethod;\n\tfree (arr);\n\treturn 1;\n}\n\n/**\n * visible - Should we display the sidebar?\n *\n * After validating the config options \"sidebar_visible\" and \"sidebar_width\",\n * determine whether we should display the sidebar.\n *\n * When not visible, set the global SidebarWidth to 0.\n *\n * Returns:\n *\tBoolean\n */\nstatic short\nvisible (void)\n{\n\tshort new_visible = option (OPTSIDEBAR);\n\tshort new_width   = SidebarWidth;\n\n\tif (OldWidth != new_width) {\n\t\tif (new_width > 0) {\n\t\t\tOldWidth = new_width;\n\t\t}\n\t}\n\n\tif (OldVisible != new_visible) {\n\t\tif (new_visible) {\n\t\t\tset_option (OPTSIDEBAR);\n\t\t} else {\n\t\t\tunset_option (OPTSIDEBAR);\n\t\t}\n\t\tOldVisible = new_visible;\n\t} else if (new_width == 0) {\n\t\tunset_option (OPTSIDEBAR);\n\t\tOldVisible = 0;\n\t}\n\n\tif (!option (OPTSIDEBAR)) {\n\t\tSidebarWidth = 0;\n\t} else if (new_width == 0) {\n\t\tSidebarWidth = OldWidth;\n\t} else {\n\t\tSidebarWidth = new_width;\n\t}\n\n\treturn new_visible;\n}\n\n/**\n * draw_divider - Draw a line between the sidebar and the rest of mutt\n * @first_row:  Screen line to start (0-based)\n * @num_rows:   Number of rows to fill\n *\n * Draw a divider using characters from the config option \"sidebar_divider_char\".\n * This can be an ASCII or Unicode character.  First we calculate this\n * characters' width in screen columns, then subtract that from the config\n * option \"sidebar_width\".\n *\n * Returns:\n *\t-1: Error: bad character, etc\n *\t0:  Error: 0 width character\n *\tn:  Success: character occupies n screen columns\n */\nstatic int\ndraw_divider (int first_row, int num_rows)\n{\n\t/* Calculate the width of the delimiter in screen cells */\n\tint delim_len = mutt_strwidth (SidebarDividerChar);\n\n\tif (delim_len < 1)\n\t\treturn delim_len;\n\n\tif ((SidebarWidth + delim_len) > (COLS + 1))\n\t\treturn 0;\n\n\tif (delim_len > SidebarWidth)\n\t\treturn -1;\n\n\tSETCOLOR(MT_COLOR_DIVIDER);\n\n\tint i;\n\tfor (i = 0; i < num_rows; i++) {\n\t\tmove (first_row + i, SidebarWidth - delim_len);\n\t\taddstr (NONULL(SidebarDividerChar));\n\t}\n\n\treturn delim_len;\n}\n\n/**\n * fill_empty_space - Wipe the remaining sidebar space\n * @first_row:  Screen line to start (0-based)\n * @num_rows:   Number of rows to fill\n * @width:      Width of the sidebar (minus the divider)\n *\n * Write spaces over the area the sidebar isn't using.\n */\nstatic void\nfill_empty_space (int first_row, int num_rows, int width)\n{\n\t/* Fill the remaining rows with blank space */\n\tSETCOLOR(MT_COLOR_NORMAL);\n\n\tint r;\n\tfor (r = 0; r < num_rows; r++) {\n\t\tint i = 0;\n\t\tmove (first_row + r, 0);\n\t\tfor (; i < width; i++)\n\t\t\taddch (' ');\n\t}\n}\n\n/**\n * draw_sidebar - Write out a list of mailboxes, on the left\n * @first_row:  Screen line to start (0-based)\n * @num_rows:   Number of rows to fill\n * @div_width:  Width in screen characters taken by the divider\n *\n * Display a list of mailboxes in a panel on the left.  What's displayed will\n * depend on our index markers: TopBuffy, OpnBuffy, HilBuffy, BotBuffy.\n * On the first run they'll be NULL, so we display the top of Mutt's list\n * (Incoming).\n *\n * TopBuffy - first visible mailbox\n * BotBuffy - last  visible mailbox\n * OpnBuffy - mailbox shown in Mutt's Index Panel\n * HilBuffy - Unselected mailbox (the paging follows this)\n *\n * The entries are formatted using \"sidebar_format\" and may be abbreviated:\n * \"sidebar_short_path\", indented: \"sidebar_folder_indent\",\n * \"sidebar_indent_string\" and sorted: \"sidebar_sort_method\".  Finally, they're\n * trimmed to fit the available space.\n */\nstatic void\ndraw_sidebar (int first_row, int num_rows, int div_width)\n{\n\tBUFFY *b = TopBuffy;\n\tif (!b)\n\t\treturn;\n\n\tint w = MIN(COLS, (SidebarWidth - div_width));\n\tint row = 0;\n\tfor (b = TopBuffy; b && (row < num_rows); b = b->next) {\n\t\tif (b->is_hidden) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (b == OpnBuffy) {\n\t\t\tif ((ColorDefs[MT_COLOR_SB_INDICATOR] != 0)) {\n\t\t\t\tSETCOLOR(MT_COLOR_SB_INDICATOR);\n\t\t\t} else {\n\t\t\t\tSETCOLOR(MT_COLOR_INDICATOR);\n\t\t\t}\n\t\t} else if (b == HilBuffy) {\n\t\t\tSETCOLOR(MT_COLOR_HIGHLIGHT);\n\t\t} else if ((ColorDefs[MT_COLOR_SB_SPOOLFILE] != 0) &&\n\t\t\t(mutt_strcmp (b->path, Spoolfile) == 0)) {\n\t\t\tSETCOLOR(MT_COLOR_SB_SPOOLFILE);\n\t\t} else if (b->msg_unread > 0) {\n\t\t\tSETCOLOR(MT_COLOR_NEW);\n\t\t} else if (b->msg_flagged > 0) {\n\t\t\tSETCOLOR(MT_COLOR_FLAGGED);\n\t\t} else {\n\t\t\tSETCOLOR(MT_COLOR_NORMAL);\n\t\t}\n\n\t\tmove (first_row + row, 0);\n\t\tif (Context && Context->path &&\n\t\t\t(!strcmp (b->path, Context->path)||\n\t\t\t !strcmp (b->realpath, Context->path))) {\n\t\t\tb->msg_unread  = Context->unread;\n\t\t\tb->msg_count   = Context->msgcount;\n\t\t\tb->msg_flagged = Context->flagged;\n\t\t}\n\n\t\t/* compute length of Maildir without trailing separator */\n\t\tsize_t maildirlen = strlen (Maildir);\n\t\tif (SidebarDelimChars && strchr (SidebarDelimChars, Maildir[maildirlen - 1])) {\n\t\t\tmaildirlen--;\n\t\t}\n\n\t\t/* check whether Maildir is a prefix of the current folder's path */\n\t\tshort maildir_is_prefix = 0;\n\t\tif ((strlen (b->path) > maildirlen) && (strncmp (Maildir, b->path, maildirlen) == 0)) {\n\t\t\tmaildir_is_prefix = 1;\n\t\t}\n\t\t/* calculate depth of current folder and generate its display name with indented spaces */\n\t\tint sidebar_folder_depth = 0;\n\t\tchar *sidebar_folder_name;\n\t\tint i;\n\t\tif (option (OPTSIDEBARSHORTPATH)) {\n\t\t\t/* disregard a trailing separator, so strlen() - 2 */\n\t\t\tsidebar_folder_name = b->path;\n\t\t\tfor (i = strlen (sidebar_folder_name) - 2; i >= 0; i--) {\n\t\t\t\tif (SidebarDelimChars &&\n\t\t\t\t\t\tstrchr (SidebarDelimChars, sidebar_folder_name[i])) {\n\t\t\t\t\tsidebar_folder_name += (i + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tsidebar_folder_name = b->path + maildir_is_prefix * (maildirlen + 1);\n\t\t}\n\t\tif (maildir_is_prefix && option (OPTSIDEBARFOLDERINDENT)) {\n\t\t\tconst char *tmp_folder_name;\n\t\t\tint lastsep = 0;\n\t\t\ttmp_folder_name = b->path + maildirlen + 1;\n\t\t\tint tmplen = (int) strlen (tmp_folder_name) - 1;\n\t\t\tfor (i = 0; i < tmplen; i++) {\n\t\t\t\tif (SidebarDelimChars && strchr (SidebarDelimChars, tmp_folder_name[i])) {\n\t\t\t\t\tsidebar_folder_depth++;\n\t\t\t\t\tlastsep = i + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (sidebar_folder_depth > 0) {\n\t\t\t\tif (option (OPTSIDEBARSHORTPATH)) {\n\t\t\t\t\ttmp_folder_name += lastsep;  /* basename */\n\t\t\t\t}\n\t\t\t\tsidebar_folder_name = malloc (strlen (tmp_folder_name) + sidebar_folder_depth*strlen (NONULL(SidebarIndentString)) + 1);\n\t\t\t\tsidebar_folder_name[0]=0;\n\t\t\t\tfor (i=0; i < sidebar_folder_depth; i++)\n\t\t\t\t\tstrncat (sidebar_folder_name, NONULL(SidebarIndentString), strlen (NONULL(SidebarIndentString)));\n\t\t\t\tstrncat (sidebar_folder_name, tmp_folder_name, strlen (tmp_folder_name));\n\t\t\t}\n\t\t}\n#ifdef USE_NOTMUCH\n\t\telse if (b->magic == M_NOTMUCH) {\n\t\t\tsidebar_folder_name = b->desc;\n\t\t}\n#endif\n\t\tchar str[SHORT_STRING];\n\t\tmake_sidebar_entry (str, sizeof (str), w, sidebar_folder_name, b);\n\t\tprintw (\"%s\", str);\n\t\tif (sidebar_folder_depth > 0)\n\t\t\tfree (sidebar_folder_name);\n\t\trow++;\n\t}\n\n\tfill_empty_space (first_row + row, num_rows - row, w);\n}\n\n\n/**\n * sb_init - Set some default values for the sidebar.\n */\nvoid\nsb_init (void)\n{\n\tOldVisible = option (OPTSIDEBAR);\n\tif (SidebarWidth > 0) {\n\t\tOldWidth = SidebarWidth;\n\t} else {\n\t\tOldWidth = 20;\n\t\tif (OldVisible) {\n\t\t\tSidebarWidth = OldWidth;\n\t\t}\n\t}\n}\n\n/**\n * sb_draw - Completely redraw the sidebar\n *\n * Completely refresh the sidebar region.  First draw the divider; then, for\n * each BUFFY, call make_sidebar_entry; finally blank out any remaining space.\n */\nvoid\nsb_draw (void)\n{\n\tif (!visible())\n\t\treturn;\n\n\t/* XXX - if transitioning from invisible to visible */\n\t/* if (OldVisible == 0) */\n\t/* \tmutt_buffy_check (1); we probably have bad or no numbers */\n\n\tint first_row = 0;\n\tint num_rows  = LINES - 2;\n\n\tif (option (OPTHELP) || option (OPTSTATUSONTOP))\n\t\tfirst_row++;\n\n\tif (option (OPTHELP))\n\t\tnum_rows--;\n\n\tint div_width = draw_divider (first_row, num_rows);\n\tif (div_width < 0)\n\t\treturn;\n\n\tif (!get_incoming()) {\n\t\tint w = MIN(COLS, (SidebarWidth - div_width));\n\t\tfill_empty_space (first_row, num_rows, w);\n\t\treturn;\n\t}\n\n\tif (!prepare_sidebar (num_rows))\n\t\treturn;\n\n\tdraw_sidebar (first_row, num_rows, div_width);\n}\n\n/**\n * sb_should_refresh - Check if the sidebar is due to be refreshed\n *\n * The \"sidebar_refresh_time\" config option allows the user to limit the frequency\n * with which the sidebar is refreshed.\n *\n * Returns:\n *\t1  Yes, refresh is due\n *\t0  No,  refresh happened recently\n */\nint\nsb_should_refresh (void)\n{\n\tif (!option (OPTSIDEBAR))\n\t\treturn 0;\n\n\tif (SidebarRefreshTime == 0)\n\t\treturn 0;\n\n\ttime_t diff = (time (NULL) - LastRefresh);\n\n\treturn (diff >= SidebarRefreshTime);\n}\n\n/**\n * sb_change_mailbox - Change the selected mailbox\n * @op: Operation code\n *\n * Change the selected mailbox, e.g. \"Next mailbox\", \"Previous Mailbox\n * with new mail\". The operations are listed OPS.SIDEBAR which is built\n * into an enum in keymap_defs.h.\n *\n * If the operation is successful, HilBuffy will be set to the new mailbox.\n * This function only *selects* the mailbox, doesn't *open* it.\n *\n * Allowed values are: OP_SIDEBAR_NEXT, OP_SIDEBAR_NEXT_NEW,\n * OP_SIDEBAR_PAGE_DOWN, OP_SIDEBAR_PAGE_UP, OP_SIDEBAR_PREV,\n * OP_SIDEBAR_PREV_NEW.\n */\nvoid\nsb_change_mailbox (int op)\n{\n\tBUFFY *b;\n\tif (!HilBuffy)\t/* It'll get reset on the next draw */\n\t\treturn;\n\n\tswitch (op) {\n\t\tcase OP_SIDEBAR_NEXT:\n\t\t\tif (!HilBuffy->next)\n\t\t\t\treturn;\n\t\t\tif (HilBuffy->next->is_hidden)\n\t\t\t\treturn;\n\t\t\tHilBuffy = HilBuffy->next;\n\t\t\tbreak;\n\t\tcase OP_SIDEBAR_NEXT_NEW:\n\t\t\tb = find_next_new (option (OPTSIDEBARNEXTNEWWRAP));\n\t\t\tif (!b) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tHilBuffy = b;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase OP_SIDEBAR_PAGE_DOWN:\n\t\t\tHilBuffy = BotBuffy;\n\t\t\tif (HilBuffy->next) {\n\t\t\t\tHilBuffy = HilBuffy->next;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase OP_SIDEBAR_PAGE_UP:\n\t\t\tHilBuffy = TopBuffy;\n\t\t\tif (HilBuffy != get_incoming()) {\n\t\t\t\tHilBuffy = HilBuffy->prev;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase OP_SIDEBAR_PREV:\n\t\t\tif (!HilBuffy->prev)\n\t\t\t\treturn;\n\t\t\tif (HilBuffy->prev->is_hidden)\t/* Can't happen, we've sorted the hidden to the end */\n\t\t\t\treturn;\n\t\t\tHilBuffy = HilBuffy->prev;\n\t\t\tbreak;\n\t\tcase OP_SIDEBAR_PREV_NEW:\n\t\t\tb = find_prev_new (option (OPTSIDEBARNEXTNEWWRAP));\n\t\t\tif (!b) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tHilBuffy = b;\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn;\n\t}\n\n\t/* We can change folder even if the sidebar is hidden */\n\tif (option (OPTSIDEBAR))\n\t\tsb_draw();\n}\n\n/**\n * sb_set_buffystats - Update the BUFFY's message counts from the CONTEXT\n * @ctx:  A mailbox CONTEXT\n *\n * Given a mailbox CONTEXT, find a matching mailbox BUFFY and copy the message\n * counts into it.\n */\nvoid\nsb_set_buffystats (const CONTEXT *ctx)\n{\n\t/* Even if the sidebar's hidden,\n\t * we should take note of the new data. */\n\tBUFFY *b = get_incoming();\n\tif (!ctx || !b)\n\t\treturn;\n\n\tfor (; b; b = b->next) {\n\t\tif (!strcmp (b->path,     ctx->path) ||\n\t\t    !strcmp (b->realpath, ctx->path)) {\n\t\t\tb->msg_unread  = ctx->unread;\n\t\t\tb->msg_count   = ctx->msgcount;\n\t\t\tb->msg_flagged = ctx->flagged;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/**\n * sb_get_highlight - Get the BUFFY that's highlighted in the sidebar\n *\n * Get the path of the mailbox that's highlighted in the sidebar.\n *\n * Returns:\n *\tMailbox path\n */\nconst char *\nsb_get_highlight (void)\n{\n\tif (!HilBuffy)\n\t\treturn NULL;\n\n\treturn HilBuffy->path;\n}\n\n/**\n * sb_set_open_buffy - Set the OpnBuffy based on a mailbox path\n * @path: Mailbox path\n *\n * Search through the list of mailboxes.  If a BUFFY has a matching path, set\n * OpnBuffy to it.\n */\nBUFFY *\nsb_set_open_buffy (const char *path)\n{\n\t/* Even if the sidebar is hidden */\n\n\tBUFFY *b = get_incoming();\n\n\tif (!path || !b)\n\t\treturn NULL;\n\n\tOpnBuffy = NULL;\n\n\tfor (; b; b = b->next) {\n\t\tif (!strcmp (b->path,     path) ||\n\t\t    !strcmp (b->realpath, path)) {\n\t\t\tOpnBuffy = b;\n\t\t\tHilBuffy = b;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn OpnBuffy;\n}\n\n/**\n * sb_set_update_time - Note the time that the sidebar was updated\n *\n * Update the timestamp representing the last sidebar update.  If the user\n * configures \"sidebar_refresh_time\", this will help to reduce traffic.\n */\nvoid\nsb_set_update_time (void)\n{\n\t/* XXX - should this be public? */\n\n\tLastRefresh = time (NULL);\n}\n\n/**\n * sb_notify_mailbox - The state of a BUFFY is about to change\n *\n * We receive a notification:\n *\tAfter a new BUFFY has been created\n *\tBefore a BUFFY is deleted\n *\n * Before a deletion, check that our pointers won't be invalidated.\n */\nvoid\nsb_notify_mailbox (BUFFY *b, int created)\n{\n\tif (!b)\n\t\treturn;\n\n\t/* Any new/deleted mailboxes will cause a refresh.  As long as\n\t * they're valid, our pointers will be updated in prepare_sidebar() */\n\n\tif (created) {\n\t\tif (!TopBuffy)\n\t\t\tTopBuffy = b;\n\t\tif (!HilBuffy)\n\t\t\tHilBuffy = b;\n\t\tif (!BotBuffy)\n\t\t\tBotBuffy = b;\n\t\tif (!Outgoing)\n\t\t\tOutgoing = b;\n\t\tif (!OpnBuffy && Context) {\n\t\t\t/* This might happen if the user \"unmailboxes *\", then\n\t\t\t * \"mailboxes\" our current mailbox back again */\n\t\t\tif (mutt_strcmp (b->path, Context->path) == 0) {\n\t\t\t\tOpnBuffy = b;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (TopBuffy == b)\n\t\t\tTopBuffy = buffy_going (TopBuffy);\n\t\tif (OpnBuffy == b)\n\t\t\tOpnBuffy = buffy_going (OpnBuffy);\n\t\tif (HilBuffy == b)\n\t\t\tHilBuffy = buffy_going (HilBuffy);\n\t\tif (BotBuffy == b)\n\t\t\tBotBuffy = buffy_going (BotBuffy);\n\t\tif (Outgoing == b)\n\t\t\tOutgoing = buffy_going (Outgoing);\n\t}\n}\n\n/**\n * sb_toggle_virtual - Switch between regular and virtual folders\n */\nvoid\nsb_toggle_virtual (void)\n{\n\tif (sidebar_source == -1)\n\t\tget_incoming();\n\n#ifdef USE_NOTMUCH\n\tif ((sidebar_source == SB_SRC_INCOMING) && VirtIncoming)\n\t\tsidebar_source = SB_SRC_VIRT;\n\telse\n#endif\n\t\tsidebar_source = SB_SRC_INCOMING;\n\n\tTopBuffy = NULL;\n\tOpnBuffy = NULL;\n\tHilBuffy = NULL;\n\tBotBuffy = NULL;\n\tOutgoing = NULL;\n\n\tsb_draw();\n}\n\n"
  },
  {
    "path": "sidebar.h",
    "content": "/* Copyright (C) 2004 Justin Hibbits <jrh29@po.cwru.edu>\n * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.com>\n * Copyright (C) 2015-2016 Richard Russon <rich@flatcap.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.\n */\n\n#ifndef SIDEBAR_H\n#define SIDEBAR_H\n\n#include \"mutt.h\"\n#include \"buffy.h\"\n\nvoid         sb_change_mailbox (int op);\nvoid         sb_draw (void);\nconst char * sb_get_highlight (void);\nvoid         sb_init (void);\nvoid         sb_notify_mailbox (BUFFY *b, int created);\nvoid         sb_set_buffystats (const CONTEXT *ctx);\nBUFFY *      sb_set_open_buffy (const char *path);\nvoid         sb_set_update_time (void);\nint          sb_should_refresh (void);\nvoid         sb_toggle_virtual (void);\n\n#endif /* SIDEBAR_H */\n"
  },
  {
    "path": "signal.c",
    "content": "/*\n * Copyright (C) 1996-2000,2012 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n\n#include <signal.h>\n#include <string.h>\n#include <sys/wait.h>\n#include <errno.h>\n\nstatic sigset_t Sigset;\nstatic sigset_t SigsetSys;\nstatic struct sigaction SysOldInt;\nstatic struct sigaction SysOldQuit;\nstatic int IsEndwin = 0;\n\n/* Attempt to catch \"ordinary\" signals and shut down gracefully. */\nstatic void exit_handler (int sig)\n{\n  curs_set (1);\n  endwin (); /* just to be safe */\n#if SYS_SIGLIST_DECLARED\n  printf(_(\"%s...  Exiting.\\n\"), sys_siglist[sig]);\n#else\n#if (__sun__ && __svr4__)\n  printf(_(\"Caught %s...  Exiting.\\n\"), _sys_siglist[sig]);\n#else\n#if (__alpha && __osf__)\n  printf(_(\"Caught %s...  Exiting.\\n\"), __sys_siglist[sig]);\n#else\n  printf(_(\"Caught signal %d...  Exiting.\\n\"), sig);\n#endif\n#endif\n#endif\n  exit (0);\n}\n\nstatic void chld_handler (int sig)\n{\n  /* empty */\n}\n\nstatic void sighandler (int sig)\n{\n  int save_errno = errno;\n\n  switch (sig)\n  {\n    case SIGTSTP: /* user requested a suspend */\n      if (!option (OPTSUSPEND))\n        break;\n      IsEndwin = isendwin ();\n      curs_set (1);\n      if (!IsEndwin)\n\tendwin ();\n      kill (0, SIGSTOP);\n\n    case SIGCONT:\n      if (!IsEndwin)\n\trefresh ();\n      mutt_curs_set (-1);\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\n      /* We don't receive SIGWINCH when suspended; however, no harm is done by\n       * just assuming we received one, and triggering the 'resize' anyway. */\n      SigWinch = 1;\n#endif\n      break;\n\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\n    case SIGWINCH:\n      SigWinch = 1;\n      break;\n#endif\n\n    case SIGINT:\n      SigInt = 1;\n      break;\n\n  }\n  errno = save_errno;\n}\n\n#ifdef USE_SLANG_CURSES\nint mutt_intr_hook (void)\n{\n  return (-1);\n}\n#endif /* USE_SLANG_CURSES */\n\nvoid mutt_signal_init (void)\n{\n  struct sigaction act;\n\n  sigemptyset (&act.sa_mask);\n  act.sa_flags = 0;\n  act.sa_handler = SIG_IGN;\n  sigaction (SIGPIPE, &act, NULL);\n\n  act.sa_handler = exit_handler;\n  sigaction (SIGTERM, &act, NULL);\n  sigaction (SIGHUP, &act, NULL);\n  sigaction (SIGQUIT, &act, NULL);\n\n  /* we want to avoid race conditions */\n  sigaddset (&act.sa_mask, SIGTSTP);\n\n  act.sa_handler = sighandler;\n\n  /* we want SIGALRM to abort the current syscall, so we do this before\n   * setting the SA_RESTART flag below.  currently this is only used to\n   * timeout on a connect() call in a reasonable amount of time.\n   */\n  sigaction (SIGALRM, &act, NULL);\n\n  /* we also don't want to mess with interrupted system calls */\n#ifdef SA_RESTART\n  act.sa_flags = SA_RESTART;\n#endif\n\n  sigaction (SIGCONT, &act, NULL);\n  sigaction (SIGTSTP, &act, NULL);\n  sigaction (SIGINT, &act, NULL);\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\n  sigaction (SIGWINCH, &act, NULL);\n#endif\n\n  /* POSIX doesn't allow us to ignore SIGCHLD,\n   * so we just install a dummy handler for it\n   */\n  act.sa_handler = chld_handler;\n  /* don't need to block any other signals here */\n  sigemptyset (&act.sa_mask);\n  /* we don't want to mess with stopped children */\n  act.sa_flags |= SA_NOCLDSTOP;\n  sigaction (SIGCHLD, &act, NULL);\n\n#ifdef USE_SLANG_CURSES\n  /* This bit of code is required because of the implementation of\n   * SLcurses_wgetch().  If a signal is received (like SIGWINCH) when we\n   * are in blocking mode, SLsys_getkey() will not return an error unless\n   * a handler function is defined and it returns -1.  This is needed so\n   * that if the user resizes the screen while at a prompt, it will just\n   * abort and go back to the main-menu.\n   */\n  SLang_getkey_intr_hook = mutt_intr_hook;\n#endif\n}\n\n/* signals which are important to block while doing critical ops */\nvoid mutt_block_signals (void)\n{\n  if (!option (OPTSIGNALSBLOCKED))\n  {\n    sigemptyset (&Sigset);\n    sigaddset (&Sigset, SIGTERM);\n    sigaddset (&Sigset, SIGHUP);\n    sigaddset (&Sigset, SIGTSTP);\n    sigaddset (&Sigset, SIGINT);\n#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)\n    sigaddset (&Sigset, SIGWINCH);\n#endif\n    sigprocmask (SIG_BLOCK, &Sigset, 0);\n    set_option (OPTSIGNALSBLOCKED);\n  }\n}\n\n/* restore the previous signal mask */\nvoid mutt_unblock_signals (void)\n{\n  if (option (OPTSIGNALSBLOCKED))\n  {\n    sigprocmask (SIG_UNBLOCK, &Sigset, 0);\n    unset_option (OPTSIGNALSBLOCKED);\n  }\n}\n\nvoid mutt_block_signals_system (void)\n{\n  struct sigaction sa;\n\n  if (! option (OPTSYSSIGNALSBLOCKED))\n  {\n    /* POSIX: ignore SIGINT and SIGQUIT & block SIGCHLD  before exec */\n    sa.sa_handler = SIG_IGN;\n    sa.sa_flags = 0;\n    sigemptyset (&sa.sa_mask);\n    sigaction (SIGINT, &sa, &SysOldInt);\n    sigaction (SIGQUIT, &sa, &SysOldQuit);\n\n    sigemptyset (&SigsetSys);\n    sigaddset (&SigsetSys, SIGCHLD);\n    sigprocmask (SIG_BLOCK, &SigsetSys, 0);\n    set_option (OPTSYSSIGNALSBLOCKED);\n  }\n}\n\nvoid mutt_unblock_signals_system (int catch)\n{\n  if (option (OPTSYSSIGNALSBLOCKED))\n  {\n    sigprocmask (SIG_UNBLOCK, &SigsetSys, NULL);\n    if (catch)\n    {\n      sigaction (SIGQUIT, &SysOldQuit, NULL);\n      sigaction (SIGINT, &SysOldInt, NULL);\n    }\n    else\n    {\n      struct sigaction sa;\n\n      sa.sa_handler = SIG_DFL;\n      sigemptyset (&sa.sa_mask);\n      sa.sa_flags = 0;\n      sigaction (SIGQUIT, &sa, NULL);\n      sigaction (SIGINT, &sa, NULL);\n    }\n\n    unset_option (OPTSYSSIGNALSBLOCKED);\n  }\n}\n\nvoid mutt_allow_interrupt (int disposition)\n{\n  struct sigaction sa;\n  \n  memset (&sa, 0, sizeof sa);\n  sa.sa_handler = sighandler;\n#ifdef SA_RESTART\n  if (disposition == 0)\n    sa.sa_flags |= SA_RESTART;\n#endif\n  sigaction (SIGINT, &sa, NULL);\n}\n"
  },
  {
    "path": "smime.c",
    "content": "/*\n * Copyright (C) 2001-2002 Oliver Ehli <elmy@acm.org>\n * Copyright (C) 2002 Mike Schiraldi <raldi@research.netsol.com>\n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_menu.h\"\n#include \"smime.h\"\n#include \"mime.h\"\n#include \"copy.h\"\n\n#include <sys/wait.h>\n#include <string.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <sys/stat.h>\n#include <errno.h>\n#include <ctype.h>\n\n#ifdef HAVE_LOCALE_H\n#include <locale.h>\n#endif\n\n#ifdef HAVE_SYS_TIME_H\n# include <sys/time.h>\n#endif\n\n#ifdef HAVE_SYS_RESOURCE_H\n# include <sys/resource.h>\n#endif\n\n#ifdef CRYPT_BACKEND_CLASSIC_SMIME\n\n#include \"mutt_crypt.h\"\n\nstruct smime_command_context {\n  const char *key;\t\t    /* %k */\n  const char *cryptalg;\t\t    /* %a */\n  const char *digestalg;\t    /* %d */\n  const char *fname;\t\t    /* %f */\n  const char *sig_fname;\t    /* %s */\n  const char *certificates;\t    /* %c */\n  const char *intermediates;        /* %i */\n};\n\n\nchar SmimePass[STRING];\ntime_t SmimeExptime = 0; /* when does the cached passphrase expire? */\n\n\nstatic char SmimeKeyToUse[_POSIX_PATH_MAX] = { 0 };\nstatic char SmimeCertToUse[_POSIX_PATH_MAX];\nstatic char SmimeIntermediateToUse[_POSIX_PATH_MAX];\n\n\nvoid smime_free_key (smime_key_t **keylist)\n{\n  smime_key_t *key;\n\n  if (!keylist)\n    return;\n\n  while (*keylist)\n  {\n    key = *keylist;\n    *keylist = (*keylist)->next;\n\n    FREE (&key->email);\n    FREE (&key->hash);\n    FREE (&key->label);\n    FREE (&key->issuer);\n    FREE (&key);\n  }\n}\n\nstatic smime_key_t *smime_copy_key (smime_key_t *key)\n{\n  smime_key_t *copy;\n\n  if (!key)\n    return NULL;\n\n  copy = safe_calloc (sizeof (smime_key_t), 1);\n  copy->email  = safe_strdup(key->email);\n  copy->hash   = safe_strdup(key->hash);\n  copy->label  = safe_strdup(key->label);\n  copy->issuer = safe_strdup(key->issuer);\n  copy->trust  = key->trust;\n  copy->flags  = key->flags;\n\n  return copy;\n}\n\n\n/*\n *     Queries and passphrase handling.\n */\n\n\n\n\n/* these are copies from pgp.c */\n\n\nvoid smime_void_passphrase (void)\n{\n  memset (SmimePass, 0, sizeof (SmimePass));\n  SmimeExptime = 0;\n}\n\nint smime_valid_passphrase (void)\n{\n  time_t now = time (NULL);\n\n  if (now < SmimeExptime)\n    /* Use cached copy.  */\n    return 1;\n\n  smime_void_passphrase();\n  \n  if (mutt_get_password (_(\"Enter S/MIME passphrase:\"), SmimePass, sizeof (SmimePass)) == 0)\n    {\n      SmimeExptime = time (NULL) + SmimeTimeout;\n      return (1);\n    }\n  else\n    SmimeExptime = 0;\n\n  return 0;\n}\n\n\n/*\n *     The OpenSSL interface\n */\n\n/* This is almost identical to ppgp's invoking interface. */\n\nstatic const char *_mutt_fmt_smime_command (char *dest,\n\t\t\t\t\t    size_t destlen,\n\t\t\t\t\t    size_t col,\n\t\t\t\t\t    char op,\n\t\t\t\t\t    const char *src,\n\t\t\t\t\t    const char *prefix,\n\t\t\t\t\t    const char *ifstring,\n\t\t\t\t\t    const char *elsestring,\n\t\t\t\t\t    unsigned long data,\n\t\t\t\t\t    format_flag flags)\n{\n  char fmt[16];\n  struct smime_command_context *cctx = (struct smime_command_context *) data;\n  int optional = (flags & M_FORMAT_OPTIONAL);\n  \n  switch (op)\n  {\n    case 'C':\n    {\n      if (!optional)\n      {\n\tchar path[_POSIX_PATH_MAX];\n\tchar buf1[LONG_STRING], buf2[LONG_STRING];\n\tstruct stat sb;\n\n\tstrfcpy (path, NONULL (SmimeCALocation), sizeof (path));\n\tmutt_expand_path (path, sizeof (path));\n\tmutt_quote_filename (buf1, sizeof (buf1), path);\n\n\tif (stat (path, &sb) != 0 || !S_ISDIR (sb.st_mode))\n\t  snprintf (buf2, sizeof (buf2), \"-CAfile %s\", buf1);\n\telse\n\t  snprintf (buf2, sizeof (buf2), \"-CApath %s\", buf1);\n\t\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, buf2);\n      }\n      else if (!SmimeCALocation)\n\toptional = 0;\n      break;\n    }\n    \n    case 'c':\n    {           /* certificate (list) */\n      if (!optional) {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL(cctx->certificates));\n      }\n      else if (!cctx->certificates)\n\toptional = 0;\n      break;\n    }\n    \n    case 'i':\n    {           /* intermediate certificates  */\n      if (!optional) {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL(cctx->intermediates));\n      }\n      else if (!cctx->intermediates)\n\toptional = 0;\n      break;\n    }\n    \n    case 's':\n    {           /* detached signature */\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (cctx->sig_fname));\n      }\n      else if (!cctx->sig_fname)\n\toptional = 0;\n      break;\n    }\n    \n    case 'k':\n    {           /* private key */\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (cctx->key));\n      }\n      else if (!cctx->key)\n\toptional = 0;\n      break;\n    }\n    \n    case 'a':\n    {           /* algorithm for encryption */\n      if (!optional) {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (cctx->cryptalg));\n      }\n      else if (!cctx->key)\n\toptional = 0;\n      break;\n    }\n    \n    case 'f':\n    {           /* file to process */\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (cctx->fname));\n      }\n      else if (!cctx->fname)\n\toptional = 0;\n      break;\n    }\n    \n    case 'd':\n    {           /* algorithm for the signature message digest */\n      if (!optional) {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tsnprintf (dest, destlen, fmt, NONULL (cctx->digestalg));\n      }\n      else if (!cctx->key)\n\toptional = 0;\n      break;\n    }\n\n    default:\n      *dest = '\\0';\n      break;\n  }\n\n  if (optional)\n    mutt_FormatString (dest, destlen, col, ifstring, _mutt_fmt_smime_command,\n\t\t       data, 0);\n  else if (flags & M_FORMAT_OPTIONAL)\n    mutt_FormatString (dest, destlen, col, elsestring, _mutt_fmt_smime_command,\n\t\t       data, 0);\n\n  return (src);\n}\n\n\n\nstatic void mutt_smime_command (char *d, size_t dlen,\n\t\t\t\tstruct smime_command_context *cctx, const char *fmt)\n{\n  mutt_FormatString (d, dlen, 0, NONULL(fmt), _mutt_fmt_smime_command,\n\t\t    (unsigned long) cctx, 0);\n  dprint (2,(debugfile, \"mutt_smime_command: %s\\n\", d));\n}\n\n\n\n\nstatic pid_t smime_invoke (FILE **smimein, FILE **smimeout, FILE **smimeerr,\n\t\t\t   int smimeinfd, int smimeoutfd, int smimeerrfd,\n\t\t\t   const char *fname,\n\t\t\t   const char *sig_fname,\n\t\t\t   const char *cryptalg,\n\t\t\t   const char *digestalg,\n\t\t\t   const char *key,\n\t\t\t   const char *certificates,\n\t\t\t   const char *intermediates,\n\t\t\t   const char *format)\n{\n  struct smime_command_context cctx;\n  char cmd[HUGE_STRING];\n  \n  memset (&cctx, 0, sizeof (cctx));\n\n  if (!format || !*format)\n    return (pid_t) -1;\n  \n  cctx.fname\t       = fname;\n  cctx.sig_fname       = sig_fname;\n  cctx.key\t       = key;\n  cctx.cryptalg\t       = cryptalg;\n  cctx.digestalg       = digestalg;\n  cctx.certificates    = certificates;\n  cctx.intermediates   = intermediates;\n  \n  mutt_smime_command (cmd, sizeof (cmd), &cctx, format);\n\n  return mutt_create_filter_fd (cmd, smimein, smimeout, smimeerr,\n\t\t\t\tsmimeinfd, smimeoutfd, smimeerrfd);\n}\n\n\n\n\n\n\n/*\n *    Key and certificate handling.\n */\n\n\nstatic char *smime_key_flags (int flags)\n{\n  static char buff[3];\n\n  if (!(flags & KEYFLAG_CANENCRYPT))\n    buff[0] = '-';\n  else\n    buff[0] = 'e';\n\n  if (!(flags & KEYFLAG_CANSIGN))\n    buff[1] = '-';\n  else\n    buff[1] = 's';\n\n  buff[2] = '\\0';\n\n  return buff;\n}\n\n\nstatic void smime_entry (char *s, size_t l, MUTTMENU * menu, int num)\n{\n  smime_key_t **Table = (smime_key_t **) menu->data;\n  smime_key_t *this = Table[num];\n  char* truststate;\n  switch(this->trust) {\n    case 't':\n      truststate = N_(\"Trusted   \");\n      break;\n    case 'v':\n      truststate = N_(\"Verified  \");\n      break;\n    case 'u':\n      truststate = N_(\"Unverified\");\n      break;\n    case 'e':\n      truststate = N_(\"Expired   \");\n      break;\n    case 'r':\n      truststate = N_(\"Revoked   \");\n      break;\n    case 'i':\n      truststate = N_(\"Invalid   \");\n      break;\n    default:\n      truststate = N_(\"Unknown   \");\n  }\n  snprintf(s, l, \" 0x%s %s %s %-35.35s %s\", this->hash,\n           smime_key_flags (this->flags), truststate, this->email, this->label);\n}\n\n\nstatic smime_key_t *smime_select_key (smime_key_t *keys, char *query)\n{\n  smime_key_t **table = NULL;\n  int table_size = 0;\n  int table_index = 0;\n  smime_key_t *key = NULL;\n  smime_key_t *selected_key = NULL;\n  char helpstr[LONG_STRING];\n  char buf[LONG_STRING];\n  char title[256];\n  MUTTMENU* menu;\n  char *s = \"\";\n  int done = 0;\n\n  for (table_index = 0, key = keys; key; key = key->next)\n  {\n    if (table_index == table_size)\n    {\n      table_size += 5;\n      safe_realloc (&table, sizeof (smime_key_t *) * table_size);\n    }\n\n    table[table_index++] = key;\n  }\n\n  snprintf(title, sizeof(title), _(\"S/MIME certificates matching \\\"%s\\\".\"),\n    query);\n\n  /* Make Helpstring */\n  helpstr[0] = 0;\n  mutt_make_help (buf, sizeof (buf), _(\"Exit  \"), MENU_SMIME, OP_EXIT);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n  mutt_make_help (buf, sizeof (buf), _(\"Select  \"), MENU_SMIME,\n      OP_GENERIC_SELECT_ENTRY);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n  mutt_make_help (buf, sizeof(buf), _(\"Help\"), MENU_SMIME, OP_HELP);\n  strcat (helpstr, buf);\t/* __STRCAT_CHECKED__ */\n\n  /* Create the menu */\n  menu = mutt_new_menu(MENU_SMIME);\n  menu->max = table_index;\n  menu->make_entry = smime_entry;\n  menu->help = helpstr;\n  menu->data = table;\n  menu->title = title;\n  /* sorting keys might be done later - TODO */\n\n  mutt_clear_error();\n\n  done = 0;\n  while (!done)\n  {\n    switch (mutt_menuLoop (menu))\n    {\n      case OP_GENERIC_SELECT_ENTRY:\n        if (table[menu->current]->trust != 't')\n        {\n          switch (table[menu->current]->trust)\n          {\n            case 'i':\n            case 'r':\n            case 'e':\n              s = N_(\"ID is expired/disabled/revoked.\");\n              break;\n            case 'u':\n              s = N_(\"ID has undefined validity.\");\n              break;\n            case 'v':\n              s = N_(\"ID is not trusted.\");\n              break;\n          }\n\n          snprintf (buf, sizeof (buf), _(\"%s Do you really want to use the key?\"),\n                    _(s));\n\n          if (mutt_yesorno (buf, M_NO) != M_YES)\n          {\n            mutt_clear_error ();\n            break;\n          }\n        }\n\n        selected_key = table[menu->current];\n        done = 1;\n        break;\n      case OP_EXIT:\n        done = 1;\n        break;\n    }\n  }\n\n  mutt_menuDestroy (&menu);\n  FREE (&table);\n  set_option (OPTNEEDREDRAW);\n\n  return selected_key;\n}\n\nstatic smime_key_t *smime_parse_key(char *buf)\n{\n  smime_key_t *key;\n  char *pend, *p;\n  int field = 0;\n\n  key = safe_calloc (sizeof (smime_key_t), 1);\n\n  for (p = buf; p; p = pend)\n  {\n    /* Some users manually maintain their .index file, and use a tab\n     * as a delimiter, which the old parsing code (using fscanf)\n     * happened to allow.  smime_keys.pl uses a space, so search for both.\n     */\n    if ((pend = strchr (p, ' ')) || (pend = strchr (p, '\\t')) ||\n        (pend = strchr (p, '\\n')))\n      *pend++ = 0;\n\n    /* For backward compatibility, don't count consecutive delimiters\n     * as an empty field.\n     */\n    if (!*p)\n      continue;\n\n    field++;\n\n    switch (field)\n    {\n      case 1:                   /* mailbox */\n        key->email = safe_strdup (p);\n        break;\n      case 2:                   /* hash */\n        key->hash = safe_strdup (p);\n        break;\n      case 3:                   /* label */\n        key->label = safe_strdup (p);\n        break;\n      case 4:                   /* issuer */\n        key->issuer = safe_strdup (p);\n        break;\n      case 5:                   /* trust */\n        key->trust = *p;\n        break;\n      case 6:                   /* purpose */\n        while (*p)\n        {\n          switch (*p++)\n          {\n            case 'e':\n              key->flags |= KEYFLAG_CANENCRYPT;\n              break;\n\n            case 's':\n              key->flags |= KEYFLAG_CANSIGN;\n              break;\n          }\n        }\n        break;\n    }\n  }\n\n  /* Old index files could be missing issuer, trust, and purpose,\n   * but anything less than that is an error. */\n  if (field < 3)\n  {\n    smime_free_key (&key);\n    return NULL;\n  }\n\n  if (field < 4)\n    key->issuer = safe_strdup (\"?\");\n\n  if (field < 5)\n    key->trust = 't';\n\n  if (field < 6)\n    key->flags = (KEYFLAG_CANENCRYPT | KEYFLAG_CANSIGN);\n\n  return key;\n}\n\nstatic smime_key_t *smime_get_candidates(char *search, short public)\n{\n  char index_file[_POSIX_PATH_MAX];\n  FILE *fp;\n  char buf[LONG_STRING];\n  smime_key_t *key, *results, **results_end;\n\n  results = NULL;\n  results_end = &results;\n\n  snprintf(index_file, sizeof (index_file), \"%s/.index\",\n    public ? NONULL(SmimeCertificates) : NONULL(SmimeKeys));\n\n  if ((fp = safe_fopen (index_file, \"r\")) == NULL)\n  {\n    mutt_perror (index_file);\n    return NULL;\n  }\n\n  while (fgets (buf, sizeof (buf), fp))\n  {\n    if ((! *search) || mutt_stristr (buf, search))\n    {\n      key = smime_parse_key (buf);\n      if (key)\n      {\n        *results_end = key;\n        results_end = &key->next;\n      }\n    }\n  }\n\n  safe_fclose (&fp);\n\n  return results;\n}\n\n/* Returns the first matching key record, without prompting or checking of\n * abilities or trust.\n */\nstatic smime_key_t *smime_get_key_by_hash(char *hash, short public)\n{\n  smime_key_t *results, *result;\n  smime_key_t *match = NULL;\n\n  results = smime_get_candidates(hash, public);\n  for (result = results; result; result = result->next)\n  {\n    if (mutt_strcasecmp (hash, result->hash) == 0)\n    {\n      match = smime_copy_key (result);\n      break;\n    }\n  }\n\n  smime_free_key (&results);\n\n  return match;\n}\n\nstatic smime_key_t *smime_get_key_by_addr(char *mailbox, short abilities, short public, short may_ask)\n{\n  smime_key_t *results, *result;\n  smime_key_t *matches = NULL;\n  smime_key_t **matches_end = &matches;\n  smime_key_t *match;\n  smime_key_t *trusted_match = NULL;\n  smime_key_t *valid_match = NULL;\n  smime_key_t *return_key = NULL;\n  int multi_trusted_matches = 0;\n\n  if (! mailbox)\n    return NULL;\n\n  results = smime_get_candidates(mailbox, public);\n  for (result = results; result; result = result->next)\n  {\n    if (abilities && !(result->flags & abilities))\n    {\n      continue;\n    }\n\n    if (mutt_strcasecmp (mailbox, result->email) == 0)\n    {\n      match = smime_copy_key (result);\n      *matches_end = match;\n      matches_end = &match->next;\n\n      if (match->trust == 't')\n      {\n        if (trusted_match &&\n            (mutt_strcasecmp (match->hash, trusted_match->hash) != 0))\n        {\n          multi_trusted_matches = 1;\n        }\n        trusted_match = match;\n      }\n      else if ((match->trust == 'u') || (match->trust == 'v'))\n      {\n        valid_match = match;\n      }\n    }\n  }\n\n  smime_free_key (&results);\n\n  if (matches)\n  {\n    if (! may_ask)\n    {\n      if (trusted_match)\n        return_key = smime_copy_key (trusted_match);\n      else if (valid_match)\n        return_key = smime_copy_key (valid_match);\n      else\n        return_key = NULL;\n    }\n    else if (trusted_match && !multi_trusted_matches)\n    {\n      return_key = smime_copy_key (trusted_match);\n    }\n    else\n    {\n      return_key = smime_copy_key (smime_select_key (matches, mailbox));\n    }\n\n    smime_free_key (&matches);\n  }\n\n  return return_key;\n}\n\nstatic smime_key_t *smime_get_key_by_str(char *str, short abilities, short public)\n{\n  smime_key_t *results, *result;\n  smime_key_t *matches = NULL;\n  smime_key_t **matches_end = &matches;\n  smime_key_t *match;\n  smime_key_t *return_key = NULL;\n\n  if (! str)\n    return NULL;\n\n  results = smime_get_candidates(str, public);\n  for (result = results; result; result = result->next)\n  {\n    if (abilities && !(result->flags & abilities))\n    {\n      continue;\n    }\n\n    if ((mutt_strcasecmp (str, result->hash) == 0) ||\n        mutt_stristr(result->email, str) ||\n        mutt_stristr(result->label, str))\n    {\n      match = smime_copy_key (result);\n      *matches_end = match;\n      matches_end = &match->next;\n    }\n  }\n\n  smime_free_key (&results);\n\n  if (matches)\n  {\n    return_key = smime_copy_key (smime_select_key (matches, str));\n    smime_free_key (&matches);\n  }\n\n  return return_key;\n}\n\n\nsmime_key_t *smime_ask_for_key(char *prompt, short abilities, short public)\n{\n  smime_key_t *key;\n  char resp[SHORT_STRING];\n\n  if (!prompt) prompt = _(\"Enter keyID: \");\n\n  mutt_clear_error ();\n\n  FOREVER\n  {\n    resp[0] = 0;\n    if (mutt_get_field (prompt, resp, sizeof (resp), M_CLEAR) != 0)\n      return NULL;\n\n    if ((key = smime_get_key_by_str (resp, abilities, public)))\n      return key;\n\n    BEEP ();\n  }\n}\n\n\n\n/* \n   This sets the '*ToUse' variables for an upcoming decryption, where\n   the required key is different from SmimeDefaultKey.\n*/\n\nvoid _smime_getkeys (char *mailbox)\n{\n  smime_key_t *key = NULL;\n  char *k = NULL;\n  char buf[STRING];\n\n  key = smime_get_key_by_addr (mailbox, KEYFLAG_CANENCRYPT, 0, 1);\n\n  if (!key)\n  {\n    snprintf(buf, sizeof(buf), _(\"Enter keyID for %s: \"),\n\t     mailbox);\n    key = smime_ask_for_key (buf, KEYFLAG_CANENCRYPT, 0);\n  }\n\n  if (key)\n  {\n    k = key->hash;\n\n    /* the key used last time. */\n    if (*SmimeKeyToUse && \n        !mutt_strcasecmp (k, SmimeKeyToUse + mutt_strlen (SmimeKeys)+1))\n    {\n      smime_free_key (&key);\n      return;\n    }\n    else smime_void_passphrase ();\n\n    snprintf (SmimeKeyToUse, sizeof (SmimeKeyToUse), \"%s/%s\", \n\t      NONULL(SmimeKeys), k);\n    \n    snprintf (SmimeCertToUse, sizeof (SmimeCertToUse), \"%s/%s\",\n\t      NONULL(SmimeCertificates), k);\n\n    if (mutt_strcasecmp (k, SmimeDefaultKey))\n      smime_void_passphrase ();\n\n    smime_free_key (&key);\n    return;\n  }\n\n  if (*SmimeKeyToUse)\n  {\n    if (!mutt_strcasecmp (SmimeDefaultKey, \n                          SmimeKeyToUse + mutt_strlen (SmimeKeys)+1))\n      return;\n\n    smime_void_passphrase ();\n  }\n\n  snprintf (SmimeKeyToUse, sizeof (SmimeKeyToUse), \"%s/%s\", \n\t    NONULL (SmimeKeys), NONULL (SmimeDefaultKey));\n  \n  snprintf (SmimeCertToUse, sizeof (SmimeCertToUse), \"%s/%s\",\n\t    NONULL (SmimeCertificates), NONULL (SmimeDefaultKey));\n}\n\nvoid smime_getkeys (ENVELOPE *env)\n{\n  ADDRESS *t;\n  int found = 0;\n\n  if (option (OPTSDEFAULTDECRYPTKEY) && SmimeDefaultKey && *SmimeDefaultKey)\n  {\n    snprintf (SmimeKeyToUse, sizeof (SmimeKeyToUse), \"%s/%s\", \n\t      NONULL (SmimeKeys), SmimeDefaultKey);\n    \n    snprintf (SmimeCertToUse, sizeof (SmimeCertToUse), \"%s/%s\",\n\t      NONULL(SmimeCertificates), SmimeDefaultKey);\n\n    return;\n  }\n\n  for (t = env->to; !found && t; t = t->next)\n    if (mutt_addr_is_user (t))\n    {\n      found = 1;\n      _smime_getkeys (t->mailbox);\n    }\n  for (t = env->cc; !found && t; t = t->next)\n    if (mutt_addr_is_user (t))\n    {\n      found = 1;\n      _smime_getkeys (t->mailbox);\n    }\n  if (!found && (t = mutt_default_from()))\n  {\n    _smime_getkeys (t->mailbox);\n    rfc822_free_address (&t);\n  }\n}\n\n/* This routine attempts to find the keyids of the recipients of a message.\n * It returns NULL if any of the keys can not be found.\n * If oppenc_mode is true, only keys that can be determined without\n * prompting will be used.\n */\n\nchar *smime_findKeys (ADDRESS *adrlist, int oppenc_mode)\n{\n  smime_key_t *key = NULL;\n  char *keyID, *keylist = NULL;\n  size_t keylist_size = 0;\n  size_t keylist_used = 0;\n  ADDRESS *p, *q;\n\n  for (p = adrlist; p ; p = p->next)\n  {\n    char buf[LONG_STRING];\n\n    q = p;\n\n    key = smime_get_key_by_addr (q->mailbox, KEYFLAG_CANENCRYPT, 1, !oppenc_mode);\n    if ((key == NULL) && (! oppenc_mode))\n    {\n      snprintf(buf, sizeof(buf),\n\t       _(\"Enter keyID for %s: \"),\n\t       q->mailbox);\n      key = smime_ask_for_key (buf, KEYFLAG_CANENCRYPT, 1);\n    }\n    if (!key)\n    {\n      if (! oppenc_mode)\n        mutt_message (_(\"No (valid) certificate found for %s.\"), q->mailbox);\n      FREE (&keylist);\n      return NULL;\n    }\n    \n    keyID = key->hash;\n    keylist_size += mutt_strlen (keyID) + 2;\n    safe_realloc (&keylist, keylist_size);\n    sprintf (keylist + keylist_used, \"%s\\n\", keyID);\t/* __SPRINTF_CHECKED__ */\n    keylist_used = mutt_strlen (keylist);\n\n    smime_free_key (&key);\n  }\n  return (keylist);\n}\n\n\n\n\n\n\nstatic int smime_handle_cert_email (char *certificate, char *mailbox,\n\t\t\t\t   int copy, char ***buffer, int *num)\n{\n  FILE *fpout = NULL, *fperr = NULL;\n  char tmpfname[_POSIX_PATH_MAX];\n  char email[STRING];\n  int ret = -1, count = 0;\n  pid_t thepid;\n  size_t len = 0;\n\n  mutt_mktemp (tmpfname, sizeof (tmpfname));\n  if ((fperr = safe_fopen (tmpfname, \"w+\")) == NULL)\n  {\n    mutt_perror (tmpfname);\n    return 1;\n  }\n  mutt_unlink (tmpfname);\n\n  mutt_mktemp (tmpfname, sizeof (tmpfname));\n  if ((fpout = safe_fopen (tmpfname, \"w+\")) == NULL)\n  {\n    safe_fclose (&fperr);\n    mutt_perror (tmpfname);\n    return 1;\n  }\n  mutt_unlink (tmpfname);\n\n  if ((thepid =  smime_invoke (NULL, NULL, NULL,\n\t\t\t       -1, fileno (fpout), fileno (fperr),\n\t\t\t       certificate, NULL, NULL, NULL, NULL, NULL, NULL,\n\t\t\t       SmimeGetCertEmailCommand))== -1)\n  {\n    mutt_message (_(\"Error: unable to create OpenSSL subprocess!\"));\n    safe_fclose (&fperr);\n    safe_fclose (&fpout);\n    return 1;\n  }\n\n  mutt_wait_filter (thepid);\n\n  fflush (fpout);\n  rewind (fpout);\n  fflush (fperr);\n  rewind (fperr);\n\n\n  while ((fgets (email, sizeof (email), fpout)))\n  {\n    len = mutt_strlen (email);\n    if (len && (email[len - 1] == '\\n'))\n      email[len - 1] = '\\0';\n    if(mutt_strncasecmp (email, mailbox, mutt_strlen (mailbox)) == 0)\n      ret=1;\n\n    ret = ret < 0 ? 0 : ret;\n    count++;\n  }\n\n  if (ret == -1)\n  {\n    mutt_endwin(NULL);\n    mutt_copy_stream (fperr, stdout);\n    mutt_any_key_to_continue (_(\"Error: unable to create OpenSSL subprocess!\"));\n    ret = 1;\n  }\n  else if (!ret)\n    ret = 1;\n  else ret = 0;\n\n  if(copy && buffer && num)\n  {\n    (*num) = count;\n    *buffer =  safe_calloc(sizeof(char*), count);\n    count = 0;\n\n    rewind (fpout);\n    while ((fgets (email, sizeof (email), fpout)))\n    {\n      len = mutt_strlen (email);\n      if (len && (email[len - 1] == '\\n'))\n        email[len - 1] = '\\0';\n      (*buffer)[count] = safe_calloc(1, mutt_strlen (email) + 1);\n      strncpy((*buffer)[count], email, mutt_strlen (email));\n      count++;\n    }\n  }\n  else if(copy) ret = 2;\n\n  safe_fclose (&fpout);\n  safe_fclose (&fperr);\n\n  return ret;\n}\n\n\n\nstatic char *smime_extract_certificate (char *infile)\n{\n  FILE *fpout = NULL, *fperr = NULL;\n  char pk7out[_POSIX_PATH_MAX], certfile[_POSIX_PATH_MAX];\n  char tmpfname[_POSIX_PATH_MAX];\n  pid_t thepid;\n  int empty;\n\n\n  mutt_mktemp (tmpfname, sizeof (tmpfname));\n  if ((fperr = safe_fopen (tmpfname, \"w+\")) == NULL)\n  {\n    mutt_perror (tmpfname);\n    return NULL;\n  }\n  mutt_unlink (tmpfname);\n\n  mutt_mktemp (pk7out, sizeof (pk7out));\n  if ((fpout = safe_fopen (pk7out, \"w+\")) == NULL)\n  {\n    safe_fclose (&fperr);\n    mutt_perror (pk7out);\n    return NULL;\n  }\n\n  /* Step 1: Convert the signature to a PKCS#7 structure, as we can't\n     extract the full set of certificates directly.\n  */\n  if ((thepid =  smime_invoke (NULL, NULL, NULL,\n\t\t\t       -1, fileno (fpout), fileno (fperr),\n\t\t\t       infile, NULL, NULL, NULL, NULL, NULL, NULL,\n\t\t\t       SmimePk7outCommand))== -1)\n  {\n    mutt_any_key_to_continue (_(\"Error: unable to create OpenSSL subprocess!\"));\n    safe_fclose (&fperr);\n    safe_fclose (&fpout);\n    mutt_unlink (pk7out);\n    return NULL;\n  }\n\n  mutt_wait_filter (thepid);\n\n\n  fflush (fpout);\n  rewind (fpout);\n  fflush (fperr);\n  rewind (fperr);\n  empty = (fgetc (fpout) == EOF);\n  if (empty)\n  {\n    mutt_perror (pk7out);\n    mutt_copy_stream (fperr, stdout);\n    safe_fclose (&fpout);\n    safe_fclose (&fperr);\n    mutt_unlink (pk7out);\n    return NULL;\n    \n  }\n\n\n  safe_fclose (&fpout);\n  mutt_mktemp (certfile, sizeof (certfile));\n  if ((fpout = safe_fopen (certfile, \"w+\")) == NULL)\n  {\n    safe_fclose (&fperr);\n    mutt_unlink (pk7out);\n    mutt_perror (certfile);\n    return NULL;\n  }\n  \n  /* Step 2: Extract the certificates from a PKCS#7 structure.\n   */\n  if ((thepid =  smime_invoke (NULL, NULL, NULL,\n\t\t\t       -1, fileno (fpout), fileno (fperr),\n\t\t\t       pk7out, NULL, NULL, NULL, NULL, NULL, NULL,\n\t\t\t       SmimeGetCertCommand))== -1)\n  {\n    mutt_any_key_to_continue (_(\"Error: unable to create OpenSSL subprocess!\"));\n    safe_fclose (&fperr);\n    safe_fclose (&fpout);\n    mutt_unlink (pk7out);\n    mutt_unlink (certfile);\n    return NULL;\n  }\n\n  mutt_wait_filter (thepid);\n\n  mutt_unlink (pk7out);\n\n  fflush (fpout);\n  rewind (fpout);\n  fflush (fperr);\n  rewind (fperr);\n  empty =  (fgetc (fpout) == EOF);\n  if (empty)\n  {\n    mutt_copy_stream (fperr, stdout);\n    safe_fclose (&fpout);\n    safe_fclose (&fperr);\n    mutt_unlink (certfile);\n    return NULL;\n  }\n\n  safe_fclose (&fpout);\n  safe_fclose (&fperr);\n\n  return safe_strdup (certfile);\n}\n\nstatic char *smime_extract_signer_certificate (char *infile)\n{\n  FILE *fpout = NULL, *fperr = NULL;\n  char pk7out[_POSIX_PATH_MAX], certfile[_POSIX_PATH_MAX];\n  char tmpfname[_POSIX_PATH_MAX];\n  pid_t thepid;\n  int empty;\n\n\n  mutt_mktemp (tmpfname, sizeof (tmpfname));\n  if ((fperr = safe_fopen (tmpfname, \"w+\")) == NULL)\n  {\n    mutt_perror (tmpfname);\n    return NULL;\n  }\n  mutt_unlink (tmpfname);\n\n\n  mutt_mktemp (certfile, sizeof (certfile));\n  if ((fpout = safe_fopen (certfile, \"w+\")) == NULL)\n  {\n    safe_fclose (&fperr);\n    mutt_perror (certfile);\n    return NULL;\n  }\n  \n  /* Extract signer's certificate\n   */\n  if ((thepid =  smime_invoke (NULL, NULL, NULL,\n\t\t\t       -1, -1, fileno (fperr),\n\t\t\t       infile, NULL, NULL, NULL, NULL, certfile, NULL,\n\t\t\t       SmimeGetSignerCertCommand))== -1)\n  {\n    mutt_any_key_to_continue (_(\"Error: unable to create OpenSSL subprocess!\"));\n    safe_fclose (&fperr);\n    safe_fclose (&fpout);\n    mutt_unlink (pk7out);\n    mutt_unlink (certfile);\n    return NULL;\n  }\n\n  mutt_wait_filter (thepid);\n\n  fflush (fpout);\n  rewind (fpout);\n  fflush (fperr);\n  rewind (fperr);\n  empty =  (fgetc (fpout) == EOF);\n  if (empty)\n  {\n    mutt_endwin (NULL);\n    mutt_copy_stream (fperr, stdout);\n    mutt_any_key_to_continue (NULL);\n    safe_fclose (&fpout);\n    safe_fclose (&fperr);\n    mutt_unlink (certfile);\n    return NULL;\n  }\n\n  safe_fclose (&fpout);\n  safe_fclose (&fperr);\n\n  return safe_strdup (certfile);\n}\n\n\n\n\n/* Add a certificate and update index file (externally). */\n\nvoid smime_invoke_import (char *infile, char *mailbox)\n{\n  char tmpfname[_POSIX_PATH_MAX], *certfile = NULL, buf[STRING];\n  FILE *smimein=NULL, *fpout = NULL, *fperr = NULL;\n  pid_t thepid=-1;\n\n  mutt_mktemp (tmpfname, sizeof (tmpfname));\n  if ((fperr = safe_fopen (tmpfname, \"w+\")) == NULL)\n  {\n    mutt_perror (tmpfname);\n    return;\n  }\n  mutt_unlink (tmpfname);\n\n  mutt_mktemp (tmpfname, sizeof (tmpfname));\n  if ((fpout = safe_fopen (tmpfname, \"w+\")) == NULL)\n  {\n    safe_fclose (&fperr);\n    mutt_perror (tmpfname);\n    return;\n  }\n  mutt_unlink (tmpfname);\n\n\n  buf[0] = '\\0';\n  if (option (OPTASKCERTLABEL))\n    mutt_get_field (\"Label for certificate:\", buf, sizeof (buf), 0);\n\n  mutt_endwin (NULL);\n  if ((certfile = smime_extract_certificate(infile)))\n  {\n    mutt_endwin (NULL);\n  \n    if ((thepid =  smime_invoke (&smimein, NULL, NULL,\n\t\t\t\t -1, fileno(fpout), fileno(fperr),\n\t\t\t\t certfile, NULL, NULL, NULL, NULL, NULL, NULL,\n\t\t\t\t SmimeImportCertCommand))== -1)\n    {\n      mutt_message (_(\"Error: unable to create OpenSSL subprocess!\"));\n      return;\n    }\n    fputs (buf, smimein);\n    fputc ('\\n', smimein);\n    safe_fclose (&smimein);\n\n    mutt_wait_filter (thepid);\n  \n    mutt_unlink (certfile);\n    FREE (&certfile);\n  }\n\n  fflush (fpout);\n  rewind (fpout);\n  fflush (fperr);\n  rewind (fperr);\n\n  mutt_copy_stream (fpout, stdout);\n  mutt_copy_stream (fperr, stdout);\n\n  safe_fclose (&fpout);\n  safe_fclose (&fperr);\n\n}\n\n\n\nint smime_verify_sender(HEADER *h)\n{\n  char *mbox = NULL, *certfile, tempfname[_POSIX_PATH_MAX];\n  FILE *fpout;\n  int retval=1;\n\n  mutt_mktemp (tempfname, sizeof (tempfname));\n  if (!(fpout = safe_fopen (tempfname, \"w\")))\n  {\n    mutt_perror (tempfname);\n    return 1;\n  }\n\n  if(h->security & ENCRYPT)\n    mutt_copy_message (fpout, Context, h,\n\t\t       M_CM_DECODE_CRYPT & M_CM_DECODE_SMIME,\n\t\t       CH_MIME|CH_WEED|CH_NONEWLINE);\n  else\n    mutt_copy_message (fpout, Context, h, 0, 0);\n\n  fflush(fpout);\n  safe_fclose (&fpout);\n\n  if (h->env->from)\n  {\n    h->env->from = mutt_expand_aliases (h->env->from); \n    mbox = h->env->from->mailbox; \n  }\n  else if (h->env->sender)\n  {\n    h->env->sender = mutt_expand_aliases (h->env->sender); \n    mbox = h->env->sender->mailbox; \n  }\n\n  if (mbox)\n  {\n    if ((certfile = smime_extract_signer_certificate(tempfname)))\n    {\n      mutt_unlink(tempfname);\n      if (smime_handle_cert_email (certfile, mbox, 0, NULL, NULL))\n      {\n\tif(isendwin())\n         mutt_any_key_to_continue(NULL);\n      }\n      else\n\tretval = 0;\n      mutt_unlink(certfile);\n      FREE (&certfile);\n    }\n  else \n\tmutt_any_key_to_continue(_(\"no certfile\"));\n  }\n  else \n\tmutt_any_key_to_continue(_(\"no mbox\"));\n\n  mutt_unlink(tempfname);\n  return retval;\n}\n\n\n\n\n\n\n\n\n\n/*\n *    Creating S/MIME - bodies.\n */\n\n\n\n\nstatic\npid_t smime_invoke_encrypt (FILE **smimein, FILE **smimeout, FILE **smimeerr,\n\t\t\t    int smimeinfd, int smimeoutfd, int smimeerrfd,\n\t\t\t    const char *fname, const char *uids)\n{\n  return smime_invoke (smimein, smimeout, smimeerr,\n\t\t       smimeinfd, smimeoutfd, smimeerrfd,\n\t\t       fname, NULL, SmimeCryptAlg, NULL, NULL, uids, NULL,\n\t\t       SmimeEncryptCommand);\n}\n\n\nstatic\npid_t smime_invoke_sign (FILE **smimein, FILE **smimeout, FILE **smimeerr,\n\t\t\t int smimeinfd, int smimeoutfd, int smimeerrfd, \n\t\t\t const char *fname)\n{\n  return smime_invoke (smimein, smimeout, smimeerr, smimeinfd, smimeoutfd,\n\t\t       smimeerrfd, fname, NULL, NULL, SmimeDigestAlg, SmimeKeyToUse,\n\t\t       SmimeCertToUse, SmimeIntermediateToUse,\n\t\t       SmimeSignCommand);\n}\n\n\n\n\nBODY *smime_build_smime_entity (BODY *a, char *certlist)\n{\n  char buf[LONG_STRING], certfile[LONG_STRING];\n  char tempfile[_POSIX_PATH_MAX], smimeerrfile[_POSIX_PATH_MAX];\n  char smimeinfile[_POSIX_PATH_MAX];\n  char *cert_start = certlist, *cert_end = certlist;\n  FILE *smimein = NULL, *smimeerr = NULL, *fpout = NULL, *fptmp = NULL;\n  BODY *t;\n  int err = 0, empty;\n  pid_t thepid;\n  \n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((fpout = safe_fopen (tempfile, \"w+\")) == NULL)\n  {\n    mutt_perror (tempfile);\n    return (NULL);\n  }\n\n  mutt_mktemp (smimeerrfile, sizeof (smimeerrfile));\n  if ((smimeerr = safe_fopen (smimeerrfile, \"w+\")) == NULL)\n  {\n    mutt_perror (smimeerrfile);\n    safe_fclose (&fpout);\n    mutt_unlink (tempfile);\n    return NULL;\n  }\n  mutt_unlink (smimeerrfile);\n  \n  mutt_mktemp (smimeinfile, sizeof (smimeinfile));\n  if ((fptmp = safe_fopen (smimeinfile, \"w+\")) == NULL)\n  {\n    mutt_perror (smimeinfile);\n    mutt_unlink (tempfile);\n    safe_fclose (&fpout);\n    safe_fclose (&smimeerr);\n    return NULL;\n  }\n\n  *certfile = '\\0';\n  while (1)\n  {\n    int off = mutt_strlen (certfile);\n    while (*++cert_end && *cert_end != '\\n');\n    if (!*cert_end) break;\n    *cert_end = '\\0';\n    snprintf (certfile+off, sizeof (certfile)-off, \" %s/%s\",\n\t      NONULL(SmimeCertificates), cert_start);\n    *cert_end = '\\n';\n    cert_start = cert_end;\n    cert_start++;\n  }\n\n  /* write a MIME entity */\n  mutt_write_mime_header (a, fptmp);\n  fputc ('\\n', fptmp);\n  mutt_write_mime_body (a, fptmp);\n  safe_fclose (&fptmp);\n\n  if ((thepid =\n       smime_invoke_encrypt (&smimein, NULL, NULL, -1,\n\t\t\t     fileno (fpout), fileno (smimeerr),\n\t\t\t     smimeinfile, certfile)) == -1)\n  {\n    safe_fclose (&smimeerr);\n    mutt_unlink (smimeinfile);\n    mutt_unlink (certfile);\n    return (NULL);\n  }\n\n  safe_fclose (&smimein);\n  \n  mutt_wait_filter (thepid);\n  mutt_unlink (smimeinfile);\n  mutt_unlink (certfile);\n  \n  fflush (fpout);\n  rewind (fpout);\n  empty = (fgetc (fpout) == EOF);\n  safe_fclose (&fpout);\n \n  fflush (smimeerr);\n  rewind (smimeerr);\n  while (fgets (buf, sizeof (buf) - 1, smimeerr) != NULL)\n  {\n    err = 1;\n    fputs (buf, stdout);\n  }\n  safe_fclose (&smimeerr);\n\n  /* pause if there is any error output from SMIME */\n  if (err)\n    mutt_any_key_to_continue (NULL);\n\n  if (empty)\n  {\n    /* fatal error while trying to encrypt message */\n    if (!err) mutt_any_key_to_continue _(\"No output from OpenSSL...\");\n    mutt_unlink (tempfile);\n    return (NULL);\n  }\n\n  t = mutt_new_body ();\n  t->type = TYPEAPPLICATION;\n  t->subtype = safe_strdup (\"x-pkcs7-mime\");\n  mutt_set_parameter (\"name\", \"smime.p7m\", &t->parameter);\n  mutt_set_parameter (\"smime-type\", \"enveloped-data\", &t->parameter);\n  t->encoding = ENCBASE64;  /* The output of OpenSSL SHOULD be binary */\n  t->use_disp = 1;\n  t->disposition = DISPATTACH;\n  t->d_filename = safe_strdup (\"smime.p7m\");\n  t->filename = safe_strdup (tempfile);\n  t->unlink = 1; /*delete after sending the message */\n  t->parts=0;\n  t->next=0;\n  \n  return (t);\n}\n\n\n/* The openssl -md doesn't want hyphens:\n *   md5, sha1,  sha224,  sha256,  sha384,  sha512\n * However, the micalg does:\n *   md5, sha-1, sha-224, sha-256, sha-384, sha-512\n */\nstatic char *openssl_md_to_smime_micalg(char *md)\n{\n  char *micalg;\n  size_t l;\n\n  if (!md)\n    return 0;\n\n  if (mutt_strncasecmp (\"sha\", md, 3) == 0)\n  {\n    l = strlen (md) + 2;\n    micalg = (char *)safe_malloc (l);\n    snprintf (micalg, l, \"sha-%s\", md +3);\n  }\n  else\n  {\n    micalg = safe_strdup (md);\n  }\n\n  return micalg;\n}\n\n\n\nBODY *smime_sign_message (BODY *a )\n{\n  BODY *t;\n  char buffer[LONG_STRING];\n  char signedfile[_POSIX_PATH_MAX], filetosign[_POSIX_PATH_MAX];\n  FILE *smimein = NULL, *smimeout = NULL, *smimeerr = NULL, *sfp = NULL;\n  int err = 0;\n  int empty = 0;\n  pid_t thepid;\n  smime_key_t *default_key;\n  char *intermediates;\n  char *micalg;\n\n  if (!SmimeDefaultKey)\n  {\n    mutt_error _(\"Can't sign: No key specified. Use Sign As.\");\n    return NULL;\n  }\n\n  convert_to_7bit (a); /* Signed data _must_ be in 7-bit format. */\n\n  mutt_mktemp (filetosign, sizeof (filetosign));\n  if ((sfp = safe_fopen (filetosign, \"w+\")) == NULL)\n  {\n    mutt_perror (filetosign);\n    return NULL;\n  }\n\n  mutt_mktemp (signedfile, sizeof (signedfile));\n  if ((smimeout = safe_fopen (signedfile, \"w+\")) == NULL)\n  {\n    mutt_perror (signedfile);\n    safe_fclose (&sfp);\n    mutt_unlink (filetosign);\n    return NULL;\n  }\n  \n  mutt_write_mime_header (a, sfp);\n  fputc ('\\n', sfp);\n  mutt_write_mime_body (a, sfp);\n  safe_fclose (&sfp);\n\n  \n\n  snprintf (SmimeKeyToUse, sizeof (SmimeKeyToUse), \"%s/%s\", \n\t   NONULL(SmimeKeys), SmimeDefaultKey);\n\n  snprintf (SmimeCertToUse, sizeof (SmimeCertToUse), \"%s/%s\",\n\t   NONULL(SmimeCertificates), SmimeDefaultKey);\n  \n  default_key = smime_get_key_by_hash (SmimeDefaultKey, 1);\n  if ((! default_key) ||\n      (! mutt_strcmp (\"?\", default_key->issuer)))\n    intermediates = SmimeDefaultKey; /* so openssl won't complain in any case */\n  else\n    intermediates = default_key->issuer;\n\n  snprintf (SmimeIntermediateToUse, sizeof (SmimeIntermediateToUse), \"%s/%s\",\n\t   NONULL(SmimeCertificates), intermediates);\n\n  smime_free_key (&default_key);\n  \n\n\n  if ((thepid = smime_invoke_sign (&smimein, NULL, &smimeerr,\n\t\t\t\t -1, fileno (smimeout), -1, filetosign)) == -1)\n  {\n    mutt_perror _(\"Can't open OpenSSL subprocess!\");\n    safe_fclose (&smimeout);\n    mutt_unlink (signedfile);\n    mutt_unlink (filetosign);\n    return NULL;\n  }\n  fputs (SmimePass, smimein);\n  fputc ('\\n', smimein);\n  safe_fclose (&smimein);\n  \n\n  mutt_wait_filter (thepid);\n\n  /* check for errors from OpenSSL */\n  err = 0;\n  fflush (smimeerr);\n  rewind (smimeerr);\n  while (fgets (buffer, sizeof (buffer) - 1, smimeerr) != NULL)\n  {\n    err = 1;\n    fputs (buffer, stdout);\n  }\n  safe_fclose (&smimeerr);\n\n\n  fflush (smimeout);\n  rewind (smimeout);\n  empty = (fgetc (smimeout) == EOF);\n  safe_fclose (&smimeout);\n\n  mutt_unlink (filetosign);\n  \n\n  if (err)\n    mutt_any_key_to_continue (NULL);\n\n  if (empty)\n  {\n    mutt_any_key_to_continue _(\"No output from OpenSSL...\");\n    mutt_unlink (signedfile);\n    return (NULL); /* fatal error while signing */\n  }\n\n  t = mutt_new_body ();\n  t->type = TYPEMULTIPART;\n  t->subtype = safe_strdup (\"signed\");\n  t->encoding = ENC7BIT;\n  t->use_disp = 0;\n  t->disposition = DISPINLINE;\n\n  mutt_generate_boundary (&t->parameter);\n\n  micalg = openssl_md_to_smime_micalg (SmimeDigestAlg);\n  mutt_set_parameter (\"micalg\", micalg, &t->parameter);\n  FREE (&micalg);\n\n  mutt_set_parameter (\"protocol\", \"application/x-pkcs7-signature\",\n\t\t     &t->parameter);\n\n  t->parts = a;\n  a = t;\n\n  t->parts->next = mutt_new_body ();\n  t = t->parts->next;\n  t->type = TYPEAPPLICATION;\n  t->subtype = safe_strdup (\"x-pkcs7-signature\");\n  t->filename = safe_strdup (signedfile);\n  t->d_filename = safe_strdup (\"smime.p7s\");\n  t->use_disp = 1;\n  t->disposition = DISPATTACH;\n  t->encoding = ENCBASE64;\n  t->unlink = 1; /* ok to remove this file after sending. */\n\n  return (a);\n\n}\n\n\n\n\n\n\n/*\n *    Handling S/MIME - bodies.\n */\n\n\n\n\n\n\nstatic\npid_t smime_invoke_verify (FILE **smimein, FILE **smimeout, FILE **smimeerr,\n\t\t\t   int smimeinfd, int smimeoutfd, int smimeerrfd, \n\t\t\t   const char *fname, const char *sig_fname, int opaque)\n{\n  return smime_invoke (smimein, smimeout, smimeerr, smimeinfd, smimeoutfd,\n\t\t       smimeerrfd, fname, sig_fname, NULL, NULL, NULL, NULL, NULL,\n\t\t       (opaque ? SmimeVerifyOpaqueCommand : SmimeVerifyCommand));\n}\n\n\nstatic\npid_t smime_invoke_decrypt (FILE **smimein, FILE **smimeout, FILE **smimeerr,\n\t\t\t    int smimeinfd, int smimeoutfd, int smimeerrfd, \n\t\t\t    const char *fname)\n{\n  return smime_invoke (smimein, smimeout, smimeerr, smimeinfd, smimeoutfd,\n\t\t       smimeerrfd, fname, NULL, NULL, NULL, SmimeKeyToUse,\n\t\t       SmimeCertToUse, NULL, SmimeDecryptCommand);\n}\n\n\n\nint smime_verify_one (BODY *sigbdy, STATE *s, const char *tempfile)\n{\n  char signedfile[_POSIX_PATH_MAX], smimeerrfile[_POSIX_PATH_MAX];\n  FILE *fp=NULL, *smimeout=NULL, *smimeerr=NULL;\n  pid_t thepid;\n  int badsig = -1;\n\n  LOFF_T tmpoffset = 0;\n  size_t tmplength = 0;\n  int origType = sigbdy->type;\n  char *savePrefix = NULL;\n\n\n  snprintf (signedfile, sizeof (signedfile), \"%s.sig\", tempfile);\n  \n  /* decode to a tempfile, saving the original destination */\n  fp = s->fpout;\n  if ((s->fpout = safe_fopen (signedfile, \"w\")) == NULL)\n  {\n    mutt_perror (signedfile);\n    return -1;\n  }\n  /* decoding the attachment changes the size and offset, so save a copy\n   * of the \"real\" values now, and restore them after processing\n   */\n  tmplength = sigbdy->length;\n  tmpoffset = sigbdy->offset;\n\n  /* if we are decoding binary bodies, we don't want to prefix each\n   * line with the prefix or else the data will get corrupted.\n   */\n  savePrefix = s->prefix;\n  s->prefix = NULL;\n\n  mutt_decode_attachment (sigbdy, s);\n\n  sigbdy->length = ftello (s->fpout);\n  sigbdy->offset = 0;\n  safe_fclose (&s->fpout);\n\n  /* restore final destination and substitute the tempfile for input */\n  s->fpout = fp;\n  fp = s->fpin;\n  s->fpin = fopen (signedfile, \"r\");\n\n  /* restore the prefix */\n  s->prefix = savePrefix;\n  \n  sigbdy->type = origType;\n\n  \n  mutt_mktemp (smimeerrfile, sizeof (smimeerrfile));\n  if (!(smimeerr = safe_fopen (smimeerrfile, \"w+\")))\n  {\n    mutt_perror (smimeerrfile);\n    mutt_unlink (signedfile);\n    return -1;\n  }\n  \n  crypt_current_time (s, \"OpenSSL\");\n  \n  if ((thepid = smime_invoke_verify (NULL, &smimeout, NULL, \n\t\t\t\t   -1, -1, fileno (smimeerr),\n\t\t\t\t   tempfile, signedfile, 0)) != -1)\n  {\n    fflush (smimeout);\n    safe_fclose (&smimeout);\n      \n    if (mutt_wait_filter (thepid))\n      badsig = -1;\n    else\n    {\n      char *line = NULL;\n      int lineno = 0;\n      size_t linelen;\n      \n      fflush (smimeerr);\n      rewind (smimeerr);\n      \n      line = mutt_read_line (line, &linelen, smimeerr, &lineno, 0);\n      if (linelen && !ascii_strcasecmp (line, \"verification successful\"))\n\tbadsig = 0;\n\n      FREE (&line);\n    }\n  }\n  \n  fflush (smimeerr);\n  rewind (smimeerr);\n  mutt_copy_stream (smimeerr, s->fpout);\n  safe_fclose (&smimeerr);\n    \n  state_attach_puts (_(\"[-- End of OpenSSL output --]\\n\\n\"), s);\n  \n  mutt_unlink (signedfile);\n  mutt_unlink (smimeerrfile);\n\n  sigbdy->length = tmplength;\n  sigbdy->offset = tmpoffset;\n  \n  /* restore the original source stream */\n  safe_fclose (&s->fpin);\n  s->fpin = fp;\n  \n\n  return badsig;\n}\n\n\n\n\n\n/*\n  This handles application/pkcs7-mime which can either be a signed\n  or an encrypted message.\n*/\n\nstatic BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile)\n{\n  int len=0;\n  int c;\n  char buf[HUGE_STRING];\n  char outfile[_POSIX_PATH_MAX], errfile[_POSIX_PATH_MAX];\n  char tmpfname[_POSIX_PATH_MAX];\n  char tmptmpfname[_POSIX_PATH_MAX];\n  FILE *smimeout = NULL, *smimein=NULL, *smimeerr=NULL;\n  FILE *tmpfp=NULL, *tmpfp_buffer=NULL, *fpout=NULL;\n  struct stat info;\n  BODY *p=NULL;\n  pid_t thepid=-1;\n  unsigned int type = mutt_is_application_smime (m);\n\n  if (!(type & APPLICATION_SMIME)) return NULL;\n\n  mutt_mktemp (outfile, sizeof (outfile));\n  if ((smimeout = safe_fopen (outfile, \"w+\")) == NULL)\n  {\n    mutt_perror (outfile);\n    return NULL;\n  }\n  \n  mutt_mktemp (errfile, sizeof (errfile));\n  if ((smimeerr = safe_fopen (errfile, \"w+\")) == NULL)\n  {\n    mutt_perror (errfile);\n    safe_fclose (&smimeout); smimeout = NULL;\n    return NULL;\n  }\n  mutt_unlink (errfile);\n\n  \n  mutt_mktemp (tmpfname, sizeof (tmpfname));\n  if ((tmpfp = safe_fopen (tmpfname, \"w+\")) == NULL)\n  {\n    mutt_perror (tmpfname);\n    safe_fclose (&smimeout); smimeout = NULL;\n    safe_fclose (&smimeerr); smimeerr = NULL;\n    return NULL;\n  }\n\n  fseeko (s->fpin, m->offset, 0);\n\n  mutt_copy_bytes (s->fpin, tmpfp,  m->length);\n\n  fflush (tmpfp);\n  safe_fclose (&tmpfp);\n\n  if ((type & ENCRYPT) &&\n      (thepid = smime_invoke_decrypt (&smimein, NULL, NULL, -1,\n\t\t\t\t      fileno (smimeout),  fileno (smimeerr), tmpfname)) == -1)\n  {\n    safe_fclose (&smimeout); smimeout = NULL;\n    mutt_unlink (tmpfname);\n    if (s->flags & M_DISPLAY)\n      state_attach_puts (_(\"[-- Error: unable to create OpenSSL subprocess! --]\\n\"), s);\n    return NULL;\n  }\n  else if ((type & SIGNOPAQUE) &&\n\t   (thepid = smime_invoke_verify (&smimein, NULL, NULL, -1,\n\t\t\t\t\t  fileno (smimeout), fileno (smimeerr), NULL,\n\t\t\t\t\t  tmpfname, SIGNOPAQUE)) == -1)\n  {\n    safe_fclose (&smimeout); smimeout = NULL;\n    mutt_unlink (tmpfname);\n    if (s->flags & M_DISPLAY)\n      state_attach_puts (_(\"[-- Error: unable to create OpenSSL subprocess! --]\\n\"), s);\n    return NULL;\n  }\n\n  \n  if (type & ENCRYPT)\n  {\n    if (!smime_valid_passphrase ())\n      smime_void_passphrase ();\n    fputs (SmimePass, smimein);\n    fputc ('\\n', smimein);\n  }\n\n  safe_fclose (&smimein);\n\t\n  mutt_wait_filter (thepid);\n  mutt_unlink (tmpfname);\n  \n\n  if (s->flags & M_DISPLAY)\n  {\n    fflush (smimeerr);\n    rewind (smimeerr);\n    \n    if ((c = fgetc (smimeerr)) != EOF)\n    {\n      ungetc (c, smimeerr);\n      \n      crypt_current_time (s, \"OpenSSL\");\n      mutt_copy_stream (smimeerr, s->fpout);\n      state_attach_puts (_(\"[-- End of OpenSSL output --]\\n\\n\"), s);\n    }\n    \n    if (type & ENCRYPT)\n      state_attach_puts (_(\"[-- The following data is S/MIME\"\n                           \" encrypted --]\\n\"), s);\n    else\n      state_attach_puts (_(\"[-- The following data is S/MIME signed --]\\n\"), s);\n  }\n\n  if (smimeout)\n  {\n    fflush (smimeout);\n    rewind (smimeout);\n    \n    if (outFile) fpout = outFile;\n    else\n    {\n      mutt_mktemp (tmptmpfname, sizeof (tmptmpfname));\n      if ((fpout = safe_fopen (tmptmpfname, \"w+\")) == NULL)\n      {\n\tmutt_perror(tmptmpfname);\n\tsafe_fclose (&smimeout); smimeout = NULL;\n\treturn NULL;\n      }\n    }\n    while (fgets (buf, sizeof (buf) - 1, smimeout) != NULL)\n    {\n      len = mutt_strlen (buf);\n      if (len > 1 && buf[len - 2] == '\\r')\n      {\n\tbuf[len-2] = '\\n';\n\tbuf[len-1] = '\\0';\n      }\n      fputs (buf, fpout);\n    }\n    fflush (fpout);\n    rewind (fpout); \n\n\n    if ((p = mutt_read_mime_header (fpout, 0)) != NULL)\n    {\n      fstat (fileno (fpout), &info);\n      p->length = info.st_size - p->offset;\n\t  \n      mutt_parse_part (fpout, p);\n      if (s->fpout)\n      {\n\trewind (fpout);\n\ttmpfp_buffer = s->fpin;\n\ts->fpin = fpout;\n\tmutt_body_handler (p, s);\n\ts->fpin = tmpfp_buffer;\n      }\n      \n    }\n    safe_fclose (&smimeout);\n    smimeout = NULL;\n    mutt_unlink (outfile);\n\n    if (!outFile)\n    {\n      safe_fclose (&fpout);\n      mutt_unlink (tmptmpfname);\n    }\n    fpout = NULL;\n  }\n\n  if (s->flags & M_DISPLAY)\n  {\n    if (type & ENCRYPT)\n      state_attach_puts (_(\"\\n[-- End of S/MIME encrypted data. --]\\n\"), s);\n    else\n      state_attach_puts (_(\"\\n[-- End of S/MIME signed data. --]\\n\"), s);\n  }\n\n  if (type & SIGNOPAQUE)\n  {\n    char *line = NULL;\n    int lineno = 0;\n    size_t linelen;\n    \n    rewind (smimeerr);\n    \n    line = mutt_read_line (line, &linelen, smimeerr, &lineno, 0);\n    if (linelen && !ascii_strcasecmp (line, \"verification successful\"))\n      m->goodsig = 1;\n    FREE (&line);\n  }\n  else \n  {\n    m->goodsig = p->goodsig;\n    m->badsig  = p->badsig;\n  }\n  safe_fclose (&smimeerr);\n\n  return (p);\n}\n\n\n\n\n\nint smime_decrypt_mime (FILE *fpin, FILE **fpout, BODY *b, BODY **cur)\n{\n\n\n  char tempfile[_POSIX_PATH_MAX];\n  STATE s;\n  LOFF_T tmpoffset = b->offset;\n  size_t tmplength = b->length;\n  int origType = b->type;\n  FILE *tmpfp=NULL;\n  int rv = 0;\n\n  if (!mutt_is_application_smime (b))\n    return -1;\n\n  if (b->parts)\n    return -1;\n  \n  memset (&s, 0, sizeof (s));\n  s.fpin = fpin;\n  fseeko (s.fpin, b->offset, 0);\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((tmpfp = safe_fopen (tempfile, \"w+\")) == NULL)\n  {\n    mutt_perror (tempfile);\n    return (-1);\n  }\n\n  mutt_unlink (tempfile);\n  s.fpout = tmpfp;\n  mutt_decode_attachment (b, &s);\n  fflush (tmpfp);\n  b->length = ftello (s.fpout);\n  b->offset = 0;\n  rewind (tmpfp);\n  s.fpin = tmpfp;\n  s.fpout = 0;\n\n  mutt_mktemp (tempfile, sizeof (tempfile));\n  if ((*fpout = safe_fopen (tempfile, \"w+\")) == NULL)\n  {\n    mutt_perror (tempfile);\n    rv = -1;\n    goto bail;\n  }\n  mutt_unlink (tempfile);\n\n  if (!(*cur = smime_handle_entity (b, &s, *fpout)))\n  {\n    rv = -1;\n    goto bail;\n  }\n    \n  (*cur)->goodsig = b->goodsig;\n  (*cur)->badsig  = b->badsig;\n\nbail:\n  b->type = origType;\n  b->length = tmplength;\n  b->offset = tmpoffset;\n  safe_fclose (&tmpfp);\n  if (*fpout)\n    rewind (*fpout);\n  \n  return rv;\n}\n\n\nint smime_application_smime_handler (BODY *m, STATE *s)\n{\n  return smime_handle_entity (m, s, NULL) ? 0 : -1;\n}\n\nint smime_send_menu (HEADER *msg, int *redraw)\n{\n  smime_key_t *key;\n  char *prompt, *letters, *choices;\n  int choice;\n\n  if (!(WithCrypto & APPLICATION_SMIME))\n    return msg->security;\n\n  msg->security |= APPLICATION_SMIME;\n\n  /*\n   * Opportunistic encrypt is controlling encryption.\n   * NOTE: \"Signing\" and \"Clearing\" only adjust the sign bit, so we have different\n   *       letter choices for those.\n   */\n  if (option (OPTCRYPTOPPORTUNISTICENCRYPT) && (msg->security & OPPENCRYPT))\n  {\n    prompt = _(\"S/MIME (s)ign, encrypt (w)ith, sign (a)s, (c)lear, or (o)ppenc mode off? \");\n    /* L10N: The 'f' is from \"forget it\", an old undocumented synonym of\n       'clear'.  Please use a corresponding letter in your language.\n       Alternatively, you may duplicate the letter 'c' is translated to.\n       This comment also applies to the two following letter sequences. */\n    letters = _(\"swafco\");\n    choices = \"SwaFCo\";\n  }\n  /*\n   * Opportunistic encryption option is set, but is toggled off\n   * for this message.\n   */\n  else if (option (OPTCRYPTOPPORTUNISTICENCRYPT))\n  {\n    prompt = _(\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, (c)lear, or (o)ppenc mode? \");\n    letters = _(\"eswabfco\");\n    choices = \"eswabfcO\";\n  }\n  /*\n   * Opportunistic encryption is unset\n   */\n  else\n  {\n    prompt = _(\"S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (c)lear? \");\n    letters = _(\"eswabfc\");\n    choices = \"eswabfc\";\n  }\n\n\n  choice = mutt_multi_choice (prompt, letters);\n  if (choice > 0)\n  {\n    switch (choices[choice - 1])\n    {\n    case 'e': /* (e)ncrypt */\n      msg->security |= ENCRYPT;\n      msg->security &= ~SIGN;\n      break;\n\n    case 'w': /* encrypt (w)ith */\n      {\n        msg->security |= ENCRYPT;\n        do\n        {\n          /* I use \"dra\" because \"123\" is recognized anyway */\n          switch (mutt_multi_choice (_(\"Choose algorithm family:\"\n                                      \" 1: DES, 2: RC2, 3: AES,\"\n                                      \" or (c)lear? \"),\n                                    _(\"drac\")))\n          {\n          case 1:\n            switch (choice = mutt_multi_choice (_(\"1: DES, 2: Triple-DES \"),\n                                                _(\"dt\")))\n            {\n            case 1:\n              mutt_str_replace (&SmimeCryptAlg, \"des\");\n              break;\n            case 2:\n              mutt_str_replace (&SmimeCryptAlg, \"des3\");\n              break;\n            }\n            break;\n\n          case 2:\n            switch (choice = mutt_multi_choice (_(\"1: RC2-40, 2: RC2-64, 3: RC2-128 \"),\n                                                _(\"468\")))\n            {\n            case 1:\n              mutt_str_replace (&SmimeCryptAlg, \"rc2-40\");\n              break;\n            case 2:\n              mutt_str_replace (&SmimeCryptAlg, \"rc2-64\");\n              break;\n            case 3:\n              mutt_str_replace (&SmimeCryptAlg, \"rc2-128\");\n              break;\n            }\n            break;\n\n          case 3:\n            switch (choice = mutt_multi_choice (_(\"1: AES128, 2: AES192, 3: AES256 \"),\n                                                _(\"895\")))\n            {\n            case 1:\n              mutt_str_replace (&SmimeCryptAlg, \"aes128\");\n              break;\n            case 2:\n              mutt_str_replace (&SmimeCryptAlg, \"aes192\");\n              break;\n            case 3:\n              mutt_str_replace (&SmimeCryptAlg, \"aes256\");\n              break;\n            }\n            break;\n\n          case 4: /* (c)lear */\n            FREE (&SmimeCryptAlg);\n            /* fallback */\n          case -1: /* Ctrl-G or Enter */\n            choice = 0;\n            break;\n          }\n        } while (choice == -1);\n      }\n      break;\n\n    case 's': /* (s)ign */\n    case 'S': /* (s)ign in oppenc mode */\n      if(!SmimeDefaultKey)\n      {\n        *redraw = REDRAW_FULL;\n\n        if ((key = smime_ask_for_key (_(\"Sign as: \"), KEYFLAG_CANSIGN, 0)))\n        {\n          mutt_str_replace (&SmimeDefaultKey, key->hash);\n          smime_free_key (&key);\n        }\n        else\n          break;\n      }\n      if (choices[choice - 1] == 's')\n        msg->security &= ~ENCRYPT;\n      msg->security |= SIGN;\n      break;\n\n    case 'a': /* sign (a)s */\n\n      if ((key = smime_ask_for_key (_(\"Sign as: \"), KEYFLAG_CANSIGN, 0))) \n      {\n        mutt_str_replace (&SmimeDefaultKey, key->hash);\n        smime_free_key (&key);\n          \n        msg->security |= SIGN;\n\n        /* probably need a different passphrase */\n        crypt_smime_void_passphrase ();\n      }\n\n      *redraw = REDRAW_FULL;\n      break;\n\n    case 'b': /* (b)oth */\n      msg->security |= (ENCRYPT | SIGN);\n      break;\n\n    case 'f': /* (f)orget it: kept for backward compatibility. */\n    case 'c': /* (c)lear */\n      msg->security &= ~(ENCRYPT | SIGN);\n      break;\n\n    case 'F': /* (f)orget it or (c)lear in oppenc mode */\n    case 'C':\n      msg->security &= ~SIGN;\n      break;\n\n    case 'O': /* oppenc mode on */\n      msg->security |= OPPENCRYPT;\n      crypt_opportunistic_encrypt (msg);\n      break;\n\n    case 'o': /* oppenc mode off */\n      msg->security &= ~OPPENCRYPT;\n      break;\n    }\n  }\n\n  return (msg->security);\n}\n\n\n#endif /* CRYPT_BACKEND_CLASSIC_SMIME */\n"
  },
  {
    "path": "smime.h",
    "content": "/*\n * Copyright (C) 2001-2002 Oliver Ehli <elmy@acm.org>\n * Copyright (C) 2004 g10 Code GmbH\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n\n#ifdef CRYPT_BACKEND_CLASSIC_SMIME\n\n#include \"mutt_crypt.h\"\n\ntypedef struct smime_key {\n  char *email;\n  char *hash;\n  char *label;\n  char *issuer;\n  char trust; /* i=Invalid r=revoked e=expired u=unverified v=verified t=trusted */\n  int flags;\n  struct smime_key *next;\n} smime_key_t;\n\n\nvoid smime_free_key (smime_key_t **);\n\nvoid smime_void_passphrase (void);\nint smime_valid_passphrase (void);\n\nint   smime_decrypt_mime (FILE *, FILE **, BODY *, BODY **);\n\nint  smime_application_smime_handler (BODY *, STATE *);\n\n\nBODY* smime_sign_message (BODY *);\n\nBODY* smime_build_smime_entity (BODY *, char *);\n\nint   smime_verify_one(BODY *, STATE *, const char *);\n\n\nint   smime_verify_sender(HEADER *);\n\n\nchar* smime_get_field_from_db (char *, char *, short, short);\n\nvoid  smime_getkeys (ENVELOPE *);\n\nsmime_key_t *smime_ask_for_key(char *, short, short);\n\nchar *smime_findKeys (ADDRESS *adrlist, int oppenc_mode);\n\nvoid  smime_invoke_import (char *, char *);\n\nint smime_send_menu (HEADER *msg, int *redraw);\n\n#endif\n\n\n"
  },
  {
    "path": "smime_keys.pl",
    "content": "#! /usr/bin/perl -w\n\n# Copyright (C) 2001-2002 Oliver Ehli <elmy@acm.org>\n# Copyright (C) 2001 Mike Schiraldi <raldi@research.netsol.com>\n# Copyright (C) 2003 Bjoern Jacke <bjoern@j3e.de>\n# Copyright (C) 2015 Kevin J. McCarthy <kevin@8t8.us>\n#\n#     This program is free software; you can redistribute it and/or modify\n#     it under the terms of the GNU General Public License as published by\n#     the Free Software Foundation; either version 2 of the License, or\n#     (at your option) any later version.\n#\n#     This program is distributed in the hope that it will be useful,\n#     but WITHOUT ANY WARRANTY; without even the implied warranty of\n#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n#     GNU General Public License for more details.\n#\n#     You should have received a copy of the GNU General Public License\n#     along with this program; if not, write to the Free Software\n#     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n\nuse strict;\nuse File::Copy;\nuse File::Glob ':glob';\nuse File::Temp qw(tempfile tempdir);\n\numask 077;\n\nuse Time::Local;\n\n# helper routines\nsub usage ();\nsub mutt_Q ($);\nsub mycopy ($$);\nsub query_label ();\nsub mkdir_recursive ($);\nsub verify_files_exist (@);\nsub create_tempfile (;$);\nsub new_cert_structure ();\nsub create_cert_chains (@);\n\n# openssl helpers\nsub openssl_exec (@);\nsub openssl_format ($);\nsub openssl_x509_query ($@);\nsub openssl_hash ($);\nsub openssl_fingerprint ($);\nsub openssl_emails ($);\nsub openssl_p12_to_pem ($$);\nsub openssl_verify ($$);\nsub openssl_crl_text($);\nsub openssl_trust_flag ($$;$);\nsub openssl_parse_pem ($$);\nsub openssl_dump_cert ($);\nsub openssl_purpose_flag ($);\n\n# key/certificate management methods\nsub cm_list_certs ();\nsub cm_add_entry ($$$$$$;$);\nsub cm_add_cert ($);\nsub cm_add_indexed_cert ($$$);\nsub cm_add_key ($$$$$$);\nsub cm_modify_entry ($$$;$);\nsub cm_find_entry ($$);\nsub cm_refresh_index ();\n\n# op handlers\nsub handle_init_paths ();\nsub handle_change_label ($);\nsub handle_add_cert ($);\nsub handle_add_pem ($);\nsub handle_add_p12 ($);\nsub handle_add_chain ($$$);\nsub handle_verify_cert($$);\nsub handle_remove_pair ($);\nsub handle_add_root_cert ($);\n\n\nmy $mutt = $ENV{MUTT_CMDLINE} || 'mutt';\nmy $opensslbin = \"/usr/bin/openssl\";\nmy $tmpdir;\n\n# Get the directories mutt uses for certificate/key storage.\n\nmy $private_keys_path = mutt_Q 'smime_keys';\ndie \"smime_keys is not set in mutt's configuration file\"\n   if length $private_keys_path == 0;\n\nmy $certificates_path = mutt_Q 'smime_certificates';\ndie \"smime_certificates is not set in mutt's configuration file\"\n   if length $certificates_path == 0;\n\nmy $root_certs_path   = mutt_Q 'smime_ca_location';\ndie \"smime_ca_location is not set in mutt's configuration file\"\n   if length $root_certs_path == 0;\n\nmy $root_certs_switch;\nif ( -d $root_certs_path) {\n  $root_certs_switch = -CApath;\n} else {\n  $root_certs_switch = -CAfile;\n}\n\n\n######\n# OPS\n######\n\nif (@ARGV == 1 and $ARGV[0] eq \"init\") {\n  handle_init_paths();\n}\nelsif (@ARGV == 1 and $ARGV[0] eq \"refresh\") {\n  cm_refresh_index();\n}\nelsif (@ARGV == 1 and $ARGV[0] eq \"list\") {\n  cm_list_certs();\n}\nelsif (@ARGV == 2 and $ARGV[0] eq \"label\") {\n  handle_change_label($ARGV[1]);\n}\nelsif (@ARGV == 2 and $ARGV[0] eq \"add_cert\") {\n  verify_files_exist($ARGV[1]);\n  handle_add_cert($ARGV[1]);\n}\nelsif (@ARGV == 2 and $ARGV[0] eq \"add_pem\") {\n  verify_files_exist($ARGV[1]);\n  handle_add_pem($ARGV[1]);\n}\nelsif ( @ARGV == 2 and $ARGV[0] eq \"add_p12\") {\n  verify_files_exist($ARGV[1]);\n  handle_add_p12($ARGV[1]);\n}\nelsif (@ARGV == 4 and $ARGV[0] eq \"add_chain\") {\n  verify_files_exist($ARGV[1], $ARGV[2], $ARGV[3]);\n  handle_add_chain($ARGV[1], $ARGV[2], $ARGV[3]);\n}\nelsif ((@ARGV == 2 or @ARGV == 3) and $ARGV[0] eq \"verify\") {\n  verify_files_exist($ARGV[2]) if (@ARGV == 3);\n  handle_verify_cert($ARGV[1], $ARGV[2]);\n}\nelsif (@ARGV == 2 and $ARGV[0] eq \"remove\") {\n  handle_remove_pair($ARGV[1]);\n}\nelsif (@ARGV == 2 and $ARGV[0] eq \"add_root\") {\n  verify_files_exist($ARGV[1]);\n  handle_add_root_cert($ARGV[1]);\n}\nelse {\n  usage();\n  exit(1);\n}\n\nexit(0);\n\n\n##############  sub-routines  ########################\n\n\n###################\n#  helper routines\n###################\n\nsub usage () {\n    print <<EOF;\n\nUsage: smime_keys <operation>  [file(s) | keyID [file(s)]]\n\n        with operation being one of:\n\n        init      : no files needed, inits directory structure.\n        refresh   : refreshes certificate and key index files.\n                    Updates trust flag (expiration).\n                    Adds purpose flag if missing.\n\n        list      : lists the certificates stored in database.\n        label     : keyID required. changes/removes/adds label.\n        remove    : keyID required.\n        verify    : 1=keyID and optionally 2=CRL\n                    Verifies the certificate chain, and optionally wether\n                    this certificate is included in supplied CRL (PEM format).\n                    Note: to verify all certificates at the same time,\n                    replace keyID with \"all\"\n\n        add_cert  : certificate required.\n        add_chain : three files reqd: 1=Key, 2=certificate\n                    plus 3=intermediate certificate(s).\n        add_p12   : one file reqd. Adds keypair to database.\n                    file is PKCS12 (e.g. export from netscape).\n        add_pem   : one file reqd. Adds keypair to database.\n                    (file was converted from e.g. PKCS12).\n\n        add_root  : one file reqd. Adds PEM root certificate to the location\n                    specified within muttrc (smime_verify_* command)\n\nEOF\n}\n\nsub mutt_Q ($) {\n  my ($var) = @_;\n\n  my $cmd = \"$mutt -v >/dev/null 2>/dev/null\";\n  system ($cmd) == 0 or die<<EOF;\nCouldn't launch mutt. I attempted to do so by running the command \"$mutt\".\nIf that's not the right command, you can override it by setting the\nenvironment variable \\$MUTT_CMDLINE\nEOF\n\n  $cmd = \"$mutt -Q $var 2>/dev/null\";\n  my $answer = `$cmd`;\n\n  $? and die<<EOF;\nCouldn't look up the value of the mutt variable \"$var\".\nYou must set this in your mutt config file. See contrib/smime.rc for an example.\nEOF\n\n  $answer =~ /\\\"(.*?)\\\"/ and return bsd_glob($1, GLOB_TILDE | GLOB_NOCHECK);\n\n  $answer =~ /^Mutt (.*?) / and die<<EOF;\nThis script requires mutt 1.5.0 or later. You are using mutt $1.\nEOF\n\n  die \"Value of $var is weird\\n\";\n}\n\nsub mycopy ($$) {\n  my ($source, $dest) = @_;\n\n  copy $source, $dest or die \"Problem copying $source to $dest: $!\\n\";\n}\n\nsub query_label () {\n  my $input;\n  my $label;\n  my $junk;\n\n  print \"\\nYou may assign a label to this key, so you don't have to remember\\n\";\n  print \"the key ID. This has to be _one_ word (no whitespaces).\\n\\n\";\n\n  print \"Enter label: \";\n  $input = <STDIN>;\n\n  if (defined($input) && ($input !~ /^\\s*$/)) {\n    chomp($input);\n    $input =~ s/^\\s+//;\n    ($label, $junk) = split(/\\s/, $input, 2);\n\n    if (defined($junk)) {\n      print \"\\nUsing '$label' as label; ignoring '$junk'\\n\";\n    }\n  }\n\n  if ((! defined($label)) || ($label =~ /^\\s*$/)) {\n    $label =  \"-\";\n  }\n\n  return $label;\n}\n\nsub mkdir_recursive ($) {\n  my ($path) = @_;\n  my $tmp_path;\n\n  for my $dir (split /\\//, $path) {\n    $tmp_path .= \"$dir/\";\n\n    -d $tmp_path\n      or mkdir $tmp_path, 0700\n        or die \"Can't mkdir $tmp_path: $!\";\n  }\n}\n\nsub verify_files_exist (@) {\n  my (@files) = @_;\n\n  foreach my $file (@files) {\n    if ((! -e $file) || (! -s $file)) {\n      die(\"$file is nonexistent or empty.\");\n    }\n  }\n}\n\n# Returns a list ($fh, $filename)\nsub create_tempfile (;$) {\n  my ($directory) = @_;\n\n  if (! defined($directory)) {\n    if (! defined($tmpdir)) {\n      $tmpdir = tempdir(CLEANUP => 1);\n    }\n    $directory = $tmpdir;\n  }\n\n  return tempfile(DIR => $directory);\n}\n\n# Creates a cert data structure used by openssl_parse_pem\nsub new_cert_structure () {\n  my $cert_data = {};\n\n  $cert_data->{datafile} = \"\";\n  $cert_data->{type} = \"\";\n  $cert_data->{localKeyID} = \"\";\n  $cert_data->{subject} = \"\";\n  $cert_data->{issuer} = \"\";\n\n  return $cert_data;\n}\n\nsub create_cert_chains (@) {\n  my (@certs) = @_;\n\n  my (%subject_hash, @leaves, @chains);\n\n  foreach my $cert (@certs) {\n    $cert->{children} = 0;\n    if ($cert->{subject}) {\n      $subject_hash{$cert->{subject}} = $cert;\n    }\n  }\n\n  foreach my $cert (@certs) {\n    my $parent = $subject_hash{$cert->{issuer}};\n    if (defined($parent)) {\n      $parent->{children} += 1;\n    }\n  }\n\n  @leaves = grep { $_->{children} == 0 } @certs;\n  foreach my $leaf (@leaves) {\n    my $chain = [];\n    my $cert = $leaf;\n\n    while (defined($cert)) {\n      push @$chain, $cert;\n\n      $cert = $subject_hash{$cert->{issuer}};\n      if (defined($cert) &&\n          (scalar(grep {$_ == $cert} @$chain) != 0)) {\n        $cert = undef;\n      }\n    }\n\n    push @chains, $chain;\n  }\n\n  return @chains;\n}\n\n\n##################\n# openssl helpers\n##################\n\nsub openssl_exec (@) {\n  my (@args) = @_;\n\n  my $fh;\n\n  open($fh, \"-|\", $opensslbin, @args)\n    or die \"Failed to run '$opensslbin @args': $!\";\n  my @output = <$fh>;\n  if (! close($fh)) {\n    # NOTE: Callers should check the value of $? for the exit status.\n    if ($!) {\n      die \"Syserr closing '$opensslbin @args' pipe: $!\";\n    }\n  }\n\n  return @output;\n}\n\nsub openssl_format ($) {\n  my ($filename) = @_;\n\n  return -B $filename ? 'DER' : 'PEM';\n}\n\nsub openssl_x509_query ($@) {\n  my ($filename, @query) = @_;\n\n  my $format = openssl_format($filename);\n  my @args = (\"x509\", \"-in\", $filename, \"-inform\", $format, \"-noout\", @query);\n  return openssl_exec(@args);\n}\n\nsub openssl_hash ($) {\n  my ($filename) = @_;\n\n  my $cert_hash = join(\"\", openssl_x509_query($filename, \"-hash\"));\n  $? and die \"openssl -hash '$filename' returned $?\";\n\n  chomp($cert_hash);\n  return $cert_hash;\n}\n\nsub openssl_fingerprint ($) {\n  my ($filename) = @_;\n\n  my $fingerprint = join(\"\", openssl_x509_query($filename, \"-fingerprint\"));\n  $? and die \"openssl -fingerprint '$filename' returned $?\";\n\n  chomp($fingerprint);\n  return $fingerprint;\n}\n\nsub openssl_emails ($) {\n  my ($filename) = @_;\n\n  my @mailboxes = openssl_x509_query($filename, \"-email\");\n  $? and die \"openssl -email '$filename' returned $?\";\n\n  chomp(@mailboxes);\n  return @mailboxes;\n}\n\nsub openssl_p12_to_pem ($$) {\n  my ($p12_file, $pem_file) = @_;\n\n  my @args = (\"pkcs12\", \"-in\", $p12_file, \"-out\", $pem_file);\n  openssl_exec(@args);\n  $? and die \"openssl pkcs12 conversion returned $?\";\n}\n\nsub openssl_verify ($$) {\n  my ($issuer_path, $cert_path) = @_;\n\n  my @args = (\"verify\", $root_certs_switch, $root_certs_path,\n              \"-purpose\", \"smimesign\", \"-purpose\", \"smimeencrypt\", \"-untrusted\",\n              $issuer_path, $cert_path);\n  my $output = join(\"\", openssl_exec(@args));\n\n  chomp($output);\n  return $output;\n}\n\nsub openssl_crl_text($) {\n  my ($crl) = @_;\n\n  my @args = (\"crl\", \"-text\", \"-noout\", \"-in\", $crl);\n  my @output = openssl_exec(@args);\n  $? and die \"openssl crl -text '$crl' returned $?\";\n\n  return @output;\n}\n\nsub openssl_trust_flag ($$;$) {\n  my ($cert, $issuerid, $crl) = @_;\n\n  print \"==> about to verify certificate of $cert\\n\";\n\n  my $result = 't';\n  my $issuer_path;\n  my $cert_path = \"$certificates_path/$cert\";\n\n  if ($issuerid eq '?') {\n    $issuer_path = \"$certificates_path/$cert\";\n  } else {\n    $issuer_path = \"$certificates_path/$issuerid\";\n  }\n\n  my $output = openssl_verify($issuer_path, $cert_path);\n  if ($?) {\n    print \"openssl verify returned exit code \" . ($? >> 8) . \" with output:\\n\";\n    print \"$output\\n\\n\";\n    print \"Marking certificate as invalid\\n\";\n    return 'i';\n  }\n  print \"\\n$output\\n\";\n\n  if ($output !~ /OK/) {\n    return 'i';\n  }\n\n  my ($not_before, $not_after, $serial_in) = openssl_x509_query($cert_path, \"-dates\", \"-serial\");\n  $? and die \"openssl -dates -serial '$cert_path' returned $?\";\n\n  if ( defined $not_before and defined $not_after ) {\n    my %months = ('Jan', '00', 'Feb', '01', 'Mar', '02', 'Apr', '03',\n                  'May', '04', 'Jun', '05', 'Jul', '06', 'Aug', '07',\n                  'Sep', '08', 'Oct', '09', 'Nov', '10', 'Dec', '11');\n\n    my @tmp = split (/\\=/, $not_before);\n    my $not_before_date = $tmp[1];\n    my @fields =\n      $not_before_date =~ /(\\w+)\\s*(\\d+)\\s*(\\d+):(\\d+):(\\d+)\\s*(\\d+)\\s*GMT/;\n    if ($#fields == 5) {\n      if (timegm($fields[4], $fields[3], $fields[2], $fields[1],\n                 $months{$fields[0]}, $fields[5]) > time) {\n        print \"Certificate is not yet valid.\\n\";\n        return 'e';\n      }\n    } else {\n      print \"Expiration Date: Parse Error :  $not_before_date\\n\\n\";\n    }\n\n    @tmp = split (/\\=/, $not_after);\n    my $not_after_date = $tmp[1];\n    @fields =\n      $not_after_date =~ /(\\w+)\\s*(\\d+)\\s*(\\d+):(\\d+):(\\d+)\\s*(\\d+)\\s*GMT/;\n    if ($#fields == 5) {\n      if (timegm($fields[4], $fields[3], $fields[2], $fields[1],\n                 $months{$fields[0]}, $fields[5]) < time) {\n        print \"Certificate has expired.\\n\";\n        return 'e';\n      }\n    } else {\n      print \"Expiration Date: Parse Error :  $not_after_date\\n\\n\";\n    }\n  }\n\n  if ( defined $crl ) {\n    chomp($serial_in);\n    my @serial = split (/\\=/, $serial_in);\n    my $match_line = undef;\n    my @crl_lines = openssl_crl_text($crl);\n    for (my $index = 0; $index <= $#crl_lines; $index++) {\n      if ($crl_lines[$index] =~ /Serial Number:\\s*\\Q$serial[1]\\E\\b/) {\n        $match_line = $crl_lines[$index + 1];\n        last;\n      }\n    }\n\n    if ( defined $match_line ) {\n      my @revoke_date = split (/:\\s/, $match_line);\n      print \"FAILURE: Certificate $cert has been revoked on $revoke_date[1]\\n\";\n      $result = 'r';\n    }\n  }\n  print \"\\n\";\n\n  return $result;\n}\n\nsub openssl_parse_pem ($$) {\n  my ($filename, $attrs_required) = @_;\n\n  my $state = 0;\n  my $cert_data;\n  my @certs;\n  my $cert_count = 0;\n  my $bag_count = 0;\n  my $cert_tmp_fh;\n  my $cert_tmp_filename;\n\n  $cert_data = new_cert_structure();\n  ($cert_tmp_fh, $cert_data->{datafile}) = create_tempfile();\n\n  open(PEM_FILE, \"<$filename\") or die(\"Can't open $filename: $!\");\n  while (<PEM_FILE>) {\n    if (/^Bag Attributes/) {\n      $bag_count++;\n      $state == 0 or  die(\"PEM-parse error at: $.\");\n      $state = 1;\n    }\n\n    # Allow attributes without the \"Bag Attributes\" header\n    if ($state != 2) {\n      if (/localKeyID:\\s*(.*)/) {\n        $cert_data->{localKeyID} = $1;\n      }\n\n      if (/subject=\\s*(.*)/) {\n        $cert_data->{subject} = $1;\n      }\n\n      if (/issuer=\\s*(.*)/) {\n        $cert_data->{issuer} = $1;\n      }\n    }\n\n\n    if (/^-----/) {\n      if (/BEGIN/) {\n        print $cert_tmp_fh $_;\n        $state = 2;\n\n        if (/PRIVATE/) {\n            $cert_data->{type} = \"K\";\n            next;\n        }\n        if (/CERTIFICATE/) {\n            $cert_data->{type} = \"C\";\n            next;\n        }\n        die(\"What's this: $_\");\n      }\n      if (/END/) {\n        $state = 0;\n        print $cert_tmp_fh $_;\n        close($cert_tmp_fh);\n\n        $cert_count++;\n        push (@certs, $cert_data);\n\n        $cert_data = new_cert_structure();\n        ($cert_tmp_fh, $cert_data->{datafile}) = create_tempfile();\n        next;\n      }\n    }\n    print $cert_tmp_fh $_;\n  }\n  close($cert_tmp_fh);\n  close(PEM_FILE);\n\n  if ($attrs_required && ($bag_count != $cert_count)) {\n    die(\"Not all contents were bagged. can't continue.\");\n  }\n\n  return @certs;\n}\n\nsub openssl_dump_cert ($) {\n  my ($filename) = @_;\n\n  my $format = openssl_format($filename);\n  my @args = (\"x509\", \"-in\", $filename, \"-inform\", $format);\n  my $output = join(\"\", openssl_exec(@args));\n  $? and die \"openssl x509 certicate dump returned $?\";\n\n  return $output;\n}\n\nsub openssl_purpose_flag ($) {\n  my ($filename) = @_;\n\n  my $purpose = \"\";\n\n  my @output = openssl_x509_query($filename, \"-purpose\");\n  $? and die \"openssl -purpose '$filename' returned $?\";\n\n  foreach my $line (@output) {\n    if ($line =~ /^S\\/MIME signing\\s*:\\s*Yes/) {\n      $purpose .= \"s\";\n    }\n    elsif ($line =~ /^S\\/MIME encryption\\s*:\\s*Yes/) {\n      $purpose .= \"e\";\n    }\n  }\n\n  if (! $purpose) {\n    $purpose = \"-\";\n  }\n\n  return $purpose;\n}\n\n\n#################################\n# certificate management methods\n#################################\n\nsub cm_list_certs () {\n  my %keyflags = ( 'i', '(Invalid)',  'r', '(Revoked)', 'e', '(Expired)',\n                   'u', '(Unverified)', 'v', '(Valid)', 't', '(Trusted)');\n\n  open(INDEX, \"<$certificates_path/.index\") or\n    die \"Couldn't open $certificates_path/.index: $!\";\n\n  print \"\\n\";\n  while (<INDEX>) {\n    my $tmp;\n    my @tmp;\n    my $tab = \"            \";\n    my @fields = split;\n\n    if ($fields[2] eq '-') {\n      print \"$fields[1]: Issued for: $fields[0] $keyflags{$fields[4]}\\n\";\n    } else {\n      print \"$fields[1]: Issued for: $fields[0] \\\"$fields[2]\\\" $keyflags{$fields[4]}\\n\";\n    }\n\n    my $certfile = \"$certificates_path/$fields[1]\";\n    my $cert;\n    {\n        open F, $certfile or\n            die \"Couldn't open $certfile: $!\";\n        local $/;\n        $cert = <F>;\n        close F;\n    }\n\n    my ($subject_in, $issuer_in, $date1_in, $date2_in) =\n      openssl_x509_query($certfile, \"-subject\", \"-issuer\", \"-dates\");\n    $? and print \"ERROR: openssl -subject -issuer -dates '$certfile' returned $?\\n\\n\" and next;\n\n\n    my @subject = split(/\\//, $subject_in);\n    while (@subject) {\n      $tmp = shift @subject;\n      ($tmp =~ /^CN\\=/) and last;\n      undef $tmp;\n    }\n    defined $tmp and @tmp = split (/\\=/, $tmp) and\n      print $tab.\"Subject: $tmp[1]\\n\";\n\n    my @issuer = split(/\\//, $issuer_in);\n    while (@issuer) {\n      $tmp = shift @issuer;\n      ($tmp =~ /^CN\\=/) and last;\n      undef $tmp;\n    }\n    defined $tmp and @tmp = split (/\\=/, $tmp) and\n      print $tab.\"Issued by: $tmp[1]\";\n\n    if ( defined $date1_in and defined $date2_in ) {\n      @tmp = split (/\\=/, $date1_in);\n      $tmp = $tmp[1];\n      @tmp = split (/\\=/, $date2_in);\n      print $tab.\"Certificate is not valid before $tmp\".\n        $tab.\"                      or after  \".$tmp[1];\n    }\n\n    -e \"$private_keys_path/$fields[1]\" and\n      print \"$tab - Matching private key installed -\\n\";\n\n    my @purpose = openssl_x509_query($certfile, \"-purpose\");\n    $? and die \"openssl -purpose '$certfile' returned $?\";\n    chomp(@purpose);\n\n    print \"$tab$purpose[0] (displays S/MIME options only)\\n\";\n    while (@purpose) {\n      $tmp = shift @purpose;\n      ($tmp =~ /^S\\/MIME/ and $tmp =~ /Yes/) or next;\n      my @tmptmp = split (/:/, $tmp);\n      print \"$tab  $tmptmp[0]\\n\";\n    }\n\n    print \"\\n\";\n  }\n\n  close(INDEX);\n}\n\nsub cm_add_entry ($$$$$$;$) {\n  my ($mailbox, $hashvalue, $use_cert, $label, $trust, $purpose, $issuer_hash) = @_;\n\n  if (! defined($issuer_hash) ) {\n    $issuer_hash = \"?\";\n  }\n\n  if ($use_cert) {\n    open(INDEX, \"+<$certificates_path/.index\") or\n        die \"Couldn't open $certificates_path/.index: $!\";\n  }\n  else {\n    open(INDEX, \"+<$private_keys_path/.index\") or\n        die \"Couldn't open $private_keys_path/.index: $!\";\n  }\n\n  while (<INDEX>) {\n    my @fields = split;\n    if (($fields[0] eq $mailbox) && ($fields[1] eq $hashvalue)) {\n      close(INDEX);\n      return;\n    }\n  }\n\n  print INDEX \"$mailbox $hashvalue $label $issuer_hash $trust $purpose\\n\";\n\n  close(INDEX);\n}\n\n# Returns the hashvalue.index of the stored cert\nsub cm_add_cert ($) {\n  my ($filename) = @_;\n\n  my $iter = 0;\n  my $hashvalue = openssl_hash($filename);\n  my $fp1 = openssl_fingerprint($filename);\n\n  while (-e \"$certificates_path/$hashvalue.$iter\") {\n    my $fp2 = openssl_fingerprint(\"$certificates_path/$hashvalue.$iter\");\n\n    last if $fp1 eq $fp2;\n    $iter++;\n  }\n  $hashvalue .= \".$iter\";\n\n  if (-e \"$certificates_path/$hashvalue\") {\n    print \"\\nCertificate: $certificates_path/$hashvalue already installed.\\n\";\n  }\n  else {\n    mycopy $filename, \"$certificates_path/$hashvalue\";\n  }\n\n  return $hashvalue;\n}\n\n# Returns a reference containing the hashvalue, mailboxes, trust flag, and purpose\n# flag of the stored cert.\nsub cm_add_indexed_cert ($$$) {\n  my ($filename, $label, $issuer_hash) = @_;\n\n  my $cert_data = {};\n\n  $cert_data->{hashvalue} = cm_add_cert($filename);\n  $cert_data->{mailboxes} = [ openssl_emails($filename) ];\n  $cert_data->{trust} = openssl_trust_flag($cert_data->{hashvalue}, $issuer_hash);\n  $cert_data->{purpose} = openssl_purpose_flag($filename);\n\n  foreach my $mailbox (@{$cert_data->{mailboxes}}) {\n    cm_add_entry($mailbox, $cert_data->{hashvalue}, 1, $label,\n                 $cert_data->{trust}, $cert_data->{purpose}, $issuer_hash);\n    print \"\\ncertificate \", $cert_data->{hashvalue}, \" ($label) for $mailbox added.\\n\";\n  }\n\n  return $cert_data;\n}\n\nsub cm_add_key ($$$$$$) {\n    my ($file, $hashvalue, $mailbox, $label, $trust, $purpose) = @_;\n\n    unless (-e \"$private_keys_path/$hashvalue\") {\n        mycopy $file, \"$private_keys_path/$hashvalue\";\n    }\n\n    cm_add_entry($mailbox, $hashvalue, 0, $label, $trust, $purpose);\n    print \"added private key: \" .\n      \"$private_keys_path/$hashvalue for $mailbox\\n\";\n}\n\nsub cm_modify_entry ($$$;$) {\n  my ($op, $hashvalue, $use_cert, $opt_param) = @_;\n\n  my $label;\n  my $trust;\n  my $purpose;\n  my $path;\n  my @fields;\n\n  $op eq 'L' and ($label = $opt_param);\n  $op eq 'T' and ($trust = $opt_param);\n  $op eq 'P' and ($purpose = $opt_param);\n\n  if ($use_cert) {\n    $path = $certificates_path;\n  }\n  else {\n    $path = $private_keys_path;\n  }\n\n  open(INDEX, \"<$path/.index\") or\n    die \"Couldn't open $path/.index: $!\";\n  my ($newindex_fh, $newindex) = create_tempfile();\n\n  while (<INDEX>) {\n    chomp;\n\n    # fields: mailbox hash label issuer_hash trust purpose\n    @fields = split;\n\n    if ($fields[1] eq $hashvalue or $hashvalue eq 'all') {\n      $op eq 'R' and next;\n\n      if ($op eq 'L') {\n        $fields[2] = $label;\n      }\n\n      if ($op eq 'T') {\n        $fields[3] = \"?\" if ($#fields < 3);\n        $fields[4] = $trust;\n      }\n\n      if ($op eq 'P') {\n        $fields[3] = \"?\" if ($#fields < 3);\n        $fields[4] = \"u\" if ($#fields < 4);\n        $fields[5] = $purpose;\n      }\n\n      print $newindex_fh join(\" \", @fields), \"\\n\";\n    }\n    else {\n      print $newindex_fh $_, \"\\n\";\n    }\n  }\n  close(INDEX);\n  close($newindex_fh);\n\n  move $newindex, \"$path/.index\"\n      or die \"Couldn't move $newindex to $path/.index: $!\\n\";\n}\n\n# This returns the first matching entry.\nsub cm_find_entry ($$) {\n  my ($hashvalue, $use_cert) = @_;\n\n  my ($path, $index_fh);\n\n  if ($use_cert) {\n    $path = $certificates_path;\n  }\n  else {\n    $path = $private_keys_path;\n  }\n\n  open($index_fh, \"<$path/.index\") or\n    die \"Couldn't open $path/.index: $!\";\n\n  while (<$index_fh>) {\n    chomp;\n    my @fields = split;\n    if ($fields[1] eq $hashvalue) {\n      close($index_fh);\n      return @fields;\n    }\n  }\n\n  close($index_fh);\n  return;\n}\n\n# Refreshes trust flags, and adds purpose if missing\n# (e.g. from an older index format)\nsub cm_refresh_index () {\n  my $index_fh;\n\n  my ($last_hash, $last_trust, $last_purpose) = (\"\", \"\", \"\");\n\n  open($index_fh, \"<$certificates_path/.index\") or\n    die \"Couldn't open $certificates_path/.index: $!\";\n  my ($newindex_fh, $newindex) = create_tempfile();\n\n  while (<$index_fh>) {\n    chomp;\n\n    # fields: mailbox hash label issuer_hash trust purpose\n    my @fields = split;\n\n    if ($fields[1] eq $last_hash) {\n      $fields[4] = $last_trust;\n      $fields[5] = $last_purpose;\n    }\n    else {\n      # Don't overwrite a revoked flag, because we don't have the CRL\n      if ($fields[4] ne \"r\") {\n        $fields[4] = openssl_trust_flag($fields[1], $fields[3]);\n      }\n\n      if ($#fields < 5) {\n        $fields[5] = openssl_purpose_flag(\"$certificates_path/$fields[1]\");\n      }\n\n      # To update an old private keys index format, always push the trust\n      # and purpose out.\n      if (-e \"$private_keys_path/$fields[1]\") {\n        cm_modify_entry (\"T\", $fields[1], 0, $fields[4]);\n        cm_modify_entry (\"P\", $fields[1], 0, $fields[5]);\n      }\n\n      $last_hash = $fields[1];\n      $last_trust = $fields[4];\n      $last_purpose = $fields[5];\n    }\n\n    print $newindex_fh join(\" \", @fields), \"\\n\";\n  }\n  close($index_fh);\n  close($newindex_fh);\n\n  move $newindex, \"$certificates_path/.index\"\n      or die \"Couldn't move $newindex to $certificates_path/.index: $!\\n\";\n}\n\n\n##############\n# Op handlers\n##############\n\nsub handle_init_paths () {\n  mkdir_recursive($certificates_path);\n  mkdir_recursive($private_keys_path);\n\n  my $file;\n\n  $file = $certificates_path . \"/.index\";\n  -f $file or open(TMP_FILE, \">$file\") and close(TMP_FILE)\n      or die \"Can't touch $file: $!\";\n\n  $file = $private_keys_path . \"/.index\";\n  -f $file or open(TMP_FILE, \">$file\") and close(TMP_FILE)\n      or die \"Can't touch $file: $!\";\n}\n\nsub handle_change_label ($) {\n  my ($keyid) = @_;\n\n  my $label = query_label();\n\n  if (-e \"$certificates_path/$keyid\") {\n    cm_modify_entry('L', $keyid, 1, $label);\n    print \"Changed label for certificate $keyid.\\n\";\n  }\n  else {\n    die \"No such certificate: $keyid\";\n  }\n\n  if (-e \"$private_keys_path/$keyid\") {\n    cm_modify_entry('L', $keyid, 0, $label);\n    print \"Changed label for private key $keyid.\\n\";\n  }\n}\n\nsub handle_add_cert($) {\n  my ($filename) = @_;\n\n  my $label = query_label();\n  my @cert_contents = openssl_parse_pem($filename, 0);\n  @cert_contents = grep { $_->{type} eq \"C\" } @cert_contents;\n\n  my @cert_chains = create_cert_chains(@cert_contents);\n  print \"Found \" . scalar(@cert_chains) . \" certificate chains\\n\";\n\n  foreach my $chain (@cert_chains) {\n    my $leaf = shift(@$chain);\n    my $issuer_chain_hash = \"?\";\n\n    print \"Processing chain:\\n\";\n    if ($leaf->{subject}) {\n      print \"subject=\" . $leaf->{subject} . \"\\n\";\n    }\n\n    if (scalar(@$chain) > 0) {\n      my ($issuer_chain_fh, $issuer_chain_file) = create_tempfile();\n\n      foreach my $issuer (@$chain) {\n        my $issuer_datafile = $issuer->{datafile};\n        open(my $issuer_fh, \"< $issuer_datafile\") or\n            die \"can't open $issuer_datafile: $?\";\n        print $issuer_chain_fh $_ while (<$issuer_fh>);\n        close($issuer_fh);\n      }\n\n      close($issuer_chain_fh);\n      $issuer_chain_hash = cm_add_cert($issuer_chain_file);\n    }\n\n    cm_add_indexed_cert($leaf->{datafile}, $label, $issuer_chain_hash);\n  }\n}\n\nsub handle_add_pem ($) {\n  my ($filename) = @_;\n\n  my @pem_contents;\n  my $iter;\n  my $key;\n  my $certificate;\n  my $root_cert;\n  my $issuer_cert_file;\n\n  @pem_contents = openssl_parse_pem($filename, 1);\n\n  # look for key\n  $iter = 0;\n  while ($iter <= $#pem_contents) {\n    if ($pem_contents[$iter]->{type} eq \"K\") {\n      $key = $pem_contents[$iter];\n      splice(@pem_contents, $iter, 1);\n      last;\n    }\n    $iter++;\n  }\n  defined($key) or die(\"Couldn't find private key!\");\n  $key->{localKeyID} or die(\"Attribute 'localKeyID' wasn't set.\");\n\n  # private key and certificate use the same 'localKeyID'\n  $iter = 0;\n  while ($iter <= $#pem_contents) {\n    if (($pem_contents[$iter]->{type} eq \"C\") &&\n        ($pem_contents[$iter]->{localKeyID} eq $key->{localKeyID})) {\n      $certificate = $pem_contents[$iter];\n      splice(@pem_contents, $iter, 1);\n      last;\n    }\n    $iter++;\n  }\n  defined($certificate) or die(\"Couldn't find matching certificate!\");\n\n  if ($#pem_contents < 0) {\n    die(\"No root and no intermediate certificates. Can't continue.\");\n  }\n\n  # Look for a self signed root certificate\n  $iter = 0;\n  while ($iter <= $#pem_contents) {\n    if ($pem_contents[$iter]->{subject} eq $pem_contents[$iter]->{issuer}) {\n      $root_cert = $pem_contents[$iter];\n      splice(@pem_contents, $iter, 1);\n      last;\n    }\n    $iter++;\n  }\n  if (defined($root_cert)) {\n    $issuer_cert_file = $root_cert->{datafile};\n  } else {\n    print \"Couldn't identify root certificate!\\n\";\n  }\n\n  # what's left are intermediate certificates.\n  if ($#pem_contents >= 0) {\n    my ($tmp_issuer_cert_fh, $tmp_issuer_cert) = create_tempfile();\n    $issuer_cert_file = $tmp_issuer_cert;\n\n    $iter = 0;\n    while ($iter <= $#pem_contents) {\n      my $cert_datafile = $pem_contents[$iter]->{datafile};\n      open (CERT, \"< $cert_datafile\") or die \"can't open $cert_datafile: $?\";\n      print $tmp_issuer_cert_fh $_ while (<CERT>);\n      close CERT;\n\n      $iter++;\n    }\n    close $tmp_issuer_cert_fh;\n  }\n\n  handle_add_chain($key->{datafile}, $certificate->{datafile}, $issuer_cert_file);\n}\n\nsub handle_add_p12 ($) {\n  my ($filename) = @_;\n\n  print \"\\nNOTE: This will ask you for two passphrases:\\n\";\n  print \"       1. The passphrase you used for exporting\\n\";\n  print \"       2. The passphrase you wish to secure your private key with.\\n\\n\";\n\n  my ($pem_fh, $pem_file) = create_tempfile();\n  close($pem_fh);\n\n  openssl_p12_to_pem($filename, $pem_file);\n  -e $pem_file and -s $pem_file or die(\"Conversion of $filename failed.\");\n\n  handle_add_pem($pem_file);\n}\n\nsub handle_add_chain ($$$) {\n  my ($key_file, $cert_file, $issuer_file) = @_;\n\n  my $label = query_label();\n\n  my $issuer_hash = cm_add_cert($issuer_file);\n  my $cert_data = cm_add_indexed_cert($cert_file, $label, $issuer_hash);\n\n  foreach my $mailbox (@{$cert_data->{mailboxes}}) {\n    cm_add_key($key_file, $cert_data->{hashvalue}, $mailbox, $label,\n               $cert_data->{trust}, $cert_data->{purpose});\n  }\n}\n\nsub handle_verify_cert ($$) {\n  my ($keyid, $crl) = @_;\n\n  -e \"$certificates_path/$keyid\" or $keyid eq 'all'\n    or die \"No such certificate: $keyid\";\n\n  my @fields = cm_find_entry($keyid, 1);\n  if (scalar(@fields)) {\n    my $issuer_hash = $fields[3];\n    my $trust = openssl_trust_flag($keyid, $issuer_hash, $crl);\n\n    cm_modify_entry('T', $keyid, 0, $trust);\n    cm_modify_entry('T', $keyid, 1, $trust);\n  }\n}\n\nsub handle_remove_pair ($) {\n  my ($keyid) = @_;\n\n  if (-e \"$certificates_path/$keyid\") {\n    unlink \"$certificates_path/$keyid\";\n    cm_modify_entry('R', $keyid, 1);\n    print \"Removed certificate $keyid.\\n\";\n  }\n  else {\n    die \"No such certificate: $keyid\";\n  }\n\n  if (-e \"$private_keys_path/$keyid\") {\n    unlink \"$private_keys_path/$keyid\";\n    cm_modify_entry('R', $keyid, 0);\n    print \"Removed private key $keyid.\\n\";\n  }\n}\n\nsub handle_add_root_cert ($) {\n  my ($root_cert) = @_;\n\n  my $root_hash = openssl_hash($root_cert);\n\n  if (-d $root_certs_path) {\n    -e \"$root_certs_path/$root_hash\" or\n        mycopy $root_cert, \"$root_certs_path/$root_hash\";\n  }\n  else {\n    open(ROOT_CERTS, \">>$root_certs_path\") or\n      die (\"Couldn't open $root_certs_path for writing\");\n\n    my $md5fp = openssl_fingerprint($root_cert);\n\n    my @cert_text = openssl_x509_query($root_cert, \"-text\");\n    $? and die \"openssl -text '$root_cert' returned $?\";\n\n    print \"Enter a label, name or description for this certificate: \";\n    my $input = <STDIN>;\n\n    my $line = \"=======================================\\n\";\n    print ROOT_CERTS \"\\n$input$line$md5fp\\nPEM-Data:\\n\";\n\n    my $cert = openssl_dump_cert($root_cert);\n    print ROOT_CERTS $cert;\n    print ROOT_CERTS @cert_text;\n    close (ROOT_CERTS);\n  }\n}\n"
  },
  {
    "path": "smtp.c",
    "content": "/* mutt - text oriented MIME mail user agent\n * Copyright (C) 2002 Michael R. Elkins <me@mutt.org>\n * Copyright (C) 2005-2009 Brendan Cully <brendan@kublai.com>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.\n */\n\n/* This file contains code for direct SMTP delivery of email messages. */\n\n#if HAVE_CONFIG_H\n#include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_curses.h\"\n#include \"mutt_socket.h\"\n#ifdef USE_SSL\n# include \"mutt_ssl.h\"\n#endif\n#ifdef USE_SASL\n#include \"mutt_sasl.h\"\n\n#include <sasl/sasl.h>\n#include <sasl/saslutil.h>\n#endif\n\n#include <netdb.h>\n#include <netinet/in.h>\n#include <stdio.h>\n#include <sys/stat.h>\n\n#define smtp_success(x) ((x)/100 == 2)\n#define smtp_ready 334\n#define smtp_continue 354\n\n#define smtp_err_read -2\n#define smtp_err_write -3\n#define smtp_err_code -4\n\n#define SMTP_PORT 25\n#define SMTPS_PORT 465\n\n#define SMTP_AUTH_SUCCESS 0\n#define SMTP_AUTH_UNAVAIL 1\n#define SMTP_AUTH_FAIL    -1\n\nenum {\n  STARTTLS,\n  AUTH,\n  DSN,\n  EIGHTBITMIME,\n  SMTPUTF8,\n\n  CAPMAX\n};\n\n#ifdef USE_SASL\nstatic int smtp_auth (CONNECTION* conn);\nstatic int smtp_auth_sasl (CONNECTION* conn, const char* mechanisms);\n#endif\n\nstatic int smtp_fill_account (ACCOUNT* account);\nstatic int smtp_open (CONNECTION* conn);\n\nstatic int Esmtp = 0;\nstatic char* AuthMechs = NULL;\nstatic unsigned char Capabilities[(CAPMAX + 7)/ 8];\n\nstatic int smtp_code (char *buf, size_t len, int *n)\n{\n  char code[4];\n\n  if (len < 4)\n    return -1;\n  code[0] = buf[0];\n  code[1] = buf[1];\n  code[2] = buf[2];\n  code[3] = 0;\n  if (mutt_atoi (code, n) < 0)\n    return -1;\n  return 0;\n}\n\n/* Reads a command response from the SMTP server.\n * Returns:\n * 0\ton success (2xx code) or continue (354 code)\n * -1\twrite error, or any other response code\n */\nstatic int\nsmtp_get_resp (CONNECTION * conn)\n{\n  int n;\n  char buf[1024];\n\n  do {\n    n = mutt_socket_readln (buf, sizeof (buf), conn);\n    if (n < 4) {\n      /* read error, or no response code */\n      return smtp_err_read;\n    }\n\n    if (!ascii_strncasecmp (\"8BITMIME\", buf + 4, 8))\n      mutt_bit_set (Capabilities, EIGHTBITMIME);\n    else if (!ascii_strncasecmp (\"AUTH \", buf + 4, 5))\n    {\n      mutt_bit_set (Capabilities, AUTH);\n      FREE (&AuthMechs);\n      AuthMechs = safe_strdup (buf + 9);\n    }\n    else if (!ascii_strncasecmp (\"DSN\", buf + 4, 3))\n      mutt_bit_set (Capabilities, DSN);\n    else if (!ascii_strncasecmp (\"STARTTLS\", buf + 4, 8))\n      mutt_bit_set (Capabilities, STARTTLS);\n    else if (!ascii_strncasecmp (\"SMTPUTF8\", buf + 4, 8))\n      mutt_bit_set (Capabilities, SMTPUTF8);\n\n    if (smtp_code (buf, n, &n) < 0)\n      return smtp_err_code;\n\n  } while (buf[3] == '-');\n\n  if (smtp_success (n) || n == smtp_continue)\n    return 0;\n\n  mutt_error (_(\"SMTP session failed: %s\"), buf);\n    return -1;\n}\n\nstatic int\nsmtp_rcpt_to (CONNECTION * conn, const ADDRESS * a)\n{\n  char buf[1024];\n  int r;\n\n  while (a)\n  {\n    /* weed out group mailboxes, since those are for display only */\n    if (!a->mailbox || a->group)\n    {\n      a = a->next;\n      continue;\n    }\n    if (mutt_bit_isset (Capabilities, DSN) && DsnNotify)\n      snprintf (buf, sizeof (buf), \"RCPT TO:<%s> NOTIFY=%s\\r\\n\",\n                a->mailbox, DsnNotify);\n    else\n      snprintf (buf, sizeof (buf), \"RCPT TO:<%s>\\r\\n\", a->mailbox);\n    if (mutt_socket_write (conn, buf) == -1)\n      return smtp_err_write;\n    if ((r = smtp_get_resp (conn)))\n      return r;\n    a = a->next;\n  }\n\n  return 0;\n}\n\nstatic int\nsmtp_data (CONNECTION * conn, const char *msgfile)\n{\n  char buf[1024];\n  FILE *fp = 0;\n  progress_t progress;\n  struct stat st;\n  int r, term = 0;\n  size_t buflen = 0;\n\n  fp = fopen (msgfile, \"r\");\n  if (!fp)\n  {\n    mutt_error (_(\"SMTP session failed: unable to open %s\"), msgfile);\n    return -1;\n  }\n  stat (msgfile, &st);\n  unlink (msgfile);\n  mutt_progress_init (&progress, _(\"Sending message...\"), M_PROGRESS_SIZE,\n                      NetInc, st.st_size);\n\n  snprintf (buf, sizeof (buf), \"DATA\\r\\n\");\n  if (mutt_socket_write (conn, buf) == -1)\n  {\n    safe_fclose (&fp);\n    return smtp_err_write;\n  }\n  if ((r = smtp_get_resp (conn)))\n  {\n    safe_fclose (&fp);\n    return r;\n  }\n\n  while (fgets (buf, sizeof (buf) - 1, fp))\n  {\n    buflen = mutt_strlen (buf);\n    term = buflen && buf[buflen-1] == '\\n';\n    if (term && (buflen == 1 || buf[buflen - 2] != '\\r'))\n      snprintf (buf + buflen - 1, sizeof (buf) - buflen + 1, \"\\r\\n\");\n    if (buf[0] == '.')\n    {\n      if (mutt_socket_write_d (conn, \".\", -1, M_SOCK_LOG_FULL) == -1)\n      {\n        safe_fclose (&fp);\n        return smtp_err_write;\n      }\n    }\n    if (mutt_socket_write_d (conn, buf, -1, M_SOCK_LOG_FULL) == -1)\n    {\n      safe_fclose (&fp);\n      return smtp_err_write;\n    }\n    mutt_progress_update (&progress, ftell (fp), -1);\n  }\n  if (!term && buflen &&\n      mutt_socket_write_d (conn, \"\\r\\n\", -1, M_SOCK_LOG_FULL) == -1)\n  {\n    safe_fclose (&fp);\n    return smtp_err_write;\n  }\n  safe_fclose (&fp);\n\n  /* terminate the message body */\n  if (mutt_socket_write (conn, \".\\r\\n\") == -1)\n    return smtp_err_write;\n\n  if ((r = smtp_get_resp (conn)))\n    return r;\n\n  return 0;\n}\n\n\n/* Returns 1 if a contains at least one 8-bit character, 0 if none do.\n */\nstatic int address_uses_unicode(const char *a)\n{\n  if (!a)\n    return 0;\n\n  while (*a)\n  {\n    if ((unsigned char) *a & (1<<7))\n      return 1;\n    a++;\n  }\n\n  return 0;\n}\n\n\n/* Returns 1 if any address in a contains at least one 8-bit\n * character, 0 if none do.\n */\nstatic int addresses_use_unicode(const ADDRESS* a)\n{\n  while (a)\n  {\n    if(a->mailbox && !a->group && address_uses_unicode(a->mailbox))\n      return 1;\n    a = a->next;\n  }\n  return 0;\n}\n\n\nint\nmutt_smtp_send (const ADDRESS* from, const ADDRESS* to, const ADDRESS* cc,\n                const ADDRESS* bcc, const char *msgfile, int eightbit)\n{\n  CONNECTION *conn;\n  ACCOUNT account;\n  const char* envfrom;\n  char buf[1024];\n  int ret = -1;\n\n  /* it might be better to synthesize an envelope from from user and host\n   * but this condition is most likely arrived at accidentally */\n  if (EnvFrom)\n    envfrom = EnvFrom->mailbox;\n  else if (from)\n    envfrom = from->mailbox;\n  else\n  {\n    mutt_error (_(\"No from address given\"));\n    return -1;\n  }\n\n  if (smtp_fill_account (&account) < 0)\n    return ret;\n\n  if (!(conn = mutt_conn_find (NULL, &account)))\n    return -1;\n\n  Esmtp = eightbit;\n\n  do\n  {\n    /* send our greeting */\n    if (( ret = smtp_open (conn)))\n      break;\n    FREE (&AuthMechs);\n\n    /* send the sender's address */\n    ret = snprintf (buf, sizeof (buf), \"MAIL FROM:<%s>\", envfrom);\n    if (eightbit && mutt_bit_isset (Capabilities, EIGHTBITMIME))\n    {\n      safe_strncat (buf, sizeof (buf), \" BODY=8BITMIME\", 15);\n      ret += 14;\n    }\n    if (DsnReturn && mutt_bit_isset (Capabilities, DSN))\n      ret += snprintf (buf + ret, sizeof (buf) - ret, \" RET=%s\", DsnReturn);\n    if (mutt_bit_isset (Capabilities, SMTPUTF8) &&\n\t(address_uses_unicode(envfrom) ||\n\t addresses_use_unicode(to) ||\n\t addresses_use_unicode(cc) ||\n\t addresses_use_unicode(bcc)))\n      ret += snprintf (buf + ret, sizeof (buf) - ret, \" SMTPUTF8\");\n    safe_strncat (buf, sizeof (buf), \"\\r\\n\", 3);\n    if (mutt_socket_write (conn, buf) == -1)\n    {\n      ret = smtp_err_write;\n      break;\n    }\n    if ((ret = smtp_get_resp (conn)))\n      break;\n\n    /* send the recipient list */\n    if ((ret = smtp_rcpt_to (conn, to)) || (ret = smtp_rcpt_to (conn, cc))\n        || (ret = smtp_rcpt_to (conn, bcc)))\n      break;\n\n    /* send the message data */\n    if ((ret = smtp_data (conn, msgfile)))\n      break;\n\n    mutt_socket_write (conn, \"QUIT\\r\\n\");\n\n    ret = 0;\n  }\n  while (0);\n\n  if (conn)\n    mutt_socket_close (conn);\n\n  if (ret == smtp_err_read)\n    mutt_error (_(\"SMTP session failed: read error\"));\n  else if (ret == smtp_err_write)\n    mutt_error (_(\"SMTP session failed: write error\"));\n  else if (ret == smtp_err_code)\n    mutt_error (_(\"Invalid server response\"));\n\n  return ret;\n}\n\nstatic int smtp_fill_account (ACCOUNT* account)\n{\n  static unsigned short SmtpPort = 0;\n\n  struct servent* service;\n  ciss_url_t url;\n  char* urlstr;\n\n  account->flags = 0;\n  account->port = 0;\n  account->type = M_ACCT_TYPE_SMTP;\n\n  urlstr = safe_strdup (SmtpUrl);\n  url_parse_ciss (&url, urlstr);\n  if ((url.scheme != U_SMTP && url.scheme != U_SMTPS)\n      || mutt_account_fromurl (account, &url) < 0)\n  {\n    FREE (&urlstr);\n    mutt_error (_(\"Invalid SMTP URL: %s\"), SmtpUrl);\n    mutt_sleep (1);\n    return -1;\n  }\n  FREE (&urlstr);\n\n  if (url.scheme == U_SMTPS)\n    account->flags |= M_ACCT_SSL;\n\n  if (!account->port)\n  {\n    if (account->flags & M_ACCT_SSL)\n      account->port = SMTPS_PORT;\n    else\n    {\n      if (!SmtpPort)\n      {\n        service = getservbyname (\"smtp\", \"tcp\");\n        if (service)\n          SmtpPort = ntohs (service->s_port);\n        else\n          SmtpPort = SMTP_PORT;\n        dprint (3, (debugfile, \"Using default SMTP port %d\\n\", SmtpPort));\n      }\n      account->port = SmtpPort;\n    }\n  }\n\n  return 0;\n}\n\nstatic int smtp_helo (CONNECTION* conn)\n{\n  char buf[LONG_STRING];\n  const char* fqdn;\n\n  memset (Capabilities, 0, sizeof (Capabilities));\n\n  if (!Esmtp)\n  {\n    /* if TLS or AUTH are requested, use EHLO */\n    if (conn->account.flags & M_ACCT_USER)\n      Esmtp = 1;\n#ifdef USE_SSL\n    if (option (OPTSSLFORCETLS) || quadoption (OPT_SSLSTARTTLS) != M_NO)\n      Esmtp = 1;\n#endif\n  }\n\n  if(!(fqdn = mutt_fqdn (0)))\n    fqdn = NONULL (Hostname);\n\n  snprintf (buf, sizeof (buf), \"%s %s\\r\\n\", Esmtp ? \"EHLO\" : \"HELO\", fqdn);\n  /* XXX there should probably be a wrapper in mutt_socket.c that\n    * repeatedly calls conn->write until all data is sent.  This\n    * currently doesn't check for a short write.\n    */\n  if (mutt_socket_write (conn, buf) == -1)\n    return smtp_err_write;\n  return smtp_get_resp (conn);\n}\n\nstatic int smtp_open (CONNECTION* conn)\n{\n  int rc;\n\n  if (mutt_socket_open (conn))\n    return -1;\n\n  /* get greeting string */\n  if ((rc = smtp_get_resp (conn)))\n    return rc;\n\n  if ((rc = smtp_helo (conn)))\n    return rc;\n\n#ifdef USE_SSL\n  if (conn->ssf)\n    rc = M_NO;\n  else if (option (OPTSSLFORCETLS))\n    rc = M_YES;\n  else if (mutt_bit_isset (Capabilities, STARTTLS) &&\n           (rc = query_quadoption (OPT_SSLSTARTTLS,\n                                   _(\"Secure connection with TLS?\"))) == -1)\n    return rc;\n\n  if (rc == M_YES)\n  {\n    if (mutt_socket_write (conn, \"STARTTLS\\r\\n\") < 0)\n      return smtp_err_write;\n    if ((rc = smtp_get_resp (conn)))\n      return rc;\n\n    if (mutt_ssl_starttls (conn))\n    {\n      mutt_error (_(\"Could not negotiate TLS connection\"));\n      mutt_sleep (1);\n      return -1;\n    }\n\n    /* re-EHLO to get authentication mechanisms */\n    if ((rc = smtp_helo (conn)))\n      return rc;\n  }\n#endif\n\n  if (conn->account.flags & M_ACCT_USER)\n  {\n    if (!mutt_bit_isset (Capabilities, AUTH))\n    {\n      mutt_error (_(\"SMTP server does not support authentication\"));\n      mutt_sleep (1);\n      return -1;\n    }\n\n#ifdef USE_SASL\n    return smtp_auth (conn);\n#else\n    mutt_error (_(\"SMTP authentication requires SASL\"));\n    mutt_sleep (1);\n    return -1;\n#endif /* USE_SASL */\n  }\n\n  return 0;\n}\n\n#ifdef USE_SASL\nstatic int smtp_auth (CONNECTION* conn)\n{\n  int r = SMTP_AUTH_UNAVAIL;\n\n  if (SmtpAuthenticators && *SmtpAuthenticators)\n  {\n    char* methods = safe_strdup (SmtpAuthenticators);\n    char* method;\n    char* delim;\n\n    for (method = methods; method; method = delim)\n    {\n      delim = strchr (method, ':');\n      if (delim)\n\t*delim++ = '\\0';\n      if (! method[0])\n\tcontinue;\n\n      dprint (2, (debugfile, \"smtp_authenticate: Trying method %s\\n\", method));\n\n      r = smtp_auth_sasl (conn, method);\n      \n      if (r == SMTP_AUTH_FAIL && delim)\n      {\n        mutt_error (_(\"%s authentication failed, trying next method\"), method);\n        mutt_sleep (1);\n      }\n      else if (r != SMTP_AUTH_UNAVAIL)\n        break;\n    }\n\n    FREE (&methods);\n  }\n  else\n    r = smtp_auth_sasl (conn, AuthMechs);\n\n  if (r != SMTP_AUTH_SUCCESS)\n    mutt_account_unsetpass (&conn->account);\n\n  if (r == SMTP_AUTH_FAIL)\n  {\n    mutt_error (_(\"SASL authentication failed\"));\n    mutt_sleep (1);\n  }\n  else if (r == SMTP_AUTH_UNAVAIL)\n  {\n    mutt_error (_(\"No authenticators available\"));\n    mutt_sleep (1);\n  }\n\n  return r == SMTP_AUTH_SUCCESS ? 0 : -1;\n}\n\nstatic int smtp_auth_sasl (CONNECTION* conn, const char* mechlist)\n{\n  sasl_conn_t* saslconn;\n  sasl_interact_t* interaction = NULL;\n  const char* mech;\n  const char* data = NULL;\n  unsigned int len;\n  char *buf = NULL;\n  size_t bufsize = 0;\n  int rc, saslrc;\n\n  if (mutt_sasl_client_new (conn, &saslconn) < 0)\n    return SMTP_AUTH_FAIL;\n\n  do\n  {\n    rc = sasl_client_start (saslconn, mechlist, &interaction, &data, &len, &mech);\n    if (rc == SASL_INTERACT)\n      mutt_sasl_interact (interaction);\n  }\n  while (rc == SASL_INTERACT);\n\n  if (rc != SASL_OK && rc != SASL_CONTINUE)\n  {\n    dprint (2, (debugfile, \"smtp_auth_sasl: %s unavailable\\n\", mech));\n    sasl_dispose (&saslconn);\n    return SMTP_AUTH_UNAVAIL;\n  }\n\n  if (!option(OPTNOCURSES))\n    mutt_message (_(\"Authenticating (%s)...\"), mech);\n\n  bufsize = ((len * 2) > LONG_STRING) ? (len * 2) : LONG_STRING;\n  buf = safe_malloc (bufsize);\n\n  snprintf (buf, bufsize, \"AUTH %s\", mech);\n  if (len)\n  {\n    safe_strcat (buf, bufsize, \" \");\n    if (sasl_encode64 (data, len, buf + mutt_strlen (buf),\n                       bufsize - mutt_strlen (buf), &len) != SASL_OK)\n    {\n      dprint (1, (debugfile, \"smtp_auth_sasl: error base64-encoding client response.\\n\"));\n      goto fail;\n    }\n  }\n  safe_strcat (buf, bufsize, \"\\r\\n\");\n\n  do {\n    if (mutt_socket_write (conn, buf) < 0)\n      goto fail;\n    if ((rc = mutt_socket_readln (buf, bufsize, conn)) < 0)\n      goto fail;\n    if (smtp_code (buf, rc, &rc) < 0)\n      goto fail;\n\n    if (rc != smtp_ready)\n      break;\n\n    if (sasl_decode64 (buf+4, strlen (buf+4), buf, bufsize - 1, &len) != SASL_OK)\n    {\n      dprint (1, (debugfile, \"smtp_auth_sasl: error base64-decoding server response.\\n\"));\n      goto fail;\n    }\n\n    do\n    {\n      saslrc = sasl_client_step (saslconn, buf, len, &interaction, &data, &len);\n      if (saslrc == SASL_INTERACT)\n        mutt_sasl_interact (interaction);\n    }\n    while (saslrc == SASL_INTERACT);\n\n    if (len)\n    {\n      if ((len * 2) > bufsize)\n      {\n        bufsize = len * 2;\n        safe_realloc (&buf, bufsize);\n      }\n      if (sasl_encode64 (data, len, buf, bufsize, &len) != SASL_OK)\n      {\n        dprint (1, (debugfile, \"smtp_auth_sasl: error base64-encoding client response.\\n\"));\n        goto fail;\n      }\n    }\n    strfcpy (buf + len, \"\\r\\n\", bufsize - len);\n  } while (rc == smtp_ready && saslrc != SASL_FAIL);\n\n  if (smtp_success (rc))\n  {\n    mutt_sasl_setup_conn (conn, saslconn);\n    FREE (&buf);\n    return SMTP_AUTH_SUCCESS;\n  }\n\nfail:\n  sasl_dispose (&saslconn);\n  FREE (&buf);\n  return SMTP_AUTH_FAIL;\n}\n#endif /* USE_SASL */\n"
  },
  {
    "path": "snprintf.c",
    "content": "/**************************************************************\n * Original:\n * Patrick Powell Tue Apr 11 09:48:21 PDT 1995\n * A bombproof version of doprnt (dopr) included.\n * Sigh.  This sort of thing is always nasty do deal with.  Note that\n * the version here does not include floating point...\n *\n * snprintf() is used instead of sprintf() as it does limit checks\n * for string length.  This covers a nasty loophole.\n *\n * The other functions are there to prevent NULL pointers from\n * causing nast effects.\n *\n * More Recently:\n *  Brandon Long <blong@fiction.net> 9/15/96 for mutt 0.43\n *  This was ugly.  It is still ugly.  I opted out of floating point\n *  numbers, but the formatter understands just about everything\n *  from the normal C string format, at least as far as I can tell from\n *  the Solaris 2.5 printf(3S) man page.\n *\n *  Brandon Long <blong@fiction.net> 10/22/97 for mutt 0.87.1\n *    Ok, added some minimal floating point support, which means this\n *    probably requires libm on most operating systems.  Don't yet\n *    support the exponent (e,E) and sigfig (g,G).  Also, fmtint()\n *    was pretty badly broken, it just wasn't being exercised in ways\n *    which showed it, so that's been fixed.  Also, formatted the code\n *    to mutt conventions, and removed dead code left over from the\n *    original.  Also, there is now a builtin-test, just compile with:\n *           gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm\n *    and run snprintf for results.\n * \n *  Thomas Roessler <roessler@does-not-exist.org> 01/27/98 for mutt 0.89i\n *    The PGP code was using unsigned hexadecimal formats. \n *    Unfortunately, unsigned formats simply didn't work.\n *\n *  Michael Elkins <me@mutt.org> 03/05/98 for mutt 0.90.8\n *    The original code assumed that both snprintf() and vsnprintf() were\n *    missing.  Some systems only have snprintf() but not vsnprintf(), so\n *    the code is now broken down under HAVE_SNPRINTF and HAVE_VSNPRINTF.\n *\n *  Holger Weiss <holger@zedat.fu-berlin.de> 07/23/06 for mutt 1.5.13\n *    A C99 compliant [v]snprintf() returns the number of characters that\n *    would have been written to a sufficiently sized buffer (excluding\n *    the '\\0').  Mutt now relies on this behavior, but the original\n *    code simply returned the length of the resulting output string, so\n *    that's been fixed.\n *\n **************************************************************/\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)\n\n#include <string.h>\n# include <ctype.h>\n#include <sys/types.h>\n\n/* Define this as a fall through, HAVE_STDARG_H is probably already set */\n\n#define HAVE_VARARGS_H\n\n/* varargs declarations: */\n\n#if defined(HAVE_STDARG_H)\n# include <stdarg.h>\n# define HAVE_STDARGS    /* let's hope that works everywhere (mj) */\n# define VA_LOCAL_DECL   va_list ap\n# define VA_START(f)     va_start(ap, f)\n# define VA_SHIFT(v,t)  ;   /* no-op for ANSI */\n# define VA_END          va_end(ap)\n#else\n# if defined(HAVE_VARARGS_H)\n#  include <varargs.h>\n#  undef HAVE_STDARGS\n#  define VA_LOCAL_DECL   va_list ap\n#  define VA_START(f)     va_start(ap)      /* f is ignored! */\n#  define VA_SHIFT(v,t) v = va_arg(ap,t)\n#  define VA_END        va_end(ap)\n# else\n/*XX ** NO VARARGS ** XX*/\n# endif\n#endif\n\n/*int snprintf (char *str, size_t count, const char *fmt, ...);*/\n/*int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);*/\n\nstatic int dopr (char *buffer, size_t maxlen, const char *format, \n                  va_list args);\nstatic void fmtstr (char *buffer, size_t *currlen, size_t maxlen,\n\t\t    char *value, int flags, int min, int max);\nstatic void fmtint (char *buffer, size_t *currlen, size_t maxlen,\n\t\t    long value, int base, int min, int max, int flags);\nstatic void fmtfp (char *buffer, size_t *currlen, size_t maxlen,\n\t\t   long double fvalue, int min, int max, int flags);\nstatic void dopr_outch (char *buffer, size_t *currlen, size_t maxlen, char c );\n\n/*\n * dopr(): poor man's version of doprintf\n */\n\n/* format read states */\n#define DP_S_DEFAULT 0\n#define DP_S_FLAGS   1\n#define DP_S_MIN     2\n#define DP_S_DOT     3\n#define DP_S_MAX     4\n#define DP_S_MOD     5\n#define DP_S_CONV    6\n#define DP_S_DONE    7\n\n/* format flags - Bits */\n#define DP_F_MINUS \t(1 << 0)\n#define DP_F_PLUS  \t(1 << 1)\n#define DP_F_SPACE \t(1 << 2)\n#define DP_F_NUM   \t(1 << 3)\n#define DP_F_ZERO  \t(1 << 4)\n#define DP_F_UP    \t(1 << 5)\n#define DP_F_UNSIGNED \t(1 << 6)\n\n/* Conversion Flags */\n#define DP_C_SHORT    1\n#define DP_C_LONG     2\n#define DP_C_LONGLONG 3\n#define DP_C_LDOUBLE  4\n\n#define char_to_int(p) (p - '0')\n#undef MAX\n#define MAX(p,q) ((p >= q) ? p : q)\n\nstatic int dopr (char *buffer, size_t maxlen, const char *format, va_list args)\n{\n  char ch;\n  long value;\n  long double fvalue;\n  char *strvalue;\n  int min;\n  int max;\n  int state;\n  int flags;\n  int cflags;\n  size_t currlen;\n  \n  state = DP_S_DEFAULT;\n  currlen = flags = cflags = min = 0;\n  max = -1;\n  ch = *format++;\n\n  while (state != DP_S_DONE)\n  {\n    if (ch == '\\0')\n      state = DP_S_DONE;\n\n    switch(state) \n    {\n    case DP_S_DEFAULT:\n      if (ch == '%') \n\tstate = DP_S_FLAGS;\n      else \n\tdopr_outch (buffer, &currlen, maxlen, ch);\n      ch = *format++;\n      break;\n    case DP_S_FLAGS:\n      switch (ch) \n      {\n      case '-':\n\tflags |= DP_F_MINUS;\n        ch = *format++;\n\tbreak;\n      case '+':\n\tflags |= DP_F_PLUS;\n        ch = *format++;\n\tbreak;\n      case ' ':\n\tflags |= DP_F_SPACE;\n        ch = *format++;\n\tbreak;\n      case '#':\n\tflags |= DP_F_NUM;\n        ch = *format++;\n\tbreak;\n      case '0':\n\tflags |= DP_F_ZERO;\n        ch = *format++;\n\tbreak;\n      default:\n\tstate = DP_S_MIN;\n\tbreak;\n      }\n      break;\n    case DP_S_MIN:\n      if (isdigit((unsigned char)ch)) \n      {\n\tmin = 10*min + char_to_int (ch);\n\tch = *format++;\n      } \n      else if (ch == '*') \n      {\n\tmin = va_arg (args, int);\n\tch = *format++;\n\tstate = DP_S_DOT;\n      } \n      else \n\tstate = DP_S_DOT;\n      break;\n    case DP_S_DOT:\n      if (ch == '.') \n      {\n\tstate = DP_S_MAX;\n\tch = *format++;\n      } \n      else \n\tstate = DP_S_MOD;\n      break;\n    case DP_S_MAX:\n      if (isdigit((unsigned char)ch)) \n      {\n\tif (max < 0)\n\t  max = 0;\n\tmax = 10*max + char_to_int (ch);\n\tch = *format++;\n      } \n      else if (ch == '*') \n      {\n\tmax = va_arg (args, int);\n\tch = *format++;\n\tstate = DP_S_MOD;\n      } \n      else \n\tstate = DP_S_MOD;\n      break;\n    case DP_S_MOD:\n      switch (ch) \n      {\n      case 'h':\n\tcflags = DP_C_SHORT;\n\tch = *format++;\n\tbreak;\n      case 'l':\n\tcflags = DP_C_LONG;\n\tch = *format++;\n\tif (ch == 'l')\n\t{\n\t  cflags = DP_C_LONGLONG;\n\t  ch = *format++;\n\t}\n\tbreak;\n      case 'L':\n\tcflags = DP_C_LDOUBLE;\n\tch = *format++;\n\tbreak;\n      default:\n\tbreak;\n      }\n      state = DP_S_CONV;\n      break;\n    case DP_S_CONV:\n      switch (ch) \n      {\n      case 'd':\n      case 'i':\n\tif (cflags == DP_C_SHORT) \n\t  value = va_arg (args, short int);\n\telse if (cflags == DP_C_LONG)\n\t  value = va_arg (args, long int);\n\telse if (cflags == DP_C_LONGLONG)\n\t  value = va_arg (args, long long int);\n\telse\n\t  value = va_arg (args, int);\n\tfmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);\n\tbreak;\n      case 'o':\n\tflags |= DP_F_UNSIGNED;\n\tif (cflags == DP_C_SHORT)\n\t  value = va_arg (args, unsigned short int);\n\telse if (cflags == DP_C_LONG)\n\t  value = va_arg (args, unsigned long int);\n\telse if (cflags == DP_C_LONGLONG)\n\t  value = va_arg (args, unsigned long long int);\n\telse\n\t  value = va_arg (args, unsigned int);\n\tfmtint (buffer, &currlen, maxlen, value, 8, min, max, flags);\n\tbreak;\n      case 'u':\n\tflags |= DP_F_UNSIGNED;\n\tif (cflags == DP_C_SHORT)\n\t  value = va_arg (args, unsigned short int);\n\telse if (cflags == DP_C_LONG)\n\t  value = va_arg (args, unsigned long int);\n\telse if (cflags == DP_C_LONGLONG)\n\t  value = va_arg (args, unsigned long long int);\n\telse\n\t  value = va_arg (args, unsigned int);\n\tfmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);\n\tbreak;\n      case 'X':\n\tflags |= DP_F_UP;\n      case 'x':\n\tflags |= DP_F_UNSIGNED;\n\tif (cflags == DP_C_SHORT)\n\t  value = va_arg (args, unsigned short int);\n\telse if (cflags == DP_C_LONG)\n\t  value = va_arg (args, unsigned long int);\n\telse if (cflags == DP_C_LONGLONG)\n\t  value = va_arg (args, unsigned long long int);\n\telse\n\t  value = va_arg (args, unsigned int);\n\tfmtint (buffer, &currlen, maxlen, value, 16, min, max, flags);\n\tbreak;\n      case 'f':\n\tif (cflags == DP_C_LDOUBLE)\n\t  fvalue = va_arg (args, long double);\n\telse\n\t  fvalue = va_arg (args, double);\n\t/* um, floating point? */\n\tfmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags);\n\tbreak;\n      case 'E':\n\tflags |= DP_F_UP;\n      case 'e':\n\tif (cflags == DP_C_LDOUBLE)\n\t  fvalue = va_arg (args, long double);\n\telse\n\t  fvalue = va_arg (args, double);\n\tbreak;\n      case 'G':\n\tflags |= DP_F_UP;\n      case 'g':\n\tif (cflags == DP_C_LDOUBLE)\n\t  fvalue = va_arg (args, long double);\n\telse\n\t  fvalue = va_arg (args, double);\n\tbreak;\n      case 'c':\n\tdopr_outch (buffer, &currlen, maxlen, va_arg (args, int));\n\tbreak;\n      case 's':\n\tstrvalue = va_arg (args, char *);\n\tfmtstr (buffer, &currlen, maxlen, strvalue, flags, min, max);\n\tbreak;\n      case 'p':\n\tflags |= DP_F_UNSIGNED;\n\tstrvalue = va_arg (args, void *);\n\tfmtint (buffer, &currlen, maxlen, (long) strvalue, 16, min, max, flags);\n\tbreak;\n      case 'n':\n\tif (cflags == DP_C_SHORT) \n\t{\n\t  short int *num;\n\t  num = va_arg (args, short int *);\n\t  *num = currlen;\n        } \n\telse if (cflags == DP_C_LONG) \n\t{\n\t  long int *num;\n\t  num = va_arg (args, long int *);\n\t  *num = currlen;\n        } \n\telse if (cflags == DP_C_LONGLONG) \n\t{\n\t  long long int *num;\n\t  num = va_arg (args, long long int *);\n\t  *num = currlen;\n        } \n\telse \n\t{\n\t  int *num;\n\t  num = va_arg (args, int *);\n\t  *num = currlen;\n        }\n\tbreak;\n      case '%':\n\tdopr_outch (buffer, &currlen, maxlen, ch);\n\tbreak;\n      case 'w':\n\t/* not supported yet, treat as next char */\n\tch = *format++;\n\tbreak;\n      default:\n\t/* Unknown, skip */\n\tbreak;\n      }\n      ch = *format++;\n      state = DP_S_DEFAULT;\n      flags = cflags = min = 0;\n      max = -1;\n      break;\n    case DP_S_DONE:\n      break;\n    default:\n      /* hmm? */\n      break; /* some picky compilers need this */\n    }\n  }\n  if (currlen < maxlen - 1) \n    buffer[currlen] = '\\0';\n  else \n    buffer[maxlen - 1] = '\\0';\n\n  return (int)currlen;\n}\n\nstatic void fmtstr (char *buffer, size_t *currlen, size_t maxlen,\n\t\t    char *value, int flags, int min, int max)\n{\n  int padlen, strln;     /* amount to pad */\n  int cnt = 0;\n  \n  if (!value)\n  {\n    value = \"<NULL>\";\n  }\n\n  for (strln = 0; value[strln]; ++strln); /* strlen */\n  padlen = min - strln;\n  if (padlen < 0) \n    padlen = 0;\n  if (flags & DP_F_MINUS) \n    padlen = -padlen; /* Left Justify */\n\n  while ((padlen > 0) && (max == -1 || cnt < max)) \n  {\n    dopr_outch (buffer, currlen, maxlen, ' ');\n    --padlen;\n    ++cnt;\n  }\n  while (*value && (max == -1 || cnt < max)) \n  {\n    dopr_outch (buffer, currlen, maxlen, *value++);\n    ++cnt;\n  }\n  while ((padlen < 0) && (max == -1 || cnt < max)) \n  {\n    dopr_outch (buffer, currlen, maxlen, ' ');\n    ++padlen;\n    ++cnt;\n  }\n}\n\n/* Have to handle DP_F_NUM (ie 0x and 0 alternates) */\n\nstatic void fmtint (char *buffer, size_t *currlen, size_t maxlen,\n\t\t    long value, int base, int min, int max, int flags)\n{\n  int signvalue = 0;\n  unsigned long uvalue;\n  char convert[20];\n  int place = 0;\n  int spadlen = 0; /* amount to space pad */\n  int zpadlen = 0; /* amount to zero pad */\n  int caps = 0;\n  \n  if (max < 0)\n    max = 0;\n\n  uvalue = value;\n\n  if(!(flags & DP_F_UNSIGNED))\n  {\n    if( value < 0 ) {\n      signvalue = '-';\n      uvalue = -value;\n    }\n    else\n      if (flags & DP_F_PLUS)  /* Do a sign (+/i) */\n\tsignvalue = '+';\n    else\n      if (flags & DP_F_SPACE)\n\tsignvalue = ' ';\n  }\n  \n  if (flags & DP_F_UP) caps = 1; /* Should characters be upper case? */\n\n  do {\n    convert[place++] =\n      (caps? \"0123456789ABCDEF\":\"0123456789abcdef\")\n      [uvalue % (unsigned)base  ];\n    uvalue = (uvalue / (unsigned)base );\n  } while(uvalue && (place < 20));\n  if (place == 20) place--;\n  convert[place] = 0;\n\n  zpadlen = max - place;\n  spadlen = min - MAX (max, place) - (signvalue ? 1 : 0);\n  if (zpadlen < 0) zpadlen = 0;\n  if (spadlen < 0) spadlen = 0;\n  if (flags & DP_F_ZERO)\n  {\n    zpadlen = MAX(zpadlen, spadlen);\n    spadlen = 0;\n  }\n  if (flags & DP_F_MINUS) \n    spadlen = -spadlen; /* Left Justifty */\n\n#ifdef DEBUG_SNPRINTF\n  dprint (1, (debugfile, \"zpad: %d, spad: %d, min: %d, max: %d, place: %d\\n\",\n      zpadlen, spadlen, min, max, place));\n#endif\n\n  /* Spaces */\n  while (spadlen > 0) \n  {\n    dopr_outch (buffer, currlen, maxlen, ' ');\n    --spadlen;\n  }\n\n  /* Sign */\n  if (signvalue) \n    dopr_outch (buffer, currlen, maxlen, signvalue);\n\n  /* Zeros */\n  if (zpadlen > 0) \n  {\n    while (zpadlen > 0)\n    {\n      dopr_outch (buffer, currlen, maxlen, '0');\n      --zpadlen;\n    }\n  }\n\n  /* Digits */\n  while (place > 0) \n    dopr_outch (buffer, currlen, maxlen, convert[--place]);\n  \n  /* Left Justified spaces */\n  while (spadlen < 0) {\n    dopr_outch (buffer, currlen, maxlen, ' ');\n    ++spadlen;\n  }\n}\n\nstatic long double abs_val (long double value)\n{\n  long double result = value;\n\n  if (value < 0)\n    result = -value;\n\n  return result;\n}\n\nstatic long double pow10 (int exp)\n{\n  long double result = 1;\n\n  while (exp)\n  {\n    result *= 10;\n    exp--;\n  }\n  \n  return result;\n}\n\nstatic long round (long double value)\n{\n  long intpart;\n\n  intpart = value;\n  value = value - intpart;\n  if (value >= 0.5)\n    intpart++;\n\n  return intpart;\n}\n\nstatic void fmtfp (char *buffer, size_t *currlen, size_t maxlen,\n\t\t   long double fvalue, int min, int max, int flags)\n{\n  int signvalue = 0;\n  long double ufvalue;\n  char iconvert[20];\n  char fconvert[20];\n  int iplace = 0;\n  int fplace = 0;\n  int padlen = 0; /* amount to pad */\n  int zpadlen = 0; \n  int caps = 0;\n  long intpart;\n  long fracpart;\n  \n  /* \n   * AIX manpage says the default is 0, but Solaris says the default\n   * is 6, and sprintf on AIX defaults to 6\n   */\n  if (max < 0)\n    max = 6;\n\n  ufvalue = abs_val (fvalue);\n\n  if (fvalue < 0)\n    signvalue = '-';\n  else\n    if (flags & DP_F_PLUS)  /* Do a sign (+/i) */\n      signvalue = '+';\n    else\n      if (flags & DP_F_SPACE)\n\tsignvalue = ' ';\n\n#if 0\n  if (flags & DP_F_UP) caps = 1; /* Should characters be upper case? */\n#endif\n\n  intpart = ufvalue;\n\n  /* \n   * Sorry, we only support 9 digits past the decimal because of our \n   * conversion method\n   */\n  if (max > 9)\n    max = 9;\n\n  /* We \"cheat\" by converting the fractional part to integer by\n   * multiplying by a factor of 10\n   */\n  fracpart = round ((pow10 (max)) * (ufvalue - intpart));\n\n  if (fracpart >= pow10 (max))\n  {\n    intpart++;\n    fracpart -= pow10 (max);\n  }\n\n#ifdef DEBUG_SNPRINTF\n  dprint (1, (debugfile, \"fmtfp: %f =? %d.%d\\n\", fvalue, intpart, fracpart));\n#endif\n\n  /* Convert integer part */\n  do {\n    iconvert[iplace++] =\n      (caps? \"0123456789ABCDEF\":\"0123456789abcdef\")[intpart % 10];\n    intpart = (intpart / 10);\n  } while(intpart && (iplace < 20));\n  if (iplace == 20) iplace--;\n  iconvert[iplace] = 0;\n\n  /* Convert fractional part */\n  do {\n    fconvert[fplace++] =\n      (caps? \"0123456789ABCDEF\":\"0123456789abcdef\")[fracpart % 10];\n    fracpart = (fracpart / 10);\n  } while(fracpart && (fplace < 20));\n  if (fplace == 20) fplace--;\n  fconvert[fplace] = 0;\n\n  /* -1 for decimal point, another -1 if we are printing a sign */\n  padlen = min - iplace - max - 1 - ((signvalue) ? 1 : 0); \n  zpadlen = max - fplace;\n  if (zpadlen < 0)\n    zpadlen = 0;\n  if (padlen < 0) \n    padlen = 0;\n  if (flags & DP_F_MINUS) \n    padlen = -padlen; /* Left Justifty */\n\n  if ((flags & DP_F_ZERO) && (padlen > 0)) \n  {\n    if (signvalue) \n    {\n      dopr_outch (buffer, currlen, maxlen, signvalue);\n      --padlen;\n      signvalue = 0;\n    }\n    while (padlen > 0)\n    {\n      dopr_outch (buffer, currlen, maxlen, '0');\n      --padlen;\n    }\n  }\n  while (padlen > 0)\n  {\n    dopr_outch (buffer, currlen, maxlen, ' ');\n    --padlen;\n  }\n  if (signvalue) \n    dopr_outch (buffer, currlen, maxlen, signvalue);\n\n  while (iplace > 0) \n    dopr_outch (buffer, currlen, maxlen, iconvert[--iplace]);\n\n  /*\n   * Decimal point.  This should probably use locale to find the correct\n   * char to print out.\n   */\n  dopr_outch (buffer, currlen, maxlen, '.');\n\n  while (fplace > 0) \n    dopr_outch (buffer, currlen, maxlen, fconvert[--fplace]);\n\n  while (zpadlen > 0)\n  {\n    dopr_outch (buffer, currlen, maxlen, '0');\n    --zpadlen;\n  }\n\n  while (padlen < 0) \n  {\n    dopr_outch (buffer, currlen, maxlen, ' ');\n    ++padlen;\n  }\n}\n\nstatic void dopr_outch (char *buffer, size_t *currlen, size_t maxlen, char c)\n{\n  if (*currlen < maxlen)\n    buffer[*currlen] = c;\n  (*currlen)++;\n}\n#endif /* !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF) */\n\n#ifndef HAVE_VSNPRINTF\nint vsnprintf (char *str, size_t count, const char *fmt, va_list args)\n{\n  str[0] = 0;\n  return(dopr(str, count, fmt, args));\n}\n#endif /* !HAVE_VSNPRINTF */\n\n#ifndef HAVE_SNPRINTF\n/* VARARGS3 */\n#ifdef HAVE_STDARGS\nint snprintf (char *str,size_t count,const char *fmt,...)\n#else\nint snprintf (va_alist) va_dcl\n#endif\n{\n#ifndef HAVE_STDARGS\n  char *str;\n  size_t count;\n  char *fmt;\n#endif\n  int len;\n  VA_LOCAL_DECL;\n    \n  VA_START (fmt);\n  VA_SHIFT (str, char *);\n  VA_SHIFT (count, size_t );\n  VA_SHIFT (fmt, char *);\n  len = vsnprintf(str, count, fmt, ap);\n  VA_END;\n  return(len);\n}\n\n#ifdef TEST_SNPRINTF\n#ifndef LONG_STRING\n#define LONG_STRING 1024\n#endif\nint main (void)\n{\n  char buf1[LONG_STRING];\n  char buf2[LONG_STRING];\n  char *fp_fmt[] = {\n    \"%-1.5f\",\n    \"%1.5f\",\n    \"%123.9f\",\n    \"%10.5f\",\n    \"% 10.5f\",\n    \"%+22.9f\",\n    \"%+4.9f\",\n    \"%01.3f\",\n    \"%4f\",\n    \"%3.1f\",\n    \"%3.2f\",\n    NULL\n  };\n  double fp_nums[] = { -1.5, 134.21, 91340.2, 341.1234, 0203.9, 0.96, 0.996, \n    0.9996, 1.996, 4.136, 0};\n  char *int_fmt[] = {\n    \"%-1.5d\",\n    \"%1.5d\",\n    \"%123.9d\",\n    \"%5.5d\",\n    \"%10.5d\",\n    \"% 10.5d\",\n    \"%+22.33d\",\n    \"%01.3d\",\n    \"%4d\",\n    NULL\n  };\n  long int_nums[] = { -1, 134, 91340, 341, 0203, 0};\n  int x, y;\n  int fail = 0;\n  int num = 0;\n\n  printf (\"Testing snprintf format codes against system sprintf...\\n\");\n\n  for (x = 0; fp_fmt[x] != NULL ; x++)\n    for (y = 0; fp_nums[y] != 0 ; y++)\n    {\n      snprintf (buf1, sizeof (buf1), fp_fmt[x], fp_nums[y]);\n      sprintf (buf2, fp_fmt[x], fp_nums[y]);\n      if (strcmp (buf1, buf2))\n      {\n\tprintf(\"snprintf doesn't match Format: %s\\n\\tsnprintf = %s\\n\\tsprintf  = %s\\n\",\t/* __SPRINTF_CHECKED__ */\n\t    fp_fmt[x], buf1, buf2);\n\tfail++;\n      }\n      num++;\n    }\n\n  for (x = 0; int_fmt[x] != NULL ; x++)\n    for (y = 0; int_nums[y] != 0 ; y++)\n    {\n      snprintf (buf1, sizeof (buf1), int_fmt[x], int_nums[y]);\n      sprintf (buf2, int_fmt[x], int_nums[y]);\n      if (strcmp (buf1, buf2))\n      {\n\tprintf(\"snprintf doesn't match Format: %s\\n\\tsnprintf = %s\\n\\tsprintf  = %s\\n\",\t/* __SPRINTF_CHECKED__ */\n\t    int_fmt[x], buf1, buf2);\n\tfail++;\n      }\n      num++;\n    }\n  printf (\"%d tests failed out of %d.\\n\", fail, num);\n}\n#endif /* SNPRINTF_TEST */\n\n#endif /* !HAVE_SNPRINTF */\n"
  },
  {
    "path": "sort.c",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"sort.h\"\n#include \"mutt_idna.h\"\n\n#include <stdlib.h>\n#include <string.h>\n#include <ctype.h>\n#include <unistd.h>\n\n#define SORTCODE(x) (Sort & SORT_REVERSE) ? -(x) : x\n\n/* function to use as discriminator when normal sort method is equal */\nstatic sort_t *AuxSort = NULL;\n\n#define AUXSORT(code,a,b) if (!code && AuxSort && !option(OPTAUXSORT)) { \\\n  set_option(OPTAUXSORT); \\\n  code = AuxSort(a,b); \\\n  unset_option(OPTAUXSORT); \\\n} \\\nif (!code) \\\n  code = (*((HEADER **)a))->index - (*((HEADER **)b))->index;\n\nstatic int compare_score (const void *a, const void *b)\n{\n  HEADER **pa = (HEADER **) a;\n  HEADER **pb = (HEADER **) b;\n  int result = (*pb)->score - (*pa)->score; /* note that this is reverse */\n  AUXSORT(result,a,b);\n  return (SORTCODE (result));\n}\n\nstatic int compare_size (const void *a, const void *b)\n{\n  HEADER **pa = (HEADER **) a;\n  HEADER **pb = (HEADER **) b;\n  int result = (*pa)->content->length - (*pb)->content->length;\n  AUXSORT(result,a,b);\n  return (SORTCODE (result));\n}\n\nstatic int compare_date_sent (const void *a, const void *b)\n{\n  HEADER **pa = (HEADER **) a;\n  HEADER **pb = (HEADER **) b;\n  int result = (*pa)->date_sent - (*pb)->date_sent;\n  AUXSORT(result,a,b);\n  return (SORTCODE (result));\n}\n\nstatic int compare_subject (const void *a, const void *b)\n{\n  HEADER **pa = (HEADER **) a;\n  HEADER **pb = (HEADER **) b;\n  int rc;\n\n  if (!(*pa)->env->real_subj)\n  {\n    if (!(*pb)->env->real_subj)\n      rc = compare_date_sent (pa, pb);\n    else\n      rc = -1;\n  }\n  else if (!(*pb)->env->real_subj)\n    rc = 1;\n  else\n    rc = mutt_strcasecmp ((*pa)->env->real_subj, (*pb)->env->real_subj);\n  AUXSORT(rc,a,b);\n  return (SORTCODE (rc));\n}\n\nconst char *mutt_get_name (ADDRESS *a)\n{\n  ADDRESS *ali;\n\n  if (a)\n  {\n    if (option (OPTREVALIAS) && (ali = alias_reverse_lookup (a)) && ali->personal)\n      return ali->personal;\n    else if (a->personal)\n      return a->personal;\n    else if (a->mailbox)\n      return (mutt_addr_for_display (a));\n  }\n  /* don't return NULL to avoid segfault when printing/comparing */\n  return (\"\");\n}\n\nstatic int compare_to (const void *a, const void *b)\n{\n  HEADER **ppa = (HEADER **) a;\n  HEADER **ppb = (HEADER **) b;\n  char fa[SHORT_STRING];\n  const char *fb;\n  int result;\n\n  strfcpy (fa, mutt_get_name ((*ppa)->env->to), SHORT_STRING);\n  fb = mutt_get_name ((*ppb)->env->to);\n  result = mutt_strncasecmp (fa, fb, SHORT_STRING);\n  AUXSORT(result,a,b);\n  return (SORTCODE (result));\n}\n\nstatic int compare_from (const void *a, const void *b)\n{\n  HEADER **ppa = (HEADER **) a;\n  HEADER **ppb = (HEADER **) b;\n  char fa[SHORT_STRING];\n  const char *fb;\n  int result;\n\n  strfcpy (fa, mutt_get_name ((*ppa)->env->from), SHORT_STRING);\n  fb = mutt_get_name ((*ppb)->env->from);\n  result = mutt_strncasecmp (fa, fb, SHORT_STRING);\n  AUXSORT(result,a,b);\n  return (SORTCODE (result));\n}\n\nstatic int compare_date_received (const void *a, const void *b)\n{\n  HEADER **pa = (HEADER **) a;\n  HEADER **pb = (HEADER **) b;\n  int result = (*pa)->received - (*pb)->received;\n  AUXSORT(result,a,b);\n  return (SORTCODE (result));\n}\n\nstatic int compare_order (const void *a, const void *b)\n{\n  HEADER **ha = (HEADER **) a;\n  HEADER **hb = (HEADER **) b;\n\n  /* no need to auxsort because you will never have equality here */\n  return (SORTCODE ((*ha)->index - (*hb)->index));\n}\n\nstatic int compare_spam (const void *a, const void *b)\n{\n  HEADER **ppa = (HEADER **) a;\n  HEADER **ppb = (HEADER **) b;\n  char   *aptr, *bptr;\n  int     ahas, bhas;\n  int     result = 0;\n  double  difference;\n\n  /* Firstly, require spam attributes for both msgs */\n  /* to compare. Determine which msgs have one.     */\n  ahas = (*ppa)->env && (*ppa)->env->spam;\n  bhas = (*ppb)->env && (*ppb)->env->spam;\n\n  /* If one msg has spam attr but other does not, sort the one with first. */\n  if (ahas && !bhas)\n    return (SORTCODE(1));\n  if (!ahas && bhas)\n    return (SORTCODE(-1));\n\n  /* Else, if neither has a spam attr, presume equality. Fall back on aux. */\n  if (!ahas && !bhas)\n  {\n    AUXSORT(result, a, b);\n    return (SORTCODE(result));\n  }\n\n\n  /* Both have spam attrs. */\n\n  /* preliminary numeric examination */\n  difference = (strtod((*ppa)->env->spam->data, &aptr) -\n                strtod((*ppb)->env->spam->data, &bptr));\n\n  /* map double into comparison (-1, 0, or 1) */\n  result = (difference < 0.0 ? -1 : difference > 0.0 ? 1 : 0);\n\n  /* If either aptr or bptr is equal to data, there is no numeric    */\n  /* value for that spam attribute. In this case, compare lexically. */\n  if ((aptr == (*ppa)->env->spam->data) || (bptr == (*ppb)->env->spam->data))\n    return (SORTCODE(strcmp(aptr, bptr)));\n\n  /* Otherwise, we have numeric value for both attrs. If these values */\n  /* are equal, then we first fall back upon string comparison, then  */\n  /* upon auxiliary sort.                                             */\n  if (result == 0)\n  {\n    result = strcmp(aptr, bptr);\n    if (result == 0)\n      AUXSORT(result, a, b);\n  }\n\n  return (SORTCODE(result));\n}\n\nsort_t *mutt_get_sort_func (int method)\n{\n  switch (method & SORT_MASK)\n  {\n    case SORT_RECEIVED:\n      return (compare_date_received);\n    case SORT_ORDER:\n      return (compare_order);\n    case SORT_DATE:\n      return (compare_date_sent);\n    case SORT_SUBJECT:\n      return (compare_subject);\n    case SORT_FROM:\n      return (compare_from);\n    case SORT_SIZE:\n      return (compare_size);\n    case SORT_TO:\n      return (compare_to);\n    case SORT_SCORE:\n      return (compare_score);\n    case SORT_SPAM:\n      return (compare_spam);\n    default:\n      return (NULL);\n  }\n  /* not reached */\n}\n\nvoid mutt_sort_headers (CONTEXT *ctx, int init)\n{\n  int i;\n  HEADER *h;\n  THREAD *thread, *top;\n  sort_t *sortfunc;\n  \n  unset_option (OPTNEEDRESORT);\n\n  if (!ctx)\n    return;\n\n  if (!ctx->msgcount)\n  {\n    /* this function gets called by mutt_sync_mailbox(), which may have just\n     * deleted all the messages.  the virtual message numbers are not updated\n     * in that routine, so we must make sure to zero the vcount member.\n     */\n    ctx->vcount = 0;\n    mutt_clear_threads (ctx);\n    return; /* nothing to do! */\n  }\n\n  if (!ctx->quiet)\n    mutt_message _(\"Sorting mailbox...\");\n\n  if (option (OPTNEEDRESCORE) && option (OPTSCORE))\n  {\n    for (i = 0; i < ctx->msgcount; i++)\n      mutt_score_message (ctx, ctx->hdrs[i], 1);\n  }\n  unset_option (OPTNEEDRESCORE);\n\n  if (option (OPTRESORTINIT))\n  {\n    unset_option (OPTRESORTINIT);\n    init = 1;\n  }\n\n  if (init && ctx->tree)\n    mutt_clear_threads (ctx);\n\n  if ((Sort & SORT_MASK) == SORT_THREADS)\n  {\n    AuxSort = NULL;\n    /* if $sort_aux changed after the mailbox is sorted, then all the\n       subthreads need to be resorted */\n    if (option (OPTSORTSUBTHREADS))\n    {\n      i = Sort;\n      Sort = SortAux;\n      if (ctx->tree)\n\tctx->tree = mutt_sort_subthreads (ctx->tree, 1);\n      Sort = i;\n      unset_option (OPTSORTSUBTHREADS);\n    }\n    mutt_sort_threads (ctx, init);\n  }\n  else if ((sortfunc = mutt_get_sort_func (Sort)) == NULL ||\n\t   (AuxSort = mutt_get_sort_func (SortAux)) == NULL)\n  {\n    mutt_error _(\"Could not find sorting function! [report this bug]\");\n    mutt_sleep (1);\n    return;\n  }\n  else \n    qsort ((void *) ctx->hdrs, ctx->msgcount, sizeof (HEADER *), sortfunc);\n\n  /* adjust the virtual message numbers */\n  ctx->vcount = 0;\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    HEADER *cur = ctx->hdrs[i];\n    if (cur->virtual != -1 || (cur->collapsed && (!ctx->pattern || cur->limited)))\n    {\n      cur->virtual = ctx->vcount;\n      ctx->v2r[ctx->vcount] = i;\n      ctx->vcount++;\n    }\n    cur->msgno = i;\n  }\n\n  /* re-collapse threads marked as collapsed */\n  if ((Sort & SORT_MASK) == SORT_THREADS)\n  {\n    top = ctx->tree;\n    while ((thread = top) != NULL)\n    {\n      while (!thread->message)\n\tthread = thread->child;\n      h = thread->message;\n\n      if (h->collapsed)\n\tmutt_collapse_thread (ctx, h);\n      top = top->next;\n    }\n    mutt_set_virtual (ctx);\n  }\n\n  if (!ctx->quiet)\n    mutt_clear_error ();\n}\n"
  },
  {
    "path": "sort.h",
    "content": "/*\n * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#define SORT_DATE\t1   /* the date the mail was sent. */\n#define SORT_SIZE\t2\n#define SORT_SUBJECT\t3\n#define SORT_ALPHA\t3   /* makedoc.c requires this */\n#define SORT_FROM\t4\n#define SORT_ORDER\t5   /* the order the messages appear in the mailbox. */\n#define SORT_THREADS\t6\n#define SORT_RECEIVED\t7   /* when the message were delivered locally */\n#define SORT_TO\t\t8\n#define SORT_SCORE\t9\n#define SORT_ALIAS\t10\n#define SORT_ADDRESS\t11\n#define SORT_KEYID\t12\n#define SORT_TRUST\t13\n#define SORT_SPAM\t14\n#define SORT_DESC\t15\n#define SORT_COUNT\t16\n#define SORT_COUNT_NEW\t17\n#define SORT_FLAGGED\t18\n#define SORT_PATH\t19\n\n/* dgc: Sort & SortAux are shorts, so I'm bumping these bitflags up from\n * bits 4 & 5 to bits 8 & 9 to make room for more sort keys in the future. */\n#define SORT_MASK\t0xff\n#define SORT_REVERSE\t(1<<8)\n#define SORT_LAST\t(1<<9)\n\ntypedef int sort_t (const void *, const void *);\nsort_t *mutt_get_sort_func (int);\n\nvoid mutt_clear_threads (CONTEXT *);\nvoid mutt_sort_headers (CONTEXT *, int);\nvoid mutt_sort_threads (CONTEXT *, int);\nint mutt_select_sort (int);\nTHREAD *mutt_sort_subthreads (THREAD *, int);\n\nWHERE short BrowserSort INITVAL (SORT_SUBJECT);\nWHERE short Sort INITVAL (SORT_DATE);\nWHERE short SortAux INITVAL (SORT_DATE); /* auxiliary sorting method */\nWHERE short SortAlias INITVAL (SORT_ALIAS);\nWHERE short SidebarSortMethod INITVAL (SORT_ORDER);\n\n/* FIXME: This one does not belong to here */\nWHERE short PgpSortKeys INITVAL (SORT_ADDRESS);\n\n#include \"mapping.h\"\nextern const struct mapping_t SortMethods[];\n"
  },
  {
    "path": "stamp-h.in",
    "content": "timestamp\n"
  },
  {
    "path": "status.c",
    "content": "/*\n * Copyright (C) 1996-2000,2007 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mutt_menu.h\"\n#include \"mutt_curses.h\"\n#include \"sort.h\"\n#include \"mapping.h\"\n#include \"mx.h\"\n\n#ifdef USE_NOTMUCH\n#include \"mutt_notmuch.h\"\n#endif\n\n#include <string.h>\n#include <ctype.h>\n#include <unistd.h>\n\nstatic char *get_sort_str (char *buf, size_t buflen, int method)\n{\n  snprintf (buf, buflen, \"%s%s%s\",\n\t    (method & SORT_REVERSE) ? \"reverse-\" : \"\",\n\t    (method & SORT_LAST) ? \"last-\" : \"\",\n\t    mutt_getnamebyvalue (method & SORT_MASK, SortMethods));\n  return buf;\n}\n\nstatic void _menu_status_line (char *buf, size_t buflen, size_t col, MUTTMENU *menu, const char *p);\n\n/* %b = number of incoming folders with unread messages [option]\n * %d = number of deleted messages [option]\n * %f = full mailbox path\n * %F = number of flagged messages [option]\n * %h = hostname\n * %l = length of mailbox (in bytes) [option]\n * %m = total number of messages [option]\n * %M = number of messages shown (virtual message count when limiting) [option]\n * %n = number of new messages [option]\n * %o = number of old unread messages [option]\n * %p = number of postponed messages [option]\n * %P = percent of way through index\n * %r = readonly/wontwrite/changed flag\n * %s = current sorting method ($sort)\n * %S = current aux sorting method ($sort_aux)\n * %t = # of tagged messages [option]\n * %u = number of unread messages [option]\n * %v = Mutt version \n * %V = currently active limit pattern [option] */\nstatic const char *\nstatus_format_str (char *buf, size_t buflen, size_t col, char op, const char *src,\n\t\t   const char *prefix, const char *ifstring,\n\t\t   const char *elsestring,\n\t\t   unsigned long data, format_flag flags)\n{\n  char fmt[SHORT_STRING], tmp[SHORT_STRING], *cp;\n  int count, optional = (flags & M_FORMAT_OPTIONAL);\n  MUTTMENU *menu = (MUTTMENU *) data;\n\n  *buf = 0;\n  switch (op)\n  {\n    case 'b':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, mutt_buffy_check (0));\n      }\n      else if (!mutt_buffy_check (0))\n\toptional = 0;\n      break;\n\n    case 'd':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, Context ? Context->deleted : 0);\n      }\n      else if (!Context || !Context->deleted)\n\toptional = 0;\n      break;\n\n    case 'f':\n    {\n#ifdef USE_NOTMUCH\n      char *p;\n      if (Context && Context->magic == M_NOTMUCH &&\n                   (p = nm_get_description(Context)))\n\t  strfcpy(tmp, p, sizeof (tmp));\n      else\n#endif\n      if (Context && Context->path)\n      {\n\tstrfcpy (tmp, Context->path, sizeof (tmp));\n\tmutt_pretty_mailbox (tmp, sizeof (tmp));\n      }\n      else\n\tstrfcpy (tmp, _(\"(no mailbox)\"), sizeof (tmp));\n\n      snprintf (fmt, sizeof(fmt), \"%%%ss\", prefix);\n      snprintf (buf, buflen, fmt, tmp);\n      break;\n    }\n    case 'F':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, Context ? Context->flagged : 0);\n      }\n      else if (!Context || !Context->flagged)\n\toptional = 0;\n      break;\n\n    case 'h':\n      snprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n      snprintf (buf, buflen, fmt, NONULL(Hostname));\n      break;\n\n    case 'l':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tmutt_pretty_size (tmp, sizeof (tmp), Context ? Context->size : 0);\n\tsnprintf (buf, buflen, fmt, tmp);\n      }\n      else if (!Context || !Context->size)\n\toptional = 0;\n      break;\n\n    case 'L':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n\tmutt_pretty_size (tmp, sizeof (tmp), Context ? Context->vsize: 0);\n\tsnprintf (buf, buflen, fmt, tmp);\n      }\n      else if (!Context || !Context->pattern)\n\toptional = 0;\n      break;\n\n    case 'm':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, Context ? Context->msgcount : 0);\n      }\n      else if (!Context || !Context->msgcount)\n\toptional = 0;\n      break;\n\n    case 'M':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof(fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, Context ? Context->vcount : 0);\n      }\n      else if (!Context || !Context->pattern)\n\toptional = 0;\n      break;\n\n    case 'n':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, Context ? Context->new : 0);\n      }\n      else if (!Context || !Context->new)\n\toptional = 0;\n      break;\n\n    case 'o':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, Context ? Context->unread - Context->new : 0);\n      }\n      else if (!Context || !(Context->unread - Context->new))\n\toptional = 0;\n      break;\n\n    case 'p':\n      count = mutt_num_postponed (0);\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, count);\n      }\n      else if (!count)\n\toptional = 0;\n      break;\n\n    case 'P':\n      if (!menu)\n\tbreak;\n      if (menu->top + menu->pagelen >= menu->max)\n\tcp = menu->top ? \"end\" : \"all\";\n      else\n      {\n\tcount = (100 * (menu->top + menu->pagelen)) / menu->max;\n\tsnprintf (tmp, sizeof (tmp), \"%d%%\", count);\n\tcp = tmp;\n      }\n      snprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n      snprintf (buf, buflen, fmt, cp);\n      break;\n\n    case 'r':\n    {\n      size_t i = 0;\n\n      if (Context)\n      {\n\ti = option(OPTATTACHMSG) ? 3 : ((Context->readonly ||\n          Context->dontwrite) ? 2 : (Context->changed ||\n          /* deleted doesn't necessarily mean changed in IMAP */\n          (Context->magic != M_IMAP &&\n           Context->deleted)) ? 1 : 0);\n      }\n      \n      if (!StChars)\n\tbuf[0] = 0;\n      else if (i >= mutt_strlen(StChars))\n\tbuf[0] = StChars[0];\n      else\n\tbuf[0] = StChars[i];\n\n      buf[1] = 0;\n      break;\n    }\n      \n    case 's':\n      snprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n      snprintf (buf, buflen, fmt,\n\t\tget_sort_str (tmp, sizeof (tmp), Sort));\n      break;\n\n    case 'S':\n      snprintf (fmt, sizeof (fmt), \"%%%ss\", prefix);\n      snprintf (buf, buflen, fmt,\n\t\tget_sort_str (tmp, sizeof (tmp), SortAux));\n      break;\n\n    case 't':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, Context ? Context->tagged : 0);\n      }\n      else if (!Context || !Context->tagged)\n\toptional = 0;\n      break;\n\n    case 'u':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof (fmt), \"%%%sd\", prefix);\n\tsnprintf (buf, buflen, fmt, Context ? Context->unread : 0);\n      }\n      else if (!Context || !Context->unread)\n\toptional = 0;\n      break;\n\n    case 'v':\n      snprintf (fmt, sizeof (fmt), \"Mutt %%s\");\n      snprintf (buf, buflen, fmt, MUTT_VERSION);\n      break;\n\n    case 'V':\n      if (!optional)\n      {\n\tsnprintf (fmt, sizeof(fmt), \"%%%ss\", prefix);\n\tsnprintf (buf, buflen, fmt, (Context && Context->pattern) ? Context->pattern : \"\");\n      }\n      else if (!Context || !Context->pattern)\n\toptional = 0;\n      break;\n\n    case 0:\n      *buf = 0;\n      return (src);\n\n    default:\n      snprintf (buf, buflen, \"%%%s%c\", prefix, op);\n      break;\n  }\n\n  if (optional)\n    _menu_status_line (buf, buflen, col, menu, ifstring);\n  else if (flags & M_FORMAT_OPTIONAL)\n    _menu_status_line (buf, buflen, col, menu, elsestring);\n\n  return (src);\n}\n\nstatic void _menu_status_line (char *buf, size_t buflen, size_t col, MUTTMENU *menu, const char *p)\n{\n  mutt_FormatString (buf, buflen, col, p, status_format_str, (unsigned long) menu, 0);\n}\n\nvoid menu_status_line (char *buf, size_t buflen, MUTTMENU *menu, const char *p)\n{\n  mutt_FormatString (buf, buflen, 0, p, status_format_str, (unsigned long) menu, 0);\n}\n"
  },
  {
    "path": "strcasecmp.c",
    "content": "#include <ctype.h>\n#include <sys/types.h>\n\n/* UnixWare doesn't have these functions in its standard C library */\n\nint strncasecmp (char *s1, char *s2, size_t n)\n{\n  register int c1, c2, l = 0;\n  \n  while (*s1 && *s2 && l < n)\n  {\n    c1 = tolower ((unsigned char) *s1);\n    c2 = tolower ((unsigned char) *s2);\n    if (c1 != c2)\n      return (c1 - c2);\n    s1++;\n    s2++;\n    l++;\n  }\n  if (l == n)\n    return (int) (0);\n  else\n    return (int) (*s1 - *s2);\n}\n\nint strcasecmp (char *s1, char *s2)\n{\n  register int c1, c2;\n  \n  while (*s1 && *s2)\n  {\n    c1 = tolower ((unsigned char) *s1);\n    c2 = tolower ((unsigned char) *s2);\n    if (c1 != c2)\n      return (c1 - c2);\n    s1++;\n    s2++;\n  }                                                                           \n  return (int) (*s1 - *s2);\n}\n"
  },
  {
    "path": "strcasestr.c",
    "content": "/*\n * Copyright (C) 2002     Manuel Novoa III\n * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>\n *\n * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.\n */\n#include <stdlib.h>\n#include <ctype.h>\n\nchar *strcasestr(const char *s1, const char *s2)\n{\n        register const char *s = s1;\n        register const char *p = s2;\n\n#if 1\n        do {\n                if (!*p) {\n                        return (char *) s1;;\n                }\n                if ((*p == *s)\n                        || (tolower(*((unsigned char *)p)) == tolower(*((unsigned char *)s)))\n                        ) {\n                        ++p;\n                        ++s;\n                } else {\n                        p = s2;\n                        if (!*s) {\n                                return NULL;\n                        }\n                        s = ++s1;\n                }\n        } while (1);\n#else\n        while (*p && *s) {\n                if ((*p == *s)\n                        || (tolower(*((unsigned char *)p)) == tolower(*((unsigned char *)s)))\n                        ) {\n                        ++p;\n                        ++s;\n                } else {\n                        p = s2;\n                        s = ++s1;\n                }\n        }\n\n        return (*p) ? NULL : (char *) s1;\n#endif\n}\n"
  },
  {
    "path": "strdup.c",
    "content": "/* ultrix doesn't have strdup */\n\n#include <string.h>\n#include <stdlib.h>\n\nchar *strdup (const char *s)\t/* __MEM_CHECKED__ */\n{\n  char *d;\n  \n  if (s == NULL)\n    return NULL;\n  \n  if ((d = malloc (strlen (s) + 1)) == NULL)\t/* __MEM_CHECKED__ */\n    return NULL;\n\n  memcpy (d, s, strlen (s) + 1);\n  return d;\n}\n\n"
  },
  {
    "path": "strndup.c",
    "content": "/*\n * Copyright (C) 2013 Karel Zak <kzak@redhat.com>\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n\nchar *strndup(const char *s, size_t n)\n{\n\tsize_t len = strnlen(s, n);\n\tchar *new = (char *) malloc((len + 1) * sizeof(char));\n\tif (!new)\n\t\treturn NULL;\n\tnew[len] = '\\0';\n\treturn (char *) memcpy(new, s, len);\n}\n"
  },
  {
    "path": "strnlen.c",
    "content": "/*\n * Copyright (C) 2013 Karel Zak <kzak@redhat.com>\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n\nsize_t strnlen(const char *s, size_t maxlen)\n{\n        int i;\n\n        for (i = 0; i < maxlen; i++) {\n                if (s[i] == '\\0')\n                        return i + 1;\n        }\n        return maxlen;\n}\n"
  },
  {
    "path": "strsep.c",
    "content": "/* Copyright (C) 1992, 93, 96, 97, 98, 99, 2004 Free Software Foundation, Inc.\n   This file is part of the GNU C Library.\n\n   The GNU C Library is free software; you can redistribute it and/or\n   modify it under the terms of the GNU Lesser General Public\n   License as published by the Free Software Foundation; either\n   version 2.1 of the License, or (at your option) any later version.\n\n   The GNU C Library is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public\n   License along with the GNU C Library; if not, write to the Free\n   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA\n   02111-1307 USA.  */\n\n#include <string.h>\n\n/* Taken from glibc 2.6.1 */\n\nchar *strsep (char **stringp, const char *delim)\n{\n  char *begin, *end;\n\n  begin = *stringp;\n  if (begin == NULL)\n    return NULL;\n\n  /* A frequent case is when the delimiter string contains only one\n     character.  Here we don't need to call the expensive `strpbrk'\n     function and instead work using `strchr'.  */\n  if (delim[0] == '\\0' || delim[1] == '\\0')\n    {\n      char ch = delim[0];\n\n      if (ch == '\\0')\n\tend = NULL;\n      else\n\t{\n\t  if (*begin == ch)\n\t    end = begin;\n\t  else if (*begin == '\\0')\n\t    end = NULL;\n\t  else\n\t    end = strchr (begin + 1, ch);\n\t}\n    }\n  else\n    /* Find the end of the token.  */\n    end = strpbrk (begin, delim);\n\n  if (end)\n    {\n      /* Terminate the token and set *STRINGP past NUL character.  */\n      *end++ = '\\0';\n      *stringp = end;\n    }\n  else\n    /* No more delimiters; this is the last token.  */\n    *stringp = NULL;\n\n  return begin;\n}\n"
  },
  {
    "path": "strtok_r.c",
    "content": "/* Reentrant string tokenizer.  Generic version.\n   Copyright (C) 1991,1996-1999,2001,2004 Free Software Foundation, Inc.\n   This file is part of the GNU C Library.\n\n   The GNU C Library is free software; you can redistribute it and/or\n   modify it under the terms of the GNU Lesser General Public\n   License as published by the Free Software Foundation; either\n   version 2.1 of the License, or (at your option) any later version.\n\n   The GNU C Library is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n   Lesser General Public License for more details.\n\n   You should have received a copy of the GNU Lesser General Public\n   License along with the GNU C Library; if not, write to the Free\n   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA\n   02111-1307 USA.  */\n\n#include <string.h>\n\n/* Taken from glibc 2.6.1 */\n\n/* Parse S into tokens separated by characters in DELIM.\n   If S is NULL, the saved pointer in SAVE_PTR is used as\n   the next starting point.  For example:\n\tchar s[] = \"-abc-=-def\";\n\tchar *sp;\n\tx = strtok_r(s, \"-\", &sp);\t// x = \"abc\", sp = \"=-def\"\n\tx = strtok_r(NULL, \"-=\", &sp);\t// x = \"def\", sp = NULL\n\tx = strtok_r(NULL, \"=\", &sp);\t// x = NULL\n\t\t// s = \"abc\\0-def\\0\"\n*/\nchar *\nstrtok_r (char *s, const char *delim, char **save_ptr)\n{\n  char *token;\n\n  if (s == NULL)\n    s = *save_ptr;\n\n  /* Scan leading delimiters.  */\n  s += strspn (s, delim);\n  if (*s == '\\0')\n    {\n      *save_ptr = s;\n      return NULL;\n    }\n\n  /* Find the end of the token.  */\n  token = s;\n  s = strpbrk (token, delim);\n  if (s == NULL)\n    /* This token finishes the string.  */\n    *save_ptr = strchr (token, '\\0');\n  else\n    {\n      /* Terminate the token and make *SAVE_PTR point past it.  */\n      *s = '\\0';\n      *save_ptr = s + 1;\n    }\n  return token;\n}\n"
  },
  {
    "path": "system.c",
    "content": "/*\n * Copyright (C) 1996-2000,2013 Michael R. Elkins <me@mutt.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#ifdef USE_IMAP\n# include \"imap.h\"\n# include <errno.h>\n#endif\n\n#include <stdlib.h>\n#include <signal.h>\n#include <string.h>\n#include <sys/wait.h>\n#include <unistd.h>\n\nint _mutt_system (const char *cmd, int flags)\n{\n  int rc = -1;\n  struct sigaction act;\n  struct sigaction oldtstp;\n  struct sigaction oldcont;\n  sigset_t set;\n  pid_t thepid;\n\n  if (!cmd || !*cmd)\n    return (0);\n\n  /* must ignore SIGINT and SIGQUIT */\n\n  mutt_block_signals_system ();\n\n  /* also don't want to be stopped right now */\n  if (flags & M_DETACH_PROCESS)\n  {\n    sigemptyset (&set);\n    sigaddset (&set, SIGTSTP);\n    sigprocmask (SIG_BLOCK, &set, NULL);\n  }\n  else\n  {\n    act.sa_handler = SIG_DFL;\n    /* we want to restart the waitpid() below */\n#ifdef SA_RESTART\n    act.sa_flags = SA_RESTART;\n#endif\n    sigemptyset (&act.sa_mask);\n    sigaction (SIGTSTP, &act, &oldtstp);\n    sigaction (SIGCONT, &act, &oldcont);\n  }\n\n  if ((thepid = fork ()) == 0)\n  {\n    act.sa_flags = 0;\n\n    if (flags & M_DETACH_PROCESS)\n    {\n      int fd;\n\n      /* give up controlling terminal */\n      setsid ();\n\n      switch (fork ())\n      {\n\tcase 0:\n#if defined(OPEN_MAX)\n\t  for (fd = 0; fd < OPEN_MAX; fd++)\n\t    close (fd);\n#elif defined(_POSIX_OPEN_MAX)\n\t  for (fd = 0; fd < _POSIX_OPEN_MAX; fd++)\n\t    close (fd);\n#else\n\t  close (0);\n\t  close (1);\n\t  close (2);\n#endif\n\t  chdir (\"/\");\n\t  act.sa_handler = SIG_DFL;\n\t  sigaction (SIGCHLD, &act, NULL);\n\t  break;\n\n\tcase -1:\n\t  _exit (127);\n\n\tdefault:\n\t  _exit (0);\n      }\n    }\n\n    /* reset signals for the child; not really needed, but... */\n    mutt_unblock_signals_system (0);\n    act.sa_handler = SIG_DFL;\n    act.sa_flags = 0;\n    sigemptyset (&act.sa_mask);\n    sigaction (SIGTERM, &act, NULL);\n    sigaction (SIGTSTP, &act, NULL);\n    sigaction (SIGCONT, &act, NULL);\n\n    execl (EXECSHELL, \"sh\", \"-c\", cmd, NULL);\n    _exit (127); /* execl error */\n  }\n  else if (thepid != -1)\n  {\n#ifndef USE_IMAP\n    /* wait for the (first) child process to finish */\n    waitpid (thepid, &rc, 0);\n#else\n    rc = imap_wait_keepalive (thepid);\n#endif\n  }\n\n  sigaction (SIGCONT, &oldcont, NULL);\n  sigaction (SIGTSTP, &oldtstp, NULL);\n\n  /* reset SIGINT, SIGQUIT and SIGCHLD */\n  mutt_unblock_signals_system (1);\n  if (flags & M_DETACH_PROCESS)\n    sigprocmask (SIG_UNBLOCK, &set, NULL);\n\n  rc = (thepid != -1) ? (WIFEXITED (rc) ? WEXITSTATUS (rc) : -1) : -1;\n\n  return (rc);\n}\n"
  },
  {
    "path": "thread.c",
    "content": "/*\n * Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"sort.h\"\n\n#include <string.h>\n#include <ctype.h>\n\n#define VISIBLE(hdr, ctx) (hdr->virtual >= 0 || (hdr->collapsed && (!ctx->pattern || hdr->limited)))\n\n/* determine whether a is a descendant of b */\nstatic int is_descendant (THREAD *a, THREAD *b)\n{\n  while (a)\n  {\n    if (a == b)\n      return (1);\n    a = a->parent;\n  }\n  return (0);\n}\n\n/* Determines whether to display a message's subject. */\nstatic int need_display_subject (CONTEXT *ctx, HEADER *hdr)\n{\n  THREAD *tmp, *tree = hdr->thread;\n\n  /* if the user disabled subject hiding, display it */\n  if (!option (OPTHIDETHREADSUBJECT))\n    return (1);\n\n  /* if our subject is different from our parent's, display it */\n  if (hdr->subject_changed)\n    return (1);\n\n  /* if our subject is different from that of our closest previously displayed\n   * sibling, display the subject */\n  for (tmp = tree->prev; tmp; tmp = tmp->prev)\n  {\n    hdr = tmp->message;\n    if (hdr && VISIBLE (hdr, ctx))\n    {\n      if (hdr->subject_changed)\n\treturn (1);\n      else\n\tbreak;\n    }\n  }\n  \n  /* if there is a parent-to-child subject change anywhere between us and our\n   * closest displayed ancestor, display the subject */\n  for (tmp = tree->parent; tmp; tmp = tmp->parent)\n  {\n    hdr = tmp->message;\n    if (hdr)\n    {\n      if (VISIBLE (hdr, ctx))\n\treturn (0);\n      else if (hdr->subject_changed)\n\treturn (1);\n    }\n  }\n\n  /* if we have no visible parent or previous sibling, display the subject */\n  return (1);\n}\n\nstatic void linearize_tree (CONTEXT *ctx)\n{\n  THREAD *tree = ctx->tree;\n  HEADER **array = ctx->hdrs + (Sort & SORT_REVERSE ? ctx->msgcount - 1 : 0);\n\n  while (tree)\n  {\n    while (!tree->message)\n      tree = tree->child;\n\n    *array = tree->message;\n    array += Sort & SORT_REVERSE ? -1 : 1;\n\n    if (tree->child)\n      tree = tree->child;\n    else\n    {\n      while (tree)\n      {\n\tif (tree->next)\n\t{\n\t  tree = tree->next;\n\t  break;\n\t}\n\telse\n\t  tree = tree->parent;\n      }\n    }\n  }\n}\n\n/* this calculates whether a node is the root of a subtree that has visible\n * nodes, whether a node itself is visible, whether, if invisible, it has\n * depth anyway, and whether any of its later siblings are roots of visible\n * subtrees.  while it's at it, it frees the old thread display, so we can\n * skip parts of the tree in mutt_draw_tree() if we've decided here that we\n * don't care about them any more.\n */\nstatic void calculate_visibility (CONTEXT *ctx, int *max_depth)\n{\n  THREAD *tmp, *tree = ctx->tree;\n  int hide_top_missing = option (OPTHIDETOPMISSING) && !option (OPTHIDEMISSING);\n  int hide_top_limited = option (OPTHIDETOPLIMITED) && !option (OPTHIDELIMITED);\n  int depth = 0;\n\n  /* we walk each level backwards to make it easier to compute next_subtree_visible */\n  while (tree->next)\n    tree = tree->next;\n  *max_depth = 0;\n\n  FOREVER\n  {\n    if (depth > *max_depth)\n      *max_depth = depth;\n\n    tree->subtree_visible = 0;\n    if (tree->message)\n    {\n      FREE (&tree->message->tree);\n      if (VISIBLE (tree->message, ctx))\n      {\n\ttree->deep = 1;\n\ttree->visible = 1;\n\ttree->message->display_subject = need_display_subject (ctx, tree->message);\n\tfor (tmp = tree; tmp; tmp = tmp->parent)\n\t{\n\t  if (tmp->subtree_visible)\n\t  {\n\t    tmp->deep = 1;\n\t    tmp->subtree_visible = 2;\n\t    break;\n\t  }\n\t  else\n\t    tmp->subtree_visible = 1;\n\t}\n      }\n      else\n      {\n\ttree->visible = 0;\n\ttree->deep = !option (OPTHIDELIMITED);\n      }\n    }\n    else\n    {\n      tree->visible = 0;\n      tree->deep = !option (OPTHIDEMISSING);\n    }\n    tree->next_subtree_visible = tree->next && (tree->next->next_subtree_visible\n\t\t\t\t\t\t|| tree->next->subtree_visible);\n    if (tree->child)\n    {\n      depth++;\n      tree = tree->child;\n      while (tree->next)\n\ttree = tree->next;\n    }\n    else if (tree->prev)\n      tree = tree->prev;\n    else\n    {\n      while (tree && !tree->prev)\n      {\n\tdepth--;\n\ttree = tree->parent;\n      }\n      if (!tree)\n\tbreak;\n      else\n\ttree = tree->prev;\n    }\n  }\n  \n  /* now fix up for the OPTHIDETOP* options if necessary */\n  if (hide_top_limited || hide_top_missing)\n  {\n    tree = ctx->tree;\n    FOREVER\n    {\n      if (!tree->visible && tree->deep && tree->subtree_visible < 2 \n\t  && ((tree->message && hide_top_limited) || (!tree->message && hide_top_missing)))\n\ttree->deep = 0;\n      if (!tree->deep && tree->child && tree->subtree_visible)\n\ttree = tree->child;\n      else if (tree->next)\n\ttree = tree->next;\n      else\n      {\n\twhile (tree && !tree->next)\n\t  tree = tree->parent;\n\tif (!tree)\n\t  break;\n\telse\n\t  tree = tree->next;\n      }\n    }\n  }\n}\n\n/* Since the graphics characters have a value >255, I have to resort to\n * using escape sequences to pass the information to print_enriched_string().\n * These are the macros M_TREE_* defined in mutt.h.\n *\n * ncurses should automatically use the default ASCII characters instead of\n * graphics chars on terminals which don't support them (see the man page\n * for curs_addch).\n */\nvoid mutt_draw_tree (CONTEXT *ctx)\n{\n  char *pfx = NULL, *mypfx = NULL, *arrow = NULL, *myarrow = NULL, *new_tree;\n  char corner = (Sort & SORT_REVERSE) ? M_TREE_ULCORNER : M_TREE_LLCORNER;\n  char vtee = (Sort & SORT_REVERSE) ? M_TREE_BTEE : M_TREE_TTEE;\n  int depth = 0, start_depth = 0, max_depth = 0, width = option (OPTNARROWTREE) ? 1 : 2;\n  THREAD *nextdisp = NULL, *pseudo = NULL, *parent = NULL, *tree = ctx->tree;\n\n  /* Do the visibility calculations and free the old thread chars.\n   * From now on we can simply ignore invisible subtrees\n   */\n  calculate_visibility (ctx, &max_depth);\n  pfx = safe_malloc (width * max_depth + 2);\n  arrow = safe_malloc (width * max_depth + 2);\n  while (tree)\n  {\n    if (depth)\n    {\n      myarrow = arrow + (depth - start_depth - (start_depth ? 0 : 1)) * width;\n      if (depth && start_depth == depth)\n\tmyarrow[0] = nextdisp ? M_TREE_LTEE : corner;\n      else if (parent->message && !option (OPTHIDELIMITED))\n\tmyarrow[0] = M_TREE_HIDDEN;\n      else if (!parent->message && !option (OPTHIDEMISSING))\n\tmyarrow[0] = M_TREE_MISSING;\n      else\n\tmyarrow[0] = vtee;\n      if (width == 2)\n\tmyarrow[1] = pseudo ?  M_TREE_STAR\n\t                     : (tree->duplicate_thread ? M_TREE_EQUALS : M_TREE_HLINE);\n      if (tree->visible)\n      {\n\tmyarrow[width] = M_TREE_RARROW;\n\tmyarrow[width + 1] = 0;\n\tnew_tree = safe_malloc ((2 + depth * width));\n\tif (start_depth > 1)\n\t{\n\t  strncpy (new_tree, pfx, (start_depth - 1) * width);\n\t  strfcpy (new_tree + (start_depth - 1) * width,\n\t\t   arrow, (1 + depth - start_depth) * width + 2);\n\t}\n\telse\n\t  strfcpy (new_tree, arrow, 2 + depth * width);\n\ttree->message->tree = new_tree;\n      }\n    }\n    if (tree->child && depth)\n    {\n      mypfx = pfx + (depth - 1) * width;\n      mypfx[0] = nextdisp ? M_TREE_VLINE : M_TREE_SPACE;\n      if (width == 2)\n\tmypfx[1] = M_TREE_SPACE;\n    }\n    parent = tree;\n    nextdisp = NULL;\n    pseudo = NULL;\n    do\n    {\n      if (tree->child && tree->subtree_visible)\n      {\n\tif (tree->deep)\n\t  depth++;\n\tif (tree->visible)\n\t  start_depth = depth;\n\ttree = tree->child;\n\n\t/* we do this here because we need to make sure that the first child thread\n\t * of the old tree that we deal with is actually displayed if any are,\n\t * or we might set the parent variable wrong while going through it. */\n\twhile (!tree->subtree_visible && tree->next)\n\t  tree = tree->next;\n      }\n      else\n      {\n\twhile (!tree->next && tree->parent)\n\t{\n\t  if (tree == pseudo)\n\t    pseudo = NULL;\n\t  if (tree == nextdisp)\n\t    nextdisp = NULL;\n\t  if (tree->visible)\n\t    start_depth = depth;\n\t  tree = tree->parent;\n\t  if (tree->deep)\n\t  {\n\t    if (start_depth == depth)\n\t      start_depth--;\n\t    depth--;\n\t  }\n\t}\n\tif (tree == pseudo)\n\t  pseudo = NULL;\n\tif (tree == nextdisp)\n\t  nextdisp = NULL;\n\tif (tree->visible)\n\t  start_depth = depth;\n\ttree = tree->next;\n\tif (!tree)\n\t  break;\n      }\n      if (!pseudo && tree->fake_thread)\n\tpseudo = tree;\n      if (!nextdisp && tree->next_subtree_visible)\n\tnextdisp = tree;\n    }\n    while (!tree->deep);\n  }\n\n  FREE (&pfx);\n  FREE (&arrow);\n}\n\n/* since we may be trying to attach as a pseudo-thread a THREAD that\n * has no message, we have to make a list of all the subjects of its\n * most immediate existing descendants.  we also note the earliest\n * date on any of the parents and put it in *dateptr. */\nstatic LIST *make_subject_list (THREAD *cur, time_t *dateptr)\n{\n  THREAD *start = cur;\n  ENVELOPE *env;\n  time_t thisdate;\n  LIST *curlist, *oldlist, *newlist, *subjects = NULL;\n  int rc = 0;\n  \n  FOREVER\n  {\n    while (!cur->message)\n      cur = cur->child;\n\n    if (dateptr)\n    {\n      thisdate = option (OPTTHREADRECEIVED)\n\t? cur->message->received : cur->message->date_sent;\n      if (!*dateptr || thisdate < *dateptr)\n\t*dateptr = thisdate;\n    }\n\n    env = cur->message->env;\n    if (env->real_subj &&\n\t((env->real_subj != env->subject) || (!option (OPTSORTRE))))\n    {\n      for (curlist = subjects, oldlist = NULL;\n\t   curlist; oldlist = curlist, curlist = curlist->next)\n      {\n\trc = mutt_strcmp (env->real_subj, curlist->data);\n\tif (rc >= 0)\n\t  break;\n      }\n      if (!curlist || rc > 0)\n      {\n\tnewlist = safe_calloc (1, sizeof (LIST));\n\tnewlist->data = env->real_subj;\n\tif (oldlist)\n\t{\n\t  newlist->next = oldlist->next;\n\t  oldlist->next = newlist;\n\t}\n\telse\n\t{\n\t  newlist->next = subjects;\n\t  subjects = newlist;\n\t}\n      }\n    }\n\n    while (!cur->next && cur != start)\n    {\n      cur = cur->parent;\n    }\n    if (cur == start)\n      break;\n    cur = cur->next;\n  }\n\n  return (subjects);\n}\n\n/* find the best possible match for a parent mesage based upon subject.\n * if there are multiple matches, the one which was sent the latest, but\n * before the current message, is used. \n */\nstatic THREAD *find_subject (CONTEXT *ctx, THREAD *cur)\n{\n  struct hash_elem *ptr;\n  THREAD *tmp, *last = NULL;\n  unsigned int hash;\n  LIST *subjects = NULL, *oldlist;\n  time_t date = 0;  \n\n  subjects = make_subject_list (cur, &date);\n\n  while (subjects)\n  {\n    hash = ctx->subj_hash->hash_string ((unsigned char *) subjects->data,\n\t\t\t\t\tctx->subj_hash->nelem);\n    for (ptr = ctx->subj_hash->table[hash]; ptr; ptr = ptr->next)\n    {\n      tmp = ((HEADER *) ptr->data)->thread;\n      if (tmp != cur &&\t\t\t   /* don't match the same message */\n\t  !tmp->fake_thread &&\t\t   /* don't match pseudo threads */\n\t  tmp->message->subject_changed && /* only match interesting replies */\n\t  !is_descendant (tmp, cur) &&\t   /* don't match in the same thread */\n\t  (date >= (option (OPTTHREADRECEIVED) ?\n\t\t    tmp->message->received :\n\t\t    tmp->message->date_sent)) &&\n\t  (!last ||\n\t   (option (OPTTHREADRECEIVED) ?\n\t    (last->message->received < tmp->message->received) :\n\t    (last->message->date_sent < tmp->message->date_sent))) &&\n\t  tmp->message->env->real_subj &&\n\t  mutt_strcmp (subjects->data, tmp->message->env->real_subj) == 0)\n\tlast = tmp; /* best match so far */\n    }\n\n    oldlist = subjects;\n    subjects = subjects->next;\n    FREE (&oldlist);\n  }\n  return (last);\n}\n\n/* remove cur and its descendants from their current location.\n * also make sure ancestors of cur no longer are sorted by the\n * fact that cur is their descendant. */\nstatic void unlink_message (THREAD **old, THREAD *cur)\n{\n  THREAD *tmp;\n\n  if (cur->prev)\n    cur->prev->next = cur->next;\n  else\n    *old = cur->next;\n\n  if (cur->next)\n    cur->next->prev = cur->prev;\n\n  if (cur->sort_key)\n  {\n    for (tmp = cur->parent; tmp && tmp->sort_key == cur->sort_key;\n\t tmp = tmp->parent)\n      tmp->sort_key = NULL;\n  }\n}\n\n/* add cur as a prior sibling of *new, with parent newparent */\nstatic void insert_message (THREAD **new, THREAD *newparent, THREAD *cur)\n{\n  if (*new)\n    (*new)->prev = cur;\n\n  cur->parent = newparent;\n  cur->next = *new;\n  cur->prev = NULL;\n  *new = cur;\n}\n\n/* thread by subject things that didn't get threaded by message-id */\nstatic void pseudo_threads (CONTEXT *ctx)\n{\n  THREAD *tree = ctx->tree, *top = tree;\n  THREAD *tmp, *cur, *parent, *curchild, *nextchild;\n\n  if (!ctx->subj_hash)\n    ctx->subj_hash = mutt_make_subj_hash (ctx);\n\n  while (tree)\n  {\n    cur = tree;\n    tree = tree->next;\n    if ((parent = find_subject (ctx, cur)) != NULL)\n    {\n      cur->fake_thread = 1;\n      unlink_message (&top, cur);\n      insert_message (&parent->child, parent, cur);\n      parent->sort_children = 1;\n      tmp = cur;\n      FOREVER\n      {\n\twhile (!tmp->message)\n\t  tmp = tmp->child;\n\n\t/* if the message we're attaching has pseudo-children, they\n\t * need to be attached to its parent, so move them up a level.\n\t * but only do this if they have the same real subject as the\n\t * parent, since otherwise they rightly belong to the message\n\t * we're attaching. */\n\tif (tmp == cur\n\t    || !mutt_strcmp (tmp->message->env->real_subj,\n\t\t\t     parent->message->env->real_subj))\n\t{\n\t  tmp->message->subject_changed = 0;\n\n\t  for (curchild = tmp->child; curchild; )\n\t  {\n\t    nextchild = curchild->next;\n\t    if (curchild->fake_thread)\n\t    {\n\t      unlink_message (&tmp->child, curchild);\n\t      insert_message (&parent->child, parent, curchild);\n\t    }\n\t    curchild = nextchild;\n\t  }\n\t}\n\n\twhile (!tmp->next && tmp != cur)\n\t{\n\t  tmp = tmp->parent;\n\t}\n\tif (tmp == cur)\n\t  break;\n\ttmp = tmp->next;\n      }\n    }\n  }\n  ctx->tree = top;\n}\n\n\nvoid mutt_clear_threads (CONTEXT *ctx)\n{\n  int i;\n\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    /* mailbox may have been only partially read */\n    if (ctx->hdrs[i])\n    {\n      ctx->hdrs[i]->thread = NULL;\n      ctx->hdrs[i]->threaded = 0;\n    }\n  }\n  ctx->tree = NULL;\n\n  if (ctx->thread_hash)\n    hash_destroy (&ctx->thread_hash, *free);\n}\n\nstatic int compare_threads (const void *a, const void *b)\n{\n  static sort_t *sort_func = NULL;\n\n  if (a && b)\n    return ((*sort_func) (&(*((THREAD **) a))->sort_key,\n\t\t\t  &(*((THREAD **) b))->sort_key));\n  /* a hack to let us reset sort_func even though we can't\n   * have extra arguments because of qsort\n   */\n  else\n  {\n    sort_func = mutt_get_sort_func (Sort);\n    return (sort_func ? 1 : 0);\n  }\n}\n\nTHREAD *mutt_sort_subthreads (THREAD *thread, int init)\n{\n  THREAD **array, *sort_key, *top, *tmp;\n  HEADER *oldsort_key;\n  int i, array_size, sort_top = 0;\n  \n  /* we put things into the array backwards to save some cycles,\n   * but we want to have to move less stuff around if we're \n   * resorting, so we sort backwards and then put them back\n   * in reverse order so they're forwards\n   */\n  Sort ^= SORT_REVERSE;\n  if (!compare_threads (NULL, NULL))\n    return (thread);\n\n  top = thread;\n\n  array = safe_calloc ((array_size = 256), sizeof (THREAD *));\n  while (1)\n  {\n    if (init || !thread->sort_key)\n    {\n      thread->sort_key = NULL;\n\n      if (thread->parent)\n        thread->parent->sort_children = 1;\n      else\n\tsort_top = 1;\n    }\n\n    if (thread->child)\n    {\n      thread = thread->child;\n      continue;\n    }\n    else\n    {\n      /* if it has no children, it must be real. sort it on its own merits */\n      thread->sort_key = thread->message;\n\n      if (thread->next)\n      {\n\tthread = thread->next;\n\tcontinue;\n      }\n    }\n\n    while (!thread->next)\n    {\n      /* if it has siblings and needs to be sorted, sort it... */\n      if (thread->prev && (thread->parent ? thread->parent->sort_children : sort_top))\n      {\n\t/* put them into the array */\n\tfor (i = 0; thread; i++, thread = thread->prev)\n\t{\n\t  if (i >= array_size)\n\t    safe_realloc (&array, (array_size *= 2) * sizeof (THREAD *));\n\n\t  array[i] = thread;\n\t}\n\n\tqsort ((void *) array, i, sizeof (THREAD *), *compare_threads);\n\n\t/* attach them back together.  make thread the last sibling. */\n\tthread = array[0];\n\tthread->next = NULL;\n\tarray[i - 1]->prev = NULL;\n\n\tif (thread->parent)\n\t  thread->parent->child = array[i - 1];\n\telse\n\t  top = array[i - 1];\n\n\twhile (--i)\n\t{\n\t  array[i - 1]->prev = array[i];\n\t  array[i]->next = array[i - 1];\n\t}\n      }\n\n      if (thread->parent)\n      {\n\ttmp = thread;\n\tthread = thread->parent;\n\n\tif (!thread->sort_key || thread->sort_children)\n\t{\n\t  /* make sort_key the first or last sibling, as appropriate */\n\t  sort_key = (!(Sort & SORT_LAST) ^ !(Sort & SORT_REVERSE)) ? thread->child : tmp;\n\n\t  /* we just sorted its children */\n\t  thread->sort_children = 0;\n\n\t  oldsort_key = thread->sort_key;\n\t  thread->sort_key = thread->message;\n\n\t  if (Sort & SORT_LAST)\n\t  {\n\t    if (!thread->sort_key\n\t\t|| ((((Sort & SORT_REVERSE) ? 1 : -1)\n\t\t     * compare_threads ((void *) &thread,\n\t\t\t\t\t(void *) &sort_key))\n\t\t    > 0))\n\t      thread->sort_key = sort_key->sort_key;\n\t  }\n\t  else if (!thread->sort_key)\n\t    thread->sort_key = sort_key->sort_key;\n\n\t  /* if its sort_key has changed, we need to resort it and siblings */\n\t  if (oldsort_key != thread->sort_key)\n\t  {\n\t    if (thread->parent)\n\t      thread->parent->sort_children = 1;\n\t    else\n\t      sort_top = 1;\n\t  }\n\t}\n      }\n      else\n      {\n\tSort ^= SORT_REVERSE;\n\tFREE (&array);\n\treturn (top);\n      }\n    }\n\n    thread = thread->next;\n  }\n}\n\nstatic void check_subjects (CONTEXT *ctx, int init)\n{\n  HEADER *cur;\n  THREAD *tmp;\n  int i;\n\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    cur = ctx->hdrs[i];\n    if (cur->thread->check_subject)\n      cur->thread->check_subject = 0;\n    else if (!init)\n      continue;\n\n    /* figure out which messages have subjects different than their parents' */\n    tmp = cur->thread->parent;\n    while (tmp && !tmp->message)\n    {\n      tmp = tmp->parent;\n    }\n\n    if (!tmp)\n      cur->subject_changed = 1;\n    else if (cur->env->real_subj && tmp->message->env->real_subj)\n      cur->subject_changed = mutt_strcmp (cur->env->real_subj,\n\t\t\t\t\t  tmp->message->env->real_subj) ? 1 : 0;\n    else\n      cur->subject_changed = (cur->env->real_subj\n\t\t\t      || tmp->message->env->real_subj) ? 1 : 0;\n  }\n}\n\nvoid mutt_sort_threads (CONTEXT *ctx, int init)\n{\n  HEADER *cur;\n  int i, oldsort, using_refs = 0;\n  THREAD *thread, *new, *tmp, top;\n  LIST *ref = NULL;\n  \n  /* set Sort to the secondary method to support the set sort_aux=reverse-*\n   * settings.  The sorting functions just look at the value of\n   * SORT_REVERSE\n   */\n  oldsort = Sort;\n  Sort = SortAux;\n  \n  if (!ctx->thread_hash)\n    init = 1;\n\n  if (init)\n    ctx->thread_hash = hash_create (ctx->msgcount * 2, 0);\n\n  /* we want a quick way to see if things are actually attached to the top of the\n   * thread tree or if they're just dangling, so we attach everything to a top\n   * node temporarily */\n  top.parent = top.next = top.prev = NULL;\n  top.child = ctx->tree;\n  for (thread = ctx->tree; thread; thread = thread->next)\n    thread->parent = &top;\n\n  /* put each new message together with the matching messageless THREAD if it\n   * exists.  otherwise, if there is a THREAD that already has a message, thread\n   * new message as an identical child.  if we didn't attach the message to a\n   * THREAD, make a new one for it. */\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    cur = ctx->hdrs[i];\n\n    if (!cur->thread)\n    {\n      if ((!init || option (OPTDUPTHREADS)) && cur->env->message_id)\n\tthread = hash_find (ctx->thread_hash, cur->env->message_id);\n      else\n\tthread = NULL;\n\n      if (thread && !thread->message)\n      {\n\t/* this is a message which was missing before */\n\tthread->message = cur;\n\tcur->thread = thread;\n\tthread->check_subject = 1;\n\n\t/* mark descendants as needing subject_changed checked */\n\tfor (tmp = (thread->child ? thread->child : thread); tmp != thread; )\n\t{\n\t  while (!tmp->message)\n\t    tmp = tmp->child;\n\t  tmp->check_subject = 1;\n\t  while (!tmp->next && tmp != thread)\n\t    tmp = tmp->parent;\n\t  if (tmp != thread)\n\t    tmp = tmp->next;\n\t}\n\n\tif (thread->parent)\n\t{\n\t  /* remove threading info above it based on its children, which we'll\n\t   * recalculate based on its headers.  make sure not to leave\n\t   * dangling missing messages.  note that we haven't kept track\n\t   * of what info came from its children and what from its siblings'\n\t   * children, so we just remove the stuff that's definitely from it */\n\t  do\n\t  {\n\t    tmp = thread->parent;\n\t    unlink_message (&tmp->child, thread);\n\t    thread->parent = NULL;\n\t    thread->sort_key = NULL;\n\t    thread->fake_thread = 0;\n\t    thread = tmp;\n\t  } while (thread != &top && !thread->child && !thread->message);\n\t}\n      }\n      else\n      {\n\tnew = (option (OPTDUPTHREADS) ? thread : NULL);\n\n\tthread = safe_calloc (1, sizeof (THREAD));\n\tthread->message = cur;\n\tthread->check_subject = 1;\n\tcur->thread = thread;\n\thash_insert (ctx->thread_hash,\n\t\t     cur->env->message_id ? cur->env->message_id : \"\",\n\t\t     thread, 1);\n\n\tif (new)\n\t{\n\t  if (new->duplicate_thread)\n\t    new = new->parent;\n\n\t  thread = cur->thread;\n\n\t  insert_message (&new->child, new, thread);\n\t  thread->duplicate_thread = 1;\n\t  thread->message->threaded = 1;\n\t}\n      }\n    }\n    else\n    {\n      /* unlink pseudo-threads because they might be children of newly\n       * arrived messages */\n      thread = cur->thread;\n      for (new = thread->child; new; )\n      {\n\ttmp = new->next;\n\tif (new->fake_thread)\n\t{\n\t  unlink_message (&thread->child, new);\n\t  insert_message (&top.child, &top, new);\n\t  new->fake_thread = 0;\n\t}\n\tnew = tmp;\n      }\n    }\n  }\n\n  /* thread by references */\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    cur = ctx->hdrs[i];\n    if (cur->threaded)\n      continue;\n    cur->threaded = 1;\n\n    thread = cur->thread;\n    using_refs = 0;\n\n    while (1)\n    {\n      if (using_refs == 0)\n      {\n\t/* look at the beginning of in-reply-to: */\n\tif ((ref = cur->env->in_reply_to) != NULL)\n\t  using_refs = 1;\n\telse\n\t{\n\t  ref = cur->env->references;\n\t  using_refs = 2;\n\t}\n      }\n      else if (using_refs == 1)\n      {\n\t/* if there's no references header, use all the in-reply-to:\n\t * data that we have.  otherwise, use the first reference\n\t * if it's different than the first in-reply-to, otherwise use\n\t * the second reference (since at least eudora puts the most\n\t * recent reference in in-reply-to and the rest in references)\n\t */\n\tif (!cur->env->references)\n\t  ref = ref->next;\n\telse\n\t{\n\t  if (mutt_strcmp (ref->data, cur->env->references->data))\n\t    ref = cur->env->references;\n\t  else\n\t    ref = cur->env->references->next;\n\t  \n\t  using_refs = 2;\n\t}\n      }\n      else\n\tref = ref->next; /* go on with references */\n      \n      if (!ref)\n\tbreak;\n\n      if ((new = hash_find (ctx->thread_hash, ref->data)) == NULL)\n      {\n\tnew = safe_calloc (1, sizeof (THREAD));\n\thash_insert (ctx->thread_hash, ref->data, new, 1);\n      }\n      else\n      {\n\tif (new->duplicate_thread)\n\t  new = new->parent;\n\tif (is_descendant (new, thread)) /* no loops! */\n\t  continue;\n      }\n\n      if (thread->parent)\n\tunlink_message (&top.child, thread);\n      insert_message (&new->child, new, thread);\n      thread = new;\n      if (thread->message || (thread->parent && thread->parent != &top))\n\tbreak;\n    }\n\n    if (!thread->parent)\n      insert_message (&top.child, &top, thread);\n  }\n\n  /* detach everything from the temporary top node */\n  for (thread = top.child; thread; thread = thread->next)\n  {\n    thread->parent = NULL;\n  }\n  ctx->tree = top.child;\n\n  check_subjects (ctx, init);\n\n  if (!option (OPTSTRICTTHREADS))\n    pseudo_threads (ctx);\n\n  if (ctx->tree)\n  {\n    ctx->tree = mutt_sort_subthreads (ctx->tree, init);\n\n    /* restore the oldsort order. */\n    Sort = oldsort;\n    \n    /* Put the list into an array. */\n    linearize_tree (ctx);\n\n    /* Draw the thread tree. */\n    mutt_draw_tree (ctx);\n  }\n}\n\nstatic HEADER *find_virtual (THREAD *cur, int reverse)\n{\n  THREAD *top;\n\n  if (cur->message && cur->message->virtual >= 0)\n    return (cur->message);\n\n  top = cur;\n  if ((cur = cur->child) == NULL)\n    return (NULL);\n\n  while (reverse && cur->next)\n    cur = cur->next;\n\n  FOREVER\n  {\n    if (cur->message && cur->message->virtual >= 0)\n      return (cur->message);\n\n    if (cur->child)\n    {\n      cur = cur->child;\n\n      while (reverse && cur->next)\n\tcur = cur->next;\n    }\n    else if (reverse ? cur->prev : cur->next)\n      cur = reverse ? cur->prev : cur->next;\n    else\n    {\n      while (!(reverse ? cur->prev : cur->next))\n      {\n\tcur = cur->parent;\n\tif (cur == top)\n\t  return (NULL);\n      }\n      cur = reverse ? cur->prev : cur->next;\n    }\n    /* not reached */\n  }\n}\n\n/* dir => true when moving forward, false when moving in reverse\n * subthreads => false when moving to next thread, true when moving to next subthread\n */\nint _mutt_aside_thread (HEADER *hdr, short dir, short subthreads)\n{\n  THREAD *cur;\n  HEADER *tmp;\n\n  if ((Sort & SORT_MASK) != SORT_THREADS)\n  {\n    mutt_error _(\"Threading is not enabled.\");\n    return (hdr->virtual);\n  }\n\n  cur = hdr->thread;\n\n  if (!subthreads)\n  {\n    while (cur->parent)\n      cur = cur->parent;\n  }\n  else\n  {\n    if ((dir != 0) ^ ((Sort & SORT_REVERSE) != 0))\n    {\n      while (!cur->next && cur->parent)\n\tcur = cur->parent;\n    }\n    else\n    {\n      while (!cur->prev && cur->parent)\n\tcur = cur->parent;\n    }\n  }\n\n  if ((dir != 0) ^ ((Sort & SORT_REVERSE) != 0))\n  {\n    do\n    { \n      cur = cur->next;\n      if (!cur)\n\treturn (-1);\n      tmp = find_virtual (cur, 0);\n    } while (!tmp);\n  }\n  else\n  {\n    do\n    { \n      cur = cur->prev;\n      if (!cur)\n\treturn (-1);\n      tmp = find_virtual (cur, 1);\n    } while (!tmp);\n  }\n\n  return (tmp->virtual);\n}\n\nint mutt_parent_message (CONTEXT *ctx, HEADER *hdr)\n{\n  THREAD *thread;\n\n  if ((Sort & SORT_MASK) != SORT_THREADS)\n  {\n    mutt_error _(\"Threading is not enabled.\");\n    return (hdr->virtual);\n  }\n\n  for (thread = hdr->thread->parent; thread; thread = thread->parent)\n  {\n    if ((hdr = thread->message) != NULL)\n    {\n      if (VISIBLE (hdr, ctx))\n\treturn (hdr->virtual);\n      else\n      {\n\tmutt_error _(\"Parent message is not visible in this limited view.\");\n\treturn (-1);\n      }\n    }\n  }\n  \n  mutt_error _(\"Parent message is not available.\");\n  return (-1);\n}\n\nvoid mutt_set_virtual (CONTEXT *ctx)\n{\n  int i;\n  HEADER *cur;\n\n  ctx->vcount = 0;\n  ctx->vsize = 0;\n\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    cur = ctx->hdrs[i];\n    if (cur->virtual >= 0)\n    {\n      cur->virtual = ctx->vcount;\n      ctx->v2r[ctx->vcount] = i;\n      ctx->vcount++;\n      ctx->vsize += cur->content->length + cur->content->offset - cur->content->hdr_offset;\n      cur->num_hidden = mutt_get_hidden (ctx, cur);\n    }\n  }\n}\n\nint _mutt_traverse_thread (CONTEXT *ctx, HEADER *cur, int flag)\n{\n  THREAD *thread, *top;\n  HEADER *roothdr = NULL;\n  int final, reverse = (Sort & SORT_REVERSE), minmsgno;\n  int num_hidden = 0, new = 0, old = 0;\n  int min_unread_msgno = INT_MAX, min_unread = cur->virtual;\n#define CHECK_LIMIT (!ctx->pattern || cur->limited)\n\n  if ((Sort & SORT_MASK) != SORT_THREADS && !(flag & M_THREAD_GET_HIDDEN))\n  {\n    mutt_error (_(\"Threading is not enabled.\"));\n    return (cur->virtual);\n  }\n\n  final = cur->virtual;\n  thread = cur->thread;\n  while (thread->parent)\n    thread = thread->parent;\n  top = thread;\n  while (!thread->message)\n    thread = thread->child;\n  cur = thread->message;\n  minmsgno = cur->msgno;\n\n  if (!cur->read && CHECK_LIMIT)\n  {\n    if (cur->old)\n      old = 2;\n    else\n      new = 1;\n    if (cur->msgno < min_unread_msgno)\n    {\n      min_unread = cur->virtual;\n      min_unread_msgno = cur->msgno;\n    }\n  }\n\n  if (cur->virtual == -1 && CHECK_LIMIT)\n    num_hidden++;\n\n  if (flag & (M_THREAD_COLLAPSE | M_THREAD_UNCOLLAPSE))\n  {\n    cur->pair = 0; /* force index entry's color to be re-evaluated */\n    cur->collapsed = flag & M_THREAD_COLLAPSE;\n    if (cur->virtual != -1)\n    {\n      roothdr = cur;\n      if (flag & M_THREAD_COLLAPSE)\n\tfinal = roothdr->virtual;\n    }\n  }\n\n  if (thread == top && (thread = thread->child) == NULL)\n  {\n    /* return value depends on action requested */\n    if (flag & (M_THREAD_COLLAPSE | M_THREAD_UNCOLLAPSE))\n      return (final);\n    else if (flag & M_THREAD_UNREAD)\n      return ((old && new) ? new : (old ? old : new));\n    else if (flag & M_THREAD_GET_HIDDEN)\n      return (num_hidden);\n    else if (flag & M_THREAD_NEXT_UNREAD)\n      return (min_unread);\n  }\n  \n  FOREVER\n  {\n    cur = thread->message;\n\n    if (cur)\n    {\n      if (flag & (M_THREAD_COLLAPSE | M_THREAD_UNCOLLAPSE))\n      {\n\tcur->pair = 0; /* force index entry's color to be re-evaluated */\n\tcur->collapsed = flag & M_THREAD_COLLAPSE;\n\tif (!roothdr && CHECK_LIMIT)\n\t{\n\t  roothdr = cur;\n\t  if (flag & M_THREAD_COLLAPSE)\n\t    final = roothdr->virtual;\n\t}\n\n\tif (reverse && (flag & M_THREAD_COLLAPSE) && (cur->msgno < minmsgno) && CHECK_LIMIT)\n\t{\n\t  minmsgno = cur->msgno;\n\t  final = cur->virtual;\n\t}\n\n\tif (flag & M_THREAD_COLLAPSE)\n\t{\n\t  if (cur != roothdr)\n\t    cur->virtual = -1;\n\t}\n\telse \n\t{\n\t  if (CHECK_LIMIT)\n\t    cur->virtual = cur->msgno;\n\t}\n      }\n\n\n      if (!cur->read && CHECK_LIMIT)\n      {\n\tif (cur->old)\n\t  old = 2;\n\telse\n\t  new = 1;\n\tif (cur->msgno < min_unread_msgno)\n\t{\n\t  min_unread = cur->virtual;\n\t  min_unread_msgno = cur->msgno;\n\t}\n      }\n\n      if (cur->virtual == -1 && CHECK_LIMIT)\n\tnum_hidden++;\n    }\n\n    if (thread->child)\n      thread = thread->child;\n    else if (thread->next)\n      thread = thread->next;\n    else\n    {\n      int done = 0;\n      while (!thread->next)\n      {\n\tthread = thread->parent;\n\tif (thread == top)\n\t{\n\t  done = 1;\n\t  break;\n\t}\n      }\n      if (done)\n\tbreak;\n      thread = thread->next;\n    }\n  }\n\n  /* return value depends on action requested */\n  if (flag & (M_THREAD_COLLAPSE | M_THREAD_UNCOLLAPSE))\n    return (final);\n  else if (flag & M_THREAD_UNREAD)\n    return ((old && new) ? new : (old ? old : new));\n  else if (flag & M_THREAD_GET_HIDDEN)\n    return (num_hidden+1);\n  else if (flag & M_THREAD_NEXT_UNREAD)\n    return (min_unread);\n\n  return (0);\n#undef CHECK_LIMIT\n}\n\n\n/* if flag is 0, we want to know how many messages\n * are in the thread.  if flag is 1, we want to know\n * our position in the thread. */\nint mutt_messages_in_thread (CONTEXT *ctx, HEADER *hdr, int flag)\n{\n  THREAD *threads[2];\n  int i, rc;\n\n  if ((Sort & SORT_MASK) != SORT_THREADS || !hdr->thread)\n    return (1);\n\n  threads[0] = hdr->thread;\n  while (threads[0]->parent)\n    threads[0] = threads[0]->parent;\n\n  threads[1] = flag ? hdr->thread : threads[0]->next;\n\n  for (i = 0; i < ((flag || !threads[1]) ? 1 : 2); i++)\n  {\n    while (!threads[i]->message)\n      threads[i] = threads[i]->child;\n  } \n\n  if (Sort & SORT_REVERSE)\n    rc = threads[0]->message->msgno - (threads[1] ? threads[1]->message->msgno : -1);\n  else\n    rc = (threads[1] ? threads[1]->message->msgno : ctx->msgcount) - threads[0]->message->msgno;\n  \n  if (flag)\n    rc += 1;\n  \n  return (rc);\n}\n\n\nHASH *mutt_make_id_hash (CONTEXT *ctx)\n{\n  int i;\n  HEADER *hdr;\n  HASH *hash;\n\n  hash = hash_create (ctx->msgcount * 2, 0);\n\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    hdr = ctx->hdrs[i];\n    if (hdr->env->message_id)\n      hash_insert (hash, hdr->env->message_id, hdr, 0);\n  }\n\n  return hash;\n}\n\nHASH *mutt_make_subj_hash (CONTEXT *ctx)\n{\n  int i;\n  HEADER *hdr;\n  HASH *hash;\n\n  hash = hash_create (ctx->msgcount * 2, 0);\n\n  for (i = 0; i < ctx->msgcount; i++)\n  {\n    hdr = ctx->hdrs[i];\n    if (hdr->env->real_subj)\n      hash_insert (hash, hdr->env->real_subj, hdr, 1);\n  }\n\n  return hash;\n}\n\nstatic void clean_references (THREAD *brk, THREAD *cur)\n{\n  THREAD *p;\n  LIST *ref = NULL;\n  int done = 0;\n\n  for (; cur; cur = cur->next, done = 0)\n  {\n    /* parse subthread recursively */\n    clean_references (brk, cur->child);\n\n    if (!cur->message)\n      break; /* skip pseudo-message */\n\n    /* Looking for the first bad reference according to the new threading.\n     * Optimal since Mutt stores the references in reverse order, and the\n     * first loop should match immediately for mails respecting RFC2822. */\n    for (p = brk; !done && p; p = p->parent)\n      for (ref = cur->message->env->references; p->message && ref; ref = ref->next)\n\tif (!mutt_strcasecmp (ref->data, p->message->env->message_id))\n\t{\n\t  done = 1;\n\t  break;\n\t}\n\n    if (done)\n    {\n      HEADER *h = cur->message;\n\n      /* clearing the References: header from obsolete Message-ID(s) */\n      mutt_free_list (&ref->next);\n\n      h->env->refs_changed = h->changed = 1;\n    }\n  }\n}\n\nvoid mutt_break_thread (HEADER *hdr)\n{\n  mutt_free_list (&hdr->env->in_reply_to);\n  mutt_free_list (&hdr->env->references);\n  hdr->env->irt_changed = hdr->env->refs_changed = hdr->changed = 1;\n\n  clean_references (hdr->thread, hdr->thread->child);\n}\n\nstatic int link_threads (HEADER *parent, HEADER *child, CONTEXT *ctx)\n{\n  if (child == parent)\n    return 0;\n\n  mutt_break_thread (child);\n\n  child->env->in_reply_to = mutt_new_list ();\n  child->env->in_reply_to->data = safe_strdup (parent->env->message_id);\n  \n  mutt_set_flag (ctx, child, M_TAG, 0);\n  \n  child->env->irt_changed = child->changed = 1;\n  return 1;\n}\n\nint mutt_link_threads (HEADER *cur, HEADER *last, CONTEXT *ctx)\n{\n  int i, changed = 0;\n\n  if (!last)\n  {\n    for (i = 0; i < ctx->vcount; i++)\n      if (ctx->hdrs[Context->v2r[i]]->tagged)\n\tchanged |= link_threads (cur, ctx->hdrs[Context->v2r[i]], ctx);\n  }\n  else\n    changed = link_threads (cur, last, ctx);\n\n  return changed;\n}\n"
  },
  {
    "path": "txt2c.c",
    "content": "#include <stdio.h>\n\n#define per_line 12\n\nvoid\ntxt2c(char *sym, FILE *fp)\n{\n\tunsigned char buf[per_line];\n\tint i;\n\tint sz = 0;\n\n\tprintf(\"unsigned char %s[] = {\\n\", sym);\n\twhile (1) {\n\t\tsz = fread(buf, sizeof(unsigned char), per_line, fp);\n\t\tif (sz == 0)\n\t\t\tbreak;\n\t\tprintf(\"\\t\");\n\t\tfor (i = 0; i < sz; i++)\n\t\t\tprintf(\"0x%02x, \", buf[i]);\n\t\tprintf(\"\\n\");\n\t}\n\n\tprintf(\"\\t0x00\\n};\\n\");\n}\n\n\nint\nmain(int argc, char *argv[])\n{\n\tif (argc != 2) {\n\t\tfprintf(stderr, \"usage: %s symbol <textfile >textfile.c\\n\", argv[0]);\n\t\treturn 2;\n\t}\n\n\ttxt2c(argv[1], stdin);\n\treturn 0;\n}\n"
  },
  {
    "path": "txt2c.sh",
    "content": "#!/bin/sh\n\ntxt2c_fallback () {\n\t# consumes stdin\n\n\t# declaration\n\techo \"unsigned char $1[] = \"\n\n\t# initializer - filter out unwanted characters, then convert problematic\n\t# or odd-looking sequences.  The result is a sequence of quote-bounded\n\t# C strings, which the compiler concatenates into a single C string.\n\ttr -c '\\011\\012\\015\\040[!-~]' '?' |\n\tsed \\\n\t    -e 's/\\\\/\\\\\\\\/g' \\\n\t    -e 's/\"/\\\\\"/g' \\\n\t    -e 's/??/\\\\?\\\\?/g' \\\n\t    -e 's/\t/\\\\t/'g \\\n\t    -e 's/\r/\\\\r/g' \\\n\t    -e 's/^/\t\"/g' \\\n\t    -e 's/$/\\\\n\"/g'\n\techo \";\"\n}\n\n./txt2c test </dev/null >/dev/null 2>&1 &&\n./txt2c \"$1\" ||\ntxt2c_fallback \"$1\"\n"
  },
  {
    "path": "url.c",
    "content": "/*\n * Copyright (C) 2000-2002,2004 Thomas Roessler <roessler@does-not-exist.org>\n * \n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n * \n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n * \n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */ \n\n/*\n * A simple URL parser.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mapping.h\"\n#include \"url.h\"\n\n#include \"mime.h\"\n\n#include <ctype.h>\n\nstatic const struct mapping_t UrlMap[] =\n{\n  { \"file\", \tU_FILE },\n  { \"imap\", \tU_IMAP },\n  { \"imaps\", \tU_IMAPS },\n  { \"pop\",  \tU_POP },\n  { \"pops\", \tU_POPS },\n  { \"mailto\",\tU_MAILTO },\n#ifdef USE_NOTMUCH\n  { \"notmuch\",  U_NOTMUCH },\n#endif\n  { \"smtp\",     U_SMTP },\n  { \"smtps\",    U_SMTPS },\n  { NULL,\tU_UNKNOWN }\n};\n\nint url_pct_decode (char *s)\n{\n  char *d;\n\n  if (!s)\n    return -1;\n\n  for (d = s; *s; s++)\n  {\n    if (*s == '%')\n    {\n      if (s[1] && s[2] &&\n\t  isxdigit ((unsigned char) s[1]) &&\n\t  isxdigit ((unsigned char) s[2]) &&\n\t  hexval (s[1]) >= 0 && hexval (s[2]) >= 0)\n      {\n\t*d++ = (hexval (s[1]) << 4) | (hexval (s[2]));\n\ts += 2;\n      }\n      else\n\treturn -1;\n    } else\n      *d++ = *s;\n  }\n  *d ='\\0';\n  return 0;\n}\n\nurl_scheme_t url_check_scheme (const char *s)\n{\n  char sbuf[STRING];\n  char *t;\n  int i;\n\n  if (!s || !(t = strchr (s, ':')))\n    return U_UNKNOWN;\n  if ((size_t)(t - s) >= sizeof (sbuf) - 1)\n    return U_UNKNOWN;\n\n  strfcpy (sbuf, s, t - s + 1);\n  for (t = sbuf; *t; t++)\n    *t = ascii_tolower (*t);\n\n  if ((i = mutt_getvaluebyname (sbuf, UrlMap)) == -1)\n    return U_UNKNOWN;\n  else\n    return (url_scheme_t) i;\n}\n\nint url_parse_file (char *d, const char *src, size_t dl)\n{\n  if (ascii_strncasecmp (src, \"file:\", 5))\n    return -1;\n  else if (!ascii_strncasecmp (src, \"file://\", 7))\t/* we don't support remote files */\n    return -1;\n  else\n    strfcpy (d, src + 5, dl);\n\n  return url_pct_decode (d);\n}\n\n/* ciss_parse_userhost: fill in components of ciss with info from src. Note\n *   these are pointers into src, which is altered with '\\0's. Port of 0\n *   means no port given. */\nstatic int ciss_parse_userhost (ciss_url_t *ciss, char *src)\n{\n  char *t, *p;\n\n  ciss->user = NULL;\n  ciss->pass = NULL;\n  ciss->host = NULL;\n  ciss->port = 0;\n\n  if (strncmp (src, \"//\", 2) != 0)\n  {\n    ciss->path = src;\n    return url_pct_decode (ciss->path);\n  }\n\n  src += 2;\n\n  if ((ciss->path = strchr (src, '/')))\n    *ciss->path++ = '\\0';\n\n  if ((t = strrchr (src, '@')))\n  {\n    *t = '\\0';\n    if ((p = strchr (src, ':')))\n    {\n      *p = '\\0';\n      ciss->pass = p + 1;\n      if (url_pct_decode (ciss->pass) < 0)\n\treturn -1;\n    }\n    ciss->user = src;\n    if (url_pct_decode (ciss->user) < 0)\n      return -1;\n    t++;\n  }\n  else\n    t = src;\n\n  if ((p = strchr (t, ':')))\n  {\n    int t;\n    *p++ = '\\0';\n    if (mutt_atoi (p, &t) < 0 || t < 0 || t > 0xffff)\n      return -1;\n    ciss->port = (unsigned short)t;\n  }\n  else\n    ciss->port = 0;\n\n  ciss->host = t;\n  return url_pct_decode (ciss->host) >= 0 &&\n    (!ciss->path || url_pct_decode (ciss->path) >= 0) ? 0 : -1;\n}\n\n/* url_parse_ciss: Fill in ciss_url_t. char* elements are pointers into src,\n *   which is modified by this call (duplicate it first if you need to). */\nint url_parse_ciss (ciss_url_t *ciss, char *src)\n{\n  char *tmp;\n\n  if ((ciss->scheme = url_check_scheme (src)) == U_UNKNOWN)\n    return -1;\n\n  tmp = strchr (src, ':') + 1;\n\n  return ciss_parse_userhost (ciss, tmp);\n}\n\nstatic void url_pct_encode (char *dst, size_t l, const char *src)\n{\n  static const char *alph = \"0123456789ABCDEF\";\n\n  *dst = 0;\n  l--;\n  while (src && *src && l)\n  {\n    if (strchr (\"/:%\", *src) && l > 3)\n    {\n      *dst++ = '%';\n      *dst++ = alph[(*src >> 4) & 0xf];\n      *dst++ = alph[*src & 0xf];\n      src++;\n      continue;\n    }\n    *dst++ = *src++;\n  }\n  *dst = 0;\n}\n\n/* url_ciss_tostring: output the URL string for a given CISS object. */\nint url_ciss_tostring (ciss_url_t* ciss, char* dest, size_t len, int flags)\n{\n  long l;\n\n  if (ciss->scheme == U_UNKNOWN)\n    return -1;\n\n  snprintf (dest, len, \"%s:\", mutt_getnamebyvalue (ciss->scheme, UrlMap));\n\n  if (ciss->host)\n  {\n    if (!(flags & U_PATH))\n      safe_strcat (dest, len, \"//\");\n    len -= (l = strlen (dest)); dest += l;\n\n    if (ciss->user)\n    {\n      char u[STRING];\n      url_pct_encode (u, sizeof (u), ciss->user);\n\n      if (flags & U_DECODE_PASSWD && ciss->pass)\n      {\n\tchar p[STRING];\n\turl_pct_encode (p, sizeof (p), ciss->pass);\n\tsnprintf (dest, len, \"%s:%s@\", u, p);\n      }\n      else\n\tsnprintf (dest, len, \"%s@\", u);\n\n      len -= (l = strlen (dest)); dest += l;\n    }\n\n    if (ciss->port)\n      snprintf (dest, len, \"%s:%hu/\", ciss->host, ciss->port);\n    else\n      snprintf (dest, len, \"%s/\", ciss->host);\n  }\n\n  if (ciss->path)\n    safe_strcat (dest, len, ciss->path);\n\n  return 0;\n}\n\nint url_parse_mailto (ENVELOPE *e, char **body, const char *src)\n{\n  char *t, *p;\n  char *tmp;\n  char *headers;\n  char *tag, *value;\n\n  int rc = -1;\n\n  LIST *last = NULL;\n\n  if (!(t = strchr (src, ':')))\n    return -1;\n\n  /* copy string for safe use of strtok() */\n  if ((tmp = safe_strdup (t + 1)) == NULL)\n    return -1;\n\n  if ((headers = strchr (tmp, '?')))\n    *headers++ = '\\0';\n\n  if (url_pct_decode (tmp) < 0)\n    goto out;\n\n  e->to = rfc822_parse_adrlist (e->to, tmp);\n\n  tag = headers ? strtok_r (headers, \"&\", &p) : NULL;\n\n  for (; tag; tag = strtok_r (NULL, \"&\", &p))\n  {\n    if ((value = strchr (tag, '=')))\n      *value++ = '\\0';\n    if (!value || !*value)\n      continue;\n\n    if (url_pct_decode (tag) < 0)\n      goto out;\n    if (url_pct_decode (value) < 0)\n      goto out;\n\n    /* Determine if this header field is on the allowed list.  Since Mutt\n     * interprets some header fields specially (such as\n     * \"Attach: ~/.gnupg/secring.gpg\"), care must be taken to ensure that\n     * only safe fields are allowed.\n     *\n     * RFC2368, \"4. Unsafe headers\"\n     * The user agent interpreting a mailto URL SHOULD choose not to create\n     * a message if any of the headers are considered dangerous; it may also\n     * choose to create a message with only a subset of the headers given in\n     * the URL.\n     */\n    if (mutt_matches_ignore(tag, MailtoAllow))\n    {\n      if (!ascii_strcasecmp (tag, \"body\"))\n      {\n\tif (body)\n\t  mutt_str_replace (body, value);\n      }\n      else\n      {\n\tchar *scratch;\n\tsize_t taglen = mutt_strlen (tag);\n\n\tsafe_asprintf (&scratch, \"%s: %s\", tag, value);\n\tscratch[taglen] = 0; /* overwrite the colon as mutt_parse_rfc822_line expects */\n\tvalue = skip_email_wsp(&scratch[taglen + 1]);\n\tmutt_parse_rfc822_line (e, NULL, scratch, value, 1, 0, 0, &last);\n\tFREE (&scratch);\n      }\n    }\n  }\n\n  rc = 0;\n\nout:\n  FREE (&tmp);\n  return rc;\n}\n\n"
  },
  {
    "path": "url.h",
    "content": "#ifndef _URL_H\n# define _URL_H\n\ntypedef enum url_scheme\n{\n  U_FILE,\n  U_POP,\n  U_POPS,\n  U_IMAP,\n  U_IMAPS,\n  U_SMTP,\n  U_SMTPS,\n  U_MAILTO,\n#ifdef USE_NOTMUCH\n  U_NOTMUCH,\n#endif\n  U_UNKNOWN\n}\nurl_scheme_t;\n\n#define U_DECODE_PASSWD (1)\n#define U_PATH          (1 << 1)\n\ntypedef struct ciss_url\n{\n  url_scheme_t scheme;\n  char *user;\n  char *pass;\n  char *host;\n  unsigned short port;\n  char *path;\n} \nciss_url_t;\n\nurl_scheme_t url_check_scheme (const char *s);\nint url_parse_file (char *d, const char *src, size_t dl);\nint url_parse_ciss (ciss_url_t *ciss, char *src);\nint url_ciss_tostring (ciss_url_t* ciss, char* dest, size_t len, int flags);\nint url_parse_mailto (ENVELOPE *e, char **body, const char *src);\nint url_pct_decode (char *s);\n\n#endif\n"
  },
  {
    "path": "utf8.c",
    "content": "#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#ifndef HAVE_WC_FUNCS\n\n#include <sys/types.h>\n#include <errno.h>\n\n#ifndef EILSEQ\n#define EILSEQ EINVAL\n#endif\n\nint mutt_wctoutf8 (char *s, unsigned int c, size_t buflen)\n{\n  if (c < (1 << 7)) \n  {\n    if (s && buflen >= 1)\n      *s++ = c;\n    return 1;\n  }\n  else if (c < (1 << 11))\n  {\n    if (s && buflen >= 2)\n     {\n      *s++ = 0xc0 | (c >> 6);\n      *s++ = 0x80 | (c & 0x3f);\n    }\n    return 2;\n  }\n  else if (c < (1 << 16))\n  {\n    if (s && buflen >= 3)\n    {\n      *s++ = 0xe0 | (c >> 12);\n      *s++ = 0x80 | ((c >> 6) & 0x3f);\n      *s++ = 0x80 | (c & 0x3f);\n    }\n    return 3;\n  }\n  else if (c < (1 << 21))\n  {\n    if (s && buflen >= 4)\n    {\n      *s++ = 0xf0 | (c >> 18);\n      *s++ = 0x80 | ((c >> 12) & 0x3f);\n      *s++ = 0x80 | ((c >> 6) & 0x3f);\n      *s++ = 0x80 | (c & 0x3f);\n    }\n    return 4;\n  }\n  else if (c < (1 << 26))\n  {\n    if (s && buflen >= 5)\n    {\n      *s++ = 0xf8 | (c >> 24);\n      *s++ = 0x80 | ((c >> 18) & 0x3f);\n      *s++ = 0x80 | ((c >> 12) & 0x3f);\n      *s++ = 0x80 | ((c >> 6) & 0x3f);\n      *s++ = 0x80 | (c & 0x3f);\n    }\n    return 5;\n  }\n  else if (c < (1 << 31))\n  {\n    if (s && buflen >= 6)\n    {\n      *s++ = 0xfc | (c >> 30);\n      *s++ = 0x80 | ((c >> 24) & 0x3f);\n      *s++ = 0x80 | ((c >> 18) & 0x3f);\n      *s++ = 0x80 | ((c >> 12) & 0x3f);\n      *s++ = 0x80 | ((c >> 6) & 0x3f);\n      *s++ = 0x80 | (c & 0x3f);\n    }\n    return 6;\n  }\n  errno = EILSEQ;\n  return -1;\n}\n\n#endif /* !HAVE_WC_FUNCS */\n"
  },
  {
    "path": "version.sh",
    "content": "#!/bin/sh\n\nHG=hg\n\n# Switch to directory where this script lives so that further commands are run\n# from the root directory of the source.  The script path and srcdir are double\n# quoted to allow the space character to appear in the path.\nsrcdir=`dirname \"$0\"` && cd \"$srcdir\" || exit 1\n\ncatversion() {\n\tcat VERSION VERSION.kz | tr -d \\\\n\n\texit\n}\n\n# Ensure that we have a repo here and that mercurial is installed.  If\n# not, just cat the VERSION file; it contains the latest release number.\n{ [ -d \".hg\" ] && $HG >/dev/null 2>&1; } \\\n|| catversion\n\n# This is a mercurial repo and we have the hg command.\n\n# Get essential properties of the current working copy\nset -- `$HG parents --template='{rev} {node|short}\\n'`\nrev=\"$1\"\nnode=\"$2\"\n\n# translate release tags into ##.##.## notation\ncleantag () {\n\tcase \"$1\" in\n\t\tmutt-*-rel) echo \"$1\" | sed -e 's/mutt-//' -e 's/-rel//' | tr - . ;;\n\t\t*)          echo \"$1\" ;;\n\tesac\n}\n\ngetdistance_old () {\n\t# fudge it\n\tset -- `$HG tags | sort -n -k 2 | egrep 'mutt-.*rel' | tail -1 | cut -d: -f1`\n\tlatesttag=\"$1\"\n\tlatestrev=\"$2\"\n\tdistance=`expr $rev - $latestrev`\n\techo $latesttag $distance\n}\n\ngetdistance_new () {\n\t$HG parents --template='{latesttag} {latesttagdistance}\\n'\n}\n\n\n# latesttag appeared in hg 1.4.  Test for it.\n[ \"`$HG log -r . --template='{latesttag}'`\" = '' ] && \nset -- `getdistance_old` ||\nset -- `getdistance_new`\n\ntag=`cleantag \"$1\"`\ndist=$2\n\nif [ $dist -eq 0 ]; then\n\tdist=\nelse\n\tdist=\"+$dist\"\nfi\n\n# if we have mq patches applied, mention it\nqparent=`$HG log -r qparent --template='{rev}\\n' 2>/dev/null || echo $rev`\nqdelta=`expr $rev - $qparent`\nif [ $qdelta -eq 0 ]; then\n\tqdist=\"\"\nelse\n\tqdist=\",mq+$qdelta\"\nfi\n\necho \"$tag$dist$qdist ($node)\"\nexit 0\n"
  },
  {
    "path": "wcscasecmp.c",
    "content": "/*\n * Copyright (C) 2009 Rocco Rutte <pdmef@gmx.net>\n *\n *     This program is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program; if not, write to the Free Software\n *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#include \"mutt.h\"\n#include \"mbyte.h\"\n\nint wcscasecmp (const wchar_t *a, const wchar_t *b)\n{\n  const wchar_t *p = a;\n  const wchar_t *q = b;\n  int i;\n\n  if (!a && !b)\n    return 0;\n  if (!a && b)\n    return -1;\n  if (a && !b)\n    return 1;\n\n  for ( ; *p || *q; p++, q++)\n  {\n    if ((i = towlower (*p)) - towlower (*q))\n      return i;\n  }\n  return 0;\n}\n"
  },
  {
    "path": "wcwidth.c",
    "content": "/*\n * This is an implementation of wcwidth() and wcswidth() (defined in\n * IEEE Std 1002.1-2001) for Unicode.\n *\n * http://www.opengroup.org/onlinepubs/007904975/functions/wcwidth.html\n * http://www.opengroup.org/onlinepubs/007904975/functions/wcswidth.html\n *\n * Markus Kuhn -- 2007-05-26 (Unicode 5.0)\n *\n * Permission to use, copy, modify, and distribute this software\n * for any purpose and without fee is hereby granted. The author\n * disclaims all warranties with regard to this software.\n *\n * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c\n */\n\n/* Changes made for mutt:\n * - Adapted for Mutt by Edmund Grimley Evans.\n * - Changed 'first'/'last' members of combined[] to wchar_t from\n *   unsigned short to fix compiler warnings, 2007-11-13, Rocco Rutte\n */\n\n#if HAVE_CONFIG_H\n# include \"config.h\"\n#endif\n\n#ifndef HAVE_WC_FUNCS\n\n#include \"mutt.h\"\n#include \"mbyte.h\"\n\n#include <ctype.h>\n\n/* The following two functions define the column width of an ISO 10646\n * character as follows:\n *\n *    - The null character (U+0000) has a column width of 0.\n *\n *    - Other C0/C1 control characters and DEL will lead to a return\n *      value of -1.\n *\n *    - Non-spacing and enclosing combining characters (general\n *      category code Mn or Me in the Unicode database) have a\n *      column width of 0.\n *\n *    - SOFT HYPHEN (U+00AD) has a column width of 1.\n *\n *    - Other format characters (general category code Cf in the Unicode\n *      database) and ZERO WIDTH SPACE (U+200B) have a column width of 0.\n *\n *    - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)\n *      have a column width of 0.\n *\n *    - Spacing characters in the East Asian Wide (W) or East Asian\n *      Full-width (F) category as defined in Unicode Technical\n *      Report #11 have a column width of 2.\n *\n *    - All remaining characters (including all printable\n *      ISO 8859-1 and WGL4 characters, Unicode control characters,\n *      etc.) have a column width of 1.\n *\n * This implementation assumes that wchar_t characters are encoded\n * in ISO 10646.\n */\n\nint wcwidth_ucs(wchar_t ucs)\n{\n  /* sorted list of non-overlapping intervals of non-spacing characters */\n  /* generated by \"uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c\" */\n  static const struct interval {\n    wchar_t first;\n    wchar_t last;\n  } combining[] = {\n    { 0x0300, 0x036f }, { 0x0483, 0x0486 }, { 0x0488, 0x0489 },\n    { 0x0591, 0x05bd }, { 0x05bf, 0x05bf }, { 0x05c1, 0x05c2 },\n    { 0x05c4, 0x05c5 }, { 0x05c7, 0x05c7 }, { 0x0600, 0x0603 },\n    { 0x0610, 0x0615 }, { 0x064b, 0x065e }, { 0x0670, 0x0670 },\n    { 0x06d6, 0x06e4 }, { 0x06e7, 0x06e8 }, { 0x06ea, 0x06ed },\n    { 0x070f, 0x070f }, { 0x0711, 0x0711 }, { 0x0730, 0x074a },\n    { 0x07a6, 0x07b0 }, { 0x07eb, 0x07f3 }, { 0x0901, 0x0902 },\n    { 0x093c, 0x093c }, { 0x0941, 0x0948 }, { 0x094d, 0x094d },\n    { 0x0951, 0x0954 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 },\n    { 0x09bc, 0x09bc }, { 0x09c1, 0x09c4 }, { 0x09cd, 0x09cd },\n    { 0x09e2, 0x09e3 }, { 0x0a01, 0x0a02 }, { 0x0a3c, 0x0a3c },\n    { 0x0a41, 0x0a42 }, { 0x0a47, 0x0a48 }, { 0x0a4b, 0x0a4d },\n    { 0x0a70, 0x0a71 }, { 0x0a81, 0x0a82 }, { 0x0abc, 0x0abc },\n    { 0x0ac1, 0x0ac5 }, { 0x0ac7, 0x0ac8 }, { 0x0acd, 0x0acd },\n    { 0x0ae2, 0x0ae3 }, { 0x0b01, 0x0b01 }, { 0x0b3c, 0x0b3c },\n    { 0x0b3f, 0x0b3f }, { 0x0b41, 0x0b43 }, { 0x0b4d, 0x0b4d },\n    { 0x0b56, 0x0b56 }, { 0x0b82, 0x0b82 }, { 0x0bc0, 0x0bc0 },\n    { 0x0bcd, 0x0bcd }, { 0x0c3e, 0x0c40 }, { 0x0c46, 0x0c48 },\n    { 0x0c4a, 0x0c4d }, { 0x0c55, 0x0c56 }, { 0x0cbc, 0x0cbc },\n    { 0x0cbf, 0x0cbf }, { 0x0cc6, 0x0cc6 }, { 0x0ccc, 0x0ccd },\n    { 0x0ce2, 0x0ce3 }, { 0x0d41, 0x0d43 }, { 0x0d4d, 0x0d4d },\n    { 0x0dca, 0x0dca }, { 0x0dd2, 0x0dd4 }, { 0x0dd6, 0x0dd6 },\n    { 0x0e31, 0x0e31 }, { 0x0e34, 0x0e3a }, { 0x0e47, 0x0e4e },\n    { 0x0eb1, 0x0eb1 }, { 0x0eb4, 0x0eb9 }, { 0x0ebb, 0x0ebc },\n    { 0x0ec8, 0x0ecd }, { 0x0f18, 0x0f19 }, { 0x0f35, 0x0f35 },\n    { 0x0f37, 0x0f37 }, { 0x0f39, 0x0f39 }, { 0x0f71, 0x0f7e },\n    { 0x0f80, 0x0f84 }, { 0x0f86, 0x0f87 }, { 0x0f90, 0x0f97 },\n    { 0x0f99, 0x0fbc }, { 0x0fc6, 0x0fc6 }, { 0x102d, 0x1030 },\n    { 0x1032, 0x1032 }, { 0x1036, 0x1037 }, { 0x1039, 0x1039 },\n    { 0x1058, 0x1059 }, { 0x1160, 0x11ff }, { 0x135f, 0x135f },\n    { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 },\n    { 0x1772, 0x1773 }, { 0x17b4, 0x17b5 }, { 0x17b7, 0x17bd },\n    { 0x17c6, 0x17c6 }, { 0x17c9, 0x17d3 }, { 0x17dd, 0x17dd },\n    { 0x180b, 0x180d }, { 0x18a9, 0x18a9 }, { 0x1920, 0x1922 },\n    { 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193b },\n    { 0x1a17, 0x1a18 }, { 0x1b00, 0x1b03 }, { 0x1b34, 0x1b34 },\n    { 0x1b36, 0x1b3a }, { 0x1b3c, 0x1b3c }, { 0x1b42, 0x1b42 },\n    { 0x1b6b, 0x1b73 }, { 0x1dc0, 0x1dca }, { 0x1dfe, 0x1dff },\n    { 0x200b, 0x200f }, { 0x202a, 0x202e }, { 0x2060, 0x2063 },\n    { 0x206a, 0x206f }, { 0x20d0, 0x20ef }, { 0x302a, 0x302f },\n    { 0x3099, 0x309a }, { 0xa806, 0xa806 }, { 0xa80b, 0xa80b },\n    { 0xa825, 0xa826 }, { 0xfb1e, 0xfb1e }, { 0xfe00, 0xfe0f },\n    { 0xfe20, 0xfe23 }, { 0xfeff, 0xfeff }, { 0xfff9, 0xfffb },\n    { 0x10a01, 0x10a03 }, { 0x10a05, 0x10a06 }, { 0x10a0c, 0x10a0f },\n    { 0x10a38, 0x10a3a }, { 0x10a3f, 0x10a3f }, { 0x1d167, 0x1d169 },\n    { 0x1d173, 0x1d182 }, { 0x1d185, 0x1d18b }, { 0x1d1aa, 0x1d1ad },\n    { 0x1d242, 0x1d244 }, { 0xe0001, 0xe0001 }, { 0xe0020, 0xe007f },\n    { 0xe0100, 0xe01ef }\n  };\n  int min = 0;\n  int max = sizeof(combining) / sizeof(struct interval) - 1;\n  int mid;\n\n  /* test for 8-bit control characters */\n  if (ucs == 0)\n    return 0;\n  if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0))\n    return -1;\n\n  /* first quick check for Latin-1 etc. characters */\n  if (ucs < combining[0].first)\n    return 1;\n\n  /* binary search in table of non-spacing characters */\n  while (max >= min) {\n    mid = (min + max) / 2;\n    if (combining[mid].last < ucs)\n      min = mid + 1;\n    else if (combining[mid].first > ucs)\n      max = mid - 1;\n    else if (combining[mid].first <= ucs && combining[mid].last >= ucs)\n      return 0;\n  }\n\n  /* if we arrive here, ucs is not a combining or C0/C1 control character */\n\n  /* fast test for majority of non-wide scripts */\n  if (ucs < 0x1100)\n    return 1;\n\n  return 1 +\n    (ucs >= 0x1100 &&\n     (ucs <= 0x115f ||                    /* Hangul Jamo init. consonants */\n      ucs == 0x2329 || ucs == 0x232a ||\n      (ucs >= 0x2e80 && ucs <= 0xa4cf &&\n       ucs != 0x303f) ||                  /* CJK ... Yi */\n      (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */\n      (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */\n      (ucs >= 0xfe10 && ucs <= 0xfe19) || /* Vertical forms */\n      (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */\n      (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */\n      (ucs >= 0xffe0 && ucs <= 0xffe6) ||\n      (ucs >= 0x20000 && ucs <= 0x2fffd) ||\n      (ucs >= 0x30000 && ucs <= 0x3fffd)));\n}\n\n#endif /* !HAVE_WC_FUNCS */\n\n#if 0 /* original */\nint wcswidth(const wchar_t *pwcs, size_t n)\n{\n  int w, width = 0;\n\n  for (;*pwcs && n-- > 0; pwcs++)\n    if ((w = wcwidth(*pwcs)) < 0)\n      return -1;\n    else\n      width += w;\n\n  return width;\n}\n#endif\n"
  }
]